From 687c9f7eb03cca5f7b3486f07f2e3453ebc77faf Mon Sep 17 00:00:00 2001
From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Date: Fri, 12 Jul 2024 21:04:12 +0400
Subject: [PATCH 01/50] fix(YouTube - Hide keyword content): Do not hide flyout
menu
---
src/main/resources/addresources/values/strings.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/resources/addresources/values/strings.xml b/src/main/resources/addresources/values/strings.xml
index bf15113d1..480c43f2c 100644
--- a/src/main/resources/addresources/values/strings.xml
+++ b/src/main/resources/addresources/values/strings.xml
@@ -248,7 +248,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Invalid keyword. Cannot use: \'%s\' as a filter
Invalid keyword. \'%1$s\' is less than %2$d characters
- Keyword \'$s\' will hide all videos
+ Keyword \'%s\' will hide all videos
Hide general ads
From bd41a1c782b5cc513f4d754da5aef2dff93cfb5b Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Fri, 12 Jul 2024 18:17:37 +0000
Subject: [PATCH 02/50] chore(release): 4.11.1-dev.1 [skip ci]
## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12)
### Bug Fixes
* **YouTube - Hide keyword content:** Do not hide flyout menu ([687c9f7](https://github.com/ReVanced/revanced-patches/commit/687c9f7eb03cca5f7b3486f07f2e3453ebc77faf))
---
CHANGELOG.md | 7 +++++++
gradle.properties | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b1f09ee13..fbfacaca0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12)
+
+
+### Bug Fixes
+
+* **YouTube - Hide keyword content:** Do not hide flyout menu ([687c9f7](https://github.com/ReVanced/revanced-patches/commit/687c9f7eb03cca5f7b3486f07f2e3453ebc77faf))
+
# [4.11.0](https://github.com/ReVanced/revanced-patches/compare/v4.10.0...v4.11.0) (2024-07-11)
diff --git a/gradle.properties b/gradle.properties
index 11bb63e82..7dd0ed8d3 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
-version = 4.11.0
+version = 4.11.1-dev.1
From 92a93c51110dd82de7889bdb86d04bac186d0803 Mon Sep 17 00:00:00 2001
From: oSumAtrIX
Date: Sat, 13 Jul 2024 00:43:59 +0200
Subject: [PATCH 03/50] ci: Correct usage of repository variable
---
.github/workflows/release.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 84ac54421..8cf1d3a61 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -42,7 +42,7 @@ jobs:
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}
- fingerprint: ${{ env.GPG_FINGERPRINT }}
+ fingerprint: ${{ vars.GPG_FINGERPRINT }}
- name: Release
env:
From c3e014f7ba2342d220b13264e7b88fb5fc0ad3d8 Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Fri, 12 Jul 2024 22:45:58 +0000
Subject: [PATCH 04/50] chore(release): 4.11.1-dev.1 [skip ci]
## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12)
### Bug Fixes
* **YouTube - Hide keyword content:** Do not hide flyout menu ([687c9f7](https://github.com/ReVanced/revanced-patches/commit/687c9f7eb03cca5f7b3486f07f2e3453ebc77faf))
---
CHANGELOG.md | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fbfacaca0..f36506e8a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,13 @@
## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12)
+### Bug Fixes
+
+* **YouTube - Hide keyword content:** Do not hide flyout menu ([687c9f7](https://github.com/ReVanced/revanced-patches/commit/687c9f7eb03cca5f7b3486f07f2e3453ebc77faf))
+
+## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12)
+
+
### Bug Fixes
* **YouTube - Hide keyword content:** Do not hide flyout menu ([687c9f7](https://github.com/ReVanced/revanced-patches/commit/687c9f7eb03cca5f7b3486f07f2e3453ebc77faf))
From 4de86c6407376bcd3cc0513a2f0707410b8d7ccd Mon Sep 17 00:00:00 2001
From: LightCat <13179138+BenCat07@users.noreply.github.com>
Date: Sun, 14 Jul 2024 01:43:48 +0200
Subject: [PATCH 05/50] feat(SoundCloud): Add `Enable offline sync` patch
(#3407)
Co-authored-by: bewzusore
Co-authored-by: oSumAtrIX
Co-authored-by: BenCat07
---
api/revanced-patches.api | 6 ++
.../patches/soundcloud/ad/HideAdsPatch.kt | 2 +-
.../offlinesync/EnableOfflineSyncPatch.kt | 83 +++++++++++++++++++
...OperationsHeaderVerificationFingerprint.kt | 21 +++++
...DownloadOperationsURLBuilderFingerprint.kt | 20 +++++
.../FeatureConstructorFingerprint.kt | 2 +-
6 files changed, 132 insertions(+), 2 deletions(-)
create mode 100644 src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt
create mode 100644 src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/fingerprints/DownloadOperationsHeaderVerificationFingerprint.kt
create mode 100644 src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/fingerprints/DownloadOperationsURLBuilderFingerprint.kt
rename src/main/kotlin/app/revanced/patches/soundcloud/{ad => shared}/fingerprints/FeatureConstructorFingerprint.kt (88%)
diff --git a/api/revanced-patches.api b/api/revanced-patches.api
index 4530ff7cb..4b518d1d4 100644
--- a/api/revanced-patches.api
+++ b/api/revanced-patches.api
@@ -1050,6 +1050,12 @@ public final class app/revanced/patches/soundcloud/analytics/DisableTelemetryPat
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
+public final class app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch : app/revanced/patcher/patch/BytecodePatch {
+ public static final field INSTANCE Lapp/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch;
+ public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
+ public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
+}
+
public final class app/revanced/patches/spotify/layout/theme/CustomThemePatch : app/revanced/patcher/patch/ResourcePatch {
public static final field INSTANCE Lapp/revanced/patches/spotify/layout/theme/CustomThemePatch;
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
diff --git a/src/main/kotlin/app/revanced/patches/soundcloud/ad/HideAdsPatch.kt b/src/main/kotlin/app/revanced/patches/soundcloud/ad/HideAdsPatch.kt
index 402fa464f..4f538458a 100644
--- a/src/main/kotlin/app/revanced/patches/soundcloud/ad/HideAdsPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/soundcloud/ad/HideAdsPatch.kt
@@ -10,7 +10,7 @@ import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.smali.ExternalLabel
import app.revanced.patches.soundcloud.ad.fingerprints.InterceptFingerprint
-import app.revanced.patches.soundcloud.ad.fingerprints.FeatureConstructorFingerprint
+import app.revanced.patches.soundcloud.shared.fingerprints.FeatureConstructorFingerprint
import app.revanced.patches.soundcloud.ad.fingerprints.UserConsumerPlanConstructorFingerprint
import app.revanced.util.resultOrThrow
diff --git a/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt b/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt
new file mode 100644
index 000000000..b6795e4a8
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt
@@ -0,0 +1,83 @@
+package app.revanced.patches.soundcloud.offlinesync
+
+import app.revanced.patcher.data.BytecodeContext
+import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
+import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
+import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
+import app.revanced.patcher.extensions.InstructionExtensions.getInstructions
+import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
+import app.revanced.patcher.patch.BytecodePatch
+import app.revanced.patcher.patch.annotation.CompatiblePackage
+import app.revanced.patcher.patch.annotation.Patch
+import app.revanced.patcher.util.smali.ExternalLabel
+import app.revanced.patches.soundcloud.offlinesync.fingerprints.DownloadOperationsHeaderVerificationFingerprint
+import app.revanced.patches.soundcloud.offlinesync.fingerprints.DownloadOperationsURLBuilderFingerprint
+import app.revanced.patches.soundcloud.shared.fingerprints.FeatureConstructorFingerprint
+import app.revanced.util.getReference
+import app.revanced.util.resultOrThrow
+import com.android.tools.smali.dexlib2.Opcode
+import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
+import com.android.tools.smali.dexlib2.iface.reference.FieldReference
+
+@Patch(
+ name = "Enable offline sync",
+ compatiblePackages = [CompatiblePackage("com.soundcloud.android")],
+)
+@Suppress("unused")
+object EnableOfflineSyncPatch : BytecodePatch(
+ setOf(
+ FeatureConstructorFingerprint, DownloadOperationsURLBuilderFingerprint,
+ DownloadOperationsHeaderVerificationFingerprint
+ ),
+) {
+ override fun execute(context: BytecodeContext) {
+ // Enable the feature to allow offline track syncing by modifying the JSON server response.
+ // This method is the constructor of a class representing a "Feature" object parsed from JSON data.
+ // p1 is the name of the feature.
+ // p2 is true if the feature is enabled, false otherwise.
+ FeatureConstructorFingerprint.resultOrThrow().mutableMethod.apply {
+ val afterCheckNotNullIndex = 2
+
+ addInstructionsWithLabels(
+ afterCheckNotNullIndex,
+ """
+ const-string v0, "offline_sync"
+ invoke-virtual { p1, v0 }, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+ move-result v0
+ if-eqz v0, :skip
+ const/4 p2, 0x1
+ """,
+ ExternalLabel("skip", getInstruction(afterCheckNotNullIndex)),
+ )
+ }
+
+ // Patch the URL builder to use the HTTPS_STREAM endpoint
+ // instead of the offline sync endpoint to downloading the track.
+ DownloadOperationsURLBuilderFingerprint.resultOrThrow().mutableMethod.apply {
+ val getEndpointsEnumFieldIndex = 1
+ val getEndpointsEnumFieldInstruction = getInstruction(getEndpointsEnumFieldIndex)
+
+ val targetRegister = getEndpointsEnumFieldInstruction.registerA
+ val endpointsType = getEndpointsEnumFieldInstruction.getReference()!!.type
+
+ replaceInstruction(
+ getEndpointsEnumFieldIndex,
+ "sget-object v$targetRegister, $endpointsType->HTTPS_STREAM:$endpointsType"
+ )
+ }
+
+ // The HTTPS_STREAM endpoint does not return the necessary headers for offline sync.
+ // Mock the headers to prevent the app from crashing by setting them to empty strings.
+ // The headers are all cosmetic and do not affect the functionality of the app.
+ DownloadOperationsHeaderVerificationFingerprint.resultOrThrow().mutableMethod.apply {
+ // The first three null checks need to be patched.
+ getInstructions().asSequence().filter {
+ it.opcode == Opcode.IF_EQZ
+ }.take(3).map { it.location.index }.forEach { nullCheckIndex ->
+ val headerStringRegister = getInstruction(nullCheckIndex).registerA
+
+ addInstruction(nullCheckIndex, "const-string v$headerStringRegister, \"\"")
+ }
+ }
+ }
+}
diff --git a/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/fingerprints/DownloadOperationsHeaderVerificationFingerprint.kt b/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/fingerprints/DownloadOperationsHeaderVerificationFingerprint.kt
new file mode 100644
index 000000000..e3629c788
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/fingerprints/DownloadOperationsHeaderVerificationFingerprint.kt
@@ -0,0 +1,21 @@
+package app.revanced.patches.soundcloud.offlinesync.fingerprints
+
+import app.revanced.patcher.extensions.or
+import app.revanced.patcher.fingerprint.MethodFingerprint
+import com.android.tools.smali.dexlib2.AccessFlags
+import com.android.tools.smali.dexlib2.Opcode
+
+internal object DownloadOperationsHeaderVerificationFingerprint : MethodFingerprint(
+ returnType = "V",
+ accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
+ parameters = listOf("L","L"),
+ opcodes = listOf(
+ Opcode.CONST_STRING,
+ Opcode.INVOKE_VIRTUAL,
+ Opcode.MOVE_RESULT_OBJECT,
+ Opcode.CONST_STRING
+ ),
+ customFingerprint = { _, classDef ->
+ classDef.sourceFile == "DownloadOperations.kt"
+ }
+)
\ No newline at end of file
diff --git a/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/fingerprints/DownloadOperationsURLBuilderFingerprint.kt b/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/fingerprints/DownloadOperationsURLBuilderFingerprint.kt
new file mode 100644
index 000000000..5394658e5
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/fingerprints/DownloadOperationsURLBuilderFingerprint.kt
@@ -0,0 +1,20 @@
+package app.revanced.patches.soundcloud.offlinesync.fingerprints
+
+import app.revanced.patcher.extensions.or
+import app.revanced.patcher.fingerprint.MethodFingerprint
+import com.android.tools.smali.dexlib2.AccessFlags
+import com.android.tools.smali.dexlib2.Opcode
+
+internal object DownloadOperationsURLBuilderFingerprint : MethodFingerprint(
+ returnType = "Ljava/lang/String",
+ accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
+ parameters = listOf("L","L"),
+ opcodes = listOf(
+ Opcode.IGET_OBJECT,
+ Opcode.SGET_OBJECT,
+ Opcode.FILLED_NEW_ARRAY
+ ),
+ customFingerprint = { _, classDef ->
+ classDef.sourceFile == "DownloadOperations.kt"
+ }
+)
\ No newline at end of file
diff --git a/src/main/kotlin/app/revanced/patches/soundcloud/ad/fingerprints/FeatureConstructorFingerprint.kt b/src/main/kotlin/app/revanced/patches/soundcloud/shared/fingerprints/FeatureConstructorFingerprint.kt
similarity index 88%
rename from src/main/kotlin/app/revanced/patches/soundcloud/ad/fingerprints/FeatureConstructorFingerprint.kt
rename to src/main/kotlin/app/revanced/patches/soundcloud/shared/fingerprints/FeatureConstructorFingerprint.kt
index c6d93f491..6506ebab2 100644
--- a/src/main/kotlin/app/revanced/patches/soundcloud/ad/fingerprints/FeatureConstructorFingerprint.kt
+++ b/src/main/kotlin/app/revanced/patches/soundcloud/shared/fingerprints/FeatureConstructorFingerprint.kt
@@ -1,4 +1,4 @@
-package app.revanced.patches.soundcloud.ad.fingerprints
+package app.revanced.patches.soundcloud.shared.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
From d37184d6bdc8f22c86acabe327e6bd54212f70ad Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Sat, 13 Jul 2024 23:45:56 +0000
Subject: [PATCH 06/50] chore(release): 4.12.0-dev.1 [skip ci]
# [4.12.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.1-dev.1...v4.12.0-dev.1) (2024-07-13)
### Features
* **SoundCloud:** Add `Enable offline sync` patch ([#3407](https://github.com/ReVanced/revanced-patches/issues/3407)) ([4de86c6](https://github.com/ReVanced/revanced-patches/commit/4de86c6407376bcd3cc0513a2f0707410b8d7ccd))
---
CHANGELOG.md | 7 +++++++
gradle.properties | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f36506e8a..33c0112a3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# [4.12.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.1-dev.1...v4.12.0-dev.1) (2024-07-13)
+
+
+### Features
+
+* **SoundCloud:** Add `Enable offline sync` patch ([#3407](https://github.com/ReVanced/revanced-patches/issues/3407)) ([4de86c6](https://github.com/ReVanced/revanced-patches/commit/4de86c6407376bcd3cc0513a2f0707410b8d7ccd))
+
## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12)
diff --git a/gradle.properties b/gradle.properties
index 7dd0ed8d3..320c7cba7 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
-version = 4.11.1-dev.1
+version = 4.12.0-dev.1
From 765fab2af2769349446cc0f2109343ef3bd8c621 Mon Sep 17 00:00:00 2001
From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Date: Mon, 15 Jul 2024 02:56:12 +0400
Subject: [PATCH 07/50] feat(YouTube): Add `Bypass image region restrictions`
patch (#3442)
Co-authored-by: oSumAtrIX
---
api/revanced-patches.api | 16 ++
.../thumbnails/AlternativeThumbnailsPatch.kt | 140 +-----------------
.../BypassImageRegionRestrictions.kt | 71 +++++++++
.../misc/imageurlhook/CronetImageUrlHook.kt | 134 +++++++++++++++++
.../MessageDigestImageUrlFingerprint.kt | 2 +-
.../MessageDigestImageUrlParentFingerprint.kt | 2 +-
.../fingerprints/cronet/RequestFingerprint.kt | 4 +-
.../request/callback/OnFailureFingerprint.kt | 2 +-
.../callback/OnResponseStartedFingerprint.kt | 2 +-
.../callback/OnSucceededFingerprint.kt | 2 +-
.../resources/addresources/values/strings.xml | 5 +
11 files changed, 240 insertions(+), 140 deletions(-)
create mode 100644 src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions.kt
create mode 100644 src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook.kt
rename src/main/kotlin/app/revanced/patches/youtube/{layout/thumbnails => misc/imageurlhook}/fingerprints/MessageDigestImageUrlFingerprint.kt (84%)
rename src/main/kotlin/app/revanced/patches/youtube/{layout/thumbnails => misc/imageurlhook}/fingerprints/MessageDigestImageUrlParentFingerprint.kt (86%)
rename src/main/kotlin/app/revanced/patches/youtube/{layout/thumbnails => misc/imageurlhook}/fingerprints/cronet/RequestFingerprint.kt (81%)
rename src/main/kotlin/app/revanced/patches/youtube/{layout/thumbnails => misc/imageurlhook}/fingerprints/cronet/request/callback/OnFailureFingerprint.kt (89%)
rename src/main/kotlin/app/revanced/patches/youtube/{layout/thumbnails => misc/imageurlhook}/fingerprints/cronet/request/callback/OnResponseStartedFingerprint.kt (91%)
rename src/main/kotlin/app/revanced/patches/youtube/{layout/thumbnails => misc/imageurlhook}/fingerprints/cronet/request/callback/OnSucceededFingerprint.kt (88%)
diff --git a/api/revanced-patches.api b/api/revanced-patches.api
index 4b518d1d4..35e283213 100644
--- a/api/revanced-patches.api
+++ b/api/revanced-patches.api
@@ -1724,6 +1724,12 @@ public final class app/revanced/patches/youtube/layout/thumbnails/AlternativeThu
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
+public final class app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions : app/revanced/patcher/patch/BytecodePatch {
+ public static final field INSTANCE Lapp/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions;
+ public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
+ public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
+}
+
public final class app/revanced/patches/youtube/misc/announcements/AnnouncementsPatch : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/youtube/misc/announcements/AnnouncementsPatch;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
@@ -1790,6 +1796,16 @@ public final class app/revanced/patches/youtube/misc/gms/GmsCoreSupportResourceP
public fun execute (Lapp/revanced/patcher/data/ResourceContext;)V
}
+public final class app/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook : app/revanced/patcher/patch/BytecodePatch {
+ public static final field INSTANCE Lapp/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook;
+ public final fun addImageUrlErrorCallbackHook (Ljava/lang/String;)V
+ public final fun addImageUrlHook (Ljava/lang/String;Z)V
+ public static synthetic fun addImageUrlHook$default (Lapp/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook;Ljava/lang/String;ZILjava/lang/Object;)V
+ public final fun addImageUrlSuccessCallbackHook (Ljava/lang/String;)V
+ public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
+ public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
+}
+
public final class app/revanced/patches/youtube/misc/integrations/IntegrationsPatch : app/revanced/patches/shared/misc/integrations/BaseIntegrationsPatch {
public static final field INSTANCE Lapp/revanced/patches/youtube/misc/integrations/IntegrationsPatch;
}
diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt
index 86b7a4925..095d567c7 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt
@@ -1,36 +1,18 @@
package app.revanced.patches.youtube.layout.thumbnails
import app.revanced.patcher.data.BytecodeContext
-import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
-import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
-import app.revanced.patcher.extensions.InstructionExtensions.getInstructions
-import app.revanced.patcher.fingerprint.MethodFingerprint
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
-import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
-import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
import app.revanced.patches.all.misc.resources.AddResourcesPatch
import app.revanced.patches.shared.misc.settings.preference.ListPreference
import app.revanced.patches.shared.misc.settings.preference.NonInteractivePreference
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.shared.misc.settings.preference.TextPreference
-import app.revanced.patches.youtube.layout.thumbnails.fingerprints.MessageDigestImageUrlFingerprint
-import app.revanced.patches.youtube.layout.thumbnails.fingerprints.MessageDigestImageUrlParentFingerprint
-import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.RequestFingerprint
-import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback.OnFailureFingerprint
-import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback.OnResponseStartedFingerprint
-import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback.OnSucceededFingerprint
+import app.revanced.patches.youtube.misc.imageurlhook.CronetImageUrlHook
import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch
import app.revanced.patches.youtube.misc.navigation.NavigationBarHookPatch
import app.revanced.patches.youtube.misc.settings.SettingsPatch
-import app.revanced.util.resultOrThrow
-import com.android.tools.smali.dexlib2.AccessFlags
-import com.android.tools.smali.dexlib2.Opcode
-import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation
-import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
-import com.android.tools.smali.dexlib2.iface.reference.FieldReference
-import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
@Patch(
name = "Alternative thumbnails",
@@ -39,7 +21,8 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
IntegrationsPatch::class,
SettingsPatch::class,
AddResourcesPatch::class,
- NavigationBarHookPatch::class
+ NavigationBarHookPatch::class,
+ CronetImageUrlHook::class
],
compatiblePackages = [
CompatiblePackage(
@@ -74,65 +57,10 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
],
)
@Suppress("unused")
-object AlternativeThumbnailsPatch : BytecodePatch(
- setOf(
- MessageDigestImageUrlParentFingerprint,
- OnResponseStartedFingerprint,
- RequestFingerprint,
- ),
-) {
+object AlternativeThumbnailsPatch : BytecodePatch(emptySet()) {
private const val INTEGRATIONS_CLASS_DESCRIPTOR =
"Lapp/revanced/integrations/youtube/patches/AlternativeThumbnailsPatch;"
- private lateinit var loadImageUrlMethod: MutableMethod
- private var loadImageUrlIndex = 0
-
- private lateinit var loadImageSuccessCallbackMethod: MutableMethod
- private var loadImageSuccessCallbackIndex = 0
-
- private lateinit var loadImageErrorCallbackMethod: MutableMethod
- private var loadImageErrorCallbackIndex = 0
-
- /**
- * @param highPriority If the hook should be called before all other hooks.
- */
- @Suppress("SameParameterValue")
- private fun addImageUrlHook(targetMethodClass: String, highPriority: Boolean) {
- loadImageUrlMethod.addInstructions(
- if (highPriority) 0 else loadImageUrlIndex,
- """
- invoke-static { p1 }, $targetMethodClass->overrideImageURL(Ljava/lang/String;)Ljava/lang/String;
- move-result-object p1
- """,
- )
- loadImageUrlIndex += 2
- }
-
- /**
- * If a connection completed, which includes normal 200 responses but also includes
- * status 404 and other error like http responses.
- */
- @Suppress("SameParameterValue")
- private fun addImageUrlSuccessCallbackHook(targetMethodClass: String) {
- loadImageSuccessCallbackMethod.addInstruction(
- loadImageSuccessCallbackIndex++,
- "invoke-static { p1, p2 }, $targetMethodClass->handleCronetSuccess(" +
- "Lorg/chromium/net/UrlRequest;Lorg/chromium/net/UrlResponseInfo;)V",
- )
- }
-
- /**
- * If a connection outright failed to complete any connection.
- */
- @Suppress("SameParameterValue")
- private fun addImageUrlErrorCallbackHook(targetMethodClass: String) {
- loadImageErrorCallbackMethod.addInstruction(
- loadImageErrorCallbackIndex++,
- "invoke-static { p1, p2, p3 }, $targetMethodClass->handleCronetFailure(" +
- "Lorg/chromium/net/UrlRequest;Lorg/chromium/net/UrlResponseInfo;Ljava/io/IOException;)V",
- )
- }
-
override fun execute(context: BytecodeContext) {
AddResourcesPatch(this::class)
@@ -177,62 +105,8 @@ object AlternativeThumbnailsPatch : BytecodePatch(
ListPreference("revanced_alt_thumbnail_stills_time", summaryKey = null)
)
- fun MethodFingerprint.alsoResolve(fingerprint: MethodFingerprint) =
- also { resolve(context, fingerprint.resultOrThrow().classDef) }.resultOrThrow()
-
- fun MethodFingerprint.resolveAndLetMutableMethod(
- fingerprint: MethodFingerprint,
- block: (MutableMethod) -> Unit,
- ) = alsoResolve(fingerprint).also { block(it.mutableMethod) }
-
- MessageDigestImageUrlFingerprint.resolveAndLetMutableMethod(MessageDigestImageUrlParentFingerprint) {
- loadImageUrlMethod = it
- addImageUrlHook(INTEGRATIONS_CLASS_DESCRIPTOR, true)
- }
-
- OnSucceededFingerprint.resolveAndLetMutableMethod(OnResponseStartedFingerprint) {
- loadImageSuccessCallbackMethod = it
- addImageUrlSuccessCallbackHook(INTEGRATIONS_CLASS_DESCRIPTOR)
- }
-
- OnFailureFingerprint.resolveAndLetMutableMethod(OnResponseStartedFingerprint) {
- loadImageErrorCallbackMethod = it
- addImageUrlErrorCallbackHook(INTEGRATIONS_CLASS_DESCRIPTOR)
- }
-
- // The URL is required for the failure callback hook, but the URL field is obfuscated.
- // Add a helper get method that returns the URL field.
- RequestFingerprint.resultOrThrow().apply {
- // The url is the only string field that is set inside the constructor.
- val urlFieldInstruction = mutableMethod.getInstructions().first {
- if (it.opcode != Opcode.IPUT_OBJECT) return@first false
-
- val reference = (it as ReferenceInstruction).reference as FieldReference
- reference.type == "Ljava/lang/String;"
- } as ReferenceInstruction
-
- val urlFieldName = (urlFieldInstruction.reference as FieldReference).name
- val definingClass = RequestFingerprint.IMPLEMENTATION_CLASS_NAME
- val addedMethodName = "getHookedUrl"
- mutableClass.methods.add(
- ImmutableMethod(
- definingClass,
- addedMethodName,
- emptyList(),
- "Ljava/lang/String;",
- AccessFlags.PUBLIC.value,
- null,
- null,
- MutableMethodImplementation(2),
- ).toMutable().apply {
- addInstructions(
- """
- iget-object v0, p0, $definingClass->$urlFieldName:Ljava/lang/String;
- return-object v0
- """,
- )
- },
- )
- }
+ CronetImageUrlHook.addImageUrlHook(INTEGRATIONS_CLASS_DESCRIPTOR)
+ CronetImageUrlHook.addImageUrlSuccessCallbackHook(INTEGRATIONS_CLASS_DESCRIPTOR)
+ CronetImageUrlHook.addImageUrlErrorCallbackHook(INTEGRATIONS_CLASS_DESCRIPTOR)
}
}
diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions.kt
new file mode 100644
index 000000000..132f5c96a
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions.kt
@@ -0,0 +1,71 @@
+package app.revanced.patches.youtube.layout.thumbnails
+
+import app.revanced.patcher.data.BytecodeContext
+import app.revanced.patcher.patch.BytecodePatch
+import app.revanced.patcher.patch.annotation.CompatiblePackage
+import app.revanced.patcher.patch.annotation.Patch
+import app.revanced.patches.all.misc.resources.AddResourcesPatch
+import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
+import app.revanced.patches.youtube.misc.imageurlhook.CronetImageUrlHook
+import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch
+import app.revanced.patches.youtube.misc.settings.SettingsPatch
+
+@Patch(
+ name = "Bypass image region restrictions",
+ description = "Adds an option to use a different host for user avatar and channel images," +
+ "and can fix missing images that are blocked in some countries.",
+ dependencies = [
+ IntegrationsPatch::class,
+ SettingsPatch::class,
+ AddResourcesPatch::class,
+ CronetImageUrlHook::class
+ ],
+ compatiblePackages = [
+ CompatiblePackage(
+ "com.google.android.youtube",
+ [
+ "18.32.39",
+ "18.37.36",
+ "18.38.44",
+ "18.43.45",
+ "18.44.41",
+ "18.45.43",
+ "18.48.39",
+ "18.49.37",
+ "19.01.34",
+ "19.02.39",
+ "19.03.36",
+ "19.04.38",
+ "19.05.36",
+ "19.06.39",
+ "19.07.40",
+ "19.08.36",
+ "19.09.38",
+ "19.10.39",
+ "19.11.43",
+ "19.12.41",
+ "19.13.37",
+ "19.14.43",
+ "19.15.36",
+ "19.16.39",
+ ]
+ )
+ ]
+)
+@Suppress("unused")
+object BypassImageRegionRestrictions : BytecodePatch(emptySet()) {
+ private const val INTEGRATIONS_CLASS_DESCRIPTOR =
+ "Lapp/revanced/integrations/youtube/patches/BypassImageRegionRestrictionsPatch;"
+
+ override fun execute(context: BytecodeContext) {
+ AddResourcesPatch(this::class)
+
+ SettingsPatch.PreferenceScreen.GENERAL_LAYOUT.addPreferences(
+ SwitchPreference("revanced_bypass_image_region_restrictions")
+ )
+
+ // A priority hook is not needed, as the image urls of interest are not modified
+ // by AlternativeThumbnails or any other patch in this repo.
+ CronetImageUrlHook.addImageUrlHook(INTEGRATIONS_CLASS_DESCRIPTOR)
+ }
+}
diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook.kt
new file mode 100644
index 000000000..d300327f2
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook.kt
@@ -0,0 +1,134 @@
+package app.revanced.patches.youtube.misc.imageurlhook
+
+import app.revanced.patcher.data.BytecodeContext
+import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
+import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
+import app.revanced.patcher.extensions.InstructionExtensions.getInstructions
+import app.revanced.patcher.fingerprint.MethodFingerprint
+import app.revanced.patcher.patch.BytecodePatch
+import app.revanced.patcher.patch.annotation.Patch
+import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
+import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
+import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.MessageDigestImageUrlFingerprint
+import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.MessageDigestImageUrlParentFingerprint
+import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.RequestFingerprint
+import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback.OnFailureFingerprint
+import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback.OnResponseStartedFingerprint
+import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback.OnSucceededFingerprint
+import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch
+import app.revanced.util.resultOrThrow
+import com.android.tools.smali.dexlib2.AccessFlags
+import com.android.tools.smali.dexlib2.Opcode
+import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation
+import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
+import com.android.tools.smali.dexlib2.iface.reference.FieldReference
+import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
+
+@Patch(
+ description = "Hooks Cronet image urls",
+ dependencies = [
+ IntegrationsPatch::class
+ ]
+)
+object CronetImageUrlHook : BytecodePatch(
+ setOf(
+ MessageDigestImageUrlParentFingerprint,
+ OnResponseStartedFingerprint,
+ RequestFingerprint
+ )
+) {
+ private lateinit var loadImageUrlMethod: MutableMethod
+ private var loadImageUrlIndex = 0
+
+ private lateinit var loadImageSuccessCallbackMethod: MutableMethod
+ private var loadImageSuccessCallbackIndex = 0
+
+ private lateinit var loadImageErrorCallbackMethod: MutableMethod
+ private var loadImageErrorCallbackIndex = 0
+
+ /**
+ * @param highPriority If the hook should be called before all other hooks.
+ */
+ fun addImageUrlHook(targetMethodClass: String, highPriority: Boolean = false) {
+ loadImageUrlMethod.addInstructions(
+ if (highPriority) 0 else loadImageUrlIndex,
+ """
+ invoke-static { p1 }, $targetMethodClass->overrideImageURL(Ljava/lang/String;)Ljava/lang/String;
+ move-result-object p1
+ """,
+ )
+ loadImageUrlIndex += 2
+ }
+
+ /**
+ * If a connection completed, which includes normal 200 responses but also includes
+ * status 404 and other error like http responses.
+ */
+ fun addImageUrlSuccessCallbackHook(targetMethodClass: String) {
+ loadImageSuccessCallbackMethod.addInstruction(
+ loadImageSuccessCallbackIndex++,
+ "invoke-static { p1, p2 }, $targetMethodClass->handleCronetSuccess(" +
+ "Lorg/chromium/net/UrlRequest;Lorg/chromium/net/UrlResponseInfo;)V",
+ )
+ }
+
+ /**
+ * If a connection outright failed to complete any connection.
+ */
+ fun addImageUrlErrorCallbackHook(targetMethodClass: String) {
+ loadImageErrorCallbackMethod.addInstruction(
+ loadImageErrorCallbackIndex++,
+ "invoke-static { p1, p2, p3 }, $targetMethodClass->handleCronetFailure(" +
+ "Lorg/chromium/net/UrlRequest;Lorg/chromium/net/UrlResponseInfo;Ljava/io/IOException;)V",
+ )
+ }
+
+ override fun execute(context: BytecodeContext) {
+ fun MethodFingerprint.alsoResolve(fingerprint: MethodFingerprint) =
+ also { resolve(context, fingerprint.resultOrThrow().classDef) }.resultOrThrow()
+
+ loadImageUrlMethod = MessageDigestImageUrlFingerprint
+ .alsoResolve(MessageDigestImageUrlParentFingerprint).mutableMethod
+
+ loadImageSuccessCallbackMethod = OnSucceededFingerprint
+ .alsoResolve(OnResponseStartedFingerprint).mutableMethod
+
+ loadImageErrorCallbackMethod = OnFailureFingerprint
+ .alsoResolve(OnResponseStartedFingerprint).mutableMethod
+
+ // The URL is required for the failure callback hook, but the URL field is obfuscated.
+ // Add a helper get method that returns the URL field.
+ RequestFingerprint.resultOrThrow().apply {
+ // The url is the only string field that is set inside the constructor.
+ val urlFieldInstruction = mutableMethod.getInstructions().single {
+ if (it.opcode != Opcode.IPUT_OBJECT) return@single false
+
+ val reference = (it as ReferenceInstruction).reference as FieldReference
+ reference.type == "Ljava/lang/String;"
+ } as ReferenceInstruction
+
+ val urlFieldName = (urlFieldInstruction.reference as FieldReference).name
+ val definingClass = RequestFingerprint.IMPLEMENTATION_CLASS_NAME
+ val addedMethodName = "getHookedUrl"
+ mutableClass.methods.add(
+ ImmutableMethod(
+ definingClass,
+ addedMethodName,
+ emptyList(),
+ "Ljava/lang/String;",
+ AccessFlags.PUBLIC.value,
+ null,
+ null,
+ MutableMethodImplementation(2),
+ ).toMutable().apply {
+ addInstructions(
+ """
+ iget-object v0, p0, $definingClass->$urlFieldName:Ljava/lang/String;
+ return-object v0
+ """,
+ )
+ }
+ )
+ }
+ }
+}
diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/MessageDigestImageUrlFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/MessageDigestImageUrlFingerprint.kt
similarity index 84%
rename from src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/MessageDigestImageUrlFingerprint.kt
rename to src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/MessageDigestImageUrlFingerprint.kt
index 52f9005bb..3eff257b1 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/MessageDigestImageUrlFingerprint.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/MessageDigestImageUrlFingerprint.kt
@@ -1,4 +1,4 @@
-package app.revanced.patches.youtube.layout.thumbnails.fingerprints
+package app.revanced.patches.youtube.misc.imageurlhook.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/MessageDigestImageUrlParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/MessageDigestImageUrlParentFingerprint.kt
similarity index 86%
rename from src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/MessageDigestImageUrlParentFingerprint.kt
rename to src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/MessageDigestImageUrlParentFingerprint.kt
index 44902cb06..8b3af75bd 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/MessageDigestImageUrlParentFingerprint.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/MessageDigestImageUrlParentFingerprint.kt
@@ -1,4 +1,4 @@
-package app.revanced.patches.youtube.layout.thumbnails.fingerprints
+package app.revanced.patches.youtube.misc.imageurlhook.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/RequestFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/RequestFingerprint.kt
similarity index 81%
rename from src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/RequestFingerprint.kt
rename to src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/RequestFingerprint.kt
index b66ab5971..18f5e0dcf 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/RequestFingerprint.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/RequestFingerprint.kt
@@ -1,8 +1,8 @@
-package app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet
+package app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
-import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.RequestFingerprint.IMPLEMENTATION_CLASS_NAME
+import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.RequestFingerprint.IMPLEMENTATION_CLASS_NAME
import com.android.tools.smali.dexlib2.AccessFlags
internal object RequestFingerprint : MethodFingerprint(
diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnFailureFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnFailureFingerprint.kt
similarity index 89%
rename from src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnFailureFingerprint.kt
rename to src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnFailureFingerprint.kt
index 5848810e7..4214fe7d4 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnFailureFingerprint.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnFailureFingerprint.kt
@@ -1,4 +1,4 @@
-package app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback
+package app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnResponseStartedFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnResponseStartedFingerprint.kt
similarity index 91%
rename from src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnResponseStartedFingerprint.kt
rename to src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnResponseStartedFingerprint.kt
index 1021d243a..f50dc16f0 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnResponseStartedFingerprint.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnResponseStartedFingerprint.kt
@@ -1,4 +1,4 @@
-package app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback
+package app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnSucceededFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnSucceededFingerprint.kt
similarity index 88%
rename from src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnSucceededFingerprint.kt
rename to src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnSucceededFingerprint.kt
index ed8523c82..295c91ec0 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/fingerprints/cronet/request/callback/OnSucceededFingerprint.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/fingerprints/cronet/request/callback/OnSucceededFingerprint.kt
@@ -1,4 +1,4 @@
-package app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback
+package app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
diff --git a/src/main/resources/addresources/values/strings.xml b/src/main/resources/addresources/values/strings.xml
index 480c43f2c..85588efc1 100644
--- a/src/main/resources/addresources/values/strings.xml
+++ b/src/main/resources/addresources/values/strings.xml
@@ -998,6 +998,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
The color of the seekbar
Invalid seekbar color value. Using default value.
+
+ Bypass image region restrictions
+ Using image host yt4.ggpht.com
+ Using original image host\n\nEnabling this can fix missing images that are blocked in some regions
+
Home tab
From 516eb3b05402e18c5715f3ebcc910340f02810bc Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Mon, 15 Jul 2024 19:01:14 +0000
Subject: [PATCH 08/50] chore(release): 4.12.0-dev.2 [skip ci]
# [4.12.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.1...v4.12.0-dev.2) (2024-07-15)
### Features
* **YouTube:** Add `Bypass image region restrictions` patch ([#3442](https://github.com/ReVanced/revanced-patches/issues/3442)) ([765fab2](https://github.com/ReVanced/revanced-patches/commit/765fab2af2769349446cc0f2109343ef3bd8c621))
---
CHANGELOG.md | 7 +++++++
gradle.properties | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 33c0112a3..297a31943 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# [4.12.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.1...v4.12.0-dev.2) (2024-07-15)
+
+
+### Features
+
+* **YouTube:** Add `Bypass image region restrictions` patch ([#3442](https://github.com/ReVanced/revanced-patches/issues/3442)) ([765fab2](https://github.com/ReVanced/revanced-patches/commit/765fab2af2769349446cc0f2109343ef3bd8c621))
+
# [4.12.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.1-dev.1...v4.12.0-dev.1) (2024-07-13)
diff --git a/gradle.properties b/gradle.properties
index 320c7cba7..50c96b995 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
-version = 4.12.0-dev.1
+version = 4.12.0-dev.2
From bf604df0c5b0d23d3aff3b8339d4ae077e05c618 Mon Sep 17 00:00:00 2001
From: ReVanced Bot
Date: Thu, 18 Jul 2024 15:22:23 +0200
Subject: [PATCH 09/50] chore: Sync translations (#3451)
---
.../addresources/values-af-rZA/strings.xml | 2 +
.../addresources/values-am-rET/strings.xml | 2 +
.../addresources/values-ar-rSA/strings.xml | 7 +-
.../addresources/values-as-rIN/strings.xml | 2 +
.../addresources/values-az-rAZ/strings.xml | 1125 +++++++++--------
.../addresources/values-be-rBY/strings.xml | 5 +-
.../addresources/values-bg-rBG/strings.xml | 2 +
.../addresources/values-bn-rBD/strings.xml | 10 +-
.../addresources/values-bs-rBA/strings.xml | 2 +
.../addresources/values-ca-rES/strings.xml | 2 +
.../addresources/values-cs-rCZ/strings.xml | 7 +-
.../addresources/values-da-rDK/strings.xml | 13 +-
.../addresources/values-de-rDE/strings.xml | 8 +-
.../addresources/values-el-rGR/strings.xml | 7 +-
.../addresources/values-es-rES/strings.xml | 8 +-
.../addresources/values-et-rEE/strings.xml | 2 +
.../addresources/values-eu-rES/strings.xml | 2 +
.../addresources/values-fa-rIR/strings.xml | 2 +
.../addresources/values-fi-rFI/strings.xml | 760 +++++------
.../addresources/values-fil-rPH/strings.xml | 4 +-
.../addresources/values-fr-rFR/strings.xml | 7 +-
.../addresources/values-gl-rES/strings.xml | 2 +
.../addresources/values-gu-rIN/strings.xml | 2 +
.../addresources/values-hi-rIN/strings.xml | 2 +
.../addresources/values-hr-rHR/strings.xml | 2 +
.../addresources/values-hu-rHU/strings.xml | 8 +-
.../addresources/values-hy-rAM/strings.xml | 2 +
.../addresources/values-in-rID/strings.xml | 113 +-
.../addresources/values-is-rIS/strings.xml | 2 +
.../addresources/values-it-rIT/strings.xml | 11 +-
.../addresources/values-iw-rIL/strings.xml | 2 +
.../addresources/values-ja-rJP/strings.xml | 6 +-
.../addresources/values-ka-rGE/strings.xml | 2 +
.../addresources/values-kk-rKZ/strings.xml | 2 +
.../addresources/values-km-rKH/strings.xml | 2 +
.../addresources/values-kn-rIN/strings.xml | 2 +
.../addresources/values-ko-rKR/strings.xml | 71 +-
.../addresources/values-ky-rKG/strings.xml | 2 +
.../addresources/values-lo-rLA/strings.xml | 2 +
.../addresources/values-lt-rLT/strings.xml | 2 +
.../addresources/values-lv-rLV/strings.xml | 2 +
.../addresources/values-mk-rMK/strings.xml | 2 +
.../addresources/values-ml-rIN/strings.xml | 2 +
.../addresources/values-mn-rMN/strings.xml | 2 +
.../addresources/values-mr-rIN/strings.xml | 2 +
.../addresources/values-ms-rMY/strings.xml | 2 +
.../addresources/values-my-rMM/strings.xml | 2 +
.../addresources/values-nb-rNO/strings.xml | 36 +-
.../addresources/values-ne-rIN/strings.xml | 2 +
.../addresources/values-nl-rNL/strings.xml | 43 +-
.../addresources/values-or-rIN/strings.xml | 2 +
.../addresources/values-pa-rIN/strings.xml | 2 +
.../addresources/values-pl-rPL/strings.xml | 49 +-
.../addresources/values-pt-rBR/strings.xml | 52 +-
.../addresources/values-pt-rPT/strings.xml | 7 +-
.../addresources/values-ro-rRO/strings.xml | 7 +-
.../addresources/values-ru-rRU/strings.xml | 51 +-
.../addresources/values-si-rLK/strings.xml | 2 +
.../addresources/values-sk-rSK/strings.xml | 38 +-
.../addresources/values-sl-rSI/strings.xml | 2 +
.../addresources/values-sq-rAL/strings.xml | 2 +
.../addresources/values-sr-rSP/strings.xml | 315 ++---
.../addresources/values-sv-rSE/strings.xml | 23 +-
.../addresources/values-sw-rKE/strings.xml | 2 +
.../addresources/values-ta-rIN/strings.xml | 2 +
.../addresources/values-te-rIN/strings.xml | 2 +
.../addresources/values-th-rTH/strings.xml | 2 +
.../addresources/values-tl-rPH/strings.xml | 2 +
.../addresources/values-tr-rTR/strings.xml | 13 +-
.../addresources/values-uk-rUA/strings.xml | 11 +-
.../addresources/values-ur-rIN/strings.xml | 2 +
.../addresources/values-uz-rUZ/strings.xml | 2 +
.../addresources/values-vi-rVN/strings.xml | 4 +-
.../addresources/values-zh-rCN/strings.xml | 7 +
.../addresources/values-zh-rHK/strings.xml | 2 +
.../addresources/values-zh-rTW/strings.xml | 7 +-
.../addresources/values-zu-rZA/strings.xml | 2 +
77 files changed, 1592 insertions(+), 1331 deletions(-)
diff --git a/src/main/resources/addresources/values-af-rZA/strings.xml b/src/main/resources/addresources/values-af-rZA/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-af-rZA/strings.xml
+++ b/src/main/resources/addresources/values-af-rZA/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-am-rET/strings.xml b/src/main/resources/addresources/values-am-rET/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-am-rET/strings.xml
+++ b/src/main/resources/addresources/values-am-rET/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-ar-rSA/strings.xml b/src/main/resources/addresources/values-ar-rSA/strings.xml
index bf3889ee7..215433e02 100644
--- a/src/main/resources/addresources/values-ar-rSA/strings.xml
+++ b/src/main/resources/addresources/values-ar-rSA/strings.xml
@@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
الكلمة المفتاحية غير صالحة. لا يمكن استخدام: \'%s\' كعامل تصفية
الكلمة المفتاحية غير صالحة. \'%1$s\' أقل من %2$d حرفًا
- الكلمة الرئيسية \'$s\' سوف تخفي جميع الفيديوهات
+ الكلمة الرئيسية \'%s\' سوف تخفي جميع الفيديوهات
إخفاء الإعلانات العامة
@@ -990,6 +990,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
لون شريط التقدم
لون الشريط غير صالح. استخدام القيمة الافتراضية.
+
+ تجاوز قيود منطقة الصورة
+ استخدام مضيف الصورة yt4.ggpht.com
+ استخدام مضيف الصور الأصلي\n\nتمكين هذا يمكن إصلاح الصور المفقودة التي يتم حظرها في بعض المناطق
+
علامة تبويب الصفحة الرئيسية
diff --git a/src/main/resources/addresources/values-as-rIN/strings.xml b/src/main/resources/addresources/values-as-rIN/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-as-rIN/strings.xml
+++ b/src/main/resources/addresources/values-as-rIN/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-az-rAZ/strings.xml b/src/main/resources/addresources/values-az-rAZ/strings.xml
index 1771ff0b3..fa292d34c 100644
--- a/src/main/resources/addresources/values-az-rAZ/strings.xml
+++ b/src/main/resources/addresources/values-az-rAZ/strings.xml
@@ -34,259 +34,259 @@ This is because Crowdin requires temporarily flattening this file and removing t
Davam etmək istəyirsiniz?
- Sıfırlayın
- Təzələ və yenidən başlat
+ Sıfırla
+ Yenilə və yenidən başlat
Yenidən başlat
- Daxilə köçür
- Kopyalayın
- ReVanced ayarları ilkin dəyərlərinə sıfırlandı
- %d ayar daxilə köçürüldü
- Uğursuz daxilə köçürmə: %s
+ İdxal et
+ Köçür
+ ReVanced tənzimləmələr standarta təyin edildi
+ %d tənzimləmə idxal edildi
+ Uğursuz idxal prosesi: %s
- MicroG GmsCore quraşdırılmayıb. Onu quraşdır.
- Əməliyyat lazımdır
- MicroG GmsCore üçün arxaplanda işləmə icazəsi yoxdur.\n\nTelefonunuz üçün \"Tətbiqim bağlanılmasın\" bələdçisini izləyin və təlimatları MicroG quraşdırmasına tətbiq edin.\n\nTətbiqin işləməsi üçün bu tələb olunur.
+ MicroG GmsCore quraşdırılmayıb. Bunu quraşdır.
+ Fəaliyyət lazımdır
+ MicroG GmsCore arxa planda işləməyə icazə almayıb.\n\nTelefonunuz üçün \"Tətbiqim bağlanılmasın\" bələdçisin izləyin və təlimatları MicroG quraşdırmasına tətbiq edin.\n\nBu tətbiq işləyən müddətdə tələb olunur.
Veb saytı aç
- Problemləri önləmək üçün MicroG GmsCore batareya optimallaşdırması sıradan çıxarılmalıdır.\n\nDavam düyməsinə toxunub batareya optimallaşdırmalarını sıradan çıxardın.
- Davam
+ Problemlərin olmaması üçün MicroG GmsCore batareya optimallaşdırması qeyri-aktiv edilməlidir.\n\nDavam düyməsinə toxun və batareya optimallaşdırmasını qeyri-aktiv et.
+ Davam et
ReVanced Patches <i>%s</i> versiyasını istifadə edirsiniz
Qeyd
- Bu versiya, ön buraxılış olduğu üçün gözlənilməz problemlərlə üzləşə bilərsiniz
- Rəsmi keçidlər
- Daxilə/Xaricə köçür
- ReVanced ayarlarını daxilə/xaricə köçür
+ Bu versiya ilkin buraxılışdır və gözlənilməz problemlərlə üzləşə bilərsiniz
+ Rəsmi bağlantılar
+ İdxal/İxrac et
+ ReVanced tənzimləmələrin idxal/ixrac et
Haqqında
Reklamlar
- Alternativ kiçik şəkillər
- Oruc
- Oyunçu
- Ümumi tərkibi
- Zaman çubuğu
- Sürüşdürmə kontrolları
+ Seçmə miniatürlər
+ Axın
+ Oynadıcı
+ Ümumi tərtibat
+ Axtarış çubuğu
+ Sürüşdürmə nəzarətçiləri
Müxtəlif
Video
Sazlama
- Sazlama seçimlərini aç/bağla
+ Sazlama seçimlərini aktiv/qeyri-aktiv et
Sazlama jurnalı
- Sazlama jurnalı fəaldır
- Sazlama jurnalı sıradan çıxarılıb
- Bufer protokollarının jurnalı
+ Sazlama jurnalı işləkdir
+ Sazlama jurnalı qeyri-aktivdir
+ Bufer protokol jurnalı
Sazlama jurnallarına protokol buferi daxildir
Sazlama jurnallarına protokol buferi daxil deyil
- Yığın izlərini jurnala yaz
+ Yığın izləri jurnalı
Sazlama jurnalına yığın izləri daxildir
Sazlama jurnalına yığın izləri daxil deyil
- ReVanced xətasında tost bildiriş göstər
- Xəta baş verəndə göstər
- Xəta baş verəndə göstərmə
- Tost bildirişlərini söndürmək, bütün ReVanced xəta bildirişlərini gizlədir.\n\nGözlənilməz hallardan xəbərdar olmayacaqsınız.
+ ReVanced xətasında ani bildiriş göstər
+ Xəta baş verərsə bildiriş göstər
+ Xəta baş verərsə bildiriş göstərmə
+ Ani bildirişləri söndürəndə, bütün ReVanced xəta bildirişləri gizlənir.\n\nGözlənilməz hallardan xəbərdar olmayacaqsınız.
- Bəyən/abunə ol düymə parıltısını sıradan çıxart
- Bu düymələrə toxunduqda parlamayacaq
- Bu düymələrə toxunduqda parlayacaq
+ Bəyən/abunə ol düymə parıltısın söndür
+ \"Bəyən və abunə ol\" düyməsin klikləyəndə parıldamayacaq
+ \"Bəyən və abunə ol\" düyməsinə klikləyəndə parlayacaq
Boz ayırıcını gizlət
Boz ayırıcılar gizlidir
Boz ayırıcılar göstərilir
Kanal filiqranını gizlət
Su nişanı gizlidir
- Filiqran göstərilir
- Üfüqi rəfləri gizlət
- Belə rəflər gizlidir:\n• Son xəbərlər\n• Baxmağa davam et\n• Daha çox kanal kəşf et\n• Alış-veirş\n• Yenidən bax
- Rəflər göstərilir
+ Su nişanı göstərilir
+ Üfüqi hissələri gizlət
+ Belə hissələr gizlidir:\n• Son xəbərlər\n• Baxmağa davam et\n• Daha çox kanal kəşf et\n• Bazarlıq\n• Təkrar izlə
+ Hissələr göstərilir
\"Qoşul\" düyməsini gizlət
Düymə gizlidir
Düymə göstərilir
- Kanal səhifəsində \"Sənin üçün\" bölməsini gizlət
- Rəf gizlidir
- Rəf göstərilir
+ Kanal yerində \"Sizin üçün\" qismin gizlə
+ Bölmə gizlidir
+ Bölmə göstərilir
\"Mənə bildir\" düyməsini gizlət
Düymə gizlidir
Düymə göstərilir
- \"İnsanların baxdıqları\" tövsiyələrini gizlət
+ \'İnsanların baxdıqları\' tövsiyələrin gizlə
Tövsiyələr gizlidir
Tövsiyələr göstərilir
- \"Daha çox göstər\" düyməsini gizlət
+ \'Daha çox göstər\' düyməsini gizlət
Düymə gizlidir
Düymə göstərilir
Vaxtlı reaksiyaları gizlət
Zamanlanmış reaksiyalar gizlədilir
- Zamanlı reaksiyalar göstərilir
- Axtarış nəticəsi rəf başlığını gizlət
- Rəf başlığı gizlidir
- Rəf başlığı göstərilir
+ Zamanlanmış reaksiyalar göstərilir
+ Axtarış nəticəsi bölmə başlığını gizlət
+ Bölmə başlığı gizlidir
+ Bölmə başlığı göstərilir
Kanal təlimatlarını gizlət
Kanal təlimatları gizlidir
Kanal təlimatları göstərilir
- Videoların altında genişləndirilə bilən çipi gizlət
+ Videoların altında genişlənən çipi gizlət
Genişlənən çiplər gizlidir
Genişlənən çiplər göstərilir
- Video keyfiyyət menyusu alt məlumatını gizlət
- Video keyfiyyəti menyusu altbilgisi gizlidir
- Video keyfiyyət menyusu altbilgisi göstərilir
- İcma göndərişlərini gizlət
- İcma yazıları gizlədilib
- İcma yazıları göstərilir
+ Video keyfiyyət menyu alt yazısın gizlə
+ Video keyfiyyəti menyusu alt yazısı gizlidir
+ Video keyfiyyət menyusu alt yazısı göstərilir
+ İcma elanların gizlət
+ İcma elanları gizlədilib
+ İcma elanları göstərilir
Yığcam bannerləri gizlət
- Kompakt bannerlər gizlidir
- Kompakt bannerlər göstərilir
+ Yığcam bannerlər gizlidir
+ Yığcam bannerlər göstərilir
Filmlər bölməsini gizlət
Filmlər bölməsi gizlidir
Filmlər bölməsi göstərilir
- Lent anketlərini gizlət
- Yem sorğuları gizlidir
- Yem sorğuları göstərilir
+ Axın sorğuların gizlət
+ Axın sorğuları gizlidir
+ Axın sorğuları göstərilir
İcma təlimatlarını gizlət
- İcma qaydaları gizlidir
- İcma qaydaları göstərilir
- Abunəlik icma qaydalarını gizlət
- Abunəçilərin icma qaydaları gizlidir
- Abunəçilərin icma qaydaları göstərilir
- Kanal üzvləri rəfini gizlət
- Kanal üzvü rəfi gizlidir
- Kanal üzvü rəfi göstərilir
- Fövqəladə hal qutularını gizlət
- Təcili yardım qutuları gizlidir
- Təcili yardım qutuları göstərilir
- Məlumat panellərini gizlət
- Məlumat panelləri gizlidir
- Məlumat panelləri göstərilir
- Tibbi panelləri gizlət
- Tibbi panellər gizlidir
- Tibbi panellər göstərilir
+ İcma təlimatları gizlidir
+ İcma təlimatları göstərilir
+ Abunəliklərin icma təlimatlarını gizlət
+ Abunəliklərin icma təlimatları gizlidir
+ Abunəliklərin icma təlimatları göstərilir
+ Kanal üzvü bölməsin gizlət
+ Kanal üzvü bölməsi gizlidir
+ Kanal üzvü bölməsi göstərilir
+ Ciddi vəziyyət qutularını gizlət
+ Ciddi vəziyyət qutuları gizlidir
+ Ciddi vəziyyət qutuları göstərilir
+ Məlumat lövhələrini gizlət
+ Məlumat lövhələri gizlidir
+ Məlumat lövhələri göstərilir
+ Tibbi lövhələri gizlət
+ Tibbi lövhələr gizlidir
+ Tibbi lövhələr göstərilir
Kanal çubuğunu gizlət
- Kanal paneli gizlidir
- Kanal paneli göstərilir
- Oxudula bilən elementləri gizlət
- Oynananlar gizlidir
- Oynana bilənlər göstərilir
+ Kanal çubuğu gizlidir
+ Kanal çubuğu göstərilir
+ Oynadılan elementləri gizlət
+ Oynadılanlar gizlidir
+ Oynadılanlar göstərilir
Tam ekranda cəld fəaliyyətləri gizlət
- Sürətli hərəkətlər gizlədilir
- Sürətli hərəkətlər göstərilir
- Cəld fəaliyyətlərdəki əlaqəli videoları gizlət
+ Sürətli fəaliyyətlər gizlədilir
+ Sürətli fəaliyyətlər göstərilir
+ Cəld fəaliyyətlərdə əlaqəli videoları gizlə
Əlaqədar videolar gizlədilib
Əlaqədar videolar göstərilir
- Axtarış nəticələrindəki təsvir rəfini gizlət
- Şəkil rəfi gizlidir
- Şəkil rəfi göstərilir
- Son göndərişləri gizlət
- Ən son yazılar gizlədilib
- Ən son yazılar göstərilir
- Miks pleylistləri gizlət
- Mix çalğı siyahıları gizlədilib
- Mix çalğı siyahıları göstərilir
+ Axtarış nəticələrindəki şəkil bölməsin gizlət
+ Şəkil bölməsi gizlidir
+ Şəkil bölməsi göstərilir
+ Son elanları gizlət
+ Ən son elanlar gizlədilib
+ Ən son elanlar göstərilir
+ Qarışıq pleylistləri gizlət
+ Qarışıq oynatma siyahıları gizlədilir
+ Qarışıq oynatma siyahıları göstərilir
Sənətçi kartlarını gizlət
- Rəssam kartları gizlidir
- Rəssam kartları göstərilir
- Çip rəfini gizlət
- Çips rəfi gizlidir
- Çips rəfi göstərilir
+ Sənətçi kartları gizlidir
+ Sənətçi kartları göstərilir
+ Çip bölməsin gizlət
+ Çip bölməsi gizlidir
+ Çip bölməsi göstərilir
Atributlar bölməsini gizlət
- \"Önə çıxan məkanlar\", Oyunlar və Musiqi bölmələri gizlidir
- \"Önə çıxan məkanlar\", Oyunlar və Musiqi bölmələri göstərilir
- Fəsillər bölməsini gizlət
- Fəsillər bölməsi gizlidir
- Fəsillər bölməsi göstərilir
- \"Podkastı kəşf et\" bölməsini gizlət
- \"Podkasti araşdırın\" bölməsi gizlədilib
- \"Podkasti araşdırın\" bölməsi göstərilir
+ \"Seçilən məkanlar\", Oyunlar və Musiqi bölmələri gizlidir
+ \"Seçilən məkanlar\", Oyunlar və Musiqi bölmələri göstərilir
+ Bölümlər bölməsini gizlət
+ Bölümlər bölməsi gizlidir
+ Bölümlər bölməsi göstərilir
+ \'Podkastı kəşf et\' bölməsini gizlət
+ \"Podkastı kəşf et\" bölməsi gizlədilir
+ \"Podkastı kəşf et\" bölməsi göstərilir
Məlumat kartları bölməsini gizlət
- Məlumat kartları bölməsi gizlidir
+ Məlumat kartları bölməsi gizlədilir
Məlumat kartları bölməsi göstərilir
- Transkript bölməsini gizlət
+ Transkripsiya bölməsini gizlət
Transkripsiya bölməsi gizlidir
- Transkript bölməsi göstərilir
+ Transkripsiya bölməsi göstərilir
Video açıqlaması
- Video açıqlaması komponentlərini gizlət və ya göstər
- Özəl filtr
- Özəl filtrlər ilə komponentləri gizlət
- Özəl filtri fəallaşdır
- Özəl filtr fəaldır
- Özəl filtr sıradan çıxarılıb
- Özəl filtr
+ Video açıqlaması elementlərini gizlət və ya göstər
+ Şəxsi filtr
+ Fərdi filtrlər ilə elementləri gizlət
+ Fərdi filtri aktivləşdir
+ Fərdi filtr aktivdir
+ Fərdi filtr qeyri-aktivdir
+ Fərdi filtr
- Yeni sətirlə ayrılmış filtr üçün komponent yol qurucusu sətirlərinin siyahısı
- Yararsız özəl filtr: %s
+ Yeni sətirlə ayrılmış filtr üçün element yol qurucusu sətirlərinin siyahısı
+ Etibarsız fərdi filtr: %s
Açar söz məzmununu gizlət
- Açar söz filtrləri ilə axtarış və lent videolarını gizlət
- Əsas ekran videolarını açar sözlərə görə gizlət
- Ev vərəqindəki videolar açar sözlərlə filtrlənir
- Ev vərəqindəki videolar açar sözlərlə filtrlənmir
+ Açar söz filtrləri ilə axtarış və axın videolarını gizlət
+ Ev videolarını açar sözlərə görə gizlət
+ Ev bölməsindəki videolar açar sözlərlə filtrlənir
+ Ev bölməsindəki videolar açar sözlərlə filtrlənmir
Abunəlik videolarını açar sözlərlə gizlət
- Abunəliklər vərəqindəki vərəqindəki açar sözlərlə filtrlənir
- Abunəliklər vərəqindəki vərəqindəki açar sözlərlə filtrlənmir
+ Abunəliklər bölməsindəki videolar açar sözlərlə filtrlənir
+ Abunəliklər bölməsindəki videolar açar sözlərlə filtrlənmir
Axtarış nəticələrini açar sözlərlə gizlət
- Filtrlənir
- Filtrlənmir
+ Axtarış nəticələri açar sözlərə görə çeşidlənir
+ Axtarış nəticələri açar sözlərə görə çeşidlənmir
Gizlədiləcək açar sözlər
Yeni sətirlərlə ayrılmış gizlədiləcək açar sözlər və ifadələr\n\nOrtada böyük hərf olan sözlər korpusla birlikdə daxil edilməlidir (yəni: iPhone, TikTok, LeBlanc)
- Açar sözlə filtrləmə haqqında
- Ana səhifə/Abunəlik/Axtarış nəticələri açar söz ifadələrinə uyğun gələn məzmunu gizlətmək üçün filtrlənir\n\nMəhdudiyyətlər\n• Bəzi Qısacalar gizlənə bilməz\n• Bəzi UI komponentləri gizlənə bilməz\n• Açar söz axtarışında heç bir nəticə görünməyə bilər
+ Açar söz filtrləməsi haqqında
+ Əsas səhifə/Abunəlik/Axtarış nəticələri açar söz ifadələrinə uyğunlaşan məzmunu gizlətmək üçün filtrlənir\n\nMəhdudiyyətlər\n• Bəzi Shorts gizlənə bilməz\n• Bəzi UI elementləri gizlənə bilməz\n• Açar söz axtarışı heç bir nəticə göstərməyə bilər
- Yararsız açar sözü. \"%s\" istifadə edilə bilməz
+ Etibarsız açar sözü. \'%s\' istifadə edilə bilməz
- Yararsız açar sözü. \"%1$s\", %2$d simvoldan azdır
- \"$s\" açar sözü, bütün videolardan gizlədiləcək
+ Etibarsız açar sözü. \'%1$s\', %2$d simvoldan azdır
+ \"%s\" açar sözü, bütün videolarda gizlədiləcək
Ümumi reklamları gizlət
- Ümumi elanlar gizlidir
- Ümumi elanlar göstərilir
+ Ümumi reklamlar gizlidir
+ Ümumi reklamlar göstərilir
Tam ekran reklamlarını gizlət
- Tam ekran reklamları gizlidir\n\nBu özəllik yalnız köhnə cihazlar üçün əlçatandır
+ Tam ekran reklamları gizlidir\n\nBu funksiya yalnız köhnə cihazlar üçün əlçatandır
Tam ekran reklamları göstərilir
Düyməli reklamları gizlət
Düyməli reklamlar gizlədilir
Düyməli reklamlar göstərilir
- Ödənişli tanıtım etiketini gizlət
- Ödənişli tanıtım etiketi gizlədilib
- Ödənişli tanıtım etiketi göstərilir
+ Ödənişli reklam etiketini gizlət
+ Ödənişli reklam etiketi gizlədilib
+ Ödənişli reklam etiketi göstərilir
Öz-sponsorlu kartları gizlət
Özünə sponsorluq edilən kartlar gizlidir
Özünə sponsorluq edilən kartlar göstərilir
- Məhsullara baxma bannerini gizlət
- Banner gizlədilib
- Banner göstərilir
- Video açıqlamasındakı alış-veriş keçidlərini gizlət
- Alış-veriş linkləri gizlidir
- Alış-veriş linkləri göstərilir
+ Məhsullara baxma panelin gizlət
+ Panel gizlədilib
+ Panel göstərilir
+ Video açıqlamadakı alış-veriş linklərin gizlə
+ Alış-veriş bağlantıları gizlədilir
+ Alış-veriş bağlantıları göstərilir
- Kanal səhifəsində \"Mağazanı ziyarət et\" düyməsini gizlət
+ Kanaldakı \"Mağazanı ziyarət et\" düyməsin gizlə
Düymə gizlidir
Düymə göstərilir
Veb axtarış nəticələrini gizlət
Veb axtarış nəticələri gizlədilir
Veb axtarış nəticələri göstərilir
- Satılıq əşya bannerlərini gizlət
- Mal bannerləri gizlədilir
- Mal bannerləri göstərilir
+ Məhsul bannerlərini gizlət
+ Məhsul bannerləri gizlədilir
+ Məhsul bannerləri göstərilir
Tam ekran reklamları gizlətmə yalnız köhnə cihazlarda işləyir
- YouTube Premium tanıtımlarını gizlət
- Video pleyer altında YouTube Premium təqdimatları gizlidir
- Video pleyerin altındakı YouTube Premium tanıtımları göstərilir
+ YouTube Premium reklamlarını gizlət
+ Video oynadıcı altında YouTube Premium elanları gizlidir
+ Video oynadıcı altındakı YouTube Premium elanları göstərilir
Video reklamlarını gizlət
@@ -294,14 +294,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
Video reklamlar göstərilir
- URL lövhəyə kopyalandı
- Vaxt möhürlü URL kopyalandı
- Video URL-sini kopyalama düyməsini göstər
- Düymə göstərilir. Video URL-sini kopyalamaq üçün toxunun. Vaxt möhürlü video URL-sini kopyalamaq üçün basılı tutun
- Göstərilmir
- Vaxt möhürlü URL-ni kopyalama düyməsini göstər
- Düymə göstərilir. Vaxt möhürlü video URL-sini kopyalamaq üçün toxunun. Vaxt möhürü olmadan kopyalamaq üçün basılı tutun
- Göstərilmir
+ URL buferə köçürüldü
+ Vaxt möhürlü URL köçürüldü
+ Video URL-i köçürmə düyməsin göstər
+ Düymə göstərilir. Video URL-sini köçürtmək üçün toxunun. Vaxt möhürlü video URL-sini köçürtmək üçün basılı tutun
+ Düymə göstərilmir
+ Vaxt möhürü URL köçür düyməsi göstər
+ Düymə göstərilir. Vaxt möhürlü video URL-sini köçürtmək üçün toxunun. Vaxt möhürü olmadan köçürtmək üçün basılı tutun
+ Düymə göstərilmir
İzləyici mülahizə dialoqunu sil
@@ -310,62 +310,62 @@ This is because Crowdin requires temporarily flattening this file and removing t
Bu, yaş məhdudiyyətini ötürmür. Sadəcə avtomatik qəbul edir.
- Xarici endirmələr
- Xarici endirici üçün istifadə ayarları
- Xarici endirmə düyməsini göstər
- Endirmə düyməsi pleyerdə göstərilir
- Endirmə düyməsi pleyerdə göstərilmir
+ Xarici yükləmələr
+ Xarici yükləyici istifadəsi üçün tənzimləmələr
+ Xarici yükləmə düyməsini göstər
+ Yükləmə düyməsi oynadıcıda göstərilir
+ Yükləmə düyməsi oynadıcıda göstərilmir
- Endirmə fəaliyyəti düyməsini yararsız et
- Endirmə düyməsi, xarici endiricini açır
- Endirmə düyməsi daxili endiricini açır
- Yükləyici paketinin adı
- NewPipe və ya NewPipe kimi quraşdırılmış xarici endirmə tətbiqinizin paket adı
- %s quraşdırılmayıb. Lütfən quraşdırın.
+ Yükləmə fəaliyyəti düyməsini qəbul etmə
+ Yükləmə düyməsi, xarici yükləyicini açır
+ Yükləmə düyməsi tətbiqdəki standart yükləyicini açır
+ Yükləyici paketi adı
+ NewPipe və ya Seal kimi quraşdırılmış xarici yükləmə tətbiqinizin paket adı
+ %s quraşdırılmayıb. Lütfən, bunu quraşdır.
- Həssas (irəli/geri) çəkmə jestini sıradan çıxart
- Jest deaktiv edilib
+ Dəqiq axtarış jestini qeyri-aktiv edin
+ Jest qeyri-aktiv edilib
Jest aktivləşdirilib
- Zaman çubuğuna toxunmanı fəallaşdır
+ Axtarış çubuğuna toxunmanı aktivləşdir
Axtarış çubuğuna toxunma aktivdir
- Axtarış çubuğuna toxunma deaktiv edilib
+ Axtarış çubuğuna toxunma qeyri-aktiv edilib
- Parlaqlıq jestini fəallaşdır
- Parlaqlıq sürüşməsi aktivləşdirilib
- Parlaqlıq sürüşməsi deaktiv edilib
- Səs səviyyəsi jestini fəallaşdır
- Səs səviyyəsinə sürüşdürmə aktivdir
- Səs səviyyəsinin sürüşdürülməsi deaktiv edilib
- Basıb sürüşdürmə jestini fəallaşdır
- Sürüşmək üçün basın aktivdir
- Çaldırmaq üçün basın deaktiv edilib
- Toxunuşlu əks-əlaqəni fəallaşdır
- Haptik rəy aktivləşdirilib
- Haptik rəy deaktiv edilib
+ Parlaqlıq jestini aktivləşdir
+ Parlaqlıq sürüşdürməsi aktivləşdirilir
+ Parlaqlıq sürüşdürmə qeyri-aktivdir
+ Səs səviyyəsi jestini aktivləşdir
+ Səs səviyyəsin sürüşdürmə aktivdir
+ Səs səviyyəsin sürüşdürmə qeyri-aktivdir
+ Basıb sürüşdürmə jestini aktivləşdir
+ Sürüşdürmək üçün basma aktivdir
+ Sürüşdürmək üçün basma qeyri-aktivdir
+ Toxunuşlu əks-əlaqəni aktivləşdir
+ Toxunuşlu əks-əlaqə aktivləşdirilib
+ Toxunuşlu əks-əlaqə qeyri-aktivdir
Parlaqlığı saxla və bərpa et
- Tam ekrana keçərkən və ya tam ekrandan çıxarkən parlaqlığı saxla və bərpa et
- Tam ekrana keçərkən və ya tam ekrandan çıxarkən parlaqlığı saxlama və bərpa etmə
- Avto-parlaqlıq jestini fəallaşdır
- Parlaqlığı ən aşağı dəyərə sürüşdürəndə avto-parlaqlıq fəallaşır
- Parlaqlığı ən aşağı dəyərə sürüşdürəndə avto-parlaqlıq fəallaşmır
- Maşın
- Sürüşdürmənin üst-üstə düşmə müddəti
- Üst qatın göründüyü millisaniyələrin miqdarı
- Üstünlük mətn ölçüsünü sürüşdürün
- Sürüşdürmə üst-üstə düşməsi üçün mətn ölçüsü
- Sürüşdürmə arxaplan şəffaflığı
- Sürüşdürmə fonunun görünməsi
+ Tam ekrana keçərkən və ya çıxarkən parlaqlığı saxla və bərpa et
+ Tam ekrana keçərkən və ya çıxarkən parlaqlığı saxlama və bərpa etmə
+ Avto-parlaqlıq jestini aktivləşdir
+ Parlaqlığı ən aşağı dəyərə sürüşdürəndə avto-parlaqlıq aktivləşir
+ Parlaqlığı ən aşağı dəyərə sürüşdürəndə avto-parlaqlıq aktivləşmir
+ Avtomatik
+ Sürüşdürmə örtüyü müddəti
+ Örtüyün göründüyü millisaniyələrin sayı
+ Örtük mətn ölçüsü dəyişdirmə
+ Sürüşdürmə örtüyü üçün mətn ölçüsü
+ Sürüşdürmə arxa plan görünməsi
+ Sürüşdürmə örtüyü arxa fonunun görünməsi
Sürüşdürmə böyüklük həddi
- \"Sürüşdürmə\"ni icra etmək üçün hədd miqdarı
+ Sürüşdürmənin icra edilməsi üçün son dəyər
- Avtomatik altyazıları sıradan çıxart
- Avtomatik subtitrlər deaktiv edilib
- Avtomatik subtitrlər aktivləşdirilib
+ Avtomatik titrləri qeyri-aktiv et
+ Avtomatik titrlər qeyri-aktivdir
+ Avtomatik titrlər aktivləşdirilir
Fəaliyyət düymələri
@@ -379,15 +379,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
Paylaş düyməsi göstərilir
- \"Bildir\"i gizlət
- Hesabat düyməsi gizlidir
- Hesabat düyməsi göstərilir
+ \"Xəbər verin\"i gizlət
+ Xəbər ver/düyməsi gizlidir
+ Xəbər ver/düyməsi göstərilir
\"Remiks\"i gizlət
Remix düyməsi gizlidir
Remiks düyməsi göstərilir
- \"Endir\"i gizlət
+ \"Endirin\"i gizlət
Yükləmə düyməsi gizlidir
Yükləmə düyməsi göstərilir
@@ -395,24 +395,24 @@ This is because Crowdin requires temporarily flattening this file and removing t
Təşəkkür düyməsi gizlidir
Təşəkkür düyməsi göstərilir
- Klipi gizlət
- Klip düyməsi gizlidir
- Klip düyməsi göstərilir
+ Kəsmə/ gizlət
+ Kəsmə düyməsi gizlidir
+ Kəsmə düyməsi göstərilir
\"Pleylistdə saxla\"nı gizlət
- Pleylistə saxla düyməsi gizlidir
- Pleylistə saxla düyməsi göstərilir
+ Pleylistdə saxla düyməsi gizlidir
+ Pleylistdə saxla düyməsi göstərilir
- Avto-oxut düyməsini gizlət
+ Avto-oynatma düyməsini gizlət
Avtomatik oynatma düyməsi gizlidir
Avtomatik oynatma düyməsi göstərilir
- Altyazılar düyməsini gizlət
- Subtitrlər düyməsi gizlidir
- Başlıqlar düyməsi göstərilir
+ Titrlər düyməsini gizlət
+ Titrlər düyməsi gizlidir
+ Titrlər düyməsi göstərilir
Yayımla düyməsini gizlət
@@ -440,43 +440,43 @@ This is because Crowdin requires temporarily flattening this file and removing t
Abunəliklər düyməsi göstərilir
\"Yarat\"ı \"Bildirişlər\" ilə dəyişdir
- Yarat düyməsi Bildirişlər düyməsi ilə dəyişdirilir\n\nQeyd: Bunu aktivləşdirmək video reklamları da məcburi şəkildə gizlədir
- \"Yarat\" düyməsi, \"Bildirişlər\" düyməsi ilə dəyişdirilmədi
+ Yarat düyməsi Bildirişlər düyməsi ilə dəyişdirilir\n\nQeyd: Bunu aktivləşdirmə video reklamları da məcburən gizlədir
+ \"Yarat\" düyməsi, \"Bildirişlər\" düyməsi ilə dəyişdirilmir
Naviqasiya düymə etiketlərini gizlət
Etiketlər gizlidir
Etiketlər göstərilir
- Əvvəlki və növbəti video düymələrini gizlət
+ Əvvəlki/növbəti video düymələrin gizlə
Düymələr gizlidir
Düymələr göstərilir
@@ -502,31 +502,31 @@ This is because Crowdin requires temporarily flattening this file and removing t
Albom kartları göstərilir
İanə qutusunu gizlət
- Crowdfunding qutusu gizlidir
- Crowdfunding qutusu göstərilir
+ İanə qutusu gizlidir
+ İanə qutusu göstərilir
Son ekran kartlarını gizlət
@@ -535,10 +535,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
Filtr çubuğu
- Lentdə, axtarışda və əlaqəli videolardakı filtr çubuğunu gizlət və ya göstər
- Lentdə gizlət
- Lentdə gizlidir
- Lentdə görünür
+ Axında, axtarışda və əlaqəli videolardakı filtr çubuğunu gizlət və ya göstər
+ Axında gizlət
+ Axında gizlidir
+ Axında göstərilir
Axtarışda gizlət
Axtarışda gizlidir
Axtarışda görünür
@@ -549,12 +549,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
Üzən mikrofon düyməsini gizlət
Mikrofon düyməsi gizlidir
- Mikrofon düyməsi görünür
+ Mikrofon düyməsi göstərilir
- Tam ekranda ambient rejimini sıradan çıxart
- Sıradan çıxarıldı
- Ambient rejimi aktivdir
+ Tam ekranda ambient rejimin bağla
+ Ambient rejimi qeyri-aktiv edilib
+ Ambient rejimi aktivləşdirildi
Məlumat kartlarını gizlət
@@ -562,27 +562,27 @@ This is because Crowdin requires temporarily flattening this file and removing t
Məlumat kartları göstərilir
- Sürüşən rəqəm animasiyalarını sıradan çıxart
+ Sürüşən rəqəm animasiyaların söndür
Sürüşən say animasiyası bağlıdır
Sürüşən say animasiyası açıqdır
- Video pleyerdə zaman çubuğunu gizlət
- Video pleyer axtarış çubuğu gizlidir
- Video pleyer axtarış çubuğu göstərilir
- Vide kiçik şəkillərində zaman çubuğunu gizlət
+ Video oynadıcıda axtarış çubuğunu gizlət
+ Video oynadıcı axtarış çubuğu gizlidir
+ Video oynadıcı axtarış çubuğu göstərilir
+ Video miniatürlərdə vaxt çubuğun gizlə
Miniatür axtarış çubuğu gizlədilib
Miniatür axtarış çubuğu göstərilir
- Ev lentində \"Shorts\"u gizlət
- Ev lentindəki Shorts gizlidir
- Ev lentində Shorts göstərilir
+ Ev axınında \"Shorts\"u gizlət
+ Ev axınındakı Shorts gizlidir
+ Ev axınında Shorts göstərilir
- Abunəlik lentində \"Shorts\"u gizlət
- Abunə lentindəki Shorts gizlidir
- Abunə lentində Shorts göstərilir
+ Abunəlik axınında \"Shorts\"u gizlət
+ Abunəlik axınındakı Shorts gizlidir
+ Abunəlik axınında Shorts göstərilir
Axtarış nəticələrindəki \"Shorts\"u gizlət
Axtarış nəticələrində Shorts gizlədilib
Axtarış nəticələrində Shorts göstərilir
@@ -594,9 +594,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
Abunə ol düyməsini gizlət
Abunə ol düyməsi gizlidir
Abunə ol düyməsi göstərilir
- Fasilə vermə qat düymələrini gizlət
- Dayandırılmış üst-üstə düşmə düymələri gizlədilir
- Dayandırılmış üst-üstə düşmə düymələri göstərilir
+ Dayandırma örtük düymələrini gizlət
+ Dayandırma örtük düymələri gizlədilir
+ Dayandırma örtük düymələri göstərilir
Mağaza düyməsini gizlət
Mağaza düyməsi gizlidir
Mağaza düyməsi göstərilir
@@ -610,8 +610,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Məkan etiketi gizlidir
Məkan etiketi göstərilir
Səsi pleylistdə saxlama düyməsini gizlət
- Səsi pleylistdə saxlamaq gizlidir
- Səsi pleylistə saxla göstərilir
+ Səsi pleylistdə saxlama gizlidir
+ Səsi pleylistdə saxlama göstərilir
Axtarış təkliflərini gizlət
Axtarış təklifləri gizlədilib
Axtarış təklifləri göstərilir
@@ -621,13 +621,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
\"Bəyənməmə\" düyməsini gizlət
Bəyənməmə düyməsi gizlidir
Bəyənməmə düyməsi göstərilir
- \"Rəylər\" düyməsini gizlət
+ \"Şərhlər\" düyməsini gizlət
Şərhlər düyməsi gizlidir
Şərhlər düyməsi göstərilir
Remix düyməsini gizlət
Remix düyməsi gizlidir
- Remiks düyməsi göstərilir
+ Remix düyməsi göstərilir
Paylaş düyməsini gizlət
Paylaş düyməsi gizlidir
@@ -636,28 +636,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
Məlumat paneli gizlidir
Məlumat paneli göstərilir
Kanal çubuğunu gizlət
- Kanal paneli gizlidir
- Kanal paneli göstərilir
+ Kanal çubuğu gizlidir
+ Kanal çubuğu göstərilir
Video başlığını gizlət
- Başlıq gizlədilib
+ Başlıq gizlədilir
Başlıq göstərilir
- Səs metadata etiketini gizlət
- Metadata etiketi gizlidir
- Metadata etiketi göstərilir
- Tam video keçid etiketini gizlət
+ Səs üst məlumat etiketini gizlət
+ Üst məlumat etiketi gizlidir
+ Üst məlumat etiketi göstərilir
+ Tam videonun bağlantısı etiketini gizlət
Video linki etiketi gizlidir
Video link etiketi göstərilir
Səs düyməsini gizlət
Səs düyməsi gizlidir
Səs düyməsi göstərilir
Naviqasiya çubuğunu gizlət
- Naviqasiya paneli gizlidir
- Naviqasiya paneli göstərilir
+ Naviqasiya çubuğu gizlidir
+ Naviqasiya çubuğu göstərilir
- Təklif edilən video bitiş ekranını sıradan çıxart
- Təklif olunan videolar deaktiv ediləcək
- Təklif olunan videolar nümayiş olunacaq
+ Təklif edilən video bitiş ekranın ləğv et
+ Təklif olunan videolar qeyri-aktiv ediləcək
+ Təklif olunan videolar göstəriləcək
Video vaxt möhürünü gizlət
@@ -665,26 +665,26 @@ This is because Crowdin requires temporarily flattening this file and removing t
Vaxt möhürü göstərilir
- Oyunçu örtüyünün qeyri-şəffaflığı
+ Oynadıcı örtüyünün qeyri-şəffaflığı
0-100 arasında qeyri-şəffaflıq dəyəri, burada 0 şəffafdır
- Oyunçu örtüyünün qeyri-şəffaflığı 0-100 arasında olmalıdır
+ Oynadıcı örtüyünün qeyri-şəffaflığı 0-100 arası olmalıdır
Gizli
- \"Bəyənməmə\" müvəqqəti işləmir (API vaxtı bitdi)
- Bəyənməmə mövcud deyil (status %d)
- Bəyənməyənlər mövcud deyil (müştəri API limitinə çatdı)
- Bəyənməmə mövcud deyil (%s)
+ \"Bəyənməmə\" müvəqqəti əlçatmazdır(API vaxtı bitdi)
+ Bəyənməmə əlçatmazdır (status %d)
+ Bəyənməmələr əlçatmazdır (qəbuledici API limitinə çatdı)
+ Bəyənməmə əlçatmazdır (%s)
- ReturnYouTubeDislike ilə səs vermək üçün yenidən yüklə
- Bəyənməyənlər göstərilir
- Göstərilmir
+ Ryd ilə səsvermə üçün videonu yenidən yüklə
+ Bəyənməmələr göstərilir
+ Bəyənməmələr göstərilmir
\"Shorts\"da bəyənməmə sayını göstər
Bəyənməmə sayı \"Shorts\"da göstərilir
\"Bəyənməmə\"lər \"Shorts\"da göstərilir\n\nMəhdudiyyət: \"Bəyənməmə\"lər gizli rejimdə görünməyə bilər
@@ -694,241 +694,241 @@ This is because Crowdin requires temporarily flattening this file and removing t
\"Bəyənməmə\"lər sayla göstərilir
Yığcam bəyən düyməsi
- Minimum en üçün tərtib edilmiş Bəyən düyməsi
+ Daha kiçik en üçün hazırlanmış Bəyən düyməsi
Ən yaxşı görünüş üçün tərtib edilmiş Bəyən düyməsi
- API əlçatan deyilsə bir tost bildirişi göstər
- Return YouTube Dislike əlçatan deyilsə bir tost bildirişi göstər
- Return YouTube Dislike əlçatan deyilsə bir tost bildirişi göstərmə
+ API əlçatan deyilsə ani bildiriş göstər
+ Return YouTube Dislike əlçatan deyilsə ani bildiriş göstər
+ Return YouTube Dislike əlçatan deyilsə ani bildiriş göstərmə
Haqqında
- Data, Return YouTube Dislike API tərəfindən təmin edilir. Ətraflı öyrənmək üçün bura toxunun
+ Məlumat Return YouTube Dislike API vasitəsilə alınır. Ətraflı öyrənmək üçün bura toxun
- Bu cihaz üçünYouTubeDislike API statistikasını qaytarın
- Ortalama API cavab vaxtı
- Minimum API cavab vaxtı
- Maksimum API cavab vaxtı
- Son video üzrə API cavab vaxtı
- \"Bəyənməmə\"lər müvəqqəti olaraq əlçatmazdır - Client API limiti var
- API gələn səs, çağırış sayı
- Heç bir şəbəkə zəngi edilmədi
- %d şəbəkə zəngi edildi
+ Bu cihazda Return YouTube Dislike API statistikası
+ Orta hesabla API cavab müddəti
+ Ən aşağı API cavab müddəti
+ Ən yüksək API cavab müddəti
+ Son video üzrə API cavab müddəti
+ Bəyənməmələr müvəqqəti olaraq əlçatmazdır - Qəbuledici API sürət limiti var
+ API qəbul edilən səsləri, oyanmaların sayı
+ Heç bir şəbəkə istəyi olmadı
+ %d şəbəkə istəyi oldu
API gələn səs, vaxt bitmə sayı
- Heç bir şəbəkə zəngi üçün vaxt bitmədi
- %d şəbəkə zəngi üçün vaxt bitdi
- API müştəri dərəcəsi məhdudiyyətləri
- Heç bir məhdudiyyət yox idi
- Client rate limit, %d dəfə oldu
+ Heç bir şəbəkə istəyi üçün vaxt bitmədi
+ %d şəbəkə istəyi üçün vaxt bitdi
+ API qəbuledici sürət məhdudiyyətləri
+ Heç bir sürət məhdudiyyəti olmadı
+ Qəbuledici sürət limiti %d dəfə baş verdi
%d millisaniyə
- Geniş axtarış çubuğunu fəallaşdır
- Geniş axtarış paneli aktivləşdirilib
- Geniş axtarış paneli deaktiv edilib
+ Geniş axtarış çubuğunu aktivləşdir
+ Geniş axtarış çubuğu aktivləşdirilir
+ Geniş axtarış çubuğu qeyri-aktivdir
- Köhnə zaman çubuğu kiçik şəkillərini bərpa et
- Axtarış çubuğunun kiçik şəkilləri axtarış çubuğunun üstündə görünəcək
- Axtarış çubuğunun miniatürləri tam ekranda görünəcək
+ Köhnə axtarış çubuğu miniatürlərini qaytar
+ Axtarış çubuğu miniatürləri axtarış çubuğu üstündə görünəcək
+ Axtarış çubuğu miniatürləri tam ekranda görünəcək
- Tətbiq versiyasını təqlid et
- Təqlid edilir
- Təqlid edilmir
- Tətbiq versiyası, YouTube-un daha köhnə bir versiyası olaraq təqlid ediləcək.\n\nBu, tətbiqin görünüşünü və özəlliklərini dəyişdirəcək, ancaq bilinməyən yan təsirləri yarana bilər.\n\nDaha sonra söndürsəniz, interfeys xətalarını önləmək üçün tətbiq datasını təmizləmək tövsiyə olunur.
+ Tətbiq versiyasını saxtalaşdır
+ Versiya saxtalaşdırıldı
+ Versiya saxtalaşdırılmadı
+ Tətbiq versiyası, YouTube-un daha köhnə versiyası şəklində saxtalaşdırılacaq.\n\nBu, tətbiqin görünüşünü və funksiyalarını dəyişdirəcək, ancaq bilinməyən yan təsirlər ola bilər.\n\nDaha sonra söndürsəniz, UI səhvlərini önləmək üçün tətbiq məlumatını təmizləmək tövsiyə olunur.
- Təqlid ediləcək tətbiq versiyası
+ Saxta tətbiq versiyası hədəfi
18.33.40 - Shorts gizli rejimində RYD-ni bərpa et
18.20.39 - Geniş video sürəti & keyfiyyət menyusunu bərpa et
- 18.09.39 - Kitabxana vərəqini bərpa et
- 17.41.37 - Köhnə pleylist rəfini bərpa et
- 17.33.42 - Köhnə interfeys düzümünü bərpa et
+ 18.09.39 - Kitabxana panelini bərpa et
+ 17.41.37 - Köhnə pleylist bölməsin bərpa et
+ 17.33.42 - Köhnə UI tərtibatını bərpa et
- Başlanğıc səhifəsini ayarla
+ Başlanğıc səhifəsini tənzimlə
İlkin
Ev
@@ -937,27 +937,27 @@ This is because Crowdin requires temporarily flattening this file and removing t
Abunəliklər
Kəşf et
- \"Siz\" vərəqi
+ \"Siz\" paneli
Bəyənilən videolar
Tarixçə
- Trendlər
+ Trenddə olan
- Shorts pleyerinin davam edilməsini söndür
- Tətbiq açılanda Shorts pleyeri davam edilməyəcək
- Tətbiq açılanda Shorts pleyeri davam ediləcək
+ Shorts oynadıcı davam etdirməsini bağla
+ Tətbiq açılanda Shorts oynadıcı davam etməyəcək
+ Tətbiq açılanda Shorts oynadıcı davam edəcək
- Planşet düzümünü işə sal
+ Planşet tərtibatını aktiv et
Planşet tərtibatı aktiv edilib
- Sıradan çıxarıldı
- İcma göndərişləri planşet düzümündə göstərilmir
+ Planşet tərtibatı qeyri-aktivdir
+ İcma elanları planşet tərtibatında göstərilmir
- Mini oyunçu
- Tətbiqdə kiçildilmiş pleyerin üslubunu dəyişdirin
- Mini pleyer növü
+ Kiçik oynadıcı
+ Tətbiqdə kiçildilən oynadıcı üslubunu dəyişdir
+ Kiçik oynadıcı növü
Orijinal
Telefon
Planşet
@@ -965,56 +965,61 @@ This is because Crowdin requires temporarily flattening this file and removing t
Müasir 2
Müasir 3
Genişləndir və bağla düymələrini gizlət
- Gizlidir\n(genişləndirmə və ya bağlamaq üçün mini pleyeri sürüşdür)
+ Gizlidir\n(genişləndirmək və ya bağlamaq üçün kiçik oynadıcını sürüşdür)
Genişləndirmə və bağlama düymələri göstərilir
Alt mətnləri gizlət
- Alt mətnlər gizlidir
+ Alt mətnlər gizlədilir
Alt mətnlər göstərilir
İrəli və geri ötür düymələrini gizlət
- İrəli və geri atlama gizlidir
- İrəli və geri atlama göstərilir
- Overlay qeyri-şəffaflıq
+ İrəli və geri ötürücülər gizlidir
+ İrəli və geri ötürücülər göstərilir
+ Örtük qeyri-şəffaflığı
0-100 arasında qeyri-şəffaflıq dəyəri, burada 0 şəffafdır
- Miniplayer örtüyünün qeyri-şəffaflığı 0-100 arasında olmalıdır
+ Kiçik Oynadıcı örtük qeyri-şəffaflığı 0-100 arası olmalıdır
- Qradiyent yükləmə ekranını fəallaşdır
- Yükləmə ekranı, qradiyent bir arxaplana sahib olacaq
- Yükləmə ekranı, düz bir arxaplana sahib olacaq
+ Rəngbərəng yükləmə ekranını aktivləşdir
+ Yükləmə ekranı, rəngbərəng arxa plana malik olacaq
+ Yükləmə ekranı, vahid arxa plana malik olacaq
- Özəl zaman çubuğu rəngini fəallaşdır
- Özəl zaman çubuğu rəngi göstərilir
- Orijinal zaman çubuğu rəngi göstərilir
- Özəl zaman çubuğu rəngi
- Zaman çubuğunun rəngi
- Yararsız zaman çubuğu rəng dəyəri. İlkin dəyər istifadə edilir.
+ Fərdi axtarma çubuğu rəngini aktivləşdir
+ Fərdi axtarma çubuğu rəngi göstərilir
+ Orijinal axtarma çubuğu rəngi göstərilir
+ Fərdi axtarma çubuğu rəngi
+ Axtarma çubuğu rəngi
+ Etibarsız axtarış çubuğu rəng dəyəri. İlkin dəyər işlədilir.
+
+
+ Təsvir bölgə məhdudiyyətlərini ötür
+ yt4.ggpht.com təsvir host-u istifadə edilir
+ Orijinal təsvir host-u istifadə edilir\n\nBunu aktivləşdirmə, bəzi bölgələrdə əngəllənən, ağ təsvirləri düzəldə bilər
- Ev vərəqi
+ Ev paneli
- Abunəliklər vərəqi
+ Abunəliklər paneli
- \"Siz\" vərəqi
- Pleyer pleylistləri, tövsiyələr
+ \"Siz\" paneli
+ Oynadıcı pleylistləri, tövsiyələr
Axtarış nəticələri
- Orijinal kiçik şəkillər
- DeArrow & Orijinal kiçik şəkillər
- DeArrow & Videodan kadrlar
- Videodan kadrlar
- DeArrow YouTube videoları üçün izdiham mənbəyinə malik miniatürlər təqdim edir. Bu miniatürlər tez-tez YouTube tərəfindən təqdim edilənlərdən daha uyğun olur\n\nƏgər aktivləşdirilərsə, video URL-lər API serverinə göndəriləcək və başqa heç bir məlumat göndərilməyəcək. Videoda DeArrow miniatürləri yoxdursa, orijinal və ya hələ də çəkilmişlər göstərilir\n\nDeArrow haqqında ətraflı öyrənmək üçün bura toxunun
- API əlçatan deyilsə bir tost bildirişi göstər
- DeArrow mövcud olmadıqda tost göstərilir
- DeArrow mövcud deyilsə, tost göstərilmir
- DeArrow API son nöqtəsi
- DeArrow miniatür keşinin son nöqtəsinin URL-i
- Hərəkətsiz video kadrları
- Hərəkətsiz kadrlar, hər bir videonun başından/ortasında/sonundan götürülür. Bu təsvirlər YouTube-da qurulu gəlir və heç bir xarici API istifadə edilmir
- Sürətli hərəkətsiz kadrları istifadə et
- Orta keyfiyyətli hərəkətsiz kadrlar istifadə edilir. Kiçik şəkillər, daha sürətli yüklənəcək, ancaq canlı yayımlar, buraxılmayan və ya çox köhnə videolar boş kiçik şəkilləri göstərə bilər
- Yüksək keyfiyyətli hərəkətsiz kadrlar istifadə edilir
- Hərəkətsiz kadrın götürələcəyi video vaxtı
+ Orijinal miniatürlər
+ DeArrow & Orijinal miniatürlər
+ DeArrow & Kadr çəkilişləri
+ Kadr çəkilişləri
+ DeArrow YouTube videoları üçün bölük mənbəli miniatürlər təchiz edir. Bu miniatürlər hər zaman YouTube tərəfindən təmin edilənlərdən daha uyğun olur\n\nƏgər aktivləşdirilərsə, video URL-lər API serverinə göndəriləcək və başqa heç bir məlumat göndərilməyəcək. Videoda DeArrow miniatürləri yoxdursa, orijinal və ya hələ də kadr çəkilişləri göstərilir\n\nDeArrow haqqında ətraflı öyrənmək üçün bura toxun
+ API əlçatan deyilsə ani bildiriş göstər
+ DeArrow əlçatan deyilsə bildiriş göstərilir
+ DeArrow əlçatan deyilsə bildiriş göstərilmir
+ DeArrow API\'nin sonuncu əlaqəsi
+ DeArrow miniatür keşinin son əlaqəsinin URL-si
+ Durğun video kadrları
+ Durğun kadrlar, hər videonun əvvəlindən/ortasından/sonundan götürülür. Bu təsvirlər YouTube-da qurulu gəlir və heç bir xarici API istifadə edilmir
+ Sürətli kadr çəkilişləri istifadə et
+ Orta keyfiyyətli durğun kadrlar istifadə edilir. Miniatürlər, daha sürətli yüklənəcək, ancaq canlı yayımlar, buraxılmayan və ya çox köhnə videolar boş miniatürləri göstərə bilər
+ Yüksək keyfiyyətli durğun kadrlar istifadə edilir
+ Durğun kadrın götürələcəyi video vaxtı
Videonun başlanğıcı
Videonun ortası
Videonun sonu
@@ -1027,93 +1032,93 @@ This is because Crowdin requires temporarily flattening this file and removing t
Elanlar açılışda göstərilir
Elanlar açılışda göstərilmir
Elanları açılışda göstər
- Elan provayderinə bağlana bilmədi
- Rədd et
+ Elan provayderinə bağlanmaq olmadı
+ Ləğv et
- Avto-təkrarı fəallaşdır
+ Avto-təkrarlamanı aktivləşdir
Avtomatik təkrar aktivləşdirilib
- Avtomatik təkrarlama deaktiv edilib
+ Avtomatik təkrarlama qeyri-aktiv edilib
- Cihaz ölçülərini təqlid et
- Cihaz ölçüləri təqlid edildi\n\nDaha yüksək video keyfiyyətləri açıla bilər, ancaq video oxutma ilişmələri, daha pis batareya ömrü və bilinməyən yan təsirləri görə bilərsiniz
- Cihaz ölçüləri təqlid edilmədi\n\nBunu fəallaşdırmaq, daha yüksək video keyfiyyətlərinin kilidini aça bilər
- Bunu fəallaşdırmaq, video oxutma ilişmələrinə, daha pis batareya ömrünə və bilinməyən yan təsirlərə səbəb ola bilər.
+ Cihaz ölçülərini saxtalaşdır
+ Cihaz ölçüləri saxtalaşdı\n\nDaha yüksək video keyfiyyətləri göstərilə bilər, ancaq video oynatma donmaları, daha pis batareya istismarı və bilinməyən yan təsirləri görə bilərsiniz
+ Cihaz ölçüləri saxtalaşmır\n\nBunu aktivləşdirmə, daha yüksək video keyfiyyətlərinin olmasın təmin edə bilir
+ Bunu aktivləşdirmə, video oynatma donmalarına, daha pis batareya istismarına və bilinməyən yan təsirlərə səbəb ola bilər.
- GmsCore Parametrləri
- GmsCore parametrləri
+ GmsCore Tənzimləmələri
+ GmsCore üçün Tənzimləmələr
URL yönləndirmələrini ötür
- Ötürülür
- Ötürülmür
+ URL yönləndirmələri ötürülür
+ URL yönləndirmələri ötürülmür
- Keçidləri brauzerdə aç
- Keçidlər xarici brauzerdə açılır
- Keçidlər tətbiqdə açılır
+ Bağlantıları brauzerdə aç
+ Bağlantılar xarici brauzerdə açılır
+ Bağlantılar tətbiqdə açılır
İzləmə sorğusu parametrini sil
- İzləmə sorğusu parametri keçidlərdən silinir
- İzləmə sorğusu parametri keçidlərdən silinmir
+ İzləmə sorğusu parametri bağlantılardan silinir
+ İzləmə sorğusu parametri bağlantılardan silinmir
- Yaxınlaşdırma toxunuş əks-əlaqəsini söndür
- Toxunuş əks-əlaqəsi söndürüldü
- Toxunuş əks-əlaqəsi fəaldır
+ Yaxınlaşdırma əks-əlaqəsini bağla
+ Toxunuş əks-əlaqəsi bağlandı
+ Toxunuş əks-əlaqəsi aktivdir
Avtomatik keyfiyyət
Video keyfiyyəti dəyişikliklərini xatırla
- Bütün videolara tətbiq et
- Yalnız hazırkı videoya tətbiq et
- Wi-Fi-da ilkin video keyfiyyəti
+ Keyfiyyət dəyişiklikləri bütün videolara tətbiq edilir
+ Keyfiyyət dəyişiklikləri yalnız cari videoya tətbiq edilir
+ Wi-Fi şəbəkəsində ilkin video keyfiyyəti
Mobil şəbəkədə ilkin video keyfiyyəti
mobil
- wifi
- İlkin %1$s keyfiyyəti %2$s olaraq dəyişdirildi
+ wi-fi
+ İlkin %1$s keyfiyyəti %2$s kimi dəyişdi
Sürət dialoq düyməsini göstər
Düymə göstərilir
- Göstərilmir
+ Düymə göstərilmir
- Özəl oxutma sürəti
- Oxutma sürəti əlavə et və ya dəyişdir
- Özəl oxutma sürəti %s dəyərindən az olmalıdır. İlkin dəyərlər istifadə edilir.
- Yararsız özəl oxutma sürətləri. İlkin dəyərlər istifadə edilir.
+ Fərdi oynatma sürəti
+ Mövcud oynatma sürəti əlavə et və ya dəyişdir
+ Fərdi sürətlər %s-dən az olmalıdır. Standart dəyərlər istifadəsi.
+ Etibarsız oynatma sürətləri. Standartlar istifadədədir.
- Oxutma sürəti dəyişikliklərini xatırla
- Bütün videolara tətbiq et
- Yalnız hazırkı videoya tətbiq et
- İlkin oxutma sürəti
- İlkin sürət: %s
+ Oynatma sürəti dəyişikliklərin xatırla
+ Oynatma sürəti dəyişiklikləri bütün videolara aiddir
+ Oynatma sürəti dəyişiklikləri yalnız cari videoya aiddir
+ İlkin oynatma sürəti
+ İlkin sürət %s kimi dəyişdirildi
- Sürüşdürərək çəkməyi fəallaşdır
+ Axtarmaq üçün sürüşdürməni aktiv et
Axtarmaq üçün sürüşdürmə aktivdir
- Fəal deyil
+ Axtarmaq üçün sürüşdürmə aktiv deyil
- Client-i təqlid et
- Oxutma problemlərini önləmək client-i təqlid et
- Client-i təqlid et
- Client təqlid edildi
- Client təqlid edilmir\n\nVideo oxutma işləməyə bilər
- Bu ayarı söndürmək, video oxutma problemlərinə səbəb ola bilər.
- Client-i iOS olaraq təqlid et
- Client hazırda iOS olaraq təqlid edilir\n\nYan təsirləri bunlardır:\n• HDR video yoxdur\n• İzləmə tarixçəsi işləməyə bilər\n• Daha yüksək video keyfiyyətləri əskik ola bilər\n• Canlı yayımlar yalnız səs kimi oxudulmaz\n• Canlı yayımlar Android 8.0-da əlçatan deyil
- Client hazırda Android VR olaraq təqlid edilir\n\nYan təsirlər bunlardır:\n• HDR video yoxdur\n• Uşaqlara özəl videolar oxudulmur\n• Fasilə verilmiş videolar təsadüfi olaraq davam edə bilər\n• Shorts zaman çubuğu kiçik şəkilləri aşağı keyfiyyətdədir\n• \"Endir\" fəaliyyət düyməsi həmişə gizlidir\n• Bitiş ekran kartları həmişə gizlidir
+ Qəbuledicini saxtalaşdır
+ Oynatma problemlərinin olmaması üçün client-i saxtalaşdır
+ Qəbuledicini saxtalaşdır
+ Qəbuledici saxtalaşdırıldı
+ Qəbuledici dəyişməyib\n\nVideo oynatma işləməyə bilər
+ Bu seçimin bağlanması, video oynatma problemlərinə səbəb ola bilər.
+ Qəbuledicini iOS olaraq saxtalaşdır
+ Qəbuledici hazırda iOS olaraq dəyişib\n\nYan təsirlərə daxildir:\n• HDR video yoxdur\n• Baxış tarixçəsi işləməyə bilər\n• Daha yüksək video keyfiyyətləri olmaya bilər\n• Canlı yayımlar fon səsi kimi səsləndirilməz\n• Canlı yayımlar Android 8.0-də əlçatan olmur
+ Qəbuledici hazırda Android VR olaraq dəyişdirilib\n\nYan təsirlərə daxildir:\n• HDR video yoxdur\n• Uşaqlar üçün videolar oynadılmır\n• Fasilə verilmiş videolar gözlənilmədən davam edə bilər\n• Aşağı keyfiyyətli Shorts axtarma çubuğu miniatürləri\n• \"Yüklə\" fəaliyyət düyməsi həmişə gizlidir\n• Bitiş ekran kartları həmişə gizlidir
Client kiçik şəkillərini təqlid etmə əlçatmazdır (API vaxtı bitdi)
Client kiçik şəkillərini təqlid etmə müvəqqəti əlçatmazdır: %s
@@ -1127,55 +1132,55 @@ This is because Crowdin requires temporarily flattening this file and removing t
Səsli reklamları əngəllə
- Əngəllənib
- Əngəllənməyib
+ Səsli reklamlar bloklanıb
+ Səsli reklamlar bloklanmayıb
- %s əlçatmazdır. Reklamlar görünə bilər. Ayarlarda başqa bir reklam əngəlləmə xidmətinə keçməyə çalışın.
- %s serveri bir xəta qaytardı. Reklamlar görünə bilər. Ayarlarda başqa bir reklam əngəlləmə xidmətinə keçməyə çalışın.
- Pərçimlənmiş video reklamlarını əngəllə
- Sıradan çıxarıldı
- İşıqlı proxy
- PurpleAdBlock proxy
+ %s əlçatmazdır. Reklamlar görünə bilər. Seçimlərdə başqa reklam bloku xidmətinə keçirməyə cəhd et.
+ %s serveri xəta sorğusu verdi. Reklam görünə bilər. Seçimlərdə başqa reklam bloku xidmətinə keçir.
+ Yerləşdirilən video reklamlarını əngəllə
+ Qeyri-aktiv edildi
+ Dəqiq proksi
+ PurpleAdBlock proksi
Video reklamları əngəllə
- Əngəllənib
- Əngəllənməyib
+ Video reklamlar bloklanıb
+ Video reklamlar bloklanmır
mesaj silindi
Silinən mesajları göstər
Silinən mesajlar göstərilməsin
- Silinən mesajları spoiler ilə gizlət
- Silinən mesajları üzərindən xətt çəkilmiş kimi göstər
+ Silinmiş mesajları boz panel arxasında gizlət
+ Silinən mesajları qaralanmış mətn kimi göstər
- Kanal Xallarını avtomatik götür
- Götürülür
- Götürülmür
+ Kanal Xallarını avtomatik təsdiqlə
+ Kanal Xalları avtomatik olaraq təsdiqlənir
+ Kanal Xalları avtomatik olaraq təsdiqlənmir
- Twitch sazlama rejimini fəallaşdır
- Fəaldır (tövsiyə edilmir)
- Twitch debug rejimi deaktiv edilib
+ Twitch sazlama rejimini aktivləşdir
+ Twitch sazlama rejimi aktivdir (tövsiyə edilmir)
+ Twitch sazlama rejimi qeyri-aktiv edilib
- ReVanced Ayarları
+ ReVanced Tənzimləmələri
Reklamlar
- Reklam əngəlləmə ayarları
+ Reklam əngəlləmə tənzimləmələri
Söhbət
- Söhbət ayarları
+ Söhbət tənzimləmələri
Müxtəlif
- Müxtəlif ayarlar
- Ümumi ayarlar
- Digər ayarlar
- Client tərəfli reklamlar
- Server tərəfli surestream reklamlar
+ Müxtəlif tənzimləmələr
+ Ümumi tənzimləmələr
+ Digər tənzimləmələr
+ Qəbuledici dəstəkli reklamlar
+ Server dəstəkli surestream reklamlar
Sazlama jurnalı
- Sazlama jurnalı fəaldır
- Sazlama jurnalı sıradan çıxarılıb
+ Sazlama jurnalları aktivləşdirilib
+ Sazlama jurnalları qeyri-aktiv edilib
diff --git a/src/main/resources/addresources/values-be-rBY/strings.xml b/src/main/resources/addresources/values-be-rBY/strings.xml
index 21a9fb739..7c52c8434 100644
--- a/src/main/resources/addresources/values-be-rBY/strings.xml
+++ b/src/main/resources/addresources/values-be-rBY/strings.xml
@@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Няправільнае ключавое слова. Немагчыма выкарыстоўваць: \"%s\" у якасці фільтра
Няправільнае ключавое слова. \"%1$s\" змяшчае менш за %2$d сімвалаў
- Ключавое слова \"$s\" схавае ўсе відэа
+ Ключавое слова \"%s\" схавае ўсе відэа
Схаваць агульную рэкламу
@@ -990,6 +990,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Колер панэлі пошуку
Няправільнае значэнне колеру панэлі пошуку. Выкарыстоўваецца значэнне па змаўчанні.
+
+
Галоўная ўкладка
@@ -1162,6 +1164,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Рэжым адладкі Twitch адключаны
+ Налады ReVanced
Аб\"явы
Налады блакіроўкі рэкламы
Чат
diff --git a/src/main/resources/addresources/values-bg-rBG/strings.xml b/src/main/resources/addresources/values-bg-rBG/strings.xml
index e1868c92e..9eb7944b5 100644
--- a/src/main/resources/addresources/values-bg-rBG/strings.xml
+++ b/src/main/resources/addresources/values-bg-rBG/strings.xml
@@ -463,6 +463,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-bn-rBD/strings.xml b/src/main/resources/addresources/values-bn-rBD/strings.xml
index 639289026..2de9de8c1 100644
--- a/src/main/resources/addresources/values-bn-rBD/strings.xml
+++ b/src/main/resources/addresources/values-bn-rBD/strings.xml
@@ -850,10 +850,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
স্পুফ অ্যাপ সংস্করণ লক্ষ্য
18.33.40 - ছদ্মবেশি মোডে RYD পুনরুদ্ধার করে
- ১৮.২০.৩৯ - প্রশ্বস্ত ভিডিও স্পিড এবং গুণমান মেনু পুনরুদ্ধার করে
- ১৮.০৯.৩৯ - লাইব্রেরি ট্যাপ পুনরুদ্ধার করে
- ১৭.৪১.৩৯ - পুরোনো প্লেলিস্ট শেলফ পুনরুদ্ধার করে
- ১৭.৩৩.৪২ - পুরোনো UI লেআউট পুনরুদ্ধার করে
+ 18.20.39 - প্রশ্বস্ত ভিডিও স্পিড এবং গুণমান মেনু পুনরুদ্ধার করে
+ 18.09.39 - লাইব্রেরি ট্যাপ পুনরুদ্ধার করে
+ 17.41.37 - পুরোনো প্লেলিস্ট শেলফ পুনরুদ্ধার করে
+ 17.33.42 - পুরোনো UI লেআউট পুনরুদ্ধার করে
শুরুর পৃষ্ঠা সেট করুন
@@ -919,6 +919,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
সিকবারের রং
সিকবারে ভুল রং দেয়া হয়েছে। মূল রং ব্যবহার করছে।
+
+
হোম ট্যাব
diff --git a/src/main/resources/addresources/values-bs-rBA/strings.xml b/src/main/resources/addresources/values-bs-rBA/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-bs-rBA/strings.xml
+++ b/src/main/resources/addresources/values-bs-rBA/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-ca-rES/strings.xml b/src/main/resources/addresources/values-ca-rES/strings.xml
index 913f8c839..59d82325b 100644
--- a/src/main/resources/addresources/values-ca-rES/strings.xml
+++ b/src/main/resources/addresources/values-ca-rES/strings.xml
@@ -206,6 +206,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-cs-rCZ/strings.xml b/src/main/resources/addresources/values-cs-rCZ/strings.xml
index 5adc87081..ce9e934e3 100644
--- a/src/main/resources/addresources/values-cs-rCZ/strings.xml
+++ b/src/main/resources/addresources/values-cs-rCZ/strings.xml
@@ -249,7 +249,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Neplatné klíčové slovo. Nelze použít: \'%s\' jako filtr
Neplatné klíčové slovo. \'%1$s\' je menší než %2$d znaků
- Klíčové slovo \'$s\' skryje všechna videa
+ Klíčové slovo \'%s\' skryje všechna videa
Skrýt obecné reklamy
@@ -994,6 +994,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
Barva vyhledávacího panelu
Neplatná hodnota barvy vyhledávacího panelu. Použít výchozí hodnotu.
+
+ Obejít omezení oblasti obrázku
+ Použití hostitele obrázků yt4.gggpht.com
+ Použití originálního hostitele obrázků\n\nPovolení tohoto nastavení může opravit chybějící obrázky, které jsou blokovány v některých regionech
+
Záložka Domů
diff --git a/src/main/resources/addresources/values-da-rDK/strings.xml b/src/main/resources/addresources/values-da-rDK/strings.xml
index 2c816baa9..8f57943e2 100644
--- a/src/main/resources/addresources/values-da-rDK/strings.xml
+++ b/src/main/resources/addresources/values-da-rDK/strings.xml
@@ -248,7 +248,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Ugyldigt søgeord. Kan ikke bruge: \'%s\' som et filter
Ugyldigt søgeord. \'%1$s\' er mindre end %2$d tegn
- Nøgleord \'$s\' vil skjule alle videoer
+ Nøgleord \'%s\' vil skjule alle videoer
Skjul generelle annoncer
@@ -579,11 +579,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
Skjul Shorts i hjemmefeed
Shorts i hjemmet feed er skjult
- Korte i hjemmet feed er vist
+ Shorts i hjemmet feed er vist
Skjul Shorts i abonnementsfeed
- Korte i abonnementsfeed er skjult
- Korte i abonnementsfeed vises
+ Shorts i abonnementsfeed er skjult
+ Shorts i abonnementsfeed vises
Skjul Shorts i søgeresultater
Shorts i søgeresultater er skjult
Korte i søgeresultater vises
@@ -991,6 +991,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
Farven på den søgende bar
Ugyldig søgelinje farveværdi. Brug standardværdi.
+
+ Bypass billede region restriktioner
+ Bruger billedvært yt4.ggpht.com
+ Brug af original billedvært\n\nAktivering af dette kan rette manglende billeder, der er blokeret i nogle regioner
+
Hjem fane
diff --git a/src/main/resources/addresources/values-de-rDE/strings.xml b/src/main/resources/addresources/values-de-rDE/strings.xml
index 2f8066119..065278488 100644
--- a/src/main/resources/addresources/values-de-rDE/strings.xml
+++ b/src/main/resources/addresources/values-de-rDE/strings.xml
@@ -249,7 +249,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Ungültiges Schlüsselwort. Kann nicht verwenden: \'%s\' als Filter
Ungültiges Schlüsselwort. \'%1$s\' ist weniger als %2$d Zeichen
- Stichwort \'$s\' wird alle Videos ausblenden
+ Schlüsselwort \'%s\' wird alle Videos ausblenden
Allgemeine Werbung ausblenden
@@ -680,6 +680,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Nicht anzeigen
+ Dislikes vorläufig nicht verfügbar (API Timeout)
Dislikes nicht verfügbar (Status %d)
Nicht verfügbar (Client-API-Limit erreicht)
Dislikes nicht verfügbar (%s)
@@ -991,6 +992,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
Die Farbe der Suchleiste
Ungültiger Suchleisten-Farbwert. Standardwert wird verwendet.
+
+ Bildgebietsbeschränkungen umgehen
+ Bild-Host yt4.ggpht.com verwenden
+ Verwendung des ursprünglichen Bild-Hosts\n\nAktivieren kann fehlende Bilder beheben, die in einigen Regionen blockiert werden
+
Home-Tab
diff --git a/src/main/resources/addresources/values-el-rGR/strings.xml b/src/main/resources/addresources/values-el-rGR/strings.xml
index 4149dedea..b8af20d04 100644
--- a/src/main/resources/addresources/values-el-rGR/strings.xml
+++ b/src/main/resources/addresources/values-el-rGR/strings.xml
@@ -247,7 +247,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Μη έγκυρη λέξη-κλειδί. Αδυναμία χρήσης: \'%s\' ως φίλτρο
Μη έγκυρη λέξη-κλειδί. Το \'%1$s\' είναι μικρότερο από %2$d χαρακτήρες
- Η λέξη «$s» θα κρύψει όλα τα βίντεο
+ Η λέξη «%s» θα κρύψει όλα τα βίντεο
Γενικές διαφημίσεις
@@ -992,6 +992,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
Το χρώμα της γραμμής προόδου
Μη έγκυρη τιμή χρώματος. Επαναφορά...
+
+ Παράκαμψη μπλοκαρίσματος φόρτωσης εικόνων
+ Χρησιμοποιείται το domain yt4.ggpht.com για την φόρτωση εικόνων
+ Χρησιμοποιείται το αρχικό domain για την φόρτωση εικόνων\n\nΗ ενεργοποίηση αυτής της ρύθμισης μπορεί να διορθώσει την φόρτωση εικόνων που είναι μπλοκαρισμένες σε κάποιες περιοχές
+
Αρχική σελίδα
diff --git a/src/main/resources/addresources/values-es-rES/strings.xml b/src/main/resources/addresources/values-es-rES/strings.xml
index ee02be6c8..ee8e7ba5b 100644
--- a/src/main/resources/addresources/values-es-rES/strings.xml
+++ b/src/main/resources/addresources/values-es-rES/strings.xml
@@ -33,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
- ReVanced
¿Desea continuar?
Restablecer
Actualizar y reiniciar
@@ -248,7 +247,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Palabra clave inválida. No se puede usar: \'%s\' como filtro
Palabra clave no válida. \'%1$s\' es menor de %2$d caracteres
- La palabra clave \'$s\' oculta todos los vídeos
+ La palabra clave \'%s\' oculta todos los vídeos
Ocultar anuncios generales
@@ -993,6 +992,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
El color de la barra de ajustes
Valor de color de la barra de búsqueda inválido. Usando el valor por defecto.
+
+ Restricciones de región de imagen bypass
+ Usando host de imagen yt4.ggpht.com
+ Utilizando el host de imágenes original\n\nHabilitar esto puede arreglar las imágenes faltantes que están bloqueadas en algunas regiones
+
Pestaña
diff --git a/src/main/resources/addresources/values-et-rEE/strings.xml b/src/main/resources/addresources/values-et-rEE/strings.xml
index 7f793cfe6..451fa26d3 100644
--- a/src/main/resources/addresources/values-et-rEE/strings.xml
+++ b/src/main/resources/addresources/values-et-rEE/strings.xml
@@ -209,6 +209,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-eu-rES/strings.xml b/src/main/resources/addresources/values-eu-rES/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-eu-rES/strings.xml
+++ b/src/main/resources/addresources/values-eu-rES/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-fa-rIR/strings.xml b/src/main/resources/addresources/values-fa-rIR/strings.xml
index e86551b57..de5e8a1f1 100644
--- a/src/main/resources/addresources/values-fa-rIR/strings.xml
+++ b/src/main/resources/addresources/values-fa-rIR/strings.xml
@@ -207,6 +207,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-fi-rFI/strings.xml b/src/main/resources/addresources/values-fi-rFI/strings.xml
index 1b31d9234..a4ee981a1 100644
--- a/src/main/resources/addresources/values-fi-rFI/strings.xml
+++ b/src/main/resources/addresources/values-fi-rFI/strings.xml
@@ -34,23 +34,23 @@ This is because Crowdin requires temporarily flattening this file and removing t
ReVanced
- Haluatteko te jatkaa sitä?
+ Haluatko jatkaa?
Palauta
Päivitä ja käynnistä uudelleen
- Käynnistä Uudelleen
+ Käynnistä uudelleen
Tuo
Kopioi
- Peruutetut asetukset nollattu oletukseksi
+ Revanced asetukset palautettu oletukseksi
Tuotu %d asetukset
Tuonti epäonnistui: %s
MicroG GmsCore ei ole asennettu. Asenna se.
- Tarvittavat toimet
- MicroG GmsCorella ei ole oikeutta ajaa taustalla.\n\nNoudata puhelimeesi \"Älä tapa sovellustani\" -opasta ja käytä ohjeita MicroG-asennukseen.\n\nTämä on tarpeen, jotta sovellus toimisi.
+ Vaatii toimenpiteitä
+ MicroG GmsCorella ei ole oikeutta olla päällä taustalla.\n\nNoudata puhelimesi \"Don\'t kill my app\" -opasta ja käytä ohjeita MicroG-asennukseen.\n\nTämä on tarpeen, jotta sovellus toimisi.
Avaa sivusto
- MicroG GmsCore akun optimointi on estettävä ongelmien välttämiseksi.\n\nNapauta jatkonäppäintä ja poista akun optimointi käytöstä.
+ MicroG GmsCoren akun optimointi on estettävä ongelmien välttämiseksi.\n\nNapauta jatka-näppäintä ja poista akun optimointi käytöstä.
Jatka
@@ -59,47 +59,47 @@ This is because Crowdin requires temporarily flattening this file and removing t
ReVanced
Käytät ReVanced Patches versiota <i>%s</i>
Huomautus
- Tämä versio on pre-release ja voit kokea odottamattomia ongelmia
+ Tämä versio on ennakkojulkaisuversio, joten voit kokea odottamattomia ongelmia
Viralliset linkit
Tuo / Vie
- Tuo / vie peruutetut asetukset
+ Tuo / Vie ReVanced asetukset
Tietoja
Mainokset
Vaihtoehtoiset pikkukuvat
Syöte
- Pelaaja
+ Soitin
Yleinen asettelu
- Seekbar
+ Liukusäädin
Pyyhkäisyohjaimet
Sekalaiset
Video
- Vianselvitys
+ Vianetsintä
Ota käyttöön tai poista käytöstä vianetsintäasetukset
- Vianetsintä lokiin
- Vianjäljityslokit ovat käytössä
- Vianjäljityslokit ovat pois päältä
+ Vianetsintätietojen kirjaaminen
+ Vianetsintälokit ovat käytössä
+ Vianetsintälokit ovat poistettu käytöstä
Loki protokollan puskuri
- Vianjäljityslokit sisältävät proto-puskurin
- Virheenkorjauslokit eivät sisällä proto-puskuria
+ Vianetsintälokit sisältävät proto-puskurin
+ Vianetsintälokit eivät sisällä proto-puskuria
Loki pinojäljet
- Debug lokit sisältävät pino jälki
- Debug lokit eivät sisällä pino jälki
- Näytä paahtoleipä, kun peruutettu virhe
- Toast näkyy, jos virhe tapahtuu
- Toastia ei näytä, jos tapahtui virhe
- Virhe poistamalla paastot piilottaa kaikki peruutetut virheilmoitukset.\n\nSinulle ei ilmoiteta odottamattomista tapahtumista.
+ Vianetsintälokit sisältävät pinojäljet
+ Vianetsintälokit eivät sisällä pinojälkiä
+ Näytä ponnahdusilmoitus kun ReVanced virhe tapahtuu
+ Ponnahdusilmoitus näkyy, jos tapahtuu virhe
+ Ponnahdusilmoitusta ei näytetä, jos tapahtuu virhe
+ Virhe ponnahdusilmoitusten pois päältä laittaminen piilottaa kaikki ReVanced virheilmoitukset.\n\nSinulle ei ilmoiteta odottamattomista tapahtumista.
- Poista käytöstä kuten / tilaus-painike hehku
- Tykkää- ja tilauspainike ei hehku kun mainittu
- Tykkää ja tilaus painike hehkuu kun mainittu
+ Poista käytöstä tykkäys / tilaus-painikeen hehku
+ Tykkää- ja tilauspainike ei hehku kun se mainitaan
+ Tykkää- ja tilauspainike hehkuu kun se mainitaan
Piilota harmaa erotin
- Harmaa erottimet on piilotettu
- Harmaa erottimet näytetään
+ Harmaat erottimet ovat piilossa
+ Harmaat erottimet näytetään
Piilota kanavan vesileima
Vesileima on piilotettu
Vesileima näytetään
@@ -112,114 +112,114 @@ This is because Crowdin requires temporarily flattening this file and removing t
Painike on piilotettu
Painike näytetään
- Piilota \'Sinulle\' hylly kanavan sivulla
+ Piilota \'Sinulle\' hylly kanavasivulla
Hylly on piilotettu
- Kestohylly näytetään
+ Hylly näytetään
Piilota \'Ilmoita minulle\' -painike
Painike on piilotettu
Painike näytetään
- Piilota \'Ihmiset myös katselevat\' suosituksia
+ Piilota \'Ihmiset myös katselevat\' -suositukset
Suositukset on piilotettu
- Suositukset esitetään
+ Suositukset näytetään
- Piilota \'Näytä lisää\' painike
+ Piilota \'Näytä lisää\' -painike
Painike on piilotettu
Painike näytetään
Piilota ajoitetut reaktiot
Ajoitetut reaktiot on piilotettu
- Ajoitetut reaktiot on esitetty
- Piilota hakutuloksen hyllyn otsikko
+ Ajoitetut reaktiot näytetään
+ Piilota hakutuloksen hyllyn ylätunniste
Hyllyn ylätunniste on piilotettu
- Hyllyn otsake näytetään
+ Hyllyn ylätunniste näytetään
Piilota kanavan ohjeet
Kanavan ohjeet on piilotettu
Kanavan ohjeet näytetään
Piilota laajennettava siru videoiden alla
- Laajennettavat pelimerkit on piilotettu
- Laajennettavat pelimerkit näytetään
+ Laajennettavat sirut on piilotettu
+ Laajennettavat sirut näytetään
Piilota videon laatuvalikon alatunniste
- Videon laatu valikon alatunniste on piilotettu
- Videon laatu valikon alatunniste näytetään
- Piilota yhteisön viestit
- Yhteisön virat on piilotettu
- Yhteisön virat näytetään
- Piilota pienikokoiset mainospalkit
- Kompakti mainospalkit on piilotettu
- Kompakti mainospalkit näytetään
- Piilota elokuvien osio
- Elokuvien osio on piilotettu
- Elokuvien osio on esitetty
- Piilota rehututkimukset
- Syöttötutkimukset ovat piilotettuja
- Rehututkimukset on esitetty
+ Videon laatuvalikon alatunniste on piilotettu
+ Videon laatuvalikon alatunniste näytetään
+ Piilota yhteisöpostaukset
+ Yhteisöpostaukset on piilotettu
+ Yhteisöpostaukset näytetään
+ Piilota kompaktit bannerit
+ Kompaktit bannerit on piilotettu
+ Kompaktit bannerit näytetään
+ Piilota elokuvat-osio
+ Elokuvat-osio on piilotettu
+ Elokuvat-osio näytetään
+ Piilota syötteen kyselyt
+ Syötteen kyselyt ovat piilotettu
+ Syötteen kyselyt näytetään
Piilota yhteisön ohjeet
- Yhteisön suuntaviivat on piilotettu
- Yhteisön suuntaviivat esitetään
+ Yhteisön ohjeet on piilotettu
+ Yhteisön ohjeet näytetään
Piilota tilaajien yhteisön ohjeet
- Tilaajat yhteisön ohjeet on piilotettu
- Tilaajat yhteisön ohjeet näytetään
- Piilota kanavan jäsenen hylly
- Kanavan jäsen hylly on piilotettu
- Kanavan jäsenen hylly näytetään
- Piilota hätälaatikot
- Hätätilanteet on piilotettu
- Hätätilanteet näytetään
+ Tilaajien yhteisön ohjeet on piilotettu
+ Tilaajien yhteisön ohjeet näytetään
+ Piilota kanavan jäsen -hylly
+ Kanavan jäsen -hylly on piilotettu
+ Kanavan jäsen -hylly näytetään
+ Piilota hätätilannelaatikot
+ Hätätilannelaatikot on piilotettu
+ Hätätilannelaatikot näytetään
Piilota infopaneelit
- Tietopaneelit on piilotettu
- Tietopaneelit näytetään
+ Infopaneelit on piilotettu
+ Infopaneelit näytetään
Piilota lääketieteelliset paneelit
Lääketieteelliset paneelit on piilotettu
- Lääkinnälliset paneelit on esitetty
+ Lääketieteelliset paneelit näytetään
Piilota kanavapalkki
Kanavapalkki on piilotettu
Kanavapalkki näytetään
- Piilota Soittoesineet
- Soittovälineet on piilotettu
- Soittovälineet näytetään
- Piilota pikatoiminnot koko näytössä
- Nopeat toiminnot on piilotettu
- Nopeat toiminnot näytetään
- Piilota liittyvät videot nopeissa toiminnoissa
+ Piilota Playables
+ Playables on piilotettu
+ Playables näytetään
+ Piilota pikatoiminnot koko näytön tilassa
+ Pikatoiminnot on piilotettu
+ Pikatoiminnot näytetään
+ Piilota liittyvät videot pikatoiminnoissa
Liittyvät videot on piilotettu
Liittyvät videot näytetään
- Piilota kuvan hylly hakutuloksissa
- Kuvan hylly on piilotettu
- Kuvan hylly näytetään
- Piilota uusimmat viestit
- Viimeisimmät viestit on piilotettu
- Viimeisimmät viestit näytetään
- Piilota sekoitussoittolistat
- Sekoita soittolistoja piilotettu
- Sekoita soittolistoja näytetään
- Piilota esittäjän kortit
- Artistin kortit on piilotettu
- Esittäjän kortit näytetään
- Piilota sirut
- Chips hylly on piilotettu
- Chips hylly on näkyvissä
- Piilota attribuuttien osio
- \'Esillä olevia paikkoja\', Pelit ja Musiikin osat on piilotettu
- \'Suositeltuja paikkoja\', Pelit ja Musiikki osiot näytetään
- Piilota luvun osio
- Luvun osio on piilotettu
- Lukujen jakso näytetään
- Piilota \'Tutki podcast\' -osio
- \'Tutki podcast\' -osiota on piilotettu
- \'Tutki podcast\' -osiota näytetään
+ Piilota kuvahylly hakutuloksissa
+ Kuvahylly on piilotettu
+ Kuvahylly näytetään
+ Piilota uusimmat postaukset
+ Uusimmat postaukset on piilotettu
+ Uusimmat postaukset näytetään
+ Piilota mix-soittolistat
+ Mix-soittolistat piilotettu
+ Mix-soittolistat näytetään
+ Piilota artistikortit
+ Artistikortit on piilotettu
+ Artistikortit näytetään
+ Piilota siruhylly
+ Siruhylly on piilotettu
+ Siruhylly näytetään
+ Piilota attribuutit osio
+ \'Paikat\', Pelit ja Musiikki -osiot on piilotettu
+ \'Paikat\', Pelit ja Musiikki -osiot näytetään
+ Piilota Osat osio
+ Osat osio on piilotettu
+ Osat osio näytetään
+ Piilota \'Tutki podcastia\' -osio
+ \'Tutki podcastia\' -osio on piilotettu
+ \'Tutki podcastia\' -osio näytetään
Piilota infokorttien osio
- Tietokorttien osio on piilotettu
- Tietoa korteista -osio näytetään
- Piilota Transkriptiosio
- Transkriptiosio on piilotettu
- Transkriptiosio näytetään
+ Infokorttien osio on piilotettu
+ Infokorttien osio näytetään
+ Piilota Transkriptio-osio
+ Transkriptio-osio on piilotettu
+ Transkriptio-osio näytetään
Videon kuvaus
- Piilota tai näytä videon kuvauskomponentit
+ Piilota tai näytä videon kuvauskomponentteja
Mukautettu suodatin
- Piilota komponentit käyttämällä mukautettuja suodattimia
+ Piilota komponentteja käyttämällä mukautettuja suodattimia
Käytä mukautettua suodatinta
Mukautettu suodatin on käytössä
Mukautettu suodatin on pois käytöstä
@@ -228,27 +228,27 @@ This is because Crowdin requires temporarily flattening this file and removing t
Luettelo komponentin polun rakentajan merkkijonoista suodatettavaksi uudella rivillä erotettuna
Virheellinen mukautettu suodatin: %s
Piilota avainsanan sisältö
- Piilota haku- ja syötevideot avainsanasuodattimilla
- Piilota kotivideot avainsanojen mukaan
+ Piilota haku- ja syötevideoita avainsanasuodattimilla
+ Piilota koti videoita avainsanojen mukaan
Koti-välilehdessä olevat videot suodatetaan avainsanojen mukaan
- Koti-välilehdessä olevat videot eivät ole avainsanojen mukaan suodatettuja
- Piilota tilausvideot avainsanojen mukaan
- Tilausten välilehdessä olevat videot suodatetaan avainsanojen avulla
- Tilausten välilehdessä olevat videot eivät ole avainsanojen mukaan suodatettuja
+ Koti-välilehdessä olevat videot ei suodateta avainsanojen mukaan
+ Piilota tilaukset videot avainsanojen mukaan
+ Tilaukset-välilehdessä olevat videot suodatetaan avainsanojen avulla
+ Tilaukset-välilehdessä olevat videot ei suodateta avainsanojen avulla
Piilota hakutulokset avainsanojen mukaan
Hakutulokset suodatetaan avainsanojen mukaan
Hakutuloksia ei suodateta avainsanojen mukaan
Piilotetut avainsanat
- Piilotettavia avainsanoja ja lauseita, erotettuna uusilla riveillä\n\nKeskellä olevat isot kirjaimet on syötettävä kotelon kanssa (esim. iPhone, TikTok, LeBlanc)
+ Piilotettavia avainsanoja ja lauseita, erotettuna uusilla riveillä\n\nKeskellä olevat isot kirjaimet on syötettävä niin kuin ne on sanassa (esim. iPhone, TikTok, LeBlanc)
Tietoja avainsanan suodatuksesta
- Etusivu/Tilaus / Hakutulokset suodatetaan piilottaaksesi sisällön, joka vastaa avainsanalausekkeita\n\nRajoitukset\n• Joitakin Shortteja ei välttämättä ole piilotettu\n• Joitakin käyttöliittymän komponentteja ei välttämättä ole piilotettu\n• Hakusanan haku ei välttämättä näytä tuloksia
+ Koti/Tilaukset/Hakutulokset suodatetaan ja piilotetaan avainsanalauseita käyttäen\n\nRajoitukset\n• Joitakin Shortteja ei välttämättä piiloteta\n• Joitakin käyttöliittymän komponentteja ei välttämättä piiloteta\n• Avainsanan haku ei välttämättä näytä tuloksia
Virheellinen avainsana. Ei voida käyttää: \'%s\' suodattimena
Virheellinen avainsana. \'%1$s\' on pienempi kuin %2$d merkkiä
- Avainsana \'$s\' piilottaa kaikki videot
+ Avainsana \'%s\' piilottaa kaikki videot
Piilota yleiset mainokset
@@ -257,38 +257,38 @@ This is because Crowdin requires temporarily flattening this file and removing t
Piilota koko näytön mainokset
Koko näytön mainokset on piilotettu\n\nTämä ominaisuus on käytettävissä vain vanhemmille laitteille
Koko näytön mainokset näytetään
- Piilota painettavat mainokset
- Painatut mainokset on piilotettu
- Painatut mainokset näytetään
- Piilota maksullinen kampanjan etiketti
- Maksullinen edistäminen merkki on piilotettu
- Maksullinen myynninedistämismerkintä on esitetty
- Piilota itse sponsoroidut kortit
- Itse sponsoroitu kortit ovat piilotettuja
- Itse sponsoroidut kortit näytetään
- Piilota mainospalkki nähdäksesi tuotteet
+ Piilota napilliset mainokset
+ Napilliset mainokset on piilotettu
+ Napilliset mainokset näytetään
+ Piilota maksetun mainostuksen tunniste
+ Maksetun mainostuksen tunniste on piilotettu
+ Maksetun mainostuksen tunniste näytetään
+ Piilota itse-sponsoroidut kortit
+ Itse-sponsoroidut kortit ovat piilotettu
+ Itse-sponsoroidut kortit näytetään
+ Piilota banneri nähdäksesi tuotteet
Banneri on piilotettu
- Mainospalkki näytetään
+ Banneri näytetään
Piilota ostos-linkit videon kuvauksessa
Ostoslinkit on piilotettu
Ostoslinkit näytetään
- Piilota \'Vieraile kaupassa\' -painike kanavien sivuilla
+ Piilota \'Vieraile kaupassa\' -painike kanavasivuilla
Painike on piilotettu
Painike näytetään
- Piilota web-hakutulokset
- Web-hakutulokset on piilotettu
- Web-hakutulokset on esitetty
+ Piilota verkkohakutulokset
+ Verkkohakutulokset on piilotettu
+ Verkkohakutulokset näytetään
Piilota mainospalkit
- Merkkimainospalkit on piilotettu
- Myymälämainospalkit näytetään
+ Mainospalkit on piilotettu
+ Mainospalkit näytetään
- Piilota koko näytön mainokset toimivat vain vanhempien laitteiden kanssa
+ Piilota koko näytön mainokset toimii vain vanhemmilla laitteilla
- Piilota YouTube Premium-tarjoukset
- YouTube Premium -kampanjat videosoittimen alla on piilotettu
- YouTube Premium -kampanjat videosoittimen alla näytetään
+ Piilota YouTube Premium -tarjoukset
+ YouTube Premium -tarjoukset videosoittimen alla on piilotettu
+ YouTube Premium -tarjoukset videosoittimen alla näytetään
Piilota videomainokset
@@ -298,70 +298,70 @@ This is because Crowdin requires temporarily flattening this file and removing t
URL kopioitu leikepöydälle
URL aikaleimalla kopioitu
- Näytä kopio videon URL-osoite painike
- Painike on näkyvissä. Paina kopioidaksesi videon URL-osoitteen. Voit kopioida videon URL-osoitetta painamalla aikaleima
- Painikkeita ei näytetä
- Näytä kopion aikaleima URL painike
- Painike on näkyvissä. Paina kopioidaksesi videon URL-osoitteen aikaleimalla. Kopioi video ilman aikaleimaa napauttamalla ja pitämällä pohjassa
- Painikkeita ei näytetä
+ Näytä kopioi videon URL-osoite painike
+ Painike on näkyvissä. Napauta kopioidaksesi videon URL-osoitteen. Paina ja pidä pohjassa kopioidaksesi URL-osoiteen aikaleimalla
+ Painiketta ei näytetä
+ Näytä kopioi aikaleima URL-osoite painike
+ Painike on näkyvissä. Napauta kopioidaksesi videon URL-osoitteen aikaleimalla. Paina ja pidä pohjassa kopioidaksesi URL-osoiteen ilman aikaleimaa
+ Painiketta ei näytetä
Poista katsojan harkinta-valintaikkuna
- Dialogi poistetaan
- Dialogi näytetään
- Tämä ei ohita ikärajoitusta. Se hyväksyy sen automaattisesti.
+ Valintaikkuna poistetaan
+ Valintaikkuna näytetään
+ Tämä ei ohita ikärajoitusta. Se vain hyväksyy sen automaattisesti.
Ulkoiset lataukset
Asetukset ulkoisen lataajan käyttämiselle
- Näytä ulkoinen latauspainike
- Lataa painike näytetään soittimessa
- Lataa-painiketta ei näytetä soittimessa
+ Näytä ulkoinen lataus -painike
+ Latauspainike näytetään soittimessa
+ Latauspainiketta ei näytetä soittimessa
- Ohita lataustoiminto painike
- Lataa-painike avaa ulkoisen lataajan
- Lataa-painike avaa natiivin sovelluksen sisäisen lataajan
+ Korvaa lataustoiminto painike
+ Latauspainike avaa ulkoisen lataajan
+ Latauspainike avaa natiivin sovelluksen sisäisen lataajan
Lataajan paketin nimi
- Paketin nimi asennetulle ulkoiselle lataussovelluksellesi, kuten NewPipe tai Seal
+ Ulkoisen lataussovelluksesi, kuten NewPipen tai Sealin, paketin nimi
%s ei ole asennettu. Asenna se.
Poista tarkka haku ele käytöstä
- Eleet on poistettu käytöstä
+ Ele on poistettu käytöstä
Ele on käytössä
- Ota käyttöön seekbar napautus
- Seekbar napautus on käytössä
- Seekbarin napauttaminen pois käytöstä
+ Ota käyttöön liukusäätimen napautus
+ Liukusäätimen napautus on käytössä
+ Liukusäätimen napautus on pois käytöstä
Ota kirkkauden ele käyttöön
Kirkkauden pyyhkäisy on käytössä
Kirkkauden pyyhkäisy pois päältä
- Ota äänenvoimakkuus käyttöön
+ Ota äänenvoimakkuuden ele käyttöön
Äänenvoimakkuuden pyyhkäisy on käytössä
- Äänenvoimakkuuden pyyhkäisy pois päältä
- Ota käyttöön painallus-pyyhkäisy ele
- Pyyhkäisy painamalla on käytössä
- Pyyhkäisy painamalla pois päältä
+ Äänenvoimakkuuden pyyhkäisy on pois käytöstä
+ Ota käyttöön pyyhkäisy painamalla ele
+ Pyyhkäisy painamalla ele on käytössä
+ Pyyhkäisy painamalla ele on pois käytöstä
Ota haptinen palaute käyttöön
Haptinen palaute on käytössä
- Haptinen palaute on poistettu käytöstä
+ Haptinen palaute on pois käytöstä
Tallenna ja palauta kirkkaus
- Tallenna ja palauta kirkkaus kokoruututilaan poistuttaessa tai siirryttäessä
- Älä tallenna tai palauta kirkkautta kokoruututilaan poistuttaessa tai siirryttäessä
- Ota käyttöön automaattinen kirkkauden ele
+ Tallenna ja palauta kirkkaus kokoruututilasta poistuttaessa tai siihen siirryttäessä
+ Älä tallenna tai palauta kirkkautta kokoruututilasta poistuttaessa tai siihen siirryttäessä
+ Ota käyttöön automaattisen kirkkauden ele
Automaattinen kirkkaus otetaan käyttöön pyyhkäisemällä alhaisimpaan arvoon
Pienimpään arvoon alas pyyhkäiseminen ei ota käyttöön automaattista kirkkautta
Automaattinen
- Pyyhkäise peittoalueen aikakatkaisu
- Mllisekuntien määrä on näkyvissä
- Pyyhkäise peittokuvan tekstin koko
- Tekstin koko pyyhkäisemällä peittokuva
- Taustan näkyvyys pyyhkäisemällä
- Pyyhkäisyn peittoalueen taustan näkyvyys
- Pyyhkäise suuruusluokka
+ Pyyhkäisyikkunan aikakatkaisu
+ Millisekuntien määrä jolloin ikkuna on näkyvissä
+ Pyyhkäisyikkunan tekstin koko
+ Tekstin koko pyyhkäisyikkunassa
+ Pyyhkäisyn taustan näkyvyys
+ Pyyhkäisyn ikkunan taustan näkyvyys
+ Pyyhkäisyn kynnysraja
Pyyhkäisyä varten tarvittavan kynnyksen määrä
@@ -370,59 +370,59 @@ This is because Crowdin requires temporarily flattening this file and removing t
Automaattiset kuvatekstit ovat käytössä
- Toiminnon painikkeet
+ Toimintopainikkeet
Piilota tai näytä painikkeet videoiden alla
- Piilota Tykkää ja vastenmielistä
- Tykkää ja tykkääkää painikkeista on piilotettu
- Tykkää ja pidä painikkeista näytetään
+ Piilota Tykkää ja Älä tykkää
+ Tykkää ja Älä tykkää -painikkeet on piilotettu
+ Tykkää ja Älä tykkää -painikkeet näytetään
- Piilota Jaa
+ Piilota jaa
Jaa-painike on piilotettu
- Jakamispainike näytetään
+ Jaa-painike näytetään
- Piilota Raportti
- Raporttipainike on piilotettu
- Raporttipainike näytetään
+ Piilota Tee ilmoitus
+ Tee ilmoitus -painike on piilotettu
+ Tee ilmoitus -painike näytetään
Piilota Remix
Remix-painike on piilotettu
Remix-painike näytetään
Piilota Lataus
- Lataa-painike on piilotettu
- Lataa-painike näytetään
+ Latauspainike on piilotettu
+ Latauspainike näytetään
Piilota Kiitos
Kiitos painike on piilotettu
Kiitos painike näytetään
- Hide Clip
- Clip painike on piilotettu
- Clip painike näytetään
+ Piilota Klippi
+ Klippi painike on piilotettu
+ Klippi painike näytetään
Piilota Tallenna soittolistalle
- Tallenna soittolista-painikkeeseen on piilotettu
- Tallenna soittolista-painike näytetään
+ Tallenna soittolistalle -painike on piilotettu
+ Tallenna soittolistalle-painike näytetään
- Piilota automaattinen toisto painike
+ Piilota automaattisen toiston painike
Automaattisen toiston painike on piilotettu
Automaattisen toiston painike näytetään
- Piilota kuvatekstien painike
- Tekstityspainike on piilotettu
- Kuvatekstien painike näytetään
+ Piilota tekstitykset painike
+ Tekstitykset painike on piilotettu
+ Tekstitykset painike näytetään
- Piilota cast painike
- Cast painike on piilotettu
- Suora-painiketta näytetään
+ Piilota striimaus painike
+ Striimaus painike on piilotettu
+ Striimaus painike näytetään
- Navigation buttons
+ Navigointipainikkeet
Piilota tai vaihda painikkeita navigointipalkissa
Piilota Koti
@@ -438,120 +438,120 @@ This is because Crowdin requires temporarily flattening this file and removing t
Luo painike näytetään
Piilota Tilaukset
- Tilauksen painike on piilotettu
+ Tilaukset painike on piilotettu
Tilaukset painike näytetään
- Vaihda Luo ilmoituksilla
- Luo painike on vaihdettu Ilmoituspainikkeella\n\nHuom: Tämän käyttöönotto kätkee myös video-mainokset väkisin
- Luo painike ei ole vaihdettu Ilmoituspainikkeella
- Piilota navigointipainikkeiden otsikot
+ Vaihda Luo ja Ilmoitukset
+ Luo painike on vaihdettu Ilmoituspainikkeen kanssa\n\nHuom: Tämän käyttöönotto kätkee myös video-mainokset väkisin
+ Luo painike ei ole vaihdettu Ilmoituspainikkeen kanssa
+ Piilota navigointipainikkeiden tunnisteet
Tunnisteet piilotettu
Tunnisteet näytetään
- Piilota edellinen & seuraavat video-painikkeet
+ Piilota edellinen & seuraava video -painikkeet
Painikkeet on piilotettu
Painikkeet näytetään
- Piilota albumin kortit
- Albumin kortit on piilotettu
- Albumin kortit näytetään
+ Piilota albumikortit
+ Albumikortit ovat piilossa
+ Albumikortit näytetään
Piilota joukkorahoitus laatikko
Joukkorahoituslaatikko on piilotettu
- Joukkorahoitus laatikko on esitetty
+ Joukkorahoituslaatikko näytetään
- Piilota lopulliset näytöt
- Näytön loppu kortit on piilotettu
- Näytettävät loppunäytöt näytetään
+ Piilota loppunäytön kortit
+ Loppunäytön kortit on piilotettu
+ Loppunäytön kortit näytetään
- Suodata palkki
- Piilota tai näytä suodatinpalkki syötteessä, haussa ja siihen liittyvissä videoissa
+ Suodatuspalkki
+ Piilota tai näytä suodatinpalkki syötteessä, haussa ja liittyvissä videoissa
Piilota syötteessä
Piilotettu syötteessä
Näytetään syötteessä
Piilota haussa
Piilotettu haussa
Näytetään haussa
- Piilota asiaan liittyvissä videoissa
- Piilotettu aiheeseen liittyvissä videoissa
- Näytetään aiheeseen liittyvissä videoissa
+ Piilota liittyvissä videoissa
+ Piilotettu liittyvissä videoissa
+ Näytetään liittyvissä videoissa
Piilota kelluva mikrofoni painike
- Mikrofonin painike piilotettu
- Mikrofonin painike näytetään
+ Mikrofonipainike piilotettu
+ Mikrofonipainike näytetään
Poista ympäristötila käytöstä kokoruututilassa
@@ -695,16 +695,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
Prosentteina näytetyt tykkäät
Ei tykkää näytetään numerona
- Kompakti kaltainen painike
+ Kompakti tykkäyspainike
Tykkää näppäintä tyyliteltynä minimileveydelle
Tykkää painike tyyliteltynä parhaaseen ulkonäköön
- Näytä paahtoleipä, jos API ei ole käytettävissä
- Ponnahdus näytetään, jos Return YouTube Dislike ei ole käytettävissä
- Toastia ei näytetä, jos Return YouTube Dislike ei ole käytettävissä
+ Näytä ponnahdusilmoitus, jos API ei ole käytettävissä
+ Ponnahdusilmoitus näytetään, jos Return YouTube Dislike ei ole käytettävissä
+ Ponnahdusilmoitusta ei näytetä, jos Return YouTube Dislike ei ole käytettävissä
Tietoja
Tiedot on toimittanut Return YouTube Dislike API. Napauta tästä lukeaksesi lisää
- ReturnYouTubeDislike API tilastot tämän laitteen
+ Tämän laitteen ReturnYouTubeDislike API tilastot
API-vasteaika, keskiarvo
API:n vasteaika, minimi
API vasteaika, maksimi
@@ -732,157 +732,157 @@ This is because Crowdin requires temporarily flattening this file and removing t
Seekbar pikkukuvat näkyvät koko näytössä
Spoof app versio
@@ -958,7 +958,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Yhteisön viestit eivät näy tablet-asetteluissa
- Miniplayer
+ Minisoitin
Muuta sovelluksen tyyliä pienennettynä pelaajalla
Pienoissoittimen tyyppi
Alkuperäinen
@@ -993,6 +993,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
The color of the seekbar
Virheellinen seekbarin väriarvo. Käytetään oletusarvoa.
+
+ Ohita kuvan alueen rajoitukset
+ Käyttämällä kuvan isäntä yt4.ggpht.com
+
Etusivu välilehti
@@ -1007,9 +1011,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
DeArrow- ja Still-kaappaukset
Kaappaa edelleen
DeArrow tarjoaa joukkoon hankittuja pikkukuvia YouTube-videoille. Nämä pikkukuvat ovat usein merkityksellisempiä kuin YouTube\n\nJos käytössä, videon URL-osoitteet lähetetään API-palvelimelle, eikä muita tietoja ole lähetetty. Jos videossa ei ole DeArrow pikkukuvia, sitten alkuperäiset tai vielä kaappaukset näytetään\n\nNapauta tästä saadaksesi lisätietoja DeArrowista
- Näytä paahtoleipä, jos API ei ole käytettävissä
- Toast näytetään, jos DeArrow ei ole käytettävissä
- Toastia ei näytetä, jos DeArrow ei ole käytettävissä
+ Näytä ponnahdusilmoitus, jos API ei ole käytettävissä
+ Ponnahdusilmoitus näytetään, jos DeArrow ei ole käytettävissä
+ Ponnahdusilmoitusta ei näytetä, jos DeArrow ei ole käytettävissä
DeArrow API endpoint
DeArrow thumbnail -välimuistin päätepisteen URL
Yhä videon kaappaukset
@@ -1103,7 +1107,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Vanhaa videon laatuvalikkoa ei näytetä
- Ota dia käyttöön etsiäksesi
+ Ota liu\'uta etsiäksesi käyttöön
Liu\'uta etsiäksesi on käytössä
Liu\'uta etsiäksesi ei ole käytössä
diff --git a/src/main/resources/addresources/values-fil-rPH/strings.xml b/src/main/resources/addresources/values-fil-rPH/strings.xml
index e8ce1f790..86d3e04e7 100644
--- a/src/main/resources/addresources/values-fil-rPH/strings.xml
+++ b/src/main/resources/addresources/values-fil-rPH/strings.xml
@@ -243,7 +243,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Di-wastong keyword. Hindi magagamit ang: \"%s\" bilang filter
Di-wastong keyword. Ang \"%1$s\" ay mas mababa sa %2$d character
- Itatago ng keyword na \"$s\" ang lahat ng video
+ Itatago ng keyword na \"%s\" ang lahat ng video
Itago ang mga pangkalahatang ad
@@ -974,6 +974,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Ang kulay ng seekbar
Di-wastong halaga ng kulay ng seekbar. Gamit ang default na halaga.
+
+
Tab ng tahanan
diff --git a/src/main/resources/addresources/values-fr-rFR/strings.xml b/src/main/resources/addresources/values-fr-rFR/strings.xml
index 448a3c877..866fbebfc 100644
--- a/src/main/resources/addresources/values-fr-rFR/strings.xml
+++ b/src/main/resources/addresources/values-fr-rFR/strings.xml
@@ -248,7 +248,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Mot-clé invalide. Impossible d\'utiliser : \'%s\' comme filtre
Mot-clé invalide. \'%1$s\' contient moins de %2$d caractères
- Le mot-clé \'$s\' masquera toutes les vidéos
+ Le mot-clé «%s» masquera toutes les vidéos
Masquer les pubs générales
@@ -992,6 +992,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
La couleur de la barre de recherche
Valeur de couleur de la barre de recherche invalide.
+
+ Ignorer les restrictions de région de l\'image
+ Utiliser l\'hôte d\'image yt4.ggpht.com
+ Utiliser l\'hôte d\'image original\n\nActiver ceci peut corriger les images manquantes qui sont bloquées dans certaines régions
+
Onglet d\'accueil
diff --git a/src/main/resources/addresources/values-gl-rES/strings.xml b/src/main/resources/addresources/values-gl-rES/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-gl-rES/strings.xml
+++ b/src/main/resources/addresources/values-gl-rES/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-gu-rIN/strings.xml b/src/main/resources/addresources/values-gu-rIN/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-gu-rIN/strings.xml
+++ b/src/main/resources/addresources/values-gu-rIN/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-hi-rIN/strings.xml b/src/main/resources/addresources/values-hi-rIN/strings.xml
index 15e93d94a..9276d3080 100644
--- a/src/main/resources/addresources/values-hi-rIN/strings.xml
+++ b/src/main/resources/addresources/values-hi-rIN/strings.xml
@@ -206,6 +206,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-hr-rHR/strings.xml b/src/main/resources/addresources/values-hr-rHR/strings.xml
index 40207dfb9..c91542961 100644
--- a/src/main/resources/addresources/values-hr-rHR/strings.xml
+++ b/src/main/resources/addresources/values-hr-rHR/strings.xml
@@ -210,6 +210,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-hu-rHU/strings.xml b/src/main/resources/addresources/values-hu-rHU/strings.xml
index c1d354091..8e553f4d9 100644
--- a/src/main/resources/addresources/values-hu-rHU/strings.xml
+++ b/src/main/resources/addresources/values-hu-rHU/strings.xml
@@ -93,6 +93,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
A hibaüzenetek kikapcsolása elrejti az összes ReVanced hibaértesítést.\n\nNem kap értesítést semmilyen váratlan eseményről.
+ Like / feliratkozás gomb ragyogásának kikapcsolása
+ Like / feliratkozás gomb nem fog ragyogni mikor megemlítik
+ Like / feliratkozás gomb ragyogni fog mikor megemlítik
Szürke elválasztó elrejtése
A szürke elválasztók el vannak rejtve
A szürke elválasztók láthatóak
@@ -244,7 +247,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Érvénytelen kulcsszó.\'%s\'nem használható szűrőként
Helytelen kulcsszó. \'%1$s\' kevesebb, mint %2$d karakter
- \'$s\' kulcsszó elrejti az összes videót
+ \'%s\' kulcsszó elrejti az összes videót
Általános hirdetések elrejtése
@@ -989,6 +992,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
A keresősáv színe
Érvénytelen színérték. Az alap érték használata.
+
+
Kezdőlap
@@ -1112,6 +1117,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
A beállítás kikapcsolása videolejátszási problémákat okozhat.
Hamis kliens iOS-re
A kliens jelenleg iOS-re van hamisítva\n\nA mellékhatások a következők:\n• Nincs HDR-videó\n• Előfordulhat, hogy a megtekintési előzmények nem működnek\n• Hiányozhatnak a jobb videóminőségek\n• Az élő közvetítések nem játszhatók le csak hangként\n• Élő a streamek nem érhetők el Android 8.0 rendszeren
+ A kliens jelenleg az Android VR-t utánozza\n\nMellékhatásokkal együtt:\n• Nincs HDR video\n• Nincs \'Kids\' videólejátszás\n• A pillanatmegállított videók véletlenszerűen elindulhatnak\n• Alacsony minőségű Shorts csűszka bélyegképek\n• A letöltés gomb mindig rejtett\n• Videó végi kártyák mindig rejtett
Hamis kliens miniatűrök nem érhetők el (API időtúllépés)
A hamis kliens miniatűrök átmenetileg nem érhetők el: %s
diff --git a/src/main/resources/addresources/values-hy-rAM/strings.xml b/src/main/resources/addresources/values-hy-rAM/strings.xml
index df9280950..a95b0ac5f 100644
--- a/src/main/resources/addresources/values-hy-rAM/strings.xml
+++ b/src/main/resources/addresources/values-hy-rAM/strings.xml
@@ -202,6 +202,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-in-rID/strings.xml b/src/main/resources/addresources/values-in-rID/strings.xml
index d62e17cc1..6d6787911 100644
--- a/src/main/resources/addresources/values-in-rID/strings.xml
+++ b/src/main/resources/addresources/values-in-rID/strings.xml
@@ -99,14 +99,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
Pemisah abu-abu disembunyikan
Pemisah abu-abu ditampilkan
Sembunyikan watermark saluran
- Watermark disembunyikan
+ Tanda air disembunyikan
Watermark ditampilkan
Sembunyikan rak mendatar
Rak berikut disembunyikan:\n• Berita sela\n• Lanjut menonton\n• Jelajahi saluran lain\n• Belanja\n• Tonton lagi
Rak ditampilkan
- Sembunyikan tombol \'Gabung\'
+ Sembunyikan \'Gabung\'
Tombol disembunyikan
Tombol ditampilkan
@@ -115,7 +115,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Rak ditampilkan
- Sembunyikan tombol \'Beri tahu saya\'
+ Sembunyikan \'Beri tahu saya\'
Tombol disembunyikan
Tombol ditampilkan
@@ -124,41 +124,41 @@ This is because Crowdin requires temporarily flattening this file and removing t
Anjuran ditampilkan
- Sembunyikan tombol \'Tampilkan Lebih\'
+ Sembunyikan \'Tampilkan Lebih\'
Tombol disembunyikan
Tombol ditampilkan
Sembunyikan waktu reaksi
Waktu reaksi disembunyikan
Tampilkan Waktu Reaksi
- Sembunyikan header rak hasil pencarian
+ Sembunyikan header rak pencarian
Sembunyikan Shelf Header
Tampilkan Shelf Header
Sembunyikan Panduan Saluran
Panduan saluran disembunyikan
Panduan saluran ditampilkan
-
- Chip yang dapat diperluas disembunyikan
+ Sembunyikan opsi deret di bawah video
+ Opsi deret disembunyikan
Chip yang dapat diperluas ditampilkan
- Sembunyikan footer menu kualitas video
- Footer menu kualitas video disembunyikan
- Footer menu kualitas video ditampilkan
- Sembunyikan postingan komunitas
- Postingan komunitas disembunyikan
+ Sembunyikan footer menu mutu video
+ Footer menu mutu video disembunyikan
+ Footer menu mutu video ditampilkan
+ Sembunyikan post. komunitas
+ Post. komunitas disembunyikan
Postingan komunitas ditampilkan
- Sembunyikan banner padat
- Banner padat disembunyikan
+ Sembunyikan spanduk ringkas
+ Spanduk ringkas disembunyikan
Banner padat ditampilkan
Sembunyikan bagian film
- Bagian film sudah disembunyikan
+ Bagian film disembunyikan
Bagian film ditampilkan
- Sembunyikan survei umpan balik
- Survei umpan balik disembunyikan
+ Sembunyikan survei
+ Survei disembunyikan
Survei umpan balik ditampilkan
Sembunyikan pedoman komunitas
Pedoman komunitas disembunyikan
Pedoman komunitas ditampilkan
- Sembunyikan pedoman komunitas untuk para pelanggan
- Pedoman komunitas untuk para pelanggan disembunyikan
+ Sembunyikan pedoman komunitas pelanggan
+ Pedoman komunitas pelanggan disembunyikan
Pedoman komunitas untuk para pelanggan ditampilkan
Sembunyikan rak anggota saluran
Rak anggota saluran disembunyikan
@@ -166,8 +166,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Sembunyikan kotak darurat
Kotak darurat disembunyikan
Kotak darurat ditampilkan
- Sembunyikan panel informasi
- Panel informasi disembunyikan
+ Sembunyikan panel info
+ Panel info disembunyikan
Panel informasi ditampilkan
Sembunyikan panel medis
Panel medis disembunyikan
@@ -175,8 +175,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Sembunyikan bilah saluran
Bilah saluran disembunyikan
Bilah saluran ditampilkan
- Sembunyikan konten yang dapat diputar
- Konten yang dapat diputar disembunyikan
+ Sembunyikan konten tonton
+ Konten tonton disembunyikan
Yang dapat diputar ditunjukkan
Sembunyikan tindakan cepat di layar penuh
Tindakan cepat disembunyikan
@@ -184,11 +184,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
Sembunyikan video terkait dalam tindakan cepat
Video terkait disembunyikan
Video terkait ditampilkan
- Sembunyikan rak gambar dalam hasil pencarian
+ Sembunyikan rak gambar di pencarian
Rak gambar disembunyikan
Rak gambar ditampilkan
- Sembunyikan kiriman terbaru
- Kiriman terbaru disembunyikan
+ Sembunyikan post. terbaru
+ Post. terbaru disembunyikan
Kiriman terbaru ditampilkan
Sembunyikan daftar putar campuran
Daftar putar campuran disembunyikan
@@ -197,19 +197,19 @@ This is because Crowdin requires temporarily flattening this file and removing t
Kartu artis disembunyikan
Kartu artis ditampilkan
Sembunyikan rak chip
- Rak chip disembunyikan
+ Rak opsi deret disembunyikan
Rak chip ditampilkan
Sembunyikan bagian atribut
- \'Tempat unggulan\', bagian Permainan dan Musik disembunyikan
- \'Tempat unggulan\', bagian Permainan dan Musik ditampilkan
+ \'Tempat menonjol\', \'Permainan\', dan \'Musik\' disembunyikan
+ \'Tempat menonjol\', \'Permainan\', dan \'Musik\' ditampilkan
Sembunyikan bagian Bab
Bagian Bab sudah disembunyikan
Bagian Bab sudah ditampilkan
Sembunyikan bagian \'Jelajahi podcast\'
- Bagian \'Jelajahi podcast\' sudah disembunyikan
+ Bagian \'Jelajahi podcast\' disembunyikan
Bagian \'Jelajahi podcast\' ditampilkan
- Sembunyikan bagian kartu info
- Bagian kartu info sudah disembunyikan
+ Sembunyikan kartu info
+ Kartu info sudah disembunyikan
Bagian kartu info sudah ditampilkan
Sembunyikan bagian transkrip
Bagian transkrip sudah disembunyikan
@@ -223,7 +223,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Penyaring khusus dimatikan
Penyaring khusus
- Serangkaian daftar pembangun jalur komponen yang disaring dipisahkan dengan baris baru
+ Daftar untaian karakter untuk disaring, dipisah dengan baris baru
Penyaring khusus tidak valid: %s
Sembunyikan kata kunci konten
Sembunyikan pencarian dan umpan video menggunakan penyaring kata kunci
@@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Kata kunci tidak sah: \'%s\'
Kata kunci tidak sah. \'%1$s\' kurang dari %2$d karakter
- Kata kunci \'$s\' akan menyembunyikan semua video
+ Kata kunci \'%s\' akan menyembunyikan semua video
Sembunyikan iklan umum
@@ -271,7 +271,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Tautan belanja disembunyikan
Tautan belanja ditampilkan
- Sembunyikan tombol \'Lihat toko\' di laman saluran
+ Sembunyikan \'Lihat toko\' di laman saluran
Tombol disembunyikan
Tombol ditampilkan
Sembunyikan hasil pencarian web
@@ -307,7 +307,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Hapus dialog peringatan untuk penonton
Dialog akan dihapus
Dialog akan ditampilkan
- Ini tidak mengabaikan batasan usia. Hanya menerimanya secara otomatis.
+ Ini tidak mengabaikan batasan usia. Hanya otomatis menerimanya.
Unduhan eksternal
@@ -454,9 +454,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
Menu caption disembunyikan
Menu caption ditampilkan
- Sembunyikan Setelan tambahan
- Menu Setelan tambahan disembunyikan
- Menu setelan tambahan ditampilkan
+ Sembunyikan P\'aturan tambahan
+ Menu p\'aturan tambahan disembunyikan
+ Menu p\'aturan tambahan ditampilkan
Sembunyikan Ulangi video
Menu ulangi video disembunyikan
@@ -516,7 +516,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Sembunyikan komentar pratinjau
Komentar pratinjau disembunyikan
Komentar pratinjau ditampilkan
- Sembunyikan tombol terima kasih
+ Sembunyikan \'terima kasih\'
Tmbl terima kasih disembunyikan
Tmbl terima kasih ditampilkan
Sembunyikan timestamp dan tombol emoji
@@ -754,10 +754,21 @@ This is because Crowdin requires temporarily flattening this file and removing t
Tombol buat segmen baru ditampilkan
Tombol buat segmen baru tidak ditampilkan
Sesuaikan langkah segmen baru
+ Jumlah milidetik tombol penyesuaian waktu bergerak saat membuat segmen baru
+ Nilainya harus berupa angka positif
Lihat pedoman
+ Pedoman berisi aturan dan tips untuk membuat segmen baru
+ Ikuti pedoman
+ Bacalah panduan SponsorBlock sebelum membuat segmen baru
Sudah dibaca
Tunjukkan
Umum
+ Tampilkan pesan toast jika API tidak tersedia
+ Toast ditampilkan jika SponsorBlock tidak tersedia
+ Toast tidak ditampilkan jika SponsorBlock tidak tersedia
+ Nyalakan pelacakan melewati hitungan
+ Mengizinkan leaderboard SponsorBlock mengetahui berapa banyak waktu yang diselamatkan. Sebuah pesan dikirim ke leaderboard setiap kali sebuah segmen dilewati
+ Pelacakan melewati hitungan tidak dinyalakan
Durasi minimum segmen
Ini harus dijaga kerahasiaannya. Seperti kata sandi dan tidak disarankan untuk dibagikan dengan siapa pun. Jika seseorang mendapatkan ini, mereka dapat menyamar sebagai Anda
Ubah URL API
@@ -830,7 +841,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Tentang
- Versi aplikasi akan dipalsukan ke versi YouTube yang lebih lama.\n\nIni akan mengubah tampilan dan fitur aplikasi, namun efek samping yang tidak diketahui mungkin terjadi.\n\nJika nanti dinonaktifkan, disarankan untuk menghapus data aplikasi untuk mencegah kesalahan UI.
+ Versi aplikasi akan dipalsukan ke versi lama YouTube.\n\nIni akan mengubah tampilan dan fitur aplikasi, tapi mungkin terjadi efek samping tidak diketahui.\n\nJika nanti dinonaktifkan, disarankan menghapus data aplikasi agar UI tidak kacau.
@@ -861,6 +872,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+ Abaikan batasan daerah gambar
+ Menggunakan sumber yt4.ggpht.com
+ Menggunakan sumber gambar asli\n\nMengaktifkan ini akan memperbaiki gambar hilang di daerah tertentu
+
@@ -880,6 +896,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
+ Abaikan pengalihan URL
+ Pengalihan URL diabaikan
+ Pengalihan URL tidak diabaikan
@@ -888,6 +907,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
+ Mutu video otomatis
+ Ingat perubahan mutu video
+ Perubahan mutu diatur ke semua video
+ Perubahan mutu hanya diatur di video saat ini
+ Mutu video ke bawaan di jejaring Wi-Fi
+ Mutu video ke bawaan di jejaring seluler
+ seluler
+ wifi
+ Mutu bawaan %1$s diubah ke: %2$s
Tombol ditampilkan
@@ -898,6 +926,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
diff --git a/src/main/resources/addresources/values-is-rIS/strings.xml b/src/main/resources/addresources/values-is-rIS/strings.xml
index 8b6dc6225..dd25becd2 100644
--- a/src/main/resources/addresources/values-is-rIS/strings.xml
+++ b/src/main/resources/addresources/values-is-rIS/strings.xml
@@ -207,6 +207,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-it-rIT/strings.xml b/src/main/resources/addresources/values-it-rIT/strings.xml
index b9f15f9c0..7a7361365 100644
--- a/src/main/resources/addresources/values-it-rIT/strings.xml
+++ b/src/main/resources/addresources/values-it-rIT/strings.xml
@@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Parola chiave non valida. Impossibile utilizzare: \'%s\' come filtro
Parola chiave non valida. \'%1$s\' è minore di %2$d caratteri
- Parola chiave \'$s\' nasconderà tutti i video
+ La parola chiave \'%s\' nasconderà tutti i video
Nascondi gli annunci generali
@@ -576,7 +576,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
- Nascondi Pantaloncini nel feed home
+ Nascondi Shorts nella scheda Home
Pantaloncini nel feed domestico sono nascosti
Vengono mostrati i pantaloncini in home feed
@@ -990,6 +990,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
Il colore della barra di ricerca
Valore colore seekbar non valido. Usare il valore predefinito.
+
+ Bypass restrizioni regione immagine
+ Uso host immagine yt4.ggpht.com
+ Usando l\'host immagine originale\n\nAbilitando questo si possono correggere le immagini mancanti bloccate in alcune regioni
+
Scheda home
@@ -1113,7 +1118,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Disattivare questa impostazione potrebbe causare problemi di riproduzione video.
Spoof client per iOS
Il client è attualmente spoofed per iOS\n\nGli effetti collaterali includono:\n• Nessun video HDR\n• La cronologia dell\'orologio potrebbe non funzionare\n• Potrebbero mancare qualità video più elevate\n• I flussi dal vivo non possono riprodurre solo l\'audio\n• I flussi dal vivo non sono disponibili su Android 8.0
- Il client è attualmente spoofed per Android VR\n\nGli effetti collaterali includono:\n• Nessun video HDR\n• I video per bambini non riproducono\n• I video in pausa possono riprendere casualmente\n• Bassa qualità Pantaloncini seekbar miniature\n• Il pulsante di azione del download è sempre nascosto\n• Le schede dello schermo finale sono sempre nascoste
+ Il client è attualmente spoofed per Android VR\n\nGli effetti collaterali includono:\n• Nessun video HDR\n• I video per bambini non riproducono\n• I video in pausa possono riprendere casualmente\n• Bassa qualità Shorts seekbar miniature\n• Il pulsante di azione del download è sempre nascosto\n• Le schede dello schermo finale sono sempre nascoste
Le miniature del client non sono disponibili (timeout API)
Miniature del client Spoof temporaneamente non disponibili: %s
diff --git a/src/main/resources/addresources/values-iw-rIL/strings.xml b/src/main/resources/addresources/values-iw-rIL/strings.xml
index 1df1e2113..d0979363f 100644
--- a/src/main/resources/addresources/values-iw-rIL/strings.xml
+++ b/src/main/resources/addresources/values-iw-rIL/strings.xml
@@ -260,6 +260,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-ja-rJP/strings.xml b/src/main/resources/addresources/values-ja-rJP/strings.xml
index ac1245a62..e4b087ae0 100644
--- a/src/main/resources/addresources/values-ja-rJP/strings.xml
+++ b/src/main/resources/addresources/values-ja-rJP/strings.xml
@@ -247,7 +247,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
無効なキーワードです。フィルタとして使用できません: \'%s\'
無効なキーワードです。\'%1$s\' は %2$d 文字未満です
- キーワード \'$s\' はすべてのビデオを非表示にします
+ キーワード \'%s\' はすべての動画を非表示にします
一般的な広告を非表示
@@ -989,6 +989,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
シークバーの色
シークバーの色の値が無効です。デフォルト値を使用してください。
+
+ 画像領域の制限をバイパスする
+ イメージホストの使用 yt4.ggpht.com
+
ホームタブ
diff --git a/src/main/resources/addresources/values-ka-rGE/strings.xml b/src/main/resources/addresources/values-ka-rGE/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-ka-rGE/strings.xml
+++ b/src/main/resources/addresources/values-ka-rGE/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-kk-rKZ/strings.xml b/src/main/resources/addresources/values-kk-rKZ/strings.xml
index 129124860..9ae16aa08 100644
--- a/src/main/resources/addresources/values-kk-rKZ/strings.xml
+++ b/src/main/resources/addresources/values-kk-rKZ/strings.xml
@@ -205,6 +205,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-km-rKH/strings.xml b/src/main/resources/addresources/values-km-rKH/strings.xml
index 60d4843a2..7612d20ac 100644
--- a/src/main/resources/addresources/values-km-rKH/strings.xml
+++ b/src/main/resources/addresources/values-km-rKH/strings.xml
@@ -203,6 +203,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-kn-rIN/strings.xml b/src/main/resources/addresources/values-kn-rIN/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-kn-rIN/strings.xml
+++ b/src/main/resources/addresources/values-kn-rIN/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-ko-rKR/strings.xml b/src/main/resources/addresources/values-ko-rKR/strings.xml
index 858fd7a1b..5590125de 100644
--- a/src/main/resources/addresources/values-ko-rKR/strings.xml
+++ b/src/main/resources/addresources/values-ko-rKR/strings.xml
@@ -46,9 +46,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
- GmsCore가 설치되어 있지 않습니다. 설치하세요
+ MicroG GmsCore가 설치되어 있지 않습니다. 설치하세요
필수 조치
- MicroG GmsCore에 백그라운드에서 실행할 수 있는 권한이 없습니다\n\n휴대폰에 대한 \"Don\'t kill my app\" 가이드를 읽어보고, MicroG 설치 지침을 적용하세요\n\n앱이 실행하려면 이 과정이 필요합니다
+ MicroG GmsCore에 백그라운드에서 실행할 수 있는 권한이 없습니다\n\n이 기기에 대한 \"Don\'t kill my app\" 가이드를 읽어보고, MicroG 설치 지침을 적용하세요\n\n앱이 실행하려면 이 과정이 필요합니다
웹사이트 열기
MicroG GmsCore를 배터리 최적화 목록에서 제외하여 앱 문제를 방지할 수 있습니다\n\n배터리 최적화 목록에서 제외하려면 \'계속하기\' 버튼을 누르세요
계속하기
@@ -244,12 +244,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
필터링할 키워드 및 구문을 줄바꿈으로 구분하여 설정합니다\n\n영어 키워드는 대소문자를 구분하여 입력해야 합니다 (예: iPhone, TikTok, LeBlanc)
키워드 필터링 정보
- 홈 피드 / 구독 피드 / 검색 결과에서 키워드와 일치하는 콘텐츠가 숨겨집니다\n\n알려진 문제점:\n• 일부 Shorts는 숨겨지지 않을 수 있습니다\n• 일부 화면 구성요소가 숨겨지지 않을 수 있습니다\n• 키워드를 검색하면 결과가 표시되지 않을 수 있습니다
+ 홈 피드 / 구독 피드 / 검색 결과에서 키워드와 일치하는 콘텐츠가 숨겨집니다\n\n알려진 문제점:\n• 일부 Shorts는 숨겨지지 않을 수 있습니다\n• 일부 화면 구성요소가 숨겨지지 않을 수 있습니다\n• 필터링 키워드를 검색하면 결과가 표시되지 않을 수 있습니다
잘못된 키워드입니다. \'%s\'를 필터로 사용할 수 없습니다
\'%1$s\'는 잘못된 키워드입니다. 필터링 키워드는 %2$d 글자 이상이어야 합니다.
- 키워드 \'$s\'를 사용하면 모든 동영상이 숨겨집니다
+ 키워드 \'%s\'를 사용하면 모든 동영상이 숨겨집니다
일반 레이아웃 광고 숨기기
@@ -258,9 +258,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
전체 화면 광고 숨기기
전체 화면 광고가 숨겨집니다\n\n알림: 이 설정은 구형 기기에서만 사용할 수 있습니다
전체 화면 광고가 노출됩니다
- 일반 레이아웃 광고 숨기기
- 일반 레이아웃 광고가 숨겨집니다
- 일반 레이아웃 광고가 노출됩니다
+ 버튼형 광고 숨기기
+ 버튼형 광고가 숨겨집니다
+ 버튼형 광고가 노출됩니다
유료 광고 포함 라벨 숨기기
유료 광고 포함 라벨이 숨겨집니다
유료 광고 포함 라벨이 노출됩니다
@@ -300,12 +300,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
URL을 클립보드에 복사하였습니다
타임스탬프를 표기한 URL을 클립보드에 복사하였습니다
동영상 URL 복사 버튼 표시하기
- 버튼을 표시합니다.
-버튼을 눌러서 동영상 URL을 복사할 수 있습니다. 길게 누르면 타임스탬프를 표기한 동영상 URL이 복사됩니다
+ 버튼을 표시합니다. \n버튼을 눌러서 동영상 URL을 복사할 수 있습니다. 길게 누르면 타임스탬프를 표기한 동영상 URL이 복사됩니다
버튼을 표시하지 않습니다
타임스탬프를 표기한 URL 복사 버튼 표시하기
- 버튼을 표시합니다.
-버튼을 눌러서 타임스탬프를 표기한 동영상 URL을 복사할 수 있습니다. 길게 누르면 타임스탬프를 표기하지 않은 동영상 URL이 복사됩니다
+ 버튼을 표시합니다. \n버튼을 눌러서 타임스탬프를 표기한 동영상 URL을 복사할 수 있습니다. 길게 누르면 타임스탬프를 표기하지 않은 동영상 URL이 복사됩니다
버튼을 표시하지 않습니다
@@ -326,12 +324,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
오프라인 저장 버튼으로 기본 다운로더를 실행할 수 있습니다 (YouTube Premium 기능)
외부 다운로더 패키지명
NewPipe 또는 Seal와 같은 설치된 외부 다운로더 패키지명입니다
- %s은(는) 설치되어 있지 않습니다. 설치하세요
+ %s 는 설치되어 있지 않습니다. 설치하세요
- 세밀하게 탐색 제스처 비활성화하기
- 세밀하게 탐색 제스처를 비활성화합니다\n• 필름 스트립 오버레이
- 세밀하게 탐색 제스처를 활성화합니다\n• 필름 스트립 오버레이
+ 세밀하게 보면서 탐색 제스처 비활성화하기
+ 세밀하게 보면서 탐색 제스처를 비활성화합니다\n• 필름 스트립 오버레이
+ 세밀하게 보면서 탐색 제스처를 활성화합니다\n• 필름 스트립 오버레이
재생바 터치 조작 활성화하기
@@ -352,8 +350,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
진동 피드백을 활성화합니다
진동 피드백을 비활성화합니다
화면 밝기 저장 및 복원 활성화하기
- 전체 화면에서 나가거나 들어갈 때마다 밝기 값을 저장 및 복원합니다
- 전체 화면에서 나가거나 들어갈 때마다 밝기 값을 저장 및 복원하지 않습니다
+ 전체 화면에서 나가거나 들어갈 때마다 화면 밝기 값을 저장 및 복원합니다
+ 전체 화면에서 나가거나 들어갈 때마다 화면 밝기 값을 저장 및 복원하지 않습니다
스와이프 제스처로 자동 밝기 활성화하기
스와이프 제스처로 밝기가 0이 되면 자동 밝기를 활성화합니다
스와이프 제스처로 밝기가 0이 되더라도 자동 밝기를 활성화하지 않습니다
@@ -568,8 +566,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
롤링 넘버 애니메이션 비활성화하기
- 다음 롤링 넘버 애니메이션을 비활성화합니다\n• 실시간 조회수, 시청자 수 롤링 애니메이션 (플레이어 하단)\n• 좋아요 개수, 조회수 롤링 애니메이션 (동영상 설명)
- 다음 롤링 넘버 애니메이션을 활성화합니다\n• 실시간 조회수, 시청자 수 롤링 애니메이션 (플레이어 하단)\n• 좋아요 개수, 조회수 롤링 애니메이션 (동영상 설명)
+ 다음 롤링 넘버 애니메이션을 비활성화합니다\n• 조회수, 시청자 수 롤링 애니메이션 (플레이어 하단)\n• 좋아요 개수, 조회수 롤링 애니메이션 (동영상 설명)
+ 다음 롤링 넘버 애니메이션을 활성화합니다\n• 조회수, 시청자 수 롤링 애니메이션 (플레이어 하단)\n• 좋아요 개수, 조회수 롤링 애니메이션 (동영상 설명)
동영상 플레이어 재생바 숨기기
@@ -649,7 +647,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
사운드 메타데이터 라벨 숨기기
메타데이터 라벨이 숨겨집니다
메타데이터 라벨이 노출됩니다
- 관련 동영상 링크 라벨 숨기기
+ FULL 또는 관련 동영상 링크 라벨 숨기기
동영상 링크 라벨이 숨겨집니다
동영상 링크 라벨이 노출됩니다
사운드 버튼 숨기기
@@ -866,12 +864,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
싫어요
카테고리 변경
투표할 구간이 없습니다
- 구간 카테고리를 선택해주세요
+ 구간 카테고리를 선택하세요
이 카테고리는 비활성화되어 있습니다. 제출하려면 설정에서 활성화해야 합니다
새 SponsorBlock 구간
- %1$02d:%2$02d:%3$03d을 구간의 시작 또는 끝으로 설정할까요?
+ %1$02d:%2$02d:%3$03d을 구간의 시작 또는 끝으로 설정하겠습니까?
시작
끝
현재
@@ -882,8 +880,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
YT shows the same seekbar time format for all languages, and this string is confirming the segment time as it appears in the seekbar. -->
선택한 구간이\n\n%1$s\n부터\n%2$s\n\n(%3$s) 까지 입니다\n\n이렇게 제출하겠습니까?
구간의 시작 또는 끝을 잘못 설정하였습니다
- 먼저 재생바에서 시작 지점과 끝 지점을 표시해주세요
- 구간 미리 보기 버튼을 눌러서 설정한 구간이 정상적으로 건너뛰기가 되는지 확인해주세요
+ 먼저 재생바에서 시작 지점과 끝 지점을 표시하세요
+ 구간 미리 보기 버튼을 눌러서 설정한 구간이 정상적으로 건너뛰기가 되는지 확인하세요
직접 시간 구간 편집하기
구간의 시작이나 끝을 편집하겠습니까?
잘못된 시간 형식입니다
@@ -934,7 +932,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
앱 시작 페이지 변경하기
- 기본
+ 기본값
홈
검색
@@ -996,6 +994,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
재생바 색상
잘못된 재생바 색상 값이므로 기본값으로 초기화합니다
+
+ 이미지 표시 국가 제한 우회하기
+ 이미지 호스트로 yt4.ggpht.com를 사용합니다
+ 기본 이미지 호스트를 사용합니다\n\n이 설정을 활성화하면 일부 국가에서 차단된 이미지를 수신할 수 있습니다 (채널 프로필 사진, 커뮤니티 게시물 이미지, etc.)
+
홈 탭
@@ -1084,7 +1087,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
동영상 재생 속도 다이얼로그 버튼 표시하기
- 버튼이 노출됩니다
+ 버튼을 표시합니다
버튼을 표시하지 않습니다
@@ -1119,7 +1122,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
이 설정을 비활성화하면 동영상 재생 문제가 발생할 수 있습니다
iOS 클라이언트로 변경하기
클라이언트를 iOS 클라이언트로 변경합니다\n\n알려진 문제점:\n• HDR 동영상을 재생할 수 없습니다\n• 브랜드 계정 사용자는 시청 기록을 사용할 수 없습니다\n• 동영상이 초고화질 동영상 값으로 재생되지 않을 수 있습니다 (1440p, 2160p)\n• 실시간 스트림에서 \'백그라운드 재생\'을 사용할 수 없습니다\n• Android 8.0 사용자는 실시간 스트림을 재생할 수 없습니다
- 클라이언트를 Android VR 클라이언트로 변경합니다\n\n알려진 문제점: \n• HDR 동영상을 재생할 수 없습니다\n- Kids 동영상을 재생할 수 없습니다\n• 일시 정지된 동영상이 갑자기 다시 시작될 수 있습니다\n• 저화질 Shorts 재생바 썸네일이 표시됩니다\n• 플레이어 하단에서 오프라인 저장 버튼이 표시되지 않습니다\n• 최종 화면 카드가 표지되지 않습니다
+ 클라이언트를 Android VR 클라이언트로 변경합니다\n\n알려진 문제점: \n• HDR 동영상을 재생할 수 없습니다\n- Kids 동영상을 재생할 수 없습니다\n• 일시 정지된 동영상이 갑자기 다시 시작될 수 있습니다\n• 저화질 Shorts 재생바 썸네일이 표시됩니다\n• 플레이어 하단에서 오프라인 저장 버튼이 표시되지 않습니다\n• 최종 화면 카드가 표시되지 않습니다
클라이언트 썸네일을 사용할 수 없습니다 (응답 시간 초과)
클라이언트 썸네일을 일시적으로 사용할 수 없습니다: %s
@@ -1148,8 +1151,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
%s 서버에서 오류가 발생했기 때문에 광고가 표시될 것입니다. 설정에서 다른 광고 차단 서비스로 전환해 보세요
광고 차단 Proxy 서버 사용하기
사용하지 않기
- Luminous proxy
- PurpleAdBlock proxy
+ Luminous Proxy
+ PurpleAdBlock Proxy
동영상 광고 차단하기
@@ -1157,11 +1160,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
동영상 광고를 차단하지 않습니다
- 메시지를 삭제합니다
- 삭제된 메시지 표시하기
- 삭제된 메시지 표시하지 않기
- 스포일러 뒤에 삭제된 메시지 숨기기
- 삭제된 메시지를 줄이 그어진 텍스트로 표시하기
+ 메시지를 제거합니다
+ 제거된 메시지 표시하기
+ 제거된 메시지 표시하지 않기
+ 스포일러 뒤에 제거된 메시지 숨기기
+ 제거된 메시지를 줄이 그어진 텍스트로 표시하기
채널 포인트 자동 적립하기
diff --git a/src/main/resources/addresources/values-ky-rKG/strings.xml b/src/main/resources/addresources/values-ky-rKG/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-ky-rKG/strings.xml
+++ b/src/main/resources/addresources/values-ky-rKG/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-lo-rLA/strings.xml b/src/main/resources/addresources/values-lo-rLA/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-lo-rLA/strings.xml
+++ b/src/main/resources/addresources/values-lo-rLA/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-lt-rLT/strings.xml b/src/main/resources/addresources/values-lt-rLT/strings.xml
index 69d9c0e75..d11d685d4 100644
--- a/src/main/resources/addresources/values-lt-rLT/strings.xml
+++ b/src/main/resources/addresources/values-lt-rLT/strings.xml
@@ -207,6 +207,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-lv-rLV/strings.xml b/src/main/resources/addresources/values-lv-rLV/strings.xml
index 85a6c49b9..1de88018d 100644
--- a/src/main/resources/addresources/values-lv-rLV/strings.xml
+++ b/src/main/resources/addresources/values-lv-rLV/strings.xml
@@ -206,6 +206,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-mk-rMK/strings.xml b/src/main/resources/addresources/values-mk-rMK/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-mk-rMK/strings.xml
+++ b/src/main/resources/addresources/values-mk-rMK/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-ml-rIN/strings.xml b/src/main/resources/addresources/values-ml-rIN/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-ml-rIN/strings.xml
+++ b/src/main/resources/addresources/values-ml-rIN/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-mn-rMN/strings.xml b/src/main/resources/addresources/values-mn-rMN/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-mn-rMN/strings.xml
+++ b/src/main/resources/addresources/values-mn-rMN/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-mr-rIN/strings.xml b/src/main/resources/addresources/values-mr-rIN/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-mr-rIN/strings.xml
+++ b/src/main/resources/addresources/values-mr-rIN/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-ms-rMY/strings.xml b/src/main/resources/addresources/values-ms-rMY/strings.xml
index cd3ca961b..dbfb3edcc 100644
--- a/src/main/resources/addresources/values-ms-rMY/strings.xml
+++ b/src/main/resources/addresources/values-ms-rMY/strings.xml
@@ -205,6 +205,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-my-rMM/strings.xml b/src/main/resources/addresources/values-my-rMM/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-my-rMM/strings.xml
+++ b/src/main/resources/addresources/values-my-rMM/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-nb-rNO/strings.xml b/src/main/resources/addresources/values-nb-rNO/strings.xml
index 3f3f5a75c..8b0988060 100644
--- a/src/main/resources/addresources/values-nb-rNO/strings.xml
+++ b/src/main/resources/addresources/values-nb-rNO/strings.xml
@@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Ugyldig søkeord. Kan ikke bruke: \'%s\' som et filter
Ugyldig nøkkelord. \'%1$s\' er mindre enn %2$d tegn
- Nøkkelord \'$s\' vil skjule alle videoer
+ Nøkkelord \'%s\' vil skjule alle videoer
Skjul generelle annonser
@@ -426,9 +426,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
Hjem-knappen er skjult
Hjem knappen vises
- Skjul kort
- Kortstokk-knappen er skjult
- Kortstokk-knappen vises
+ Skjul Shorts
+ Shorts-knappen er skjult
+ Shorts-knappen vises
Skjul Lag
Lage knappen er skjult
@@ -575,16 +575,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
- Skjul kort i hjemmeskjermen
- Korter i hjemmelagningen er skjult
- Korter i hjemmeskjermen vises
+ Skjul Shorts i hjemmefeeden
+ Shorts i hjemmefeed er skjult
+ Shorts i hjemmefeed vises
- Skjul kort i abonnementsfeed
- Korter i abonnements-feed er skjult
- Koraller i abonnementsfeed vises
- Skjul kort i søkeresultater
- Kortere i søkeresultatene er skjult
- Kortere i søkeresultatene vises
+ Skjul Shoets i abonnementsfeed
+ Shorts i abonnementsfeed er skjult
+ Shorts i abonnementsfeed vises
+ Skjul Shorts i søkeresultatene
+ Shorts i søkeresultatene er skjult
+ Shorts i søkeresultatene vises
Skjul join knapp
Bli-med knappen er skjult
@@ -684,7 +684,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Vis mislykte på Shorts
Misliker vist på shorts
Misliker som vises på Shorts\n\nLimitasjon: Misdannelser kan hende i inkognito-modus ikke vises i inkognito-modus
- Misliker skjult på shorts
+ Misliker skjult på Shorts
Misliker som prosent
Misliker vises som prosent
Misliker som vist som tall
@@ -937,8 +937,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Deaktiver gjenopptakelse av Shorts spiller
- Kort spiller vil ikke gjenoppta ved oppstart av app
- Kortere spiller vil gjenoppta ved oppstart av app
+ Shorts spiller vil ikke gjenoppta ved oppstart av app
+ Shorts spiller vil gjenoppta ved oppstart av app
Aktiver oppsett for nettbrett
@@ -982,6 +982,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
Farge på søkefeltet
Ugyldig farge på søkelinjen. Bruker standardverdien.
+
+ Forbigå bilde-restriksjoner
+ Bruk bildesvertyt4.ggpht.com
+
Hjem fane
diff --git a/src/main/resources/addresources/values-ne-rIN/strings.xml b/src/main/resources/addresources/values-ne-rIN/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-ne-rIN/strings.xml
+++ b/src/main/resources/addresources/values-ne-rIN/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-nl-rNL/strings.xml b/src/main/resources/addresources/values-nl-rNL/strings.xml
index c8f1425b6..f8936dde9 100644
--- a/src/main/resources/addresources/values-nl-rNL/strings.xml
+++ b/src/main/resources/addresources/values-nl-rNL/strings.xml
@@ -243,12 +243,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
Trefwoorden en zinnen te verbergen, gescheiden door nieuwe regels\n\nWoorden met hoofdletters in het midden moeten worden ingevoerd met de behuizing (bv: iPhone, TikTok, LeBlanc)
Over trefwoord filteren
- Thuis/Abonnement/Zoekresultaten worden gefilterd om de inhoud te verbergen die overeenkomt met trefwoordzinnen\n\nBeperkingen\n• Sommige Kortingen kunnen niet verborgen zijn\n• Sommige UI-componenten kunnen niet verborgen zijn\n• Zoeken naar een trefwoord kan geen resultaten laten zien
+ Home/Abonnement/Zoekresultaten worden gefilterd om inhoud te verbergen die overeenkomt met trefwoordzinnen\n\nBeperkingen\n• Sommige Shorts zijn mogelijk niet verborgen\n• Sommige UI-componenten zijn mogelijk niet verborgen\n• Zoeken naar een trefwoord levert mogelijk geen resultaten op
Ongeldig sleutelwoord. Kan niet gebruiken: \'%s\' als filter
Ongeldig sleutelwoord. \'%1$s\' is minder dan %2$d tekens
- $szal alle video\'s verbergen
+ Trefwoord \'%s\' verbergt alle video\'s
Algemene advertenties verbergen
@@ -428,7 +428,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Thuisknop is verborgen
Home-knop wordt weergegeven
- Verberg verkorten
+ Verberg Shorts
Shorts knop is verborgen
Shorts knop wordt weergegeven
@@ -577,16 +577,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
- Verberg verkorten in home feed
- Kortingen in de thuisfeed zijn verborgen
- Kortingen in de home feed worden weergegeven
+ Shorts verbergen in de homefeed
+ Shorts in de thuisfeed zijn verborgen
+ Shorts in de thuisfeed worden getoond
- Verberg verkorten in de abonnementsfeed
- Schorten in de abonnementsfeed zijn verborgen
- Schorten in de abonnementsfeed worden weergegeven
- Verberg verkorten in zoekresultaten
- Schorten in zoekresultaten zijn verborgen
- Korte zoekresultaten worden weergegeven
+ Verberg Shorts in de abonnementsfeed
+ Shorts in de abonnementsfeed zijn verborgen
+ Shorts in de abonnementsfeed worden weergegeven
+ Verberg Shorts in zoekresultaten
+ Shorts in zoekresultaten zijn verborgen
+ Shorts zoekresultaten worden weergegeven
Toetredingsknop verbergen
Join knop is verborgen
@@ -686,10 +686,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
Herlaad video om te stemmen met behulp van Return YouTube Dislike
Dislikes worden weergegeven
Dislikes worden niet weergegeven
- Toon onlikes op korten
- Niet leuk weergegeven op Korting
+ Toon onlikes op Shorts
+ Vind ik niet leuk getoond op Shorts
Niet leuk weergegeven op Shorts\n\nLimitatie: Niet leuk vinden mag niet verschijnen in incognito modus
- Vindt het niet leuk verborgen op Korte
+ Vindt het niet leuk verborgen op Shorts
Niet leuk als percentage
Niet leuk weergegeven als percentage
Niet leuk weergegeven als nummer
@@ -945,9 +945,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
Populair
- Deactiveer speler om te hervatten
- Kortende speler zal bij het opstarten van de app niet hervatten
- Verkort speler zal bij het opstarten van de app hervatten
+ Schakel het hervatten van Shorts-speler uit
+ Shorts-speler wordt niet hervat bij het opstarten van de app
+ Shorts-speler wordt hervat bij het opstarten van de app
Tablet lay-out inschakelen
@@ -991,6 +991,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
De kleur van de zoekbalk
Ongeldige zoekbalk kleurwaarde. Standaardwaarde wordt gebruikt.
+
+ Bypass afbeelding regio beperkingen
+ Gebruik yt4.ggpht.com voor afbeeldingen
+ Het gebruik van de originele afbeeldingshost\n\nDit kan ontbrekende afbeeldingen die geblokkeerd zijn in sommige regio\'s herstellen
+
Tabblad Home
@@ -1114,7 +1119,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Het uitschakelen van deze instelling kan problemen met het afspelen van video veroorzaken.
Klant naar iOS vervalsen
De klant is momenteel gespoofd naar iOS\n\nSide effecten zoals:\n• Geen HDR video\n• Bekijk geschiedenis kan mogelijk niet werken\n• Hogere videokwaliteiten ontbreken\n• Live streams kunnen niet worden afgespeeld als alleen audio\n• Live streams die niet beschikbaar zijn op Android 8.0
- De client is momenteel ondergesneeuwd naar Android VR\n\nSide effecten inclusief:\n• Geen HDR video\n• Kinderen video\'s spelen niet af\n• Gepauzeerde video\'s kunnen willekeurig hervatten\n• Kleine kwaliteit zoekbalkminiaturen\n• Download actieknop is altijd verborgen\n• Eindscherm kaarten zijn altijd verborgen
+ Client wordt momenteel vervalst naar Android VR\n\nBijwerkingen zijn onder meer:\n• Geen HDR-video\n• Kindervideo\'s worden niet afgespeeld\n• Gepauzeerde video\'s kunnen willekeurig worden hervat\n• Shorts-zoekbalkthumbnails van lage kwaliteit\n• Actieknop downloaden is altijd verborgen\n• Eindschermkaarten zijn altijd verborgen
Klant miniaturen niet beschikbaar (API timed out)
Klant miniaturen tijdelijk niet beschikbaar: %s
diff --git a/src/main/resources/addresources/values-or-rIN/strings.xml b/src/main/resources/addresources/values-or-rIN/strings.xml
index e3d178619..c5fcd999b 100644
--- a/src/main/resources/addresources/values-or-rIN/strings.xml
+++ b/src/main/resources/addresources/values-or-rIN/strings.xml
@@ -206,6 +206,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-pa-rIN/strings.xml b/src/main/resources/addresources/values-pa-rIN/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-pa-rIN/strings.xml
+++ b/src/main/resources/addresources/values-pa-rIN/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-pl-rPL/strings.xml b/src/main/resources/addresources/values-pl-rPL/strings.xml
index a85296c5f..96255af31 100644
--- a/src/main/resources/addresources/values-pl-rPL/strings.xml
+++ b/src/main/resources/addresources/values-pl-rPL/strings.xml
@@ -72,7 +72,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Odtwarzacz
Ogólny układ
Pasek wyszukiwania
- Sterowanie przesuwaniem
+ Sterowanie gestami
Pozostałe
Wideo
@@ -243,12 +243,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
Słowa kluczowe i frazy do ukrycia, oddzielone nowymi wierszami\n\nSłowa z wielkimi literami w środku muszą być wpisane z obudową (np. iPhone, TikTok, LeBlanc)
O filtrowaniu słów kluczowych
- Wyniki strony głównej/Subskrypcji/Wyszukiwarki są filtrowane w celu ukrycia treści pasującej do słów kluczowych\n\nOgraniczenia\n• Niektóre skróty mogą nie być ukryte\n• Niektóre komponenty interfejsu użytkownika nie mogą być ukryte\n• Wyszukiwanie słowa kluczowego może nie pokazywać wyników
+ Wyniki strony głównej/Subskrypcji/Wyszukiwarki są filtrowane w celu ukrycia treści pasującej do słów kluczowych\n\nOgraniczenia\n• Niektóre Shorts mogą nie być ukryte\n• Niektóre komponenty interfejsu użytkownika nie mogą być ukryte\n• Wyszukiwanie słowa kluczowego może nie pokazywać wyników
Nieprawidłowe słowo kluczowe. Nie można użyć: \'%s\' jako filtr
Nieprawidłowe słowo kluczowe. \'%1$s\' jest mniejsze niż %2$d znaków
- Słowo kluczowe$s\' ukryje wszystkie filmy
+ Słowo kluczowe \'%s\' ukryje wszystkie filmy
Ukryj reklamy ogólne
@@ -429,9 +429,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
Przycisk Home jest ukryty
Przycisk Home jest pokazany
- Ukryj Spodnie
- Przycisk shorts jest ukryty
- Przycisk shorts jest widoczny
+ Ukryj Shorts
+ Przycisk Shorts jest ukryty
+ Przycisk Shorts jest widoczny
Ukryj Utwórz
Przycisk Utwórz jest ukryty
@@ -578,16 +578,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
- Ukryj Skróty w kanale głównym
- Skróty w kanale głównym są ukryte
- Skróty w kanale głównym są wyświetlane
+ Ukryj Shorts w kanale głównym
+ Shorts w kanale głównym są ukryte
+ Shorts w kanale głównym są wyświetlane
- Ukryj Skróty w kanale subskrypcji
- Skróty w kanale subskrypcji są ukryte
- Skróty w kanale subskrypcji są wyświetlane
- Ukryj Skróty w wynikach wyszukiwania
- Skróty w wynikach wyszukiwania są ukryte
- Skróty w wynikach wyszukiwania są wyświetlane
+ Ukryj Shorts w kanale subskrypcji
+ Shorts w kanale subskrypcji są ukryte
+ Shorts w kanale subskrypcji są wyświetlane
+ Ukryj Shorts w wynikach wyszukiwania
+ Shorts w wynikach wyszukiwania są ukryte
+ Shorts w wynikach wyszukiwania są wyświetlane
Ukryj przycisk dołączenia
Przycisk dołączenia jest ukryty
@@ -687,10 +687,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
Odśwież wideo, aby głosować używając zwróć YouTube Dislike
Nie polubiono
Nie pokazano polubień
- Pokaż nielubienie na Skrótach
- Nie lubi wyświetlane na Skrótach
- Brak polubień wyświetlanych na skrótach\n\nOgraniczenie: brak polubień w trybie incognito
- Nie lubię ukryć na Skrótach
+ Pokaż nielubienie na Shorts
+ Nie lubi wyświetlane na Shorts
+ Brak polubień wyświetlanych na Shorts\n\nOgraniczenie: brak polubień w trybie incognito
+ Nie lubię ukryć na Shorts
Nie lubi jako procent
Nie lubi wyświetlane jako procent
Nie lubi wyświetlane jako liczba
@@ -948,8 +948,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Wyłącz wznawianie odtwarzacza Shorts
- Odtwarzacz skrótów nie będzie wznawiany przy starcie aplikacji
- Odtwarzacz skrótów zostanie wznowiony przy starcie aplikacji
+ Odtwarzacz Shorts nie będzie wznawiany przy starcie aplikacji
+ Odtwarzacz Shorts zostanie wznowiony przy starcie aplikacji
Włącz układ tabletu
@@ -993,6 +993,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
Kolor paska wyszukiwania
Nieprawidłowa wartość koloru paska szukania. Używana wartość domyślna.
+
+ Pomiń ograniczenia regionu obrazu
+ Używanie hosta obrazu yt4.ggpht.com
+ Używanie oryginalnego hosta obrazu\n\nWłączenie tego może naprawić brakujące obrazy, które są zablokowane w niektórych regionach
+
Zakładka domowa
@@ -1116,7 +1121,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Wyłączenie tego ustawienia może spowodować problemy z odtwarzaniem wideo.
Spośród klientów na iOS
Klient jest obecnie spoofed to iOS\n\nEfekty niepożądane obejmują:\n• Żaden film HDR\n• Historia zegarków może nie działać\n• Wyższe jakość wideo może brakować\n• Strumienie na żywo nie mogą odtwarzać jako tylko audio\n• Strumienie na żywo niedostępne na Androidzie 8.0
- Klient jest obecnie spoofowany na Androida VR\n\nEfekty uboczne obejmują:\n• Bez filmu HDR\n• Filmy dziecięce nie odtwarza\n• Wstrzymaj filmy można losowo wznowić\n• Niska jakość miniatur paska wyszukiwania skrótów\n• Przycisk pobierania jest zawsze ukryty\n• Karty ekranu końcowego są zawsze ukryte
+ Klient jest obecnie spoofowany na Androida VR\n\nEfekty uboczne obejmują:\n• Bez filmu HDR\n• Filmy dziecięce nie odtwarza\n• Wstrzymaj filmy można losowo wznowić\n• Niska jakość miniatur paska wyszukiwania Shorts\n• Przycisk pobierania jest zawsze ukryty\n• Karty ekranu końcowego są zawsze ukryte
Miniatury klienta nie są dostępne (limit czasu API)
Miniaturki klienta tymczasowo nie są dostępne: %s
diff --git a/src/main/resources/addresources/values-pt-rBR/strings.xml b/src/main/resources/addresources/values-pt-rBR/strings.xml
index f17988603..f3a2cfac4 100644
--- a/src/main/resources/addresources/values-pt-rBR/strings.xml
+++ b/src/main/resources/addresources/values-pt-rBR/strings.xml
@@ -46,7 +46,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
- MicroG GmsCore não está instalado. Instale-o.
+ O MicroG GmsCore não está instalado. Instale-o.
Ação necessária
MicroG GmsCore não tem permissão para ser executado em segundo plano.\n\nVá até a aba \"Não mate meu aplicativo\", e aplique as instruções para a instalação do MicroG.\n\nIsso é necessário para que o aplicativo funcione.
Abrir site
@@ -94,9 +94,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
Desativar ocultar todas as notificações flutuantes de erro do ReVanced.\n\nVocê não será notificado de nenhum evento inesperado.
- Desativar brilho do botão de inscrição / Curtir
- O botão de curtir e assinar não brilhará quando mencionado
- O botão de curtir e subscrever brilhará quando mencionado
+ Desativar brilho do botão de Inscrever-se / Curtir
+ O botão de curtir e de inscrever-se não brilhará quando mencionado
+ O botão de curtir e de inscrever-se brilhará quando mencionado
Ocultar separador cinza
Separador cinza está oculto
Separador cinza não está oculto
@@ -104,11 +104,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
Marca d\'água está oculta
Marca d\'água não está oculta
Ocultar prateleiras horizontais
- Prateleiras estão ocultas, tais como:\n• Quebrar notícias\n• Continuar assistindo\n• Explore mais canais\n• Compras\n• Assista novamente
+ Prateleiras estão ocultas, tais como:\n• Ultimas notícias\n• Continuar assistindo\n• Canais para você\n• Compras\n• Assista novamente
Prateleiras não estão ocultos
- Ocultar botão \'Juntar-se\'
+ Ocultar botão \'Seja membro\'
Botão está oculto
Botão não está oculto
@@ -121,7 +121,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Botão está oculto
Botão não está oculto
- Ocultar as recomendações \"Pessoas também assistidas\"
+ Ocultar as recomendações \"As pessoas também assistiram\"
Recomendações estão ocultas
Recomendações não estão ocultas
Palavras-chave e frases para ocultar, separados por novas linhas\n\nPalavras com letras maiúsculas no meio devem ser inseridas com letras maiúsculas (ex: iPhone, TikTok, LeBlanc)
Sobre a filtragem com palavra-chave
- Início/Inscrições/Busca resultados são filtrados para ocultar conteúdo que corresponde às frases chave\n\nLimitações\n• Alguns abreviados podem não ser ocultados\n• Alguns componentes da UI podem não ser ocultados\n• Procurar por uma palavra-chave pode não mostrar resultados
+ Início/Inscrições/Busca resultados são filtrados para ocultar conteúdo que corresponde às frases chave\n\nLimitações\n• Alguns Shorts podem não ser ocultados\n• Alguns componentes da UI podem não ser ocultados\n• Procurar por uma palavra-chave pode não mostrar resultados
Palavra-chave inválida. Não pode usar: \'%s\' como um filtro
Palavra-chave inválida. \'%1$s\' é menor que %2$d caracteres
- Palavra-chave \'$s\' irá ocultar todos os vídeos
+ Palavra-chave \'%s\' irá ocultar todos os vídeos
Ocultar anúncios gerais
@@ -257,9 +257,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
Ocultar anúncios em tela cheia
Os anúncios de tela cheia são ocultos\n\nEste recurso está disponível apenas para dispositivos mais antigos
Anúncios em tela cheia não estão ocultos
- Ocultar anúncio com botão
- Anúncios com botão estão ocultos
- Anúncios com botão não estão ocultos
+ Ocultar anúncios com botões
+ Os anúncios com botões estão ocultos
+ Anúncios com botões não estão ocultos
Ocultar rótulo de promoção paga
O rótulo de promoção pago está oculto
Rótulo de promoção pago é mostrado
@@ -273,20 +273,20 @@ This is because Crowdin requires temporarily flattening this file and removing t
Links de compras estão ocultos
Links de compras não estão ocultos
- Ocultar o botão \'Visitar loja\' nas páginas do canal
+ Ocultar o botão \'Visitar loja\' nas páginas dos canais
Botão está oculto
Botão não esta oculto
Ocultar resultados de busca web
Resultados de busca web estão ocultos
Resultados de busca web não estão ocultos
Ocultar banners de mercadoria
- Banner de mercadoria está oculto
- Banner de mercadoria não está oculto
+ Os banners de mercadoria estão ocultos
+ Os banners de mercadoria não estão ocultos
Ocultar anúncios em tela cheia só funciona com dispositivos antigos
- Ocultar promoção do YouTube Premium
+ Ocultar promoções do YouTube Premium
Promoções do YouTube Premium sob o reprodutor de vídeo estão ocultas
Promoções do YouTube Premium sob o reprodutor de vídeo não estão ocultas
@@ -356,7 +356,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Deslizando para baixo até o menor valor não habilita o brilho automático
Automático
Tempo limite da sobreposição no gesto
- Quantidade em milissegundos que a sobreposição é visível
+ A quantidade de milissegundos em que a sobreposição é visível
Tamanho do texto de gesto de sobreposição
Tamanho do texto para o gesto de sobreposição
Visibilidade do fundo no gesto
@@ -927,7 +927,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
18.20.39 - Restaurar a velocidade de vídeo ampla & menu de qualidade
18.09.39 - Restaurar aba biblioteca
17.41.37 - Restaurar prateleira de lista de reprodução antiga
- 17.08.35 - Restaura UI antigo da interface
Definir página inicial
@@ -993,6 +992,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
Cor da barra de busca
Valor de cor inválido da barra. Usando o valor padrão.
+
+ Ignorar restrições de região de imagem
+ Usando imagem host yt4.ggpht.com
+ Usando a imagem original host\n\nHabilitando isso pode corrigir imagens ausentes que estão bloqueadas em algumas regiões
+
Início
diff --git a/src/main/resources/addresources/values-pt-rPT/strings.xml b/src/main/resources/addresources/values-pt-rPT/strings.xml
index 2621db2e6..2e3f6b99a 100644
--- a/src/main/resources/addresources/values-pt-rPT/strings.xml
+++ b/src/main/resources/addresources/values-pt-rPT/strings.xml
@@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Chave inválida. Não pode usar: \'%s\' como filtro
Chave inválida. \'%1$s\' é menor que %2$d caracteres
- Palavra-chave \'$s\' irá ocultar todos os vídeos
+ Palavra-chave \'%s\' irá ocultar todos os vídeos
Esconder anúncios gerais
@@ -989,6 +989,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
A cor da barra de busca
Valor de cor inválido da barra. Usando o valor padrão.
+
+ Ignorar restrições de região de imagem
+ Usando imagem host yt4.ggpht.com
+ Usando a imagem original host\n\nHabilitando isso pode corrigir imagens ausentes que estão bloqueadas em algumas regiões
+
Aba principal
diff --git a/src/main/resources/addresources/values-ro-rRO/strings.xml b/src/main/resources/addresources/values-ro-rRO/strings.xml
index 6393b0261..10fe94694 100644
--- a/src/main/resources/addresources/values-ro-rRO/strings.xml
+++ b/src/main/resources/addresources/values-ro-rRO/strings.xml
@@ -248,7 +248,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Cuvânt cheie nevalid. Nu se poate folosi: \'%s\' ca filtru
Cuvânt cheie nevalid. \'%1$s\' este mai puțin de %2$d caractere
- Cuvântul cheie \'$s\' va ascunde toate videoclipurile
+ Cuvântul cheie%sva ascunde toate videoclipurile
Ascunde reclamele generale
@@ -993,6 +993,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
Culoarea barei de căutare
Valoare nevalidă a culorii barei de căutare. Utilizarea valorii implicite.
+
+ Ignoră restricțiile regiunii imaginii
+ Utilizarea imaginii host yt4.ggpht.com
+ Folosind gazda originală a imaginii\n\nActivarea acesteia poate rezolva imaginile lipsă care sunt blocate în unele regiuni
+
Fila principală
diff --git a/src/main/resources/addresources/values-ru-rRU/strings.xml b/src/main/resources/addresources/values-ru-rRU/strings.xml
index 5623823c2..0dca24f65 100644
--- a/src/main/resources/addresources/values-ru-rRU/strings.xml
+++ b/src/main/resources/addresources/values-ru-rRU/strings.xml
@@ -142,14 +142,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
Расширяемые фрагменты под видео скрыты
Расширяемые фрагменты под видео отображены
Меню качества видео
- Меню качества видео скрыто
- Меню качества видео отображено
+ Меню качества видео в выдвижном меню плеера скрыто
+ Меню качества видео в выдвижном меню плеера отображено
Публикации сообщества
Публикации сообщества в ленте скрыты
Публикации сообщества в ленте отображены
Компактные баннеры
- Компактные баннеры скрыты
- Компактные баннеры отображены
+ Компактные баннеры в ленте скрыты
+ Компактные баннеры в ленте отображены
Раздел фильмов
Раздел фильмов в описании видео скрыт
Раздел фильмов в описании видео отображен
@@ -248,7 +248,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Недопустимое ключевое слово. Невозможно использовать: \'%s\' в качестве фильтра
Недопустимое ключевое слово. \'%1$s\' содержит менее %2$d символов
- Ключевое слово \'$s\' скроет все видео
+ Ключевое слово \'%s\' скроет все видео
Реклама общего формата
@@ -572,7 +572,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Прогресс воспроизведения
Прогресс воспроизведения в плеере скрыт
Прогресс воспроизведения в плеере отображен
- Миниатюры прогресса воспроизведения
+ Миниатюры
Миниатюры прогресса воспроизведения скрыты
Миниатюры прогресса воспроизведения отображены
@@ -679,21 +679,21 @@ This is because Crowdin requires temporarily flattening this file and removing t
Скрыты
- \"Дизлайки\" временно недоступны (таймаут API)
- \"Дизлайки\" недоступны (статус %d)
- \"Дизлайки\" недоступны (лимит клиентов API)
- \"Дизлайки\" недоступны (%s)
+ Дизлайки временно недоступны (таймаут API)
+ Дизлайки недоступны (статус %d)
+ Дизлайки недоступны (лимит клиентов API)
+ Дизлайки недоступны (%s)
Обновите видео для голосования с Return YouTube Dislike
- \"Дизлайки\" отображены
- \"Дизлайки\" скрыты
- \"Дизлайки\" в Shorts
- \"Дизлайки\" в Shorts отображены
- \"Дизлайки\" в Shorts отображены\n\nОграничение: \"Дизлайки\" могут не отображаться в режиме инкогнито
- \"Дизлайки\" в Shorts скрыты
- Варианты отображения \"Дизлайков\"
- \"Дизлайки\" отображаются как проценты
- \"Дизлайки\" отображаются как число
+ Дизлайки отображены
+ Дизлайки скрыты
+ Дизлайки в Shorts
+ Дизлайки в Shorts отображены
+ Дизлайки в Shorts отображены\n\nОграничение: Дизлайки могут не отображаться в режиме инкогнито
+ Дизлайки в Shorts скрыты
+ Варианты отображения дизлайков
+ Дизлайки отображаются как проценты
+ Дизлайки отображаются как число
Стиль кнопки \"Лайк\"
Кнопка \"Лайк\" стилизована для минимальной ширины
@@ -709,7 +709,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Время ответа API, минимальное
Время ответа API, максимальное
Время ответа API, последнее видео
- \"Дизлайки\" временно недоступны – действует ограничение скорости клиентского API
+ Дизлайки временно недоступны – действует ограничение скорости клиентского API
API получает голоса, количество запросов
Сетевые запросы не выполнены
Выполнено %d сетевых запросов
@@ -975,7 +975,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Кнопки перемотки
Кнопки перемотки вперед и назад скрыты
Кнопки перемотки вперед и назад отображены
- Непразрачность оверлея мини-плеера
+ Непрозрачность оверлея мини-плеера
Значение непрозрачности в пределах 0-100, где 0 - это прозрачно
Непрозрачность оверлея мини-плеера должна быть от 0 до 100
@@ -992,6 +992,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
Редактировать цвет прогресса воспроизведения
Недопустимое значение цвета
+
+ Обход ограничений региона
+ Использование хоста изображений yt4.ggpht.com
+ Использование оригинального хоста изображений\n\nВключение этой опции может исправить недостающие изображения, которые заблокированы в некоторых регионах
+
Вкладка \"Главная\"
@@ -999,13 +1004,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
Вкладка \"Подписки\"
Вкладка \"Вы\"
- Плейлисты плеера, рекомендации
+ Плейлисты плеера и рекомендации
Результаты поиска
Оригинальные миниатюры
DeArrow и оригинальные миниатюры
DeArrow и захват кадра
Захват кадра
- DeArrow предоставляет краудсорсинговые миниатюры для видео YouTube. Эти миниатюры часто более актуальны относительно предоставляемых YouTube\n\nПри активации URL-адреса видео будут отправлены на сервер API, при этом никакие другие данные отправлены не будут. Если видео не содержит миниатюр DeArrow, то будут отображены оригинальные миниатюры или миниатюры захвата кадра\n\nНажмите для получения дополнительной информации о DeArrow
+ DeArrow предоставляет краудсорсинговые миниатюры (часто более релевантные) для видео YouTube\n\nПри активации URL-адреса видео (и никакие другие данные) будут отправлены на сервер API. При отсутствии миниатюр DeArrow в видео отображаются оригинальные или миниатюры захвата кадра\n\nНажмите для получения дополнительной информации о DeArrow
Уведомление при недоступности API
Всплывающее уведомление при недоступности DeArrow отображено
Всплывающее уведомление при недоступности DeArrow скрыто
diff --git a/src/main/resources/addresources/values-si-rLK/strings.xml b/src/main/resources/addresources/values-si-rLK/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-si-rLK/strings.xml
+++ b/src/main/resources/addresources/values-si-rLK/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-sk-rSK/strings.xml b/src/main/resources/addresources/values-sk-rSK/strings.xml
index 02b999b31..466011cc5 100644
--- a/src/main/resources/addresources/values-sk-rSK/strings.xml
+++ b/src/main/resources/addresources/values-sk-rSK/strings.xml
@@ -242,7 +242,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Neplatné kľúčové slovo. Nemožno použiť: \"%s\" ako filter
Neplatné kľúčové slovo. \"%1$s\" má menej ako %2$d znakov
- Kľúčové slovo \"$s\" skryje všetky videá
+ Kľúčové slovo \"%s\" skryje všetky videá
Skryť všeobecné reklamy
@@ -422,9 +422,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
Tlačidlo Domov je skryté
Zobrazí sa tlačidlo Domov
- Skryť šortky
- Tlačidlo shorts je skryté
- Tlačidlo shorts je zobrazené
+ Skryť Shorts
+ Tlačidlo Shorts je skryté
+ Tlačidlo Shorts je zobrazené
Skryť Vytvoriť
Tlačidlo Vytvoriť je skryté
@@ -571,16 +571,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
- Skryť šortky v domácom informačnom kanáli
- Šortky v domácom feede sú skryté
- Zobrazujú sa krátke videá v domácom informačnom kanáli
+ Skryť Shorts v domácom informačnom kanáli
+ Shorts v domácom feede sú skryté
+ Zobrazujú sa Shorts videá v domácom informačnom kanáli
- Skryť krátke videá vo feede odberov
- Krátke videá v informačnom kanáli odberov sú skryté
- Vo feede odberov sa zobrazujú krátke videá
- Skryť krátke videá vo výsledkoch vyhľadávania
+ Skryť Shorts videá vo feede odberov
+ Shorts videá v informačnom kanáli odberov sú skryté
+ Vo feede odberov sa zobrazujú Shorts videá
+ Skryť Shorts videá vo výsledkoch vyhľadávania
Shorts vo výsledkoch vyhľadávania sú skryté
- Vo výsledkoch vyhľadávania sa zobrazujú krátke videá
+ Vo výsledkoch vyhľadávania sa zobrazujú Shorts videá
Skryť tlačidlo pripojenia
Tlačidlo Pripojiť sa je skryté
@@ -680,10 +680,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
Znova načítajte video a hlasujte pomocou funkcie Vrátiť Nepáči sa mi na YouTube
Nepáči sa mi
Nepáči sa mi nie sú zobrazené
- Zobrazovať, že sa mi nepáči v krátkych videách
- Nepáči sa mi zobrazené v krátkych videách
- Nepáči sa mi v krátkych videách\n\nObmedzenie: Nepáči sa mi v režime inkognito
- Nepáči sa skryté v krátkych videách
+ Zobrazovať, že sa mi nepáči v Shorts videách
+ Nepáči sa mi zobrazené v Shorts videách
+ Nepáči sa mi v Shorts videách\n\nObmedzenie: Nepáči sa mi v režime inkognito
+ Nepáči sa skryté v Shorts videách
Nepáči sa v percentách
Nepáči sa zobrazujú v percentách
Nepáči sa zobrazené ako číslo
@@ -940,8 +940,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Zakázať obnovenie prehrávača Shorts
- Prehrávač krátkych videí sa pri spustení aplikácie neobnoví
- Prehrávač krátkych videí sa obnoví pri spustení aplikácie
+ Prehrávač Shorts videí sa pri spustení aplikácie neobnoví
+ Prehrávač Shorts videí sa obnoví pri spustení aplikácie
Povoliť rozloženie tabletu
@@ -984,6 +984,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Farba vyhľadávacieho panela
Neplatná hodnota farby panela vyhľadávania. Použitie predvolenej hodnoty.
+
+
Karta Domov
diff --git a/src/main/resources/addresources/values-sl-rSI/strings.xml b/src/main/resources/addresources/values-sl-rSI/strings.xml
index 5bf40abc8..953bd725f 100644
--- a/src/main/resources/addresources/values-sl-rSI/strings.xml
+++ b/src/main/resources/addresources/values-sl-rSI/strings.xml
@@ -211,6 +211,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-sq-rAL/strings.xml b/src/main/resources/addresources/values-sq-rAL/strings.xml
index 384da35e4..7f6cabb18 100644
--- a/src/main/resources/addresources/values-sq-rAL/strings.xml
+++ b/src/main/resources/addresources/values-sq-rAL/strings.xml
@@ -206,6 +206,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-sr-rSP/strings.xml b/src/main/resources/addresources/values-sr-rSP/strings.xml
index 9c2cd2095..109e75397 100644
--- a/src/main/resources/addresources/values-sr-rSP/strings.xml
+++ b/src/main/resources/addresources/values-sr-rSP/strings.xml
@@ -31,8 +31,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
You're not correct. This is not the "correct" way and this text will not appear as expected the in app
-->
-
-
+
+
ReVanced
Желите ли да наставите?
Ресетуј
@@ -43,8 +43,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Подешавања ReVanced-а су враћена на подразумеване вредности
Увезено %d подешавања
Неуспешан увоз: %s
-
-
+
+
MicroG GmsCore није инсталиран. Инсталирајте га.
Неопходна радња
@@ -52,10 +52,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
Отвори веб-сајт
Оптимизација батерије за MicroG GmsCore мора бити онемогућена да би се спречили проблеми.\n\nДодирните дугме „Настави” и онемогућите оптимизацију батерије.
Настави
-
-
-
-
+
+
+
+
ReVanced
Користите верзију <i>%s</i> ReVanced печева
Напомена
@@ -63,8 +63,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Званични линкови
Увоз / Извоз
Увоз / Извоз подешавања ReVanced-а
-
-
+
+
О програму
Огласи
Алтернативне сличице
@@ -76,8 +76,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Контроле превлачења
Разно
Видео
-
-
+
+
Отклањање грешака
Омогућите или онемогућите опције за отклањање грешака
Евидентирање отклањања грешака
@@ -93,8 +93,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Искачуће обавештење се приказује ако дође до грешке
Искачуће обавештење се не приказује ако дође до грешке
Искључивање искачућих обавештења о грешци сакрива сва обавештења о грешкама у ReVanced-у.\n\nНећете бити обавештени ни о каквим неочекиваним догађајима.
-
-
+
+
Онемогући сјај дугмади „Свиђа ми се” / „Запрати”
Дугмад „Свиђа ми се” и „Запрати” неће светлети када се притисну
Дугмад „Свиђа ми се” и „Запрати” ће светлети када се притисну
@@ -249,9 +249,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
Неважећа кључна реч. Није могуће користити „%s”
Неважећа кључна реч. „%1$s” је краће од %2$d знакова
- Кључна реч „$s” ће сакрити све видее
-
-
+ Кључна реч „%s” ће сакрити све видее
+
+
Сакриј опште огласе
Општи огласи су скривени
Општи огласи су приказани
@@ -285,18 +285,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
Банери с робом су приказани
Сакривање огласа преко целог екрана ради само са старијим уређајима
-
-
+
+
Сакриј промоције за YouTube Premium
Промоције за YouTube Premium испод видео плејера су скривене
Промоције за YouTube Premium испод видео плејера су приказане
-
-
+
+
Сакриј огласе у видеу
Огласи у видеу су скривени
Огласи у видеу су приказани
-
-
+
+
Линк је копиран у привремену меморију
Линк са временском ознаком је копиран
Прикажи дугме за копирање линка видеа
@@ -305,14 +305,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
Прикажи дугме за копирање линка видеа са временском ознаком
Дугме је приказано. Додирните да бисте копирали линк видеа с временском ознаком. Додирните и задржите да бисте копирали линк видеа без временске ознаке
Дугме није приказано
-
-
+
+
Уклони дијалог о дискрецији гледаоца
Дијалог ће бити уклоњен
Дијалог ће бити приказан
Ово не заобилази старосно ограничење. Само га аутоматски прихвата.
-
-
+
+
Спољна преузимања
Подешавања за коришћење спољног програма за преузимање
Прикажи дугме за спољно преузимање
@@ -325,18 +325,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
Назив пакета програма за преузимање
Назив пакета инсталираног спољног програма за преузимање, као што је NewPipe или Seal
%s није инсталиран. Инсталирајте га.
-
-
+
+
Онемогући покрет прецизног премотавања
Покрет прецизног премотавања је онемогућен
Покрет прецизног премотавања је омогућен
-
-
+
+
Омогући додиривање траке за премотавање
Додиривање траке за премотавање је омогућено
Додиривање траке за премотавање је онемогућено
-
-
+
+
Омогући покрет за осветљеност
Превлачење за подешавање осветљености је омогућено
Превлачење за подешавање осветљености је онемогућено
@@ -364,13 +364,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
Видљивост позадине покрета превлачења
Праг трајања превлачења
Износ прага трајања превлачења
-
-
+
+
Онемогући аутоматске титлове
Аутоматски титлови су онемогућени
Аутоматски титлови су омогућени
-
-
+
+
Дугмад радњи
Сакријте или прикажите дугмад испод видеа
Сакриј дугмад „Свиђа ми се” и „Не свиђа ми се”
@@ -405,24 +405,24 @@ This is because Crowdin requires temporarily flattening this file and removing t
Сакриј дугме „Сачувај на плејлисту”
Дугме „Сачувај на плејлисту” је скривено
Дугме „Сачувај на плејлисту” је приказано
-
-
+
+
Сакриј дугме „Аутоплеј”
Дугме „Аутоплеј” је скривено
Дугме „Аутоплеј” је приказано
-
-
+
+
Сакриј дугме „Титл”
Дугме „Титл” је скривено
Дугме „Титл” је приказано
-
-
+
+
Сакриј дугме „Пребацуј”
Дугме „Пребацуј” је скривено
Дугме „Пребацуј” је приказано
-
-
+
+
Дугмад навигације
Сакријте или промените дугмад на траци за навигацију
@@ -448,8 +448,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Сакриј ознаке дугмади за навигацију
Ознаке дугмади за навигацију су скривене
Ознаке дугмади за навигацију су приказане
-
-
-
+
+
Сакриј дугмад за претходни и следећи видео
Дугмад су скривена
Дугмад су приказана
-
-
+
+
Сакриј картице албума
Картице албума су скривене
Картице албума су приказане
-
-
-
+
+
Сакриј кутију за колективно финансирање
Кутија за колективно финансирање је скривена
Кутија за колективно финансирање је приказана
-
-
+
+
Сакриј картице завршног екрана
Картице завршног екрана су скривене
Картице завршног екрана су приказане
-
-
+
+
Трака филтера
Сакријте или прикажите траку филтера у фиду, претрази или сродним видеима
Сакриј у фиду
@@ -548,36 +548,36 @@ This is because Crowdin requires temporarily flattening this file and removing t
Сакриј у сродним видеима
Скривено у сродним видеима
Приказано у сродним видеима
-
-
+
+
Сакриј плутајуће дугме микрофона
Плутајуће дугме микрофона је скривено
Плутајуће дугме микрофона је приказано
-
-
+
+
Онемогући амбијентални режим у режиму целог екрана
Амбијентални режим у режиму целог екрана је онемогућен
Амбијентални режим у режиму целог екрана је омогућен
-
-
+
+
Сакриј инфо картице
Инфо картице су скривене
Инфо картице су приказане
-
-
+
+
Онемогући анимације бројева
Бројеви нису анимирани
Бројеви су анимирани
-
-
+
+
Сакриј траку за премотавање у видео плејеру
Трака за премотавање у видео плејеру је скривена
Трака за премотавање у видео плејеру је приказана
Сакриј траку за премотавање на сличици видеа
Трака за премотавање на сличици видеа је скривена
Трака за премотавање на сличици видеа је приказана
-
-
+
+
Сакриј Shorts видее у фиду „Почетна”
Shorts видеи у фиду „Почетна” су скривени
@@ -656,28 +656,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
Сакриј траку за навигацију
Трака за навигацију је скривена
Трака за навигацију је приказана
-
-
+
+
Онемогући предложени видео на завршном екрану
Предложени видеи на завршном екрану ће бити скривени
Предложени видеи на завршном екрану ће бити приказани
-
-
+
+
Сакриј временску ознаку видеа
Временска ознака видеа је скривена
Временска ознака видеа је приказана
-
-
-
+
+
Непрозирност слоја плејера
Вредност непрозирности између 0-100, где је 0 прозирно
Прозирност преклопа плејера мора бити између 0-100
-
-
+
+
Скривено
Несвиђања привремено нису доступна (API истекао)
@@ -721,18 +721,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
Није остварено ниједно ограничење стопе клијента
Број остварених ограничења стопе клијента: %d
%d милисекунди
-
-
+
+
Омогући широку траку за претрагу
Широка трака за претрагу је омогућена
Широка трака за претрагу је онемогућена
-
-
+
+
Врати старе сличице на траци за премотавање
Сличице траке за премотавање ће се појавити изнад ње
Сличице траке за премотавање ће се појавити у режиму целог екрана
-
-
-
+
+
Лажирана верзија апликације
Верзија је лажирана
Верзија није лажирана
@@ -929,8 +929,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
18.09.39 - Враћа картицу збирке
17.41.37 - Враћа стару полицу плејлисте
17.33.42 - Враћа стари изглед корисничког интерфејса
-
-
+
+
Подешавање почетне странице
Подразумевана
@@ -946,19 +946,19 @@ This is because Crowdin requires temporarily flattening this file and removing t
Историја
У тренду
-
-
+
+
Онемогући наставак репродукције Shorts плејера
Shorts плејер неће наставити репродукцију при покретању апликације
Shorts плејер ће наставити репродукцију при покретању апликације
-
-
+
+
Омогући кориснички интерфејс таблета
Кориснички интерфејс таблета је омогућен
Кориснички интерфејс таблета је онемогућен
Објаве заједнице се не приказују у корисничком интерфејсу таблета
-
-
+
+
Мини-плејер
Промените стил минимизираног плејера у апликацији
Тип мини-плејера
@@ -980,21 +980,26 @@ This is because Crowdin requires temporarily flattening this file and removing t
Прозирност преклопа
Вредност непрозирности између 0-100, где је 0 прозирно
Прозирност преклопа мини-плејера мора бити између 0-100
-
-
+
+
Омогући екран учитавања с градијентом
Екран учитавања ће имати позадину с градијентом
Екран учитавања ће имати обичну позадину
-
-
+
+
Омогући прилагођену боју траке за премотавање
Прилагођена боја траке за премотавање је приказана
Оригинална боја траке за премотавање је приказана
Прилагођена боја траке за премотавање
Боја траке за премотавање
Неважећа вредност боје траке за премотавање. Коришћење подразумеване вредности.
-
-
+
+
+ Заобиђи ограничења региона слике
+ Коришћење хоста слике yt4.ggpht.com
+ Коришћење оригиналног хоста слике\n\nОмогућавањем овога можете да поправите недостајуће слике које су блокиране у неким регионима
+
+
Картица „Почетна”
@@ -1025,51 +1030,51 @@ This is because Crowdin requires temporarily flattening this file and removing t
DeArrow привремено није доступан (кôд статуса: %s)
DeArrow привремено није доступан
-
-
+
+
Прикажи саопштења ReVanced-а
Саопштења су приказана при покретању
Саопштења нису приказана при покретању
Приказивање саопштења при покретању
Неуспешно повезивање са пружаоцем саопштења
Одбаци
-
-
+
+
Омогући аутоматско понављање видеа
Аутоматско понављање видеа је омогућено
Аутоматско понављање видеа је онемогућено
-
-
+
+
Лажиране димензије уређаја
Димензије уређаја су лажиране\n\nВиши квалитети видеа ће можда бити откључан, али ћете можда имати застој при репродукцији видеа, краће трајање батерије и непознате нежељене ефекте
Димензије уређаја нису лажиране\n\nАко ово омогућите, виши квалитети видеа ће се можда откључати
Ако ово омогућите, можда ће доћи до застоја при репродукцији видеа, краћег трајања батерије и непознатих нежељених ефеката.
-
-
+
+
Подешавања GmsCore-а
Подешавања за GmsCore
-
-
+
+
Заобиђи URL преусмеравања
URL преусмеравања се заобилазе
URL преусмеравања се не заобилазе
-
-
+
+
Отвори линкове у прегледачу
Отварање линкова ван апликације
Отварање линкова у апликацији
-
-
+
+
Уклони параметар упита за праћење
Параметар упита за праћење је уклоњен из линкова
Параметар упита за праћење није уклоњен из линкова
-
-
+
+
Онемогући вибрацију при увеличавању
Вибрација при увеличавању је онемогућена
Вибрација при увеличавању је омогућена
-
-
+
+
Аутоматски квалитет
Запамти промене квалитета видеа
Промене квалитета се примењују на све видее
@@ -1079,36 +1084,36 @@ This is because Crowdin requires temporarily flattening this file and removing t
на мобилним подацима
на Wi-Fi мрежи
Промењен подразумевани квалитет %1$s на: %2$s
-
-
+
+
Прикажи дугме дијалога за брзину
Дугме је приказано
Дугме није приказано
-
-
+
+
Прилагођене брзине репродукције
Додајте или промените доступне брзине репродукције
Прилагођене брзине репродукције морају бити мање од %s. Коришћење подразумеваних вредности.
Неважеће прилагођене брзине репродукције. Коришћење подразумеваних вредности.
-
-
+
+
Запамти промене брзине репродукције
Промене брзине репродукције се примењују на све видее
Промене брзине репродукције се примењују само на тренутни видео
Подразумевана брзина репродукције
Брзина репродукције промењена на: %s
-
-
-
+
+
Омогући превлачење за премотавање
Превлачење за премотавање је омогућено
Превлачење за премотавање није омогућено
-
-
+
+
Лажиран клијент
Лажирање клијента да би се спречили проблеми са репродукцијом
Лажиран клијент
@@ -1120,9 +1125,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
Клијент је тренутно лажиран на Android VR\n\nНежељени ефекти обухватају:\н• Нема HDR видеа\n• Дечји видео снимци се не репродукују\n• Паузирани видео снимци могу насумично да се настављају\n• Сличице на траци за премотавање Shorts видеа лошег квалитета\n• Дугме за радњу „Преузми“ је увек скривено\n• Картице завршног екрана су увек скривене
Сличице у лажираном клијенту нису доступне (API истекао)
Сличице у лажираном клијенту привремено нису доступне: %s
-
+
-
+
Лажирани потпис апликације
Лажирање потписа апликације да би се спречили проблеми с репродукцијом
Лажирани потпис апликације
@@ -1137,52 +1142,52 @@ This is because Crowdin requires temporarily flattening this file and removing t
Сториборд није лажиран\n\nНежељени ефекти укључују:\n• Нема амбијенталног режима\n• Сличице на траци за премотавање су скривене
Лажирање сториборда привремено није доступно (API је истекао)
Лажирање сториборда привремено није доступно: %s
-
+
-
+
Омогући аутоматску осветљеност HDR режима
Аутоматска осветљеност HDR режима је омогућена
Аутоматска осветљеност HDR режима је онемогућена
-
-
-
-
+
+
+
+
Блокирај аудио огласе
Аудио огласи су блокирани
Аудио огласи су одблокирани
-
-
+
+
%s недоступан. Огласи ће се можда приказивати. Покушајте да пређете на другу услугу за блокирање огласа у подешавањима.
%s сервер је вратио грешку. Огласи ће се можда приказивати. Покушајте да пређете на другу услугу за блокирање огласа у подешавањима.
Блокирање уграђених видео огласа
Онемогућено
Luminous прокси
PurpleAdBlock прокси
-
-
+
+
Блокирај видео огласе
Видео огласи су блокирани
Видео огласи су одблокирани
-
-
+
+
порука избрисана
Приказ избрисаних порука
Не приказуј избрисане поруке
Сакриј избрисане поруке иза спојлера
Прикажи избрисане поруке као прецртан текст
-
-
+
+
Аутоматски преузми бодове канала
Бодови канала су аутоматски преузети
Бодови канала нису аутоматски преузети
-
-
+
+
Омогући Twitch режим отклањања грешака
Twitch режим отклањања грешака је омогућен (није препоручено)
Twitch режим отклањања грешака је онемогућен
-
-
+
+
Подешавања ReVanced-а
Огласи
Подешавања блокирања огласа
@@ -1197,6 +1202,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
Евидентирање отклањања грешака
Евиденције отклањања грешака су омогућене
Евиденције отклањања грешака су онемогућене
-
-
+
+
diff --git a/src/main/resources/addresources/values-sv-rSE/strings.xml b/src/main/resources/addresources/values-sv-rSE/strings.xml
index f53e6d4b5..418fa54a0 100644
--- a/src/main/resources/addresources/values-sv-rSE/strings.xml
+++ b/src/main/resources/addresources/values-sv-rSE/strings.xml
@@ -94,7 +94,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Att stänga av felmeddelanden döljer alla felaviseringar från ReVanced.\n\nDu kommer inte att meddelas om några oväntade händelser.
- Inaktivera glow som / prenumerationsknapp
+ Inaktivera gilla- / prenumerationsknapp glow
Gilla och prenumerera knappen kommer inte att lysa när det nämns
Gilla och prenumerera knappen lyser när det nämns
Dölj den gråa avgränsaren
@@ -104,6 +104,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Vattenstämpeln är dold
Vattenstämpeln är synlig
Dölj horisontella hyllor
+ Hyllor är dolda som:\n• Nyheter\n• Fortsätt titta på\n• Utforska fler kanaler\n• Handla\n• Titta på det igen
Hyllorna är synliga
@@ -247,7 +248,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Ogiltigt sökord. Kan inte använda \'%s\' som filter
Ogiltigt sökord. \'%1$s\' är mindre än %2$d tecken
- Nyckelord \'$s\' kommer att dölja alla videor
+ Nyckelord \'%s\' kommer att dölja alla videor
Dölj allmänna annonser
@@ -311,7 +312,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Detta kringgår inte åldersbegränsningen. Det accepterar bara det automatiskt.
- Externa nedladdningar
+ Externa nerladdningar
Inställningar för att använda en extern nerladdare
Visa extern nerladdningsknapp
Nerladdningsknappen visas i spelaren
@@ -396,6 +397,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Tack-knappen är dold
Tackknappen är synlig
+ Dölj klipp
Klipp knappen är dold
Klippknappen är synlig
@@ -420,7 +422,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Cast-knappen är synlig
- Navigation buttons
+ Navigeringsknappar
Dölj eller ändra knappar i navigeringsfältet
Dölj hem
@@ -428,8 +430,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Hemknappen är synlig
Dölj shorts
- Knappen shorts är dold
- Knappen shorts är synlig
+ Knappen Shorts är dold
+ Knappen Shorts är synlig
Dölj skapa
Knappen skapa är dold
@@ -447,7 +449,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Etiketter visas
+
+ Begränsningar för förbipassering av bildregionen
+ Använder bildvärd yt4.ggpht.com
+ Använda ursprungliga bildvärden\n\nAktivering av detta kan åtgärda saknade bilder som är blockerade i vissa regioner
+
- Hem flik
+ Hemflik
Flik för prenumeration
diff --git a/src/main/resources/addresources/values-sw-rKE/strings.xml b/src/main/resources/addresources/values-sw-rKE/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-sw-rKE/strings.xml
+++ b/src/main/resources/addresources/values-sw-rKE/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-ta-rIN/strings.xml b/src/main/resources/addresources/values-ta-rIN/strings.xml
index 14522cf36..f70f13557 100644
--- a/src/main/resources/addresources/values-ta-rIN/strings.xml
+++ b/src/main/resources/addresources/values-ta-rIN/strings.xml
@@ -211,6 +211,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-te-rIN/strings.xml b/src/main/resources/addresources/values-te-rIN/strings.xml
index 3c7c2bba2..b769e5a52 100644
--- a/src/main/resources/addresources/values-te-rIN/strings.xml
+++ b/src/main/resources/addresources/values-te-rIN/strings.xml
@@ -203,6 +203,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-th-rTH/strings.xml b/src/main/resources/addresources/values-th-rTH/strings.xml
index c9a58e1a6..2bdb6d042 100644
--- a/src/main/resources/addresources/values-th-rTH/strings.xml
+++ b/src/main/resources/addresources/values-th-rTH/strings.xml
@@ -271,6 +271,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-tl-rPH/strings.xml b/src/main/resources/addresources/values-tl-rPH/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-tl-rPH/strings.xml
+++ b/src/main/resources/addresources/values-tl-rPH/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-tr-rTR/strings.xml b/src/main/resources/addresources/values-tr-rTR/strings.xml
index 6636f75da..b0cbb79ab 100644
--- a/src/main/resources/addresources/values-tr-rTR/strings.xml
+++ b/src/main/resources/addresources/values-tr-rTR/strings.xml
@@ -89,10 +89,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
ReVanced hatasında tost bildirimi göster
Hata oluştuğunda tost bildirimi gösteriliyor
Hata oluştuğunda tost bildirimi gösterilmiyor
- Hata tost bildirimlerini gizlemek bütün ReVanced hata bildirimlerini gizler.\n\nBeklenmeyen playlar hakkında bilgilendirilmeyeceksiniz.
+ Hata tost bildirimlerini gizlemek bütün ReVanced hata bildirimlerini gizler.\n\nBeklenmeyen olaylar hakkında bilgilendirilmeyeceksiniz.
- Beğen / abone ol düğmesi parlamasını devre dışı bırak
+ Beğen / Abone ol düğmesi parlamasını devre dışı bırak
Beğen ve abone ol düğmesi bahsedildiğinde parlamayacak
Beğen ve abone ol düğmesi bahsedildiğinde parlayacak
Gri ayırıcıları gizle
@@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Geçersiz anahtar kelime. \'%s\' kullanılamaz
Geçersiz anahtar kelime. \'%1$s\' %2$d karakterden az
- \'$s\' anahtar kelimesi bütün videoları gizleyecektir
+ \'%s\' anahtar kelimesi bütün videoları gizleyecektir
Genel reklamları gizle
@@ -440,7 +440,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
\"Abonelikler\" butonu gösteriliyor
\"Oluştur\" butonunun ve \"Bildirimler\" butonunun yerlerini değiştir
- Oluştur düğmesi, Bildirimler düğmesiyle değiştirilir\n\nNot: Bu etkinleştirildiğinde video reklamlar da zorla gizlenir
+ Oluştur düğmesi, Bildirimler düğmesiyle değiştirilir\n\nNot: Bunu etkinleştirmek video reklamlarını da zorla gizler
\"Oluştur\" butonunun ve \"Bildirimler\" butonunun yerleri değiştirilmiyor
Gezinme düğmeleri etiketlerini gizle
Etiketler gizli
@@ -990,6 +990,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
Zaman çubuğunun rengi
Geçersiz renk değeri. Varsayılana sıfırlanıyor.
+
+ Resimlerin bölge kısıtlamalarını atla
+ yt4.ggpht.com resim sunucusu kullanılıyor
+ Orijinal resim sunucusu kullanılıyor\n\nBunu etkinleştirmek bazı bölgelerde engellenen eksik resimleri düzeltebilir
+
\"Ana Sayfa\" sekmesinde
diff --git a/src/main/resources/addresources/values-uk-rUA/strings.xml b/src/main/resources/addresources/values-uk-rUA/strings.xml
index c153efad3..3c2d5e4bc 100644
--- a/src/main/resources/addresources/values-uk-rUA/strings.xml
+++ b/src/main/resources/addresources/values-uk-rUA/strings.xml
@@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Ключове слово \'%s\' не можна використовувати
Ключове слово \'%1$s\' менше %2$d-х символів
- Ключове слово \'$s\' приховає всі відео
+ Ключове слово \'%s\' приховає всі відео
Приховати загальну рекламу
@@ -666,8 +666,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Затемнення плеєра при натисканні
@@ -990,6 +990,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
Редагувати колір панелі прогресу відтворення
Недійсне значення кольору панелі прогресу відтворення. Скинуто до значення за умовчанням.
+
+ Змінити хост зображень
+ Використовується хост зображень yt4.ggpht.com
+ Використовується оригінальний хост зображень\n\nУвімкнення цього параметра може виправити відсутні зображення, які заблоковано в деяких регіонах
+
Вкладка \"Головна\"
diff --git a/src/main/resources/addresources/values-ur-rIN/strings.xml b/src/main/resources/addresources/values-ur-rIN/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-ur-rIN/strings.xml
+++ b/src/main/resources/addresources/values-ur-rIN/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-uz-rUZ/strings.xml b/src/main/resources/addresources/values-uz-rUZ/strings.xml
index ba6b08c88..11cfdb81a 100644
--- a/src/main/resources/addresources/values-uz-rUZ/strings.xml
+++ b/src/main/resources/addresources/values-uz-rUZ/strings.xml
@@ -204,6 +204,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-vi-rVN/strings.xml b/src/main/resources/addresources/values-vi-rVN/strings.xml
index ddbe5bf7a..db3eb36d3 100644
--- a/src/main/resources/addresources/values-vi-rVN/strings.xml
+++ b/src/main/resources/addresources/values-vi-rVN/strings.xml
@@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Từ khóa không hợp lệ. Không thể dùng \'%s\'
Từ khóa không hợp lệ. \'%1$s\' nhỏ hơn %2$d ký tự
- Từ khóa \'$s\' sẽ ẩn toàn bộ video
+ Từ khóa \'%s\' sẽ ẩn toàn bộ video
Ẩn quảng cáo chung
@@ -990,6 +990,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Màu của thanh tiến trình
Màu thanh tiến trình không hợp lệ.
+
+
Thẻ trang chủ
diff --git a/src/main/resources/addresources/values-zh-rCN/strings.xml b/src/main/resources/addresources/values-zh-rCN/strings.xml
index d8b2f672e..d3e1c8bcc 100644
--- a/src/main/resources/addresources/values-zh-rCN/strings.xml
+++ b/src/main/resources/addresources/values-zh-rCN/strings.xml
@@ -246,6 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
无效关键字。不能使用: \'%s\' 作为过滤器
无效的关键字。\'%1$s\' 小于 %2$d 个字符
+ 关键词 \'%s\' 将隐藏所有视频
隐藏一般广告
@@ -394,6 +395,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
感谢按钮已隐藏
已显示感谢按钮
+ 隐藏剪辑
片段按钮隐藏
片段按钮显示
@@ -987,6 +989,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
搜索栏的颜色
无效的搜索栏颜色值。使用默认值。
+
+ 旁路图像区域限制
+ 使用图像主机 yt4.ggpht.com
+ 使用原始图像主机\n\n启用此功能可以修复在某些区域被阻止的缺失图像
+
主页标签
diff --git a/src/main/resources/addresources/values-zh-rHK/strings.xml b/src/main/resources/addresources/values-zh-rHK/strings.xml
index e991e7968..89b0983bd 100644
--- a/src/main/resources/addresources/values-zh-rHK/strings.xml
+++ b/src/main/resources/addresources/values-zh-rHK/strings.xml
@@ -234,6 +234,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
diff --git a/src/main/resources/addresources/values-zh-rTW/strings.xml b/src/main/resources/addresources/values-zh-rTW/strings.xml
index 320c845d0..3ee29ad9a 100644
--- a/src/main/resources/addresources/values-zh-rTW/strings.xml
+++ b/src/main/resources/addresources/values-zh-rTW/strings.xml
@@ -246,7 +246,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
無效的關鍵字。無法使用:「%s」來過濾
無效的關鍵字。「%1$s」小於 %2$d 字元
- 關鍵字「$s」將隱藏所有影片
+ 關鍵字「%s」將隱藏所有影片
隱藏一般廣告
@@ -990,6 +990,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
進度條顏色
無效的進度條顏色。已重設為預設值。
+
+ 繞過圖片區域限制
+ 使用圖片主機 yt4.ggpht.com
+ 使用原始圖片主機\n\n啟用此功能可以修復在某些區域被封鎖的缺失圖片
+
首頁標籤
diff --git a/src/main/resources/addresources/values-zu-rZA/strings.xml b/src/main/resources/addresources/values-zu-rZA/strings.xml
index bbb9bd4d3..a4fa31ad5 100644
--- a/src/main/resources/addresources/values-zu-rZA/strings.xml
+++ b/src/main/resources/addresources/values-zu-rZA/strings.xml
@@ -198,6 +198,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
+
+
From 4505fa4138bb55c8957790239c01b8dda63d6cdd Mon Sep 17 00:00:00 2001
From: Tim
Date: Fri, 19 Jul 2024 01:50:03 +0200
Subject: [PATCH 10/50] fix(Instagram - Hide ads): Restore compatibility with
latest version by fixing fingerprint (#3455)
---
.../patches/ad/fingerprints/AdInjectorFingerprint.kt | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/src/main/kotlin/app/revanced/patches/instagram/patches/ad/fingerprints/AdInjectorFingerprint.kt b/src/main/kotlin/app/revanced/patches/instagram/patches/ad/fingerprints/AdInjectorFingerprint.kt
index 1e250d7d6..d136042f8 100644
--- a/src/main/kotlin/app/revanced/patches/instagram/patches/ad/fingerprints/AdInjectorFingerprint.kt
+++ b/src/main/kotlin/app/revanced/patches/instagram/patches/ad/fingerprints/AdInjectorFingerprint.kt
@@ -2,16 +2,13 @@ package app.revanced.patches.instagram.patches.ad.fingerprints
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
-import com.android.tools.smali.dexlib2.Opcode
internal object AdInjectorFingerprint : MethodFingerprint(
returnType = "Z",
accessFlags = AccessFlags.PRIVATE.value,
parameters = listOf("L", "L"),
- opcodes = listOf(
- Opcode.IGET,
- Opcode.INVOKE_INTERFACE,
- Opcode.MOVE_RESULT_OBJECT,
+ strings = listOf(
+ "SponsoredContentController.insertItem",
+ "SponsoredContentController::Delivery",
),
- strings = listOf("SponsoredContentController::Delivery"),
)
From 5bc925107f9b41b75f3d379f7b9cc51210f41d88 Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Thu, 18 Jul 2024 23:52:11 +0000
Subject: [PATCH 11/50] chore(release): 4.12.0-dev.3 [skip ci]
# [4.12.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.2...v4.12.0-dev.3) (2024-07-18)
### Bug Fixes
* **Instagram - Hide ads:** Restore compatibility with latest version by fixing fingerprint ([#3455](https://github.com/ReVanced/revanced-patches/issues/3455)) ([4505fa4](https://github.com/ReVanced/revanced-patches/commit/4505fa4138bb55c8957790239c01b8dda63d6cdd))
---
CHANGELOG.md | 7 +++++++
gradle.properties | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 297a31943..708cb94e5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# [4.12.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.2...v4.12.0-dev.3) (2024-07-18)
+
+
+### Bug Fixes
+
+* **Instagram - Hide ads:** Restore compatibility with latest version by fixing fingerprint ([#3455](https://github.com/ReVanced/revanced-patches/issues/3455)) ([4505fa4](https://github.com/ReVanced/revanced-patches/commit/4505fa4138bb55c8957790239c01b8dda63d6cdd))
+
# [4.12.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.1...v4.12.0-dev.2) (2024-07-15)
diff --git a/gradle.properties b/gradle.properties
index 50c96b995..06620eb99 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
-version = 4.12.0-dev.2
+version = 4.12.0-dev.3
From ad590962275f888b335252ad5bed0f34e959d3c7 Mon Sep 17 00:00:00 2001
From: benjy3gg
Date: Sat, 20 Jul 2024 04:55:08 +0200
Subject: [PATCH 12/50] feat(Google News): Add `Enable CustomTabs` and `GmsCore
support` patch (#3111)
Co-authored-by: benjy3gg
Co-authored-by: oSumAtrIX
---
api/revanced-patches.api | 22 +++++++++
.../googlenews/customtabs/EnableCustomTabs.kt | 32 +++++++++++++
.../LaunchCustomTabFingerprint.kt | 18 +++++++
.../patches/googlenews/misc/gms/Constants.kt | 6 +++
.../misc/gms/GmsCoreSupportPatch.kt | 26 ++++++++++
.../misc/gms/GmsCoreSupportResourcePatch.kt | 11 +++++
.../MagazinesActivityOnCreateFingerprint.kt | 9 ++++
.../fingerprints/PrimeMethodFingerprint.kt | 7 +++
.../fingerprints/ServiceCheckFingerprint.kt | 12 +++++
.../misc/integrations/IntegrationsPatch.kt | 10 ++++
.../StartActivityInitFingerprint.kt | 41 ++++++++++++++++
.../detection/root/RootDetectionPatch.kt | 8 ++--
.../music/misc/gms/GmsCoreSupportPatch.kt | 6 +--
.../GooglePlayUtilityFingerprint.kt | 18 -------
.../customclients/ads/BaseDisableAdsPatch.kt | 2 +-
.../subscription/UnlockSubscriptionPatch.kt | 2 +-
.../misc/gms/BaseGmsCoreSupportPatch.kt | 14 ++++--
.../GooglePlayUtilityFingerprint.kt | 6 +--
.../youtube/misc/gms/GmsCoreSupportPatch.kt | 7 +--
.../kotlin/app/revanced/util/BytecodeUtils.kt | 47 ++++++++++++-------
20 files changed, 249 insertions(+), 55 deletions(-)
create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/customtabs/EnableCustomTabs.kt
create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/customtabs/fingerprints/LaunchCustomTabFingerprint.kt
create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/gms/Constants.kt
create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch.kt
create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportResourcePatch.kt
create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/MagazinesActivityOnCreateFingerprint.kt
create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/PrimeMethodFingerprint.kt
create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/ServiceCheckFingerprint.kt
create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/IntegrationsPatch.kt
create mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/fingerprints/StartActivityInitFingerprint.kt
delete mode 100644 src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt
rename src/main/kotlin/app/revanced/patches/{youtube => shared}/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt (80%)
diff --git a/api/revanced-patches.api b/api/revanced-patches.api
index 35e283213..e71ae0017 100644
--- a/api/revanced-patches.api
+++ b/api/revanced-patches.api
@@ -217,6 +217,24 @@ public final class app/revanced/patches/finanzonline/detection/root/RootDetectio
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
+public final class app/revanced/patches/googlenews/customtabs/EnableCustomTabs : app/revanced/patcher/patch/BytecodePatch {
+ public static final field INSTANCE Lapp/revanced/patches/googlenews/customtabs/EnableCustomTabs;
+ public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
+ public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
+}
+
+public final class app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch : app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch {
+ public static final field INSTANCE Lapp/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch;
+}
+
+public final class app/revanced/patches/googlenews/misc/gms/GmsCoreSupportResourcePatch : app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportResourcePatch {
+ public static final field INSTANCE Lapp/revanced/patches/googlenews/misc/gms/GmsCoreSupportResourcePatch;
+}
+
+public final class app/revanced/patches/googlenews/misc/integrations/IntegrationsPatch : app/revanced/patches/shared/misc/integrations/BaseIntegrationsPatch {
+ public static final field INSTANCE Lapp/revanced/patches/googlenews/misc/integrations/IntegrationsPatch;
+}
+
public final class app/revanced/patches/googlerecorder/restrictions/RemoveDeviceRestrictions : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/googlerecorder/restrictions/RemoveDeviceRestrictions;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
@@ -2033,7 +2051,11 @@ public final class app/revanced/util/BytecodeUtilsKt {
public static final fun indexOfIdResourceOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/String;)I
public static final fun injectHideViewCall (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;IILjava/lang/String;Ljava/lang/String;)V
public static final fun resultOrThrow (Lapp/revanced/patcher/fingerprint/MethodFingerprint;)Lapp/revanced/patcher/fingerprint/MethodFingerprintResult;
+ public static final fun returnEarly (Lapp/revanced/patcher/fingerprint/MethodFingerprint;Z)V
+ public static final fun returnEarly (Ljava/lang/Iterable;Z)V
public static final fun returnEarly (Ljava/util/List;Z)V
+ public static synthetic fun returnEarly$default (Lapp/revanced/patcher/fingerprint/MethodFingerprint;ZILjava/lang/Object;)V
+ public static synthetic fun returnEarly$default (Ljava/lang/Iterable;ZILjava/lang/Object;)V
public static synthetic fun returnEarly$default (Ljava/util/List;ZILjava/lang/Object;)V
public static final fun transformMethods (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableClass;Lkotlin/jvm/functions/Function1;)V
public static final fun traverseClassHierarchy (Lapp/revanced/patcher/data/BytecodeContext;Lapp/revanced/patcher/util/proxy/mutableTypes/MutableClass;Lkotlin/jvm/functions/Function1;)V
diff --git a/src/main/kotlin/app/revanced/patches/googlenews/customtabs/EnableCustomTabs.kt b/src/main/kotlin/app/revanced/patches/googlenews/customtabs/EnableCustomTabs.kt
new file mode 100644
index 000000000..9e520c41e
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/googlenews/customtabs/EnableCustomTabs.kt
@@ -0,0 +1,32 @@
+package app.revanced.patches.googlenews.customtabs
+
+import app.revanced.patcher.data.BytecodeContext
+import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
+import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
+import app.revanced.patcher.patch.BytecodePatch
+import app.revanced.patcher.patch.annotation.CompatiblePackage
+import app.revanced.patcher.patch.annotation.Patch
+import app.revanced.patches.googlenews.customtabs.fingerprints.LaunchCustomTabFingerprint
+import app.revanced.util.resultOrThrow
+import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
+
+@Patch(
+ name = "Enable CustomTabs",
+ description = "Enables CustomTabs to open articles in your default browser.",
+ compatiblePackages = [CompatiblePackage("com.google.android.apps.magazines")],
+)
+@Suppress("unused")
+object EnableCustomTabs : BytecodePatch(
+ setOf(LaunchCustomTabFingerprint)
+) {
+ override fun execute(context: BytecodeContext) {
+ LaunchCustomTabFingerprint.resultOrThrow().let { result ->
+ result.mutableMethod.apply {
+ val checkIndex = result.scanResult.patternScanResult!!.endIndex + 1
+ val register = getInstruction(checkIndex).registerA
+
+ replaceInstruction(checkIndex, "const/4 v$register, 0x1")
+ }
+ }
+ }
+}
diff --git a/src/main/kotlin/app/revanced/patches/googlenews/customtabs/fingerprints/LaunchCustomTabFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlenews/customtabs/fingerprints/LaunchCustomTabFingerprint.kt
new file mode 100644
index 000000000..fcb39ba1d
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/googlenews/customtabs/fingerprints/LaunchCustomTabFingerprint.kt
@@ -0,0 +1,18 @@
+package app.revanced.patches.googlenews.customtabs.fingerprints
+
+import app.revanced.patcher.extensions.or
+import app.revanced.patcher.fingerprint.MethodFingerprint
+import com.android.tools.smali.dexlib2.AccessFlags
+import com.android.tools.smali.dexlib2.Opcode
+
+internal object LaunchCustomTabFingerprint : MethodFingerprint(
+ accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR,
+ opcodes = listOf(
+ Opcode.IPUT_OBJECT,
+ Opcode.CONST_4,
+ Opcode.IPUT,
+ Opcode.CONST_4,
+ Opcode.IPUT_BOOLEAN,
+ ),
+ customFingerprint = { _, classDef -> classDef.endsWith("CustomTabsArticleLauncher;") },
+)
diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/Constants.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/Constants.kt
new file mode 100644
index 000000000..fb5606248
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/Constants.kt
@@ -0,0 +1,6 @@
+package app.revanced.patches.googlenews.misc.gms
+
+internal object Constants {
+ const val MAGAZINES_PACKAGE_NAME = "com.google.android.apps.magazines"
+ const val REVANCED_MAGAZINES_PACKAGE_NAME = "app.revanced.android.magazines"
+}
diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch.kt
new file mode 100644
index 000000000..e0e239d6a
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch.kt
@@ -0,0 +1,26 @@
+package app.revanced.patches.googlenews.misc.gms
+
+import app.revanced.patches.googlenews.misc.gms.Constants.MAGAZINES_PACKAGE_NAME
+import app.revanced.patches.googlenews.misc.gms.Constants.REVANCED_MAGAZINES_PACKAGE_NAME
+import app.revanced.patches.googlenews.misc.gms.GmsCoreSupportResourcePatch.gmsCoreVendorGroupIdOption
+import app.revanced.patches.googlenews.misc.gms.fingerprints.MagazinesActivityOnCreateFingerprint
+import app.revanced.patches.googlenews.misc.gms.fingerprints.ServiceCheckFingerprint
+import app.revanced.patches.googlenews.misc.integrations.IntegrationsPatch
+import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch
+
+@Suppress("unused")
+object GmsCoreSupportPatch : BaseGmsCoreSupportPatch(
+ fromPackageName = MAGAZINES_PACKAGE_NAME,
+ toPackageName = REVANCED_MAGAZINES_PACKAGE_NAME,
+ primeMethodFingerprint = null,
+ earlyReturnFingerprints = setOf(ServiceCheckFingerprint),
+ mainActivityOnCreateFingerprint = MagazinesActivityOnCreateFingerprint,
+ integrationsPatchDependency = IntegrationsPatch::class,
+ gmsCoreSupportResourcePatch = GmsCoreSupportResourcePatch,
+ // Remove version constraint,
+ // once https://github.com/ReVanced/revanced-patches/pull/3111#issuecomment-2240877277 is resolved.
+ compatiblePackages = setOf(CompatiblePackage(MAGAZINES_PACKAGE_NAME, setOf("5.108.0.644447823"))),
+ fingerprints = setOf(ServiceCheckFingerprint),
+) {
+ override val gmsCoreVendorGroupId by gmsCoreVendorGroupIdOption
+}
diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportResourcePatch.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportResourcePatch.kt
new file mode 100644
index 000000000..fd8bc9e03
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportResourcePatch.kt
@@ -0,0 +1,11 @@
+package app.revanced.patches.googlenews.misc.gms
+
+import app.revanced.patches.googlenews.misc.gms.Constants.MAGAZINES_PACKAGE_NAME
+import app.revanced.patches.googlenews.misc.gms.Constants.REVANCED_MAGAZINES_PACKAGE_NAME
+import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportResourcePatch
+
+object GmsCoreSupportResourcePatch : BaseGmsCoreSupportResourcePatch(
+ fromPackageName = MAGAZINES_PACKAGE_NAME,
+ toPackageName = REVANCED_MAGAZINES_PACKAGE_NAME,
+ spoofedPackageSignature = "24bb24c05e47e0aefa68a58a766179d9b613a666",
+)
diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/MagazinesActivityOnCreateFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/MagazinesActivityOnCreateFingerprint.kt
new file mode 100644
index 000000000..aa7834f86
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/MagazinesActivityOnCreateFingerprint.kt
@@ -0,0 +1,9 @@
+package app.revanced.patches.googlenews.misc.gms.fingerprints
+
+import app.revanced.patcher.fingerprint.MethodFingerprint
+
+internal object MagazinesActivityOnCreateFingerprint : MethodFingerprint(
+ customFingerprint = { methodDef, classDef ->
+ methodDef.name == "onCreate" && classDef.endsWith("/StartActivity;")
+ },
+)
diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/PrimeMethodFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/PrimeMethodFingerprint.kt
new file mode 100644
index 000000000..6ec214bbf
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/PrimeMethodFingerprint.kt
@@ -0,0 +1,7 @@
+package app.revanced.patches.googlenews.misc.gms.fingerprints
+
+import app.revanced.patcher.fingerprint.MethodFingerprint
+
+internal object PrimeMethodFingerprint : MethodFingerprint(
+ strings = listOf("com.google.android.GoogleCamera", "com.android.vending"),
+)
diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/ServiceCheckFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/ServiceCheckFingerprint.kt
new file mode 100644
index 000000000..b8228f7ef
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/ServiceCheckFingerprint.kt
@@ -0,0 +1,12 @@
+package app.revanced.patches.googlenews.misc.gms.fingerprints
+
+import app.revanced.patcher.extensions.or
+import app.revanced.patcher.fingerprint.MethodFingerprint
+import com.android.tools.smali.dexlib2.AccessFlags
+
+internal object ServiceCheckFingerprint : MethodFingerprint(
+ returnType = "V",
+ accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC,
+ parameters = listOf("L", "I"),
+ strings = listOf("Google Play Services not available", "GooglePlayServices not available due to error "),
+)
diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/IntegrationsPatch.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/IntegrationsPatch.kt
new file mode 100644
index 000000000..40e7d880f
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/IntegrationsPatch.kt
@@ -0,0 +1,10 @@
+package app.revanced.patches.googlenews.misc.integrations
+
+import app.revanced.patcher.patch.annotation.Patch
+import app.revanced.patches.googlenews.misc.integrations.fingerprints.StartActivityInitFingerprint
+import app.revanced.patches.shared.misc.integrations.BaseIntegrationsPatch
+
+@Patch(requiresIntegrations = true)
+object IntegrationsPatch : BaseIntegrationsPatch(
+ setOf(StartActivityInitFingerprint),
+)
diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/fingerprints/StartActivityInitFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/fingerprints/StartActivityInitFingerprint.kt
new file mode 100644
index 000000000..d69070665
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/fingerprints/StartActivityInitFingerprint.kt
@@ -0,0 +1,41 @@
+package app.revanced.patches.googlenews.misc.integrations.fingerprints
+
+import app.revanced.patches.googlenews.misc.integrations.fingerprints.StartActivityInitFingerprint.getApplicationContextIndex
+import app.revanced.patches.shared.misc.integrations.BaseIntegrationsPatch.IntegrationsFingerprint
+import app.revanced.util.getReference
+import app.revanced.util.indexOfFirstInstructionOrThrow
+import com.android.tools.smali.dexlib2.Opcode
+import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
+import com.android.tools.smali.dexlib2.iface.reference.MethodReference
+
+internal object StartActivityInitFingerprint : IntegrationsFingerprint(
+ opcodes = listOf(
+ Opcode.INVOKE_STATIC,
+ Opcode.MOVE_RESULT,
+ Opcode.CONST_4,
+ Opcode.IF_EQZ,
+ Opcode.CONST,
+ Opcode.INVOKE_VIRTUAL,
+ Opcode.IPUT_OBJECT,
+ Opcode.IPUT_BOOLEAN,
+ Opcode.INVOKE_VIRTUAL, // Calls startActivity.getApplicationContext().
+ Opcode.MOVE_RESULT_OBJECT,
+ ),
+ insertIndexResolver = { method ->
+ getApplicationContextIndex = method.indexOfFirstInstructionOrThrow {
+ getReference()?.name == "getApplicationContext"
+ }
+
+ getApplicationContextIndex + 2 // Below the move-result-object instruction
+ },
+ contextRegisterResolver = { method ->
+ val moveResultInstruction = method.implementation!!.instructions.elementAt(getApplicationContextIndex + 1)
+ as OneRegisterInstruction
+ moveResultInstruction.registerA
+ },
+ customFingerprint = { methodDef, classDef ->
+ methodDef.name == "onCreate" && classDef.endsWith("/StartActivity;")
+ },
+) {
+ private var getApplicationContextIndex = -1
+}
diff --git a/src/main/kotlin/app/revanced/patches/idaustria/detection/root/RootDetectionPatch.kt b/src/main/kotlin/app/revanced/patches/idaustria/detection/root/RootDetectionPatch.kt
index 2b720d3b2..16e5c7e7b 100644
--- a/src/main/kotlin/app/revanced/patches/idaustria/detection/root/RootDetectionPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/idaustria/detection/root/RootDetectionPatch.kt
@@ -12,15 +12,15 @@ import app.revanced.util.returnEarly
@Patch(
name = "Remove root detection",
description = "Removes the check for root permissions and unlocked bootloader.",
- compatiblePackages = [CompatiblePackage("at.gv.oe.app")]
+ compatiblePackages = [CompatiblePackage("at.gv.oe.app")],
)
@Suppress("unused")
object RootDetectionPatch : BytecodePatch(
- setOf(AttestationSupportedCheckFingerprint, BootloaderCheckFingerprint, RootCheckFingerprint)
+ setOf(AttestationSupportedCheckFingerprint, BootloaderCheckFingerprint, RootCheckFingerprint),
) {
- override fun execute(context: BytecodeContext) = listOf(
+ override fun execute(context: BytecodeContext) = setOf(
AttestationSupportedCheckFingerprint,
BootloaderCheckFingerprint,
- RootCheckFingerprint
+ RootCheckFingerprint,
).returnEarly(true)
}
diff --git a/src/main/kotlin/app/revanced/patches/music/misc/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/music/misc/gms/GmsCoreSupportPatch.kt
index 311aeb11f..db41381bb 100644
--- a/src/main/kotlin/app/revanced/patches/music/misc/gms/GmsCoreSupportPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/music/misc/gms/GmsCoreSupportPatch.kt
@@ -15,7 +15,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch(
primeMethodFingerprint = PrimeMethodFingerprint,
earlyReturnFingerprints = setOf(
ServiceCheckFingerprint,
- GooglePlayUtilityFingerprint,
CastDynamiteModuleFingerprint,
CastDynamiteModuleV2Fingerprint,
CastContextFetchFingerprint,
@@ -32,12 +31,11 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch(
"7.01.53",
"7.02.52",
"7.03.52",
- )
- )
+ ),
+ ),
),
fingerprints = setOf(
ServiceCheckFingerprint,
- GooglePlayUtilityFingerprint,
CastDynamiteModuleFingerprint,
CastDynamiteModuleV2Fingerprint,
CastContextFetchFingerprint,
diff --git a/src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt
deleted file mode 100644
index 45b49b345..000000000
--- a/src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package app.revanced.patches.music.misc.gms.fingerprints
-
-import app.revanced.patcher.extensions.or
-import app.revanced.patcher.fingerprint.MethodFingerprint
-import com.android.tools.smali.dexlib2.AccessFlags
-
-internal object GooglePlayUtilityFingerprint : MethodFingerprint(
- "I",
- AccessFlags.PUBLIC or AccessFlags.STATIC,
- listOf("L", "I"),
- strings = listOf(
- "This should never happen.",
- "MetadataValueReader",
- "GooglePlayServicesUtil",
- "com.android.vending",
- "android.hardware.type.embedded"
- )
-)
\ No newline at end of file
diff --git a/src/main/kotlin/app/revanced/patches/reddit/customclients/ads/BaseDisableAdsPatch.kt b/src/main/kotlin/app/revanced/patches/reddit/customclients/ads/BaseDisableAdsPatch.kt
index c8697180b..d412f84fc 100644
--- a/src/main/kotlin/app/revanced/patches/reddit/customclients/ads/BaseDisableAdsPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/reddit/customclients/ads/BaseDisableAdsPatch.kt
@@ -15,5 +15,5 @@ abstract class BaseDisableAdsPatch(
compatiblePackages = compatiblePackages,
fingerprints = setOf(IsAdsEnabledFingerprint),
) {
- override fun execute(context: BytecodeContext) = listOf(IsAdsEnabledFingerprint).returnEarly()
+ override fun execute(context: BytecodeContext) = IsAdsEnabledFingerprint.returnEarly()
}
diff --git a/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/subscription/UnlockSubscriptionPatch.kt b/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/subscription/UnlockSubscriptionPatch.kt
index a80adb154..02a274549 100644
--- a/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/subscription/UnlockSubscriptionPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/subscription/UnlockSubscriptionPatch.kt
@@ -22,5 +22,5 @@ object UnlockSubscriptionPatch : BytecodePatch(
setOf(StartSubscriptionActivityFingerprint, BillingClientOnServiceConnected),
) {
override fun execute(context: BytecodeContext) =
- listOf(StartSubscriptionActivityFingerprint, BillingClientOnServiceConnected).returnEarly()
+ setOf(StartSubscriptionActivityFingerprint, BillingClientOnServiceConnected).returnEarly()
}
diff --git a/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt
index dd3fa0b59..9eb35018a 100644
--- a/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt
@@ -13,6 +13,7 @@ import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch.Constants.AU
import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch.Constants.PERMISSIONS
import app.revanced.patches.shared.misc.gms.fingerprints.GmsCoreSupportFingerprint
import app.revanced.patches.shared.misc.gms.fingerprints.GmsCoreSupportFingerprint.GET_GMS_CORE_VENDOR_GROUP_ID_METHOD_NAME
+import app.revanced.patches.shared.misc.gms.fingerprints.GooglePlayUtilityFingerprint
import app.revanced.util.exception
import app.revanced.util.getReference
import app.revanced.util.returnEarly
@@ -42,7 +43,7 @@ import com.android.tools.smali.dexlib2.util.MethodUtil
abstract class BaseGmsCoreSupportPatch(
private val fromPackageName: String,
private val toPackageName: String,
- private val primeMethodFingerprint: MethodFingerprint,
+ private val primeMethodFingerprint: MethodFingerprint?,
private val earlyReturnFingerprints: Set,
private val mainActivityOnCreateFingerprint: MethodFingerprint,
private val integrationsPatchDependency: PatchClass,
@@ -62,6 +63,7 @@ abstract class BaseGmsCoreSupportPatch(
compatiblePackages = compatiblePackages,
fingerprints = setOf(
GmsCoreSupportFingerprint,
+ GooglePlayUtilityFingerprint,
mainActivityOnCreateFingerprint,
) + fingerprints,
requiresIntegrations = true,
@@ -91,10 +93,13 @@ abstract class BaseGmsCoreSupportPatch(
}
// Specific method that needs to be patched.
- transformPrimeMethod(packageName)
+ primeMethodFingerprint?.let { transformPrimeMethod(packageName) }
// Return these methods early to prevent the app from crashing.
- earlyReturnFingerprints.toList().returnEarly()
+ earlyReturnFingerprints.returnEarly()
+ if (GooglePlayUtilityFingerprint.result != null) {
+ GooglePlayUtilityFingerprint.returnEarly()
+ }
// Verify GmsCore is installed and whitelisted for power optimizations and background usage.
mainActivityOnCreateFingerprint.result?.mutableMethod?.addInstructions(
@@ -192,7 +197,7 @@ abstract class BaseGmsCoreSupportPatch(
}
private fun transformPrimeMethod(packageName: String) {
- primeMethodFingerprint.result?.mutableMethod?.apply {
+ primeMethodFingerprint!!.result?.mutableMethod?.apply {
var register = 2
val index = getInstructions().indexOfFirst {
@@ -305,6 +310,7 @@ abstract class BaseGmsCoreSupportPatch(
"com.google.android.gms.languageprofile.service.START",
"com.google.android.gms.clearcut.service.START",
"com.google.android.gms.icing.LIGHTWEIGHT_INDEX_SERVICE",
+ "com.google.android.gms.accountsettings.action.VIEW_SETTINGS",
// potoken
"com.google.android.gms.potokens.service.START",
diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt
similarity index 80%
rename from src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt
rename to src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt
index 219602aa4..be3fc0455 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt
+++ b/src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/GooglePlayUtilityFingerprint.kt
@@ -1,4 +1,4 @@
-package app.revanced.patches.youtube.misc.gms.fingerprints
+package app.revanced.patches.shared.misc.gms.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
@@ -8,5 +8,5 @@ internal object GooglePlayUtilityFingerprint : MethodFingerprint(
returnType = "I",
accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC,
parameters = listOf("L", "I"),
- strings = listOf("This should never happen.", "MetadataValueReader", "com.google.android.gms")
-)
\ No newline at end of file
+ strings = listOf("This should never happen.", "MetadataValueReader", "com.google.android.gms"),
+)
diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt
index 3ce5a8676..c2255025f 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt
@@ -7,7 +7,10 @@ import app.revanced.patches.youtube.misc.fix.playback.SpoofClientPatch
import app.revanced.patches.youtube.misc.gms.Constants.REVANCED_YOUTUBE_PACKAGE_NAME
import app.revanced.patches.youtube.misc.gms.Constants.YOUTUBE_PACKAGE_NAME
import app.revanced.patches.youtube.misc.gms.GmsCoreSupportResourcePatch.gmsCoreVendorGroupIdOption
-import app.revanced.patches.youtube.misc.gms.fingerprints.*
+import app.revanced.patches.youtube.misc.gms.fingerprints.CastDynamiteModuleFingerprint
+import app.revanced.patches.youtube.misc.gms.fingerprints.CastDynamiteModuleV2Fingerprint
+import app.revanced.patches.youtube.misc.gms.fingerprints.PrimeMethodFingerprint
+import app.revanced.patches.youtube.misc.gms.fingerprints.ServiceCheckFingerprint
import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch
import app.revanced.patches.youtube.shared.fingerprints.MainActivityOnCreateFingerprint
@@ -18,7 +21,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch(
primeMethodFingerprint = PrimeMethodFingerprint,
earlyReturnFingerprints = setOf(
ServiceCheckFingerprint,
- GooglePlayUtilityFingerprint,
CastDynamiteModuleFingerprint,
CastDynamiteModuleV2Fingerprint,
CastContextFetchFingerprint,
@@ -62,7 +64,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch(
),
fingerprints = setOf(
ServiceCheckFingerprint,
- GooglePlayUtilityFingerprint,
CastDynamiteModuleFingerprint,
CastDynamiteModuleV2Fingerprint,
CastContextFetchFingerprint,
diff --git a/src/main/kotlin/app/revanced/util/BytecodeUtils.kt b/src/main/kotlin/app/revanced/util/BytecodeUtils.kt
index 7e5388d3f..f0ac585cc 100644
--- a/src/main/kotlin/app/revanced/util/BytecodeUtils.kt
+++ b/src/main/kotlin/app/revanced/util/BytecodeUtils.kt
@@ -114,7 +114,7 @@ fun Method.indexOfFirstWideLiteralInstructionValue(literal: Long) = implementati
*
* @return the first literal instruction with the value, or throws [PatchException] if not found.
*/
-fun Method.indexOfFirstWideLiteralInstructionValueOrThrow(literal: Long) : Int {
+fun Method.indexOfFirstWideLiteralInstructionValueOrThrow(literal: Long): Int {
val index = indexOfFirstWideLiteralInstructionValue(literal)
if (index < 0) throw PatchException("Could not find literal value: $literal")
return index
@@ -160,7 +160,7 @@ inline fun Instruction.getReference() = (this as? Refere
// TODO: delete this on next major release, the overloaded method with an optional start index serves the same purposes.
// Method is deprecated, but annotation is commented out otherwise during compilation usage of the replacement is
// incorrectly flagged as deprecated.
-//@Deprecated("Use the overloaded method with an optional start index.", ReplaceWith("indexOfFirstInstruction(predicate)"))
+// @Deprecated("Use the overloaded method with an optional start index.", ReplaceWith("indexOfFirstInstruction(predicate)"))
fun Method.indexOfFirstInstruction(predicate: Instruction.() -> Boolean) = indexOfFirstInstruction(0, predicate)
/**
@@ -211,28 +211,41 @@ fun Method.findOpcodeIndicesReversed(opcode: Opcode): List {
}
/**
- * Return the resolved methods of [MethodFingerprint]s early.
+ * Return the resolved method early.
*/
-fun List.returnEarly(bool: Boolean = false) {
+fun MethodFingerprint.returnEarly(bool: Boolean = false) {
val const = if (bool) "0x1" else "0x0"
- this.forEach { fingerprint ->
- fingerprint.result?.let { result ->
- val stringInstructions = when (result.method.returnType.first()) {
- 'L' ->
- """
+ result?.let { result ->
+ val stringInstructions = when (result.method.returnType.first()) {
+ 'L' ->
+ """
const/4 v0, $const
return-object v0
"""
- 'V' -> "return-void"
- 'I', 'Z' ->
- """
+ 'V' -> "return-void"
+ 'I', 'Z' ->
+ """
const/4 v0, $const
return v0
"""
- else -> throw Exception("This case should never happen.")
- }
+ else -> throw Exception("This case should never happen.")
+ }
- result.mutableMethod.addInstructions(0, stringInstructions)
- } ?: throw fingerprint.exception
- }
+ result.mutableMethod.addInstructions(0, stringInstructions)
+ } ?: throw exception
+}
+
+/**
+ * Return the resolved methods early.
+ */
+fun Iterable.returnEarly(bool: Boolean = false) = forEach { fingerprint ->
+ fingerprint.returnEarly(bool)
+}
+
+/**
+ * Return the resolved methods early.
+ */
+@Deprecated("Use the Iterable version")
+fun List.returnEarly(bool: Boolean = false) = forEach { fingerprint ->
+ fingerprint.returnEarly(bool)
}
From cece0fefb30341fb42be238d3fb5a3113125b970 Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Sat, 20 Jul 2024 02:57:11 +0000
Subject: [PATCH 13/50] chore(release): 4.12.0-dev.4 [skip ci]
# [4.12.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.3...v4.12.0-dev.4) (2024-07-20)
### Features
* **Google News:** Add `Enable CustomTabs` and `GmsCore support` patch ([#3111](https://github.com/ReVanced/revanced-patches/issues/3111)) ([ad59096](https://github.com/ReVanced/revanced-patches/commit/ad590962275f888b335252ad5bed0f34e959d3c7))
---
CHANGELOG.md | 7 +++++++
gradle.properties | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 708cb94e5..7817fd652 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# [4.12.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.3...v4.12.0-dev.4) (2024-07-20)
+
+
+### Features
+
+* **Google News:** Add `Enable CustomTabs` and `GmsCore support` patch ([#3111](https://github.com/ReVanced/revanced-patches/issues/3111)) ([ad59096](https://github.com/ReVanced/revanced-patches/commit/ad590962275f888b335252ad5bed0f34e959d3c7))
+
# [4.12.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.2...v4.12.0-dev.3) (2024-07-18)
diff --git a/gradle.properties b/gradle.properties
index 06620eb99..d028b66ce 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
-version = 4.12.0-dev.3
+version = 4.12.0-dev.4
From 24528e0a6eec17ce0a3c52f8862585933615ad28 Mon Sep 17 00:00:00 2001
From: xob0t <32616886+xob0t@users.noreply.github.com>
Date: Sat, 20 Jul 2024 06:58:47 +0300
Subject: [PATCH 14/50] feat(Google Photos): Add `GmsCore support` patch
(#3414)
Co-authored-by: benjy3gg
Co-authored-by: oSumAtrIX
---
api/revanced-patches.api | 12 ++++++
.../all/misc/resources/AddResourcesPatch.kt | 5 ++-
.../misc/gms/GmsCoreSupportPatch.kt | 3 --
.../fingerprints/ServiceCheckFingerprint.kt | 12 ------
.../StartActivityInitFingerprint.kt | 2 +-
.../googlephotos/misc/gms/Constants.kt | 6 +++
.../misc/gms/GmsCoreSupportPatch.kt | 21 ++++++++++
.../misc/gms/GmsCoreSupportResourcePatch.kt | 11 ++++++
.../PhotosActivityOnCreateFingerprint.kt | 9 +++++
.../misc/integrations/IntegrationsPatch.kt | 10 +++++
.../HomeActivityInitFingerprint.kt | 37 ++++++++++++++++++
.../music/misc/gms/GmsCoreSupportPatch.kt | 8 ++--
.../fingerprints/ServiceCheckFingerprint.kt | 12 ------
.../misc/gms/BaseGmsCoreSupportPatch.kt | 12 ++++--
.../gms/BaseGmsCoreSupportResourcePatch.kt | 38 +++++++++----------
.../CastDynamiteModuleFingerprint.kt | 2 +-
.../fingerprints/ServiceCheckFingerprint.kt | 6 +--
.../youtube/misc/gms/GmsCoreSupportPatch.kt | 6 ---
.../CastDynamiteModuleFingerprint.kt | 8 ----
19 files changed, 143 insertions(+), 77 deletions(-)
delete mode 100644 src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/ServiceCheckFingerprint.kt
create mode 100644 src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/Constants.kt
create mode 100644 src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportPatch.kt
create mode 100644 src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportResourcePatch.kt
create mode 100644 src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/fingerprints/PhotosActivityOnCreateFingerprint.kt
create mode 100644 src/main/kotlin/app/revanced/patches/googlephotos/misc/integrations/IntegrationsPatch.kt
create mode 100644 src/main/kotlin/app/revanced/patches/googlephotos/misc/integrations/fingerprints/HomeActivityInitFingerprint.kt
delete mode 100644 src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/ServiceCheckFingerprint.kt
rename src/main/kotlin/app/revanced/patches/{music => shared}/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt (79%)
rename src/main/kotlin/app/revanced/patches/{youtube => shared}/misc/gms/fingerprints/ServiceCheckFingerprint.kt (66%)
delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt
diff --git a/api/revanced-patches.api b/api/revanced-patches.api
index e71ae0017..a93bca3da 100644
--- a/api/revanced-patches.api
+++ b/api/revanced-patches.api
@@ -235,6 +235,18 @@ public final class app/revanced/patches/googlenews/misc/integrations/Integration
public static final field INSTANCE Lapp/revanced/patches/googlenews/misc/integrations/IntegrationsPatch;
}
+public final class app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportPatch : app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch {
+ public static final field INSTANCE Lapp/revanced/patches/googlephotos/misc/gms/GmsCoreSupportPatch;
+}
+
+public final class app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportResourcePatch : app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportResourcePatch {
+ public static final field INSTANCE Lapp/revanced/patches/googlephotos/misc/gms/GmsCoreSupportResourcePatch;
+}
+
+public final class app/revanced/patches/googlephotos/misc/integrations/IntegrationsPatch : app/revanced/patches/shared/misc/integrations/BaseIntegrationsPatch {
+ public static final field INSTANCE Lapp/revanced/patches/googlephotos/misc/integrations/IntegrationsPatch;
+}
+
public final class app/revanced/patches/googlerecorder/restrictions/RemoveDeviceRestrictions : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/googlerecorder/restrictions/RemoveDeviceRestrictions;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
diff --git a/src/main/kotlin/app/revanced/patches/all/misc/resources/AddResourcesPatch.kt b/src/main/kotlin/app/revanced/patches/all/misc/resources/AddResourcesPatch.kt
index 09707c727..38c479b30 100644
--- a/src/main/kotlin/app/revanced/patches/all/misc/resources/AddResourcesPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/all/misc/resources/AddResourcesPatch.kt
@@ -347,7 +347,10 @@ object AddResourcesPatch : ResourcePatch(), MutableMap\n\n")
+ }
}
context.xmlEditor[targetFile.path].let { editor ->
diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch.kt
index e0e239d6a..c2a81ab9b 100644
--- a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch.kt
@@ -4,7 +4,6 @@ import app.revanced.patches.googlenews.misc.gms.Constants.MAGAZINES_PACKAGE_NAME
import app.revanced.patches.googlenews.misc.gms.Constants.REVANCED_MAGAZINES_PACKAGE_NAME
import app.revanced.patches.googlenews.misc.gms.GmsCoreSupportResourcePatch.gmsCoreVendorGroupIdOption
import app.revanced.patches.googlenews.misc.gms.fingerprints.MagazinesActivityOnCreateFingerprint
-import app.revanced.patches.googlenews.misc.gms.fingerprints.ServiceCheckFingerprint
import app.revanced.patches.googlenews.misc.integrations.IntegrationsPatch
import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch
@@ -13,14 +12,12 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch(
fromPackageName = MAGAZINES_PACKAGE_NAME,
toPackageName = REVANCED_MAGAZINES_PACKAGE_NAME,
primeMethodFingerprint = null,
- earlyReturnFingerprints = setOf(ServiceCheckFingerprint),
mainActivityOnCreateFingerprint = MagazinesActivityOnCreateFingerprint,
integrationsPatchDependency = IntegrationsPatch::class,
gmsCoreSupportResourcePatch = GmsCoreSupportResourcePatch,
// Remove version constraint,
// once https://github.com/ReVanced/revanced-patches/pull/3111#issuecomment-2240877277 is resolved.
compatiblePackages = setOf(CompatiblePackage(MAGAZINES_PACKAGE_NAME, setOf("5.108.0.644447823"))),
- fingerprints = setOf(ServiceCheckFingerprint),
) {
override val gmsCoreVendorGroupId by gmsCoreVendorGroupIdOption
}
diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/ServiceCheckFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/ServiceCheckFingerprint.kt
deleted file mode 100644
index b8228f7ef..000000000
--- a/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/fingerprints/ServiceCheckFingerprint.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package app.revanced.patches.googlenews.misc.gms.fingerprints
-
-import app.revanced.patcher.extensions.or
-import app.revanced.patcher.fingerprint.MethodFingerprint
-import com.android.tools.smali.dexlib2.AccessFlags
-
-internal object ServiceCheckFingerprint : MethodFingerprint(
- returnType = "V",
- accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC,
- parameters = listOf("L", "I"),
- strings = listOf("Google Play Services not available", "GooglePlayServices not available due to error "),
-)
diff --git a/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/fingerprints/StartActivityInitFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/fingerprints/StartActivityInitFingerprint.kt
index d69070665..b71636793 100644
--- a/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/fingerprints/StartActivityInitFingerprint.kt
+++ b/src/main/kotlin/app/revanced/patches/googlenews/misc/integrations/fingerprints/StartActivityInitFingerprint.kt
@@ -26,7 +26,7 @@ internal object StartActivityInitFingerprint : IntegrationsFingerprint(
getReference()?.name == "getApplicationContext"
}
- getApplicationContextIndex + 2 // Below the move-result-object instruction
+ getApplicationContextIndex + 2 // Below the move-result-object instruction.
},
contextRegisterResolver = { method ->
val moveResultInstruction = method.implementation!!.instructions.elementAt(getApplicationContextIndex + 1)
diff --git a/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/Constants.kt b/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/Constants.kt
new file mode 100644
index 000000000..f0311bcde
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/Constants.kt
@@ -0,0 +1,6 @@
+package app.revanced.patches.googlephotos.misc.gms
+
+internal object Constants {
+ const val PHOTOS_PACKAGE_NAME = "com.google.android.apps.photos"
+ const val REVANCED_PHOTOS_PACKAGE_NAME = "app.revanced.android.photos"
+}
diff --git a/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportPatch.kt
new file mode 100644
index 000000000..8aa775853
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportPatch.kt
@@ -0,0 +1,21 @@
+package app.revanced.patches.googlephotos.misc.gms
+
+import app.revanced.patches.googlephotos.misc.gms.Constants.PHOTOS_PACKAGE_NAME
+import app.revanced.patches.googlephotos.misc.gms.Constants.REVANCED_PHOTOS_PACKAGE_NAME
+import app.revanced.patches.googlephotos.misc.gms.GmsCoreSupportResourcePatch.gmsCoreVendorGroupIdOption
+import app.revanced.patches.googlephotos.misc.gms.fingerprints.PhotosActivityOnCreateFingerprint
+import app.revanced.patches.googlephotos.misc.integrations.IntegrationsPatch
+import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch
+
+@Suppress("unused")
+object GmsCoreSupportPatch : BaseGmsCoreSupportPatch(
+ fromPackageName = PHOTOS_PACKAGE_NAME,
+ toPackageName = REVANCED_PHOTOS_PACKAGE_NAME,
+ primeMethodFingerprint = null,
+ mainActivityOnCreateFingerprint = PhotosActivityOnCreateFingerprint,
+ integrationsPatchDependency = IntegrationsPatch::class,
+ gmsCoreSupportResourcePatch = GmsCoreSupportResourcePatch,
+ compatiblePackages = setOf(CompatiblePackage(PHOTOS_PACKAGE_NAME)),
+) {
+ override val gmsCoreVendorGroupId by gmsCoreVendorGroupIdOption
+}
diff --git a/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportResourcePatch.kt b/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportResourcePatch.kt
new file mode 100644
index 000000000..bd7f1d115
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/GmsCoreSupportResourcePatch.kt
@@ -0,0 +1,11 @@
+package app.revanced.patches.googlephotos.misc.gms
+
+import app.revanced.patches.googlephotos.misc.gms.Constants.PHOTOS_PACKAGE_NAME
+import app.revanced.patches.googlephotos.misc.gms.Constants.REVANCED_PHOTOS_PACKAGE_NAME
+import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportResourcePatch
+
+object GmsCoreSupportResourcePatch : BaseGmsCoreSupportResourcePatch(
+ fromPackageName = PHOTOS_PACKAGE_NAME,
+ toPackageName = REVANCED_PHOTOS_PACKAGE_NAME,
+ spoofedPackageSignature = "24bb24c05e47e0aefa68a58a766179d9b613a600",
+)
\ No newline at end of file
diff --git a/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/fingerprints/PhotosActivityOnCreateFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/fingerprints/PhotosActivityOnCreateFingerprint.kt
new file mode 100644
index 000000000..b5f306166
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/fingerprints/PhotosActivityOnCreateFingerprint.kt
@@ -0,0 +1,9 @@
+package app.revanced.patches.googlephotos.misc.gms.fingerprints
+
+import app.revanced.patcher.fingerprint.MethodFingerprint
+
+internal object PhotosActivityOnCreateFingerprint : MethodFingerprint(
+ customFingerprint = { methodDef, classDef ->
+ methodDef.name == "onCreate" && classDef.endsWith("/HomeActivity;")
+ },
+)
diff --git a/src/main/kotlin/app/revanced/patches/googlephotos/misc/integrations/IntegrationsPatch.kt b/src/main/kotlin/app/revanced/patches/googlephotos/misc/integrations/IntegrationsPatch.kt
new file mode 100644
index 000000000..35d0d241d
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/googlephotos/misc/integrations/IntegrationsPatch.kt
@@ -0,0 +1,10 @@
+package app.revanced.patches.googlephotos.misc.integrations
+
+import app.revanced.patcher.patch.annotation.Patch
+import app.revanced.patches.googlephotos.misc.integrations.fingerprints.HomeActivityInitFingerprint
+import app.revanced.patches.shared.misc.integrations.BaseIntegrationsPatch
+
+@Patch(requiresIntegrations = true)
+object IntegrationsPatch : BaseIntegrationsPatch(
+ setOf(HomeActivityInitFingerprint),
+)
diff --git a/src/main/kotlin/app/revanced/patches/googlephotos/misc/integrations/fingerprints/HomeActivityInitFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlephotos/misc/integrations/fingerprints/HomeActivityInitFingerprint.kt
new file mode 100644
index 000000000..1fb7bf440
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/googlephotos/misc/integrations/fingerprints/HomeActivityInitFingerprint.kt
@@ -0,0 +1,37 @@
+package app.revanced.patches.googlephotos.misc.integrations.fingerprints
+
+import app.revanced.patches.googlephotos.misc.integrations.fingerprints.HomeActivityInitFingerprint.getApplicationContextIndex
+import app.revanced.patches.shared.misc.integrations.BaseIntegrationsPatch.IntegrationsFingerprint
+import app.revanced.util.getReference
+import app.revanced.util.indexOfFirstInstructionOrThrow
+import com.android.tools.smali.dexlib2.Opcode
+import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
+import com.android.tools.smali.dexlib2.iface.reference.MethodReference
+
+internal object HomeActivityInitFingerprint : IntegrationsFingerprint(
+ opcodes = listOf(
+ Opcode.CONST_STRING,
+ Opcode.INVOKE_STATIC,
+ Opcode.MOVE_RESULT_OBJECT,
+ Opcode.IF_NEZ,
+ Opcode.INVOKE_VIRTUAL, // Calls getApplicationContext().
+ Opcode.MOVE_RESULT_OBJECT,
+ ),
+ insertIndexResolver = { method ->
+ getApplicationContextIndex = method.indexOfFirstInstructionOrThrow {
+ getReference()?.name == "getApplicationContext"
+ }
+
+ getApplicationContextIndex + 2 // Below the move-result-object instruction.
+ },
+ contextRegisterResolver = { method ->
+ val moveResultInstruction = method.implementation!!.instructions.elementAt(getApplicationContextIndex + 1)
+ as OneRegisterInstruction
+ moveResultInstruction.registerA
+ },
+ customFingerprint = { methodDef, classDef ->
+ methodDef.name == "onCreate" && classDef.endsWith("/HomeActivity;")
+ },
+) {
+ private var getApplicationContextIndex = -1
+}
diff --git a/src/main/kotlin/app/revanced/patches/music/misc/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/music/misc/gms/GmsCoreSupportPatch.kt
index db41381bb..035d069c5 100644
--- a/src/main/kotlin/app/revanced/patches/music/misc/gms/GmsCoreSupportPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/music/misc/gms/GmsCoreSupportPatch.kt
@@ -3,7 +3,9 @@ package app.revanced.patches.music.misc.gms
import app.revanced.patches.music.misc.gms.Constants.MUSIC_PACKAGE_NAME
import app.revanced.patches.music.misc.gms.Constants.REVANCED_MUSIC_PACKAGE_NAME
import app.revanced.patches.music.misc.gms.GmsCoreSupportResourcePatch.gmsCoreVendorGroupIdOption
-import app.revanced.patches.music.misc.gms.fingerprints.*
+import app.revanced.patches.music.misc.gms.fingerprints.CastDynamiteModuleV2Fingerprint
+import app.revanced.patches.music.misc.gms.fingerprints.MusicActivityOnCreateFingerprint
+import app.revanced.patches.music.misc.gms.fingerprints.PrimeMethodFingerprint
import app.revanced.patches.music.misc.integrations.IntegrationsPatch
import app.revanced.patches.shared.fingerprints.CastContextFetchFingerprint
import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch
@@ -14,8 +16,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch(
toPackageName = REVANCED_MUSIC_PACKAGE_NAME,
primeMethodFingerprint = PrimeMethodFingerprint,
earlyReturnFingerprints = setOf(
- ServiceCheckFingerprint,
- CastDynamiteModuleFingerprint,
CastDynamiteModuleV2Fingerprint,
CastContextFetchFingerprint,
),
@@ -35,8 +35,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch(
),
),
fingerprints = setOf(
- ServiceCheckFingerprint,
- CastDynamiteModuleFingerprint,
CastDynamiteModuleV2Fingerprint,
CastContextFetchFingerprint,
PrimeMethodFingerprint,
diff --git a/src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/ServiceCheckFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/ServiceCheckFingerprint.kt
deleted file mode 100644
index 536048502..000000000
--- a/src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/ServiceCheckFingerprint.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package app.revanced.patches.music.misc.gms.fingerprints
-
-import app.revanced.patcher.extensions.or
-import app.revanced.patcher.fingerprint.MethodFingerprint
-import com.android.tools.smali.dexlib2.AccessFlags
-
-internal object ServiceCheckFingerprint : MethodFingerprint(
- "V",
- AccessFlags.PUBLIC or AccessFlags.STATIC,
- listOf("L", "I"),
- strings = listOf("Google Play Services not available"),
-)
diff --git a/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt
index 9eb35018a..9f773b03a 100644
--- a/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt
@@ -11,9 +11,11 @@ import app.revanced.patches.all.misc.packagename.ChangePackageNamePatch
import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch.Constants.ACTIONS
import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch.Constants.AUTHORITIES
import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch.Constants.PERMISSIONS
+import app.revanced.patches.shared.misc.gms.fingerprints.CastDynamiteModuleFingerprint
import app.revanced.patches.shared.misc.gms.fingerprints.GmsCoreSupportFingerprint
import app.revanced.patches.shared.misc.gms.fingerprints.GmsCoreSupportFingerprint.GET_GMS_CORE_VENDOR_GROUP_ID_METHOD_NAME
import app.revanced.patches.shared.misc.gms.fingerprints.GooglePlayUtilityFingerprint
+import app.revanced.patches.shared.misc.gms.fingerprints.ServiceCheckFingerprint
import app.revanced.util.exception
import app.revanced.util.getReference
import app.revanced.util.returnEarly
@@ -44,7 +46,7 @@ abstract class BaseGmsCoreSupportPatch(
private val fromPackageName: String,
private val toPackageName: String,
private val primeMethodFingerprint: MethodFingerprint?,
- private val earlyReturnFingerprints: Set,
+ private val earlyReturnFingerprints: Set = setOf(),
private val mainActivityOnCreateFingerprint: MethodFingerprint,
private val integrationsPatchDependency: PatchClass,
gmsCoreSupportResourcePatch: BaseGmsCoreSupportResourcePatch,
@@ -54,7 +56,7 @@ abstract class BaseGmsCoreSupportPatch(
) : BytecodePatch(
name = "GmsCore support",
description = "Allows patched Google apps to run without root and under a different package name " +
- "by using GmsCore instead of Google Play Services.",
+ "by using GmsCore instead of Google Play Services.",
dependencies = setOf(
ChangePackageNamePatch::class,
gmsCoreSupportResourcePatch::class,
@@ -64,6 +66,8 @@ abstract class BaseGmsCoreSupportPatch(
fingerprints = setOf(
GmsCoreSupportFingerprint,
GooglePlayUtilityFingerprint,
+ ServiceCheckFingerprint,
+ CastDynamiteModuleFingerprint,
mainActivityOnCreateFingerprint,
) + fingerprints,
requiresIntegrations = true,
@@ -96,7 +100,7 @@ abstract class BaseGmsCoreSupportPatch(
primeMethodFingerprint?.let { transformPrimeMethod(packageName) }
// Return these methods early to prevent the app from crashing.
- earlyReturnFingerprints.returnEarly()
+ (earlyReturnFingerprints + ServiceCheckFingerprint + CastDynamiteModuleFingerprint).returnEarly()
if (GooglePlayUtilityFingerprint.result != null) {
GooglePlayUtilityFingerprint.returnEarly()
}
@@ -105,7 +109,7 @@ abstract class BaseGmsCoreSupportPatch(
mainActivityOnCreateFingerprint.result?.mutableMethod?.addInstructions(
0,
"invoke-static/range { p0 .. p0 }, Lapp/revanced/integrations/shared/GmsCoreSupport;->" +
- "checkGmsCore(Landroid/app/Activity;)V",
+ "checkGmsCore(Landroid/app/Activity;)V",
) ?: throw mainActivityOnCreateFingerprint.exception
// Change the vendor of GmsCore in ReVanced Integrations.
diff --git a/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportResourcePatch.kt b/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportResourcePatch.kt
index f77a6d361..d36c1b1e5 100644
--- a/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportResourcePatch.kt
+++ b/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportResourcePatch.kt
@@ -96,27 +96,23 @@ abstract class BaseGmsCoreSupportResourcePatch(
private fun ResourceContext.patchManifest() {
val packageName = ChangePackageNamePatch.setOrGetFallbackPackageName(toPackageName)
- val manifest = this.get("AndroidManifest.xml").readText()
- this.get("AndroidManifest.xml").writeText(
- manifest.replace(
- "package=\"$fromPackageName",
- "package=\"$packageName",
- ).replace(
- "android:authorities=\"$fromPackageName",
- "android:authorities=\"$packageName",
- ).replace(
- "$fromPackageName.permission.C2D_MESSAGE",
- "$packageName.permission.C2D_MESSAGE",
- ).replace(
- "$fromPackageName.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION",
- "$packageName.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION",
- ).replace(
- "com.google.android.c2dm",
- "$gmsCoreVendorGroupId.android.c2dm",
- ).replace(
- "",
- "",
- ),
+ val transformations = mapOf(
+ "package=\"$fromPackageName" to "package=\"$packageName",
+ "android:authorities=\"$fromPackageName" to "android:authorities=\"$packageName",
+ "$fromPackageName.permission.C2D_MESSAGE" to "$packageName.permission.C2D_MESSAGE",
+ "$fromPackageName.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION" to "$packageName.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION",
+ "com.google.android.c2dm" to "$packageName.android.c2dm",
+ "com.google.android.libraries.photos.api.mars" to "$packageName.android.apps.photos.api.mars",
+ "" to "",
+ )
+
+ get("AndroidManifest.xml", false).writeText(
+ transformations.entries.fold(get("AndroidManifest.xml", false).readText()) { acc, (from, to) ->
+ acc.replace(
+ from,
+ to
+ )
+ }
)
}
diff --git a/src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt
similarity index 79%
rename from src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt
rename to src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt
index c1c8ec8cc..7773e378d 100644
--- a/src/main/kotlin/app/revanced/patches/music/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt
+++ b/src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt
@@ -1,4 +1,4 @@
-package app.revanced.patches.music.misc.gms.fingerprints
+package app.revanced.patches.shared.misc.gms.fingerprints
import app.revanced.patcher.fingerprint.MethodFingerprint
diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/ServiceCheckFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/ServiceCheckFingerprint.kt
similarity index 66%
rename from src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/ServiceCheckFingerprint.kt
rename to src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/ServiceCheckFingerprint.kt
index f48de5b41..49f187162 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/ServiceCheckFingerprint.kt
+++ b/src/main/kotlin/app/revanced/patches/shared/misc/gms/fingerprints/ServiceCheckFingerprint.kt
@@ -1,4 +1,4 @@
-package app.revanced.patches.youtube.misc.gms.fingerprints
+package app.revanced.patches.shared.misc.gms.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
@@ -8,5 +8,5 @@ internal object ServiceCheckFingerprint : MethodFingerprint(
returnType = "V",
accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC,
parameters = listOf("L", "I"),
- strings = listOf("Google Play Services not available", "GooglePlayServices not available due to error ")
-)
\ No newline at end of file
+ strings = listOf("Google Play Services not available")
+)
diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt
index c2255025f..e74a3d11e 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt
@@ -7,10 +7,8 @@ import app.revanced.patches.youtube.misc.fix.playback.SpoofClientPatch
import app.revanced.patches.youtube.misc.gms.Constants.REVANCED_YOUTUBE_PACKAGE_NAME
import app.revanced.patches.youtube.misc.gms.Constants.YOUTUBE_PACKAGE_NAME
import app.revanced.patches.youtube.misc.gms.GmsCoreSupportResourcePatch.gmsCoreVendorGroupIdOption
-import app.revanced.patches.youtube.misc.gms.fingerprints.CastDynamiteModuleFingerprint
import app.revanced.patches.youtube.misc.gms.fingerprints.CastDynamiteModuleV2Fingerprint
import app.revanced.patches.youtube.misc.gms.fingerprints.PrimeMethodFingerprint
-import app.revanced.patches.youtube.misc.gms.fingerprints.ServiceCheckFingerprint
import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch
import app.revanced.patches.youtube.shared.fingerprints.MainActivityOnCreateFingerprint
@@ -20,8 +18,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch(
toPackageName = REVANCED_YOUTUBE_PACKAGE_NAME,
primeMethodFingerprint = PrimeMethodFingerprint,
earlyReturnFingerprints = setOf(
- ServiceCheckFingerprint,
- CastDynamiteModuleFingerprint,
CastDynamiteModuleV2Fingerprint,
CastContextFetchFingerprint,
),
@@ -63,8 +59,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch(
),
),
fingerprints = setOf(
- ServiceCheckFingerprint,
- CastDynamiteModuleFingerprint,
CastDynamiteModuleV2Fingerprint,
CastContextFetchFingerprint,
PrimeMethodFingerprint,
diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt
deleted file mode 100644
index 783c093c6..000000000
--- a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/CastDynamiteModuleFingerprint.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package app.revanced.patches.youtube.misc.gms.fingerprints
-
-
-import app.revanced.patcher.fingerprint.MethodFingerprint
-
-internal object CastDynamiteModuleFingerprint : MethodFingerprint(
- strings = listOf("com.google.android.gms.cast.framework.internal.CastDynamiteModuleImpl")
-)
\ No newline at end of file
From 5f81b40e7d5567fb5689d08ccc9caeaa267c3143 Mon Sep 17 00:00:00 2001
From: epireyn <48213068+epireyn@users.noreply.github.com>
Date: Sat, 20 Jul 2024 06:00:19 +0200
Subject: [PATCH 15/50] feat: Add `Hide mock location` patch (#3417)
Co-authored-by: oSumAtrIX
---
api/revanced-patches.api | 8 +++
.../location/hide/HideMockLocationPatch.kt | 56 +++++++++++++++++++
2 files changed, 64 insertions(+)
create mode 100644 src/main/kotlin/app/revanced/patches/all/location/hide/HideMockLocationPatch.kt
diff --git a/api/revanced-patches.api b/api/revanced-patches.api
index a93bca3da..a602a5b4c 100644
--- a/api/revanced-patches.api
+++ b/api/revanced-patches.api
@@ -22,6 +22,14 @@ public final class app/revanced/patches/all/interaction/gestures/PredictiveBackG
public fun execute (Lapp/revanced/patcher/data/ResourceContext;)V
}
+public final class app/revanced/patches/all/location/hide/HideMockLocationPatch : app/revanced/patches/all/misc/transformation/BaseTransformInstructionsPatch {
+ public static final field INSTANCE Lapp/revanced/patches/all/location/hide/HideMockLocationPatch;
+ public synthetic fun filterMap (Lcom/android/tools/smali/dexlib2/iface/ClassDef;Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/iface/instruction/Instruction;I)Ljava/lang/Object;
+ public fun filterMap (Lcom/android/tools/smali/dexlib2/iface/ClassDef;Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/iface/instruction/Instruction;I)Lkotlin/Pair;
+ public synthetic fun transform (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Ljava/lang/Object;)V
+ public fun transform (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Lkotlin/Pair;)V
+}
+
public final class app/revanced/patches/all/misc/debugging/EnableAndroidDebuggingPatch : app/revanced/patcher/patch/ResourcePatch {
public static final field INSTANCE Lapp/revanced/patches/all/misc/debugging/EnableAndroidDebuggingPatch;
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
diff --git a/src/main/kotlin/app/revanced/patches/all/location/hide/HideMockLocationPatch.kt b/src/main/kotlin/app/revanced/patches/all/location/hide/HideMockLocationPatch.kt
new file mode 100644
index 000000000..235a3f7bf
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/all/location/hide/HideMockLocationPatch.kt
@@ -0,0 +1,56 @@
+@file:Suppress("unused")
+
+package app.revanced.patches.all.location.hide
+
+import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
+import app.revanced.patcher.patch.annotation.Patch
+import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
+import app.revanced.patches.all.misc.transformation.BaseTransformInstructionsPatch
+import app.revanced.patches.all.misc.transformation.IMethodCall
+import app.revanced.patches.all.misc.transformation.fromMethodReference
+import app.revanced.util.getReference
+import com.android.tools.smali.dexlib2.iface.ClassDef
+import com.android.tools.smali.dexlib2.iface.Method
+import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
+import com.android.tools.smali.dexlib2.iface.instruction.Instruction
+import com.android.tools.smali.dexlib2.iface.reference.MethodReference
+
+@Patch(
+ name = "Hide mock location",
+ description = "Prevents the app from knowing the device location is being mocked by a third party app.",
+ use = false
+)
+object HideMockLocationPatch : BaseTransformInstructionsPatch>() {
+ override fun filterMap(
+ classDef: ClassDef,
+ method: Method,
+ instruction: Instruction,
+ instructionIndex: Int
+ ): Pair? {
+ val reference = instruction.getReference() ?: return null
+ if (fromMethodReference(reference) == null) return null
+
+ return instruction to instructionIndex
+ }
+
+ override fun transform(mutableMethod: MutableMethod, entry: Pair) {
+ val (instruction, index) = entry
+ instruction as FiveRegisterInstruction
+
+ // Replace return value with a constant `false` boolean.
+ mutableMethod.replaceInstruction(
+ index + 1,
+ "const/4 v${instruction.registerC}, 0x0"
+ )
+ }
+}
+
+private enum class MethodCall(
+ override val definedClassName: String,
+ override val methodName: String,
+ override val methodParams: Array,
+ override val returnType: String
+) : IMethodCall {
+ IsMock("Landroid/location/Location;", "isMock", emptyArray(), "Z"),
+ IsFromMockProvider("Landroid/location/Location;", "isFromMockProvider", emptyArray(), "Z")
+}
From d1dbd2ccff56649be0c2854db1bfa04d0d6ddaae Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Sat, 20 Jul 2024 04:02:23 +0000
Subject: [PATCH 16/50] chore(release): 4.12.0-dev.5 [skip ci]
# [4.12.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.4...v4.12.0-dev.5) (2024-07-20)
### Features
* Add `Hide mock location` patch ([#3417](https://github.com/ReVanced/revanced-patches/issues/3417)) ([5f81b40](https://github.com/ReVanced/revanced-patches/commit/5f81b40e7d5567fb5689d08ccc9caeaa267c3143))
* **Google Photos:** Add `GmsCore support` patch ([#3414](https://github.com/ReVanced/revanced-patches/issues/3414)) ([24528e0](https://github.com/ReVanced/revanced-patches/commit/24528e0a6eec17ce0a3c52f8862585933615ad28))
---
CHANGELOG.md | 8 ++++++++
gradle.properties | 2 +-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7817fd652..a692f00d1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,11 @@
+# [4.12.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.4...v4.12.0-dev.5) (2024-07-20)
+
+
+### Features
+
+* Add `Hide mock location` patch ([#3417](https://github.com/ReVanced/revanced-patches/issues/3417)) ([5f81b40](https://github.com/ReVanced/revanced-patches/commit/5f81b40e7d5567fb5689d08ccc9caeaa267c3143))
+* **Google Photos:** Add `GmsCore support` patch ([#3414](https://github.com/ReVanced/revanced-patches/issues/3414)) ([24528e0](https://github.com/ReVanced/revanced-patches/commit/24528e0a6eec17ce0a3c52f8862585933615ad28))
+
# [4.12.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.3...v4.12.0-dev.4) (2024-07-20)
diff --git a/gradle.properties b/gradle.properties
index d028b66ce..45082e922 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
-version = 4.12.0-dev.4
+version = 4.12.0-dev.5
From 371c52e2770eda1a6172abde7c86c0f3f102d05b Mon Sep 17 00:00:00 2001
From: oSumAtrIX
Date: Sat, 20 Jul 2024 06:14:19 +0200
Subject: [PATCH 17/50] build: Bump dependencies
---
.github/workflows/pull_strings.yml | 2 +-
.github/workflows/push_strings.yml | 2 +-
gradle/libs.versions.toml | 6 +-
gradle/wrapper/gradle-wrapper.properties | 4 +-
package-lock.json | 2152 ++++++++--------------
package.json | 4 +-
6 files changed, 787 insertions(+), 1383 deletions(-)
diff --git a/.github/workflows/pull_strings.yml b/.github/workflows/pull_strings.yml
index e30bc10e7..e1d931932 100644
--- a/.github/workflows/pull_strings.yml
+++ b/.github/workflows/pull_strings.yml
@@ -17,7 +17,7 @@ jobs:
ref: dev
- name: Pull strings
- uses: crowdin/github-action@v1
+ uses: crowdin/github-action@v2
with:
config: crowdin.yml
download_translations: true
diff --git a/.github/workflows/push_strings.yml b/.github/workflows/push_strings.yml
index e78140251..27c294cf7 100644
--- a/.github/workflows/push_strings.yml
+++ b/.github/workflows/push_strings.yml
@@ -19,7 +19,7 @@ jobs:
fetch-depth: 0
- name: Push strings
- uses: crowdin/github-action@v1
+ uses: crowdin/github-action@v2
with:
config: crowdin.yml
upload_sources: true
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 323dbd6b2..3a4060085 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -2,9 +2,9 @@
revanced-patcher = "19.3.1"
#noinspection GradleDependency
smali = "3.0.5" # 3.0.7 breaks binary compatibility. Tracking https://github.com/google/smali/issues/58.
-guava = "33.1.0-jre"
-gson = "2.10.1"
-binary-compatibility-validator = "0.14.0"
+guava = "33.2.1-jre"
+gson = "2.11.0"
+binary-compatibility-validator = "0.15.1"
kotlin = "2.0.0"
[libraries]
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 381baa9ce..68e8816d7 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionSha256Sum=544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
+distributionSha256Sum=d725d707bfabd4dfdc958c624003b3c80accc03f7037b5122c4b1d0ef15cecab
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/package-lock.json b/package-lock.json
index bbfda1da6..1a7023e55 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,17 +8,18 @@
"@saithodev/semantic-release-backmerge": "^4.0.1",
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/git": "^10.0.1",
- "gradle-semantic-release-plugin": "^1.9.1",
- "semantic-release": "^23.0.8"
+ "gradle-semantic-release-plugin": "^1.9.2",
+ "semantic-release": "^24.0.0"
}
},
"node_modules/@babel/code-frame": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz",
- "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
+ "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/highlight": "^7.24.6",
+ "@babel/highlight": "^7.24.7",
"picocolors": "^1.0.0"
},
"engines": {
@@ -26,21 +27,23 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz",
- "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+ "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz",
- "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
+ "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.24.6",
+ "@babel/helper-validator-identifier": "^7.24.7",
"chalk": "^2.4.2",
"js-tokens": "^4.0.0",
"picocolors": "^1.0.0"
@@ -54,6 +57,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^1.9.0"
},
@@ -66,6 +70,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
@@ -80,6 +85,7 @@
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "1.1.3"
}
@@ -88,13 +94,15 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@babel/highlight/node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -104,6 +112,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^3.0.0"
},
@@ -116,6 +125,7 @@
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
"integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
"dev": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=0.1.90"
@@ -126,6 +136,7 @@
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "2.0.5",
"run-parallel": "^1.1.9"
@@ -139,6 +150,7 @@
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 8"
}
@@ -148,6 +160,7 @@
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@nodelib/fs.scandir": "2.1.5",
"fastq": "^1.6.0"
@@ -161,6 +174,7 @@
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz",
"integrity": "sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 18"
}
@@ -170,6 +184,7 @@
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.2.tgz",
"integrity": "sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/auth-token": "^5.0.0",
"@octokit/graphql": "^8.0.0",
@@ -188,6 +203,7 @@
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.1.tgz",
"integrity": "sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/types": "^13.0.0",
"universal-user-agent": "^7.0.2"
@@ -201,6 +217,7 @@
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.1.tgz",
"integrity": "sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/request": "^9.0.0",
"@octokit/types": "^13.0.0",
@@ -214,13 +231,15 @@
"version": "22.2.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz",
"integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@octokit/plugin-paginate-rest": {
- "version": "11.3.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.0.tgz",
- "integrity": "sha512-n4znWfRinnUQF6TPyxs7EctSAA3yVSP4qlJP2YgI3g9d4Ae2n5F3XDOjbUluKRxPU3rfsgpOboI4O4VtPc6Ilg==",
+ "version": "11.3.3",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.3.tgz",
+ "integrity": "sha512-o4WRoOJZlKqEEgj+i9CpcmnByvtzoUYC6I8PD2SA95M+BJ2x8h7oLcVOg9qcowWXBOdcTRsMZiwvM3EyLm9AfA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/types": "^13.5.0"
},
@@ -236,6 +255,7 @@
"resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.1.1.tgz",
"integrity": "sha512-G9Ue+x2odcb8E1XIPhaFBnTTIrrUDfXN05iFXiqhR+SeeeDMMILcAnysOsxUpEWcQp2e5Ft397FCXTcPkiPkLw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/request-error": "^6.0.0",
"@octokit/types": "^13.0.0",
@@ -249,10 +269,11 @@
}
},
"node_modules/@octokit/plugin-throttling": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.3.0.tgz",
- "integrity": "sha512-B5YTToSRTzNSeEyssnrT7WwGhpIdbpV9NKIs3KyTWHX6PhpYn7gqF/+lL3BvsASBM3Sg5BAUYk7KZx5p/Ec77w==",
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.3.1.tgz",
+ "integrity": "sha512-Qd91H4liUBhwLB2h6jZ99bsxoQdhgPk6TdwnClPyTBSDAdviGPceViEgUwj+pcQDmB/rfAXAXK7MTochpHM3yQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/types": "^13.0.0",
"bottleneck": "^2.15.3"
@@ -265,10 +286,11 @@
}
},
"node_modules/@octokit/request": {
- "version": "9.1.1",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.1.1.tgz",
- "integrity": "sha512-pyAguc0p+f+GbQho0uNetNQMmLG1e80WjkIaqqgUkihqUp0boRU6nKItXO4VWnr+nbZiLGEyy4TeKRwqaLvYgw==",
+ "version": "9.1.3",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.1.3.tgz",
+ "integrity": "sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/endpoint": "^10.0.0",
"@octokit/request-error": "^6.0.1",
@@ -280,10 +302,11 @@
}
},
"node_modules/@octokit/request-error": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.1.tgz",
- "integrity": "sha512-1mw1gqT3fR/WFvnoVpY/zUM2o/XkMs/2AszUUG9I69xn0JFLv6PGkPhNk5lbfvROs79wiS0bqiJNxfCZcRJJdg==",
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.4.tgz",
+ "integrity": "sha512-VpAhIUxwhWZQImo/dWAN/NpPqqojR6PSLgLYAituLM6U+ddx9hCioFGwBr5Mi+oi5CLeJkcAs3gJ0PYYzU6wUg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/types": "^13.0.0"
},
@@ -296,6 +319,7 @@
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz",
"integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/openapi-types": "^22.2.0"
}
@@ -305,6 +329,7 @@
"resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz",
"integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12.22.0"
}
@@ -314,6 +339,7 @@
"resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz",
"integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"graceful-fs": "4.2.10"
},
@@ -325,13 +351,15 @@
"version": "4.2.10",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/@pnpm/npm-conf": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz",
"integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@pnpm/config.env-replace": "^1.1.0",
"@pnpm/network.ca-file": "^1.0.1",
@@ -346,6 +374,7 @@
"resolved": "https://registry.npmjs.org/@saithodev/semantic-release-backmerge/-/semantic-release-backmerge-4.0.1.tgz",
"integrity": "sha512-WDsU28YrXSLx0xny7FgFlEk8DCKGcj6OOhA+4Q9k3te1jJD1GZuqY8sbIkVQaw9cqJ7CT+fCZUN6QDad8JW4Dg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@semantic-release/error": "^3.0.0",
"aggregate-error": "^3.1.0",
@@ -360,6 +389,7 @@
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz",
"integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 18"
}
@@ -369,6 +399,7 @@
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz",
"integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/auth-token": "^4.0.0",
"@octokit/graphql": "^7.1.0",
@@ -387,6 +418,7 @@
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz",
"integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/types": "^13.1.0",
"universal-user-agent": "^6.0.0"
@@ -400,6 +432,7 @@
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz",
"integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/request": "^8.3.0",
"@octokit/types": "^13.0.0",
@@ -413,13 +446,15 @@
"version": "20.0.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz",
"integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/plugin-paginate-rest": {
"version": "9.2.1",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz",
"integrity": "sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/types": "^12.6.0"
},
@@ -435,6 +470,7 @@
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz",
"integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/openapi-types": "^20.0.0"
}
@@ -444,6 +480,7 @@
"resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz",
"integrity": "sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/request-error": "^5.0.0",
"@octokit/types": "^12.0.0",
@@ -461,6 +498,7 @@
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz",
"integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/openapi-types": "^20.0.0"
}
@@ -470,6 +508,7 @@
"resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.2.0.tgz",
"integrity": "sha512-nOpWtLayKFpgqmgD0y3GqXafMFuKcA4tRPZIfu7BArd2lEZeb1988nhWhwx4aZWmjDmUfdgVf7W+Tt4AmvRmMQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/types": "^12.2.0",
"bottleneck": "^2.15.3"
@@ -486,6 +525,7 @@
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz",
"integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/openapi-types": "^20.0.0"
}
@@ -495,6 +535,7 @@
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz",
"integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/endpoint": "^9.0.1",
"@octokit/request-error": "^5.1.0",
@@ -510,6 +551,7 @@
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz",
"integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/types": "^13.1.0",
"deprecation": "^2.0.0",
@@ -524,6 +566,7 @@
"resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-11.1.0.tgz",
"integrity": "sha512-cXNTbv3nXR2hlzHjAMgbuiQVtvWHTlwwISt60B+4NZv01y/QRY7p2HcJm8Eh2StzcTJoNnflvKjHH/cjFS7d5g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"conventional-changelog-angular": "^7.0.0",
"conventional-commits-filter": "^4.0.0",
@@ -545,6 +588,7 @@
"resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-9.2.6.tgz",
"integrity": "sha512-shi+Lrf6exeNZF+sBhK+P011LSbhmIAoUEgEY6SsxF8irJ+J2stwI5jkyDQ+4gzYyDImzV6LCKdYB9FXnQRWKA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/core": "^5.0.0",
"@octokit/plugin-paginate-rest": "^9.0.0",
@@ -575,6 +619,7 @@
"resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz",
"integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
}
@@ -584,6 +629,7 @@
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz",
"integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"clean-stack": "^5.2.0",
"indent-string": "^5.0.0"
@@ -600,6 +646,7 @@
"resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.3.tgz",
"integrity": "sha512-KUsozQGhRBAnoVg4UMZj9ep436VEGwT536/jwSqB7vcEfA6oncCUU7UIYTRdLx7GvTtqn0kBjnkfLVkcnBa2YQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@semantic-release/error": "^4.0.0",
"aggregate-error": "^5.0.0",
@@ -627,6 +674,7 @@
"resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz",
"integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
}
@@ -636,6 +684,7 @@
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz",
"integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"clean-stack": "^5.2.0",
"indent-string": "^5.0.0"
@@ -652,6 +701,7 @@
"resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
"integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cross-spawn": "^7.0.3",
"get-stream": "^8.0.1",
@@ -675,6 +725,7 @@
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
"integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=16"
},
@@ -687,6 +738,7 @@
"resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-12.1.0.tgz",
"integrity": "sha512-g6M9AjUKAZUZnxaJZnouNBeDNTCUrJ5Ltj+VJ60gJeDaRRahcHsry9HW8yKrnKkKNkx5lbWiEP1FPMqVNQz8Kg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"conventional-changelog-angular": "^7.0.0",
"conventional-changelog-writer": "^7.0.0",
@@ -711,6 +763,7 @@
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz",
"integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=16"
},
@@ -718,17 +771,32 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/@saithodev/semantic-release-backmerge/node_modules/ansi-escapes": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz",
+ "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@saithodev/semantic-release-backmerge/node_modules/before-after-hook": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
"integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==",
- "dev": true
+ "dev": true,
+ "license": "Apache-2.0"
},
"node_modules/@saithodev/semantic-release-backmerge/node_modules/clean-stack": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz",
"integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"escape-string-regexp": "5.0.0"
},
@@ -739,11 +807,75 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/@saithodev/semantic-release-backmerge/node_modules/conventional-changelog-angular": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz",
+ "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "compare-func": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@saithodev/semantic-release-backmerge/node_modules/conventional-changelog-writer": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz",
+ "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "conventional-commits-filter": "^4.0.0",
+ "handlebars": "^4.7.7",
+ "json-stringify-safe": "^5.0.1",
+ "meow": "^12.0.1",
+ "semver": "^7.5.2",
+ "split2": "^4.0.0"
+ },
+ "bin": {
+ "conventional-changelog-writer": "cli.mjs"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@saithodev/semantic-release-backmerge/node_modules/conventional-commits-filter": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz",
+ "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@saithodev/semantic-release-backmerge/node_modules/conventional-commits-parser": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz",
+ "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-text-path": "^2.0.0",
+ "JSONStream": "^1.3.5",
+ "meow": "^12.0.1",
+ "split2": "^4.0.0"
+ },
+ "bin": {
+ "conventional-commits-parser": "cli.mjs"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
"node_modules/@saithodev/semantic-release-backmerge/node_modules/cosmiconfig": {
"version": "8.3.6",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
"integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"import-fresh": "^3.3.0",
"js-yaml": "^4.1.0",
@@ -770,6 +902,7 @@
"resolved": "https://registry.npmjs.org/env-ci/-/env-ci-10.0.0.tgz",
"integrity": "sha512-U4xcd/utDYFgMh0yWj07R1H6L5fwhVbmxBCpnL0DbVSDZVnsC82HONw0wxtxNkIAcua3KtbomQvIk5xFZGAQJw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"execa": "^8.0.0",
"java-properties": "^1.0.2"
@@ -783,6 +916,7 @@
"resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
"integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cross-spawn": "^7.0.3",
"get-stream": "^8.0.1",
@@ -806,6 +940,7 @@
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
"integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=16"
},
@@ -818,6 +953,7 @@
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
"integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -830,6 +966,7 @@
"resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz",
"integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"semver-regex": "^4.0.5"
},
@@ -845,6 +982,7 @@
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
"integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=16.17.0"
}
@@ -854,6 +992,7 @@
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
"integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -866,6 +1005,7 @@
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
"integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
@@ -878,6 +1018,7 @@
"resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz",
"integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"lodash.capitalize": "^4.2.1",
"lodash.escaperegexp": "^4.1.2",
@@ -894,6 +1035,7 @@
"resolved": "https://registry.npmjs.org/marked/-/marked-9.1.6.tgz",
"integrity": "sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==",
"dev": true,
+ "license": "MIT",
"bin": {
"marked": "bin/marked.js"
},
@@ -906,6 +1048,7 @@
"resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-6.2.0.tgz",
"integrity": "sha512-ubWhwcBFHnXsjYNsu+Wndpg0zhY4CahSpPlA70PlO0rR9r2sZpkyU+rkCsOWH+KMEkx847UpALON+HWgxowFtw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-escapes": "^6.2.0",
"cardinal": "^2.1.1",
@@ -921,11 +1064,25 @@
"marked": ">=1 <12"
}
},
+ "node_modules/@saithodev/semantic-release-backmerge/node_modules/meow": {
+ "version": "12.1.1",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz",
+ "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@saithodev/semantic-release-backmerge/node_modules/mimic-fn": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
"integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -938,6 +1095,7 @@
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
"integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^4.0.0"
},
@@ -953,6 +1111,7 @@
"resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
"integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mimic-fn": "^4.0.0"
},
@@ -968,6 +1127,7 @@
"resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz",
"integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -980,6 +1140,7 @@
"resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
"integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -992,6 +1153,7 @@
"resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-22.0.12.tgz",
"integrity": "sha512-0mhiCR/4sZb00RVFJIUlMuiBkW3NMpVIW2Gse7noqEMoFGkvfPPAImEQbkBV8xga4KOPP4FdTRYuLLy32R1fPw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@semantic-release/commit-analyzer": "^11.0.0",
"@semantic-release/error": "^4.0.0",
@@ -1035,6 +1197,7 @@
"resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz",
"integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
}
@@ -1044,6 +1207,7 @@
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz",
"integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"clean-stack": "^5.2.0",
"indent-string": "^5.0.0"
@@ -1060,6 +1224,7 @@
"resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
"integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cross-spawn": "^7.0.3",
"get-stream": "^8.0.1",
@@ -1083,6 +1248,7 @@
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
"integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=16"
},
@@ -1095,6 +1261,7 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=14"
},
@@ -1107,6 +1274,7 @@
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
"integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -1118,19 +1286,22 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
"integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/@sec-ant/readable-stream": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
"integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@semantic-release/changelog": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz",
"integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@semantic-release/error": "^3.0.0",
"aggregate-error": "^3.0.0",
@@ -1145,14 +1316,16 @@
}
},
"node_modules/@semantic-release/commit-analyzer": {
- "version": "12.0.0",
- "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-12.0.0.tgz",
- "integrity": "sha512-qG+md5gdes+xa8zP7lIo1fWE17zRdO8yMCaxh9lyL65TQleoSv8WHHOqRURfghTytUh+NpkSyBprQ5hrkxOKVQ==",
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-13.0.0.tgz",
+ "integrity": "sha512-KtXWczvTAB1ZFZ6B4O+w8HkfYm/OgQb1dUGNFZtDgQ0csggrmkq8sTxhd+lwGF8kMb59/RnG9o4Tn7M/I8dQ9Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "conventional-changelog-angular": "^7.0.0",
- "conventional-commits-filter": "^4.0.0",
- "conventional-commits-parser": "^5.0.0",
+ "conventional-changelog-angular": "^8.0.0",
+ "conventional-changelog-writer": "^8.0.0",
+ "conventional-commits-filter": "^5.0.0",
+ "conventional-commits-parser": "^6.0.0",
"debug": "^4.0.0",
"import-from-esm": "^1.0.3",
"lodash-es": "^4.17.21",
@@ -1170,6 +1343,7 @@
"resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz",
"integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.17"
}
@@ -1179,6 +1353,7 @@
"resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz",
"integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@semantic-release/error": "^3.0.0",
"aggregate-error": "^3.0.0",
@@ -1197,10 +1372,11 @@
}
},
"node_modules/@semantic-release/github": {
- "version": "10.0.5",
- "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-10.0.5.tgz",
- "integrity": "sha512-hmuCDkfru/Uc9+ZBNOSremAupu6BCslvOVDiG0wYcL8TQodCycp6uvwDyeym1H0M4l3ob9c0s0xMBiZjjXQ2yA==",
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-10.1.1.tgz",
+ "integrity": "sha512-sSmsBKGpAlTtXf9rUJf/si16p+FwPEsvsJRjl3KCwFP0WywaSpynvUhlYvE18n5rzkQNbGJnObAKIoo3xFMSjA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/core": "^6.0.0",
"@octokit/plugin-paginate-rest": "^11.0.0",
@@ -1231,6 +1407,7 @@
"resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz",
"integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
}
@@ -1240,6 +1417,7 @@
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz",
"integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"clean-stack": "^5.2.0",
"indent-string": "^5.0.0"
@@ -1256,6 +1434,7 @@
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz",
"integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"escape-string-regexp": "5.0.0"
},
@@ -1271,6 +1450,7 @@
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
"integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -1283,6 +1463,7 @@
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
"integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -1295,6 +1476,7 @@
"resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.1.tgz",
"integrity": "sha512-/6nntGSUGK2aTOI0rHPwY3ZjgY9FkXmEHbW9Kr+62NVOsyqpKKeP0lrCH+tphv+EsNdJNmqqwijTEnVWUMQ2Nw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@semantic-release/error": "^4.0.0",
"aggregate-error": "^5.0.0",
@@ -1322,6 +1504,7 @@
"resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz",
"integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
}
@@ -1331,6 +1514,7 @@
"resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
"integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -1343,6 +1527,7 @@
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz",
"integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"clean-stack": "^5.2.0",
"indent-string": "^5.0.0"
@@ -1359,6 +1544,7 @@
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz",
"integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"escape-string-regexp": "5.0.0"
},
@@ -1374,6 +1560,7 @@
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
"integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -1382,10 +1569,11 @@
}
},
"node_modules/@semantic-release/npm/node_modules/execa": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-9.1.0.tgz",
- "integrity": "sha512-lSgHc4Elo2m6bUDhc3Hl/VxvUDJdQWI40RZ4KMY9bKRc+hgMOT7II/JjbNDhI8VnMtrCb7U/fhpJIkLORZozWw==",
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-9.3.0.tgz",
+ "integrity": "sha512-l6JFbqnHEadBoVAVpN5dl2yCyfX28WoBAGaoQcNmLLSedOxTxcn2Qa83s8I/PA5i56vWru2OHOtrwF7Om2vqlg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@sindresorhus/merge-streams": "^4.0.0",
"cross-spawn": "^7.0.3",
@@ -1401,7 +1589,7 @@
"yoctocolors": "^2.0.0"
},
"engines": {
- "node": ">=18"
+ "node": "^18.19.0 || >=20.5.0"
},
"funding": {
"url": "https://github.com/sindresorhus/execa?sponsor=1"
@@ -1412,6 +1600,7 @@
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
"integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@sec-ant/readable-stream": "^0.4.1",
"is-stream": "^4.0.1"
@@ -1428,6 +1617,7 @@
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-7.0.0.tgz",
"integrity": "sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=18.18.0"
}
@@ -1437,6 +1627,7 @@
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
"integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -1449,6 +1640,7 @@
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
"integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -1461,6 +1653,7 @@
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
"integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^4.0.0"
},
@@ -1476,6 +1669,7 @@
"resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
"integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -1488,6 +1682,7 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=14"
},
@@ -1500,6 +1695,7 @@
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
"integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -1508,21 +1704,22 @@
}
},
"node_modules/@semantic-release/release-notes-generator": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-13.0.0.tgz",
- "integrity": "sha512-LEeZWb340keMYuREMyxrODPXJJ0JOL8D/mCl74B4LdzbxhtXV2LrPN2QBEcGJrlQhoqLO0RhxQb6masHytKw+A==",
+ "version": "14.0.1",
+ "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-14.0.1.tgz",
+ "integrity": "sha512-K0w+5220TM4HZTthE5dDpIuFrnkN1NfTGPidJFm04ULT1DEZ9WG89VNXN7F0c+6nMEpWgqmPvb7vY7JkB2jyyA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "conventional-changelog-angular": "^7.0.0",
- "conventional-changelog-writer": "^7.0.0",
- "conventional-commits-filter": "^4.0.0",
- "conventional-commits-parser": "^5.0.0",
+ "conventional-changelog-angular": "^8.0.0",
+ "conventional-changelog-writer": "^8.0.0",
+ "conventional-commits-filter": "^5.0.0",
+ "conventional-commits-parser": "^6.0.0",
"debug": "^4.0.0",
"get-stream": "^7.0.0",
"import-from-esm": "^1.0.3",
"into-stream": "^7.0.0",
"lodash-es": "^4.17.21",
- "read-pkg-up": "^11.0.0"
+ "read-package-up": "^11.0.0"
},
"engines": {
"node": ">=20.8.1"
@@ -1536,6 +1733,7 @@
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz",
"integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=16"
},
@@ -1548,6 +1746,7 @@
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
"integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -1560,6 +1759,7 @@
"resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz",
"integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -1571,13 +1771,22 @@
"version": "2.4.4",
"resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
"integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/semver": {
+ "version": "7.5.8",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
+ "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/agent-base": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
"integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"debug": "^4.3.4"
},
@@ -1590,6 +1799,7 @@
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
"integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"clean-stack": "^2.0.0",
"indent-string": "^4.0.0"
@@ -1599,12 +1809,16 @@
}
},
"node_modules/ansi-escapes": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz",
- "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz",
+ "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "environment": "^1.0.0"
+ },
"engines": {
- "node": ">=14.16"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -1615,6 +1829,7 @@
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -1624,6 +1839,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -1638,102 +1854,57 @@
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz",
"integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/any-promise": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
"integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
+ "dev": true,
+ "license": "Python-2.0"
},
"node_modules/argv-formatter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz",
"integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==",
- "dev": true
- },
- "node_modules/array-buffer-byte-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
- "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
"dev": true,
- "dependencies": {
- "call-bind": "^1.0.5",
- "is-array-buffer": "^3.0.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "license": "MIT"
},
"node_modules/array-ify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
"integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==",
- "dev": true
- },
- "node_modules/arraybuffer.prototype.slice": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
- "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
"dev": true,
- "dependencies": {
- "array-buffer-byte-length": "^1.0.1",
- "call-bind": "^1.0.5",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.22.3",
- "es-errors": "^1.2.1",
- "get-intrinsic": "^1.2.3",
- "is-array-buffer": "^3.0.4",
- "is-shared-array-buffer": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/available-typed-arrays": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
- "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
- "dev": true,
- "dependencies": {
- "possible-typed-array-names": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "license": "MIT"
},
"node_modules/before-after-hook": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz",
"integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==",
- "dev": true
+ "dev": true,
+ "license": "Apache-2.0"
},
"node_modules/bottleneck": {
"version": "2.19.5",
"resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz",
"integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/braces": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fill-range": "^7.1.1"
},
@@ -1741,30 +1912,12 @@
"node": ">=8"
}
},
- "node_modules/call-bind": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
- "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
- "dev": true,
- "dependencies": {
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.4",
- "set-function-length": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -1774,6 +1927,7 @@
"resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz",
"integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansicolors": "~0.3.2",
"redeyed": "~2.1.0"
@@ -1787,6 +1941,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
"integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.17.0 || ^14.13 || >=16.0.0"
},
@@ -1799,6 +1954,7 @@
"resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
"integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
}
@@ -1808,6 +1964,7 @@
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -1817,6 +1974,7 @@
"resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz",
"integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"chalk": "^4.0.0",
"highlight.js": "^10.7.1",
@@ -1838,6 +1996,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -1854,6 +2013,7 @@
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
@@ -1865,6 +2025,7 @@
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
@@ -1883,6 +2044,7 @@
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=10"
}
@@ -1892,6 +2054,7 @@
"resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz",
"integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"string-width": "^4.2.0"
},
@@ -1907,6 +2070,7 @@
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.1",
@@ -1921,6 +2085,7 @@
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
@@ -1932,13 +2097,15 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/compare-func": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz",
"integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"array-ify": "^1.0.0",
"dot-prop": "^5.1.0"
@@ -1949,68 +2116,69 @@
"resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
"integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ini": "^1.3.4",
"proto-list": "~1.2.1"
}
},
"node_modules/conventional-changelog-angular": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz",
- "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz",
+ "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"compare-func": "^2.0.0"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/conventional-changelog-writer": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz",
- "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.0.0.tgz",
+ "integrity": "sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "conventional-commits-filter": "^4.0.0",
+ "@types/semver": "^7.5.5",
+ "conventional-commits-filter": "^5.0.0",
"handlebars": "^4.7.7",
- "json-stringify-safe": "^5.0.1",
- "meow": "^12.0.1",
- "semver": "^7.5.2",
- "split2": "^4.0.0"
+ "meow": "^13.0.0",
+ "semver": "^7.5.2"
},
"bin": {
- "conventional-changelog-writer": "cli.mjs"
+ "conventional-changelog-writer": "dist/cli/index.js"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/conventional-commits-filter": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz",
- "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz",
+ "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/conventional-commits-parser": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz",
- "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.0.0.tgz",
+ "integrity": "sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "is-text-path": "^2.0.0",
- "JSONStream": "^1.3.5",
- "meow": "^12.0.1",
- "split2": "^4.0.0"
+ "meow": "^13.0.0"
},
"bin": {
- "conventional-commits-parser": "cli.mjs"
+ "conventional-commits-parser": "dist/cli/index.js"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/convert-hrtime": {
@@ -2018,6 +2186,7 @@
"resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz",
"integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -2029,13 +2198,15 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/cosmiconfig": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
"integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"env-paths": "^2.2.1",
"import-fresh": "^3.3.0",
@@ -2062,6 +2233,7 @@
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -2076,6 +2248,7 @@
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz",
"integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"type-fest": "^1.0.1"
},
@@ -2091,6 +2264,7 @@
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
"integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=10"
},
@@ -2098,62 +2272,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/data-view-buffer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
- "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.6",
- "es-errors": "^1.3.0",
- "is-data-view": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/data-view-byte-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
- "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "es-errors": "^1.3.0",
- "is-data-view": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/data-view-byte-offset": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
- "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.6",
- "es-errors": "^1.3.0",
- "is-data-view": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
+ "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ms": "2.1.2"
},
@@ -2171,55 +2295,24 @@
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4.0.0"
}
},
- "node_modules/define-data-property": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
- "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
- "dev": true,
- "dependencies": {
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "gopd": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/define-properties": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
- "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
- "dev": true,
- "dependencies": {
- "define-data-property": "^1.0.1",
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/deprecation": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/dir-glob": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
"integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-type": "^4.0.0"
},
@@ -2232,6 +2325,7 @@
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
"integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-obj": "^2.0.0"
},
@@ -2244,6 +2338,7 @@
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
"integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"readable-stream": "^2.0.2"
}
@@ -2252,19 +2347,22 @@
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/emojilib": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz",
"integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/env-ci": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.0.0.tgz",
"integrity": "sha512-apikxMgkipkgTvMdRT9MNqWx5VLOci79F4VBd7Op/7OPjjoanjdAvn6fglMCCEf/1bAh8eOiuEVCUs4V3qP3nQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"execa": "^8.0.0",
"java-properties": "^1.0.2"
@@ -2278,6 +2376,7 @@
"resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
"integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cross-spawn": "^7.0.3",
"get-stream": "^8.0.1",
@@ -2301,6 +2400,7 @@
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
"integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=16"
},
@@ -2313,6 +2413,7 @@
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
"integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=16.17.0"
}
@@ -2322,6 +2423,7 @@
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
"integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
@@ -2334,6 +2436,7 @@
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
"integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -2346,6 +2449,7 @@
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
"integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^4.0.0"
},
@@ -2361,6 +2465,7 @@
"resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
"integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mimic-fn": "^4.0.0"
},
@@ -2376,6 +2481,7 @@
"resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
"integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -2388,6 +2494,7 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=14"
},
@@ -2400,6 +2507,7 @@
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
"integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -2412,148 +2520,40 @@
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
"integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
+ "node_modules/environment": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz",
+ "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-arrayish": "^0.2.1"
}
},
- "node_modules/es-abstract": {
- "version": "1.23.3",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
- "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
- "dev": true,
- "dependencies": {
- "array-buffer-byte-length": "^1.0.1",
- "arraybuffer.prototype.slice": "^1.0.3",
- "available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
- "data-view-buffer": "^1.0.1",
- "data-view-byte-length": "^1.0.1",
- "data-view-byte-offset": "^1.0.0",
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.0.0",
- "es-set-tostringtag": "^2.0.3",
- "es-to-primitive": "^1.2.1",
- "function.prototype.name": "^1.1.6",
- "get-intrinsic": "^1.2.4",
- "get-symbol-description": "^1.0.2",
- "globalthis": "^1.0.3",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.2",
- "has-proto": "^1.0.3",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.2",
- "internal-slot": "^1.0.7",
- "is-array-buffer": "^3.0.4",
- "is-callable": "^1.2.7",
- "is-data-view": "^1.0.1",
- "is-negative-zero": "^2.0.3",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.3",
- "is-string": "^1.0.7",
- "is-typed-array": "^1.1.13",
- "is-weakref": "^1.0.2",
- "object-inspect": "^1.13.1",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.5",
- "regexp.prototype.flags": "^1.5.2",
- "safe-array-concat": "^1.1.2",
- "safe-regex-test": "^1.0.3",
- "string.prototype.trim": "^1.2.9",
- "string.prototype.trimend": "^1.0.8",
- "string.prototype.trimstart": "^1.0.8",
- "typed-array-buffer": "^1.0.2",
- "typed-array-byte-length": "^1.0.1",
- "typed-array-byte-offset": "^1.0.2",
- "typed-array-length": "^1.0.6",
- "unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.15"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es-define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
- "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.2.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-errors": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-object-atoms": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
- "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
- "dev": true,
- "dependencies": {
- "es-errors": "^1.3.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-set-tostringtag": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
- "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.2.4",
- "has-tostringtag": "^1.0.2",
- "hasown": "^2.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "dependencies": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/escalade": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
"integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -2563,6 +2563,7 @@
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.0"
}
@@ -2572,6 +2573,7 @@
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true,
+ "license": "BSD-2-Clause",
"bin": {
"esparse": "bin/esparse.js",
"esvalidate": "bin/esvalidate.js"
@@ -2585,6 +2587,7 @@
"resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
"integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cross-spawn": "^7.0.3",
"get-stream": "^6.0.0",
@@ -2608,6 +2611,7 @@
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
"integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
@@ -2624,6 +2628,7 @@
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
"integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"reusify": "^1.0.4"
}
@@ -2633,6 +2638,7 @@
"resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz",
"integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-unicode-supported": "^2.0.0"
},
@@ -2648,6 +2654,7 @@
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"to-regex-range": "^5.0.1"
},
@@ -2660,6 +2667,7 @@
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
"integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^2.0.0"
},
@@ -2672,6 +2680,7 @@
"resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz",
"integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -2684,6 +2693,7 @@
"resolved": "https://registry.npmjs.org/find-versions/-/find-versions-6.0.0.tgz",
"integrity": "sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"semver-regex": "^4.0.5",
"super-regex": "^1.0.0"
@@ -2695,20 +2705,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/for-each": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
- "dev": true,
- "dependencies": {
- "is-callable": "^1.1.3"
- }
- },
"node_modules/from2": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
"integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.1",
"readable-stream": "^2.0.0"
@@ -2719,6 +2721,7 @@
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
"integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
@@ -2728,20 +2731,12 @@
"node": ">=14.14"
}
},
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/function-timeout": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz",
"integrity": "sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -2749,66 +2744,22 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/function.prototype.name": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
- "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "functions-have-names": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/functions-have-names": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
- "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
},
- "node_modules/get-intrinsic": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
- "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
- "dev": true,
- "dependencies": {
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/get-stream": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
"integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -2816,35 +2767,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/get-symbol-description": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
- "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.5",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/git-log-parser": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz",
- "integrity": "sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.1.tgz",
+ "integrity": "sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"argv-formatter": "~1.0.0",
"spawn-error-forwarder": "~1.0.0",
"split2": "~1.0.0",
"stream-combiner2": "~1.1.1",
"through2": "~2.0.0",
- "traverse": "~0.6.6"
+ "traverse": "0.6.8"
}
},
"node_modules/git-log-parser/node_modules/split2": {
@@ -2852,6 +2787,7 @@
"resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz",
"integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"through2": "~2.0.0"
}
@@ -2861,6 +2797,7 @@
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -2868,27 +2805,12 @@
"node": ">= 6"
}
},
- "node_modules/globalthis": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
- "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
- "dev": true,
- "dependencies": {
- "define-properties": "^1.2.1",
- "gopd": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/globby": {
- "version": "14.0.1",
- "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz",
- "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==",
+ "version": "14.0.2",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz",
+ "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@sindresorhus/merge-streams": "^2.1.0",
"fast-glob": "^3.3.2",
@@ -2909,6 +2831,7 @@
"resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz",
"integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -2916,28 +2839,17 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.1.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/gradle-semantic-release-plugin": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/gradle-semantic-release-plugin/-/gradle-semantic-release-plugin-1.9.1.tgz",
- "integrity": "sha512-lCrw22itszP/FLSL3N61E40vH1+CU95/4LG9ZF+Fxr8tcx7EPthh2eqVPAq67udFlM8ZgO2LETnn8LSDRq1J2w==",
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/gradle-semantic-release-plugin/-/gradle-semantic-release-plugin-1.9.2.tgz",
+ "integrity": "sha512-8qpf4GYFPQ+UMUymYBy/VchOOwLILAWzZMrZX1R0RR3JMgJBMN2R0tJn92R/3rXmxx4OAqwUFH6Np51eFoxr3w==",
"dev": true,
"funding": [
{
@@ -2945,6 +2857,7 @@
"url": "https://github.com/sponsors/KengoTODA"
}
],
+ "license": "MIT",
"dependencies": {
"promisified-properties": "^3.0.0",
"split2": "^4.1.0"
@@ -2953,7 +2866,7 @@
"node": ">=18"
},
"peerDependencies": {
- "semantic-release": "^23.0.0"
+ "semantic-release": "^24.0.0"
}
},
"node_modules/handlebars": {
@@ -2961,6 +2874,7 @@
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
"integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"minimist": "^1.2.5",
"neo-async": "^2.6.2",
@@ -2977,92 +2891,22 @@
"uglify-js": "^3.1.4"
}
},
- "node_modules/has-bigints": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
- "node_modules/has-property-descriptors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
- "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
- "dev": true,
- "dependencies": {
- "es-define-property": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-proto": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
- "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-tostringtag": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
- "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
- "dev": true,
- "dependencies": {
- "has-symbols": "^1.0.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/highlight.js": {
"version": "10.7.3",
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
"integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": "*"
}
@@ -3072,6 +2916,7 @@
"resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz",
"integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
@@ -3084,6 +2929,7 @@
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
"integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"lru-cache": "^10.0.1"
},
@@ -3096,6 +2942,7 @@
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
"integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.1.0",
"debug": "^4.3.4"
@@ -3105,10 +2952,11 @@
}
},
"node_modules/https-proxy-agent": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz",
- "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==",
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.0.2",
"debug": "4"
@@ -3122,6 +2970,7 @@
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=10.17.0"
}
@@ -3131,6 +2980,7 @@
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
"integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
@@ -3140,6 +2990,7 @@
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
"integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"parent-module": "^1.0.0",
"resolve-from": "^4.0.0"
@@ -3156,6 +3007,7 @@
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -3165,6 +3017,7 @@
"resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.4.tgz",
"integrity": "sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"debug": "^4.3.4",
"import-meta-resolve": "^4.0.0"
@@ -3178,6 +3031,7 @@
"resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz",
"integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==",
"dev": true,
+ "license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
@@ -3188,6 +3042,7 @@
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
"integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -3197,6 +3052,7 @@
"resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz",
"integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -3208,33 +3064,22 @@
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/ini": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
- },
- "node_modules/internal-slot": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
- "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
"dev": true,
- "dependencies": {
- "es-errors": "^1.3.0",
- "hasown": "^2.0.0",
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
+ "license": "ISC"
},
"node_modules/into-stream": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz",
"integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"from2": "^2.3.0",
"p-is-promise": "^3.0.0"
@@ -3246,115 +3091,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-array-buffer": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
- "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
- },
- "node_modules/is-bigint": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
"dev": true,
- "dependencies": {
- "has-bigints": "^1.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-boolean-object": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-callable": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
- "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-core-module": {
- "version": "2.13.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
- "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
- "dev": true,
- "dependencies": {
- "hasown": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-data-view": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
- "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
- "dev": true,
- "dependencies": {
- "is-typed-array": "^1.1.13"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-date-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "license": "MIT"
},
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -3364,6 +3113,7 @@
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -3373,6 +3123,7 @@
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-extglob": "^2.1.1"
},
@@ -3380,47 +3131,22 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-negative-zero": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
- "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.12.0"
}
},
- "node_modules/is-number-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-obj": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
"integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -3430,6 +3156,7 @@
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
"integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -3437,42 +3164,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-regex": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-shared-array-buffer": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
- "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-stream": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -3480,41 +3177,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-string": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-symbol": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
- "dev": true,
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-text-path": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz",
"integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"text-extensions": "^2.0.0"
},
@@ -3522,26 +3190,12 @@
"node": ">=8"
}
},
- "node_modules/is-typed-array": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
- "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
- "dev": true,
- "dependencies": {
- "which-typed-array": "^1.1.14"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-unicode-supported": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz",
"integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -3549,35 +3203,26 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-weakref": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
- "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/issue-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.0.tgz",
- "integrity": "sha512-jgAw78HO3gs9UrKqJNQvfDj9Ouy8Mhu40fbEJ8yXff4MW8+/Fcn9iFjyWUQ6SKbX8ipPk3X5A3AyfYHRu6uVLw==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz",
+ "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"lodash.capitalize": "^4.2.1",
"lodash.escaperegexp": "^4.1.2",
@@ -3594,6 +3239,7 @@
"resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz",
"integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.6.0"
}
@@ -3602,13 +3248,15 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
},
@@ -3620,25 +3268,29 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"universalify": "^2.0.0"
},
@@ -3653,13 +3305,15 @@
"dev": true,
"engines": [
"node >= 0.2.0"
- ]
+ ],
+ "license": "MIT"
},
"node_modules/JSONStream": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
"integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
"dev": true,
+ "license": "(MIT OR Apache-2.0)",
"dependencies": {
"jsonparse": "^1.2.0",
"through": ">=2.2.7 <3"
@@ -3675,13 +3329,15 @@
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/load-json-file": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
"integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.1.2",
"parse-json": "^4.0.0",
@@ -3697,6 +3353,7 @@
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
"integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"error-ex": "^1.3.1",
"json-parse-better-errors": "^1.0.1"
@@ -3710,6 +3367,7 @@
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
"integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^2.0.0",
"path-exists": "^3.0.0"
@@ -3722,58 +3380,64 @@
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash-es": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.capitalize": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz",
"integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.escaperegexp": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz",
"integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
"integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.isstring": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
"integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.uniqby": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz",
"integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lru-cache": {
- "version": "10.2.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz",
- "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==",
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
"dev": true,
- "engines": {
- "node": "14 || >=16.14"
- }
+ "license": "ISC"
},
"node_modules/marked": {
"version": "12.0.2",
"resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz",
"integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==",
"dev": true,
+ "license": "MIT",
"bin": {
"marked": "bin/marked.js"
},
@@ -3782,15 +3446,16 @@
}
},
"node_modules/marked-terminal": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.0.0.tgz",
- "integrity": "sha512-sNEx8nn9Ktcm6pL0TnRz8tnXq/mSS0Q1FRSwJOAqw4lAB4l49UeDf85Gm1n9RPFm5qurCPjwi1StAQT2XExhZw==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.1.0.tgz",
+ "integrity": "sha512-+pvwa14KZL74MVXjYdPR3nSInhGhNvPce/3mqLVZT2oUvt654sL1XImFuLZ1pkA866IYZ3ikDTOFUIC7XzpZZg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "ansi-escapes": "^6.2.0",
+ "ansi-escapes": "^7.0.0",
"chalk": "^5.3.0",
"cli-highlight": "^2.1.11",
- "cli-table3": "^0.6.3",
+ "cli-table3": "^0.6.5",
"node-emoji": "^2.1.3",
"supports-hyperlinks": "^3.0.0"
},
@@ -3798,16 +3463,17 @@
"node": ">=16.0.0"
},
"peerDependencies": {
- "marked": ">=1 <13"
+ "marked": ">=1 <14"
}
},
"node_modules/meow": {
- "version": "12.1.1",
- "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz",
- "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==",
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
+ "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=16.10"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -3817,13 +3483,15 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/merge2": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 8"
}
@@ -3833,6 +3501,7 @@
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
"integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"braces": "^3.0.3",
"picomatch": "^2.3.1"
@@ -3842,13 +3511,14 @@
}
},
"node_modules/mime": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.3.tgz",
- "integrity": "sha512-KgUb15Oorc0NEKPbvfa0wRU+PItIEZmiv+pyAO2i0oTIVTJhlzMclU7w4RXWQrSOVH5ax/p/CkIO7KI4OyFJTQ==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.4.tgz",
+ "integrity": "sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==",
"dev": true,
"funding": [
"https://github.com/sponsors/broofa"
],
+ "license": "MIT",
"bin": {
"mime": "bin/cli.js"
},
@@ -3861,6 +3531,7 @@
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -3870,6 +3541,7 @@
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -3878,13 +3550,15 @@
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/mz": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
"integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"any-promise": "^1.0.0",
"object-assign": "^4.0.1",
@@ -3895,19 +3569,22 @@
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/nerf-dart": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz",
"integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/node-emoji": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz",
"integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@sindresorhus/is": "^4.6.0",
"char-regex": "^1.0.2",
@@ -3919,13 +3596,13 @@
}
},
"node_modules/normalize-package-data": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.1.tgz",
- "integrity": "sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz",
+ "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"hosted-git-info": "^7.0.0",
- "is-core-module": "^2.8.1",
"semver": "^7.3.5",
"validate-npm-package-license": "^3.0.4"
},
@@ -3938,6 +3615,7 @@
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz",
"integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.16"
},
@@ -3946,9 +3624,9 @@
}
},
"node_modules/npm": {
- "version": "10.8.0",
- "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.0.tgz",
- "integrity": "sha512-wh93uRczgp7HDnPMiLXcCkv2hagdJS0zJ9KT/31d0FoXP02+qgN2AOwpaW85fxRWkinl2rELfPw+CjBXW48/jQ==",
+ "version": "10.8.2",
+ "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.2.tgz",
+ "integrity": "sha512-x/AIjFIKRllrhcb48dqUNAAZl0ig9+qMuN91RpZo3Cb2+zuibfh+KISl6+kVVyktDz230JKc208UkQwwMqyB+w==",
"bundleDependencies": [
"@isaacs/string-locale-compare",
"@npmcli/arborist",
@@ -4020,6 +3698,7 @@
"write-file-atomic"
],
"dev": true,
+ "license": "Artistic-2.0",
"workspaces": [
"docs",
"smoke-tests",
@@ -4029,15 +3708,15 @@
],
"dependencies": {
"@isaacs/string-locale-compare": "^1.1.0",
- "@npmcli/arborist": "^7.5.2",
- "@npmcli/config": "^8.3.2",
+ "@npmcli/arborist": "^7.5.4",
+ "@npmcli/config": "^8.3.4",
"@npmcli/fs": "^3.1.1",
"@npmcli/map-workspaces": "^3.0.6",
- "@npmcli/package-json": "^5.1.0",
+ "@npmcli/package-json": "^5.2.0",
"@npmcli/promise-spawn": "^7.0.2",
- "@npmcli/redact": "^2.0.0",
+ "@npmcli/redact": "^2.0.1",
"@npmcli/run-script": "^8.1.0",
- "@sigstore/tuf": "^2.3.3",
+ "@sigstore/tuf": "^2.3.4",
"abbrev": "^2.0.0",
"archy": "~1.0.0",
"cacache": "^18.0.3",
@@ -4046,38 +3725,38 @@
"cli-columns": "^4.0.0",
"fastest-levenshtein": "^1.0.16",
"fs-minipass": "^3.0.3",
- "glob": "^10.3.15",
+ "glob": "^10.4.2",
"graceful-fs": "^4.2.11",
"hosted-git-info": "^7.0.2",
- "ini": "^4.1.2",
+ "ini": "^4.1.3",
"init-package-json": "^6.0.3",
- "is-cidr": "^5.0.5",
+ "is-cidr": "^5.1.0",
"json-parse-even-better-errors": "^3.0.2",
"libnpmaccess": "^8.0.6",
- "libnpmdiff": "^6.1.2",
- "libnpmexec": "^8.1.1",
- "libnpmfund": "^5.0.10",
+ "libnpmdiff": "^6.1.4",
+ "libnpmexec": "^8.1.3",
+ "libnpmfund": "^5.0.12",
"libnpmhook": "^10.0.5",
"libnpmorg": "^6.0.6",
- "libnpmpack": "^7.0.2",
- "libnpmpublish": "^9.0.8",
- "libnpmsearch": "^7.0.5",
+ "libnpmpack": "^7.0.4",
+ "libnpmpublish": "^9.0.9",
+ "libnpmsearch": "^7.0.6",
"libnpmteam": "^6.0.5",
- "libnpmversion": "^6.0.2",
+ "libnpmversion": "^6.0.3",
"make-fetch-happen": "^13.0.1",
- "minimatch": "^9.0.4",
+ "minimatch": "^9.0.5",
"minipass": "^7.1.1",
"minipass-pipeline": "^1.2.4",
"ms": "^2.1.2",
"node-gyp": "^10.1.0",
"nopt": "^7.2.1",
- "normalize-package-data": "^6.0.1",
+ "normalize-package-data": "^6.0.2",
"npm-audit-report": "^5.0.0",
"npm-install-checks": "^6.3.0",
"npm-package-arg": "^11.0.2",
- "npm-pick-manifest": "^9.0.1",
+ "npm-pick-manifest": "^9.1.0",
"npm-profile": "^10.0.0",
- "npm-registry-fetch": "^17.0.1",
+ "npm-registry-fetch": "^17.1.0",
"npm-user-validate": "^2.0.1",
"p-map": "^4.0.0",
"pacote": "^18.0.6",
@@ -4110,6 +3789,7 @@
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^3.0.0"
},
@@ -4207,7 +3887,7 @@
}
},
"node_modules/npm/node_modules/@npmcli/arborist": {
- "version": "7.5.2",
+ "version": "7.5.4",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -4256,17 +3936,17 @@
}
},
"node_modules/npm/node_modules/@npmcli/config": {
- "version": "8.3.2",
+ "version": "8.3.4",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
"@npmcli/map-workspaces": "^3.0.2",
+ "@npmcli/package-json": "^5.1.1",
"ci-info": "^4.0.0",
"ini": "^4.1.2",
"nopt": "^7.2.1",
"proc-log": "^4.2.0",
- "read-package-json-fast": "^3.0.2",
"semver": "^7.3.5",
"walk-up-path": "^3.0.1"
},
@@ -4287,12 +3967,13 @@
}
},
"node_modules/npm/node_modules/@npmcli/git": {
- "version": "5.0.7",
+ "version": "5.0.8",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
"@npmcli/promise-spawn": "^7.0.0",
+ "ini": "^4.1.3",
"lru-cache": "^10.0.1",
"npm-pick-manifest": "^9.0.0",
"proc-log": "^4.0.0",
@@ -4371,7 +4052,7 @@
}
},
"node_modules/npm/node_modules/@npmcli/package-json": {
- "version": "5.1.0",
+ "version": "5.2.0",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -4413,7 +4094,7 @@
}
},
"node_modules/npm/node_modules/@npmcli/redact": {
- "version": "2.0.0",
+ "version": "2.0.1",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -4449,12 +4130,12 @@
}
},
"node_modules/npm/node_modules/@sigstore/bundle": {
- "version": "2.3.1",
+ "version": "2.3.2",
"dev": true,
"inBundle": true,
"license": "Apache-2.0",
"dependencies": {
- "@sigstore/protobuf-specs": "^0.3.1"
+ "@sigstore/protobuf-specs": "^0.3.2"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
@@ -4479,14 +4160,14 @@
}
},
"node_modules/npm/node_modules/@sigstore/sign": {
- "version": "2.3.1",
+ "version": "2.3.2",
"dev": true,
"inBundle": true,
"license": "Apache-2.0",
"dependencies": {
- "@sigstore/bundle": "^2.3.0",
+ "@sigstore/bundle": "^2.3.2",
"@sigstore/core": "^1.0.0",
- "@sigstore/protobuf-specs": "^0.3.1",
+ "@sigstore/protobuf-specs": "^0.3.2",
"make-fetch-happen": "^13.0.1",
"proc-log": "^4.2.0",
"promise-retry": "^2.0.1"
@@ -4496,12 +4177,12 @@
}
},
"node_modules/npm/node_modules/@sigstore/tuf": {
- "version": "2.3.3",
+ "version": "2.3.4",
"dev": true,
"inBundle": true,
"license": "Apache-2.0",
"dependencies": {
- "@sigstore/protobuf-specs": "^0.3.0",
+ "@sigstore/protobuf-specs": "^0.3.2",
"tuf-js": "^2.2.1"
},
"engines": {
@@ -4509,14 +4190,14 @@
}
},
"node_modules/npm/node_modules/@sigstore/verify": {
- "version": "1.2.0",
+ "version": "1.2.1",
"dev": true,
"inBundle": true,
"license": "Apache-2.0",
"dependencies": {
- "@sigstore/bundle": "^2.3.1",
+ "@sigstore/bundle": "^2.3.2",
"@sigstore/core": "^1.1.0",
- "@sigstore/protobuf-specs": "^0.3.1"
+ "@sigstore/protobuf-specs": "^0.3.2"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
@@ -4713,7 +4394,7 @@
}
},
"node_modules/npm/node_modules/cidr-regex": {
- "version": "4.0.5",
+ "version": "4.1.1",
"dev": true,
"inBundle": true,
"license": "BSD-2-Clause",
@@ -4821,7 +4502,7 @@
}
},
"node_modules/npm/node_modules/debug": {
- "version": "4.3.4",
+ "version": "4.3.5",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -4905,7 +4586,7 @@
}
},
"node_modules/npm/node_modules/foreground-child": {
- "version": "3.1.1",
+ "version": "3.2.1",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -4932,26 +4613,18 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/npm/node_modules/function-bind": {
- "version": "1.1.2",
- "dev": true,
- "inBundle": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/npm/node_modules/glob": {
- "version": "10.3.15",
+ "version": "10.4.2",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^2.3.6",
- "minimatch": "^9.0.1",
- "minipass": "^7.0.4",
- "path-scurry": "^1.11.0"
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
@@ -4969,18 +4642,6 @@
"inBundle": true,
"license": "ISC"
},
- "node_modules/npm/node_modules/hasown": {
- "version": "2.0.2",
- "dev": true,
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/npm/node_modules/hosted-git-info": {
"version": "7.0.2",
"dev": true,
@@ -5013,7 +4674,7 @@
}
},
"node_modules/npm/node_modules/https-proxy-agent": {
- "version": "7.0.4",
+ "version": "7.0.5",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -5069,7 +4730,7 @@
}
},
"node_modules/npm/node_modules/ini": {
- "version": "4.1.2",
+ "version": "4.1.3",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -5121,29 +4782,17 @@
}
},
"node_modules/npm/node_modules/is-cidr": {
- "version": "5.0.5",
+ "version": "5.1.0",
"dev": true,
"inBundle": true,
"license": "BSD-2-Clause",
"dependencies": {
- "cidr-regex": "^4.0.4"
+ "cidr-regex": "^4.1.1"
},
"engines": {
"node": ">=14"
}
},
- "node_modules/npm/node_modules/is-core-module": {
- "version": "2.13.1",
- "dev": true,
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "hasown": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/npm/node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"dev": true,
@@ -5166,7 +4815,7 @@
"license": "ISC"
},
"node_modules/npm/node_modules/jackspeak": {
- "version": "2.3.6",
+ "version": "3.4.0",
"dev": true,
"inBundle": true,
"license": "BlueOak-1.0.0",
@@ -5242,12 +4891,12 @@
}
},
"node_modules/npm/node_modules/libnpmdiff": {
- "version": "6.1.2",
+ "version": "6.1.4",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/arborist": "^7.5.2",
+ "@npmcli/arborist": "^7.5.4",
"@npmcli/installed-package-contents": "^2.1.0",
"binary-extensions": "^2.3.0",
"diff": "^5.1.0",
@@ -5261,12 +4910,12 @@
}
},
"node_modules/npm/node_modules/libnpmexec": {
- "version": "8.1.1",
+ "version": "8.1.3",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/arborist": "^7.5.2",
+ "@npmcli/arborist": "^7.5.4",
"@npmcli/run-script": "^8.1.0",
"ci-info": "^4.0.0",
"npm-package-arg": "^11.0.2",
@@ -5282,12 +4931,12 @@
}
},
"node_modules/npm/node_modules/libnpmfund": {
- "version": "5.0.10",
+ "version": "5.0.12",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/arborist": "^7.5.2"
+ "@npmcli/arborist": "^7.5.4"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
@@ -5320,12 +4969,12 @@
}
},
"node_modules/npm/node_modules/libnpmpack": {
- "version": "7.0.2",
+ "version": "7.0.4",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/arborist": "^7.5.2",
+ "@npmcli/arborist": "^7.5.4",
"@npmcli/run-script": "^8.1.0",
"npm-package-arg": "^11.0.2",
"pacote": "^18.0.6"
@@ -5335,7 +4984,7 @@
}
},
"node_modules/npm/node_modules/libnpmpublish": {
- "version": "9.0.8",
+ "version": "9.0.9",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -5354,7 +5003,7 @@
}
},
"node_modules/npm/node_modules/libnpmsearch": {
- "version": "7.0.5",
+ "version": "7.0.6",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -5379,7 +5028,7 @@
}
},
"node_modules/npm/node_modules/libnpmversion": {
- "version": "6.0.2",
+ "version": "6.0.3",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -5427,7 +5076,7 @@
}
},
"node_modules/npm/node_modules/minimatch": {
- "version": "9.0.4",
+ "version": "9.0.5",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -5442,7 +5091,7 @@
}
},
"node_modules/npm/node_modules/minipass": {
- "version": "7.1.1",
+ "version": "7.1.2",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -5503,28 +5152,6 @@
"node": ">=8"
}
},
- "node_modules/npm/node_modules/minipass-json-stream": {
- "version": "1.0.1",
- "dev": true,
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "jsonparse": "^1.3.1",
- "minipass": "^3.0.0"
- }
- },
- "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": {
- "version": "3.3.6",
- "dev": true,
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/npm/node_modules/minipass-pipeline": {
"version": "1.2.4",
"dev": true,
@@ -5683,13 +5310,12 @@
}
},
"node_modules/npm/node_modules/normalize-package-data": {
- "version": "6.0.1",
+ "version": "6.0.2",
"dev": true,
"inBundle": true,
"license": "BSD-2-Clause",
"dependencies": {
"hosted-git-info": "^7.0.0",
- "is-core-module": "^2.8.1",
"semver": "^7.3.5",
"validate-npm-package-license": "^3.0.4"
},
@@ -5767,7 +5393,7 @@
}
},
"node_modules/npm/node_modules/npm-pick-manifest": {
- "version": "9.0.1",
+ "version": "9.1.0",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -5795,16 +5421,16 @@
}
},
"node_modules/npm/node_modules/npm-registry-fetch": {
- "version": "17.0.1",
+ "version": "17.1.0",
"dev": true,
"inBundle": true,
"license": "ISC",
"dependencies": {
"@npmcli/redact": "^2.0.0",
+ "jsonparse": "^1.3.1",
"make-fetch-happen": "^13.0.0",
"minipass": "^7.0.2",
"minipass-fetch": "^3.0.0",
- "minipass-json-stream": "^1.0.1",
"minizlib": "^2.1.2",
"npm-package-arg": "^11.0.0",
"proc-log": "^4.0.0"
@@ -5837,6 +5463,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/npm/node_modules/package-json-from-dist": {
+ "version": "1.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "BlueOak-1.0.0"
+ },
"node_modules/npm/node_modules/pacote": {
"version": "18.0.6",
"dev": true,
@@ -5908,7 +5540,7 @@
}
},
"node_modules/npm/node_modules/postcss-selector-parser": {
- "version": "6.0.16",
+ "version": "6.1.0",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -6091,17 +5723,17 @@
}
},
"node_modules/npm/node_modules/sigstore": {
- "version": "2.3.0",
+ "version": "2.3.1",
"dev": true,
"inBundle": true,
"license": "Apache-2.0",
"dependencies": {
- "@sigstore/bundle": "^2.3.1",
+ "@sigstore/bundle": "^2.3.2",
"@sigstore/core": "^1.0.0",
- "@sigstore/protobuf-specs": "^0.3.1",
- "@sigstore/sign": "^2.3.0",
- "@sigstore/tuf": "^2.3.1",
- "@sigstore/verify": "^1.2.0"
+ "@sigstore/protobuf-specs": "^0.3.2",
+ "@sigstore/sign": "^2.3.2",
+ "@sigstore/tuf": "^2.3.4",
+ "@sigstore/verify": "^1.2.1"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
@@ -6132,14 +5764,14 @@
}
},
"node_modules/npm/node_modules/socks-proxy-agent": {
- "version": "8.0.3",
+ "version": "8.0.4",
"dev": true,
"inBundle": true,
"license": "MIT",
"dependencies": {
"agent-base": "^7.1.1",
"debug": "^4.3.4",
- "socks": "^2.7.1"
+ "socks": "^2.8.3"
},
"engines": {
"node": ">= 14"
@@ -6182,7 +5814,7 @@
}
},
"node_modules/npm/node_modules/spdx-license-ids": {
- "version": "3.0.17",
+ "version": "3.0.18",
"dev": true,
"inBundle": true,
"license": "CC0-1.0"
@@ -6569,51 +6201,17 @@
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/object-inspect": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
- "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object.assign": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
- "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.5",
- "define-properties": "^1.2.1",
- "has-symbols": "^1.0.3",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"wrappy": "1"
}
@@ -6623,6 +6221,7 @@
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mimic-fn": "^2.1.0"
},
@@ -6638,6 +6237,7 @@
"resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz",
"integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -6650,6 +6250,7 @@
"resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz",
"integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-map": "^7.0.1"
},
@@ -6665,6 +6266,7 @@
"resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz",
"integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -6674,6 +6276,7 @@
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
"integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-try": "^1.0.0"
},
@@ -6686,6 +6289,7 @@
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
"integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^1.1.0"
},
@@ -6698,6 +6302,7 @@
"resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.2.tgz",
"integrity": "sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -6710,6 +6315,7 @@
"resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz",
"integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -6719,6 +6325,7 @@
"resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
"integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -6728,6 +6335,7 @@
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"callsites": "^3.0.0"
},
@@ -6740,6 +6348,7 @@
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.0.0",
"error-ex": "^1.3.1",
@@ -6758,6 +6367,7 @@
"resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz",
"integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -6769,13 +6379,15 @@
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
"integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/parse5-htmlparser2-tree-adapter": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
"integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"parse5": "^6.0.1"
}
@@ -6784,19 +6396,22 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/parsimmon": {
"version": "1.18.1",
"resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.18.1.tgz",
"integrity": "sha512-u7p959wLfGAhJpSDJVYXoyMCXWYwHia78HhRBWqk7AIbxdmlrfdp5wX0l3xv/iTSH5HvhN9K7o26hwwpgS5Nmw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
"integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -6806,6 +6421,7 @@
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -6815,6 +6431,7 @@
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -6823,13 +6440,15 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
"integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8.6"
},
@@ -6842,6 +6461,7 @@
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
"integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -6851,6 +6471,7 @@
"resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz",
"integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"find-up": "^2.0.0",
"load-json-file": "^4.0.0"
@@ -6859,20 +6480,12 @@
"node": ">=4"
}
},
- "node_modules/possible-typed-array-names": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
- "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/pretty-ms": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.0.0.tgz",
"integrity": "sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"parse-ms": "^4.0.0"
},
@@ -6887,13 +6500,15 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/promisified-properties": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/promisified-properties/-/promisified-properties-3.0.0.tgz",
"integrity": "sha512-ARteuBuUpPg/+spsMhcKHvdtOW/q8btyyVYYxxegGgx+7u9ix9at8DjP2KM2t8+4SuI8wBLt+3X876FMQx91yQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"parsimmon": "^1.13.0"
},
@@ -6906,7 +6521,8 @@
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
"integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/queue-microtask": {
"version": "1.2.3",
@@ -6926,13 +6542,15 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/rc": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"dev": true,
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
"dependencies": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
@@ -6948,6 +6566,7 @@
"resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz",
"integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"find-up-simple": "^1.0.0",
"read-pkg": "^9.0.0",
@@ -6965,6 +6584,7 @@
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz",
"integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/normalize-package-data": "^2.4.3",
"normalize-package-data": "^6.0.0",
@@ -6985,6 +6605,7 @@
"integrity": "sha512-LOVbvF1Q0SZdjClSefZ0Nz5z8u+tIE7mV5NibzmE9VYmDe9CaBbAVtz1veOSZbofrdsilxuDAYnFenukZVp8/Q==",
"deprecated": "Renamed to read-package-up",
"dev": true,
+ "license": "MIT",
"dependencies": {
"find-up-simple": "^1.0.0",
"read-pkg": "^9.0.0",
@@ -7002,6 +6623,7 @@
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz",
"integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.22.13",
"index-to-position": "^0.1.2",
@@ -7019,6 +6641,7 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -7034,33 +6657,17 @@
"resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz",
"integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"esprima": "~4.0.0"
}
},
- "node_modules/regexp.prototype.flags": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
- "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.6",
- "define-properties": "^1.2.1",
- "es-errors": "^1.3.0",
- "set-function-name": "^2.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/registry-auth-token": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz",
"integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@pnpm/npm-conf": "^2.1.0"
},
@@ -7073,6 +6680,7 @@
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -7082,6 +6690,7 @@
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -7091,6 +6700,7 @@
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
"dev": true,
+ "license": "MIT",
"engines": {
"iojs": ">=1.0.0",
"node": ">=0.10.0"
@@ -7115,68 +6725,30 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"queue-microtask": "^1.2.2"
}
},
- "node_modules/safe-array-concat": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
- "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "get-intrinsic": "^1.2.4",
- "has-symbols": "^1.0.3",
- "isarray": "^2.0.5"
- },
- "engines": {
- "node": ">=0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safe-array-concat/node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
- },
"node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/safe-regex-test": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
- "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
"dev": true,
- "dependencies": {
- "call-bind": "^1.0.6",
- "es-errors": "^1.3.0",
- "is-regex": "^1.1.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "license": "MIT"
},
"node_modules/semantic-release": {
- "version": "23.1.1",
- "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-23.1.1.tgz",
- "integrity": "sha512-qqJDBhbtHsjUEMsojWKGuL5lQFCJuPtiXKEIlFKyTzDDGTAE/oyvznaP8GeOr5PvcqBJ6LQz4JCENWPLeehSpA==",
+ "version": "24.0.0",
+ "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.0.0.tgz",
+ "integrity": "sha512-v46CRPw+9eI3ZuYGF2oAjqPqsfbnfFTwLBgQsv/lch4goD09ytwOTESMN4QIrx/wPLxUGey60/NMx+ANQtWRsA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@semantic-release/commit-analyzer": "^12.0.0",
+ "@semantic-release/commit-analyzer": "^13.0.0-beta.1",
"@semantic-release/error": "^4.0.0",
"@semantic-release/github": "^10.0.0",
"@semantic-release/npm": "^12.0.0",
- "@semantic-release/release-notes-generator": "^13.0.0",
+ "@semantic-release/release-notes-generator": "^14.0.0-beta.1",
"aggregate-error": "^5.0.0",
"cosmiconfig": "^9.0.0",
"debug": "^4.0.0",
@@ -7214,6 +6786,7 @@
"resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz",
"integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
}
@@ -7223,6 +6796,7 @@
"resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
"integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -7235,6 +6809,7 @@
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz",
"integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"clean-stack": "^5.2.0",
"indent-string": "^5.0.0"
@@ -7251,6 +6826,7 @@
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz",
"integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"escape-string-regexp": "5.0.0"
},
@@ -7266,6 +6842,7 @@
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
"integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -7274,10 +6851,11 @@
}
},
"node_modules/semantic-release/node_modules/execa": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-9.1.0.tgz",
- "integrity": "sha512-lSgHc4Elo2m6bUDhc3Hl/VxvUDJdQWI40RZ4KMY9bKRc+hgMOT7II/JjbNDhI8VnMtrCb7U/fhpJIkLORZozWw==",
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-9.3.0.tgz",
+ "integrity": "sha512-l6JFbqnHEadBoVAVpN5dl2yCyfX28WoBAGaoQcNmLLSedOxTxcn2Qa83s8I/PA5i56vWru2OHOtrwF7Om2vqlg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@sindresorhus/merge-streams": "^4.0.0",
"cross-spawn": "^7.0.3",
@@ -7293,7 +6871,7 @@
"yoctocolors": "^2.0.0"
},
"engines": {
- "node": ">=18"
+ "node": "^18.19.0 || >=20.5.0"
},
"funding": {
"url": "https://github.com/sindresorhus/execa?sponsor=1"
@@ -7304,6 +6882,7 @@
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
"integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@sec-ant/readable-stream": "^0.4.1",
"is-stream": "^4.0.1"
@@ -7320,6 +6899,7 @@
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-7.0.0.tgz",
"integrity": "sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=18.18.0"
}
@@ -7329,6 +6909,7 @@
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
"integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -7341,6 +6922,7 @@
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
"integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -7353,6 +6935,7 @@
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
"integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^4.0.0"
},
@@ -7368,6 +6951,7 @@
"resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz",
"integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -7380,6 +6964,7 @@
"resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
"integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -7392,6 +6977,7 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=14"
},
@@ -7404,6 +6990,7 @@
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
"integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -7412,10 +6999,11 @@
}
},
"node_modules/semver": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
- "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -7428,6 +7016,7 @@
"resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz",
"integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"semver": "^7.3.5"
},
@@ -7443,6 +7032,7 @@
"resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz",
"integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -7450,43 +7040,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/set-function-length": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
- "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
- "dev": true,
- "dependencies": {
- "define-data-property": "^1.1.4",
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.4",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/set-function-name": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
- "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
- "dev": true,
- "dependencies": {
- "define-data-property": "^1.1.4",
- "es-errors": "^1.3.0",
- "functions-have-names": "^1.2.3",
- "has-property-descriptors": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"shebang-regex": "^3.0.0"
},
@@ -7499,39 +7058,24 @@
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
- "node_modules/side-channel": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
- "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.4",
- "object-inspect": "^1.13.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/signale": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz",
"integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^2.3.2",
"figures": "^2.0.0",
@@ -7546,6 +7090,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^1.9.0"
},
@@ -7558,6 +7103,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
@@ -7572,6 +7118,7 @@
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "1.1.3"
}
@@ -7580,13 +7127,15 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/signale/node_modules/figures": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
"integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"escape-string-regexp": "^1.0.5"
},
@@ -7599,6 +7148,7 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -7608,6 +7158,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^3.0.0"
},
@@ -7620,6 +7171,7 @@
"resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz",
"integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"unicode-emoji-modifier-base": "^1.0.0"
},
@@ -7632,6 +7184,7 @@
"resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
"integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.16"
},
@@ -7644,6 +7197,7 @@
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
@@ -7652,13 +7206,15 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz",
"integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/spdx-correct": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
"integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
@@ -7668,13 +7224,15 @@
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
"integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
- "dev": true
+ "dev": true,
+ "license": "CC-BY-3.0"
},
"node_modules/spdx-expression-parse": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
"integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
@@ -7684,13 +7242,15 @@
"version": "3.0.18",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz",
"integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==",
- "dev": true
+ "dev": true,
+ "license": "CC0-1.0"
},
"node_modules/split2": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
"integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">= 10.x"
}
@@ -7700,6 +7260,7 @@
"resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
"integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"duplexer2": "~0.1.0",
"readable-stream": "^2.0.2"
@@ -7710,6 +7271,7 @@
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"safe-buffer": "~5.1.0"
}
@@ -7719,6 +7281,7 @@
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -7728,60 +7291,12 @@
"node": ">=8"
}
},
- "node_modules/string.prototype.trim": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
- "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.0",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimend": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
- "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-object-atoms": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimstart": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
- "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -7794,6 +7309,7 @@
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
"integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -7803,6 +7319,7 @@
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -7812,6 +7329,7 @@
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
"integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -7821,6 +7339,7 @@
"resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz",
"integrity": "sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"function-timeout": "^1.0.1",
"time-span": "^5.1.0"
@@ -7837,6 +7356,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -7849,6 +7369,7 @@
"resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz",
"integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0",
"supports-color": "^7.0.0"
@@ -7862,6 +7383,7 @@
"resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz",
"integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.16"
}
@@ -7871,6 +7393,7 @@
"resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz",
"integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-stream": "^3.0.0",
"temp-dir": "^3.0.0",
@@ -7889,6 +7412,7 @@
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
"integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
@@ -7901,6 +7425,7 @@
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
"integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=12.20"
},
@@ -7913,6 +7438,7 @@
"resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz",
"integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -7925,6 +7451,7 @@
"resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
"integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"any-promise": "^1.0.0"
}
@@ -7934,6 +7461,7 @@
"resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
"integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"thenify": ">= 3.1.0 < 4"
},
@@ -7945,13 +7473,15 @@
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
"integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"readable-stream": "~2.3.6",
"xtend": "~4.0.1"
@@ -7962,6 +7492,7 @@
"resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz",
"integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"convert-hrtime": "^5.0.0"
},
@@ -7977,6 +7508,7 @@
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
},
@@ -7985,15 +7517,11 @@
}
},
"node_modules/traverse": {
- "version": "0.6.9",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.9.tgz",
- "integrity": "sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==",
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz",
+ "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==",
"dev": true,
- "dependencies": {
- "gopd": "^1.0.1",
- "typedarray.prototype.slice": "^1.0.3",
- "which-typed-array": "^1.1.15"
- },
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -8002,10 +7530,11 @@
}
},
"node_modules/type-fest": {
- "version": "4.18.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.18.3.tgz",
- "integrity": "sha512-Q08/0IrpvM+NMY9PA2rti9Jb+JejTddwmwmVQGskAlhtcrw1wsRzoR6ode6mR+OAabNa75w/dxedSUY2mlphaQ==",
+ "version": "4.22.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.22.1.tgz",
+ "integrity": "sha512-9tHNEa0Ov81YOopiVkcCJVz5TM6AEQ+CHHjFIktqPnE3NV0AHIkx+gh9tiCl58m/66wWxkOC9eltpa75J4lQPA==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=16"
},
@@ -8013,104 +7542,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/typed-array-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
- "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "es-errors": "^1.3.0",
- "is-typed-array": "^1.1.13"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/typed-array-byte-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
- "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-proto": "^1.0.3",
- "is-typed-array": "^1.1.13"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typed-array-byte-offset": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
- "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
- "dev": true,
- "dependencies": {
- "available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-proto": "^1.0.3",
- "is-typed-array": "^1.1.13"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typed-array-length": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
- "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-proto": "^1.0.3",
- "is-typed-array": "^1.1.13",
- "possible-typed-array-names": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typedarray.prototype.slice": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz",
- "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.0",
- "es-errors": "^1.3.0",
- "typed-array-buffer": "^1.0.2",
- "typed-array-byte-offset": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/uglify-js": {
- "version": "3.17.4",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
- "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
+ "version": "3.19.0",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.0.tgz",
+ "integrity": "sha512-wNKHUY2hYYkf6oSFfhwwiHo4WCHzHmzcXsqXYTN9ja3iApYIFbb2U6ics9hBcYLHcYGQoAlwnZlTrf3oF+BL/Q==",
"dev": true,
+ "license": "BSD-2-Clause",
"optional": true,
"bin": {
"uglifyjs": "bin/uglifyjs"
@@ -8119,26 +7556,12 @@
"node": ">=0.8.0"
}
},
- "node_modules/unbox-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
- "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-bigints": "^1.0.2",
- "has-symbols": "^1.0.3",
- "which-boxed-primitive": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/unicode-emoji-modifier-base": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz",
"integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -8148,6 +7571,7 @@
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
"integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -8160,6 +7584,7 @@
"resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz",
"integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"crypto-random-string": "^4.0.0"
},
@@ -8174,13 +7599,15 @@
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
"integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/universalify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
"integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 10.0.0"
}
@@ -8190,6 +7617,7 @@
"resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz",
"integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
}
@@ -8198,13 +7626,15 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
@@ -8215,6 +7645,7 @@
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
@@ -8225,52 +7656,19 @@
"node": ">= 8"
}
},
- "node_modules/which-boxed-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
- "dev": true,
- "dependencies": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-typed-array": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
- "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
- "dev": true,
- "dependencies": {
- "available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/wordwrap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
"integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -8287,13 +7685,15 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.4"
}
@@ -8303,6 +7703,7 @@
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=10"
}
@@ -8312,6 +7713,7 @@
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cliui": "^8.0.1",
"escalade": "^3.1.1",
@@ -8330,15 +7732,17 @@
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
},
"node_modules/yoctocolors": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.0.2.tgz",
- "integrity": "sha512-Ct97huExsu7cWeEjmrXlofevF8CvzUglJ4iGUet5B8xn1oumtAZBpHU4GzYuoE6PVqcZ5hghtBrSlhwHuR1Jmw==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz",
+ "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
diff --git a/package.json b/package.json
index 887341493..597726965 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
"@saithodev/semantic-release-backmerge": "^4.0.1",
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/git": "^10.0.1",
- "gradle-semantic-release-plugin": "^1.9.1",
- "semantic-release": "^23.0.8"
+ "gradle-semantic-release-plugin": "^1.9.2",
+ "semantic-release": "^24.0.0"
}
}
From e7829b41e782c9feda23b9d6acf48bae277d24d9 Mon Sep 17 00:00:00 2001
From: oSumAtrIX
Date: Sat, 20 Jul 2024 18:06:27 +0200
Subject: [PATCH 18/50] feat: Add `Spoof build info` patch
---
api/revanced-patches.api | 36 ++++
.../all/misc/build/BaseSpoofBuildInfoPatch.kt | 120 ++++++++++++
.../all/misc/build/SpoofBuildInfoPatch.kt | 183 ++++++++++++++++++
3 files changed, 339 insertions(+)
create mode 100644 src/main/kotlin/app/revanced/patches/all/misc/build/BaseSpoofBuildInfoPatch.kt
create mode 100644 src/main/kotlin/app/revanced/patches/all/misc/build/SpoofBuildInfoPatch.kt
diff --git a/api/revanced-patches.api b/api/revanced-patches.api
index a602a5b4c..cba63bcab 100644
--- a/api/revanced-patches.api
+++ b/api/revanced-patches.api
@@ -30,6 +30,42 @@ public final class app/revanced/patches/all/location/hide/HideMockLocationPatch
public fun transform (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Lkotlin/Pair;)V
}
+public abstract class app/revanced/patches/all/misc/build/BaseSpoofBuildInfoPatch : app/revanced/patches/all/misc/transformation/BaseTransformInstructionsPatch {
+ public fun ()V
+ public synthetic fun filterMap (Lcom/android/tools/smali/dexlib2/iface/ClassDef;Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/iface/instruction/Instruction;I)Ljava/lang/Object;
+ public fun filterMap (Lcom/android/tools/smali/dexlib2/iface/ClassDef;Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/iface/instruction/Instruction;I)Lkotlin/Pair;
+ protected fun getBoard ()Ljava/lang/String;
+ protected fun getBootloader ()Ljava/lang/String;
+ protected fun getBrand ()Ljava/lang/String;
+ protected fun getCpuAbi ()Ljava/lang/String;
+ protected fun getCpuAbi2 ()Ljava/lang/String;
+ protected fun getDevice ()Ljava/lang/String;
+ protected fun getDisplay ()Ljava/lang/String;
+ protected fun getFingerprint ()Ljava/lang/String;
+ protected fun getHardware ()Ljava/lang/String;
+ protected fun getHost ()Ljava/lang/String;
+ protected fun getId ()Ljava/lang/String;
+ protected fun getManufacturer ()Ljava/lang/String;
+ protected fun getModel ()Ljava/lang/String;
+ protected fun getOdmSku ()Ljava/lang/String;
+ protected fun getProduct ()Ljava/lang/String;
+ protected fun getRadio ()Ljava/lang/String;
+ protected fun getSerial ()Ljava/lang/String;
+ protected fun getSku ()Ljava/lang/String;
+ protected fun getSocManufacturer ()Ljava/lang/String;
+ protected fun getSocModel ()Ljava/lang/String;
+ protected fun getTags ()Ljava/lang/String;
+ protected fun getTime ()Ljava/lang/Long;
+ protected fun getType ()Ljava/lang/String;
+ protected fun getUser ()Ljava/lang/String;
+ public synthetic fun transform (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Ljava/lang/Object;)V
+ public fun transform (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Lkotlin/Pair;)V
+}
+
+public final class app/revanced/patches/all/misc/build/SpoofBuildInfoPatch : app/revanced/patches/all/misc/build/BaseSpoofBuildInfoPatch {
+ public fun ()V
+}
+
public final class app/revanced/patches/all/misc/debugging/EnableAndroidDebuggingPatch : app/revanced/patcher/patch/ResourcePatch {
public static final field INSTANCE Lapp/revanced/patches/all/misc/debugging/EnableAndroidDebuggingPatch;
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
diff --git a/src/main/kotlin/app/revanced/patches/all/misc/build/BaseSpoofBuildInfoPatch.kt b/src/main/kotlin/app/revanced/patches/all/misc/build/BaseSpoofBuildInfoPatch.kt
new file mode 100644
index 000000000..15ef20e08
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/all/misc/build/BaseSpoofBuildInfoPatch.kt
@@ -0,0 +1,120 @@
+package app.revanced.patches.all.misc.build
+
+import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
+import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
+import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
+import app.revanced.patches.all.misc.transformation.BaseTransformInstructionsPatch
+import app.revanced.util.getReference
+import com.android.tools.smali.dexlib2.iface.ClassDef
+import com.android.tools.smali.dexlib2.iface.Method
+import com.android.tools.smali.dexlib2.iface.instruction.Instruction
+import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
+import com.android.tools.smali.dexlib2.iface.reference.FieldReference
+
+abstract class BaseSpoofBuildInfoPatch : BaseTransformInstructionsPatch>>() {
+ // The build information supported32BitAbis, supported64BitAbis, and supportedAbis are not supported for now,
+ // because initializing an array in transform is a bit more complex.
+
+ protected open val board: String? = null
+
+ protected open val bootloader: String? = null
+
+ protected open val brand: String? = null
+
+ protected open val cpuAbi: String? = null
+
+ protected open val cpuAbi2: String? = null
+
+ protected open val device: String? = null
+
+ protected open val display: String? = null
+
+ protected open val fingerprint: String? = null
+
+ protected open val hardware: String? = null
+
+ protected open val host: String? = null
+
+ protected open val id: String? = null
+
+ protected open val manufacturer: String? = null
+
+ protected open val model: String? = null
+
+ protected open val odmSku: String? = null
+
+ protected open val product: String? = null
+
+ protected open val radio: String? = null
+
+ protected open val serial: String? = null
+
+ protected open val sku: String? = null
+
+ protected open val socManufacturer: String? = null
+
+ protected open val socModel: String? = null
+
+ protected open val tags: String? = null
+
+ protected open val time: Long? = null
+
+ protected open val type: String? = null
+
+ protected open val user: String? = null
+
+
+ // Lazy, so that patch options above are initialized before they are accessed.
+ private val replacements: Map> by lazy {
+ buildMap {
+ if (board != null) put("BOARD", "const-string" to "\"$board\"")
+ if (bootloader != null) put("BOOTLOADER", "const-string" to "\"$bootloader\"")
+ if (brand != null) put("BRAND", "const-string" to "\"$brand\"")
+ if (cpuAbi != null) put("CPU_ABI", "const-string" to "\"$cpuAbi\"")
+ if (cpuAbi2 != null) put("CPU_ABI2", "const-string" to "\"$cpuAbi2\"")
+ if (device != null) put("DEVICE", "const-string" to "\"$device\"")
+ if (display != null) put("DISPLAY", "const-string" to "\"$display\"")
+ if (fingerprint != null) put("FINGERPRINT", "const-string" to "\"$fingerprint\"")
+ if (hardware != null) put("HARDWARE", "const-string" to "\"$hardware\"")
+ if (host != null) put("HOST", "const-string" to "\"$host\"")
+ if (id != null) put("ID", "const-string" to "\"$id\"")
+ if (manufacturer != null) put("MANUFACTURER", "const-string" to "\"$manufacturer\"")
+ if (model != null) put("MODEL", "const-string" to "\"$model\"")
+ if (odmSku != null) put("ODM_SKU", "const-string" to "\"$odmSku\"")
+ if (product != null) put("PRODUCT", "const-string" to "\"$product\"")
+ if (radio != null) put("RADIO", "const-string" to "\"$radio\"")
+ if (serial != null) put("SERIAL", "const-string" to "\"$serial\"")
+ if (sku != null) put("SKU", "const-string" to "\"$sku\"")
+ if (socManufacturer != null) put("SOC_MANUFACTURER", "const-string" to "\"$socManufacturer\"")
+ if (socModel != null) put("SOC_MODEL", "const-string" to "\"$socModel\"")
+ if (tags != null) put("TAGS", "const-string" to "\"$tags\"")
+ if (time != null) put("TIME", "const-wide" to "$time")
+ if (type != null) put("TYPE", "const-string" to "\"$type\"")
+ if (user != null) put("USER", "const-string" to "\"$user\"")
+ }
+ }
+
+ override fun filterMap(
+ classDef: ClassDef,
+ method: Method,
+ instruction: Instruction,
+ instructionIndex: Int
+ ): Pair>? {
+ val reference = instruction.getReference() ?: return null
+ if (reference.definingClass != BUILD_CLASS_DESCRIPTOR) return null
+
+ return replacements[reference.name]?.let { instructionIndex to it }
+ }
+
+ override fun transform(mutableMethod: MutableMethod, entry: Pair>) {
+ val (index, replacement) = entry
+ val (opcode, operand) = replacement
+ val register = mutableMethod.getInstruction(index).registerA
+
+ mutableMethod.replaceInstruction(index, "$opcode v$register, $operand")
+ }
+
+ private companion object {
+ private const val BUILD_CLASS_DESCRIPTOR = "Landroid/os/Build;"
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/app/revanced/patches/all/misc/build/SpoofBuildInfoPatch.kt b/src/main/kotlin/app/revanced/patches/all/misc/build/SpoofBuildInfoPatch.kt
new file mode 100644
index 000000000..994ddd455
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/all/misc/build/SpoofBuildInfoPatch.kt
@@ -0,0 +1,183 @@
+package app.revanced.patches.all.misc.build
+
+import app.revanced.patcher.patch.annotation.Patch
+import app.revanced.patcher.patch.options.PatchOption.PatchExtensions.longPatchOption
+import app.revanced.patcher.patch.options.PatchOption.PatchExtensions.stringPatchOption
+
+@Patch(
+ name = "Spoof build info",
+ description = "Spoof the information about the current build.",
+ use = false
+)
+@Suppress("unused")
+class SpoofBuildInfoPatch : BaseSpoofBuildInfoPatch() {
+ override val board by stringPatchOption(
+ key = "board",
+ default = null,
+ title = "Board",
+ description = "The name of the underlying board, like \"goldfish\"."
+ )
+
+ override val bootloader by stringPatchOption(
+ key = "bootloader",
+ default = null,
+ title = "Bootloader",
+ description = "The system bootloader version number."
+ )
+
+ override val brand by stringPatchOption(
+ key = "brand",
+ default = null,
+ title = "Brand",
+ description = "The consumer-visible brand with which the product/hardware will be associated, if any."
+ )
+
+ override val cpuAbi by stringPatchOption(
+ key = "cpu-abi",
+ default = null,
+ title = "CPU ABI",
+ description = "This field was deprecated in API level 21. Use SUPPORTED_ABIS instead."
+ )
+
+ override val cpuAbi2 by stringPatchOption(
+ key = "cpu-abi-2",
+ default = null,
+ title = "CPU ABI 2",
+ description = "This field was deprecated in API level 21. Use SUPPORTED_ABIS instead."
+ )
+
+ override val device by stringPatchOption(
+ key = "device",
+ default = null,
+ title = "Device",
+ description = "The name of the industrial design."
+ )
+
+ override val display by stringPatchOption(
+ key = "display",
+ default = null,
+ title = "Display",
+ description = "A build ID string meant for displaying to the user."
+ )
+
+ override val fingerprint by stringPatchOption(
+ key = "fingerprint",
+ default = null,
+ title = "Fingerprint",
+ description = "A string that uniquely identifies this build."
+ )
+
+ override val hardware by stringPatchOption(
+ key = "hardware",
+ default = null,
+ title = "Hardware",
+ description = "The name of the hardware (from the kernel command line or /proc)."
+ )
+
+ override val host by stringPatchOption(
+ key = "host",
+ default = null,
+ title = "Host",
+ description = "The host."
+ )
+
+ override val id by stringPatchOption(
+ key = "id",
+ default = null,
+ title = "ID",
+ description = "Either a changelist number, or a label like \"M4-rc20\"."
+ )
+
+ override val manufacturer by stringPatchOption(
+ key = "manufacturer",
+ default = null,
+ title = "Manufacturer",
+ description = "The manufacturer of the product/hardware."
+ )
+
+ override val model by stringPatchOption(
+ key = "model",
+ default = null,
+ title = "Model",
+ description = "The end-user-visible name for the end product."
+ )
+
+ override val odmSku by stringPatchOption(
+ key = "odm-sku",
+ default = null,
+ title = "ODM SKU",
+ description = "The SKU of the device as set by the original design manufacturer (ODM)."
+ )
+
+ override val product by stringPatchOption(
+ key = "product",
+ default = null,
+ title = "Product",
+ description = "The name of the overall product."
+ )
+
+ override val radio by stringPatchOption(
+ key = "radio",
+ default = null,
+ title = "Radio",
+ description = "This field was deprecated in API level 15. " +
+ "The radio firmware version is frequently not available when this class is initialized, " +
+ "leading to a blank or \"unknown\" value for this string. Use getRadioVersion() instead."
+ )
+
+ override val serial by stringPatchOption(
+ key = "serial",
+ default = null,
+ title = "Serial",
+ description = "This field was deprecated in API level 26. Use getSerial() instead."
+ )
+
+ override val sku by stringPatchOption(
+ key = "sku",
+ default = null,
+ title = "SKU",
+ description = "The SKU of the hardware (from the kernel command line)."
+ )
+
+ override val socManufacturer by stringPatchOption(
+ key = "soc-manufacturer",
+ default = null,
+ title = "SOC Manufacturer",
+ description = "The manufacturer of the device's primary system-on-chip."
+ )
+
+ override val socModel by stringPatchOption(
+ key = "soc-model",
+ default = null,
+ title = "SOC Model",
+ description = "The model name of the device's primary system-on-chip."
+ )
+
+ override val tags by stringPatchOption(
+ key = "tags",
+ default = null,
+ title = "Tags",
+ description = "Comma-separated tags describing the build, like \"unsigned,debug\"."
+ )
+
+ override val time by longPatchOption(
+ key = "time",
+ default = null,
+ title = "Time",
+ description = "The time at which the build was produced, given in milliseconds since the UNIX epoch."
+ )
+
+ override val type by stringPatchOption(
+ key = "type",
+ default = null,
+ title = "Type",
+ description = "The type of build, like \"user\" or \"eng\"."
+ )
+
+ override val user by stringPatchOption(
+ key = "user",
+ default = null,
+ title = "User",
+ description = "The user."
+ )
+}
\ No newline at end of file
From 1fa4d3f4e9ba9afcf1477cc6a597a559144a2033 Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Sat, 20 Jul 2024 16:08:40 +0000
Subject: [PATCH 19/50] chore(release): 4.12.0-dev.6 [skip ci]
# [4.12.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.5...v4.12.0-dev.6) (2024-07-20)
### Features
* Add `Spoof build info` patch ([e7829b4](https://github.com/ReVanced/revanced-patches/commit/e7829b41e782c9feda23b9d6acf48bae277d24d9))
---
CHANGELOG.md | 7 +++++++
gradle.properties | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a692f00d1..d21a4a0e8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# [4.12.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.5...v4.12.0-dev.6) (2024-07-20)
+
+
+### Features
+
+* Add `Spoof build info` patch ([e7829b4](https://github.com/ReVanced/revanced-patches/commit/e7829b41e782c9feda23b9d6acf48bae277d24d9))
+
# [4.12.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.4...v4.12.0-dev.5) (2024-07-20)
diff --git a/gradle.properties b/gradle.properties
index 45082e922..b5d995c58 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
-version = 4.12.0-dev.5
+version = 4.12.0-dev.6
From 63b6cede5fa5bcf377ced422da4e861996a41f0d Mon Sep 17 00:00:00 2001
From: oSumAtrIX
Date: Wed, 24 Jul 2024 20:00:35 +0200
Subject: [PATCH 20/50] fix(SoundCloud - Enable offline sync): Stop crashing by
reversing order of patching instructions from last to first to retain indices
---
.../patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt b/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt
index b6795e4a8..08446f986 100644
--- a/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch.kt
@@ -73,7 +73,7 @@ object EnableOfflineSyncPatch : BytecodePatch(
// The first three null checks need to be patched.
getInstructions().asSequence().filter {
it.opcode == Opcode.IF_EQZ
- }.take(3).map { it.location.index }.forEach { nullCheckIndex ->
+ }.take(3).toList().map { it.location.index }.asReversed().forEach { nullCheckIndex ->
val headerStringRegister = getInstruction(nullCheckIndex).registerA
addInstruction(nullCheckIndex, "const-string v$headerStringRegister, \"\"")
From 549731fc6fe283058a44229061421f6cb2a665e3 Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Wed, 24 Jul 2024 18:03:03 +0000
Subject: [PATCH 21/50] chore(release): 4.12.0-dev.7 [skip ci]
# [4.12.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.6...v4.12.0-dev.7) (2024-07-24)
### Bug Fixes
* **SoundCloud - Enable offline sync:** Stop crashing by reversing order of patching instructions from last to first to retain indices ([63b6ced](https://github.com/ReVanced/revanced-patches/commit/63b6cede5fa5bcf377ced422da4e861996a41f0d))
---
CHANGELOG.md | 7 +++++++
gradle.properties | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d21a4a0e8..d1c0f55fb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# [4.12.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.6...v4.12.0-dev.7) (2024-07-24)
+
+
+### Bug Fixes
+
+* **SoundCloud - Enable offline sync:** Stop crashing by reversing order of patching instructions from last to first to retain indices ([63b6ced](https://github.com/ReVanced/revanced-patches/commit/63b6cede5fa5bcf377ced422da4e861996a41f0d))
+
# [4.12.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.5...v4.12.0-dev.6) (2024-07-20)
diff --git a/gradle.properties b/gradle.properties
index b5d995c58..87f609bec 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
-version = 4.12.0-dev.6
+version = 4.12.0-dev.7
From d74c366dbf5f25c20fbfc5a0157c3c15dda82a16 Mon Sep 17 00:00:00 2001
From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Date: Fri, 26 Jul 2024 10:30:14 -0400
Subject: [PATCH 22/50] fix(YouTube - SponsorBlock): Correctly show minute
timestamp when creating a new segment
---
src/main/resources/addresources/values/strings.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/resources/addresources/values/strings.xml b/src/main/resources/addresources/values/strings.xml
index 85588efc1..f6a841e9f 100644
--- a/src/main/resources/addresources/values/strings.xml
+++ b/src/main/resources/addresources/values/strings.xml
@@ -872,7 +872,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
New SponsorBlock segment
- Set %1$02d:%2$02d:%3$03d as the start or end of a new segment?
+ Set %s as the start or end of a new segment?
start
end
now
From 59364d235d1fdfbf2130c0e3ce8899ce913ffb37 Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Fri, 26 Jul 2024 14:38:36 +0000
Subject: [PATCH 23/50] chore(release): 4.12.0-dev.8 [skip ci]
# [4.12.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.7...v4.12.0-dev.8) (2024-07-26)
### Bug Fixes
* **YouTube - SponsorBlock:** Correctly show minute timestamp when creating a new segment ([d74c366](https://github.com/ReVanced/revanced-patches/commit/d74c366dbf5f25c20fbfc5a0157c3c15dda82a16))
---
CHANGELOG.md | 7 +++++++
gradle.properties | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d1c0f55fb..35b7fd92f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# [4.12.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.7...v4.12.0-dev.8) (2024-07-26)
+
+
+### Bug Fixes
+
+* **YouTube - SponsorBlock:** Correctly show minute timestamp when creating a new segment ([d74c366](https://github.com/ReVanced/revanced-patches/commit/d74c366dbf5f25c20fbfc5a0157c3c15dda82a16))
+
# [4.12.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.6...v4.12.0-dev.7) (2024-07-24)
diff --git a/gradle.properties b/gradle.properties
index 87f609bec..f36a8380d 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
-version = 4.12.0-dev.7
+version = 4.12.0-dev.8
From 7572e31a31a05f22cebcdcc5dd6e6acd9bceaa4a Mon Sep 17 00:00:00 2001
From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Date: Fri, 26 Jul 2024 10:45:24 -0400
Subject: [PATCH 24/50] chore(YouTube): Comments
---
src/main/resources/addresources/values/strings.xml | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/main/resources/addresources/values/strings.xml b/src/main/resources/addresources/values/strings.xml
index f6a841e9f..1ffd5736f 100644
--- a/src/main/resources/addresources/values/strings.xml
+++ b/src/main/resources/addresources/values/strings.xml
@@ -870,8 +870,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
Choose the segment category
Category is disabled in settings. Enable category to submit.
New SponsorBlock segment
-
Set %s as the start or end of a new segment?
start
end
From 69c1f16f7eb0d5759a44f7f7a09b1757ce8f61dd Mon Sep 17 00:00:00 2001
From: oSumAtrIX
Date: Sun, 28 Jul 2024 15:53:48 +0200
Subject: [PATCH 25/50] fix(YouTube - Spoof client): Fix tracking history on
brand accounts (#3480)
---
.../misc/fix/playback/SpoofClientPatch.kt | 35 ++++++++++++++++---
.../fingerprints/GetTrackingUriFingerprint.kt | 21 +++++++++++
.../resources/addresources/values/strings.xml | 2 +-
3 files changed, 52 insertions(+), 6 deletions(-)
create mode 100644 src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/GetTrackingUriFingerprint.kt
diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt
index de6994840..f188a0a43 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt
@@ -83,6 +83,9 @@ object SpoofClientPatch : BytecodePatch(
// Player speed menu item.
CreatePlaybackSpeedMenuItemFingerprint,
+
+ // Watch history.
+ GetTrackingUriFingerprint,
),
) {
private const val INTEGRATIONS_CLASS_DESCRIPTOR =
@@ -153,7 +156,7 @@ object SpoofClientPatch : BytecodePatch(
.getInstructions().find { instruction ->
// requestMessage.clientInfo = clientInfoBuilder.build();
instruction.opcode == Opcode.IPUT_OBJECT &&
- instruction.getReference()?.type == CLIENT_INFO_CLASS_DESCRIPTOR
+ instruction.getReference()?.type == CLIENT_INFO_CLASS_DESCRIPTOR
}?.getReference() ?: throw PatchException("Could not find clientInfoField")
// Client info object's client type field.
@@ -164,13 +167,15 @@ object SpoofClientPatch : BytecodePatch(
// Client info object's client version field.
val clientInfoClientVersionField = result.mutableMethod
.getInstruction(result.scanResult.stringsScanResult!!.matches.first().index + 1)
- .getReference() ?: throw PatchException("Could not find clientInfoClientVersionField")
+ .getReference()
+ ?: throw PatchException("Could not find clientInfoClientVersionField")
Triple(clientInfoField, clientInfoClientTypeField, clientInfoClientVersionField)
}
val clientInfoClientModelField = CreatePlayerRequestBodyWithModelFingerprint.resultOrThrow().let {
- val getClientModelIndex = CreatePlayerRequestBodyWithModelFingerprint.indexOfBuildModelInstruction(it.method)
+ val getClientModelIndex =
+ CreatePlayerRequestBodyWithModelFingerprint.indexOfBuildModelInstruction(it.method)
// The next IPUT_OBJECT instruction after getting the client model is setting the client model field.
val index = it.mutableMethod.indexOfFirstInstructionOrThrow(getClientModelIndex) {
@@ -198,7 +203,7 @@ object SpoofClientPatch : BytecodePatch(
addInstruction(
checkCastIndex + 1,
"invoke-static { v$requestMessageInstanceRegister }," +
- " ${result.classDef.type}->$setClientInfoMethodName($clientInfoContainerClassName)V",
+ " ${result.classDef.type}->$setClientInfoMethodName($clientInfoContainerClassName)V",
)
}
@@ -291,7 +296,8 @@ object SpoofClientPatch : BytecodePatch(
it.mutableMethod.apply {
// Find the conditional check if the playback speed menu item is not created.
- val shouldCreateMenuIndex = indexOfFirstInstructionOrThrow(scanResult.endIndex) { opcode == Opcode.IF_EQZ }
+ val shouldCreateMenuIndex =
+ indexOfFirstInstructionOrThrow(scanResult.endIndex) { opcode == Opcode.IF_EQZ }
val shouldCreateMenuRegister = getInstruction(shouldCreateMenuIndex).registerA
addInstructions(
@@ -305,5 +311,24 @@ object SpoofClientPatch : BytecodePatch(
}
// endregion
+
+ // Fix watch history if spoofing to iOS.
+
+ GetTrackingUriFingerprint.resultOrThrow().let {
+ it.mutableMethod.apply {
+ val returnUrlIndex = it.scanResult.patternScanResult!!.endIndex
+ val urlRegister = getInstruction(returnUrlIndex).registerA
+
+ addInstructions(
+ returnUrlIndex,
+ """
+ invoke-static { v$urlRegister }, $INTEGRATIONS_CLASS_DESCRIPTOR->overrideTrackingUrl(Landroid/net/Uri;)Landroid/net/Uri;
+ move-result-object v$urlRegister
+ """
+ )
+ }
+ }
+
+ // endregion
}
}
diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/GetTrackingUriFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/GetTrackingUriFingerprint.kt
new file mode 100644
index 000000000..328fb026f
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/GetTrackingUriFingerprint.kt
@@ -0,0 +1,21 @@
+package app.revanced.patches.youtube.misc.fix.playback.fingerprints
+
+import app.revanced.patcher.extensions.or
+import app.revanced.patcher.fingerprint.MethodFingerprint
+import com.android.tools.smali.dexlib2.AccessFlags
+import com.android.tools.smali.dexlib2.Opcode
+
+internal object GetTrackingUriFingerprint : MethodFingerprint(
+ returnType = "Landroid/net/Uri;",
+ accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
+ parameters = emptyList(),
+ opcodes = listOf(
+ Opcode.IGET_OBJECT,
+ Opcode.INVOKE_STATIC,
+ Opcode.MOVE_RESULT_OBJECT,
+ Opcode.RETURN_OBJECT
+ ),
+ customFingerprint = { _, classDef ->
+ classDef.endsWith("TrackingUrlModel;")
+ }
+)
diff --git a/src/main/resources/addresources/values/strings.xml b/src/main/resources/addresources/values/strings.xml
index 1ffd5736f..fc2924bdc 100644
--- a/src/main/resources/addresources/values/strings.xml
+++ b/src/main/resources/addresources/values/strings.xml
@@ -1132,7 +1132,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Client is not spoofed\n\nVideo playback may not work
Turning off this setting may cause video playback issues.
Spoof client to iOS
- Client is currently spoofed to iOS\n\nSide effects include:\n• No HDR video\n• Watch history may not work\n• Higher video qualities may be missing\n• Live streams cannot play as audio only\n• Live streams not available on Android 8.0
+ Client is currently spoofed to iOS\n\nSide effects include:\n• No HDR video\n• Higher video qualities may be missing\n• Live streams cannot play as audio only\n• Live streams not available on Android 8.0
Client is currently spoofed to Android VR\n\nSide effects include:\n• No HDR video\n• Kids videos do not playback\n• Paused videos can randomly resume\n• Low quality Shorts seekbar thumbnails\n• Download action button is always hidden\n• End screen cards are always hidden
Spoof client thumbnails not available (API timed out)
Spoof client thumbnails temporarily not available: %s
From cf9f49b4222f12927aa789630f31c85c48c90451 Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Sun, 28 Jul 2024 13:56:03 +0000
Subject: [PATCH 26/50] chore(release): 4.12.0-dev.9 [skip ci]
# [4.12.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.8...v4.12.0-dev.9) (2024-07-28)
### Bug Fixes
* **YouTube - Spoof client:** Fix tracking history on brand accounts ([#3480](https://github.com/ReVanced/revanced-patches/issues/3480)) ([69c1f16](https://github.com/ReVanced/revanced-patches/commit/69c1f16f7eb0d5759a44f7f7a09b1757ce8f61dd))
---
CHANGELOG.md | 7 +++++++
gradle.properties | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 35b7fd92f..88d0796d4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# [4.12.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.8...v4.12.0-dev.9) (2024-07-28)
+
+
+### Bug Fixes
+
+* **YouTube - Spoof client:** Fix tracking history on brand accounts ([#3480](https://github.com/ReVanced/revanced-patches/issues/3480)) ([69c1f16](https://github.com/ReVanced/revanced-patches/commit/69c1f16f7eb0d5759a44f7f7a09b1757ce8f61dd))
+
# [4.12.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.7...v4.12.0-dev.8) (2024-07-26)
diff --git a/gradle.properties b/gradle.properties
index f36a8380d..2662866e4 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
-version = 4.12.0-dev.8
+version = 4.12.0-dev.9
From 0e6ae5fee752a76604cf9b95f9a76c0cbe5f7dae Mon Sep 17 00:00:00 2001
From: Zain Arbani
Date: Sun, 28 Jul 2024 21:50:30 +0700
Subject: [PATCH 27/50] fix(YouTube - Client Spoof): Restore missing high
qualities by spoofing the iOS client user agent (#3468)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Co-authored-by: oSumAtrIX
---
.../misc/fix/playback/SpoofClientPatch.kt | 51 +++++++++++++++++++
.../fingerprints/BuildRequestFingerprint.kt | 15 ++++++
...equestBodyWithVersionReleaseFingerprint.kt | 31 +++++++++++
.../resources/addresources/values/strings.xml | 4 +-
4 files changed, 99 insertions(+), 2 deletions(-)
create mode 100644 src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/BuildRequestFingerprint.kt
create mode 100644 src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/CreatePlayerRequestBodyWithVersionReleaseFingerprint.kt
diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt
index f188a0a43..4a9a1724c 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/SpoofClientPatch.kt
@@ -5,6 +5,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.getInstructions
+import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.extensions.or
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchException
@@ -77,6 +78,7 @@ object SpoofClientPatch : BytecodePatch(
SetPlayerRequestClientTypeFingerprint,
CreatePlayerRequestBodyFingerprint,
CreatePlayerRequestBodyWithModelFingerprint,
+ CreatePlayerRequestBodyWithVersionReleaseFingerprint,
// Player gesture config.
PlayerGestureConfigSyntheticFingerprint,
@@ -84,6 +86,9 @@ object SpoofClientPatch : BytecodePatch(
// Player speed menu item.
CreatePlaybackSpeedMenuItemFingerprint,
+ // Video qualities missing.
+ BuildRequestFingerprint,
+
// Watch history.
GetTrackingUriFingerprint,
),
@@ -92,6 +97,10 @@ object SpoofClientPatch : BytecodePatch(
"Lapp/revanced/integrations/youtube/patches/spoof/SpoofClientPatch;"
private const val CLIENT_INFO_CLASS_DESCRIPTOR =
"Lcom/google/protos/youtube/api/innertube/InnertubeContext\$ClientInfo;"
+ private const val REQUEST_CLASS_DESCRIPTOR =
+ "Lorg/chromium/net/ExperimentalUrlRequest;"
+ private const val REQUEST_BUILDER_CLASS_DESCRIPTOR =
+ "Lorg/chromium/net/ExperimentalUrlRequest\$Builder;"
override fun execute(context: BytecodeContext) {
AddResourcesPatch(this::class)
@@ -186,6 +195,19 @@ object SpoofClientPatch : BytecodePatch(
?: throw PatchException("Could not find clientInfoClientModelField")
}
+ val clientInfoOsVersionField = CreatePlayerRequestBodyWithVersionReleaseFingerprint.resultOrThrow().let {
+ val getOsVersionIndex =
+ CreatePlayerRequestBodyWithVersionReleaseFingerprint.indexOfBuildVersionReleaseInstruction(it.method)
+
+ // The next IPUT_OBJECT instruction after getting the client os version is setting the client os version field.
+ val index = it.mutableMethod.indexOfFirstInstructionOrThrow(getOsVersionIndex) {
+ opcode == Opcode.IPUT_OBJECT
+ }
+
+ it.mutableMethod.getInstruction(index).getReference()
+ ?: throw PatchException("Could not find clientInfoOsVersionField")
+ }
+
// endregion
// region Spoof client type for /player requests.
@@ -245,6 +267,12 @@ object SpoofClientPatch : BytecodePatch(
invoke-static { v1 }, $INTEGRATIONS_CLASS_DESCRIPTOR->getClientVersion(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
iput-object v1, v0, $clientInfoClientVersionField
+
+ # Set client os version to the spoofed value.
+ iget-object v1, v0, $clientInfoOsVersionField
+ invoke-static { v1 }, $INTEGRATIONS_CLASS_DESCRIPTOR->getOsVersion(Ljava/lang/String;)Ljava/lang/String;
+ move-result-object v1
+ iput-object v1, v0, $clientInfoOsVersionField
:disabled
return-void
@@ -330,5 +358,28 @@ object SpoofClientPatch : BytecodePatch(
}
// endregion
+
+ // region Fix video qualities missing, if spoofing to iOS by overriding the user agent.
+
+ BuildRequestFingerprint.resultOrThrow().let { result ->
+ result.mutableMethod.apply {
+ val buildRequestIndex = getInstructions().lastIndex - 2
+ val requestBuilderRegister = getInstruction(buildRequestIndex).registerC
+
+ val newRequestBuilderIndex = result.scanResult.patternScanResult!!.endIndex
+ val urlRegister = getInstruction(newRequestBuilderIndex).registerD
+
+ // Replace "requestBuilder.build(): Request" with "overrideUserAgent(requestBuilder, url): Request".
+ replaceInstruction(
+ buildRequestIndex,
+ "invoke-static { v$requestBuilderRegister, v$urlRegister }, " +
+ "$INTEGRATIONS_CLASS_DESCRIPTOR->" +
+ "overrideUserAgent(${REQUEST_BUILDER_CLASS_DESCRIPTOR}Ljava/lang/String;)" +
+ REQUEST_CLASS_DESCRIPTOR
+ )
+ }
+ }
+
+ // endregion
}
}
diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/BuildRequestFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/BuildRequestFingerprint.kt
new file mode 100644
index 000000000..49c4a76ee
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/BuildRequestFingerprint.kt
@@ -0,0 +1,15 @@
+package app.revanced.patches.youtube.misc.fix.playback.fingerprints
+
+import app.revanced.patcher.extensions.or
+import app.revanced.patcher.fingerprint.MethodFingerprint
+import com.android.tools.smali.dexlib2.AccessFlags
+import com.android.tools.smali.dexlib2.Opcode
+
+internal object BuildRequestFingerprint : MethodFingerprint(
+ accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC,
+ returnType = "Lorg/chromium/net/UrlRequest;",
+ opcodes = listOf(
+ Opcode.INVOKE_DIRECT,
+ Opcode.INVOKE_VIRTUAL
+ )
+)
diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/CreatePlayerRequestBodyWithVersionReleaseFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/CreatePlayerRequestBodyWithVersionReleaseFingerprint.kt
new file mode 100644
index 000000000..1fba488be
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playback/fingerprints/CreatePlayerRequestBodyWithVersionReleaseFingerprint.kt
@@ -0,0 +1,31 @@
+package app.revanced.patches.youtube.misc.fix.playback.fingerprints
+
+import app.revanced.patcher.extensions.or
+import app.revanced.patcher.fingerprint.MethodFingerprint
+import app.revanced.patches.youtube.misc.fix.playback.fingerprints.CreatePlayerRequestBodyWithVersionReleaseFingerprint.indexOfBuildVersionReleaseInstruction
+import app.revanced.util.containsWideLiteralInstructionValue
+import app.revanced.util.getReference
+import app.revanced.util.indexOfFirstInstruction
+import com.android.tools.smali.dexlib2.AccessFlags
+import com.android.tools.smali.dexlib2.iface.Method
+import com.android.tools.smali.dexlib2.iface.reference.FieldReference
+
+internal object CreatePlayerRequestBodyWithVersionReleaseFingerprint : MethodFingerprint(
+ returnType = "L",
+ accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
+ parameters = listOf(),
+ customFingerprint = { methodDef, _ ->
+ methodDef.containsWideLiteralInstructionValue(1073741824) &&
+ indexOfBuildVersionReleaseInstruction(methodDef) >= 0
+ },
+) {
+ fun indexOfBuildVersionReleaseInstruction(methodDef: Method) =
+ methodDef.indexOfFirstInstruction {
+ val reference = getReference()
+ reference?.definingClass == "Landroid/os/Build\$VERSION;" &&
+ reference.name == "RELEASE" &&
+ reference.type == "Ljava/lang/String;"
+ }
+}
+
+
diff --git a/src/main/resources/addresources/values/strings.xml b/src/main/resources/addresources/values/strings.xml
index fc2924bdc..7f5ab9d0d 100644
--- a/src/main/resources/addresources/values/strings.xml
+++ b/src/main/resources/addresources/values/strings.xml
@@ -1132,8 +1132,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Client is not spoofed\n\nVideo playback may not work
Turning off this setting may cause video playback issues.
Spoof client to iOS
- Client is currently spoofed to iOS\n\nSide effects include:\n• No HDR video\n• Higher video qualities may be missing\n• Live streams cannot play as audio only\n• Live streams not available on Android 8.0
- Client is currently spoofed to Android VR\n\nSide effects include:\n• No HDR video\n• Kids videos do not playback\n• Paused videos can randomly resume\n• Low quality Shorts seekbar thumbnails\n• Download action button is always hidden\n• End screen cards are always hidden
+ Client is currently spoofed to iOS\n\nSide effects include:\n• No HDR video\n• Higher video qualities may be missing\n• Live streams cannot play as audio only
+ Client is currently spoofed to Android VR\n\nSide effects include:\n• No HDR video\n• Kids videos do not playback\n• Paused videos can randomly resume\n• Low quality Shorts seekbar thumbnails\n• Download action button is hidden\n• End screen cards are hidden
Spoof client thumbnails not available (API timed out)
Spoof client thumbnails temporarily not available: %s
From 328ce031b596157eec834a00ac7447007464a1e6 Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Sun, 28 Jul 2024 14:52:33 +0000
Subject: [PATCH 28/50] chore(release): 4.12.0-dev.10 [skip ci]
# [4.12.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.9...v4.12.0-dev.10) (2024-07-28)
### Bug Fixes
* **YouTube - Client Spoof:** Restore missing high qualities by spoofing the iOS client user agent ([#3468](https://github.com/ReVanced/revanced-patches/issues/3468)) ([0e6ae5f](https://github.com/ReVanced/revanced-patches/commit/0e6ae5fee752a76604cf9b95f9a76c0cbe5f7dae))
---
CHANGELOG.md | 7 +++++++
gradle.properties | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 88d0796d4..a720610fb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# [4.12.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.9...v4.12.0-dev.10) (2024-07-28)
+
+
+### Bug Fixes
+
+* **YouTube - Client Spoof:** Restore missing high qualities by spoofing the iOS client user agent ([#3468](https://github.com/ReVanced/revanced-patches/issues/3468)) ([0e6ae5f](https://github.com/ReVanced/revanced-patches/commit/0e6ae5fee752a76604cf9b95f9a76c0cbe5f7dae))
+
# [4.12.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.8...v4.12.0-dev.9) (2024-07-28)
diff --git a/gradle.properties b/gradle.properties
index 2662866e4..4a2aef756 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
-version = 4.12.0-dev.9
+version = 4.12.0-dev.10
From 094ae59fc92663fff6c5d6f5cbece41822a326f9 Mon Sep 17 00:00:00 2001
From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Date: Sun, 28 Jul 2024 14:16:19 -0400
Subject: [PATCH 29/50] fix(YouTube - Bypass image region restrictions): Move
setting to `Misc` menu
The setting is closer in nature to the other settings in Misc than the settings in the General menu.
---
.../youtube/layout/thumbnails/BypassImageRegionRestrictions.kt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions.kt
index 132f5c96a..faf77ddab 100644
--- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions.kt
+++ b/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions.kt
@@ -60,7 +60,7 @@ object BypassImageRegionRestrictions : BytecodePatch(emptySet()) {
override fun execute(context: BytecodeContext) {
AddResourcesPatch(this::class)
- SettingsPatch.PreferenceScreen.GENERAL_LAYOUT.addPreferences(
+ SettingsPatch.PreferenceScreen.MISC.addPreferences(
SwitchPreference("revanced_bypass_image_region_restrictions")
)
From d8b7b7edf81bcaa2e953ecd03d9a26f95ae9211b Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Sun, 28 Jul 2024 18:18:31 +0000
Subject: [PATCH 30/50] chore(release): 4.12.0-dev.11 [skip ci]
# [4.12.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.10...v4.12.0-dev.11) (2024-07-28)
### Bug Fixes
* **YouTube - Bypass image region restrictions:** Move setting to `Misc` menu ([094ae59](https://github.com/ReVanced/revanced-patches/commit/094ae59fc92663fff6c5d6f5cbece41822a326f9))
---
CHANGELOG.md | 7 +++++++
gradle.properties | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a720610fb..7c2c26ab5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# [4.12.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.10...v4.12.0-dev.11) (2024-07-28)
+
+
+### Bug Fixes
+
+* **YouTube - Bypass image region restrictions:** Move setting to `Misc` menu ([094ae59](https://github.com/ReVanced/revanced-patches/commit/094ae59fc92663fff6c5d6f5cbece41822a326f9))
+
# [4.12.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.9...v4.12.0-dev.10) (2024-07-28)
diff --git a/gradle.properties b/gradle.properties
index 4a2aef756..0d9793657 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
-version = 4.12.0-dev.10
+version = 4.12.0-dev.11
From 60492aea7863e07d8bf1af9380ae9295ca161f3c Mon Sep 17 00:00:00 2001
From: Cedric
Date: Sun, 28 Jul 2024 15:56:12 -0600
Subject: [PATCH 31/50] feat(SwissID): Add `Remove Google Play Integrity
Integrity check` patch (#3478)
Co-authored-by: oSumAtrIX
---
api/revanced-patches.api | 6 +++
.../RemoveGooglePlayIntegrityCheck.kt | 37 +++++++++++++++++++
.../fingerprints/CheckIntegrityFingerprint.kt | 11 ++++++
3 files changed, 54 insertions(+)
create mode 100644 src/main/kotlin/app/revanced/patches/swissid/integritycheck/RemoveGooglePlayIntegrityCheck.kt
create mode 100644 src/main/kotlin/app/revanced/patches/swissid/integritycheck/fingerprints/CheckIntegrityFingerprint.kt
diff --git a/api/revanced-patches.api b/api/revanced-patches.api
index cba63bcab..e8eba4ec4 100644
--- a/api/revanced-patches.api
+++ b/api/revanced-patches.api
@@ -1178,6 +1178,12 @@ public final class app/revanced/patches/strava/upselling/DisableSubscriptionSugg
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
+public final class app/revanced/patches/swissid/integritycheck/RemoveGooglePlayIntegrityCheck : app/revanced/patcher/patch/BytecodePatch {
+ public static final field INSTANCE Lapp/revanced/patches/swissid/integritycheck/RemoveGooglePlayIntegrityCheck;
+ public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
+ public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
+}
+
public final class app/revanced/patches/ticktick/misc/themeunlock/UnlockProPatch : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/ticktick/misc/themeunlock/UnlockProPatch;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
diff --git a/src/main/kotlin/app/revanced/patches/swissid/integritycheck/RemoveGooglePlayIntegrityCheck.kt b/src/main/kotlin/app/revanced/patches/swissid/integritycheck/RemoveGooglePlayIntegrityCheck.kt
new file mode 100644
index 000000000..e65105cc3
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/swissid/integritycheck/RemoveGooglePlayIntegrityCheck.kt
@@ -0,0 +1,37 @@
+package app.revanced.patches.swissid.integritycheck
+
+import app.revanced.patcher.data.BytecodeContext
+import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
+import app.revanced.patcher.patch.BytecodePatch
+import app.revanced.patcher.patch.annotation.CompatiblePackage
+import app.revanced.patcher.patch.annotation.Patch
+import app.revanced.patches.swissid.integritycheck.fingerprints.CheckIntegrityFingerprint
+import app.revanced.util.resultOrThrow
+
+@Patch(
+ name = "Remove Google Play Integrity Integrity check",
+ description = "Removes the Google Play Integrity check. With this it's possible to use SwissID on custom ROMS." +
+ "If the device is rooted, root permissions must be hidden from the app.",
+ compatiblePackages = [CompatiblePackage("com.swisssign.swissid.mobile")],
+)
+@Suppress("unused")
+object RemoveGooglePlayIntegrityCheck : BytecodePatch(
+ setOf(CheckIntegrityFingerprint),
+) {
+ private const val RESULT_METHOD_REFERENCE = " Lcom/swisssign/deviceintegrity/" +
+ "DeviceintegrityPlugin\$onMethodCall\$1;->\$result:" +
+ "Lio/flutter/plugin/common/MethodChannel\$Result;"
+ private const val SUCCESS_METHOD_REFERENCE =
+ "Lio/flutter/plugin/common/MethodChannel\$Result;->success(Ljava/lang/Object;)V"
+
+ override fun execute(context: BytecodeContext) =
+ CheckIntegrityFingerprint.resultOrThrow().mutableMethod.addInstructions(
+ 0,
+ """
+ iget-object p1, p0, $RESULT_METHOD_REFERENCE
+ const-string v0, "VALID"
+ invoke-interface {p1, v0}, $SUCCESS_METHOD_REFERENCE
+ return-void
+ """,
+ )
+}
diff --git a/src/main/kotlin/app/revanced/patches/swissid/integritycheck/fingerprints/CheckIntegrityFingerprint.kt b/src/main/kotlin/app/revanced/patches/swissid/integritycheck/fingerprints/CheckIntegrityFingerprint.kt
new file mode 100644
index 000000000..ad1fe4fe6
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/swissid/integritycheck/fingerprints/CheckIntegrityFingerprint.kt
@@ -0,0 +1,11 @@
+package app.revanced.patches.swissid.integritycheck.fingerprints
+
+import app.revanced.patcher.fingerprint.MethodFingerprint
+import com.android.tools.smali.dexlib2.AccessFlags
+import com.android.tools.smali.dexlib2.Opcode
+
+internal object CheckIntegrityFingerprint : MethodFingerprint(
+ returnType = "V",
+ parameters = listOf("Lcom/swisssign/deviceintegrity/model/DeviceIntegrityResult;"),
+ strings = listOf("it", "result")
+)
From 217d209844fde68b5bb87e6f598bc326236bd2b1 Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Sun, 28 Jul 2024 21:58:12 +0000
Subject: [PATCH 32/50] chore(release): 4.12.0-dev.12 [skip ci]
# [4.12.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.11...v4.12.0-dev.12) (2024-07-28)
### Features
* **SwissID:** Add `Remove Google Play Integrity Integrity check` patch ([#3478](https://github.com/ReVanced/revanced-patches/issues/3478)) ([60492ae](https://github.com/ReVanced/revanced-patches/commit/60492aea7863e07d8bf1af9380ae9295ca161f3c))
---
CHANGELOG.md | 7 +++++++
gradle.properties | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7c2c26ab5..a54076765 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# [4.12.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.11...v4.12.0-dev.12) (2024-07-28)
+
+
+### Features
+
+* **SwissID:** Add `Remove Google Play Integrity Integrity check` patch ([#3478](https://github.com/ReVanced/revanced-patches/issues/3478)) ([60492ae](https://github.com/ReVanced/revanced-patches/commit/60492aea7863e07d8bf1af9380ae9295ca161f3c))
+
# [4.12.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.10...v4.12.0-dev.11) (2024-07-28)
diff --git a/gradle.properties b/gradle.properties
index 0d9793657..761e41b62 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
-version = 4.12.0-dev.11
+version = 4.12.0-dev.12
From fd220337f4a4d9ce24667293edc7ffb553ad8926 Mon Sep 17 00:00:00 2001
From: ReVanced Bot
Date: Mon, 29 Jul 2024 07:04:13 +0200
Subject: [PATCH 33/50] chore: Sync translations (#3482)
---
.../addresources/values-af-rZA/strings.xml | 2 -
.../addresources/values-am-rET/strings.xml | 2 -
.../addresources/values-ar-rSA/strings.xml | 8 +-
.../addresources/values-as-rIN/strings.xml | 2 -
.../addresources/values-az-rAZ/strings.xml | 8 +-
.../addresources/values-be-rBY/strings.xml | 5 -
.../addresources/values-bg-rBG/strings.xml | 2 -
.../addresources/values-bn-rBD/strings.xml | 5 -
.../addresources/values-bs-rBA/strings.xml | 2 -
.../addresources/values-ca-rES/strings.xml | 2 -
.../addresources/values-cs-rCZ/strings.xml | 8 +-
.../addresources/values-da-rDK/strings.xml | 8 +-
.../addresources/values-de-rDE/strings.xml | 8 +-
.../addresources/values-el-rGR/strings.xml | 6 +-
.../addresources/values-es-rES/strings.xml | 10 +-
.../addresources/values-et-rEE/strings.xml | 16 -
.../addresources/values-eu-rES/strings.xml | 2 -
.../addresources/values-fa-rIR/strings.xml | 12 -
.../addresources/values-fi-rFI/strings.xml | 7 +-
.../addresources/values-fil-rPH/strings.xml | 5 -
.../addresources/values-fr-rFR/strings.xml | 86 +++--
.../addresources/values-gl-rES/strings.xml | 2 -
.../addresources/values-gu-rIN/strings.xml | 2 -
.../addresources/values-hi-rIN/strings.xml | 2 -
.../addresources/values-hr-rHR/strings.xml | 15 -
.../addresources/values-hu-rHU/strings.xml | 11 +-
.../addresources/values-hy-rAM/strings.xml | 7 -
.../addresources/values-in-rID/strings.xml | 80 ++++-
.../addresources/values-is-rIS/strings.xml | 13 -
.../addresources/values-it-rIT/strings.xml | 8 +-
.../addresources/values-iw-rIL/strings.xml | 2 -
.../addresources/values-ja-rJP/strings.xml | 12 +-
.../addresources/values-ka-rGE/strings.xml | 2 -
.../addresources/values-kk-rKZ/strings.xml | 11 -
.../addresources/values-km-rKH/strings.xml | 9 -
.../addresources/values-kn-rIN/strings.xml | 2 -
.../addresources/values-ko-rKR/strings.xml | 30 +-
.../addresources/values-ky-rKG/strings.xml | 2 -
.../addresources/values-lo-rLA/strings.xml | 2 -
.../addresources/values-lt-rLT/strings.xml | 13 -
.../addresources/values-lv-rLV/strings.xml | 11 -
.../addresources/values-mk-rMK/strings.xml | 2 -
.../addresources/values-ml-rIN/strings.xml | 2 -
.../addresources/values-mn-rMN/strings.xml | 2 -
.../addresources/values-mr-rIN/strings.xml | 2 -
.../addresources/values-ms-rMY/strings.xml | 10 -
.../addresources/values-my-rMM/strings.xml | 2 -
.../addresources/values-nb-rNO/strings.xml | 11 +-
.../addresources/values-ne-rIN/strings.xml | 2 -
.../addresources/values-nl-rNL/strings.xml | 8 +-
.../addresources/values-or-rIN/strings.xml | 11 -
.../addresources/values-pa-rIN/strings.xml | 2 -
.../addresources/values-pl-rPL/strings.xml | 37 +-
.../addresources/values-pt-rBR/strings.xml | 6 +-
.../addresources/values-pt-rPT/strings.xml | 8 +-
.../addresources/values-ro-rRO/strings.xml | 10 +-
.../addresources/values-ru-rRU/strings.xml | 60 ++--
.../addresources/values-si-rLK/strings.xml | 2 -
.../addresources/values-sk-rSK/strings.xml | 5 -
.../addresources/values-sl-rSI/strings.xml | 2 -
.../addresources/values-sq-rAL/strings.xml | 12 -
.../addresources/values-sr-rSP/strings.xml | 318 +++++++++---------
.../addresources/values-sv-rSE/strings.xml | 8 +-
.../addresources/values-sw-rKE/strings.xml | 2 -
.../addresources/values-ta-rIN/strings.xml | 2 -
.../addresources/values-te-rIN/strings.xml | 8 -
.../addresources/values-th-rTH/strings.xml | 3 -
.../addresources/values-tl-rPH/strings.xml | 2 -
.../addresources/values-tr-rTR/strings.xml | 8 +-
.../addresources/values-uk-rUA/strings.xml | 8 +-
.../addresources/values-ur-rIN/strings.xml | 2 -
.../addresources/values-uz-rUZ/strings.xml | 10 -
.../addresources/values-vi-rVN/strings.xml | 15 +-
.../addresources/values-zh-rCN/strings.xml | 6 +-
.../addresources/values-zh-rHK/strings.xml | 2 -
.../addresources/values-zh-rTW/strings.xml | 8 +-
.../addresources/values-zu-rZA/strings.xml | 2 -
77 files changed, 411 insertions(+), 631 deletions(-)
diff --git a/src/main/resources/addresources/values-af-rZA/strings.xml b/src/main/resources/addresources/values-af-rZA/strings.xml
index a4fa31ad5..d7e6ed299 100644
--- a/src/main/resources/addresources/values-af-rZA/strings.xml
+++ b/src/main/resources/addresources/values-af-rZA/strings.xml
@@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
diff --git a/src/main/resources/addresources/values-bg-rBG/strings.xml b/src/main/resources/addresources/values-bg-rBG/strings.xml
index 9eb7944b5..1e0ca1b8d 100644
--- a/src/main/resources/addresources/values-bg-rBG/strings.xml
+++ b/src/main/resources/addresources/values-bg-rBG/strings.xml
@@ -423,8 +423,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
Положителен вот
Отрицателен вот
Промяна на категорията
-
начало
край
сега
diff --git a/src/main/resources/addresources/values-bn-rBD/strings.xml b/src/main/resources/addresources/values-bn-rBD/strings.xml
index 2de9de8c1..e604b63a4 100644
--- a/src/main/resources/addresources/values-bn-rBD/strings.xml
+++ b/src/main/resources/addresources/values-bn-rBD/strings.xml
@@ -792,9 +792,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
সেগমেন্টের বিভাগ নির্বাচন করুন
সেটিং থেকে বিভাগ নিস্ক্রিয় করা হয়েছে। জমা দিতে বিভাগ সক্রিয় করুন।
নতুন স্পন্সরব্লক সেগমেন্ট
-
- একটি নতুন সেগমেন্টের শুরু বা শেষ হিসাবে %1$02d:%2$02d:%3$03d সেট করবেন?
শুরু
শেষ
এখন
@@ -1043,8 +1040,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
ক্লায়েন্ট স্পুফ করা হয়নি\n\nভিডিও প্লেব্যাক ঠিকমতো কাজ নাও করতে পারে
এই সেটিংটি বন্ধ করার ফলে ভিডিও প্লেব্যাক ত্রুটি হতে পারে।
ক্লায়েন্ট iOS এ স্পুফ করুন
- ক্লায়েন্ট এখন iOS এ স্পুফ করা হয়েছে\n\nপার্শ্বপ্রতিক্রিয়া রয়েছে:\n• কোন এইচিডিআর ভিডিও নেই\n• ভিডিও ইতিহাস কাজ নাও করতে পারে\n• উচ্চ ভিডিও গুণমান অনুপস্থিত থাকতে পারে\n•শুধুমাত্র অডিওতে লাইভ স্ট্রিম চলবে না\n• অ্যান্ড্রয়েট ৮ সংস্করণে লাইভ স্ট্রিম উপলভ্য নয়
- ক্লায়েন্টকে বর্তমানে Android VR-এর সাথে প্রতারণা করা হয়েছে\n\nসাইড এফেক্টগুলির মধ্যে রয়েছে:\n• কোনও HDR ভিডিও নেই\n• বাচ্চাদের ভিডিও প্লেব্যাক হয় না\n• বিরতি দেওয়া ভিডিওগুলি এলোমেলোভাবে আবার শুরু হতে পারে\n• নিম্নমানের শর্টস সিকবার থাম্বনেল\n• ডাউনলোড অ্যাকশন বোতাম সবসময় লুকানো থাকে\n• শেষ স্ক্রিন কার্ড সবসময় লুকানো থাকে
ক্লায়েন্ট স্পুফ থাম্বনেইল সাময়িকভাবে উপলভ্য নয় (API সময় শেষ হয়েছে)
স্পুফ ক্লায়েন্ট থাম্বনেইল সাময়িকভাবে উপলভ্য নয়: %s
diff --git a/src/main/resources/addresources/values-bs-rBA/strings.xml b/src/main/resources/addresources/values-bs-rBA/strings.xml
index a4fa31ad5..d7e6ed299 100644
--- a/src/main/resources/addresources/values-bs-rBA/strings.xml
+++ b/src/main/resources/addresources/values-bs-rBA/strings.xml
@@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
diff --git a/src/main/resources/addresources/values-da-rDK/strings.xml b/src/main/resources/addresources/values-da-rDK/strings.xml
index 8f57943e2..8f338bbb1 100644
--- a/src/main/resources/addresources/values-da-rDK/strings.xml
+++ b/src/main/resources/addresources/values-da-rDK/strings.xml
@@ -865,9 +865,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Vælg segmentkategori
Kategori er deaktiveret i indstillinger. Aktivér kategori for at indsende.
Nyt SponsorBlock segment
-
- Sæt %1$02d:%2$02d:%3$03d som start eller afslutning af et nyt segment?
+ Sæt %s som start eller afslutning af et nyt segment?
start
slut
nu
@@ -1118,8 +1116,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Klienten er ikke forfalsket\n\nVideoafspilning fungerer muligvis ikke
At slå denne indstilling fra kan forårsage problemer med videoafspilning.
Spoof klient til iOS
- Klienten er i øjeblikket spoofed til iOS\n\nBivirkninger omfatter:\n• Ingen HDR-video\n• Se historie fungerer muligvis ikke\n• Højere video kvaliteter mangler muligvis\n• Live streams kan ikke afspilles som lyd kun\n• Live streams ikke tilgængelig på Android 8.0
- Klienten er i øjeblikket spoofed til Android VR\n\nBivirkninger omfatter:\n• Ingen HDR-video\n• Kids videoer ikke afspilning\n• Pause videoer kan tilfældigt genoptage\n• Lav kvalitet Shorts søgelinje miniaturer\n• Download handling knap er altid skjult\n• End screen cards are always hidden
+ Klienten er i øjeblikket spoofed til iOS\n\nBivirkninger omfatter:\n• Ingen HDR-video\n• Højere videokvaliteter mangler muligvis\n• Live streams kan ikke kun afspilles som lyd
+ Klienten er i øjeblikket spoofed til Android VR\n\nBivirkninger omfatter:\n• Ingen HDR-video\n• Kids videoer ikke afspilning\n• Pause videoer kan tilfældigt genoptage\n• Lav kvalitet Shorts søgelinje miniaturer\n• Download handling knap er skjult\n• End screen cards are hidden
Spoof klient miniaturer ikke tilgængelige (API timemed out)
Spoof klient miniaturer midlertidigt ikke tilgængelige: %s
diff --git a/src/main/resources/addresources/values-de-rDE/strings.xml b/src/main/resources/addresources/values-de-rDE/strings.xml
index 065278488..28fc51edb 100644
--- a/src/main/resources/addresources/values-de-rDE/strings.xml
+++ b/src/main/resources/addresources/values-de-rDE/strings.xml
@@ -865,9 +865,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Wählen sie die Segmentkategorie
Kategorie ist in den Einstellungen deaktiviert. Aktivieren Sie die Kategorie zum Abschicken.
Neues SponsorBlock Segment
-
- %1$02d:%2$02d:%3$03d als Start oder Ende eines neuen Segments festlegen?
+ %s als Start oder Ende eines neuen Segments festlegen?
Start
Ende
Jetzt
@@ -1119,8 +1117,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Client ist nicht gefälscht\n\nVideo-Wiedergabe funktioniert möglicherweise nicht
Das Deaktivieren dieser Einstellung kann zu Videowiedergabeproblemen führen.
Spoof-Client zu iOS
- Der Client ist derzeit auf iOS\n\nseitliche Effekte gefälscht:\n• Kein HDR-Video\n• Verlauf kann nicht funktionieren\n• Höhere Video-Qualitäten fehlen möglicherweise\n• Live-Streams können nicht nur als Audio abspielen\n• Live-Streams auf Android 8.0 nicht verfügbar
- Der Client ist derzeit auf Android VR\n\nSeiteneffekte gefälscht:\n• Kein HDR Video\n• Kindervideos spielen nicht\n• Pausierte Videos können zufällig wieder aufgenommen werden\n• Niedrige Shorts Suchleisten-Thumbnails\n• Download-Button ist immer versteckt\n• Endbildschirm-Karten werden immer versteckt
+ Der Client ist derzeit zu iOS\n\nSeiteneffekten gefälscht:\n• Kein HDR-Video\n• Höhere Video-Qualitäten fehlen möglicherweise\n• Live-Streams können nicht nur als Audio abspielen
+ Der Client ist derzeit auf Android VR\n\nSeiteneffekte gefälscht:\n• Kein HDR Video\n• Kindervideos spielen nicht\n• Pausierte Videos können zufällig wieder aufgenommen werden\n• Niedrige Shorts Suchleisten-Thumbnails\n• Download-Button ist ausgeblendet\n• Endbildschirm-Karten werden versteckt
Spoof-Thumbnails nicht verfügbar (API-Zeitüberschreitung)
Spoof-Client-Thumbnails vorübergehend nicht verfügbar: %s
diff --git a/src/main/resources/addresources/values-el-rGR/strings.xml b/src/main/resources/addresources/values-el-rGR/strings.xml
index b8af20d04..90613508c 100644
--- a/src/main/resources/addresources/values-el-rGR/strings.xml
+++ b/src/main/resources/addresources/values-el-rGR/strings.xml
@@ -865,9 +865,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Επιλέξτε την κατηγορία του τμήματος
Η κατηγορία είναι απενεργοποιημένη στις ρυθμίσεις. Ενεργοποιήστε την κατηγορία για υποβολή.
Νέο τμήμα SponsorBlock
-
- Ορισμός %1$02d:%2$02d:%3$03d ως αρχή ή τέλος ενός νέου τμήματος;
+ Ορισμός %s ως αρχή ή τέλος ενός νέου τμήματος;
αρχή
τέλος
τώρα
@@ -1119,7 +1117,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Το πρόγραμμα πελάτη δεν παραποιείται\n\nΗ αναπαραγωγή βίντεο ενδέχεται να μη λειτουργεί
Η απενεργοποίηση αυτής της ρύθμισης ενδέχεται να προκαλέσει προβλήματα αναπαραγωγής βίντεο.
Παραποίηση σε iOS
- Ο πελάτης αυτή τη στιγμή παραποιείται ως iOS\n\nΟι παρενέργειες περιλαμβάνουν:\n• Δεν υπάρχει η ποιότητα HDR στα βίντεο\n• Το ιστορικό παρακολούθησης μπορεί να μην λειτουργεί\n• Μπορεί να λείπουν επιλογές για υψηλές αναλύσεις βίντεο\n• Δε γίνεται στις ζωντανές ροές η αναπαραγωγή μόνο του ήχου\n• Οι ζωντανές ροές δεν είναι διαθέσιμες σε παλαιότερες συσκευές με Android 8.0
+ Ο πελάτης αυτή τη στιγμή παραποιείται ως iOS\n\nΟι παρενέργειες περιλαμβάνουν:\n• Δεν υπάρχει η ποιότητα HDR στα βίντεο\n• Μπορεί να λείπουν επιλογές για υψηλές αναλύσεις βίντεο\n• Δε γίνεται στις ζωντανές ροές η αναπαραγωγή μόνο του ήχου
Ο πελάτης αυτή τη στιγμή παραποιείται ως Android VR\n\nΟι παρενέργειες περιλαμβάνουν:\n• Δεν υπάρχει η ποιότητα HDR στα βίντεο\n• Δεν λειτουργεί η αναπαραγωγή στα βίντεο για παιδιά\n• Βίντεο που έχετε θέσει σε παύση μπορεί να συνεχίσουν να παίζουν τυχαία\n• Χαμηλή ποιότητα μικρογραφιών μπάρας αναζήτησης στα shorts\n• Το κουμπί λήψης είναι πάντα κρυμμένο\n• Οι κάρτες τελικής οθόνης είναι πάντα κρυμμένες
Μικρογραφίες προεπισκόπησης μη διαθέσιμες (καθυστέρηση API)
Μικρογραφίες προεπισκόπησης προσωρινά μη διαθέσιμες: %s
diff --git a/src/main/resources/addresources/values-es-rES/strings.xml b/src/main/resources/addresources/values-es-rES/strings.xml
index ee8e7ba5b..914d3b635 100644
--- a/src/main/resources/addresources/values-es-rES/strings.xml
+++ b/src/main/resources/addresources/values-es-rES/strings.xml
@@ -93,7 +93,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Desactivar los errores toasts oculta todas las notificaciones de error ReVanced\n\nNo se le notificará de ningún evento inesperado.
- Desactivar como / botón de suscripción brillo
+ Desactivar el brillo del botón de like / suscripción
El botón de \"Me gusta\" y \"suscribir\" no brillará cuando se mencione
El botón de \"Me gusta\" y \"Suscribir\" brillará cuando se mencione
Ocultar separador gris
@@ -865,9 +865,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Elige la categoría del segmento
Categoría está desactivada en la configuración. Habilitar la categoría para enviar.
Nuevo segmento de SponsorBlock
-
- ¿Establecer %1$02d:%2$02d:%3$03d como inicio o final de un nuevo segmento?
+ ¿Establecer %s como inicio o fin de un nuevo segmento?
comienzo
final
ahora
@@ -1119,8 +1117,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
El cliente no está falsificado\n\nEs posible que la reproducción de vídeo no funcione
Desactivar esta configuración puede causar problemas de reproducción de vídeo.
Spoof cliente a iOS
- El cliente está actualmente falseado a iOS\n\nLos efectos laterales incluyen:\n• No hay vídeo HDR\n• Es posible que el historial del reloj no funcione\n• Puede que falten más calidad de vídeo\n• Los streams en vivo no pueden reproducirse como audio solo\n• streams en vivo no disponibles en Android 8.0
- El cliente está actualmente falseado a Android VR\n\nLos efectos laterales incluyen:\n• No hay vídeo HDR\n• Los vídeos para niños no se reproducirán\n• Los vídeos en pausa pueden reanudarse aleatoriamente\n• Las miniaturas de barras cortas de baja calidad\n• El botón de descarga siempre está oculto\n• Las tarjetas de la pantalla final siempre están ocultas
+ El cliente está actualmente falseado a iOS\n\nLos efectos laterales incluyen:\n• No hay vídeo HDR\n• Pueden faltar más calidades de vídeo\n• Las transmisiones en vivo no pueden reproducirse como audio solo
+ El cliente está actualmente falseado a Android VR\n\nLos efectos laterales incluyen:\n• No hay vídeo HDR\n• Los niños vídeos no se reproducirán\n• Los vídeos en pausa pueden reanudarse aleatoriamente\n• Las miniaturas de barras cortas de baja calidad\n• El botón de acción está oculto\n• Las tarjetas de pantalla final están ocultas
Las miniaturas del cliente de Spoof no están disponibles (API)
Las miniaturas del cliente Spoof temporalmente no están disponibles: %s
diff --git a/src/main/resources/addresources/values-et-rEE/strings.xml b/src/main/resources/addresources/values-et-rEE/strings.xml
index 451fa26d3..d7e6ed299 100644
--- a/src/main/resources/addresources/values-et-rEE/strings.xml
+++ b/src/main/resources/addresources/values-et-rEE/strings.xml
@@ -33,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
- Lähtesta
@@ -43,8 +42,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
- Teave
- Muud
@@ -140,8 +137,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
- Infokaardid on peidetud
- Infokaardid on nähtaval
@@ -167,7 +162,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
- Teave
@@ -175,17 +169,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
- Vaikimisi
@@ -218,7 +205,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
- Loobu
@@ -259,7 +245,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
- Väljas
@@ -271,7 +256,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
- Muud
diff --git a/src/main/resources/addresources/values-eu-rES/strings.xml b/src/main/resources/addresources/values-eu-rES/strings.xml
index a4fa31ad5..d7e6ed299 100644
--- a/src/main/resources/addresources/values-eu-rES/strings.xml
+++ b/src/main/resources/addresources/values-eu-rES/strings.xml
@@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
@@ -173,17 +169,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
- پیشفرض
@@ -256,7 +245,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
- غیرفعال شده
diff --git a/src/main/resources/addresources/values-fi-rFI/strings.xml b/src/main/resources/addresources/values-fi-rFI/strings.xml
index a4ee981a1..80a0956d2 100644
--- a/src/main/resources/addresources/values-fi-rFI/strings.xml
+++ b/src/main/resources/addresources/values-fi-rFI/strings.xml
@@ -866,9 +866,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Valitse osion kategoria
Kategoria on poistettu käytöstä asetuksissa. Salli kategoria lähettääksesi.
Uusi SponsorBlock osio
-
- Aseta %1$02d:%2$02d:%3$03d uuden osion aluksi tai lopuksi?
+ Aseta %s uuden segmentin alkuun tai loppuun?
alku
loppu
nyt
@@ -1119,7 +1117,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Asiakas ei ole spoofed\n\nVideon toisto ei ehkä toimi
Tämän asetuksen poistaminen käytöstä voi aiheuttaa videon toiston ongelmia.
Spoof asiakas iOS
- Asiakas on tällä hetkellä hemmoteltu Android VR\n\nSivuefektejä ovat:\n• Ei HDR video\n• Lapset videot eivät toista\n• Keskeytetty videot voivat jatkaa satunnaisesti\n• Huonolaatuiset Shorts seekbar pikkukuvat\n• Lataa toimintapainike on aina piilotettu\n• Päätä näytöt ovat aina piilossa
+ Asiakas on tällä hetkellä pilaantunut iOS\n\nSivuvaikutukset ovat:\n• Ei HDR video\n• Korkeampi videon ominaisuuksia voi puuttua,\n• Live streams ei voi toistaa vain ääntä
+ Asiakas on tällä hetkellä hemmoteltu Android VR\n\nSivuefektejä ovat:\n• Ei HDR video\n• Lasten videot eivät toista\n• Keskeytetty videot voivat toistua satunnaisesti\n• Huonolaatuiset shortsit seekbar pikkukuvat\n• Lataa toimintapainike on piilotettu\n• Päätä näytöt ovat piilotettuja
Spoof asiakkaan pikkukuvat ei ole käytettävissä (API ajastettu)
Spoof asiakkaan pikkukuvat tilapäisesti ei käytettävissä: %s
diff --git a/src/main/resources/addresources/values-fil-rPH/strings.xml b/src/main/resources/addresources/values-fil-rPH/strings.xml
index 86d3e04e7..4bac83106 100644
--- a/src/main/resources/addresources/values-fil-rPH/strings.xml
+++ b/src/main/resources/addresources/values-fil-rPH/strings.xml
@@ -854,9 +854,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
Piliin ang kategorya ng segment
Naka-disable ang kategorya sa mga setting. Paganahin ang kategoryang isumite.
Bagong segment ng SponsorBlock
-
- Itakda ang %1$02d:%2$02d:%3$03d bilang simula o pagtatapos ng isang bagong segment?
simulan
wakas
ngayon
@@ -1093,8 +1090,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
Hindi na-spoof ang kliyente\n\nMaaaring hindi gumana ang pag-playback ng video
Ang pag-off sa setting na ito ay maaaring magdulot ng mga isyu sa pag-playback ng video.
Spoof client sa iOS
- Kasalukuyang na-spoof ang kliyente sa iOS\n\nKabilang sa mga side effect ang:\n• Walang HDR video\n• Maaaring hindi gumana ang history ng panonood\n• Maaaring nawawala ang mas matataas na katangian ng video\n• Hindi puwedeng mag-play bilang audio lang ang mga live stream\n• Live hindi available ang mga stream sa Android 8.0
- Kasalukuyang na-spoof ang kliyente sa Android VR\n\nKabilang sa mga side effect ang:\n• Walang HDR na video\n• Hindi nagpe-playback ang mga pambata na video\n• Ang mga naka-pause na video ay maaaring random na ipagpatuloy\n• Mga thumbnail ng shorts seekbar na may mababang kalidad\n• I-download ang action button ay laging nakatago\n• Palaging nakatago ang mga end screen card
Hindi available ang mga thumbnail ng spoof client (nag-time out ang API)
Pansamantalang hindi available ang mga thumbnail ng spoof client: %s
diff --git a/src/main/resources/addresources/values-fr-rFR/strings.xml b/src/main/resources/addresources/values-fr-rFR/strings.xml
index 866fbebfc..7fabccf2c 100644
--- a/src/main/resources/addresources/values-fr-rFR/strings.xml
+++ b/src/main/resources/addresources/values-fr-rFR/strings.xml
@@ -72,7 +72,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Lecteur
Disposition générale
Barre de progression
- Commandes de balayage
+ Contrôle par gestes
Divers
Vidéo
@@ -121,7 +121,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Le bouton est masqué
Le bouton est affiché
- Cacher les recommandations \"Personnes également suivies\"
+ Masquer les recommandations \'Les gens ont aussi regardé\'
Les recommandations sont masquées
Les recommandations sont affichées
- Masquer le bouton \'Visiter la boutique\' sur les pages des canaux
+ Masquer le bouton \'Visiter la boutique\' sur la page de la chaîne
Le bouton est masqué
Le bouton est affiché
Masquer les résultats de la recherche web
@@ -306,9 +306,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
Le bouton n\'est pas affiché
- Supprimer la boîte de dialogue de discrétion de la visionneuse
- La boîte de dialogue sera supprimée
- La boîte de dialogue sera affichée
+ Supprimer la confirmation pour les vidéos avec limite d\'âge
+ Le dialogue de confirmation sera supprimé
+ Le dialogue de confirmation sera affiché
Cela ne contourne pas la restriction d\'âge. Il l\'accepte tout simplement automatiquement.
@@ -321,8 +321,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Remplacer l\'action du bouton téléchargement
Le bouton de téléchargement ouvre votre téléchargeur externe
Le bouton de téléchargement ouvre le téléchargeur natif dans l\'application
- Nom du paquet du téléchargeur
- Nom du paquet de votre application de téléchargement externe installée, comme NewPipe ou Seal
+ Nom du package du téléchargeur
+ Nom du package de votre application de téléchargement externe installée, comme NewPipe ou Seal
%s n\'est pas installé. Veuillez l\'installer.
@@ -331,23 +331,23 @@ This is because Crowdin requires temporarily flattening this file and removing t
Le geste est activé
- Activer le tapping de la barre de recherche
- Le tapping de la barre de recherche est activé
- Le tapotage de la barre de recherche est désactivé
+ Activer l\'appui dans la barre de lecture
+ L\'appui dans la barre de lecture est activé
+ L\'appui dans la barre de lecture est désactivé
- Activer le geste de luminosité
- Le balayage de la luminosité est activé
- Le balayage de la luminosité est désactivé
- Activer le mouvement de volume
- Le balayage du volume est activé
- Le balayage du volume est désactivé
+ Activer les gestes pour la luminosité
+ Les gestes de contrôle de la luminosité sont activés
+ Les gestes de contrôle de la luminosité sont désactivés
+ Activer les gestes pour le volume
+ Les gestes de contrôle du volume sont activés
+ Les gestes de contrôle du volume sont désactivés
Activer le geste d\'appui pour glisser
Appui pour glisser est activé
Appui pour glisser est désactivé
Activer le retour haptique
- Le retour tactile est activé
- Le retour tactile est désactivé
+ Le retour haptique est activé
+ Le retour haptique est désactivé
Enregistrer et restaurer la luminosité
Enregistrer et restaurer la luminosité en quittant ou en entrant en plein écran
Ne pas enregistrer et restaurer la luminosité en quittant ou en entrant en plein écran
@@ -355,12 +355,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
Glisser vers le bas vers la valeur la plus basse du geste de luminosité active la luminosité automatique
Glisser vers le bas vers la valeur la plus basse n\'active pas la luminosité automatique
Automatique
- Délai d\'overlay du balayage
- La quantité de millisecondes que la superposition est visible
- Glisser la taille du texte de la superposition
- La taille du texte pour la superposition de balayage
+ Délai de l\'overlay des gestes
+ Le temps en millisecondes où l\'overlay est visible
+ Taille du texte de l\'overlay des gestes
+ La taille du texte pour l\'overlay des gestes
Visibilité de l\'arrière-plan en glissant
- La visibilité de l\'arrière-plan de la superposition de balayage
+ La visibilité de l\'arrière-plan de l\'overlay des gestes
Seuil de magnitude de balayage
La quantité de seuil pour que le balayage se produise
@@ -866,9 +866,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Choisissez la catégorie du segment
La catégorie est désactivée dans les paramètres. Activez la catégorie pour soumettre.
Nouveau segment SponsorBlock
-
- Utiliser %1$02d:%2$02d:%3$03d comme début ou fin d\'un nouveau segment ?
+ Définir %s comme début ou fin d\'un nouveau segment ?
démarrer
fin
maintenant
@@ -957,25 +955,25 @@ This is because Crowdin requires temporarily flattening this file and removing t
Les messages de la communauté n\'apparaissent pas sur la disposition de la tablette
- Minijoueur
+ Lecteur réduit
Changer le style du lecteur réduit dans l\'application
Type de Miniplayer
- Originale
+ Original
Téléphone
Tablette
Moderne 1
Moderne 2
Moderne 3
- Masquer les boutons d\'extension et de fermeture
- Les boutons sont cachés\n(glisser le minijoueur pour l\'expansion ou la fermeture)
- Développer et fermer les boutons sont affichés
+ Masquer les boutons d\'agrandissement et de fermeture
+ Les boutons sont cachés\n(glisser le lecteur réduit pour l\'agrandir ou le fermer)
+ Les boutons agrandir et fermer sont affichés
Masquer les sous-textes
Les sous-textes sont cachés
Les sous-textes sont affichés
- Masquer les boutons avant et retour
- Sauter en avant et en arrière sont masqués
- Sauter en avant et en arrière sont affichés
- Overlay opacity
+ Masquer les boutons avancer et reculer
+ Les boutons avancer et reculer sont masqués
+ Les boutons avancer et reculer sont affichés
+ Opacité de l\'overlay
Valeur d\'opacité entre 0 et 100, où 0 est transparent
L\'opacité de l\'overlay du Miniplayer doit être comprise entre 0 et 100
@@ -1119,8 +1117,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Le client n\'est pas trompé\n\nLa lecture de la vidéo peut ne pas fonctionner
Désactiver ce paramètre peut causer des problèmes de lecture vidéo.
Falsifier le client vers iOS
- Le client simule actuellement iOS\n\nLes effets secondaires incluent :\n• Aucune vidéo HDR\n• L\'historique de lecture peut ne pas fonctionner\n• Des qualités vidéo plus élevées peuvent manquer\n• Les vidéos en direct ne peuvent pas être lancées uniquement en tant que audio\n• Les vidéos en direct ne sont pas disponibles sur Android 8.0
- Le client est actuellement usurpé à Android VR\n\nEffets secondaires incluant:\n• Aucune vidéo HDR\n• Les vidéos des enfants ne lisent pas\n• Les vidéos en pause peuvent reprendre aléatoirement\n• Les Shorts de basse qualité sur les vignettes de la barre de recherche\n• Le bouton d\'action de téléchargement est toujours caché\n• Les cartes d\'écran de fin sont toujours cachées
+ Le client est actuellement usurpé à iOS\n\nLes effets secondaires comprennent :\n• Aucune vidéo HDR\n• Des qualités vidéo plus élevées peuvent manquer\n• Les flux en direct ne peuvent pas jouer uniquement en tant qu\'audio
+ Le client est actuellement falsifié vers Android VR\n\nEffets secondaires incluant:\n• Aucune vidéo HDR\n• Les vidéos des enfants ne lisent pas\n• Les vidéos en pause peuvent reprendre aléatoirement\n• Les Shorts de basse qualité sur les vignettes de la barre de recherche\n• Le bouton d\'action de téléchargement est caché\n• Les cartes d\'écran de fin sont cachées
Tromper les vignettes du client non disponibles (API expirée)
Tromper les vignettes du client temporairement indisponibles : %s
diff --git a/src/main/resources/addresources/values-gl-rES/strings.xml b/src/main/resources/addresources/values-gl-rES/strings.xml
index a4fa31ad5..d7e6ed299 100644
--- a/src/main/resources/addresources/values-gl-rES/strings.xml
+++ b/src/main/resources/addresources/values-gl-rES/strings.xml
@@ -171,8 +171,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
diff --git a/src/main/resources/addresources/values-it-rIT/strings.xml b/src/main/resources/addresources/values-it-rIT/strings.xml
index 50af732aa..b6e69bf9f 100644
--- a/src/main/resources/addresources/values-it-rIT/strings.xml
+++ b/src/main/resources/addresources/values-it-rIT/strings.xml
@@ -1118,8 +1118,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Il client non è spoofed\n\nLa riproduzione video potrebbe non funzionare
Disattivare questa impostazione potrebbe causare problemi di riproduzione video.
Spoof client per iOS
- Il client è attualmente spoofed per iOS\n\nGli effetti collaterali includono:\n• Nessun video HDR\n• Potrebbero mancare qualità video più elevate\n• I flussi live non possono essere riprodotti solo come audio
- Il client è attualmente spoofed per Android VR\n\nGli effetti collaterali includono:\n• Nessun video HDR\n• I video per bambini non riproducono\n• I video in pausa possono riprendere casualmente\n• Bassa qualità Pantaloncini seekbar miniature\n• Il pulsante di azione per scaricare è nascosto\n• Le schede dello schermo finale sono nascoste
+ Il client è attualmente spoofed per iOS\n\nGli effetti collaterali includono:\n• video HDR potrebbe non essere disponibile\n• La cronologia degli orologi potrebbe non funzionare
+ Il client è attualmente spoofed per Android VR. Gli effetti collaterali includono:\n• Nessun video HDR\n• I video per bambini non riproducono\n• I video in pausa possono riprendere casualmente\n• Bassa qualità Pantaloncini seekbar miniature\n• Il pulsante di azione per scaricare è nascosto\n• Le schede dello schermo finale sono nascoste
Le miniature del client non sono disponibili (timeout API)
Miniature del client Spoof temporaneamente non disponibili: %s
diff --git a/src/main/resources/addresources/values-ja-rJP/strings.xml b/src/main/resources/addresources/values-ja-rJP/strings.xml
index 5785e287b..eceb8a66c 100644
--- a/src/main/resources/addresources/values-ja-rJP/strings.xml
+++ b/src/main/resources/addresources/values-ja-rJP/strings.xml
@@ -83,8 +83,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
デバッグログは有効です
デバッグログは無効です
ログプロトコルバッファ
- デバッグログにprotoバッファが含まれています
- デバッグログにはプロットバッファが含まれていません
+ デバッグログにはプロトバッファが含まれる
+ デバッグログにはプロトバッファは含まれません
スタックトレースのログ
デバッグログにスタックトレースを含む
デバッグログにスタックトレースが含まれていません
@@ -94,7 +94,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
エラートーストをオフにすると、すべてのReVancedエラー通知が非表示になります。\n\n予期せぬイベントは通知されません。
- 「いいね!」/「購読」ボタンのグローを無効にする
+ いいね / 登録ボタンの発光を無効にする
いいねと購読ボタンは、言及されても輝きません
いいねと購読ボタンが表示されると点灯します
グレーのセパレーターを非表示
@@ -444,7 +444,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
通知で作成を切り替える
Create button is switched with Notifications button\n\nNote: Enabling this also forcly hides video ads
- format@@0 ボタンは通知ボタンで切り替えられません
+ 作成ボタンを通知ボタンは入れ替わりません
+既知の問題: この設定がオンの場合、広告のホワイトリストは動作しません
ナビゲーションボタンのラベルを隠す
ラベルは非表示です
ラベルを表示する
@@ -674,14 +675,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
プレイヤーオーバーレイの透明度
- 0-100の間の不透明度の値 (0が透明)
+ 透明度の値は 0〜100 の範囲で、0 が透明です
プレイヤーオーバーレイの不透明度は0-100の間でなければなりません
非表示
Dislikes temporarily not available(API タイムアウト)
- 嫌がらせは利用できません( %dの状態)
+ 低評価数は一時的に利用できません (ステータス %d)
Disfavs not available(client API limit reached)
嫌いは利用できません(%s)
@@ -757,7 +758,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
新しいセグメントを作成ボタンが表示されます
新規セグメント作成ボタンは表示されません
新しいセグメントステップを調整する
- 新しいセグメントを作成する際の時間調整ボタンの移動時間 (ミリ秒)
+ 新しいセグメントを作成する際の時間調節ボタンの移動時間 (単位: ミリ秒)
値は正の数でなければなりません
ガイドラインを見る
ガイドラインには、新しいセグメントを作成するためのルールとヒントが含まれています
@@ -773,7 +774,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
SponsorBlockリーダーボードは、どれだけの時間が節約されたかを知ることができます。セグメントがスキップされるたびにメッセージがリーダーボードに送信されます。
スキップカウント追跡が有効になっていません
最小のセグメントの長さ
- この値より短いセグメントは(秒単位で)表示またはスキップされません
+ 設定値 (単位: 秒) より短いセグメントはスキップされず、プレーヤーにも表示されません
あなたのプライベート ユーザー ID
これは非公開にする必要があります。パスワードのようなもので誰とも共有するべきではありません。誰かがこれを持っている場合、あなたになりすますことができます
プライベートユーザーIDは30文字以上でなければなりません
@@ -854,10 +855,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
セグメントを送信できません。\n既に存在します
セグメントが正常に送信されました
- SponsorBlockは一時的に利用できません(APIがタイムアウトしました)
+ SponsorBlock は一時的に利用できません (API タイムアウト)
SponsorBlockは一時的に利用できません( %dの状態)
SponsorBlockは一時的に利用できません
- セグメントに投票できません(APIがタイムアウトしました)
+ セグメントを評価できません (API タイムアウト)
セグメントに投票できませんでした(状態: %1$d %2$s)
セグメントに投票できません: %s
高評価
@@ -885,7 +886,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
無効な時間の値です
統計
- 統計は一時的に利用できません(APIがダウンしています)
+ 統計は一時的に利用できません (API ダウン)
読み込み中...
SponsorBlock は無効です
あなたのユーザー名: <b>%s</b>
@@ -975,7 +976,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
スキップとバックが非表示になります
スキップとバックが表示されます
Overlay opacity
- 0-100の間の不透明度の値 (0が透明)
+ 透明度の値は 0〜100 の範囲で、0 が透明です
ミニプレーヤーオーバーレイの不透明度は0-100の間でなければなりません
@@ -1117,8 +1118,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
クライアントは偽装されていません\n\nビデオ再生が動作しない可能性があります
この設定をオフにすると、ビデオ再生の問題が発生する可能性があります。
クライアントを iOS に偽装する
- クライアントは現在 iOS\n\nの副作用になりすましています:\n• HDRビデオがありません\n•\n• ライブストリームはオーディオのみとして再生できません
- クライアントのサムネイルを偽装できません(APIがタイムアウトしました)
クライアントのサムネイルを一時的に偽装できません: %s
@@ -1132,7 +1131,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
アプリの署名がフィード動画になりすましではありません\n\nフィードの動画は再生に問題が発生する前に1分未満再生されます
ストーリーボードを偽装する
ストーリーボードのなりすまし
- ストーリーボードを一時的に偽装できません(APIがタイムアウトしました)
一時的にストーリーボードを偽装できません: %s
diff --git a/src/main/resources/addresources/values-ko-rKR/strings.xml b/src/main/resources/addresources/values-ko-rKR/strings.xml
index e548a0359..0362f2349 100644
--- a/src/main/resources/addresources/values-ko-rKR/strings.xml
+++ b/src/main/resources/addresources/values-ko-rKR/strings.xml
@@ -105,8 +105,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
워터마크가 숨겨집니다
워터마크가 노출됩니다
좌우 슬라이드 선반 숨기기
- 다음 선반이 숨겨집니다:\n• 다시 듣기\n• 다시 시청하기\n• 이어서 시청하기\n• 채널 더보기\n• 이 게임 더보기\n• 주요 뉴스\n• 맞춤 실시간 스트림\n• 라이브 쇼핑\n• 보건 정보 출처, etc.
- 다음 선반이 노출됩니다:\n• 다시 듣기\n• 다시 시청하기\n• 이어서 시청하기\n• 채널 더보기\n• 이 게임 더보기\n• 주요 뉴스\n• 맞춤 실시간 스트림\n• 라이브 쇼핑\n• 보건 정보 출처, etc
+ 다음 선반이 숨겨집니다:\n• 다시 듣기\n• 다시 시청하기\n• 이어서 시청하기\n• 채널 더보기\n• 이 게임 더보기\n• 주요 뉴스, 뉴스 속보\n• 맞춤 실시간 스트림\n• 라이브 쇼핑\n• 보건 정보 출처, etc.
+ 다음 선반이 노출됩니다:\n• 다시 듣기\n• 다시 시청하기\n• 이어서 시청하기\n• 채널 더보기\n• 이 게임 더보기\n• 주요 뉴스, 뉴스 속보\n• 맞춤 실시간 스트림\n• 라이브 쇼핑\n• 보건 정보 출처, etc
가입 버튼 숨기기
@@ -1122,7 +1122,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
클라이언트를 변경하지 않습니다\n동영상 재생 문제가 발생할 수 있습니다
이 설정을 비활성화하면 동영상 재생 문제가 발생할 수 있습니다
iOS 클라이언트로 변경하기
- 클라이언트를 iOS 클라이언트로 변경합니다\n\n알려진 문제점:\n• HDR 동영상이 재생되지 않을 수 있습니다\n• 동영상이 초고화질 동영상 값으로 재생되지 않을 수 있습니다 (1440p, 2160p)\n• 실시간 스트림에서 \'백그라운드 재생\'을 사용할 수 없습니다
+ 클라이언트를 iOS 클라이언트로 변경합니다\n\n알려진 문제점: \n• HDR 동영상이 재생되지 않을 수 있습니다\n• 시청 기록이 작동되지 않을 수 있습니다
클라이언트를 Android VR 클라이언트로 변경합니다\n\n알려진 문제점: \n• HDR 동영상이 재생되지 않을 수 있습니다\n• Kids 동영상을 재생할 수 없습니다\n• 일시 정지된 동영상이 갑자기 다시 시작될 수 있습니다\n• 저화질 Shorts 재생바 썸네일이 표시됩니다\n• 플레이어 하단에서 오프라인 저장 버튼이 표시되지 않습니다\n• 최종 화면 카드가 표시되지 않습니다
클라이언트 썸네일을 사용할 수 없습니다 (응답 시간 초과)
클라이언트 썸네일을 일시적으로 사용할 수 없습니다: %s
diff --git a/src/main/resources/addresources/values-nb-rNO/strings.xml b/src/main/resources/addresources/values-nb-rNO/strings.xml
index a5a0ff50c..3a99c5ebd 100644
--- a/src/main/resources/addresources/values-nb-rNO/strings.xml
+++ b/src/main/resources/addresources/values-nb-rNO/strings.xml
@@ -1105,8 +1105,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Klienten er ikke spoofed\n\nVideo playback fungerer kanskje ikke
Ved å slå av denne innstillingen kan problemer med videoavspilling.
Forside klienten til iOS
- Klienten er for øyeblikket oppslukt til iOS\n\nSide include:\n• Ingen HDR-video\n• Høyere videokvaliteter kan mangle\n• Live-strømmer kan ikke spille som lyd
- Klienten er for øyeblikket skummet til Android VR\n\nsideeffekter inkluderer:\n• Ingen HDR video\n• Barn videoer ikke spiller tilbake\n• Paused videoer kan tilfeldig gjenoppta\n• Lavkvalitet shorts søkbar miniatyrbilder\n• Last ned handlingsknappen er skjult\n• Sluttskjermkort er skjult
+ Klienten er for øyeblikket oppslitt til iOS\n\nSide include:\n• HDR video er kanskje ikke tilgjengelig\n• Se loggen fungerer kanskje ikke
+ Klienten er for øyeblikket skummet til Android VR. sideeffekter inkluderer:\n• Ingen HDR video\n• Barn videoer ikke spiller tilbake\n• Paused videoer kan tilfeldig gjenoppta\n• Lavkvalitet shorts søkbar miniatyrbilder\n• Last ned handlingsknappen er skjult\n• Sluttskjermkort er skjult
Etterligning av klient miniatyrbilder er ikke tilgjengelige (API tidsavbrutt)
Spoav klientens miniatyrbilder er midlertidig ikke tilgjengelig: %s
diff --git a/src/main/resources/addresources/values-nl-rNL/strings.xml b/src/main/resources/addresources/values-nl-rNL/strings.xml
index 331f9ed95..bb49857fc 100644
--- a/src/main/resources/addresources/values-nl-rNL/strings.xml
+++ b/src/main/resources/addresources/values-nl-rNL/strings.xml
@@ -1120,8 +1120,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Client is niet vervalst\n\nVideo afspelen werkt mogelijk niet
Het uitschakelen van deze instelling kan problemen met het afspelen van video veroorzaken.
Klant naar iOS vervalsen
- De klant is momenteel gespoofd naar iOS\n\nSide effecten zoals:\n• Geen HDR video\n• Hogere videokwaliteiten kunnen ontbreken\n• Live streams kunnen niet alleen worden afgespeeld als audio
- Cliënt is momenteel ondergesneeuwd naar Android VR\n\nSide effecten inclusief:\n• Geen HDR video\n• Kinderen video\'s spelen niet af\n• Gepauzeerde video\'s kunnen willekeurig hervatten\n• Slechte kwaliteit zoekbalkminiaturen\n• Download actieknop is verborgen\n• Eindscherm kaarten zijn verborgen
+ Klant is momenteel gespoofd naar iOS\n\nSide effecten zoals:\n• HDR video is mogelijk niet beschikbaar\n• Bekijk geschiedenis werkt mogelijk niet
+ Cliënt is momenteel ondergesneeuwd naar Android VR. Side effecten inclusief:\n• Geen HDR video\n• Kinderen video\'s spelen niet af\n• Gepauzeerde video\'s kunnen willekeurig hervatten\n• Slechte kwaliteit zoekbalkminiaturen\n• Download actieknop is verborgen\n• Eindscherm kaarten zijn verborgen
Klant miniaturen niet beschikbaar (API timed out)
Klant miniaturen tijdelijk niet beschikbaar: %s
diff --git a/src/main/resources/addresources/values-pl-rPL/strings.xml b/src/main/resources/addresources/values-pl-rPL/strings.xml
index 2889d8060..b0e8dfe18 100644
--- a/src/main/resources/addresources/values-pl-rPL/strings.xml
+++ b/src/main/resources/addresources/values-pl-rPL/strings.xml
@@ -1120,8 +1120,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Klient nie jest zespoofowany\n\nOdtwarzanie wideo może nie działać
Wyłączenie tego ustawienia może spowodować problemy z odtwarzaniem wideo.
Zespoofuj klient do wersji iOS
- Klient jest obecnie spoofed na iOS\n\nEfekty niepożądane obejmują:\n• Bez wideo HDR\n• Może brakować wyższej jakości wideo\n• Strumienie na żywo nie może odtwarzać tylko jako dźwięk
- Klient jest obecnie spoofed na Androida VR\n\nEfekty niepożądane obejmują:\n• Brak filmu HDR\n• Filmy dziecięce nie odtwarza\n• Wstrzymane filmy mogą losowo wznawiać\n• Niska jakość miniatur paska wyszukiwania skrótów\n• Przycisk pobierania jest ukryty\n• Karty ekranu końcowego są ukryte
+ Klient jest obecnie spoofed to iOS\n\nDziałania niepożądane obejmują:\n• Wideo HDR może nie być dostępne\n• Historia zegarków może nie działać
+ Klient jest obecnie spoofed na Androida VR. Efekty niepożądane obejmują:\n• Brak filmu HDR\n• Filmy dziecięce nie odtwarza\n• Wstrzymane filmy mogą losowo wznawiać\n• Niska jakość miniatur paska wyszukiwania skrótów\n• Przycisk pobierania jest ukryty\n• Karty ekranu końcowego są ukryte
Miniatury klienta nie są dostępne (limit czasu API)
Miniaturki klienta tymczasowo nie są dostępne: %s
diff --git a/src/main/resources/addresources/values-pt-rBR/strings.xml b/src/main/resources/addresources/values-pt-rBR/strings.xml
index 1604a0971..3700cc148 100644
--- a/src/main/resources/addresources/values-pt-rBR/strings.xml
+++ b/src/main/resources/addresources/values-pt-rBR/strings.xml
@@ -213,6 +213,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
Ocultar seção de cartões de informações
Seção de cartões de informações está oculto
Seção de cartões de informações não está oculto
+ Ocultar a seção \'Conceitos-chave\'
+ A seção \'Conceitos-chave\' está oculta
+ A seção \'Conceitos-chave\' é mostrada
Ocultar seção de transcrição
Seção de transcrição está oculta
Seção de transcrição não está oculta
@@ -925,6 +928,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
18.20.39 - Restaurar a velocidade de vídeo ampla & menu de qualidade
18.09.39 - Restaurar aba biblioteca
17.41.37 - Restaurar prateleira de lista de reprodução antiga
+ 17.33.42 - Restaurar layout antigo da interface
Definir página inicial
@@ -1117,6 +1121,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Cliente não é falsificado\n\nA reprodução de vídeo pode não funcionar
Desativar essa configuração pode causar problemas de reprodução de vídeo.
Cliente Spoof para iOS
+ O cliente está falsificado para o Android VR\n\nOs efeitos colaterais incluem:\n• Sem vídeo HDR\n• Vídeos infantis não são reproduzidos\n• Vídeos pausados podem ser retomados aleatoriamente\n• Miniaturas da barra de busca de Shorts de baixa qualidade\n• O botão de ação de download está oculto\n• Os cards da tela final estão ocultos
Miniaturas Spoof client não disponíveis (API timeout)
Miniaturas Spoof client temporariamente não disponíveis: %s
diff --git a/src/main/resources/addresources/values-pt-rPT/strings.xml b/src/main/resources/addresources/values-pt-rPT/strings.xml
index cb7f0eee6..4a1430bc7 100644
--- a/src/main/resources/addresources/values-pt-rPT/strings.xml
+++ b/src/main/resources/addresources/values-pt-rPT/strings.xml
@@ -1117,8 +1117,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Cliente não é falsificado\n\nA reprodução de vídeo pode não funcionar
Desativar essa configuração pode causar problemas de reprodução de vídeo.
Cliente Spoof para iOS
- O cliente está spoofed para o iOS\n\nOs efeitos colaterais incluem:\n• Nenhum vídeo HDR\n• Qualidades maiores de vídeo podem estar faltando\n• Transmissões ao vivo não podem reproduzir apenas áudio
- O cliente está oculta para o Android VR\n\nOs efeitos colaterais incluem:\n• Nenhum vídeo HDR\n• As crianças não reproduzem\n• Os vídeos pausados podem retomar aleatoriamente\n• Miniaturas da barra de busca curta de baixa qualidade\n• Botão de ação para baixar está oculto\n• Cartões de tela final estão ocultos
+ Cliente está spoofed no momento para iOS\n\nOs efeitos colaterais incluem:\n• HDR vídeos podem não estar disponíveis\n• Watch histórico pode não funcionar
+ O cliente está oculta para o Android VR. Os efeitos colaterais incluem:\n• Nenhum vídeo HDR\n• As crianças não reproduzem\n• Os vídeos pausados podem retomar aleatoriamente\n• Miniaturas da barra de busca curta de baixa qualidade\n• Botão de ação para baixar está oculto\n• Cartões de tela final estão ocultos
Miniaturas Spoof client não disponíveis (API timeout)
Miniaturas Spoof client temporariamente não disponíveis: %s
diff --git a/src/main/resources/addresources/values-ro-rRO/strings.xml b/src/main/resources/addresources/values-ro-rRO/strings.xml
index 563e0385a..4038ac986 100644
--- a/src/main/resources/addresources/values-ro-rRO/strings.xml
+++ b/src/main/resources/addresources/values-ro-rRO/strings.xml
@@ -1121,8 +1121,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Clientul nu este lovit\n\nEste posibil ca redarea video să nu funcționeze
Dezactivarea acestei setări poate cauza probleme de redare video.
Spoof client pe iOS
- Clientul este în prezent falsificat de iOS\n\nEfectele secundare includ:\n• Niciun video HDR\n• Calități video mai mari pot lipsi\n• Fluxuri live nu pot fi redate deoarece numai audio
- Clientul este în prezent falsificat pe Android VR\n\nEfectele secundare includ:\n• Niciun video HDR\n• Videoclipuri cu copii nu redă\n• Videoclipurile întrerupte pot relua aleatoriu\n• Pictograme scurte de calitate slabă\n• Butonul acțiunii de descărcare este ascuns\n• Cardurile de pe ecran sunt ascunse
+ Clientul este în prezent falsificat de iOS\n\nReacţiile adverse includ:\n• este posibil ca videoclipul HDR să nu fie disponibil\n• istoricul ceasului poate să nu funcționeze
+ Clientul este în prezent falsificat pe Android VR. Efectele secundare includ:\n• Niciun video HDR\n• Videoclipuri cu copii nu redă\n• Videoclipurile întrerupte pot relua aleatoriu\n• Pictograme scurte de calitate slabă\n• Butonul acțiunii de descărcare este ascuns\n• Cardurile de pe ecran sunt ascunse
Spoof a miniaturilor clientului nu este disponibil (API a expirat)
Fixarea miniaturilor clientului nu este disponibilă temporar: %s
diff --git a/src/main/resources/addresources/values-ru-rRU/strings.xml b/src/main/resources/addresources/values-ru-rRU/strings.xml
index 652dcbec4..b94c00850 100644
--- a/src/main/resources/addresources/values-ru-rRU/strings.xml
+++ b/src/main/resources/addresources/values-ru-rRU/strings.xml
@@ -1120,7 +1120,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Клиент не подменен\n\nВоспроизведение видео может не работать
Отключение этой настройки может вызвать проблемы с воспроизведением видео.
Подмена клиента на iOS
- В настоящее время клиент подменен на iOS\n\nПобочные эффекты включают:\n• Отсутствует HDR видео\n• Более высокие качества видео могут отсутствовать\n• Прямые трансляции не могут воспроизводиться только как аудио
+ В настоящее время клиент подменен на iOS\n\nПобочные эффекты включают:\n• HDR видео может отсутствовать\n• История просмотров может не работать
В настоящее время клиент подменен на Android VR\n\nПобочные эффекты включают:\n• Отсутствует HDR видео\n• Детские видео не воспроизводятся\n• Приостановленные видео могут случайно возобновляться\n• Миниатюры прогресса воспроизведения Shorts низкого качества\n• Кнопка \"Скачать\" скрыта\n• Заставки следующих видео в конце просмотра скрыты
Миниатюры в режиме подмены клиента недоступны (время API истекло)
Миниатюры в режиме подмены клиента временно недоступны: %s
diff --git a/src/main/resources/addresources/values-sr-rCS/strings.xml b/src/main/resources/addresources/values-sr-rCS/strings.xml
new file mode 100644
index 000000000..fded9e903
--- /dev/null
+++ b/src/main/resources/addresources/values-sr-rCS/strings.xml
@@ -0,0 +1,1185 @@
+
+
+
+
+
+ ReVanced
+ Želite li da nastavite?
+ Resetuj
+ Osveži i restartuj
+ Restartuj
+ Uvoz
+ Kopiraj
+ Podešavanja ReVanceda su vraćena na podrazumevane vrednosti
+ Uvezeno %d podešavanja
+ Neuspešan uvoz: %s
+
+
+
+ MicroG GmsCore nije instaliran. Instalirajte ga.
+ Neophodna radnja
+ MicroG GmsCore nema dozvolu za rad u pozadini.\n\nPratite uputstvo „Don\'t kill my app” za svoj telefon i primenite uputstva na svoju MicroG instalaciju.\n\nOvo je neophodno da bi aplikacija radila.
+ Otvori veb-sajt
+ Optimizacija baterije za MicroG GmsCore mora biti onemogućena da bi se sprečili problemi.\n\nDodirnite dugme „Nastavi” i onemogućite optimizaciju baterije.
+ Nastavi
+
+
+
+
+ ReVanced
+ Koristite verziju <i>%s</i> ReVanced pečeva
+ Napomena
+ Ova verzija je predizdanje i možda ćete imati neočekivane probleme
+ Zvanični linkovi
+ Uvoz / Izvoz
+ Uvoz / Izvoz podešavanja ReVanceda
+
+
+ O programu
+ Oglasi
+ Alternativne sličice
+ Fid
+ Plejer
+ Opšti izgled
+ Shorts
+ Traka za premotavanje
+ Kontrole prevlačenja
+ Razno
+ Video
+
+
+ Otklanjanje grešaka
+ Omogućite ili onemogućite opcije za otklanjanje grešaka
+ Evidentiranje otklanjanja grešaka
+ Evidencije otklanjanja grešaka su omogućene
+ Evidencije otklanjanja grešaka su onemogućene
+ Evidentiranje bafera protokola
+ Evidencije otklanjanja grešaka sadrže bafer protokola
+ Evidencije otklanjanja grešaka ne sadrže bafer protokola
+ Evidentiranje praćenja steka
+ Evidencije otklanjanja grešaka sadrže praćenje steka
+ Evidencije otklanjanja grešaka ne sadrže praćenje steka
+ Prikaži iskačuće obaveštenje pri grešci s ReVancedom
+ Iskačuće obaveštenje se prikazuje ako dođe do greške
+ Iskačuće obavešenje se ne prikazuje ako dođe do greške
+ Isključivanje iskačućih obaveštenja o grešci sakriva sva obaveštenja o greškama u ReVancedu.\n\nNećete biti obavešteni ni o kakvim neočekivanim događajima.
+
+
+ Onemogući sjaj dugmadi „Sviđa mi se” / „Zaprati”
+ Dugmad „Sviđa mi se” i „Zaprati” neće svetleti kada se pritisnu
+ Dugmad „Sviđa mi se” i „Zaprati” će svetleti kada se pritisnu
+ Sakrij sivi separator
+ Sivi separatori su skriveni
+ Sivi separatori su prikazani
+ Sakrij vodeni žig kanala
+ Vodeni žig je skriven
+ Vodeni žig je prikazan
+ Sakrij horizontalne police
+ Police su skrivene, kao što su:\n• Važne vesti\n• Nastavite da gledate\n• Istražite još kanala\n• Kupovina\n• Gledajte ponovo
+ Police su prikazane
+
+ Sakrij dugme „Učlani me”
+ Dugme je skriveno
+ Dugme je prikazano
+
+ Sakrij policu „Za vas” na stranici kanala
+ Polica je skrivena
+ Polica je prikazana
+
+ Sakrij dugme „Obavesti me”
+ Dugme je skriveno
+ Dugme je prikazano
+
+ Sakrij preporuke „Drugi su takođe gledali”
+ Preporuke su skrivene
+ Preporuke su prikazane
+
+ Sakrij dugme „Prikaži još”
+ Dugme je skriveno
+ Dugme je prikazano
+ Sakrij vremenske reakcije
+ Vremenske reakcije su skrivene
+ Vremenske reakcije su prikazane
+ Sakrij zaglavlje police pri rezultatima pretrage
+ Zaglavlje police je skriveno
+ Zaglavlje police je prikazano
+ Sakrij smernice kanala
+ Smernice kanala su skrivene
+ Smernice kanala su prikazane
+ Sakrij proširivi deo ispod videa
+ Proširivi delovi su skriveni
+ Proširivi delovi su prikazani
+ Sakrij podnožje menija kvaliteta videa
+ Podnožje menija kvaliteta videa je skriveno
+ Podnožje menija kvaliteta videa je prikazano
+ Sakrij objave zajednice
+ Objave zajednice su skrivene
+ Objave zajednice su prikazane
+ Sakrij kompaktne banere
+ Kompaktni baneri su skriveni
+ Kompaktni baneri su prikazani
+ Sakrij odeljak za filmove
+ Odeljak za filmove je skriven
+ Odeljak za filmove je prikazan
+ Sakrij ankete u fidu
+ Ankete u fidu su skrivene
+ Ankete u fidu su prikazane
+ Sakrij smernice zajednice
+ Smernice zajednice su skrivene
+ Smernice zajednice su prikazane
+ Sakrij smernice zajednice pratilaca
+ Smernice zajednice pratilaca su skrivene
+ Smernice zajednice pratilaca su prikazane
+ Sakrij policu članova kanala
+ Polica članova kanala je skrivena
+ Polica članova kanala je prikazana
+ Sakrij kutije za hitne slučajeve
+ Kutije za hitne slučajeve su skrivene
+ Kutije za hitne slučajeve su prikazane
+ Sakrij info panele
+ Info paneli su skriveni
+ Info paneli su prikazani
+ Sakrij medicinske panele
+ Medicinski paneli su skriveni
+ Medicinski paneli su prikazani
+ Sakrij traku kanala
+ Traka kanala je skrivena
+ Traka kanala je prikazana
+ Sakrij salu za igru
+ Sala za igru je skrivena
+ Sala za igru je prikazana
+ Sakrij brze radnje u režimu celog ekrana
+ Brze radnje su skrivene
+ Brze radnje su prikazane
+ Sakrij srodne videe u brzim radnjama
+ Srodni videi su skriveni
+ Srodni videi su prikazani
+ Sakrij policu sa slikama u rezultatima pretrage
+ Polica sa slikama je skrivena
+ Polica sa slikama je prikazana
+ Sakrij najnovije objave
+ Najnovije objave su skrivene
+ Najnovije objave su prikazane
+ Sakrij miks plejliste
+ Miks plejliste su skrivene
+ Miks plejliste su prikazane
+ Sakrij kartice izvođača
+ Kartice izvođača su skrivene
+ Kartice izvođača su prikazane
+ Sakrij policu oznaka sličnih videa
+ Polica oznaka sličnih videa je skrivena
+ Polica oznaka sličnih videa je prikazana
+ Sakrij odeljak s info karticama
+ Odeljak s info karticama je skriven
+ Odeljak s info karticama je prikazan
+ Odeljak za transkripciju je skriven
+ Odeljak za transkripciju je prikazan
+ Opis videa
+ Sakrijte ili prikažite komponente opisa videa
+ Prilagođeni filter
+ Sakrijte komponente koristeći prilagođene filtere
+ Omogući prilagođeni filter
+ Prilagođeni filter je omogućen
+ Prilagođeni filter je onemogućen
+ Prilagođeni filter
+
+ Lista stringova za pravljenje putanje komponenti za filtriranje, odvojena novim redom
+ Nevažeći prilagođeni filter: %s
+ Sakrij sadržaj ključne reči
+ Sakrijte videe iz rezultata pretrage i fida koristeći filter ključnih reči
+ Sakrij videe na početnoj prema ključnim rečima
+ Videi na početnoj kartici su filtrirani prema ključnim rečima
+ Videi na početnoj kartici nisu filtrirani prema ključnim rečima
+ Sakrij videe iz praćenja prema ključnim rečima
+ Videi na kartici praćenja su filtrirani prema ključnim rečima
+ Videi na kartici praćenja nisu filtrirani prema ključnim rečima
+ Sakrij rezultate pretrage prema ključnim rečima
+ Rezultati pretrage su filtrirani prema ključnim rečima
+ Rezultati pretrage nisu filtrirani prema ključnim rečima
+ Ključne reči sa sakrivanje
+
+ Ključne reči i fraze koje treba sakriti, odvojene novom redovima\n\nReči sa velikim slovima u sredini moraju se uneti sa velikim slovima (npr.: iPhone, TikTok, LeBlanc)
+ O filtriranju prema ključnim rečima
+ Početna//Praćenja/Rezultati pretrage se filtriraju da bi se sakrio sadržaj koji se podudara sa ključnim frazama\n\nOgraničenja\n• Neki Shorts videi možda neće biti sakriveni\n• Neke komponente korisničkog interfejsa možda neće biti sakrivene\n• Pretraživanje ključne reči možda neće pokazati rezultate
+
+ Nevažeća ključna reč. Nije moguće koristiti „%s”
+
+ Nevažeća ključna reč. „%1$s” je kraće od %2$d znakova
+
+
+ Sakrij opšte oglase
+ Opšti oglasi su skriveni
+ Opšti oglasi su prikazani
+ Sakrij oglase preko celog ekrana
+ Oglasi preko celog ekrana su skriveni\n\nOva funkcija je dostupna samo za starije uređaje
+ Oglasi preko celog ekrana su prikazani
+ Sakrij oglase u obliku dugmadi
+ Oglasi u obliku dugmadi su skriveni
+ Oglasi u obliku dugmadi su prikazani
+ Sakrij oznaku plaćene promocije
+ Oznaka plaćene promocije je skrivena
+ Oznaka plaćene promocije je prikazana
+ Sakrij samosponzorisane kartice
+ Samosponzorisane kartice su skrivene
+ Samosponzorisane kartice su prikazane
+ Sakrij baner za gledanje proizvoda
+ Baner je skriven
+ Baner je prikazan
+ Sakrij linkove za kupovinu u opisu videa
+ Linkovi za kupovinu su skriveni
+ Linkovi za kupovinu su prikazani
+
+ Sakrij dugme „Poseti prodavnicu” na stranicama kanala
+ Dugme je skriveno
+ Dugme je prikazano
+ Sakrij rezultate veb-pretrage
+ Rezultati veb-pretrage su skriveni
+ Rezultati veb-pretrage su prikazani
+ Sakrij banere s robom
+ Baneri s robom su skriveni
+ Baneri s robom su prikazani
+
+ Sakrivanje oglasa preko celog ekrana radi samo sa starijim uređajima
+
+
+ Sakrij promocije za YouTube Premium
+ Promocije za YouTube Premium ispod video plejera su skrivene
+ Promocije za YouTube Premium ispod video plejera su prikazane
+
+
+ Sakrij oglase u videu
+ Oglasi u videu su skriveni
+ Oglasi u videu su prikazani
+
+
+ Link je kopiran u privremenu memoriju
+ Link sa vremenskom oznakom je kopiran
+ Prikaži dugme za kopiranje linka videa
+ Dugme je prikazano. Dodirnite da biste kopirali link videa. Dodirnite i zadržite da biste kopirali link videa s vremenskom oznakom
+ Dugme nije prikazano
+ Prikaži dugme za kopiranje linka videa sa vremenskom oznakom
+ Dugme je prikazano. Dodirnite da biste kopirali link videa s vremenskom oznakom. Dodirnite i zadržite da biste kopirali link videa bez vremenske oznake
+ Dugme nije prikazano
+
+
+ Ukloni dijalog o diskreciji gledaoca
+ Dijalog će biti uklonjen
+ Dijalog će biti prikazan
+ Ovo ne zaobilazi starosno ograničenje. Samo ga automatski prihvata.
+
+
+ Spoljna preuzimanja
+ Podešavanja za korišćenje spoljnog programa za preuzimanje
+ Prikaži dugme za spoljno preuzimanje
+ Dugme za preuzimanje je prikazano u plejeru
+ Dugme za preuzimanje nije prikazano u plejeru
+
+ Zameni izvorno dugme „Preuzmi”
+ Dugme „Preuzmi” otvara spoljni program za preuzimanje
+ Dugme „Preuzmi” otvara izvorni program za preuzimanje u aplikaciji
+ Naziv paketa programa za preuzimanje
+ Naziv paketa instaliranog spoljnog programa za preuzimanje, kao što je NewPipe ili Seal
+ %s nije instaliran. Instalirajte ga.
+
+
+ Onemogući pokret preciznog premotavanja
+ Pokret preciznog premotavanja je onemogućen
+ Pokret preciznog premotavanja je omogućen
+
+
+ Omogući dodirivanje trake za premotavanje
+ Dodirivanje trake za premotavanje je omogućeno
+ Dodirivanje trake za premotavanje je onemogućeno
+
+
+ Omogući pokret za osvetljenost
+ Prevlačenje za podešavanje osvetljenosti je omogućeno
+ Prevlačenje za podešavanje osvetljenosti je onemogućeno
+ Omogući pokret za jačinu zvuka
+ Prevlačenje za podešavanje jačine zvuka je omogućeno
+ Prevlačenje za podešavanje jačine zvuka je onemogućeno
+ Omogući pokret pritiskom za prevlačenje
+ Pokret pritiskom za prevlačenje je omogućen
+ Pokret pritiskom za prevlačenje je onemogućen
+ Omogući vibraciju pri dodiru
+ Vibracija pri dodiru je omogućena
+ Vibracija pri dodiru je onemogućena
+ Sačuvaj i vrati osvetljenost
+ Čuvanje i vraćanje osvetljenosti pri izlasku ili ulasku u režim celog ekrana
+ Bez čuvanja i vraćanja osvetljenosti pri izlasku ili ulasku u režim celog ekrana
+ Omogući pokret za automatsku osvetljenost
+ Prevlačenje nadole do najniže vrednosti pokreta za osvetljenost omogućava automatsku osvetljenost
+ Prevlačenje nadole do najniže vrednosti pokreta za osvetljenost ne omogućava automatsku osvetljenost
+ Automatski
+ Vremensko ograničenje pokreta prevlačenja
+ Količina milisekundi u kojoj je pokret prevlačenja vidljiv
+ Veličina teksta pokreta prevlačenja
+ Veličina teksta za pokret prevlačenja
+ Vidljivost pozadine pokreta prevlačenja
+ Vidljivost pozadine za pokret prevlačenja
+ Prag trajanja prevlačenja
+ Iznos praga trajanja prevlačenja
+
+
+ Onemogući automatske titlove
+ Automatski titlovi su onemogućeni
+ Automatski titlovi su omogućeni
+
+
+ Dugmad radnji
+ Sakrijte ili prikažite dugmad ispod videa
+ Sakrij dugmad „Sviđa mi se” i „Ne sviđa mi se”
+ Dugmad „Sviđa mi se” i „Ne sviđa mi se” su skrivena
+ Dugmad „Sviđa mi se” i „Ne sviđa mi se” su prikazana
+
+ Sakrij dugme „Deli”
+ Dugme „Deli” je skriveno
+ Dugme „Deli” je prikazano
+
+ Sakrij dugme „Prijavi”
+ Dugme „Prijavi” je skriveno
+ Dugme „Prijavi” je prikazano
+
+ Sakrij dugme „Remiks”
+ Dugme „Remiks” je skriveno
+ Dugme „Remiks” je prikazano
+
+ Sakrij dugme „Preuzmi”
+ Dugme „Preuzmi” je skriveno
+ Dugme „Preuzmi” je prikazano
+
+ Sakrij dugme „Hvala”
+ Dugme „Hvala” je skriveno
+ Dugme „Hvala” je prikazano
+
+ Sakrij dugme „Klip”
+ Dugme „Klip” je skriveno
+ Dugme „Klip” je prikazano
+
+ Sakrij dugme „Sačuvaj na plejlistu”
+ Dugme „Sačuvaj na plejlistu” je skriveno
+ Dugme „Sačuvaj na plejlistu” je prikazano
+
+
+ Sakrij dugme „Autoplej”
+ Dugme „Autoplej” je skriveno
+ Dugme „Autoplej” je prikazano
+
+
+
+ Sakrij dugme „Titl”
+ Dugme „Titl” je skriveno
+ Dugme „Titl” je prikazano
+
+
+ Sakrij dugme „Prebacuj”
+ Dugme „Prebacuj” je skriveno
+ Dugme „Prebacuj” je prikazano
+
+
+ Dugmad navigacije
+ Sakrijte ili promenite dugmad na traci za navigaciju
+
+ Sakrij dugme „Početna”
+ Dugme „Početna” je skriveno
+ Dugme „Početna” je prikazano
+
+ Sakrij dugme „Shorts”
+ Dugme „Shorts” je skriveno
+ Dugme „Shorts” je prikazano
+
+ Sakrij dugme „Napravi”
+ Dugme „Napravi” je skriveno
+ Dugme „Napravi” je prikazano
+
+ Sakrij dugme „Praćenja”
+ Dugme „Praćenja” je skriveno
+ Dugme „Praćenja” je prikazano
+
+ Zameni dugme „Napravi” dugmetom „Obaveštenja”
+ Dugme „Napravi” je zamenjeno dugmetom „Obaveštenja”\n\nNapomena: Ako ovo omogućite, takođe će se prisilno sakriti oglasi u videu
+ Dugme „Napravi” nije zamenjeno dugmetom „Obaveštenja”
+ Sakrij oznake dugmadi za navigaciju
+ Oznake dugmadi za navigaciju su skrivene
+ Oznake dugmadi za navigaciju su prikazane
+
+
+
+ Sakrij dugmad za prethodni i sledeći video
+ Dugmad su skrivena
+ Dugmad su prikazana
+
+
+ Sakrij kartice albuma
+ Kartice albuma su skrivene
+ Kartice albuma su prikazane
+
+
+
+ Sakrij kutiju za kolektivno finansiranje
+ Kutija za kolektivno finansiranje je skrivena
+ Kutija za kolektivno finansiranje je prikazana
+
+
+ Sakrij kartice završnog ekrana
+ Kartice završnog ekrana su skrivene
+ Kartice završnog ekrana su prikazane
+
+
+ Traka filtera
+ Sakrijte ili prikažite traku filtera u fidu, pretrazi ili srodnim videima
+ Sakrij u fidu
+ Skriveno u fidu
+ Prikazano u fidu
+ Sakrij u pretrazi
+ Skriveno u pretrazi
+ Prikazano u pretrazi
+ Sakrij u srodnim videima
+ Skriveno u srodnim videima
+ Prikazano u srodnim videima
+
+
+ Sakrij plutajuće dugme mikrofona
+ Plutajuće dugme mikrofona je skriveno
+ Plutajuće dugme mikrofona je prikazano
+
+
+ Onemogući ambijentalni režim u režimu celog ekrana
+ Ambijentalni režim u režimu celog ekrana je onemogućen
+ Ambijentalni režim u režimu celog ekrana je omogućen
+
+
+ Sakrij info kartice
+ Info kartice su skrivene
+ Info kartice su prikazane
+
+
+ Onemogući animacije brojeva
+ Brojevi nisu animirani
+ Brojevi su animirani
+
+
+ Sakrij traku za premotavanje u video plejeru
+ Traka za premotavanje u video plejeru je skrivena
+ Traka za premotavanje u video plejeru je prikazana
+ Sakrij traku za premotavanje na sličici videa
+ Traka za premotavanje na sličici videa je skrivena
+ Traka za premotavanje na sličici videa je prikazana
+
+
+
+ Sakrij Shorts videe u fidu „Početna”
+ Shorts videi u fidu „Početna” su skriveni
+ Shorts videi u fidu „Početna” su prikazani
+
+ Sakrij Shorts videe u fidu „Praćenja”
+ Shorts videi u fidu „Praćenja” su skriveni
+ Shorts videi u fidu „Praćenja” su prikazani
+ Sakrij Shorts videe u rezultatima pretrage
+ Shorts videi u rezultatima pretrage su skriveni
+ Shorts videi u rezultatima pretrage su prikazani
+
+ Sakrij dugme „Učlani me”
+ Dugme „Učlani me” je skriveno
+ Dugme „Učlani me” je prikazano
+
+ Sakrij dugme „Zaprati”
+ Dugme „Zaprati” je skriveno pri pauzi
+ Dugme „Zaprati” je prikazano pri pauzi
+ Sakrij dugmad u plejeru pri pauzi
+ Dugmad su skrivena pri pauzi
+ Dugmad su prikazana pri pauzi
+ Sakrij dugme „Kupovina”
+ Dugme „Kupovina” je skriveno
+ Dugme „Kupovina” je prikazano
+ Sakrij dugme „Superhvala”
+ Dugme „Superhvala” je skriveno
+ Dugme „Superhvala” je prikazano
+ Sakrij označene proizvode
+ Označeni proizvodi su skriveni
+ Označeni proizvodi su prikazani
+ Sakrij oznaku lokacije
+ Oznaka lokacije je skrivena
+ Oznaka lokacije je prikazana
+ Sakrij dugme „Sačuvaj zvuk na plejlistu”
+ Dugme „Sačuvaj zvuk na plejlistu” je skriveno
+ Dugme „Sačuvaj zvuk na plejlistu” je prikazano
+ Sakrij predloge za pretragu
+ Predlozi za pretragu su skriveni
+ Predlozi za pretragu su prikazani
+ Sakrij dugme „Sviđa mi se”
+ Dugme „Sviđa mi se” je skriveno
+ Dugme „Sviđa mi se” je prikazano
+ Sakrij dugme „Ne sviđa mi se”
+ Dugme „Ne sviđa mi se” je skriveno
+ Dugme „Ne sviđa mi se” je prikazano
+ Sakrij dugme „Komentari”
+ Dugme „Komentari” je skriveno
+ Dugme „Komentari” je prikazano
+
+ Sakrij dugme „Remiks”
+ Dugme „Remiks” je skriveno
+ Dugme „Remiks” je prikazano
+
+ Sakrij dugme „Deli”
+ Dugme „Deli” je skriveno
+ Dugme „Deli” je prikazano
+ Sakrij info panel
+ Info panel je skriven
+ Info panel je prikazan
+ Sakrij traku kanala
+ Traka kanala je skrivena
+ Traka kanala je prikazana
+ Sakrij naslov videa
+ Naslov Shorts videa je skriven
+ Naslov Shorts videa je prikazan
+ Sakrij oznaku metapodataka zvuka
+ Oznaka metapodataka zvuka je skrivena
+ Oznaka metapodataka zvuka je prikazana
+ Sakrij oznaku linka videa
+ Oznaka linka videa je skrivena
+ Oznaka linka videa je prikazana
+ Sakrij dugme za zvuk
+ Dugme za zvuk je skriveno
+ Dugme za zvuk je prikazano
+ Sakrij traku za navigaciju
+ Traka za navigaciju je skrivena
+ Traka za navigaciju je prikazana
+
+
+ Onemogući predloženi video na završnom ekranu
+ Predloženi videi na završnom ekranu će biti skriveni
+ Predloženi videi na završnom ekranu će biti prikazani
+
+
+ Sakrij vremensku oznaku videa
+ Vremenska oznaka videa je skrivena
+ Vremenska oznaka videa je prikazana
+
+
+
+ Neprozirnost sloja plejera
+ Vrednost neprozirnosti između 0-100, gde je 0 prozirno
+ Prozirnost preklopa plejera mora biti između 0-100
+
+
+ Skriveno
+
+ Nesviđanja privremeno nisu dostupna (API istekao)
+ Nesviđanja nisu dostupna (status %d)
+ Nesviđanja nisu dostupna (limit API-ja klijenta)
+ Nesviđanja nisu dostupna (%s)
+
+ Osvežite video da biste glasali pomoću ReturnYouTubeDislike
+ Nesviđanja su prikazana
+ Nesviđanja nisu prikazana
+ Prikaži nesviđanja na Shorts videima
+ Nesviđanja su prikazana na Shorts videima
+ Nesviđanja su prikazana na Shorts videima\n\nOgraničenje: Nesviđanja se možda neće pojaviti u režimu bez arhiviranja
+ Nesviđanja su skrivena na Shorts videima
+ Nesviđanja u procentima
+ Nesviđanja prikazana u procentima
+ Nesviđana prikazana u brojevima
+
+ Kompaktno dugme „Sviđa mi se”
+ Dugme „Sviđa mi se” stilizovano za minimalnu širinu
+ Dugme „Sviđa mi se” stilizovano za najbolji izgled
+ Prikaži iskačuće obaveštenje ako API nije dostupan
+ Iskačuće obaveštenje je prikazano, ako Return YouTube Dislike nije dostupan
+ Iskačuće obaveštenje nije prikazano, ako Return YouTube Dislike nije dostupan
+ O programu
+ Podatke obezbeđuje Return YouTube Dislike API. Dodirnite ovde da biste saznali više
+
+ Statistike ReturnYouTubeDislike API-ja za ovaj uređaj
+ Vreme odgovora API-ja, prosečno
+ Vreme odgovora API-ja, minimalno
+ Vreme odgovora API-ja, maksimalno
+ Vreme odgovora API-ja, poslednji video
+ Nesviđanja privremeno nisu dostupna – na snazi je ograničenje stope API klijenta
+ API prikupljanje glasova, broj poziva
+ Nije ostvaren nijedan mrežni poziv
+ Broj ostvarenih mrežnih poziva: %d
+ API prikupljanje glasova, broj isteka
+ Nije istekao nijedan mrežni poziv
+ Broj isteklih mrežnih poziva: %d
+ Ograničenje stope klijenta API-ja
+ Nije ostvareno nijedno ograničenje stope klijenta
+ Broj ostvarenih ograničenja stope klijenta: %d
+ %d milisekundi
+
+
+ Omogući široku traku za pretragu
+ Široka traka za pretragu je omogućena
+ Široka traka za pretragu je onemogućena
+
+
+ Vrati stare sličice na traci za premotavanje
+ Sličice trake za premotavanje će se pojaviti iznad nje
+ Sličice trake za premotavanje će se pojaviti u režimu celog ekrana
+
+
+
+ Lažirana verzija aplikacije
+ Verzija je lažirana
+ Verzija nije lažirana
+ Verzija aplikacije će biti lažirana na stariju verziju YouTubea.\n\nOvo će promeniti izgled i karakteristike aplikacije, ali može doći do nepoznatih neželjenih efekata.\n\nAko se kasnije isključi, preporučuje se da očistite podatke aplikacije da biste sprečili greške u korisničkom interfejsu.
+
+ Ciljna verzija aplikacije za lažiranje
+
+ 18.33.40 - Vraća Return YouTube Dislike u Shorts videima u režimu bez arhiviranja
+ 18.20.39 - Vraća širok meni za brzinu i kvalitet videa
+ 18.09.39 - Vraća karticu zbirke
+ 17.41.37 - Vraća staru policu plejliste
+ 17.33.42 - Vraća stari izgled korisničkog interfejsa
+
+
+ Podešavanje početne stranice
+ Podrazumevana
+
+ Početna
+ Pretraga
+
+ Praćenja
+ Istraži
+ Shorts
+
+ Kartica „Vi”
+ Lajkovani videi
+
+ Istorija
+ U trendu
+
+
+ Onemogući nastavak reprodukcije Shorts plejera
+ Shorts plejer neće nastaviti reprodukciju pri pokretanju aplikacije
+ Shorts plejer će nastaviti reprodukciju pri pokretanju aplikacije
+
+
+ Omogući korisnički interfejs tableta
+ Korisnički interfejs tableta je omogućen
+ Korisnički interfejs tableta je onemogućen
+ Objave zajednice se ne prikazuju u korisničkom interfejsu tableta
+
+
+ Mini-plejer
+ Promenite stil minimiziranog plejera u aplikaciji
+ Tip mini-plejera
+ Originalni
+ Telefon
+ Tablet
+ Moderan 1
+ Moderan 2
+ Moderan 3
+ Sakrij dugmad za proširivanje i zatvaranje
+ Dugmad za proširivanje i zatvaranje su skrivena\n(prevucite mini-plejer da biste ga proširili ili zatvorili)
+ Dugmad za proširivanje i zatvaranje su prikazana
+ Sakrij podtekstove
+ Podtekstovi su skriveni
+ Podtekstovi su prikazani
+ Sakrij dugmad za premotavanje unapred i unazad
+ Dugmad za premotavanje unapred i unazad su skrivena
+ Dugmad za premotavanje unapred i unazad su prikazana
+ Prozirnost preklopa
+ Vrednost neprozirnosti između 0-100, gde je 0 prozirno
+ Prozirnost preklopa mini-plejera mora biti između 0-100
+
+
+ Omogući ekran učitavanja s gradijentom
+ Ekran učitavanja će imati pozadinu s gradijentom
+ Ekran učitavanja će imati običnu pozadinu
+
+
+ Omogući prilagođenu boju trake za premotavanje
+ Prilagođena boja trake za premotavanje je prikazana
+ Originalna boja trake za premotavanje je prikazana
+ Prilagođena boja trake za premotavanje
+ Boja trake za premotavanje
+ Nevažeća vrednost boje trake za premotavanje. Korišćenje podrazumevane vrednosti.
+
+
+
+
+
+ Kartica „Početna”
+
+ Kartica „Praćenja”
+
+ Kartica „Vi”
+ Plejliste plejera, preporuke
+ Rezultati pretrage
+ Originalne sličice
+ DeArrow i originalne sličice
+ DeArrow i zahvati kadra
+ Zahvati kadra
+ DeArrow pruža sličice za YouTube videe prikupljene od zajednice. Ove sličice su često relevantnije od onih koje pruža YouTube\n\n Ako je omogućeno, linkovi videa će biti poslati na API server i nikakvi drugi podaci se neće slati. Ako video nema DeArrow sličice, tada se prikazuju originalne sličice ili sličice zahvata kadra\n\nDodirnite ovde da biste saznali više o DeArrowu
+ Prikaži iskačuće obaveštenje ako API nije dostupan
+ Iskačuće obaveštenje je prikazano, ako DeArrow nije dostupan
+ Iskačuće obaveštenje nije prikazano, ako DeArrow nije dostupan
+ Krajnja tačka DeArrow API-ja
+ URL krajnje tačke keša DeArrow sličica
+ Zahvati kadra iz videa
+ Zahvati kadra se prave od početka/sredine/kraja svakog videa. Ove slike su ugrađene u YouTube i ne koristi se nijedan spoljni API
+ Koristi brze zahvate kadra
+ Koriste se zahvati kadra srednjeg kvaliteta. Sličice će se brže učitavati, ali strimovi uživo, neobjavljeni ili veoma stari videi mogu da prikazuju prazne sličice
+ Koriste se zahvati kadra visokog kvaliteta
+ Vreme videa za pravljenje zahvata kadra
+ Početak videa
+ Sredina videa
+ Kraj videa
+
+ DeArrow privremeno nije dostupan (kôd statusa: %s)
+ DeArrow privremeno nije dostupan
+
+
+ Prikaži saopštenja ReVanceda
+ Saopštenja su prikazana pri pokretanju
+ Saopštenja nisu prikazana pri pokretanju
+ Prikazivanje saopštenja pri pokretanju
+ Neuspešno povezivanje sa pružaocem saopštenja
+ Odbaci
+
+
+ Omogući automatsko ponavljanje videa
+ Automatsko ponavljanje videa je omogućeno
+ Automatsko ponavljanje videa je onemogućeno
+
+
+ Lažirane dimenzije uređaja
+ Dimenzije uređaja su lažirane\n\nViši kvaliteti videa će možda biti otključani, ali ćete možda imati zastoj pri reprodukciji videa, kraće trajanje baterije i nepoznate neželjene efekte
+ Dimenzije uređaja nisu lažirane\n\nAko ovo omogućite, viši kvaliteti videa će se možda otključati
+ Ako ovo omogućite, možda će doći do zastoja pri reprodukciji videa, kraćeg trajanja baterije i nepoznatih neželjenih efekata.
+
+
+ Podešavanja GmsCorea
+ Podešavanja za GmsCore
+
+
+ Zaobiđi URL preusmeravanja
+ URL preusmeravanja se zaobilaze
+ URL preusmeravanja se ne zaobilaze
+
+
+ Otvori linkove u pregledaču
+ Otvaranje linkova van aplikacije
+ Otvaranje linkova u aplikaciji
+
+
+ Ukloni parametar upita za praćenje
+ Parametar upita za praćenje je uklonjen iz linkova
+ Parametar upita za praćenje nije uklonjen iz linkova
+
+
+ Onemogući vibraciju pri uveličavanju
+ Vibracija pri uveličavanju je onemogućena
+ Vibracija pri uveličavanju je omogućena
+
+
+ Automatski kvalitet
+ Zapamti promene kvaliteta videa
+ Promene kvaliteta se primenjuju na sve videe
+ Promene kvaliteta se primenjuju samo na trenutni video
+ Podrazumevani kvalitet videa na Wi-Fi mreži
+ Podrazumevani kvalitet videa na mobilnim podacima
+ na mobilnim podacima
+ na Wi-Fi mreži
+ Promenjen podrazumevani kvalitet %1$s na: %2$s
+
+
+ Prikaži dugme dijaloga za brzinu
+ Dugme je prikazano
+ Dugme nije prikazano
+
+
+ Prilagođene brzine reprodukcije
+ Dodajte ili promenite dostupne brzine reprodukcije
+ Prilagođene brzine reprodukcije moraju biti manje od %s. Korišćenje podrazumevanih vrednosti.
+ Nevažeće prilagođene brzine reprodukcije. Korišćenje podrazumevanih vrednosti.
+
+
+ Zapamti promene brzine reprodukcije
+ Promene brzine reprodukcije se primenjuju na sve videe
+ Promene brzine reprodukcije se primenjuju samo na trenutni video
+ Podrazumevana brzina reprodukcije
+ Brzina reprodukcije promenjena na: %s
+
+
+
+ Omogući prevlačenje za premotavanje
+ Prevlačenje za premotavanje je omogućeno
+ Prevlaćenje za premotavanje nije omogućeno
+
+
+ Lažiran klijent
+ Lažiranje klijenta da bi se sprečili problemi sa reprodukcijom
+ Lažiran klijent
+ Klijent je lažiran
+ Klijent nije lažiran\n\nReprodukcija videa možda neće raditi
+ Isključivanje ovog podešavanja možda će izazvati probleme sa reprodukcijom videa.
+ Lažiran klijent na iOS
+ Sličice u lažiranom klijentu nisu dostupne (API istekao)
+ Sličice u lažiranom klijentu privremeno nisu dostupne: %s
+
+
+
+ Lažirani potpis aplikacije
+ Lažiranje potpisa aplikacije da bi se sprečili problemi s reprodukcijom
+ Lažirani potpis aplikacije
+ Potpis aplikacije je lažiran\n\nNeželjeni efekti obuhvataju:\n• Poboljšana brzina prenosa nije dostupna\n• Videi se ne mogu preuzimati\n• Nema sličica na traci za premotavanje za plaćene videe
+ Potpis aplikacije nije lažiran\n\nReprodukcija videa možda neće raditi
+ Isključivanje ovog podešavanja može izazvati probleme s reprodukcijom videa.
+ Lažirani potpis aplikacije u fidu
+ Potpis plikacije je lažiran\n\nNeželjeni efekti obuhvataju:\n• Videi u fidu nemaju titlove\n• Automatski pušteni videi u fidu će se pojaviti u istoriji gledanja
+ Potpis aplikacije nije lažiran za videe u fidu\n\nVidei u fidu će se pustiti na manje od 1 minuta pre nego što naiđu na probleme s reprodukcijom
+ Lažirani storibord
+ Storibord je lažiran
+ Storibord nije lažiran\n\nNeželjeni efekti uključuju:\n• Nema ambijentalnog režima\n• Sličice na traci za premotavanje su skrivene
+ Lažiranje storiborda privremeno nije dostupno (API je istekao)
+ Lažiranje storiborda privremeno nije dostupno: %s
+
+
+
+ Omogući automatsku osvetljenost HDR režima
+ Automatska osvetljenost HDR režima je omogućena
+ Automatska osvetljenost HDR režima je onemogućena
+
+
+
+
+ Blokiraj audio oglase
+ Audio oglasi su blokirani
+ Audio oglasi su odblokirani
+
+
+ %s nedostupan. Oglasi će se možda prikazivati. Pokušajte da pređete na drugu uslugu za blokiranje oglasa u podešavanjima.
+ %s server je vratio grešku. Oglasi će se možda prikazivati. Pokušajte da pređete na drugu uslugu za blokiranje oglasa u podešavanjima.
+ Blokiranje ugrađenih video oglasa
+ Onemogućeno
+ Luminous proksi
+ PurpleAdBlock proksi
+
+
+ Blokiraj video oglase
+ Video oglasi su blokirani
+ Video oglasi su odblokirani
+
+
+ poruka izbrisana
+ Prikaz izbrisanih poruka
+ Ne prikazuj izbrisane poruke
+ Sakrij izbrisane poruke iza spojlera
+ Prikaži izbrisane poruke kao precrtan tekst
+
+
+ Automatski preuzmi bodove kanala
+ Bodovi kanala su automatski preuzeti
+ Bodovi kanala nisu automatski preuzeti
+
+
+
+ Omogući Twitch režim otklanjanja grešaka
+ Twitch režim otklanjanja grešaka je omogućen (nije preporučeno)
+ Twitch režim otklanjanja grešaka je onemogućen
+
+
+ Podešavanja ReVanceda
+ Oglasi
+ Podešavanja blokiranja oglasa
+ Ćaskanje
+ Podešavanja ćaskanja
+ Razno
+ Razna podešavanja
+ Opšta podešavanja
+ Ostala podešavanja
+ Oglasi na strani klijenta
+ Oglasi na strani servera
+ Evidentiranje otklanjanja grešaka
+ Evidencije otklanjanja grešaka su omogućene
+ Evidencije otklanjanja grešaka su onemogućene
+
+
+
diff --git a/src/main/resources/addresources/values-sr-rSP/strings.xml b/src/main/resources/addresources/values-sr-rSP/strings.xml
index 3fab48b24..6a2ea816b 100644
--- a/src/main/resources/addresources/values-sr-rSP/strings.xml
+++ b/src/main/resources/addresources/values-sr-rSP/strings.xml
@@ -214,6 +214,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
Сакриј одељак с инфо картицама
Одељак с инфо картицама је скривен
Одељак с инфо картицама је приказан
+ Сакриј одељак „Кључни концепти”
+ Одељак „Кључни концепти” је скривен
+ Одељак „Кључни концепти” је приказан
Сакриј одељак за транскрипцију
Одељак за транскрипцију је скривен
Одељак за транскрипцију је скривен
@@ -1119,8 +1122,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Клијент није лажиран\n\nРепродукција видеа можда неће радити
Искључивање овог подешавања можда ће изазвати проблеме са репродукцијом видеа.
Лажиран клијент на iOS
- Клијент је тренутно лажиран на iOS\n\nНежељени ефекти обухватају:\n• Нема HDR видеа\n• Виши квалитети видеа можда недостају\n• Стримови уживо не могу да се репродукују само као аудио
- Клијент је тренутно лажиран на Android VR\n\nНежељени ефекти обухватају:\н• Нема HDR видеа\n• Дечји видео снимци се не репродукују\n• Паузирани видео снимци могу насумично да се настављају\n• Сличице на траци за премотавање Shorts видеа лошег квалитета\n• Дугме за радњу „Преузми“ је скривено\n• Картице завршног екрана су скривене
+ Клијент је тренутно лажиран на iOS\n\nНежељени ефекти обухватају:\n• HDR видео можда неће бити доступан\n• Историја гледања можда неће функционисати
+ Клијент је тренутно лажиран на Android VR Нежељени ефекти обухватају:\n• Нема HDR видеа\n• Дечји видео снимци се не репродукују\n• Паузирани видео снимци могу насумично да се настављају\n• Сличице на траци за премотавање Shorts видеа лошег квалитета\n• Дугме за радњу „Преузми“ је скривено\n• Картице завршног екрана су скривене
Сличице у лажираном клијенту нису доступне (API истекао)
Сличице у лажираном клијенту привремено нису доступне: %s
diff --git a/src/main/resources/addresources/values-sv-rSE/strings.xml b/src/main/resources/addresources/values-sv-rSE/strings.xml
index 72eda385c..3e9acbac2 100644
--- a/src/main/resources/addresources/values-sv-rSE/strings.xml
+++ b/src/main/resources/addresources/values-sv-rSE/strings.xml
@@ -1120,8 +1120,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Klienten är inte förfalskad\n\nVideouppspelning kanske inte fungerar
Att stänga av den här inställningen kan orsaka videouppspelningsproblem.
Spoof klient till iOS
- Klienten är för närvarande förfalskad till iOS\n\nBiverkningar inkluderar:\n• Ingen HDR-video\n• Högre videokvaliteter kan saknas\n• Live-strömmar kan inte endast spela upp som ljud
- Klienten är för närvarande förfalskad till Android VR\n\nBiverkningar inkluderar:\n• Ingen HDR-video\n• Barnvideor spelar inte upp\n• Pausade videor kan slumpmässigt återuppta\n• Lågkvalitativa Shorts seekbar miniatyrer\n• Nedladdningsknappen är dold\n• Slutskärmskorten är dolda
+ Klienten är för närvarande förfalskad till iOS\n\nBiverkningar inkluderar:\n• HDR-video kanske inte är tillgänglig\n• Titta historik kanske inte fungerar
+ Klienten är för närvarande förfalskad till Android VR. Biverkningar inkluderar:\n• Ingen HDR-video\n• Barnvideor spelar inte upp\n• Pausade videor kan slumpmässigt återuppta\n• Lågkvalitativa Shorts seekbar miniatyrer\n• Nedladdningsknappen är dold\n• Slutskärmskorten är dolda
Spoof klientminiatyrer är inte tillgängliga (API gick ut)
Miniatyrer för Spoof klientminiatyrer tillfälligt inte tillgängliga: %s
diff --git a/src/main/resources/addresources/values-tr-rTR/strings.xml b/src/main/resources/addresources/values-tr-rTR/strings.xml
index d24106d44..9af884a8d 100644
--- a/src/main/resources/addresources/values-tr-rTR/strings.xml
+++ b/src/main/resources/addresources/values-tr-rTR/strings.xml
@@ -211,6 +211,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
Bilgi kartları kısmını gizle
Bilgi kartları kısmı gizleniyor
Bilgi kartları kısmı gösteriliyor
+ \'Anahtar kavramlar\' bölümünü gizle
+ \'Anahtar kavramlar\' bölümü gizli
+ \'Anahtar kavramlar\' bölümü görünür
Transkript kısmını gizle
Transkript kısmı gizleniyor
Transkript kısmı gösteriliyor
@@ -1115,8 +1118,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
İstemci taklit edilmiyor\n\nVideo oynatma çalışmayabilir
Bu ayarı devre dışı bırakmak video oynatma sorunlarına yol açabilir.
İstemciyi iOS olarak taklit et
- İstemci şu anda iOS olarak taklit ediliyor\n\nYan etkiler şunları içerir:\n• HDR videolar yok\n• Yüksek görüntü kaliteleri eksik olabilir\n• Canlı yayınlar sadece ses olarak oynatılamaz
- İstemci şu anda Android VR olarak taklit ediliyor\n\nYan etkiler şunları içerir:\n• HDR videolar yok\n• Çocuklara özel videolar oynatılamaz\n• Duraklatılmış videolar rastgele bir şekilde devam edebilir\n• Shorts zaman çubuğu küçük resimleri düşük kalitede\n• \'İndir\' eylem düğmesi gizli\n• Bitiş ekranı kartları gizli
+ İstemci şu anda iOS olarak taklit ediliyor\n\nYan etkiler şunları içerir:\n• HDR videolar olmayabilir\n• İzleme geçmişi çalışmayabilir
+ İstemci şu anda Android VR olarak taklit ediliyor. Yan etkiler şunları içerir:\n• HDR videolar yok\n• Çocuklara özel videolar oynatılamaz\n• Duraklatılmış videolar rastgele bir şekilde devam edebilir\n• Shorts zaman çubuğu küçük resimleri düşük kalitede\n• \'İndir\' eylem düğmesi gizli\n• Bitiş ekranı kartları gizli
İstemci küçük resimlerini taklit etme kullanılamıyor (API zaman aşımına uğradı)
İstemci küçük resimlerini taklit etme geçici olarak kullanılamıyor: %s
diff --git a/src/main/resources/addresources/values-uk-rUA/strings.xml b/src/main/resources/addresources/values-uk-rUA/strings.xml
index de3a22ab3..7f4e4daf2 100644
--- a/src/main/resources/addresources/values-uk-rUA/strings.xml
+++ b/src/main/resources/addresources/values-uk-rUA/strings.xml
@@ -1118,8 +1118,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
Клієнт не підроблений\n\nВідтворення відео може не працювати
Вимкнення цього параметра може призвести до проблем відтворення відео.
Підробити клієнт на iOS
- Наразі клієнт підроблений на iOS\n\nПобічні ефекти:\n• Немає HDR відео\n• Високі якості відео можуть бути відсутні\n• Прямі трансляції не відтворюються в режимі аудіо
- Наразі клієнт підроблений на Android VR\n\nПобічні ефекти:\n• Немає HDR відео\n• Відео для дітей не відтворюються\n• Призупинені відео можуть випадково продовжуватися\n• Низька якість мініатюр панелі прогресу Shorts\n• Кнопка завантаження прихована\n• Картки кінцевого екрана приховані
+ Наразі клієнт підроблений на iOS\n\nПобічні ефекти:\n• HDR відео може бути недоступним\n• Історія переглядів може не працювати
+ Наразі клієнт підроблений на Android VR. Побічні ефекти:\n• Немає HDR відео\n• Відео для дітей не відтворюються\n• Призупинені відео можуть випадково продовжуватися\n• Низька якість мініатюр панелі прогресу Shorts\n• Кнопка завантаження прихована\n• Картки кінцевого екрана приховані
Мініатюри в режимі підробки клієнта не доступні (закінчився час API)
Мініатюри в режимі підробки клієнта тимчасово не доступні: %s
diff --git a/src/main/resources/addresources/values-vi-rVN/strings.xml b/src/main/resources/addresources/values-vi-rVN/strings.xml
index d91210fa8..63436e91f 100644
--- a/src/main/resources/addresources/values-vi-rVN/strings.xml
+++ b/src/main/resources/addresources/values-vi-rVN/strings.xml
@@ -211,6 +211,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
Ẩn phần thẻ thông tin
Phần thẻ thông tin được ẩn
Phần thẻ thông tin được hiện
+ Ẩn phần \'Khái niệm chính\'
+ Phần \'Khái niệm chính\' được ẩn
+ Phần \'Khái niệm chính\' được hiện
Ẩn phần bản chép lời
Phần bản chép lời được ẩn
Phần bản chép lời được hiện
@@ -1115,8 +1118,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
Máy khách chưa được giả mạo\n\nPhát nền video có thể không hoạt động
Việc tắt cài đặt này có thể gây ra sự cố phát nền video.
Giả mạo máy khách cho iOS
- Hiện tại máy khách đang giả mạo thành iOS\n\nTác dụng phụ bao gồm:\n• Không có video HDR\n• Chất lượng cao hơn cho video có thể thiếu\n• Phát trực tiếp chỉ có âm thanh
- Hiện tại máy khách đang giả mạo thành Android VR\n\nTác dụng phụ bao gồm:\n• Không có video HDR\n• Video dành cho trẻ em không phát lắp\n• Video đã tạm dừng có thể ngẫu nhiên phát tiếp\n• Hình thu nhỏ thanh tiến trình Shorts có chất lượng thấp\n• Nút hành động tải xuống luôn ẩn\n• Các thẻ màn hình kết thúc luôn ẩn
+ Hiện tại máy khách đang giả mạo thành Android VR. Tác dụng phụ bao gồm:\n• Không có video HDR\n• Video dành cho trẻ em không phát lắp\n• Video đã tạm dừng có thể ngẫu nhiên phát tiếp\n• Hình thu nhỏ thanh tiến trình Shorts có chất lượng thấp\n• Nút hành động tải xuống luôn ẩn\n• Các thẻ màn hình kết thúc luôn ẩn
Hình thu nhỏ giả mạo máy khách không khả dụng (API hết hạn)
Hình thu nhỏ giả mạo máy khách tạm thời không khả dụng: %s
diff --git a/src/main/resources/addresources/values-zh-rCN/strings.xml b/src/main/resources/addresources/values-zh-rCN/strings.xml
index 52c840b7b..aabc790c1 100644
--- a/src/main/resources/addresources/values-zh-rCN/strings.xml
+++ b/src/main/resources/addresources/values-zh-rCN/strings.xml
@@ -1117,7 +1117,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
客户端未伪装\n\n可能无法正常播放视频
关闭此选项可能会导致视频不能正常播放。
伪装客户端为 iOS
- 客户端目前被伪装成iOS\n\n附带效果包括:\n• 无 HDR 视频\n• 更高的视频质量可能丢失\n• 现场直播不能仅作为音频播放
伪装客户端缩略图不可用(API 超时)
伪装客户端缩略图暂时不可用: %s
diff --git a/src/main/resources/addresources/values-zh-rTW/strings.xml b/src/main/resources/addresources/values-zh-rTW/strings.xml
index c9202ffe2..f7234fd8a 100644
--- a/src/main/resources/addresources/values-zh-rTW/strings.xml
+++ b/src/main/resources/addresources/values-zh-rTW/strings.xml
@@ -1118,7 +1118,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
尚未欺騙客戶端\n\n影片播放可能未作用
關閉此設定可能會導致影片播放發生問題
欺騙客戶端至 iOS
- 客戶端目前偽裝為 iOS\n\n副作用包括:\n• 無 HDR 影片\n• 更高的影片品質可能缺失\n• 直播無法僅作為音訊播放
客戶端目前偽裝為 Android VR\n\n副作用包括:\n• 無 HDR 影片\n• 兒童影片無法播放\n• 暫停的影片可能會隨\n恢復播放\n• 低品質短片的進度條縮圖\n• 下載操作按鈕隱藏\n• 結尾畫面卡片隱藏
欺騙客戶端縮圖尚不可用 (API 逾時)
欺騙客戶端縮圖暫不可用: %s
From 7ae9f8fa0a349b91853e9554f18e564ca6ff887c Mon Sep 17 00:00:00 2001
From: oSumAtrIX
Date: Tue, 6 Aug 2024 01:25:28 +0200
Subject: [PATCH 45/50] feat(CandyLink): Remove non-functional `Unlock pro`
patch
Servers now check the purchase status.
---
.../patches/candylinkvpn/UnlockProPatch.kt | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/src/main/kotlin/app/revanced/patches/candylinkvpn/UnlockProPatch.kt b/src/main/kotlin/app/revanced/patches/candylinkvpn/UnlockProPatch.kt
index 3a878ddf7..ae7df4408 100644
--- a/src/main/kotlin/app/revanced/patches/candylinkvpn/UnlockProPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/candylinkvpn/UnlockProPatch.kt
@@ -1,20 +1,23 @@
package app.revanced.patches.candylinkvpn
-import app.revanced.util.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.candylinkvpn.fingerprints.IsPremiumPurchasedFingerprint
+import app.revanced.util.exception
@Patch(
- name = "Unlock pro",
- compatiblePackages = [CompatiblePackage("com.candylink.openvpn")]
+ compatiblePackages = [CompatiblePackage("com.candylink.openvpn")],
+)
+@Deprecated(
+ "This patch does not work anymore and will be removed in the future, " +
+ "because the servers now check the purchase status.",
)
@Suppress("unused")
object UnlockProPatch : BytecodePatch(
- setOf(IsPremiumPurchasedFingerprint)
+ setOf(IsPremiumPurchasedFingerprint),
) {
override fun execute(context: BytecodeContext) {
IsPremiumPurchasedFingerprint.result?.mutableMethod?.addInstructions(
@@ -22,7 +25,7 @@ object UnlockProPatch : BytecodePatch(
"""
const/4 v0, 0x1
return v0
- """
+ """,
) ?: throw IsPremiumPurchasedFingerprint.exception
}
-}
\ No newline at end of file
+}
From 5e1d001056df68e1e2b39f1365215c91bcc9e46b Mon Sep 17 00:00:00 2001
From: oSumAtrIX
Date: Tue, 6 Aug 2024 01:27:06 +0200
Subject: [PATCH 46/50] feat(Instagram): Remove unnecessary `Hide timeline ads`
patch
The `Hide ads` patch supersedes this patch.
---
.../instagram/patches/ads/timeline/HideTimelineAdsPatch.kt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/kotlin/app/revanced/patches/instagram/patches/ads/timeline/HideTimelineAdsPatch.kt b/src/main/kotlin/app/revanced/patches/instagram/patches/ads/timeline/HideTimelineAdsPatch.kt
index 2cb98620c..0715432ff 100644
--- a/src/main/kotlin/app/revanced/patches/instagram/patches/ads/timeline/HideTimelineAdsPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/instagram/patches/ads/timeline/HideTimelineAdsPatch.kt
@@ -14,9 +14,9 @@ import app.revanced.util.exception
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
@Patch(
- name = "Hide timeline ads",
compatiblePackages = [CompatiblePackage("com.instagram.android")],
)
+@Deprecated("This patch is not needed anymore.", replaceWith = ReplaceWith("HideAdsPatch"))
@Suppress("unused")
object HideTimelineAdsPatch : BytecodePatch(
setOf(
From 6207c314c657a1188d1081b0a196a61e49cad83b Mon Sep 17 00:00:00 2001
From: oSumAtrIX
Date: Tue, 6 Aug 2024 01:29:50 +0200
Subject: [PATCH 47/50] fix(Messenger - Disable switching emoji to sticker):
Constrain to last working version `439.0.0.29.119`
---
.../messenger/inputfield/DisableSwitchingEmojiToStickerPatch.kt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/kotlin/app/revanced/patches/messenger/inputfield/DisableSwitchingEmojiToStickerPatch.kt b/src/main/kotlin/app/revanced/patches/messenger/inputfield/DisableSwitchingEmojiToStickerPatch.kt
index 5da83e876..805175580 100644
--- a/src/main/kotlin/app/revanced/patches/messenger/inputfield/DisableSwitchingEmojiToStickerPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/messenger/inputfield/DisableSwitchingEmojiToStickerPatch.kt
@@ -13,7 +13,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Patch(
name = "Disable switching emoji to sticker",
description = "Disables switching from emoji to sticker search mode in message input field.",
- compatiblePackages = [CompatiblePackage("com.facebook.orca")],
+ compatiblePackages = [CompatiblePackage("com.facebook.orca", ["439.0.0.29.119"])],
)
@Suppress("unused")
object DisableSwitchingEmojiToStickerPatch : BytecodePatch(
From ebbcac74fd8598daebb4be0bd7c430c41333e2d4 Mon Sep 17 00:00:00 2001
From: oSumAtrIX
Date: Tue, 6 Aug 2024 01:40:11 +0200
Subject: [PATCH 48/50] feat(Expense Manager): Remove non-functional `Unlock
pro` patch
---
.../patches/moneymanager/UnlockProPatch.kt | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/main/kotlin/app/revanced/patches/moneymanager/UnlockProPatch.kt b/src/main/kotlin/app/revanced/patches/moneymanager/UnlockProPatch.kt
index 0f5afa70c..200e0cfed 100644
--- a/src/main/kotlin/app/revanced/patches/moneymanager/UnlockProPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/moneymanager/UnlockProPatch.kt
@@ -8,20 +8,20 @@ import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.moneymanager.fingerprints.UnlockProFingerprint
@Patch(
- name = "Unlock pro",
- compatiblePackages = [CompatiblePackage("com.ithebk.expensemanager")]
+ compatiblePackages = [CompatiblePackage("com.ithebk.expensemanager")],
)
+@Deprecated("This patch is not functional anymore and will be removed in the future.")
@Suppress("unused")
object UnlockProPatch : BytecodePatch(
- setOf(UnlockProFingerprint)
-){
+ setOf(UnlockProFingerprint),
+) {
override fun execute(context: BytecodeContext) {
- UnlockProFingerprint.result!!.mutableMethod.addInstructions(
+ UnlockProFingerprint.result!!.mutableMethod.addInstructions(
0,
"""
const/4 v0, 0x1
return v0
- """
+ """,
)
}
-}
\ No newline at end of file
+}
From acf38cafae5eb9896b43f3a6cbd808ac273cd081 Mon Sep 17 00:00:00 2001
From: oSumAtrIX
Date: Tue, 6 Aug 2024 02:01:44 +0200
Subject: [PATCH 49/50] fix(Google Photos - GmsCore support): Fix by checking
first if a method exists before trying to patch it
---
.../shared/misc/gms/BaseGmsCoreSupportPatch.kt | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt
index 9f773b03a..188f309b7 100644
--- a/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt
+++ b/src/main/kotlin/app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch.kt
@@ -56,7 +56,7 @@ abstract class BaseGmsCoreSupportPatch(
) : BytecodePatch(
name = "GmsCore support",
description = "Allows patched Google apps to run without root and under a different package name " +
- "by using GmsCore instead of Google Play Services.",
+ "by using GmsCore instead of Google Play Services.",
dependencies = setOf(
ChangePackageNamePatch::class,
gmsCoreSupportResourcePatch::class,
@@ -100,7 +100,13 @@ abstract class BaseGmsCoreSupportPatch(
primeMethodFingerprint?.let { transformPrimeMethod(packageName) }
// Return these methods early to prevent the app from crashing.
- (earlyReturnFingerprints + ServiceCheckFingerprint + CastDynamiteModuleFingerprint).returnEarly()
+ earlyReturnFingerprints.returnEarly()
+ ServiceCheckFingerprint.returnEarly()
+ // Not all apps have CastDynamiteModule, so we need to check if it's present.
+ if (CastDynamiteModuleFingerprint.result != null) {
+ CastDynamiteModuleFingerprint.returnEarly()
+ }
+ // Google Play Utility is not present in all apps, so we need to check if it's present.
if (GooglePlayUtilityFingerprint.result != null) {
GooglePlayUtilityFingerprint.returnEarly()
}
@@ -109,7 +115,7 @@ abstract class BaseGmsCoreSupportPatch(
mainActivityOnCreateFingerprint.result?.mutableMethod?.addInstructions(
0,
"invoke-static/range { p0 .. p0 }, Lapp/revanced/integrations/shared/GmsCoreSupport;->" +
- "checkGmsCore(Landroid/app/Activity;)V",
+ "checkGmsCore(Landroid/app/Activity;)V",
) ?: throw mainActivityOnCreateFingerprint.exception
// Change the vendor of GmsCore in ReVanced Integrations.
From dcabcb4f865abf1f883a540020db3d6724da2043 Mon Sep 17 00:00:00 2001
From: semantic-release-bot
Date: Tue, 6 Aug 2024 00:04:26 +0000
Subject: [PATCH 50/50] chore(release): 4.12.0-dev.17 [skip ci]
# [4.12.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.16...v4.12.0-dev.17) (2024-08-06)
### Bug Fixes
* **Google Photos - GmsCore support:** Fix by checking first if a method exists before trying to patch it ([acf38ca](https://github.com/ReVanced/revanced-patches/commit/acf38cafae5eb9896b43f3a6cbd808ac273cd081))
* **Messenger - Disable switching emoji to sticker:** Constrain to last working version `439.0.0.29.119` ([6207c31](https://github.com/ReVanced/revanced-patches/commit/6207c314c657a1188d1081b0a196a61e49cad83b))
### Features
* **CandyLink:** Remove non-functional `Unlock pro` patch ([7ae9f8f](https://github.com/ReVanced/revanced-patches/commit/7ae9f8fa0a349b91853e9554f18e564ca6ff887c))
* **Expense Manager:** Remove non-functional `Unlock pro` patch ([ebbcac7](https://github.com/ReVanced/revanced-patches/commit/ebbcac74fd8598daebb4be0bd7c430c41333e2d4))
* **Instagram:** Remove unnecessary `Hide timeline ads` patch ([5e1d001](https://github.com/ReVanced/revanced-patches/commit/5e1d001056df68e1e2b39f1365215c91bcc9e46b))
---
CHANGELOG.md | 15 +++++++++++++++
gradle.properties | 2 +-
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9690e5191..1654dac69 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,18 @@
+# [4.12.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.16...v4.12.0-dev.17) (2024-08-06)
+
+
+### Bug Fixes
+
+* **Google Photos - GmsCore support:** Fix by checking first if a method exists before trying to patch it ([acf38ca](https://github.com/ReVanced/revanced-patches/commit/acf38cafae5eb9896b43f3a6cbd808ac273cd081))
+* **Messenger - Disable switching emoji to sticker:** Constrain to last working version `439.0.0.29.119` ([6207c31](https://github.com/ReVanced/revanced-patches/commit/6207c314c657a1188d1081b0a196a61e49cad83b))
+
+
+### Features
+
+* **CandyLink:** Remove non-functional `Unlock pro` patch ([7ae9f8f](https://github.com/ReVanced/revanced-patches/commit/7ae9f8fa0a349b91853e9554f18e564ca6ff887c))
+* **Expense Manager:** Remove non-functional `Unlock pro` patch ([ebbcac7](https://github.com/ReVanced/revanced-patches/commit/ebbcac74fd8598daebb4be0bd7c430c41333e2d4))
+* **Instagram:** Remove unnecessary `Hide timeline ads` patch ([5e1d001](https://github.com/ReVanced/revanced-patches/commit/5e1d001056df68e1e2b39f1365215c91bcc9e46b))
+
# [4.12.0-dev.16](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.15...v4.12.0-dev.16) (2024-08-04)
diff --git a/gradle.properties b/gradle.properties
index ef547e83a..94a7e3c44 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
-version = 4.12.0-dev.16
+version = 4.12.0-dev.17