From e5c122d9729fe9fe80414f3f867e063d7bd882ce Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 10 Oct 2024 16:40:46 -0400 Subject: [PATCH 01/51] Add a new debug option to the backup playground. --- .../InternalBackupPlaygroundFragment.kt | 31 ++++++++++- .../InternalBackupPlaygroundViewModel.kt | 52 +++++++++++++++++++ 2 files changed, 81 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundFragment.kt index 69f35ee7d8..7ed8302521 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundFragment.kt @@ -90,6 +90,7 @@ class InternalBackupPlaygroundFragment : ComposeFragment() { private lateinit var exportFileLauncher: ActivityResultLauncher private lateinit var importFileLauncher: ActivityResultLauncher private lateinit var validateFileLauncher: ActivityResultLauncher + private lateinit var savePlaintextcopyLauncher: ActivityResultLauncher override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -124,6 +125,15 @@ class InternalBackupPlaygroundFragment : ComposeFragment() { } ?: Toast.makeText(requireContext(), "No URI selected", Toast.LENGTH_SHORT).show() } } + + savePlaintextcopyLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> + if (result.resultCode == RESULT_OK) { + result.data?.data?.let { uri -> + viewModel.fetchRemoteBackupAndWritePlaintext(requireContext().contentResolver.openOutputStream(uri)) + Toast.makeText(requireContext(), "Check logs for progress.", Toast.LENGTH_SHORT).show() + } ?: Toast.makeText(requireContext(), "No URI selected", Toast.LENGTH_SHORT).show() + } + } } @Composable @@ -188,7 +198,17 @@ class InternalBackupPlaygroundFragment : ComposeFragment() { .show() }, onBackupTierSelected = { tier -> viewModel.onBackupTierSelected(tier) }, - onHaltAllJobs = { viewModel.haltAllJobs() } + onHaltAllJobs = { viewModel.haltAllJobs() }, + onSavePlaintextCopy = { + val intent = Intent().apply { + action = Intent.ACTION_CREATE_DOCUMENT + type = "application/octet-stream" + addCategory(Intent.CATEGORY_OPENABLE) + putExtra(Intent.EXTRA_TITLE, "backup-plaintext-${System.currentTimeMillis()}.binproto") + } + + savePlaintextcopyLauncher.launch(intent) + } ) }, mediaContent = { snackbarHostState -> @@ -283,7 +303,8 @@ fun Screen( onTriggerBackupJobClicked: () -> Unit = {}, onWipeDataAndRestoreClicked: () -> Unit = {}, onBackupTierSelected: (MessageBackupTier?) -> Unit = {}, - onHaltAllJobs: () -> Unit = {} + onHaltAllJobs: () -> Unit = {}, + onSavePlaintextCopy: () -> Unit = {} ) { val scrollState = rememberScrollState() val options = remember { @@ -337,6 +358,12 @@ fun Screen( Text("Halt all backup jobs") } + Buttons.LargeTonal( + onClick = onSavePlaintextCopy + ) { + Text("Save plaintext copy of remote backup") + } + Dividers.Default() Row( diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundViewModel.kt index df69c7ea44..30a9ba3b8f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundViewModel.kt @@ -19,6 +19,10 @@ import io.reactivex.rxjava3.kotlin.plusAssign import io.reactivex.rxjava3.kotlin.subscribeBy import io.reactivex.rxjava3.schedulers.Schedulers import org.signal.core.util.concurrent.SignalExecutors +import org.signal.core.util.copyTo +import org.signal.core.util.logging.Log +import org.signal.core.util.readNBytesOrThrow +import org.signal.core.util.stream.LimitedInputStream import org.signal.libsignal.zkgroup.profiles.ProfileKey import org.thoughtcrime.securesms.attachments.AttachmentId import org.thoughtcrime.securesms.attachments.DatabaseAttachment @@ -30,6 +34,7 @@ import org.thoughtcrime.securesms.backup.v2.local.ArchiveResult import org.thoughtcrime.securesms.backup.v2.local.LocalArchiver import org.thoughtcrime.securesms.backup.v2.local.LocalArchiver.FailureCause import org.thoughtcrime.securesms.backup.v2.local.SnapshotFileSystem +import org.thoughtcrime.securesms.backup.v2.stream.EncryptedBackupReader.Companion.MAC_SIZE import org.thoughtcrime.securesms.database.MessageType import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.dependencies.AppDependencies @@ -45,16 +50,28 @@ import org.thoughtcrime.securesms.jobs.RestoreLocalAttachmentJob import org.thoughtcrime.securesms.jobs.SyncArchivedMediaJob import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.mms.IncomingMessage +import org.thoughtcrime.securesms.providers.BlobProvider import org.thoughtcrime.securesms.recipients.Recipient import org.whispersystems.signalservice.api.NetworkResult import org.whispersystems.signalservice.api.backup.MediaName import java.io.ByteArrayInputStream +import java.io.IOException import java.io.InputStream +import java.io.OutputStream import java.util.UUID +import java.util.zip.GZIPInputStream +import javax.crypto.Cipher +import javax.crypto.CipherInputStream +import javax.crypto.spec.IvParameterSpec +import javax.crypto.spec.SecretKeySpec import kotlin.time.Duration.Companion.seconds class InternalBackupPlaygroundViewModel : ViewModel() { + companion object { + private val TAG = Log.tag(InternalBackupPlaygroundViewModel::class) + } + var backupData: ByteArray? = null val disposables = CompositeDisposable() @@ -520,4 +537,39 @@ class InternalBackupPlaygroundViewModel : ViewModel() { AppDependencies.jobManager.cancelAllInQueue("ArchiveAttachmentJobs_1") AppDependencies.jobManager.cancelAllInQueue("ArchiveThumbnailUploadJob") } + + fun fetchRemoteBackupAndWritePlaintext(outputStream: OutputStream?) { + check(outputStream != null) + + SignalExecutors.BOUNDED_IO.execute { + Log.d(TAG, "Downloading file...") + val tempBackupFile = BlobProvider.getInstance().forNonAutoEncryptingSingleSessionOnDisk(AppDependencies.application) + if (!BackupRepository.downloadBackupFile(tempBackupFile)) { + Log.e(TAG, "Failed to download backup file") + throw IOException() + } + + val encryptedStream = tempBackupFile.inputStream() + val iv = encryptedStream.readNBytesOrThrow(16) + val backupKey = SignalStore.svr.orCreateMasterKey.deriveBackupKey() + val keyMaterial = backupKey.deriveBackupSecrets(Recipient.self().aci.get()) + val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding").apply { + init(Cipher.DECRYPT_MODE, SecretKeySpec(keyMaterial.cipherKey, "AES"), IvParameterSpec(iv)) + } + + val plaintextStream = GZIPInputStream( + CipherInputStream( + LimitedInputStream( + wrapped = encryptedStream, + maxBytes = tempBackupFile.length() - MAC_SIZE + ), + cipher + ) + ) + + Log.d(TAG, "Copying...") + plaintextStream.copyTo(outputStream) + Log.d(TAG, "Done!") + } + } } From c4fc32988c950fbb6df7f4e39bb2073ed7bb3172 Mon Sep 17 00:00:00 2001 From: Michelle Tang Date: Fri, 11 Oct 2024 09:38:53 -0700 Subject: [PATCH 02/51] Release chat folders to internal users. --- .../database/ChatFolderTablesTest.kt | 121 +++++ .../database/ThreadTableTest_active.kt | 11 +- .../database/ThreadTableTest_pinned.kt | 6 +- .../securesms/ContactSelectionActivity.java | 5 +- .../ContactSelectionListFragment.java | 82 +++- .../securesms/InviteActivity.java | 7 +- .../securesms/NewConversationActivity.java | 6 +- .../blocked/BlockedUsersActivity.java | 5 +- .../securesms/calls/new/NewCallActivity.kt | 3 +- .../app/chats/ChatsSettingsFragment.kt | 14 +- .../app/chats/folders/ChatFolderRecord.kt | 46 ++ .../app/chats/folders/ChatFoldersFragment.kt | 330 +++++++++++++ .../chats/folders/ChatFoldersRepository.kt | 43 ++ .../chats/folders/ChatFoldersSettingsState.kt | 19 + .../app/chats/folders/ChatFoldersViewModel.kt | 313 ++++++++++++ .../app/chats/folders/ChooseChatsFragment.kt | 158 ++++++ .../chats/folders/CreateFoldersFragment.kt | 449 ++++++++++++++++++ .../profiles/SelectRecipientsFragment.kt | 5 +- .../contacts/ContactChipViewModel.kt | 39 +- .../securesms/contacts/SelectedContact.java | 28 +- .../securesms/contacts/SelectedContacts.kt | 53 ++- .../securesms/contacts/paged/ChatType.kt | 9 + .../contacts/paged/ContactSearchAdapter.kt | 48 ++ .../paged/ContactSearchConfiguration.kt | 17 + .../contacts/paged/ContactSearchData.kt | 8 + .../contacts/paged/ContactSearchKey.kt | 9 + .../contacts/paged/ContactSearchMediator.kt | 15 + .../paged/ContactSearchPagedDataSource.kt | 19 + .../contacts/paged/ContactSearchRepository.kt | 1 + .../conversationlist/ChatFolderAdapter.kt | 58 +++ .../ChatFolderMappingModel.kt | 17 + .../ConversationListArchiveFragment.java | 3 + .../ConversationListDataSource.java | 72 +-- .../ConversationListFragment.java | 30 +- .../ConversationListItem.java | 8 + .../ConversationListViewModel.kt | 66 ++- .../securesms/database/ChatFolderTables.kt | 321 +++++++++++++ .../securesms/database/DatabaseObserver.java | 12 + .../securesms/database/RecipientTable.kt | 1 + .../securesms/database/RxDatabaseObserver.kt | 7 + .../securesms/database/SignalDatabase.kt | 9 + .../securesms/database/ThreadTable.kt | 157 ++++-- .../helpers/SignalDatabaseMigrations.kt | 6 +- .../migration/V253_CreateChatFolderTables.kt | 47 ++ .../ui/addmembers/AddMembersActivity.java | 6 +- .../ui/addtogroup/AddToGroupsActivity.java | 9 +- .../ui/creategroup/CreateGroupActivity.java | 5 +- .../UserNotificationMigrationJob.java | 2 +- .../PaymentRecipientSelectionFragment.java | 5 +- .../BaseStoryRecipientSelectionFragment.kt | 5 +- .../main/res/drawable/ic_chat_folder_24.xml | 9 + app/src/main/res/drawable/ic_drag_handle.xml | 12 + app/src/main/res/drawable/ic_pin_20.xml | 11 + app/src/main/res/layout/chat_folder_item.xml | 37 ++ .../main/res/layout/choose_chats_fragment.xml | 54 +++ .../layout/contact_search_chat_type_item.xml | 56 +++ .../res/layout/conversation_list_fragment.xml | 12 +- .../layout/conversation_list_item_view.xml | 12 + .../app_settings_with_change_number.xml | 49 ++ app/src/main/res/values/dimens.xml | 2 + app/src/main/res/values/strings.xml | 103 ++++ ...rchivedConversationListDataSourceTest.java | 125 ++--- .../main/java/org/signal/core/ui/Dialogs.kt | 11 +- .../ui/copied/androidx/compose/DragAndDrop.kt | 185 ++++++++ 64 files changed, 3154 insertions(+), 239 deletions(-) create mode 100644 app/src/androidTest/java/org/thoughtcrime/securesms/database/ChatFolderTablesTest.kt create mode 100644 app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord.kt create mode 100644 app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersFragment.kt create mode 100644 app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersRepository.kt create mode 100644 app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersSettingsState.kt create mode 100644 app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersViewModel.kt create mode 100644 app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChooseChatsFragment.kt create mode 100644 app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/CreateFoldersFragment.kt create mode 100644 app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ChatType.kt create mode 100644 app/src/main/java/org/thoughtcrime/securesms/conversationlist/ChatFolderAdapter.kt create mode 100644 app/src/main/java/org/thoughtcrime/securesms/conversationlist/ChatFolderMappingModel.kt create mode 100644 app/src/main/java/org/thoughtcrime/securesms/database/ChatFolderTables.kt create mode 100644 app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V253_CreateChatFolderTables.kt create mode 100644 app/src/main/res/drawable/ic_chat_folder_24.xml create mode 100644 app/src/main/res/drawable/ic_drag_handle.xml create mode 100644 app/src/main/res/drawable/ic_pin_20.xml create mode 100644 app/src/main/res/layout/chat_folder_item.xml create mode 100644 app/src/main/res/layout/choose_chats_fragment.xml create mode 100644 app/src/main/res/layout/contact_search_chat_type_item.xml create mode 100644 core-ui/src/main/java/org/signal/core/ui/copied/androidx/compose/DragAndDrop.kt diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/database/ChatFolderTablesTest.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/database/ChatFolderTablesTest.kt new file mode 100644 index 0000000000..564f612131 --- /dev/null +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/database/ChatFolderTablesTest.kt @@ -0,0 +1,121 @@ +/* + * Copyright 2024 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.thoughtcrime.securesms.database + +import androidx.test.ext.junit.runners.AndroidJUnit4 +import org.junit.Assert.assertEquals +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.signal.core.util.deleteAll +import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFolderRecord +import org.thoughtcrime.securesms.recipients.Recipient +import org.thoughtcrime.securesms.recipients.RecipientId +import org.thoughtcrime.securesms.testing.SignalActivityRule + +@RunWith(AndroidJUnit4::class) +class ChatFolderTablesTest { + + @get:Rule + val harness = SignalActivityRule() + + private lateinit var alice: RecipientId + private lateinit var bob: RecipientId + private lateinit var charlie: RecipientId + + private lateinit var folder1: ChatFolderRecord + private lateinit var folder2: ChatFolderRecord + private lateinit var folder3: ChatFolderRecord + + private var aliceThread: Long = 0 + private var bobThread: Long = 0 + private var charlieThread: Long = 0 + + @Before + fun setUp() { + alice = harness.others[1] + bob = harness.others[2] + charlie = harness.others[3] + + aliceThread = SignalDatabase.threads.getOrCreateThreadIdFor(Recipient.resolved(alice)) + bobThread = SignalDatabase.threads.getOrCreateThreadIdFor(Recipient.resolved(bob)) + charlieThread = SignalDatabase.threads.getOrCreateThreadIdFor(Recipient.resolved(charlie)) + + folder1 = ChatFolderRecord( + id = 2, + name = "folder1", + position = 1, + includedChats = listOf(aliceThread, bobThread), + excludedChats = listOf(charlieThread), + showUnread = true, + showMutedChats = true, + showIndividualChats = true, + folderType = ChatFolderRecord.FolderType.CUSTOM + ) + + folder2 = ChatFolderRecord( + name = "folder2", + includedChats = listOf(bobThread), + showUnread = true, + showMutedChats = true, + showIndividualChats = true, + folderType = ChatFolderRecord.FolderType.INDIVIDUAL + ) + + folder3 = ChatFolderRecord( + name = "folder3", + includedChats = listOf(bobThread), + excludedChats = listOf(aliceThread, charlieThread), + showUnread = true, + showMutedChats = true, + showGroupChats = true, + isMuted = true, + folderType = ChatFolderRecord.FolderType.GROUP + ) + + SignalDatabase.chatFolders.writableDatabase.deleteAll(ChatFolderTables.ChatFolderTable.TABLE_NAME) + SignalDatabase.chatFolders.writableDatabase.deleteAll(ChatFolderTables.ChatFolderMembershipTable.TABLE_NAME) + } + + @Test + fun givenChatFolder_whenIGetFolder_thenIExpectFolderWithChats() { + SignalDatabase.chatFolders.createFolder(folder1) + val actualFolders = SignalDatabase.chatFolders.getChatFolders() + + assertEquals(listOf(folder1), actualFolders) + } + + @Test + fun givenChatFolder_whenIUpdateFolder_thenIExpectUpdatedFolderWithChats() { + SignalDatabase.chatFolders.createFolder(folder2) + val folder = SignalDatabase.chatFolders.getChatFolders().first() + val updatedFolder = folder.copy( + name = "updatedFolder2", + position = 1, + isMuted = true, + includedChats = listOf(aliceThread, charlieThread), + excludedChats = listOf(bobThread) + ) + SignalDatabase.chatFolders.updateFolder(updatedFolder) + + val actualFolder = SignalDatabase.chatFolders.getChatFolders().first() + + assertEquals(updatedFolder, actualFolder) + } + + @Test + fun givenADeletedChatFolder_whenIGetFolders_thenIExpectAListWithoutThatFolder() { + SignalDatabase.chatFolders.createFolder(folder1) + SignalDatabase.chatFolders.createFolder(folder2) + val folders = SignalDatabase.chatFolders.getChatFolders() + SignalDatabase.chatFolders.deleteChatFolder(folders.last()) + + val actualFolders = SignalDatabase.chatFolders.getChatFolders() + + assertEquals(listOf(folder1), actualFolders) + } +} diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/database/ThreadTableTest_active.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/database/ThreadTableTest_active.kt index 0385e39175..d6f938adaa 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/database/ThreadTableTest_active.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/database/ThreadTableTest_active.kt @@ -11,6 +11,7 @@ import org.junit.Assert.assertNotNull import org.junit.Before import org.junit.Rule import org.junit.Test +import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFolderRecord import org.thoughtcrime.securesms.conversationlist.model.ConversationFilter import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.testing.SignalDatabaseRule @@ -25,6 +26,7 @@ class ThreadTableTest_active { val databaseRule = SignalDatabaseRule() private lateinit var recipient: Recipient + private val allChats: ChatFolderRecord = ChatFolderRecord(folderType = ChatFolderRecord.FolderType.ALL) @Before fun setUp() { @@ -41,7 +43,8 @@ class ThreadTableTest_active { ConversationFilter.OFF, false, 0, - 10 + 10, + allChats ).use { threads -> assertEquals(1, threads.count) @@ -63,7 +66,8 @@ class ThreadTableTest_active { ConversationFilter.OFF, false, 0, - 10 + 10, + allChats ).use { threads -> assertEquals(0, threads.count) } @@ -83,7 +87,8 @@ class ThreadTableTest_active { ConversationFilter.OFF, false, 0, - 10 + 10, + allChats ).use { threads -> assertEquals(0, threads.count) } diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/database/ThreadTableTest_pinned.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/database/ThreadTableTest_pinned.kt index 5efcac8834..beee4b74ca 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/database/ThreadTableTest_pinned.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/database/ThreadTableTest_pinned.kt @@ -6,6 +6,7 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.signal.core.util.CursorUtil +import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFolderRecord import org.thoughtcrime.securesms.conversationlist.model.ConversationFilter import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.testing.SignalDatabaseRule @@ -20,6 +21,7 @@ class ThreadTableTest_pinned { val databaseRule = SignalDatabaseRule() private lateinit var recipient: Recipient + private val allChats: ChatFolderRecord = ChatFolderRecord(folderType = ChatFolderRecord.FolderType.ALL) @Before fun setUp() { @@ -52,7 +54,7 @@ class ThreadTableTest_pinned { SignalDatabase.messages.deleteMessage(messageId) // THEN - val unarchivedCount = SignalDatabase.threads.getUnarchivedConversationListCount(ConversationFilter.OFF) + val unarchivedCount = SignalDatabase.threads.getUnarchivedConversationListCount(ConversationFilter.OFF, allChats) assertEquals(1, unarchivedCount) } @@ -67,7 +69,7 @@ class ThreadTableTest_pinned { SignalDatabase.messages.deleteMessage(messageId) // THEN - SignalDatabase.threads.getUnarchivedConversationList(ConversationFilter.OFF, true, 0, 1).use { + SignalDatabase.threads.getUnarchivedConversationList(ConversationFilter.OFF, true, 0, 1, allChats).use { it.moveToFirst() assertEquals(threadId, CursorUtil.requireLong(it, ThreadTable.ID)) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/ContactSelectionActivity.java b/app/src/main/java/org/thoughtcrime/securesms/ContactSelectionActivity.java index b03279c122..676cc05200 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ContactSelectionActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ContactSelectionActivity.java @@ -28,6 +28,7 @@ import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.components.ContactFilterView; import org.thoughtcrime.securesms.contacts.ContactSelectionDisplayMode; +import org.thoughtcrime.securesms.contacts.paged.ChatType; import org.thoughtcrime.securesms.contacts.sync.ContactDiscovery; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme; @@ -127,12 +128,12 @@ public void onRefresh() { } @Override - public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, String number, @NonNull Consumer callback) { + public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, String number, @NonNull Optional chatType, @NonNull Consumer callback) { callback.accept(true); } @Override - public void onContactDeselected(@NonNull Optional recipientId, String number) {} + public void onContactDeselected(@NonNull Optional recipientId, String number, @NonNull Optional chatType) {} @Override public void onBeginScroll() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/ContactSelectionListFragment.java b/app/src/main/java/org/thoughtcrime/securesms/ContactSelectionListFragment.java index 2a9df86a22..1a9978b5ee 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ContactSelectionListFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ContactSelectionListFragment.java @@ -29,7 +29,6 @@ import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; -import android.widget.Button; import android.widget.TextView; import android.widget.Toast; @@ -47,7 +46,6 @@ import androidx.transition.TransitionManager; import com.google.android.material.dialog.MaterialAlertDialogBuilder; -import com.pnikosis.materialishprogress.ProgressWheel; import org.signal.core.util.concurrent.LifecycleDisposable; import org.signal.core.util.concurrent.RxExtensions; @@ -61,6 +59,7 @@ import org.thoughtcrime.securesms.contacts.LetterHeaderDecoration; import org.thoughtcrime.securesms.contacts.SelectedContact; import org.thoughtcrime.securesms.contacts.SelectedContacts; +import org.thoughtcrime.securesms.contacts.paged.ChatType; import org.thoughtcrime.securesms.contacts.paged.ContactSearchAdapter; import org.thoughtcrime.securesms.contacts.paged.ContactSearchConfiguration; import org.thoughtcrime.securesms.contacts.paged.ContactSearchData; @@ -111,16 +110,17 @@ public final class ContactSelectionListFragment extends LoggingFragment { public static final int NO_LIMIT = Integer.MAX_VALUE; - public static final String DISPLAY_MODE = "display_mode"; - public static final String REFRESHABLE = "refreshable"; - public static final String RECENTS = "recents"; - public static final String SELECTION_LIMITS = "selection_limits"; - public static final String CURRENT_SELECTION = "current_selection"; - public static final String HIDE_COUNT = "hide_count"; - public static final String CAN_SELECT_SELF = "can_select_self"; - public static final String DISPLAY_CHIPS = "display_chips"; - public static final String RV_PADDING_BOTTOM = "recycler_view_padding_bottom"; - public static final String RV_CLIP = "recycler_view_clipping"; + public static final String DISPLAY_MODE = "display_mode"; + public static final String REFRESHABLE = "refreshable"; + public static final String RECENTS = "recents"; + public static final String SELECTION_LIMITS = "selection_limits"; + public static final String CURRENT_SELECTION = "current_selection"; + public static final String HIDE_COUNT = "hide_count"; + public static final String CAN_SELECT_SELF = "can_select_self"; + public static final String DISPLAY_CHIPS = "display_chips"; + public static final String RV_PADDING_BOTTOM = "recycler_view_padding_bottom"; + public static final String RV_CLIP = "recycler_view_clipping"; + public static final String INCLUDE_CHAT_TYPES = "include_chat_types"; private ConstraintLayout constraintLayout; private TextView emptyText; @@ -421,6 +421,11 @@ public void onExpandClicked(@NonNull ContactSearchData.Expand expand) { public void onUnknownRecipientClicked(@NonNull View view, @NonNull ContactSearchData.UnknownRecipient unknownRecipient, boolean isSelected) { listClickListener.onItemClick(unknownRecipient.getContactSearchKey()); } + + @Override + public void onChatTypeClicked(@NonNull View view, @NonNull ContactSearchData.ChatTypeRow chatTypeRow, boolean isSelected) { + listClickListener.onItemClick(chatTypeRow.getContactSearchKey()); + } }, (anchorView, data) -> listClickListener.onItemLongClick(anchorView, data.getContactSearchKey()), storyContextMenuCallbacks, @@ -679,6 +684,23 @@ public void onItemClick(ContactSearchKey contact) { return; } + if (selectedContact.hasChatType() && !contactSearchMediator.getSelectedContacts().contains(selectedContact.toContactSearchKey())) { + if (onContactSelectedListener != null) { + onContactSelectedListener.onBeforeContactSelected(true, Optional.empty(), null, Optional.of(selectedContact.getChatType()), allowed -> { + if (allowed) { + markContactSelected(selectedContact); + } + }); + } + return; + } else if (selectedContact.hasChatType()) { + markContactUnselected(selectedContact); + if (onContactSelectedListener != null) { + onContactSelectedListener.onContactDeselected(Optional.ofNullable(selectedContact.getRecipientId()), selectedContact.getNumber(), Optional.of(selectedContact.getChatType())); + } + return; + } + if (!isMulti || !contactSearchMediator.getSelectedContacts().contains(selectedContact.toContactSearchKey())) { if (selectionHardLimitReached()) { if (onSelectionLimitReachedListener != null) { @@ -709,7 +731,7 @@ public void onItemClick(ContactSearchKey contact) { SelectedContact selected = SelectedContact.forUsername(recipient.getId(), username); if (onContactSelectedListener != null) { - onContactSelectedListener.onBeforeContactSelected(true, Optional.of(recipient.getId()), null, allowed -> { + onContactSelectedListener.onBeforeContactSelected(true, Optional.of(recipient.getId()), null, Optional.empty(), allowed -> { if (allowed) { markContactSelected(selected); } @@ -731,6 +753,7 @@ public void onItemClick(ContactSearchKey contact) { isUnknown, Optional.ofNullable(selectedContact.getRecipientId()), selectedContact.getNumber(), + Optional.empty(), allowed -> { if (allowed) { markContactSelected(selectedContact); @@ -744,7 +767,7 @@ public void onItemClick(ContactSearchKey contact) { markContactUnselected(selectedContact); if (onContactSelectedListener != null) { - onContactSelectedListener.onContactDeselected(Optional.ofNullable(selectedContact.getRecipientId()), selectedContact.getNumber()); + onContactSelectedListener.onContactDeselected(Optional.ofNullable(selectedContact.getRecipientId()), selectedContact.getNumber(), Optional.empty()); } } } @@ -770,7 +793,7 @@ private boolean selectionWarningLimitExceeded() { return getChipCount() + currentSelection.size() > selectionLimit.getRecommendedLimit(); } - private void markContactSelected(@NonNull SelectedContact selectedContact) { + public void markContactSelected(@NonNull SelectedContact selectedContact) { contactSearchMediator.setKeysSelected(Collections.singleton(selectedContact.toContactSearchKey())); if (isMulti) { addChipForSelectedContact(selectedContact); @@ -789,7 +812,7 @@ private void markContactUnselected(@NonNull SelectedContact selectedContact) { } } - private void handleSelectedContactsChanged(@NonNull List selectedContacts) { + private void handleSelectedContactsChanged(@NonNull List> selectedContacts) { contactChipAdapter.submitList(new MappingModelList(selectedContacts), this::smoothScrollChipsToEnd); if (selectedContacts.isEmpty()) { @@ -808,15 +831,23 @@ private void handleSelectedContactsChanged(@NonNull List } private void addChipForSelectedContact(@NonNull SelectedContact selectedContact) { - SimpleTask.run(getViewLifecycleOwner().getLifecycle(), - () -> Recipient.resolved(selectedContact.getOrCreateRecipientId(requireContext())), - resolved -> contactChipViewModel.add(selectedContact)); + if (selectedContact.hasChatType()) { + contactChipViewModel.add(selectedContact); + } else { + SimpleTask.run(getViewLifecycleOwner().getLifecycle(), + () -> Recipient.resolved(selectedContact.getOrCreateRecipientId(requireContext())), + resolved -> contactChipViewModel.add(selectedContact)); + } } - private Unit onChipCloseIconClicked(SelectedContacts.Model model) { + private Unit onChipCloseIconClicked(SelectedContacts.Model model) { markContactUnselected(model.getSelectedContact()); if (onContactSelectedListener != null) { - onContactSelectedListener.onContactDeselected(Optional.of(model.getRecipient().getId()), model.getRecipient().getE164().orElse(null)); + if (model instanceof SelectedContacts.ChatTypeModel) { + onContactSelectedListener.onContactDeselected(Optional.empty(), null, Optional.of(model.getSelectedContact().getChatType())); + } else { + onContactSelectedListener.onContactDeselected(Optional.of(((SelectedContacts.RecipientModel) model).getRecipient().getId()), ((SelectedContacts.RecipientModel) model).getRecipient().getE164().orElse(null), Optional.empty()); + } } return Unit.INSTANCE; @@ -870,6 +901,7 @@ private void smoothScrollChipsToEnd() { boolean includeGroupsAfterContacts = flagSet(displayMode, ContactSelectionDisplayMode.FLAG_GROUPS_AFTER_CONTACTS); boolean blocked = flagSet(displayMode, ContactSelectionDisplayMode.FLAG_BLOCK); boolean includeGroupMembers = flagSet(displayMode, ContactSelectionDisplayMode.FLAG_GROUP_MEMBERS); + boolean includeChatTypes = safeArguments().getBoolean(INCLUDE_CHAT_TYPES); boolean hasQuery = !TextUtils.isEmpty(contactSearchState.getQuery()); ContactSearchConfiguration.TransportType transportType = resolveTransportType(includePushContacts, includeSmsContacts); @@ -895,6 +927,10 @@ private void smoothScrollChipsToEnd() { builder.arbitrary(ContactSelectionListAdapter.ArbitraryRepository.ArbitraryRow.FIND_BY_PHONE_NUMBER.getCode()); } + if (includeChatTypes && !hasQuery) { + builder.addSection(new ContactSearchConfiguration.Section.ChatTypes(true, null)); + } + if (transportType != null) { if (!hasQuery && includeRecents) { builder.addSection(new ContactSearchConfiguration.Section.Recents( @@ -1027,9 +1063,9 @@ public interface OnContactSelectedListener { /** * Provides an opportunity to disallow selecting an item. Call the callback with false to disallow, or true to allow it. */ - void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, @Nullable String number, @NonNull Consumer callback); + void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, @Nullable String number, @NonNull Optional chatType, @NonNull Consumer callback); - void onContactDeselected(@NonNull Optional recipientId, @Nullable String number); + void onContactDeselected(@NonNull Optional recipientId, @Nullable String number, @NonNull Optional chatType); void onSelectionChanged(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/InviteActivity.java b/app/src/main/java/org/thoughtcrime/securesms/InviteActivity.java index e249c38eb6..aabdefa56f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/InviteActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/InviteActivity.java @@ -27,15 +27,14 @@ import org.thoughtcrime.securesms.components.ContactFilterView.OnFilterChangedListener; import org.thoughtcrime.securesms.contacts.ContactSelectionDisplayMode; import org.thoughtcrime.securesms.contacts.SelectedContact; +import org.thoughtcrime.securesms.contacts.paged.ChatType; import org.thoughtcrime.securesms.groups.SelectionLimits; -import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.mms.OutgoingMessage; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.sms.MessageSender; import org.thoughtcrime.securesms.util.DynamicNoActionBarInviteTheme; import org.thoughtcrime.securesms.util.DynamicTheme; -import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.ViewUtil; import org.thoughtcrime.securesms.util.task.ProgressDialogAsyncTask; import org.thoughtcrime.securesms.util.text.AfterTextChanged; @@ -131,13 +130,13 @@ private Animation loadAnimation(@AnimRes int animResId) { } @Override - public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, String number, @NonNull Consumer callback) { + public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, String number, @NonNull Optional chatType, @NonNull Consumer callback) { updateSmsButtonText(contactsFragment.getSelectedContacts().size() + 1); callback.accept(true); } @Override - public void onContactDeselected(@NonNull Optional recipientId, String number) { + public void onContactDeselected(@NonNull Optional recipientId, String number, @NonNull Optional chatType) { updateSmsButtonText(contactsFragment.getSelectedContacts().size()); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/NewConversationActivity.java b/app/src/main/java/org/thoughtcrime/securesms/NewConversationActivity.java index 319ca042cf..2dfb02dd8c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/NewConversationActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/NewConversationActivity.java @@ -44,8 +44,8 @@ import org.thoughtcrime.securesms.components.menu.SignalContextMenu; import org.thoughtcrime.securesms.contacts.management.ContactsManagementRepository; import org.thoughtcrime.securesms.contacts.management.ContactsManagementViewModel; +import org.thoughtcrime.securesms.contacts.paged.ChatType; import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey; -import org.thoughtcrime.securesms.contacts.sync.ContactDiscovery; import org.thoughtcrime.securesms.conversation.ConversationIntents; import org.thoughtcrime.securesms.groups.ui.creategroup.CreateGroupActivity; import org.thoughtcrime.securesms.keyvalue.SignalStore; @@ -57,11 +57,9 @@ import org.thoughtcrime.securesms.util.CommunicationActions; import org.thoughtcrime.securesms.util.views.SimpleProgressDialog; -import java.io.IOException; import java.util.List; import java.util.Objects; import java.util.Optional; -import java.util.concurrent.TimeUnit; import java.util.function.Consumer; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -121,7 +119,7 @@ public void onCreate(Bundle bundle, boolean ready) { } @Override - public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, String number, @NonNull Consumer callback) { + public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, String number, @NonNull Optional chatType, @NonNull Consumer callback) { if (recipientId.isPresent()) { launch(Recipient.resolved(recipientId.get())); } else { diff --git a/app/src/main/java/org/thoughtcrime/securesms/blocked/BlockedUsersActivity.java b/app/src/main/java/org/thoughtcrime/securesms/blocked/BlockedUsersActivity.java index ce6489879d..3c5492f053 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/blocked/BlockedUsersActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/blocked/BlockedUsersActivity.java @@ -20,6 +20,7 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.components.ContactFilterView; import org.thoughtcrime.securesms.contacts.ContactSelectionDisplayMode; +import org.thoughtcrime.securesms.contacts.paged.ChatType; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme; @@ -97,7 +98,7 @@ protected void onResume() { } @Override - public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, String number, @NonNull Consumer callback) { + public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, String number, @NonNull Optional chatType, @NonNull Consumer callback) { final String displayName = recipientId.map(id -> Recipient.resolved(id).getDisplayName(this)).orElse(number); AlertDialog confirmationDialog = new MaterialAlertDialogBuilder(this) @@ -126,7 +127,7 @@ public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Opt } @Override - public void onContactDeselected(@NonNull Optional recipientId, String number) { + public void onContactDeselected(@NonNull Optional recipientId, String number, @NonNull Optional chatType) { } diff --git a/app/src/main/java/org/thoughtcrime/securesms/calls/new/NewCallActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/calls/new/NewCallActivity.kt index 860709564c..6cdd69ca95 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/calls/new/NewCallActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/calls/new/NewCallActivity.kt @@ -17,6 +17,7 @@ import org.thoughtcrime.securesms.InviteActivity import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.calls.YouAreAlreadyInACallSnackbar import org.thoughtcrime.securesms.contacts.ContactSelectionDisplayMode +import org.thoughtcrime.securesms.contacts.paged.ChatType import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientId @@ -38,7 +39,7 @@ class NewCallActivity : ContactSelectionActivity(), ContactSelectionListFragment override fun onSelectionChanged() = Unit - override fun onBeforeContactSelected(isFromUnknownSearchKey: Boolean, recipientId: Optional, number: String?, callback: Consumer) { + override fun onBeforeContactSelected(isFromUnknownSearchKey: Boolean, recipientId: Optional, number: String?, chatType: Optional, callback: Consumer) { if (recipientId.isPresent) { launch(Recipient.resolved(recipientId.get())) } else { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsFragment.kt index d4914134b9..889d7e0a15 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsFragment.kt @@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.components.settings.app.chats import androidx.lifecycle.ViewModelProvider import androidx.navigation.Navigation -import androidx.navigation.fragment.findNavController import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.settings.DSLConfiguration import org.thoughtcrime.securesms.components.settings.DSLSettingsFragment @@ -61,6 +60,19 @@ class ChatsSettingsFragment : DSLSettingsFragment(R.string.preferences_chats__ch dividerPref() + if (RemoteConfig.internalUser) { + sectionHeaderPref(R.string.ChatsSettingsFragment__chat_folders) + + clickPref( + title = DSLSettingsText.from(R.string.ChatsSettingsFragment__add_chat_folder), + onClick = { + Navigation.findNavController(requireView()).safeNavigate(R.id.action_chatsSettingsFragment_to_chatFoldersFragment) + } + ) + + dividerPref() + } + sectionHeaderPref(R.string.ChatsSettingsFragment__keyboard) switchPref( diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord.kt new file mode 100644 index 0000000000..bb55279fa6 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord.kt @@ -0,0 +1,46 @@ +package org.thoughtcrime.securesms.components.settings.app.chats.folders + +import org.thoughtcrime.securesms.recipients.Recipient + +/** + * Represents an entry in the [org.thoughtcrime.securesms.database.ChatFolderTables]. + */ +data class ChatFolderRecord( + val id: Long = -1, + val name: String = "", + val position: Int = -1, + val includedChats: List = emptyList(), + val excludedChats: List = emptyList(), + val includedRecipients: Set = emptySet(), + val excludedRecipients: Set = emptySet(), + val showUnread: Boolean = false, + val showMutedChats: Boolean = false, + val showIndividualChats: Boolean = false, + val showGroupChats: Boolean = false, + val isMuted: Boolean = false, + val folderType: FolderType = FolderType.CUSTOM, + val unreadCount: Int = 0 // TODO [michelle]: unread count +) { + enum class FolderType(val value: Int) { + /** Folder containing all chats */ + ALL(0), + + /** Folder containing all 1:1 chats */ + INDIVIDUAL(1), + + /** Folder containing group chats */ + GROUP(2), + + /** Folder containing unread chats. */ + UNREAD(3), + + /** Folder containing custom chosen chats */ + CUSTOM(4); + + companion object { + fun deserialize(value: Int): FolderType { + return entries.firstOrNull { it.value == value } ?: CUSTOM + } + } + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersFragment.kt new file mode 100644 index 0000000000..c6079035ab --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersFragment.kt @@ -0,0 +1,330 @@ +package org.thoughtcrime.securesms.components.settings.app.chats.folders + +import android.widget.Toast +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.defaultMinSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.res.dimensionResource +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.pluralStringResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.res.vectorResource +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import androidx.fragment.app.activityViewModels +import androidx.navigation.NavController +import androidx.navigation.fragment.findNavController +import org.signal.core.ui.Buttons +import org.signal.core.ui.Dividers +import org.signal.core.ui.Previews +import org.signal.core.ui.Scaffolds +import org.signal.core.ui.SignalPreview +import org.signal.core.ui.copied.androidx.compose.DraggableItem +import org.signal.core.ui.copied.androidx.compose.dragContainer +import org.signal.core.ui.copied.androidx.compose.rememberDragDropState +import org.signal.core.util.toInt +import org.thoughtcrime.securesms.R +import org.thoughtcrime.securesms.compose.ComposeFragment +import org.thoughtcrime.securesms.util.navigation.safeNavigate + +/** + * Fragment that displays current and suggested chat folders + */ +class ChatFoldersFragment : ComposeFragment() { + + private val viewModel: ChatFoldersViewModel by activityViewModels() + + @Composable + override fun FragmentContent() { + val state by viewModel.state.collectAsState() + val navController: NavController by remember { mutableStateOf(findNavController()) } + viewModel.loadCurrentFolders(requireContext()) + + Scaffolds.Settings( + title = stringResource(id = R.string.ChatsSettingsFragment__chat_folders), + onNavigationClick = { navController.popBackStack() }, + navigationIconPainter = painterResource(id = R.drawable.ic_arrow_left_24), + navigationContentDescription = stringResource(id = R.string.Material3SearchToolbar__close) + ) { contentPadding: PaddingValues -> + FoldersScreen( + state = state, + modifier = Modifier.padding(contentPadding), + onFolderClicked = { + viewModel.setCurrentFolder(it) + navController.safeNavigate(R.id.action_chatFoldersFragment_to_createFoldersFragment) + }, + onAdd = { folder -> + Toast.makeText(requireContext(), getString(R.string.ChatFoldersFragment__folder_added, folder.name), Toast.LENGTH_SHORT).show() + viewModel.createFolder(requireContext(), folder) + }, + onPositionUpdated = { fromIndex, toIndex -> viewModel.updatePosition(fromIndex, toIndex) } + ) + } + } +} + +@Composable +fun FoldersScreen( + state: ChatFoldersSettingsState, + modifier: Modifier = Modifier, + onFolderClicked: (ChatFolderRecord) -> Unit = {}, + onAdd: (ChatFolderRecord) -> Unit = {}, + onPositionUpdated: (Int, Int) -> Unit = { _, _ -> } +) { + val listState = rememberLazyListState() + val dragDropState = + rememberDragDropState(listState) { fromIndex, toIndex -> + onPositionUpdated(fromIndex, toIndex) + } + + Column(modifier = modifier.verticalScroll(rememberScrollState())) { + Column(modifier = Modifier.padding(start = 24.dp)) { + Text( + text = stringResource(id = R.string.ChatFoldersFragment__organize_your_chats), + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant, + modifier = Modifier.padding(top = 12.dp, bottom = 12.dp, end = 12.dp) + ) + Text( + text = stringResource(id = R.string.ChatFoldersFragment__folders), + style = MaterialTheme.typography.titleMedium, + modifier = Modifier.padding(top = 16.dp, bottom = 12.dp) + ) + FolderRow( + icon = R.drawable.symbol_plus_compact_16, + title = stringResource(R.string.ChatFoldersFragment__create_a_folder), + onClick = { onFolderClicked(ChatFolderRecord()) } + ) + } + + val columnHeight = dimensionResource(id = R.dimen.chat_folder_row_height).value * state.folders.size + LazyColumn( + modifier = Modifier + .height(columnHeight.dp) + .dragContainer(dragDropState), + state = listState + ) { + itemsIndexed(state.folders) { index, folder -> + DraggableItem(dragDropState, index) { isDragging -> + val elevation = if (isDragging) 1.dp else 0.dp + val isAllChats = folder.folderType == ChatFolderRecord.FolderType.ALL + FolderRow( + icon = R.drawable.ic_chat_folder_24, + title = if (isAllChats) stringResource(R.string.ChatFoldersFragment__all_chats) else folder.name, + subtitle = getFolderDescription(folder), + onClick = if (!isAllChats) { + { onFolderClicked(folder) } + } else null, + elevation = elevation, + showDragHandle = true, + modifier = Modifier.padding(start = 12.dp) + ) + } + } + } + + if (state.suggestedFolders.isNotEmpty()) { + Dividers.Default() + + Text( + text = stringResource(id = R.string.ChatFoldersFragment__suggested_folders), + style = MaterialTheme.typography.titleMedium, + modifier = Modifier.padding(top = 16.dp, bottom = 12.dp, start = 24.dp) + ) + } + + state.suggestedFolders.forEach { chatFolder -> + when (chatFolder.folderType) { + ChatFolderRecord.FolderType.UNREAD -> { + val title: String = stringResource(R.string.ChatFoldersFragment__unreads) + FolderRow( + icon = R.drawable.symbol_chat_badge_24, + title = title, + subtitle = stringResource(R.string.ChatFoldersFragment__unread_messages), + onAdd = { onAdd(chatFolder) }, + modifier = Modifier.padding(start = 12.dp) + ) + } + ChatFolderRecord.FolderType.INDIVIDUAL -> { + val title: String = stringResource(R.string.ChatFoldersFragment__one_on_one_chats) + FolderRow( + icon = R.drawable.symbol_person_light_24, + title = title, + subtitle = stringResource(R.string.ChatFoldersFragment__only_direct_messages), + onAdd = { onAdd(chatFolder) }, + modifier = Modifier.padding(start = 12.dp) + ) + } + ChatFolderRecord.FolderType.GROUP -> { + val title: String = stringResource(R.string.ChatFoldersFragment__groups) + FolderRow( + icon = R.drawable.symbol_group_light_20, + title = title, + subtitle = stringResource(R.string.ChatFoldersFragment__only_group_messages), + onAdd = { onAdd(chatFolder) }, + modifier = Modifier.padding(start = 12.dp) + ) + } + ChatFolderRecord.FolderType.ALL -> { + throw IllegalStateException("All chats should not be suggested") + } + ChatFolderRecord.FolderType.CUSTOM -> { + throw IllegalStateException("Custom folders should not be suggested") + } + } + } + } +} + +@Composable +private fun getFolderDescription(folder: ChatFolderRecord): String { + val chatTypeCount = folder.showIndividualChats.toInt() + folder.showGroupChats.toInt() + val chatTypes = pluralStringResource(id = R.plurals.ChatFoldersFragment__d_chat_types, count = chatTypeCount, chatTypeCount) + val includedChats = pluralStringResource(id = R.plurals.ChatFoldersFragment__d_chats, count = folder.includedChats.size, folder.includedChats.size) + val excludedChats = pluralStringResource(id = R.plurals.ChatFoldersFragment__d_chats_excluded, count = folder.excludedChats.size, folder.excludedChats.size) + + return remember(chatTypeCount, folder.includedChats.size, folder.excludedChats.size) { + val description = mutableListOf() + if (chatTypeCount != 0) { + description.add(chatTypes) + } + if (folder.includedChats.isNotEmpty()) { + description.add(includedChats) + } + if (folder.excludedChats.isNotEmpty()) { + description.add(excludedChats) + } + description.joinToString(separator = ", ") + } +} + +@Composable +fun FolderRow( + modifier: Modifier = Modifier, + icon: Int, + title: String, + subtitle: String = "", + onClick: (() -> Unit)? = null, + onAdd: (() -> Unit)? = null, + elevation: Dp = 0.dp, + showDragHandle: Boolean = false +) { + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = if (onClick != null) { + modifier + .padding(end = 12.dp) + .clickable(onClick = onClick) + .fillMaxWidth() + .defaultMinSize(minHeight = dimensionResource(id = R.dimen.chat_folder_row_height)) + .shadow(elevation = elevation) + } else { + modifier + .padding(end = 12.dp) + .fillMaxWidth() + .defaultMinSize(minHeight = dimensionResource(id = R.dimen.chat_folder_row_height)) + .shadow(elevation = elevation) + } + ) { + Image( + colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onSurface), + imageVector = ImageVector.vectorResource(id = icon), + contentDescription = null, + modifier = modifier + .size(40.dp) + .background(color = MaterialTheme.colorScheme.surfaceVariant, shape = CircleShape) + .padding(8.dp) + ) + Column( + modifier = Modifier + .padding(start = 12.dp) + .weight(1f) + ) { + Text(text = title) + if (subtitle.isNotEmpty()) { + Text( + text = subtitle, + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + } + } + + if (onAdd != null) { + Buttons.Small(onClick = onAdd, modifier = modifier.padding(end = 12.dp)) { + Text(stringResource(id = R.string.ChatFoldersFragment__add)) + } + } else if (showDragHandle) { + Icon( + painter = painterResource(id = R.drawable.ic_drag_handle), + contentDescription = null, + modifier = modifier.padding(end = 12.dp), + tint = MaterialTheme.colorScheme.onSurfaceVariant + ) + } + } +} + +@SignalPreview +@Composable +private fun ChatFolderPreview() { + val previewFolders = listOf( + ChatFolderRecord( + id = 1, + name = "Work", + position = 1, + showUnread = true, + showIndividualChats = true, + showGroupChats = true, + showMutedChats = true, + isMuted = false, + folderType = ChatFolderRecord.FolderType.CUSTOM + ), + ChatFolderRecord( + id = 2, + name = "Fun People", + position = 2, + showUnread = true, + showIndividualChats = true, + showGroupChats = false, + showMutedChats = false, + isMuted = false, + folderType = ChatFolderRecord.FolderType.CUSTOM + ) + ) + + Previews.Preview { + FoldersScreen( + ChatFoldersSettingsState( + folders = previewFolders + ) + ) + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersRepository.kt new file mode 100644 index 0000000000..54d65b7673 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersRepository.kt @@ -0,0 +1,43 @@ +package org.thoughtcrime.securesms.components.settings.app.chats.folders + +import org.thoughtcrime.securesms.database.SignalDatabase + +/** + * Repository for chat folders that handles creation, deletion, listing, etc., + */ +object ChatFoldersRepository { + + fun getCurrentFolders(includeUnreadCount: Boolean = false): List { + return SignalDatabase.chatFolders.getChatFolders(includeUnreadCount) + } + + fun createFolder(folder: ChatFolderRecord) { + val includedChats = folder.includedRecipients.map { recipient -> SignalDatabase.threads.getOrCreateThreadIdFor(recipient) } + val excludedChats = folder.excludedRecipients.map { recipient -> SignalDatabase.threads.getOrCreateThreadIdFor(recipient) } + val updatedFolder = folder.copy( + includedChats = includedChats, + excludedChats = excludedChats + ) + + SignalDatabase.chatFolders.createFolder(updatedFolder) + } + + fun updateFolder(folder: ChatFolderRecord) { + val includedChats = folder.includedRecipients.map { recipient -> SignalDatabase.threads.getOrCreateThreadIdFor(recipient) } + val excludedChats = folder.excludedRecipients.map { recipient -> SignalDatabase.threads.getOrCreateThreadIdFor(recipient) } + val updatedFolder = folder.copy( + includedChats = includedChats, + excludedChats = excludedChats + ) + + SignalDatabase.chatFolders.updateFolder(updatedFolder) + } + + fun deleteFolder(folder: ChatFolderRecord) { + SignalDatabase.chatFolders.deleteChatFolder(folder) + } + + fun updatePositions(folders: List) { + SignalDatabase.chatFolders.updatePositions(folders) + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersSettingsState.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersSettingsState.kt new file mode 100644 index 0000000000..07a48338cb --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersSettingsState.kt @@ -0,0 +1,19 @@ +package org.thoughtcrime.securesms.components.settings.app.chats.folders + +import org.thoughtcrime.securesms.contacts.paged.ChatType +import org.thoughtcrime.securesms.recipients.RecipientId + +/** + * Information about chat folders. Used in [ChatFoldersViewModel]. + */ +data class ChatFoldersSettingsState( + val folders: List = emptyList(), + val suggestedFolders: List = emptyList(), + val originalFolder: ChatFolderRecord = ChatFolderRecord(), + val currentFolder: ChatFolderRecord = ChatFolderRecord(), + val showDeleteDialog: Boolean = false, + val showConfirmationDialog: Boolean = false, + val pendingIncludedRecipients: Set = emptySet(), + val pendingExcludedRecipients: Set = emptySet(), + val pendingChatTypes: Set = emptySet() +) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersViewModel.kt new file mode 100644 index 0000000000..fe85436910 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersViewModel.kt @@ -0,0 +1,313 @@ +package org.thoughtcrime.securesms.components.settings.app.chats.folders + +import android.content.Context +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.update +import kotlinx.coroutines.launch +import org.thoughtcrime.securesms.R +import org.thoughtcrime.securesms.contacts.paged.ChatType +import org.thoughtcrime.securesms.database.SignalDatabase +import org.thoughtcrime.securesms.recipients.Recipient +import org.thoughtcrime.securesms.recipients.RecipientId + +/** + * Maintains the state of the [ChatFoldersFragment] and [CreateFoldersFragment] + */ +class ChatFoldersViewModel : ViewModel() { + + private val internalState = MutableStateFlow(ChatFoldersSettingsState()) + val state = internalState.asStateFlow() + + fun loadCurrentFolders(context: Context) { + viewModelScope.launch(Dispatchers.IO) { + val folders = ChatFoldersRepository.getCurrentFolders(includeUnreadCount = false) + val suggestedFolders = getSuggestedFolders(context, folders) + + internalState.update { + it.copy(folders = folders, suggestedFolders = suggestedFolders) + } + } + } + + private fun getSuggestedFolders(context: Context, currentFolders: List): List { + var showIndividualSuggestion = true + var showGroupSuggestion = true + var showUnreadSuggestion = true + + currentFolders + .filter { folder -> folder.includedChats.isEmpty() && folder.excludedChats.isEmpty() } + .forEach { folder -> + if (folder.showIndividualChats && !folder.showGroupChats) { + showIndividualSuggestion = false + } else if (folder.showGroupChats && !folder.showIndividualChats) { + showGroupSuggestion = false + } else if (folder.showUnread && folder.showIndividualChats && folder.showGroupChats) { + showUnreadSuggestion = false + } + } + + val suggestions: MutableList = mutableListOf() + if (showIndividualSuggestion) { + suggestions.add( + ChatFolderRecord( + name = context.getString(R.string.ChatFoldersFragment__one_on_one_chats), + showIndividualChats = true, + folderType = ChatFolderRecord.FolderType.INDIVIDUAL, + showMutedChats = true + ) + ) + } + if (showGroupSuggestion) { + suggestions.add( + ChatFolderRecord( + name = context.getString(R.string.ChatFoldersFragment__groups), + showGroupChats = true, + folderType = ChatFolderRecord.FolderType.GROUP, + showMutedChats = true + ) + ) + } + if (showUnreadSuggestion) { + suggestions.add( + ChatFolderRecord( + name = context.getString(R.string.ChatFoldersFragment__unreads), + showUnread = true, + showIndividualChats = true, + showGroupChats = true, + showMutedChats = true, + folderType = ChatFolderRecord.FolderType.UNREAD + ) + ) + } + return suggestions + } + + fun setCurrentFolder(folder: ChatFolderRecord) { + viewModelScope.launch(Dispatchers.IO) { + val includedRecipients = folder.includedChats.mapNotNull { threadId -> + SignalDatabase.threads.getRecipientForThreadId(threadId) + } + val excludedRecipients = folder.excludedChats.mapNotNull { threadId -> + SignalDatabase.threads.getRecipientForThreadId(threadId) + } + + val updatedFolder = folder.copy( + includedRecipients = includedRecipients.toSet(), + excludedRecipients = excludedRecipients.toSet() + ) + + internalState.update { + it.copy(originalFolder = updatedFolder, currentFolder = updatedFolder) + } + } + } + + fun updateName(name: String) { + val updatedFolder = internalState.value.currentFolder.copy( + name = name.substring(0, minOf(name.length, 32)) + ) + + internalState.update { + it.copy(currentFolder = updatedFolder) + } + } + + fun toggleShowUnread(showUnread: Boolean) { + val updatedFolder = internalState.value.currentFolder.copy( + showUnread = showUnread + ) + + internalState.update { + it.copy(currentFolder = updatedFolder) + } + } + + fun toggleShowMutedChats(showMuted: Boolean) { + val updatedFolder = internalState.value.currentFolder.copy( + showMutedChats = showMuted + ) + + internalState.update { + it.copy(currentFolder = updatedFolder) + } + } + + fun showDeleteDialog(show: Boolean) { + internalState.update { + it.copy(showDeleteDialog = show) + } + } + + fun deleteFolder() { + viewModelScope.launch(Dispatchers.IO) { + ChatFoldersRepository.deleteFolder(internalState.value.originalFolder) + + internalState.update { + it.copy(showDeleteDialog = false) + } + } + } + + fun showConfirmationDialog(show: Boolean) { + internalState.update { + it.copy(showConfirmationDialog = show) + } + } + + fun createFolder(context: Context, folder: ChatFolderRecord? = null) { + viewModelScope.launch(Dispatchers.IO) { + val currentFolder = folder ?: internalState.value.currentFolder + ChatFoldersRepository.createFolder(currentFolder) + loadCurrentFolders(context) + + internalState.update { + it.copy(showConfirmationDialog = false) + } + } + } + + fun updatePosition(fromIndex: Int, toIndex: Int) { + viewModelScope.launch(Dispatchers.IO) { + val folders = state.value.folders.toMutableList().apply { add(toIndex, removeAt(fromIndex)) } + val updatedFolders = folders.mapIndexed { index, chatFolderRecord -> + chatFolderRecord.copy(position = index) + } + ChatFoldersRepository.updatePositions(updatedFolders) + + internalState.update { + it.copy(folders = updatedFolders) + } + } + } + + fun updateFolder(context: Context) { + viewModelScope.launch(Dispatchers.IO) { + ChatFoldersRepository.updateFolder(internalState.value.currentFolder) + loadCurrentFolders(context) + + internalState.update { + it.copy(showConfirmationDialog = false) + } + } + } + + fun setPendingChats() { + viewModelScope.launch(Dispatchers.IO) { + val currentFolder = internalState.value.currentFolder + val includedChats = currentFolder.includedRecipients.map { recipient -> recipient.id }.toMutableSet() + val excludedChats = currentFolder.excludedRecipients.map { recipient -> recipient.id }.toMutableSet() + + val chatTypes: MutableSet = mutableSetOf() + if (currentFolder.showIndividualChats) { + chatTypes.add(ChatType.INDIVIDUAL) + } + if (currentFolder.showGroupChats) { + chatTypes.add(ChatType.GROUPS) + } + + internalState.update { + it.copy( + pendingIncludedRecipients = includedChats, + pendingExcludedRecipients = excludedChats, + pendingChatTypes = chatTypes + ) + } + } + } + + fun addIncludedChat(recipientId: RecipientId) { + val includedChats = internalState.value.pendingIncludedRecipients.plus(recipientId) + internalState.update { + it.copy(pendingIncludedRecipients = includedChats) + } + } + + fun addExcludedChat(recipientId: RecipientId) { + val excludedChats = internalState.value.pendingExcludedRecipients.plus(recipientId) + internalState.update { + it.copy(pendingExcludedRecipients = excludedChats) + } + } + + fun removeIncludedChat(recipientId: RecipientId) { + val includedChats = internalState.value.pendingIncludedRecipients.minus(recipientId) + internalState.update { + it.copy(pendingIncludedRecipients = includedChats) + } + } + + fun removeExcludedChat(recipientId: RecipientId) { + val excludedChats = internalState.value.pendingExcludedRecipients.minus(recipientId) + internalState.update { + it.copy(pendingExcludedRecipients = excludedChats) + } + } + + fun addChatType(chatType: ChatType) { + val updatedChatTypes = internalState.value.pendingChatTypes.plus(chatType) + internalState.update { + it.copy( + pendingChatTypes = updatedChatTypes + ) + } + } + + fun removeChatType(chatType: ChatType) { + val updatedChatTypes = internalState.value.pendingChatTypes.minus(chatType) + internalState.update { + it.copy( + pendingChatTypes = updatedChatTypes + ) + } + } + + fun savePendingChats() { + viewModelScope.launch(Dispatchers.IO) { + val updatedFolder = internalState.value.currentFolder + val includedChatIds = internalState.value.pendingIncludedRecipients + val excludedChatIds = internalState.value.pendingExcludedRecipients + val showIndividualChats = internalState.value.pendingChatTypes.contains(ChatType.INDIVIDUAL) + val showGroupChats = internalState.value.pendingChatTypes.contains(ChatType.GROUPS) + + val includedRecipients = includedChatIds.map(Recipient::resolved).toSet() + val excludedRecipients = excludedChatIds.map(Recipient::resolved).toSet() + + internalState.update { + it.copy( + currentFolder = updatedFolder.copy( + includedRecipients = includedRecipients, + excludedRecipients = excludedRecipients, + showIndividualChats = showIndividualChats, + showGroupChats = showGroupChats + ), + pendingIncludedRecipients = emptySet(), + pendingExcludedRecipients = emptySet() + ) + } + } + } + + fun enableButton(): Boolean { + return internalState.value.pendingIncludedRecipients.isNotEmpty() || + internalState.value.pendingChatTypes.isNotEmpty() || + internalState.value.pendingExcludedRecipients.isNotEmpty() + } + + fun hasChanges(): Boolean { + val currentFolder = state.value.currentFolder + val originalFolder = state.value.originalFolder + + return if (currentFolder.id == -1L) { + currentFolder.name.isNotEmpty() && + (currentFolder.includedRecipients.isNotEmpty() || currentFolder.showIndividualChats || currentFolder.showGroupChats) + } else { + originalFolder != currentFolder || + originalFolder.includedRecipients != currentFolder.includedRecipients || + originalFolder.excludedRecipients != currentFolder.excludedRecipients + } + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChooseChatsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChooseChatsFragment.kt new file mode 100644 index 0000000000..cf4ccde1c2 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChooseChatsFragment.kt @@ -0,0 +1,158 @@ +package org.thoughtcrime.securesms.components.settings.app.chats.folders + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.widget.Toolbar +import androidx.fragment.app.activityViewModels +import androidx.navigation.fragment.findNavController +import com.google.android.material.button.MaterialButton +import org.signal.core.util.logging.Log +import org.thoughtcrime.securesms.ContactSelectionListFragment +import org.thoughtcrime.securesms.LoggingFragment +import org.thoughtcrime.securesms.R +import org.thoughtcrime.securesms.components.ContactFilterView +import org.thoughtcrime.securesms.contacts.ContactSelectionDisplayMode +import org.thoughtcrime.securesms.contacts.SelectedContact +import org.thoughtcrime.securesms.contacts.paged.ChatType +import org.thoughtcrime.securesms.groups.SelectionLimits +import org.thoughtcrime.securesms.recipients.RecipientId +import org.thoughtcrime.securesms.util.ViewUtil +import java.util.Optional +import java.util.function.Consumer + +class ChooseChatsFragment : LoggingFragment(), ContactSelectionListFragment.OnContactSelectedListener { + + private val viewModel: ChatFoldersViewModel by activityViewModels() + + private var includeChatsMode: Boolean = true + + private lateinit var contactFilterView: ContactFilterView + private lateinit var doneButton: MaterialButton + private lateinit var selectionFragment: ContactSelectionListFragment + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + includeChatsMode = arguments?.getBoolean(KEY_INCLUDE_CHATS) ?: true + val currentSelection: Set = if (includeChatsMode) { + viewModel.state.value.pendingExcludedRecipients + } else { + viewModel.state.value.pendingIncludedRecipients + } + + childFragmentManager.addFragmentOnAttachListener { _, fragment -> + fragment.arguments = Bundle().apply { + putInt(ContactSelectionListFragment.DISPLAY_MODE, getDefaultDisplayMode()) + putBoolean(ContactSelectionListFragment.REFRESHABLE, false) + putBoolean(ContactSelectionListFragment.RECENTS, true) + putParcelable(ContactSelectionListFragment.SELECTION_LIMITS, SelectionLimits.NO_LIMITS) + putParcelableArrayList(ContactSelectionListFragment.CURRENT_SELECTION, ArrayList(currentSelection)) + putBoolean(ContactSelectionListFragment.INCLUDE_CHAT_TYPES, includeChatsMode) + putBoolean(ContactSelectionListFragment.HIDE_COUNT, true) + putBoolean(ContactSelectionListFragment.DISPLAY_CHIPS, true) + putBoolean(ContactSelectionListFragment.CAN_SELECT_SELF, true) + putBoolean(ContactSelectionListFragment.RV_CLIP, false) + putInt(ContactSelectionListFragment.RV_PADDING_BOTTOM, ViewUtil.dpToPx(60)) + } + } + + return inflater.inflate(R.layout.choose_chats_fragment, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + val toolbar: Toolbar = view.findViewById(R.id.toolbar) + + if (includeChatsMode) { + toolbar.setTitle(R.string.CreateFoldersFragment__included_chats) + } else { + toolbar.setTitle(R.string.CreateFoldersFragment__exceptions) + } + toolbar.setNavigationOnClickListener { findNavController().popBackStack() } + + selectionFragment = childFragmentManager.findFragmentById(R.id.contact_selection_list) as ContactSelectionListFragment + contactFilterView = view.findViewById(R.id.contact_filter_edit_text) + contactFilterView.setOnFilterChangedListener { + if (it.isNullOrEmpty()) { + selectionFragment.resetQueryFilter() + } else { + selectionFragment.setQueryFilter(it) + } + } + + doneButton = view.findViewById(R.id.done_button) + doneButton.setOnClickListener { + viewModel.savePendingChats() + findNavController().popBackStack() + } + updateEnabledButton() + } + + override fun onStart() { + super.onStart() + + if (includeChatsMode && viewModel.state.value.pendingChatTypes.contains(ChatType.INDIVIDUAL)) { + selectionFragment.markContactSelected(SelectedContact.forChatType(ChatType.INDIVIDUAL)) + } + if (includeChatsMode && viewModel.state.value.pendingChatTypes.contains(ChatType.GROUPS)) { + selectionFragment.markContactSelected(SelectedContact.forChatType(ChatType.GROUPS)) + } + + val activeSelection: Set = if (includeChatsMode) { + viewModel.state.value.pendingIncludedRecipients + } else { + viewModel.state.value.pendingExcludedRecipients + } + + selectionFragment.markSelected(activeSelection) + } + + override fun onBeforeContactSelected(isFromUnknownSearchKey: Boolean, recipientId: Optional, number: String?, chatType: Optional, callback: Consumer) { + if (recipientId.isPresent) { + if (includeChatsMode) { + viewModel.addIncludedChat(recipientId.get()) + } else { + viewModel.addExcludedChat(recipientId.get()) + } + callback.accept(true) + } else if (chatType.isPresent) { + viewModel.addChatType(chatType.get()) + callback.accept(true) + } else { + callback.accept(false) + } + updateEnabledButton() + } + + override fun onContactDeselected(recipientId: Optional, number: String?, chatType: Optional) { + if (recipientId.isPresent) { + if (includeChatsMode) { + viewModel.removeIncludedChat(recipientId.get()) + } else { + viewModel.removeExcludedChat(recipientId.get()) + } + } else if (chatType.isPresent) { + viewModel.removeChatType(chatType.get()) + } + updateEnabledButton() + } + + override fun onSelectionChanged() = Unit + + private fun getDefaultDisplayMode(): Int { + return ContactSelectionDisplayMode.FLAG_PUSH or + ContactSelectionDisplayMode.FLAG_ACTIVE_GROUPS or + ContactSelectionDisplayMode.FLAG_HIDE_NEW or + ContactSelectionDisplayMode.FLAG_GROUPS_AFTER_CONTACTS or + ContactSelectionDisplayMode.FLAG_HIDE_GROUPS_V1 or + ContactSelectionDisplayMode.FLAG_SELF + } + + private fun updateEnabledButton() { + doneButton.isEnabled = viewModel.enableButton() + } + + companion object { + private val TAG = Log.tag(ChooseChatsFragment::class.java) + private val KEY_INCLUDE_CHATS = "include_chats" + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/CreateFoldersFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/CreateFoldersFragment.kt new file mode 100644 index 0000000000..296c22ed71 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/CreateFoldersFragment.kt @@ -0,0 +1,449 @@ +package org.thoughtcrime.securesms.components.settings.app.chats.folders + +import android.os.Bundle +import android.view.View +import androidx.activity.OnBackPressedCallback +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.defaultMinSize +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Person +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalInspectionMode +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import androidx.fragment.app.activityViewModels +import androidx.navigation.NavController +import androidx.navigation.fragment.findNavController +import org.signal.core.ui.Buttons +import org.signal.core.ui.Dialogs +import org.signal.core.ui.Dividers +import org.signal.core.ui.Previews +import org.signal.core.ui.Scaffolds +import org.signal.core.ui.SignalPreview +import org.thoughtcrime.securesms.R +import org.thoughtcrime.securesms.avatar.AvatarImage +import org.thoughtcrime.securesms.compose.ComposeFragment +import org.thoughtcrime.securesms.recipients.Recipient +import org.thoughtcrime.securesms.util.navigation.safeNavigate + +/** + * Fragment that allows user to create, edit, or delete an individual folder + */ +class CreateFoldersFragment : ComposeFragment() { + + private val viewModel: ChatFoldersViewModel by activityViewModels() + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + requireActivity().onBackPressedDispatcher.addCallback( + viewLifecycleOwner, + object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + if (viewModel.hasChanges()) { + viewModel.showConfirmationDialog(true) + } else { + findNavController().popBackStack() + } + } + } + ) + } + + @Composable + override fun FragmentContent() { + val state by viewModel.state.collectAsState() + val navController: NavController by remember { mutableStateOf(findNavController()) } + val focusRequester = remember { FocusRequester() } + val isNewFolder = state.originalFolder.id == -1L + + Scaffolds.Settings( + title = if (isNewFolder) stringResource(id = R.string.CreateFoldersFragment__create_a_folder) else stringResource(id = R.string.CreateFoldersFragment__edit_folder), + onNavigationClick = { + if (viewModel.hasChanges()) { + viewModel.showConfirmationDialog(true) + } else { + navController.popBackStack() + } + }, + navigationIconPainter = painterResource(id = R.drawable.ic_arrow_left_24), + navigationContentDescription = stringResource(id = R.string.Material3SearchToolbar__close) + ) { contentPadding: PaddingValues -> + CreateFolderScreen( + state = state, + focusRequester = focusRequester, + modifier = Modifier.padding(contentPadding), + isNewFolder = isNewFolder, + hasChanges = viewModel.hasChanges(), + onAddChat = { + viewModel.setPendingChats() + navController.safeNavigate(CreateFoldersFragmentDirections.actionCreateFoldersFragmentToChooseChatsFragment(true)) + }, + onRemoveChat = { + viewModel.setPendingChats() + navController.safeNavigate(CreateFoldersFragmentDirections.actionCreateFoldersFragmentToChooseChatsFragment(false)) + }, + onNameChange = { viewModel.updateName(it) }, + onToggleShowUnread = { viewModel.toggleShowUnread(it) }, + onToggleShowMuted = { viewModel.toggleShowMutedChats(it) }, + onDeleteClicked = { viewModel.showDeleteDialog(true) }, + onDeleteConfirmed = { + viewModel.deleteFolder() + navController.popBackStack() + }, + onDeleteDismissed = { + viewModel.showDeleteDialog(false) + }, + onCreateConfirmed = { shouldExit -> + if (isNewFolder) { + viewModel.createFolder(requireContext()) + } else { + viewModel.updateFolder(requireContext()) + } + if (shouldExit) { + navController.popBackStack() + } + }, + onCreateDismissed = { shouldExit -> + viewModel.showConfirmationDialog(false) + if (shouldExit) { + navController.popBackStack() + } + } + ) + } + } +} + +@Composable +fun CreateFolderScreen( + state: ChatFoldersSettingsState, + focusRequester: FocusRequester, + modifier: Modifier = Modifier, + isNewFolder: Boolean = true, + hasChanges: Boolean = false, + onAddChat: () -> Unit = {}, + onRemoveChat: () -> Unit = {}, + onNameChange: (String) -> Unit = {}, + onToggleShowUnread: (Boolean) -> Unit = {}, + onToggleShowMuted: (Boolean) -> Unit = {}, + onDeleteClicked: () -> Unit = {}, + onDeleteConfirmed: () -> Unit = {}, + onDeleteDismissed: () -> Unit = {}, + onCreateConfirmed: (Boolean) -> Unit = {}, + onCreateDismissed: (Boolean) -> Unit = {} +) { + if (state.showDeleteDialog) { + Dialogs.SimpleAlertDialog( + title = "", + body = stringResource(id = R.string.CreateFoldersFragment__delete_this_chat_folder), + confirm = stringResource(id = R.string.delete), + onConfirm = onDeleteConfirmed, + dismiss = stringResource(id = android.R.string.cancel), + onDismiss = onDeleteDismissed + ) + } else if (state.showConfirmationDialog && isNewFolder) { + Dialogs.SimpleAlertDialog( + title = stringResource(id = R.string.CreateFoldersFragment__create_folder_title), + body = stringResource(id = R.string.CreateFoldersFragment__do_you_want_to_create, state.currentFolder.name), + confirm = stringResource(id = R.string.CreateFoldersFragment__create_folder), + onConfirm = { onCreateConfirmed(false) }, + dismiss = stringResource(id = R.string.CreateFoldersFragment__discard), + onDismiss = { onCreateDismissed(true) }, + onDismissRequest = { onCreateDismissed(false) } + ) + } else if (state.showConfirmationDialog) { + Dialogs.SimpleAlertDialog( + title = stringResource(id = R.string.CreateFoldersFragment__save_changes_title), + body = stringResource(id = R.string.CreateFoldersFragment__do_you_want_to_save), + confirm = stringResource(id = R.string.CreateFoldersFragment__save_changes), + onConfirm = { onCreateConfirmed(false) }, + dismiss = stringResource(id = R.string.CreateFoldersFragment__discard), + onDismiss = { onCreateDismissed(true) }, + onDismissRequest = { onCreateDismissed(false) } + ) + } + + Box(modifier = Modifier.fillMaxSize()) { + LazyColumn { + item { + TextField( + value = state.currentFolder.name, + label = { Text(text = stringResource(id = R.string.CreateFoldersFragment__folder_name)) }, + onValueChange = onNameChange, + singleLine = true, + modifier = modifier + .fillMaxWidth() + .focusRequester(focusRequester) + .padding(top = 16.dp, bottom = 12.dp, start = 20.dp, end = 28.dp) + ) + } + + item { + Text( + text = stringResource(id = R.string.CreateFoldersFragment__included_chats), + style = MaterialTheme.typography.titleMedium, + modifier = Modifier.padding(top = 16.dp, bottom = 12.dp, start = 24.dp) + ) + FolderRow( + icon = R.drawable.symbol_plus_compact_16, + title = stringResource(R.string.CreateFoldersFragment__add_chats), + onClick = onAddChat, + modifier = Modifier.padding(start = 12.dp) + ) + + if (state.currentFolder.showIndividualChats) { + FolderRow( + icon = R.drawable.symbol_person_light_24, + title = stringResource(R.string.ChatFoldersFragment__one_on_one_chats), + onClick = onAddChat, + modifier = Modifier.padding(start = 12.dp) + ) + } + + if (state.currentFolder.showGroupChats) { + FolderRow( + icon = R.drawable.symbol_group_light_20, + title = stringResource(R.string.ChatFoldersFragment__groups), + onClick = onAddChat, + modifier = Modifier.padding(start = 12.dp) + ) + } + } + + items(state.currentFolder.includedRecipients.toList()) { recipient -> + ChatRow( + recipient = recipient, + onClick = onAddChat + ) + } + + item { + Text( + text = stringResource(id = R.string.CreateFoldersFragment__choose_chats_you_want), + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant, + modifier = Modifier.padding(top = 12.dp, bottom = 12.dp, start = 24.dp) + ) + } + + item { + Text( + text = stringResource(id = R.string.CreateFoldersFragment__exceptions), + style = MaterialTheme.typography.titleMedium, + modifier = Modifier.padding(top = 24.dp, bottom = 12.dp, end = 12.dp, start = 24.dp) + ) + FolderRow( + icon = R.drawable.symbol_plus_compact_16, + title = stringResource(R.string.CreateFoldersFragment__exclude_chats), + onClick = onRemoveChat, + modifier = Modifier.padding(start = 12.dp) + ) + } + + items(state.currentFolder.excludedRecipients.toList()) { recipient -> + ChatRow( + recipient = recipient, + onClick = onRemoveChat + ) + } + + item { + Text( + text = stringResource(id = R.string.CreateFoldersFragment__choose_chats_you_do_not_want), + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant, + modifier = Modifier.padding(top = 12.dp, bottom = 12.dp, start = 24.dp, end = 12.dp) + ) + } + + item { + Dividers.Default() + ShowUnreadSection(state, onToggleShowUnread) + ShowMutedSection(state, onToggleShowMuted) + + if (!isNewFolder) { + Dividers.Default() + + Text( + text = stringResource(id = R.string.CreateFoldersFragment__delete_folder), + style = MaterialTheme.typography.bodyLarge, + color = MaterialTheme.colorScheme.error, + modifier = Modifier + .clickable { onDeleteClicked() } + .fillMaxWidth() + .padding(start = 24.dp, top = 16.dp, bottom = 32.dp) + ) + } + } + + if (hasChanges) { + item { Spacer(modifier = Modifier.height(60.dp)) } + } + } + + if (hasChanges && isNewFolder) { + Buttons.MediumTonal( + onClick = { onCreateConfirmed(true) }, + modifier = modifier + .align(Alignment.BottomEnd) + .padding(end = 16.dp, bottom = 16.dp) + ) { + Text(text = stringResource(R.string.CreateFoldersFragment__create)) + } + } else if (!isNewFolder) { + Buttons.MediumTonal( + enabled = hasChanges, + onClick = { onCreateConfirmed(true) }, + modifier = modifier + .align(Alignment.BottomEnd) + .padding(end = 16.dp, bottom = 16.dp) + ) { + Text(text = stringResource(R.string.CreateFoldersFragment__save)) + } + } + } +} + +@Composable +private fun ShowUnreadSection(state: ChatFoldersSettingsState, onToggleShowUnread: (Boolean) -> Unit) { + Row( + modifier = Modifier + .padding(horizontal = 24.dp) + .defaultMinSize(minHeight = 92.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Column(modifier = Modifier.weight(1f)) { + Text( + text = stringResource(id = R.string.CreateFoldersFragment__only_show_unread_chats), + style = MaterialTheme.typography.bodyLarge + ) + Text( + text = stringResource(id = R.string.CreateFoldersFragment__when_enabled_only_chats), + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + } + Switch( + checked = state.currentFolder.showUnread, + onCheckedChange = onToggleShowUnread + ) + } +} + +@Composable +private fun ShowMutedSection(state: ChatFoldersSettingsState, onToggleShowMuted: (Boolean) -> Unit) { + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .padding(horizontal = 24.dp) + .defaultMinSize(minHeight = 56.dp) + ) { + Column(modifier = Modifier.weight(1f)) { + Text( + text = stringResource(id = R.string.CreateFoldersFragment__include_muted_chats), + style = MaterialTheme.typography.bodyLarge + ) + } + Switch( + checked = state.currentFolder.showMutedChats, + onCheckedChange = onToggleShowMuted + ) + } +} + +@SignalPreview +@Composable +private fun CreateFolderPreview() { + val previewFolder = ChatFolderRecord(id = 1, name = "WIP") + + Previews.Preview { + CreateFolderScreen( + state = ChatFoldersSettingsState(currentFolder = previewFolder), + focusRequester = FocusRequester(), + isNewFolder = true + ) + } +} + +@SignalPreview +@Composable +private fun EditFolderPreview() { + val previewFolder = ChatFolderRecord(id = 1, name = "Work") + + Previews.Preview { + CreateFolderScreen( + state = ChatFoldersSettingsState(originalFolder = previewFolder), + focusRequester = FocusRequester(), + isNewFolder = false + ) + } +} + +@Composable +fun ChatRow( + recipient: Recipient, + modifier: Modifier = Modifier, + onClick: (() -> Unit) +) { + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = modifier + .clickable(onClick = onClick) + .fillMaxWidth() + .defaultMinSize(minHeight = 64.dp) + ) { + if (LocalInspectionMode.current) { + Icon( + imageVector = Icons.Default.Person, + contentDescription = null, + modifier = Modifier + .padding(start = 24.dp, end = 16.dp) + .size(40.dp) + .background( + color = Color.Red, + shape = CircleShape + ) + ) + } else { + AvatarImage( + recipient = recipient, + modifier = Modifier + .padding(start = 24.dp, end = 16.dp) + .size(40.dp) + ) + } + + Text(text = recipient.getShortDisplayName(LocalContext.current)) + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/SelectRecipientsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/SelectRecipientsFragment.kt index e24b620033..c3bb74bc93 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/SelectRecipientsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/SelectRecipientsFragment.kt @@ -15,6 +15,7 @@ import org.thoughtcrime.securesms.LoggingFragment import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.ContactFilterView import org.thoughtcrime.securesms.contacts.ContactSelectionDisplayMode +import org.thoughtcrime.securesms.contacts.paged.ChatType import org.thoughtcrime.securesms.groups.SelectionLimits import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.util.ViewUtil @@ -106,7 +107,7 @@ class SelectRecipientsFragment : LoggingFragment(), ContactSelectionListFragment ContactSelectionDisplayMode.FLAG_HIDE_GROUPS_V1 } - override fun onBeforeContactSelected(isFromUnknownSearchKey: Boolean, recipientId: Optional, number: String?, callback: Consumer) { + override fun onBeforeContactSelected(isFromUnknownSearchKey: Boolean, recipientId: Optional, number: String?, chatType: Optional, callback: Consumer) { if (recipientId.isPresent) { viewModel.select(recipientId.get()) callback.accept(true) @@ -116,7 +117,7 @@ class SelectRecipientsFragment : LoggingFragment(), ContactSelectionListFragment } } - override fun onContactDeselected(recipientId: Optional, number: String?) { + override fun onContactDeselected(recipientId: Optional, number: String?, chatType: Optional) { if (recipientId.isPresent) { viewModel.deselect(recipientId.get()) updateAddToProfile() diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactChipViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactChipViewModel.kt index 191df68b2b..15ae8b2a8c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactChipViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactChipViewModel.kt @@ -20,9 +20,9 @@ import org.thoughtcrime.securesms.util.rx.RxStore */ class ContactChipViewModel : ViewModel() { - private val store = RxStore(emptyList()) + private val store = RxStore(emptyList>()) - val state: Flowable> = store.stateFlowable + val state: Flowable>> = store.stateFlowable .distinctUntilChanged() .observeOn(AndroidSchedulers.mainThread()) @@ -39,20 +39,27 @@ class ContactChipViewModel : ViewModel() { } fun add(selectedContact: SelectedContact) { - disposables += getOrCreateRecipientId(selectedContact).map { Recipient.resolved(it) }.observeOn(Schedulers.io()).subscribe { recipient -> - store.update { it + SelectedContacts.Model(selectedContact, recipient) } - disposableMap[recipient.id]?.dispose() - disposableMap[recipient.id] = store.update(recipient.live().observable().toFlowable(BackpressureStrategy.LATEST)) { changedRecipient, state -> - val index = state.indexOfFirst { it.selectedContact.matches(selectedContact) } - when { - index == 0 -> { - listOf(SelectedContacts.Model(selectedContact, changedRecipient)) + state.drop(index + 1) - } - index > 0 -> { - state.take(index) + SelectedContacts.Model(selectedContact, changedRecipient) + state.drop(index + 1) - } - else -> { - state + if (selectedContact.hasChatType()) { + store.update { it + SelectedContacts.ChatTypeModel(selectedContact) } + } else { + disposables += getOrCreateRecipientId(selectedContact).map { Recipient.resolved(it) }.observeOn(Schedulers.io()).subscribe { recipient -> + store.update { it + SelectedContacts.RecipientModel(selectedContact, recipient) } + disposableMap[recipient.id]?.dispose() + disposableMap[recipient.id] = store.update(recipient.live().observable().toFlowable(BackpressureStrategy.LATEST)) { changedRecipient, state -> + val index = state.indexOfFirst { it.selectedContact.matches(selectedContact) } + + when { + index == 0 -> { + listOf(SelectedContacts.RecipientModel(selectedContact, changedRecipient)) + state.drop(index + 1) + } + + index > 0 -> { + state.take(index) + SelectedContacts.RecipientModel(selectedContact, changedRecipient) + state.drop(index + 1) + } + + else -> { + state + } } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/SelectedContact.java b/app/src/main/java/org/thoughtcrime/securesms/contacts/SelectedContact.java index 9957082356..c5ff892426 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/SelectedContact.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/SelectedContact.java @@ -5,6 +5,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import org.thoughtcrime.securesms.contacts.paged.ChatType; import org.thoughtcrime.securesms.contacts.paged.ContactSearchConfiguration; import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey; import org.thoughtcrime.securesms.recipients.Recipient; @@ -19,23 +20,29 @@ public final class SelectedContact { private final RecipientId recipientId; private final String number; private final String username; + private final ChatType chatType; public static @NonNull SelectedContact forPhone(@Nullable RecipientId recipientId, @NonNull String number) { - return new SelectedContact(recipientId, number, null); + return new SelectedContact(recipientId, number, null, null); } public static @NonNull SelectedContact forUsername(@Nullable RecipientId recipientId, @NonNull String username) { - return new SelectedContact(recipientId, null, username); + return new SelectedContact(recipientId, null, username, null); + } + + public static @NonNull SelectedContact forChatType(@NonNull ChatType chatType) { + return new SelectedContact(null, null, null, chatType); } public static @NonNull SelectedContact forRecipientId(@NonNull RecipientId recipientId) { - return new SelectedContact(recipientId, null, null); + return new SelectedContact(recipientId, null, null, null); } - private SelectedContact(@Nullable RecipientId recipientId, @Nullable String number, @Nullable String username) { + private SelectedContact(@Nullable RecipientId recipientId, @Nullable String number, @Nullable String username, @Nullable ChatType chatType) { this.recipientId = recipientId; this.number = number; this.username = username; + this.chatType = chatType; } public @NonNull RecipientId getOrCreateRecipientId(@NonNull Context context) { @@ -60,6 +67,14 @@ public boolean hasUsername() { return username != null; } + public boolean hasChatType() { + return chatType != null; + } + + public ChatType getChatType() { + return chatType; + } + public @NonNull ContactSearchKey toContactSearchKey() { if (recipientId != null) { return new ContactSearchKey.RecipientSearchKey(recipientId, false); @@ -67,6 +82,8 @@ public boolean hasUsername() { return new ContactSearchKey.UnknownRecipientKey(ContactSearchConfiguration.SectionKey.PHONE_NUMBER, number); } else if (username != null) { return new ContactSearchKey.UnknownRecipientKey(ContactSearchConfiguration.SectionKey.USERNAME, username); + } else if (chatType != null) { + return new ContactSearchKey.ChatTypeSearchKey(chatType); } else { throw new IllegalStateException("Nothing to map!"); } @@ -86,6 +103,7 @@ public boolean matches(@Nullable SelectedContact other) { } return number != null && number .equals(other.number) || - username != null && username.equals(other.username); + username != null && username.equals(other.username) || + chatType != null && chatType.equals(other.chatType); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/SelectedContacts.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/SelectedContacts.kt index 243b97f7c1..85024b5257 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/SelectedContacts.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/SelectedContacts.kt @@ -1,8 +1,12 @@ package org.thoughtcrime.securesms.contacts +import android.content.res.ColorStateList import android.view.View +import androidx.appcompat.content.res.AppCompatResources +import androidx.core.content.ContextCompat import com.bumptech.glide.Glide import org.thoughtcrime.securesms.R +import org.thoughtcrime.securesms.contacts.paged.ChatType import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.util.adapter.mapping.LayoutFactory import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter @@ -11,25 +15,28 @@ import org.thoughtcrime.securesms.util.adapter.mapping.MappingViewHolder object SelectedContacts { @JvmStatic - fun register(adapter: MappingAdapter, onCloseIconClicked: (Model) -> Unit) { - adapter.registerFactory(Model::class.java, LayoutFactory({ ViewHolder(it, onCloseIconClicked) }, R.layout.contact_selection_list_chip)) + fun register(adapter: MappingAdapter, onCloseIconClicked: (Model<*>) -> Unit) { + adapter.registerFactory(RecipientModel::class.java, LayoutFactory({ RecipientViewHolder(it, onCloseIconClicked) }, R.layout.contact_selection_list_chip)) + adapter.registerFactory(ChatTypeModel::class.java, LayoutFactory({ ChatTypeViewHolder(it, onCloseIconClicked) }, R.layout.contact_selection_list_chip)) } - class Model(val selectedContact: SelectedContact, val recipient: Recipient) : MappingModel { - override fun areItemsTheSame(newItem: Model): Boolean { + sealed class Model(val selectedContact: SelectedContact) : MappingModel + + class RecipientModel(selectedContact: SelectedContact, val recipient: Recipient) : Model(selectedContact = selectedContact) { + override fun areItemsTheSame(newItem: RecipientModel): Boolean { return newItem.selectedContact.matches(selectedContact) && recipient == newItem.recipient } - override fun areContentsTheSame(newItem: Model): Boolean { + override fun areContentsTheSame(newItem: RecipientModel): Boolean { return areItemsTheSame(newItem) && recipient.hasSameContent(newItem.recipient) } } - private class ViewHolder(itemView: View, private val onCloseIconClicked: (Model) -> Unit) : MappingViewHolder(itemView) { + private class RecipientViewHolder(itemView: View, private val onCloseIconClicked: (RecipientModel) -> Unit) : MappingViewHolder(itemView) { private val chip: ContactChip = itemView.findViewById(R.id.contact_chip) - override fun bind(model: Model) { + override fun bind(model: RecipientModel) { chip.text = model.recipient.getShortDisplayName(context) chip.setContact(model.selectedContact) chip.isCloseIconVisible = true @@ -39,4 +46,36 @@ object SelectedContacts { chip.setAvatar(Glide.with(itemView), model.recipient, null) } } + + class ChatTypeModel(selectedContact: SelectedContact) : Model(selectedContact = selectedContact) { + override fun areItemsTheSame(newItem: ChatTypeModel): Boolean { + return newItem.selectedContact.matches(selectedContact) && newItem.selectedContact.chatType == selectedContact.chatType + } + + override fun areContentsTheSame(newItem: ChatTypeModel): Boolean { + return areItemsTheSame(newItem) + } + } + + private class ChatTypeViewHolder(itemView: View, private val onCloseIconClicked: (ChatTypeModel) -> Unit) : MappingViewHolder(itemView) { + + private val chip: ContactChip = itemView.findViewById(R.id.contact_chip) + + override fun bind(model: ChatTypeModel) { + if (model.selectedContact.chatType == ChatType.INDIVIDUAL) { + chip.text = context.getString(R.string.ChatFoldersFragment__one_on_one_chats) + chip.chipIcon = AppCompatResources.getDrawable(context, R.drawable.symbol_person_light_24) + chip.chipIconTint = ColorStateList.valueOf(ContextCompat.getColor(context, R.color.signal_colorOnSurface)) + } else { + chip.text = context.getString(R.string.ChatFoldersFragment__groups) + chip.chipIcon = AppCompatResources.getDrawable(context, R.drawable.symbol_group_light_20) + chip.chipIconTint = ColorStateList.valueOf(ContextCompat.getColor(context, R.color.signal_colorOnSurface)) + } + chip.setContact(model.selectedContact) + chip.isCloseIconVisible = true + chip.setOnCloseIconClickListener { + onCloseIconClicked(model) + } + } + } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ChatType.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ChatType.kt new file mode 100644 index 0000000000..14b3ca536c --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ChatType.kt @@ -0,0 +1,9 @@ +package org.thoughtcrime.securesms.contacts.paged + +/** + * Enum class that represents the different chat types a chat folder can have + */ +enum class ChatType { + INDIVIDUAL, + GROUPS +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter.kt index 193d622fed..23a3bc3022 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter.kt @@ -5,6 +5,7 @@ import android.text.SpannableStringBuilder import android.view.View import android.view.ViewGroup import android.widget.CheckBox +import android.widget.ImageView import android.widget.TextView import androidx.appcompat.widget.AppCompatImageView import androidx.core.content.ContextCompat @@ -57,6 +58,7 @@ open class ContactSearchAdapter( registerKnownRecipientItems(this, fixedContacts, displayOptions, onClickCallbacks::onKnownRecipientClicked, longClickCallbacks::onKnownRecipientLongClick, callButtonClickCallbacks) registerHeaders(this) registerExpands(this, onClickCallbacks::onExpandClicked) + registerChatTypeItems(this, onClickCallbacks::onChatTypeClicked) registerFactory(UnknownRecipientModel::class.java, LayoutFactory({ UnknownRecipientViewHolder(it, onClickCallbacks::onUnknownRecipientClicked, displayOptions.displayCheckBox) }, R.layout.contact_search_unknown_item)) } @@ -117,6 +119,13 @@ open class ContactSearchAdapter( ) } + fun registerChatTypeItems(mappingAdapter: MappingAdapter, chatTypeRowListener: OnClickedCallback) { + mappingAdapter.registerFactory( + ChatTypeModel::class.java, + LayoutFactory({ ChatTypeViewHolder(it, chatTypeRowListener) }, R.layout.contact_search_chat_type_item) + ) + } + fun toMappingModelList(contactSearchData: List, selection: Set, arbitraryRepository: ArbitraryRepository?): MappingModelList { return MappingModelList( contactSearchData.filterNotNull().map { @@ -132,6 +141,7 @@ open class ContactSearchAdapter( is ContactSearchData.Empty -> EmptyModel(it) is ContactSearchData.GroupWithMembers -> GroupWithMembersModel(it) is ContactSearchData.UnknownRecipient -> UnknownRecipientModel(it) + is ContactSearchData.ChatTypeRow -> ChatTypeModel(it, selection.contains(it.contactSearchKey)) } } ) @@ -675,6 +685,7 @@ open class ContactSearchAdapter( ContactSearchConfiguration.SectionKey.MESSAGES -> R.string.ContactsCursorLoader__messages ContactSearchConfiguration.SectionKey.GROUPS_WITH_MEMBERS -> R.string.ContactsCursorLoader_group_members ContactSearchConfiguration.SectionKey.CONTACTS_WITHOUT_THREADS -> R.string.ContactsCursorLoader_contacts + ContactSearchConfiguration.SectionKey.CHAT_TYPES -> R.string.ContactsCursorLoader__chat_types else -> error("This section does not support HEADER") } ) @@ -712,6 +723,42 @@ open class ContactSearchAdapter( } } + /** + * Mapping Model for chat types. + */ + class ChatTypeModel(val data: ContactSearchData.ChatTypeRow, val isSelected: Boolean) : MappingModel { + override fun areItemsTheSame(newItem: ChatTypeModel): Boolean = data == newItem.data + override fun areContentsTheSame(newItem: ChatTypeModel): Boolean = data == newItem.data && isSelected == newItem.isSelected + } + + /** + * View Holder for chat types + */ + private class ChatTypeViewHolder( + itemView: View, + val onClick: OnClickedCallback + ) : MappingViewHolder(itemView) { + + val image: ImageView = itemView.findViewById(R.id.image) + val name: TextView = itemView.findViewById(R.id.name) + val checkbox: CheckBox = itemView.findViewById(R.id.check_box) + + override fun bind(model: ChatTypeModel) { + itemView.setOnClickListener { onClick.onClicked(itemView, model.data, model.isSelected) } + + image.setImageResource(model.data.imageResId) + + if (model.data.chatType == ChatType.INDIVIDUAL) { + name.text = context.getString(R.string.ChatFoldersFragment__one_on_one_chats) + } + if (model.data.chatType == ChatType.GROUPS) { + name.text = context.getString(R.string.ChatFoldersFragment__groups) + } + + checkbox.isChecked = model.isSelected + } + } + private class IsSelfComparator : Comparator { override fun compare(lhs: Recipient?, rhs: Recipient?): Int { val isLeftSelf = lhs?.isSelf == true @@ -764,6 +811,7 @@ open class ContactSearchAdapter( fun onUnknownRecipientClicked(view: View, unknownRecipient: ContactSearchData.UnknownRecipient, isSelected: Boolean) { throw NotImplementedError() } + fun onChatTypeClicked(view: View, chatTypeRow: ContactSearchData.ChatTypeRow, isSelected: Boolean) } interface CallButtonClickCallbacks { diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchConfiguration.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchConfiguration.kt index e3006d7e63..e17a2575bc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchConfiguration.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchConfiguration.kt @@ -193,6 +193,18 @@ class ContactSearchConfiguration private constructor( override val includeHeader: Boolean = false override val expandConfig: ExpandConfig? = null } + + /** + * Chat types that are displayed when creating a chat folder. + * + * Key: [ContactSearchKey.ChatType] + * Data: [ContactSearchData.ChatTypeRow] + * Model: [ContactSearchAdapter.ChatTypeModel] + */ + data class ChatTypes( + override val includeHeader: Boolean = true, + override val expandConfig: ExpandConfig? = null + ) : Section(SectionKey.CHAT_TYPES) } /** @@ -234,6 +246,11 @@ class ContactSearchConfiguration private constructor( */ CONTACTS_WITHOUT_THREADS, + /** + * Chat types (ie unreads, 1:1, groups) that are used to customize folders + */ + CHAT_TYPES, + /** * Arbitrary row (think new group button, username row, etc) */ diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchData.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchData.kt index 36af4f2aa4..a6e191041f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchData.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchData.kt @@ -69,6 +69,14 @@ sealed class ContactSearchData(val contactSearchKey: ContactSearchKey) { val action: HeaderAction? ) : ContactSearchData(ContactSearchKey.Header(sectionKey)) + /** + * A row containing a chat type (filters that can be applied to a chat folders) + */ + class ChatTypeRow( + val imageResId: Int, + val chatType: ChatType + ) : ContactSearchData(ContactSearchKey.ChatTypeSearchKey(chatType)) + /** * A row which the user can click to view all entries for a given section. */ diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchKey.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchKey.kt index 08d91cd8db..bed4eec8a6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchKey.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchKey.kt @@ -76,5 +76,14 @@ sealed class ContactSearchKey { */ data class Message(val messageId: Long) : ContactSearchKey() + /** + * Search key for a ChatType + */ + data class ChatTypeSearchKey(val chatType: ChatType) : ContactSearchKey() { + override fun requireSelectedContact(): SelectedContact { + return SelectedContact.forChatType(chatType) + } + } + object Empty : ContactSearchKey() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchMediator.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchMediator.kt index 4ec13532f3..6177759d4c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchMediator.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchMediator.kt @@ -87,6 +87,11 @@ class ContactSearchMediator( Log.d(TAG, "onExpandClicked()") viewModel.expandSection(expand.sectionKey) } + + override fun onChatTypeClicked(view: View, chatTypeRow: ContactSearchData.ChatTypeRow, isSelected: Boolean) { + Log.d(TAG, "onChatTypeClicked() chatType $chatTypeRow") + toggleChatTypeSelection(view, chatTypeRow, isSelected) + } }, longClickCallbacks = ContactSearchAdapter.LongClickCallbacksAdapter(), storyContextMenuCallbacks = StoryContextMenuCallbacks(), @@ -188,6 +193,16 @@ class ContactSearchMediator( } } + private fun toggleChatTypeSelection(view: View, contactSearchData: ContactSearchData, isSelected: Boolean) { + return if (isSelected) { + Log.d(TAG, "toggleSelection(OFF) ${contactSearchData.contactSearchKey}") + viewModel.setKeysNotSelected(setOf(contactSearchData.contactSearchKey)) + } else { + Log.d(TAG, "toggleSelection(ON) ${contactSearchData.contactSearchKey}") + viewModel.setKeysSelected(callbacks.onBeforeContactsSelected(view, setOf(contactSearchData.contactSearchKey))) + } + } + private inner class StoryContextMenuCallbacks : ContactSearchAdapter.StoryContextMenuCallbacks { override fun onOpenStorySettings(story: ContactSearchData.Story) { if (story.recipient.isMyStory) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSource.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSource.kt index 8b0a332d68..8deb266076 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSource.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSource.kt @@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.contacts.paged import android.database.Cursor import org.signal.core.util.requireLong import org.signal.paging.PagedDataSource +import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.contacts.ContactRepository import org.thoughtcrime.securesms.contacts.paged.collections.ContactSearchCollection import org.thoughtcrime.securesms.contacts.paged.collections.ContactSearchIterator @@ -142,6 +143,7 @@ class ContactSearchPagedDataSource( is ContactSearchConfiguration.Section.PhoneNumber -> if (isPossiblyPhoneNumber(query)) 1 else 0 is ContactSearchConfiguration.Section.Username -> if (isPossiblyUsername(query)) 1 else 0 is ContactSearchConfiguration.Section.Empty -> 1 + is ContactSearchConfiguration.Section.ChatTypes -> getChatTypesData(section).size } } @@ -181,6 +183,7 @@ class ContactSearchPagedDataSource( is ContactSearchConfiguration.Section.PhoneNumber -> getPossiblePhoneNumber(section, query) is ContactSearchConfiguration.Section.Username -> getPossibleUsername(section, query) is ContactSearchConfiguration.Section.Empty -> listOf(ContactSearchData.Empty(query)) + is ContactSearchConfiguration.Section.ChatTypes -> getChatTypesData(section) } } @@ -348,6 +351,22 @@ class ContactSearchPagedDataSource( } } + // TODO [michelle]: Replace hardcoding chat types after building db + private fun getChatTypesData(section: ContactSearchConfiguration.Section.ChatTypes): List { + val data = mutableListOf() + + if (section.includeHeader) { + data.add(ContactSearchData.Header(section.sectionKey, section.headerAction)) + } + data.addAll( + listOf( + ContactSearchData.ChatTypeRow(R.drawable.symbol_person_light_24, ChatType.INDIVIDUAL), + ContactSearchData.ChatTypeRow(R.drawable.symbol_group_light_20, ChatType.GROUPS) + ) + ) + return data + } + private fun getContactsWithoutThreadsContactData(section: ContactSearchConfiguration.Section.ContactsWithoutThreads, query: String?, startIndex: Int, endIndex: Int): List { return getContactsWithoutThreadsIterator(query).use { records -> readContactData( diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchRepository.kt index b24584a315..917c080889 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchRepository.kt @@ -21,6 +21,7 @@ class ContactSearchRepository { val isSelectable = when (it) { is ContactSearchKey.RecipientSearchKey -> canSelectRecipient(it.recipientId) is ContactSearchKey.UnknownRecipientKey -> it.sectionKey == ContactSearchConfiguration.SectionKey.PHONE_NUMBER + is ContactSearchKey.ChatTypeSearchKey -> true else -> false } ContactSearchSelectionResult(it, isSelectable) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ChatFolderAdapter.kt b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ChatFolderAdapter.kt new file mode 100644 index 0000000000..10f33091f5 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ChatFolderAdapter.kt @@ -0,0 +1,58 @@ +package org.thoughtcrime.securesms.conversationlist + +import android.content.Context +import android.content.res.ColorStateList +import android.view.View +import android.widget.TextView +import androidx.core.content.ContextCompat +import org.thoughtcrime.securesms.R +import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFolderRecord +import org.thoughtcrime.securesms.util.adapter.mapping.LayoutFactory +import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter +import org.thoughtcrime.securesms.util.adapter.mapping.MappingViewHolder +import org.thoughtcrime.securesms.util.visible + +/** +* RecyclerView adapter for the chat folders displayed on conversation list +*/ +class ChatFolderAdapter(val callbacks: Callbacks) : MappingAdapter() { + + init { + registerFactory(ChatFolderMappingModel::class.java, LayoutFactory({ v -> ViewHolder(v, callbacks) }, R.layout.chat_folder_item)) + } + + class ViewHolder(itemView: View, private val callbacks: Callbacks) : MappingViewHolder(itemView) { + + private val name: TextView = findViewById(R.id.name) + private val unreadCount: TextView = findViewById(R.id.unread_count) + + override fun bind(model: ChatFolderMappingModel) { + itemView.isSelected = model.isSelected + + val folder = model.chatFolder + name.text = getName(itemView.context, folder) + unreadCount.visible = folder.unreadCount > 0 + unreadCount.text = folder.unreadCount.toString() + itemView.setOnClickListener { + callbacks.onChatFolderClicked(model.chatFolder) + } + if (model.isSelected) { + itemView.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, R.color.signal_colorSurfaceVariant)) + } else { + itemView.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, R.color.transparent)) + } + } + + private fun getName(context: Context, folder: ChatFolderRecord): String { + return if (folder.folderType == ChatFolderRecord.FolderType.ALL) { + context.getString(R.string.ChatFoldersFragment__all_chats) + } else { + folder.name + } + } + } + + interface Callbacks { + fun onChatFolderClicked(chatFolder: ChatFolderRecord) + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ChatFolderMappingModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ChatFolderMappingModel.kt new file mode 100644 index 0000000000..14d3d0e8d0 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ChatFolderMappingModel.kt @@ -0,0 +1,17 @@ +package org.thoughtcrime.securesms.conversationlist + +import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFolderRecord +import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel + +data class ChatFolderMappingModel( + val chatFolder: ChatFolderRecord, + val isSelected: Boolean +) : MappingModel { + override fun areItemsTheSame(newItem: ChatFolderMappingModel): Boolean { + return chatFolder == newItem.chatFolder + } + + override fun areContentsTheSame(newItem: ChatFolderMappingModel): Boolean { + return areItemsTheSame(newItem) && isSelected == newItem.isSelected + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListArchiveFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListArchiveFragment.java index a37a60c5e9..e764da05d4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListArchiveFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListArchiveFragment.java @@ -47,6 +47,7 @@ public class ConversationListArchiveFragment extends ConversationListFragment im { private View coordinator; private RecyclerView list; + private RecyclerView foldersList; private Stub emptyState; private PulsingFloatingActionButton fab; private PulsingFloatingActionButton cameraFab; @@ -73,12 +74,14 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat emptyState = new Stub<>(view.findViewById(R.id.empty_state)); fab = view.findViewById(R.id.fab); cameraFab = view.findViewById(R.id.camera_fab); + foldersList = view.findViewById(R.id.chat_folder_list); toolbar.get().setNavigationOnClickListener(v -> NavHostFragment.findNavController(this).popBackStack()); toolbar.get().setTitle(R.string.AndroidManifest_archived_conversations); fab.hide(); cameraFab.hide(); + foldersList.setVisibility(View.GONE); } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListDataSource.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListDataSource.java index a6b1eed2e6..5d4181dd83 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListDataSource.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListDataSource.java @@ -11,6 +11,7 @@ import org.signal.core.util.Stopwatch; import org.signal.core.util.logging.Log; import org.signal.paging.PagedDataSource; +import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFolderRecord; import org.thoughtcrime.securesms.conversationlist.model.Conversation; import org.thoughtcrime.securesms.conversationlist.model.ConversationFilter; import org.thoughtcrime.securesms.conversationlist.model.ConversationReader; @@ -40,16 +41,18 @@ abstract class ConversationListDataSource implements PagedDataSource cursors = new ArrayList<>(5); long originalLimit = limit; - if (offset == 0 && hasPinnedHeader()) { - MatrixCursor pinnedHeaderCursor = new MatrixCursor(ConversationReader.HEADER_COLUMN); - pinnedHeaderCursor.addRow(ConversationReader.PINNED_HEADER); - cursors.add(pinnedHeaderCursor); - limit--; - } - - Cursor pinnedCursor = threadTable.getUnarchivedConversationList(conversationFilter, true, offset, limit); + Cursor pinnedCursor = threadTable.getUnarchivedConversationList(conversationFilter, true, offset, limit, chatFolder); cursors.add(pinnedCursor); limit -= pinnedCursor.getCount(); - if (offset == 0 && hasUnpinnedHeader()) { - MatrixCursor unpinnedHeaderCursor = new MatrixCursor(ConversationReader.HEADER_COLUMN); - unpinnedHeaderCursor.addRow(ConversationReader.UNPINNED_HEADER); - cursors.add(unpinnedHeaderCursor); - limit--; - } - - long unpinnedOffset = Math.max(0, offset - pinnedCount - getHeaderOffset()); - Cursor unpinnedCursor = threadTable.getUnarchivedConversationList(conversationFilter, false, unpinnedOffset, limit); + long unpinnedOffset = Math.max(0, offset - pinnedCount); + Cursor unpinnedCursor = threadTable.getUnarchivedConversationList(conversationFilter, false, unpinnedOffset, limit, chatFolder); cursors.add(unpinnedCursor); boolean shouldInsertConversationFilterFooter = offset + originalLimit >= totalCount && hasConversationFilterFooter(); @@ -242,24 +221,9 @@ protected Cursor getCursor(long offset, long limit) { return new MergeCursor(cursors.toArray(new Cursor[]{})); } - @VisibleForTesting - int getHeaderOffset() { - return (hasPinnedHeader() ? 1 : 0) + (hasUnpinnedHeader() ? 1 : 0); - } - - @VisibleForTesting - boolean hasPinnedHeader() { - return pinnedCount != 0; - } - - @VisibleForTesting - boolean hasUnpinnedHeader() { - return hasPinnedHeader() && unpinnedCount != 0; - } - @VisibleForTesting boolean hasArchivedFooter() { - return archivedCount != 0; + return archivedCount != 0 && chatFolder.getFolderType() == ChatFolderRecord.FolderType.ALL; } boolean hasConversationFilterFooter() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java index 52e47437d4..1b0a3858a9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java @@ -114,6 +114,7 @@ import org.thoughtcrime.securesms.components.menu.SignalContextMenu; import org.thoughtcrime.securesms.components.registration.PulsingFloatingActionButton; import org.thoughtcrime.securesms.components.settings.app.AppSettingsActivity; +import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFolderRecord; import org.thoughtcrime.securesms.components.settings.app.notifications.manual.NotificationProfileSelectionFragment; import org.thoughtcrime.securesms.components.settings.app.subscription.completed.InAppPaymentsBottomSheetDelegate; import org.thoughtcrime.securesms.components.settings.app.subscription.errors.UnexpectedSubscriptionCancellation; @@ -167,6 +168,7 @@ import org.thoughtcrime.securesms.util.AppStartup; import org.thoughtcrime.securesms.util.CachedInflater; import org.thoughtcrime.securesms.util.ConversationUtil; +import org.thoughtcrime.securesms.util.RemoteConfig; import org.thoughtcrime.securesms.util.ServiceUtil; import org.thoughtcrime.securesms.util.SignalLocalMetrics; import org.thoughtcrime.securesms.util.SignalProxyUtil; @@ -200,7 +202,8 @@ public class ConversationListFragment extends MainFragment implements ActionMode.Callback, ConversationListAdapter.OnConversationClickListener, MegaphoneActionController, - ClearFilterViewHolder.OnClearFilterClickListener + ClearFilterViewHolder.OnClearFilterClickListener, + ChatFolderAdapter.Callbacks { public static final short MESSAGE_REQUESTS_REQUEST_CODE_CREATE_NAME = 32562; public static final short SMS_ROLE_REQUEST_CODE = 32563; @@ -216,6 +219,7 @@ public class ConversationListFragment extends MainFragment implements ActionMode private ActionMode actionMode; private View coordinator; + private RecyclerView chatFolderList; private RecyclerView list; private Stub bannerView; private PulsingFloatingActionButton fab; @@ -236,6 +240,7 @@ public class ConversationListFragment extends MainFragment implements ActionMode private SignalBottomActionBar bottomActionBar; private SignalContextMenu activeContextMenu; private LifecycleDisposable lifecycleDisposable; + private ChatFolderAdapter chatFolderAdapter; protected ConversationListArchiveItemDecoration archiveDecoration; protected ConversationListItemAnimator itemAnimator; @@ -281,6 +286,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat lifecycleDisposable.bindTo(getViewLifecycleOwner()); coordinator = view.findViewById(R.id.coordinator); + chatFolderList = view.findViewById(R.id.chat_folder_list); list = view.findViewById(R.id.list); bottomActionBar = view.findViewById(R.id.conversation_list_bottom_action_bar); bannerView = new Stub<>(view.findViewById(R.id.banner_compose_view)); @@ -293,6 +299,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat fab.setVisibility(View.VISIBLE); cameraFab.setVisibility(View.VISIBLE); + chatFolderList.setVisibility(RemoteConfig.internalUser() ? View.VISIBLE : View.GONE); contactSearchMediator = new ContactSearchMediator(this, Collections.emptySet(), @@ -381,6 +388,12 @@ public boolean canStartNestedScroll() { archiveDecoration = new ConversationListArchiveItemDecoration(new ColorDrawable(getResources().getColor(R.color.conversation_list_archive_background_end))); itemAnimator = new ConversationListItemAnimator(); + chatFolderAdapter = new ChatFolderAdapter(this); + + chatFolderList.setLayoutManager(new LinearLayoutManager(requireActivity(), LinearLayoutManager.HORIZONTAL, false)); + chatFolderList.setAdapter(chatFolderAdapter); + chatFolderList.setItemAnimator(null); + list.setLayoutManager(new LinearLayoutManager(requireActivity())); list.setItemAnimator(itemAnimator); list.addItemDecoration(archiveDecoration); @@ -972,6 +985,7 @@ private void initializeViewModel() { lifecycleDisposable.add(viewModel.getHasNoConversations().subscribe(this::updateEmptyState)); lifecycleDisposable.add(viewModel.getNotificationProfiles().subscribe(profiles -> requireCallback().updateNotificationProfileStatus(profiles))); lifecycleDisposable.add(viewModel.getWebSocketState().subscribe(pipeState -> requireCallback().updateProxyStatus(pipeState))); + lifecycleDisposable.add(viewModel.getChatFolderState().subscribe(this::onChatFoldersChanged)); appForegroundObserver = new AppForegroundObserver.Listener() { @Override @@ -1031,6 +1045,10 @@ private void onConversationListChanged(@NonNull List conversations }); } + private void onChatFoldersChanged(List folders) { + chatFolderAdapter.submitList(new ArrayList<>(folders)); + } + private void onMegaphoneChanged(@NonNull Megaphone megaphone) { if (megaphone == Megaphone.NONE || isArchived() || getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { if (megaphoneContainer.resolved()) { @@ -1643,6 +1661,11 @@ public void onClearFilterClick() { pullViewAppBarLayout.setExpanded(false, true); } + @Override + public void onChatFolderClicked(@NonNull ChatFolderRecord chatFolder) { + viewModel.select(chatFolder); + } + private class ArchiveListenerCallback extends ItemTouchHelper.SimpleCallback { private static final long SWIPE_ANIMATION_DURATION = 175; @@ -1887,6 +1910,11 @@ public void onExpandClicked(@NonNull ContactSearchData.Expand expand) { public void onUnknownRecipientClicked(@NonNull View view, @NonNull ContactSearchData.UnknownRecipient unknownRecipient, boolean isSelected) { throw new UnsupportedOperationException(); } + + @Override + public void onChatTypeClicked(@NonNull View view, @NonNull ContactSearchData.ChatTypeRow chatTypeRow, boolean isSelected) { + throw new UnsupportedOperationException(); + } } public interface Callback extends Material3OnScrollHelperBinder, SearchBinder { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListItem.java index d83d05e331..7700b99238 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListItem.java @@ -134,6 +134,7 @@ public final class ConversationListItem extends ConstraintLayout implements Bind private View uncheckedView; private View checkedView; private View unreadMentions; + private View pinnedView; private int thumbSize; private GlideLiveDataTarget thumbTarget; @@ -170,6 +171,7 @@ protected void onFinishInflate() { this.uncheckedView = findViewById(R.id.conversation_list_item_unchecked); this.checkedView = findViewById(R.id.conversation_list_item_checked); this.unreadMentions = findViewById(R.id.conversation_list_item_unread_mentions_indicator); + this.pinnedView = findViewById(R.id.conversation_list_item_pinned); this.thumbSize = (int) DimensionUnit.SP.toPixels(16f); this.thumbTarget = new GlideLiveDataTarget(thumbSize, thumbSize); this.searchStyleFactory = () -> new CharacterStyle[] { new ForegroundColorSpan(ContextCompat.getColor(getContext(), R.color.signal_colorOnSurface)), SpanUtil.getBoldSpan() }; @@ -279,6 +281,12 @@ public void bindThread(@NonNull LifecycleOwner lifecycleOwner, this.archivedView.setVisibility(View.GONE); } + if (thread.isPinned()) { + this.pinnedView.setVisibility(View.VISIBLE); + } else { + this.pinnedView.setVisibility(View.GONE); + } + setStatusIcons(thread); setSelectedConversations(selectedConversations); setBadgeFromRecipient(recipient.get()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.kt index 09ed179957..8aa2abe23e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.kt @@ -2,16 +2,22 @@ package org.thoughtcrime.securesms.conversationlist import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.viewModelScope import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.core.BackpressureStrategy import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Observable import io.reactivex.rxjava3.disposables.CompositeDisposable +import io.reactivex.rxjava3.kotlin.Flowables import io.reactivex.rxjava3.kotlin.addTo import io.reactivex.rxjava3.schedulers.Schedulers +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch import org.signal.paging.PagedData import org.signal.paging.PagingConfig import org.signal.paging.ProxyPagingController +import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFolderRecord +import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFoldersRepository import org.thoughtcrime.securesms.components.settings.app.notifications.profiles.NotificationProfilesRepository import org.thoughtcrime.securesms.conversationlist.chatfilter.ConversationFilterRequest import org.thoughtcrime.securesms.conversationlist.chatfilter.ConversationFilterSource @@ -53,10 +59,15 @@ class ConversationListViewModel( val megaphoneState: Flowable = store.mapDistinctForUi { it.megaphone } val selectedState: Flowable = store.mapDistinctForUi { it.selectedConversations } val filterRequestState: Flowable = store.mapDistinctForUi { it.filterRequest } + val chatFolderState: Flowable> = store.mapDistinctForUi { it.chatFolders } val hasNoConversations: Flowable val controller = ProxyPagingController() + val folders: List + get() = store.state.chatFolders + val currentFolder: ChatFolderRecord + get() = store.state.currentFolder val conversationFilterRequest: ConversationFilterRequest get() = store.state.filterRequest val megaphone: Megaphone @@ -74,13 +85,14 @@ class ConversationListViewModel( conversationListDataSource = store .stateFlowable .subscribeOn(Schedulers.io()) - .map { it.filterRequest } + .map { it.filterRequest to it.currentFolder } .distinctUntilChanged() - .map { + .map { (filterRequest, folder) -> ConversationListDataSource.create( - it.filter, + folder, + filterRequest.filter, isArchived, - SignalStore.uiHints.canDisplayPullToFilterTip() && it.source === ConversationFilterSource.OVERFLOW + SignalStore.uiHints.canDisplayPullToFilterTip() && filterRequest.source === ConversationFilterSource.OVERFLOW ) } .replay(1) @@ -100,6 +112,17 @@ class ConversationListViewModel( .subscribe { controller.onDataInvalidated() } .addTo(disposables) + Flowables.combineLatest( + RxDatabaseObserver + .conversationList + .debounce(250, TimeUnit.MILLISECONDS), + RxDatabaseObserver + .chatFolders + .throttleLatest(500, TimeUnit.MILLISECONDS) + ) + .subscribe { loadCurrentFolders() } + .addTo(disposables) + val pinnedCount = RxDatabaseObserver .conversationList .map { SignalDatabase.threads.getPinnedConversationListCount(ConversationFilter.OFF) } @@ -191,6 +214,28 @@ class ConversationListViewModel( megaphoneRepository.markVisible(visible.event) } + private fun loadCurrentFolders() { + viewModelScope.launch(Dispatchers.IO) { + val folders = ChatFoldersRepository.getCurrentFolders(includeUnreadCount = true) + + val selectedFolderId = if (currentFolder.id == -1L) { + folders.firstOrNull()?.id + } else { + currentFolder.id + } + val chatFolders = folders.map { folder -> + ChatFolderMappingModel(folder, selectedFolderId == folder.id) + } + + store.update { + it.copy( + currentFolder = folders.find { folder -> folder.id == selectedFolderId } ?: ChatFolderRecord(), + chatFolders = chatFolders + ) + } + } + } + fun getNotificationProfiles(): Flowable> { return notificationProfilesRepository.getProfiles() .observeOn(AndroidSchedulers.mainThread()) @@ -203,7 +248,20 @@ class ConversationListViewModel( } } + fun select(chatFolder: ChatFolderRecord) { + store.update { + it.copy( + currentFolder = chatFolder, + chatFolders = folders.map { model -> + model.copy(isSelected = chatFolder.id == model.chatFolder.id) + } + ) + } + } + private data class ConversationListState( + val chatFolders: List = emptyList(), + val currentFolder: ChatFolderRecord = ChatFolderRecord(), val conversations: List = emptyList(), val megaphone: Megaphone = Megaphone.NONE, val selectedConversations: ConversationSet = ConversationSet(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ChatFolderTables.kt b/app/src/main/java/org/thoughtcrime/securesms/database/ChatFolderTables.kt new file mode 100644 index 0000000000..5fdcbe013e --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ChatFolderTables.kt @@ -0,0 +1,321 @@ +package org.thoughtcrime.securesms.database + +import android.content.ContentValues +import android.content.Context +import androidx.core.content.contentValuesOf +import org.signal.core.util.SqlUtil +import org.signal.core.util.delete +import org.signal.core.util.groupBy +import org.signal.core.util.insertInto +import org.signal.core.util.readToList +import org.signal.core.util.readToSingleInt +import org.signal.core.util.requireBoolean +import org.signal.core.util.requireInt +import org.signal.core.util.requireLong +import org.signal.core.util.requireString +import org.signal.core.util.select +import org.signal.core.util.update +import org.signal.core.util.withinTransaction +import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFolderRecord +import org.thoughtcrime.securesms.dependencies.AppDependencies + +/** + * Stores chat folders and the chats that belong in each chat folder + */ +class ChatFolderTables(context: Context?, databaseHelper: SignalDatabase?) : DatabaseTable(context, databaseHelper), ThreadIdDatabaseReference { + + companion object { + @JvmField + val CREATE_TABLE: Array = arrayOf(ChatFolderTable.CREATE_TABLE, ChatFolderMembershipTable.CREATE_TABLE) + + @JvmField + val CREATE_INDEXES: Array = ChatFolderTable.CREATE_INDEX + ChatFolderMembershipTable.CREATE_INDEXES + + fun insertInitialChatFoldersAtCreationTime(db: net.zetetic.database.sqlcipher.SQLiteDatabase) { + db.insert(ChatFolderTable.TABLE_NAME, null, getAllChatsFolderContentValues()) + } + + private fun getAllChatsFolderContentValues(): ContentValues { + return contentValuesOf( + ChatFolderTable.POSITION to 0, + ChatFolderTable.FOLDER_TYPE to ChatFolderRecord.FolderType.ALL.value, + ChatFolderTable.SHOW_INDIVIDUAL to 1, + ChatFolderTable.SHOW_GROUPS to 1, + ChatFolderTable.SHOW_MUTED to 1 + ) + } + } + + /** + * Represents the components of a chat folder and any chat types it contains + */ + object ChatFolderTable { + const val TABLE_NAME = "chat_folder" + + const val ID = "_id" + const val NAME = "name" + const val POSITION = "position" + const val SHOW_UNREAD = "show_unread" + const val SHOW_MUTED = "show_muted" + const val SHOW_INDIVIDUAL = "show_individual" + const val SHOW_GROUPS = "show_groups" + const val IS_MUTED = "is_muted" + const val FOLDER_TYPE = "folder_type" + + val CREATE_TABLE = """ + CREATE TABLE $TABLE_NAME ( + $ID INTEGER PRIMARY KEY AUTOINCREMENT, + $NAME TEXT DEFAULT NULL, + $POSITION INTEGER DEFAULT 0, + $SHOW_UNREAD INTEGER DEFAULT 0, + $SHOW_MUTED INTEGER DEFAULT 0, + $SHOW_INDIVIDUAL INTEGER DEFAULT 0, + $SHOW_GROUPS INTEGER DEFAULT 0, + $IS_MUTED INTEGER DEFAULT 0, + $FOLDER_TYPE INTEGER DEFAULT ${ChatFolderRecord.FolderType.CUSTOM.value} + ) + """ + + val CREATE_INDEX = arrayOf( + "CREATE INDEX chat_folder_position_index ON $TABLE_NAME ($POSITION)" + ) + } + + /** + * Represents a thread that is associated with this chat folder. They are + * either included in the chat folder or explicitly excluded. + */ + object ChatFolderMembershipTable { + const val TABLE_NAME = "chat_folder_membership" + + const val ID = "_id" + const val CHAT_FOLDER_ID = "chat_folder_id" + const val THREAD_ID = "thread_id" + const val MEMBERSHIP_TYPE = "membership_type" + + const val CREATE_TABLE = """ + CREATE TABLE $TABLE_NAME ( + $ID INTEGER PRIMARY KEY AUTOINCREMENT, + $CHAT_FOLDER_ID INTEGER NOT NULL REFERENCES ${ChatFolderTable.TABLE_NAME} (${ChatFolderTable.ID}) ON DELETE CASCADE, + $THREAD_ID INTEGER NOT NULL REFERENCES ${ThreadTable.TABLE_NAME} (${ThreadTable.ID}) ON DELETE CASCADE, + $MEMBERSHIP_TYPE INTEGER DEFAULT 1 + ) + """ + + val CREATE_INDEXES = arrayOf( + "CREATE INDEX chat_folder_membership_chat_folder_id_index ON $TABLE_NAME ($CHAT_FOLDER_ID)", + "CREATE INDEX chat_folder_membership_thread_id_index ON $TABLE_NAME ($THREAD_ID)", + "CREATE INDEX chat_folder_membership_membership_type_index ON $TABLE_NAME ($MEMBERSHIP_TYPE)" + ) + } + + override fun remapThread(fromId: Long, toId: Long) { + writableDatabase + .update(ChatFolderMembershipTable.TABLE_NAME) + .values(ChatFolderMembershipTable.THREAD_ID to toId) + .where("${ChatFolderMembershipTable.THREAD_ID} = ?", fromId) + .run() + } + + /** + * Maps the chat folder ids to its corresponding chat folder + */ + fun getChatFolders(includeUnreads: Boolean = false): List { + val includedChats: Map> = getIncludedChats() + val excludedChats: Map> = getExcludedChats() + + val folders = readableDatabase + .select() + .from(ChatFolderTable.TABLE_NAME) + .orderBy(ChatFolderTable.POSITION) + .run() + .readToList { cursor -> + val id = cursor.requireLong(ChatFolderTable.ID) + ChatFolderRecord( + id = id, + name = cursor.requireString(ChatFolderTable.NAME) ?: "", + position = cursor.requireInt(ChatFolderTable.POSITION), + showUnread = cursor.requireBoolean(ChatFolderTable.SHOW_UNREAD), + showMutedChats = cursor.requireBoolean(ChatFolderTable.SHOW_MUTED), + showIndividualChats = cursor.requireBoolean(ChatFolderTable.SHOW_INDIVIDUAL), + showGroupChats = cursor.requireBoolean(ChatFolderTable.SHOW_GROUPS), + isMuted = cursor.requireBoolean(ChatFolderTable.IS_MUTED), + folderType = ChatFolderRecord.FolderType.deserialize(cursor.requireInt(ChatFolderTable.FOLDER_TYPE)), + includedChats = includedChats[id] ?: emptyList(), + excludedChats = excludedChats[id] ?: emptyList() + ) + } + + if (includeUnreads) { + return folders.map { folder -> + folder.copy( + unreadCount = SignalDatabase.threads.getUnreadCountByChatFolder(folder) + ) + } + } + + return folders + } + + /** + * Maps chat folder ids to all of its corresponding included chats + */ + private fun getIncludedChats(): Map> { + return readableDatabase + .select() + .from(ChatFolderMembershipTable.TABLE_NAME) + .where("${ChatFolderMembershipTable.MEMBERSHIP_TYPE} = ${MembershipType.INCLUDED.value}") + .run() + .groupBy { cursor -> + cursor.requireLong(ChatFolderMembershipTable.CHAT_FOLDER_ID) to cursor.requireLong(ChatFolderMembershipTable.THREAD_ID) + } + } + + /** + * Maps the chat folder ids to all of its corresponding excluded chats + */ + private fun getExcludedChats(): Map> { + return readableDatabase + .select() + .from(ChatFolderMembershipTable.TABLE_NAME) + .where("${ChatFolderMembershipTable.MEMBERSHIP_TYPE} = ${MembershipType.EXCLUDED.value}") + .run() + .groupBy { cursor -> + cursor.requireLong(ChatFolderMembershipTable.CHAT_FOLDER_ID) to cursor.requireLong(ChatFolderMembershipTable.THREAD_ID) + } + } + + /** + * Adds a chat folder and its corresponding included/excluded chats + */ + fun createFolder(chatFolder: ChatFolderRecord) { + writableDatabase.withinTransaction { db -> + val position: Int = db + .select("MAX(${ChatFolderTable.POSITION})") + .from(ChatFolderTable.TABLE_NAME) + .run() + .readToSingleInt(0) + 1 + + val id = db.insertInto(ChatFolderTable.TABLE_NAME) + .values( + contentValuesOf( + ChatFolderTable.NAME to chatFolder.name, + ChatFolderTable.SHOW_UNREAD to chatFolder.showUnread, + ChatFolderTable.SHOW_MUTED to chatFolder.showMutedChats, + ChatFolderTable.SHOW_INDIVIDUAL to chatFolder.showIndividualChats, + ChatFolderTable.SHOW_GROUPS to chatFolder.showGroupChats, + ChatFolderTable.IS_MUTED to chatFolder.isMuted, + ChatFolderTable.POSITION to position + ) + ) + .run(SQLiteDatabase.CONFLICT_IGNORE) + + val includedChatsQueries = SqlUtil.buildBulkInsert( + ChatFolderMembershipTable.TABLE_NAME, + arrayOf(ChatFolderMembershipTable.CHAT_FOLDER_ID, ChatFolderMembershipTable.THREAD_ID, ChatFolderMembershipTable.MEMBERSHIP_TYPE), + chatFolder.includedChats.toContentValues(chatFolderId = id, membershipType = MembershipType.INCLUDED) + ) + + val excludedChatsQueries = SqlUtil.buildBulkInsert( + ChatFolderMembershipTable.TABLE_NAME, + arrayOf(ChatFolderMembershipTable.CHAT_FOLDER_ID, ChatFolderMembershipTable.THREAD_ID, ChatFolderMembershipTable.MEMBERSHIP_TYPE), + chatFolder.excludedChats.toContentValues(chatFolderId = id, membershipType = MembershipType.EXCLUDED) + ) + + includedChatsQueries.forEach { + db.execSQL(it.where, it.whereArgs) + } + + excludedChatsQueries.forEach { + db.execSQL(it.where, it.whereArgs) + } + + AppDependencies.databaseObserver.notifyChatFolderObservers() + } + } + + /** + * Updates the details for an existing folder like name, chat types, etc. + */ + fun updateFolder(chatFolder: ChatFolderRecord) { + writableDatabase.withinTransaction { db -> + db.update(ChatFolderTable.TABLE_NAME) + .values( + ChatFolderTable.NAME to chatFolder.name, + ChatFolderTable.SHOW_UNREAD to chatFolder.showUnread, + ChatFolderTable.SHOW_MUTED to chatFolder.showMutedChats, + ChatFolderTable.SHOW_INDIVIDUAL to chatFolder.showIndividualChats, + ChatFolderTable.SHOW_GROUPS to chatFolder.showGroupChats, + ChatFolderTable.IS_MUTED to chatFolder.isMuted + ) + .where("${ChatFolderTable.ID} = ?", chatFolder.id) + .run(SQLiteDatabase.CONFLICT_IGNORE) + + db + .delete(ChatFolderMembershipTable.TABLE_NAME) + .where("${ChatFolderMembershipTable.CHAT_FOLDER_ID} = ?", chatFolder.id) + .run() + + val includedChats = SqlUtil.buildBulkInsert( + ChatFolderMembershipTable.TABLE_NAME, + arrayOf(ChatFolderMembershipTable.CHAT_FOLDER_ID, ChatFolderMembershipTable.THREAD_ID, ChatFolderMembershipTable.MEMBERSHIP_TYPE), + chatFolder.includedChats.toContentValues(chatFolderId = chatFolder.id, membershipType = MembershipType.INCLUDED) + ) + + val excludedChats = SqlUtil.buildBulkInsert( + ChatFolderMembershipTable.TABLE_NAME, + arrayOf(ChatFolderMembershipTable.CHAT_FOLDER_ID, ChatFolderMembershipTable.THREAD_ID, ChatFolderMembershipTable.MEMBERSHIP_TYPE), + chatFolder.excludedChats.toContentValues(chatFolderId = chatFolder.id, membershipType = MembershipType.EXCLUDED) + ) + + (includedChats + excludedChats).forEach { + db.execSQL(it.where, it.whereArgs) + } + + AppDependencies.databaseObserver.notifyChatFolderObservers() + } + } + + /** + * Deletes a chat folder + */ + fun deleteChatFolder(chatFolder: ChatFolderRecord) { + writableDatabase.withinTransaction { db -> + db.delete(ChatFolderTable.TABLE_NAME, "${ChatFolderTable.ID} = ?", SqlUtil.buildArgs(chatFolder.id)) + AppDependencies.databaseObserver.notifyChatFolderObservers() + } + } + + /** + * Updates the position of the chat folders + */ + fun updatePositions(folders: List) { + writableDatabase.withinTransaction { db -> + folders.forEach { folder -> + db.update(ChatFolderTable.TABLE_NAME) + .values(ChatFolderTable.POSITION to folder.position) + .where("${ChatFolderTable.ID} = ?", folder.id) + .run(SQLiteDatabase.CONFLICT_IGNORE) + } + AppDependencies.databaseObserver.notifyChatFolderObservers() + } + } + + private fun Collection.toContentValues(chatFolderId: Long, membershipType: MembershipType): List { + return map { + contentValuesOf( + ChatFolderMembershipTable.CHAT_FOLDER_ID to chatFolderId, + ChatFolderMembershipTable.THREAD_ID to it, + ChatFolderMembershipTable.MEMBERSHIP_TYPE to membershipType.value + ) + } + } + + enum class MembershipType(val value: Int) { + /** Chat that should be included in the chat folder */ + INCLUDED(0), + + /** Chat that should be excluded from the chat folder */ + EXCLUDED(1) + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/DatabaseObserver.java b/app/src/main/java/org/thoughtcrime/securesms/database/DatabaseObserver.java index 5b643c1566..05f8a29424 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/DatabaseObserver.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/DatabaseObserver.java @@ -47,6 +47,7 @@ public class DatabaseObserver { private static final String KEY_CALL_UPDATES = "CallUpdates"; private static final String KEY_CALL_LINK_UPDATES = "CallLinkUpdates"; private static final String KEY_IN_APP_PAYMENTS = "InAppPayments"; + private static final String KEY_CHAT_FOLDER = "ChatFolder"; private final Executor executor; @@ -69,6 +70,7 @@ public class DatabaseObserver { private final Set callUpdateObservers; private final Map> callLinkObservers; private final Set inAppPaymentObservers; + private final Set chatFolderObservers; public DatabaseObserver() { this.executor = new SerialExecutor(SignalExecutors.BOUNDED); @@ -91,6 +93,7 @@ public DatabaseObserver() { this.callUpdateObservers = new HashSet<>(); this.callLinkObservers = new HashMap<>(); this.inAppPaymentObservers = new HashSet<>(); + this.chatFolderObservers = new HashSet<>(); } public void registerConversationListObserver(@NonNull Observer listener) { @@ -206,6 +209,10 @@ public void registerInAppPaymentObserver(@NonNull InAppPaymentObserver observer) executor.execute(() -> inAppPaymentObservers.add(observer)); } + public void registerChatFolderObserver(@NonNull Observer observer) { + executor.execute(() -> chatFolderObservers.add(observer)); + } + public void unregisterObserver(@NonNull Observer listener) { executor.execute(() -> { conversationListObservers.remove(listener); @@ -223,6 +230,7 @@ public void unregisterObserver(@NonNull Observer listener) { unregisterMapped(conversationDeleteObservers, listener); callUpdateObservers.remove(listener); unregisterMapped(callLinkObservers, listener); + chatFolderObservers.remove(listener); }); } @@ -387,6 +395,10 @@ public void notifyInAppPaymentsObservers(@NonNull InAppPaymentTable.InAppPayment }); } + public void notifyChatFolderObservers() { + runPostSuccessfulTransaction(KEY_CHAT_FOLDER, () -> notifySet(chatFolderObservers)); + } + private void runPostSuccessfulTransaction(@NonNull String dedupeKey, @NonNull Runnable runnable) { SignalDatabase.runPostSuccessfulTransaction(dedupeKey, () -> { executor.execute(runnable); diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt index 3b7aed292f..33d3ae6456 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt @@ -1483,6 +1483,7 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da for (id in ids) { AppDependencies.databaseObserver.notifyRecipientChanged(id) } + AppDependencies.databaseObserver.notifyConversationListListeners() StorageSyncHelper.scheduleSyncForDataChange() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RxDatabaseObserver.kt b/app/src/main/java/org/thoughtcrime/securesms/database/RxDatabaseObserver.kt index ae8555ad96..ef829b33ca 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RxDatabaseObserver.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RxDatabaseObserver.kt @@ -15,6 +15,7 @@ object RxDatabaseObserver { val conversationList: Flowable by lazy { conversationListFlowable() } val notificationProfiles: Flowable by lazy { notificationProfilesFlowable() } + val chatFolders: Flowable by lazy { chatFoldersFlowable() } private fun conversationListFlowable(): Flowable { return databaseFlowable { listener -> @@ -36,6 +37,12 @@ object RxDatabaseObserver { ) { _, _ -> Unit } } + private fun chatFoldersFlowable(): Flowable { + return databaseFlowable { listener -> + AppDependencies.databaseObserver.registerChatFolderObserver(listener) + } + } + private fun databaseFlowable(registerObserver: (RxObserver) -> Unit): Flowable { val flowable = Flowable.create( { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SignalDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/SignalDatabase.kt index 1bb02120f1..0d581c71b8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SignalDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SignalDatabase.kt @@ -76,6 +76,7 @@ open class SignalDatabase(private val context: Application, databaseSecret: Data val nameCollisionTables: NameCollisionTables = NameCollisionTables(context, this) val inAppPaymentTable: InAppPaymentTable = InAppPaymentTable(context, this) val inAppPaymentSubscriberTable: InAppPaymentSubscriberTable = InAppPaymentSubscriberTable(context, this) + val chatFoldersTable: ChatFolderTables = ChatFolderTables(context, this) override fun onOpen(db: net.zetetic.database.sqlcipher.SQLiteDatabase) { db.setForeignKeyConstraintsEnabled(true) @@ -120,6 +121,7 @@ open class SignalDatabase(private val context: Application, databaseSecret: Data executeStatements(db, MessageSendLogTables.CREATE_TABLE) executeStatements(db, NotificationProfileDatabase.CREATE_TABLE) executeStatements(db, DistributionListTables.CREATE_TABLE) + executeStatements(db, ChatFolderTables.CREATE_TABLE) executeStatements(db, RecipientTable.CREATE_INDEXS) executeStatements(db, MessageTable.CREATE_INDEXS) @@ -141,6 +143,7 @@ open class SignalDatabase(private val context: Application, databaseSecret: Data executeStatements(db, CallTable.CREATE_INDEXES) executeStatements(db, ReactionTable.CREATE_INDEXES) executeStatements(db, KyberPreKeyTable.CREATE_INDEXES) + executeStatements(db, ChatFolderTables.CREATE_INDEXES) executeStatements(db, SearchTable.CREATE_TRIGGERS) executeStatements(db, MessageSendLogTables.CREATE_TRIGGERS) @@ -148,6 +151,7 @@ open class SignalDatabase(private val context: Application, databaseSecret: Data NameCollisionTables.createIndexes(db) DistributionListTables.insertInitialDistributionListAtCreationTime(db) + ChatFolderTables.insertInitialChatFoldersAtCreationTime(db) if (context.getDatabasePath(ClassicOpenHelper.NAME).exists()) { val legacyHelper = ClassicOpenHelper(context) @@ -558,5 +562,10 @@ open class SignalDatabase(private val context: Application, databaseSecret: Data @get:JvmName("inAppPaymentSubscribers") val inAppPaymentSubscribers: InAppPaymentSubscriberTable get() = instance!!.inAppPaymentSubscriberTable + + @get:JvmStatic + @get:JvmName("chatFolders") + val chatFolders: ChatFolderTables + get() = instance!!.chatFoldersTable } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt index 0e2593c4f9..cfc51dc966 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt @@ -18,6 +18,7 @@ import org.signal.core.util.exists import org.signal.core.util.logging.Log import org.signal.core.util.or import org.signal.core.util.readToList +import org.signal.core.util.readToSingleInt import org.signal.core.util.readToSingleLong import org.signal.core.util.requireBoolean import org.signal.core.util.requireInt @@ -30,6 +31,7 @@ import org.signal.core.util.updateAll import org.signal.core.util.withinTransaction import org.signal.libsignal.zkgroup.InvalidInputException import org.signal.libsignal.zkgroup.groups.GroupMasterKey +import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFolderRecord import org.thoughtcrime.securesms.conversationlist.model.ConversationFilter import org.thoughtcrime.securesms.database.MessageTable.MarkedMessageInfo import org.thoughtcrime.securesms.database.SignalDatabase.Companion.attachments @@ -629,6 +631,39 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa return allCount + forcedUnreadCount } + /** + * Returns the number of unread messages across all threads within a chat folder + * Threads that are forced-unread count as 1. + */ + fun getUnreadCountByChatFolder(folder: ChatFolderRecord): Int { + val chatFolderQuery = folder.toQuery() + + val allCountQuery = + """ + SELECT SUM($UNREAD_COUNT) + FROM $TABLE_NAME + LEFT OUTER JOIN ${RecipientTable.TABLE_NAME} ON $TABLE_NAME.$RECIPIENT_ID = ${RecipientTable.TABLE_NAME}.${RecipientTable.ID} + WHERE + $ARCHIVED = 0 + $chatFolderQuery + """ + val allCount = readableDatabase.rawQuery(allCountQuery, null).readToSingleInt(0) + + val forcedUnreadCountQuery = + """ + SELECT COUNT(*) + FROM $TABLE_NAME + LEFT OUTER JOIN ${RecipientTable.TABLE_NAME} ON $TABLE_NAME.$RECIPIENT_ID = ${RecipientTable.TABLE_NAME}.${RecipientTable.ID} + WHERE + $ARCHIVED = 0 AND + $READ = ${ThreadTable.ReadStatus.FORCED_UNREAD.serialize()} + $chatFolderQuery + """ + val forcedUnreadCount = readableDatabase.rawQuery(forcedUnreadCountQuery, null).readToSingleInt(0) + + return allCount + forcedUnreadCount + } + /** * Returns the number of unread messages in a given thread. */ @@ -915,12 +950,13 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa return readableDatabase.rawQuery(query, arrayOf("1")) } - fun getUnarchivedConversationList(conversationFilter: ConversationFilter, pinned: Boolean, offset: Long, limit: Long): Cursor { + fun getUnarchivedConversationList(conversationFilter: ConversationFilter, pinned: Boolean, offset: Long, limit: Long, chatFolder: ChatFolderRecord): Cursor { + val folderQuery = chatFolder.toQuery() val filterQuery = conversationFilter.toQuery() val where = if (pinned) { - "$ARCHIVED = 0 AND $PINNED != 0 $filterQuery" + "$ARCHIVED = 0 AND $PINNED != 0 $filterQuery $folderQuery" } else { - "$ARCHIVED = 0 AND $PINNED = 0 AND $MEANINGFUL_MESSAGES != 0 $filterQuery" + "$ARCHIVED = 0 AND $PINNED = 0 AND $MEANINGFUL_MESSAGES != 0 $filterQuery $folderQuery" } val query = if (pinned) { @@ -948,36 +984,61 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa } } - fun getPinnedConversationListCount(conversationFilter: ConversationFilter): Int { + fun getPinnedConversationListCount(conversationFilter: ConversationFilter, chatFolder: ChatFolderRecord? = null): Int { val filterQuery = conversationFilter.toQuery() - return readableDatabase - .select("COUNT(*)") - .from(TABLE_NAME) - .where("$ACTIVE = 1 AND $ARCHIVED = 0 AND $PINNED != 0 $filterQuery") - .run() - .use { cursor -> - if (cursor.moveToFirst()) { - cursor.getInt(0) - } else { - 0 - } - } - } - fun getUnarchivedConversationListCount(conversationFilter: ConversationFilter): Int { + return if (chatFolder == null || chatFolder.folderType == ChatFolderRecord.FolderType.ALL) { + readableDatabase + .select("COUNT(*)") + .from(TABLE_NAME) + .where("$ACTIVE = 1 AND $ARCHIVED = 0 AND $PINNED != 0 $filterQuery") + .run() + .readToSingleInt(0) + } else { + val folderQuery = chatFolder.toQuery() + val query = + """ + SELECT COUNT(*) + FROM $TABLE_NAME + LEFT OUTER JOIN ${RecipientTable.TABLE_NAME} ON $TABLE_NAME.$RECIPIENT_ID = ${RecipientTable.TABLE_NAME}.${RecipientTable.ID} + WHERE + $ACTIVE = 1 AND + $ARCHIVED = 0 AND + $PINNED != 0 + $filterQuery + $folderQuery + """ + readableDatabase.rawQuery(query, null).readToSingleInt(0) + } + } + + fun getUnarchivedConversationListCount(conversationFilter: ConversationFilter, chatFolder: ChatFolderRecord? = null): Int { val filterQuery = conversationFilter.toQuery() - return readableDatabase - .select("COUNT(*)") - .from(TABLE_NAME) - .where("$ACTIVE = 1 AND $ARCHIVED = 0 AND ($MEANINGFUL_MESSAGES != 0 OR $PINNED != 0) $filterQuery") - .run() - .use { cursor -> - if (cursor.moveToFirst()) { - cursor.getInt(0) - } else { - 0 - } - } + + return if (chatFolder == null || chatFolder.folderType == ChatFolderRecord.FolderType.ALL) { + readableDatabase + .select("COUNT(*)") + .from(TABLE_NAME) + .where("$ACTIVE = 1 AND $ARCHIVED = 0 AND ($MEANINGFUL_MESSAGES != 0 OR $PINNED != 0) $filterQuery") + .run() + .readToSingleInt(0) + } else { + val folderQuery = chatFolder.toQuery() + + val query = + """ + SELECT COUNT(*) + FROM $TABLE_NAME + LEFT OUTER JOIN ${RecipientTable.TABLE_NAME} ON $TABLE_NAME.$RECIPIENT_ID = ${RecipientTable.TABLE_NAME}.${RecipientTable.ID} + WHERE + $ACTIVE = 1 AND + $ARCHIVED = 0 AND + ($MEANINGFUL_MESSAGES != 0 OR $PINNED != 0) + $filterQuery + $folderQuery + """ + readableDatabase.rawQuery(query, null).readToSingleInt(0) + } } /** @@ -1979,6 +2040,42 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa return Reader(cursor) } + private fun ChatFolderRecord.toQuery(): String { + if (this.id == -1L || this.folderType == ChatFolderRecord.FolderType.ALL) { + return "" + } + + val includedChatsQuery: MutableList = mutableListOf() + includedChatsQuery.add("${TABLE_NAME}.$ID IN (${this.includedChats.joinToString(",")})") + + if (this.showIndividualChats) { + includedChatsQuery.add("${RecipientTable.TABLE_NAME}.${RecipientTable.TYPE} = ${RecipientTable.RecipientType.INDIVIDUAL.id}") + } + + if (this.showGroupChats) { + includedChatsQuery.add("${RecipientTable.TABLE_NAME}.${RecipientTable.TYPE} = ${RecipientTable.RecipientType.GV2.id}") + } + + val includedQuery = includedChatsQuery.joinToString(" OR ") { "($it)" } + + val fullQuery: MutableList = mutableListOf() + fullQuery.add(includedQuery) + + if (this.excludedChats.isNotEmpty()) { + fullQuery.add("${TABLE_NAME}.$ID NOT IN (${this.excludedChats.joinToString(",")})") + } + + if (this.showUnread) { + fullQuery.add("$UNREAD_COUNT > 0 OR $READ == ${ReadStatus.FORCED_UNREAD.serialize()}") + } + + if (!this.showMutedChats) { + fullQuery.add("${RecipientTable.TABLE_NAME}.${RecipientTable.MUTE_UNTIL} = 0") + } + + return "AND ${fullQuery.joinToString(" AND ") { "($it)" }}" + } + private fun ConversationFilter.toQuery(): String { return when (this) { ConversationFilter.OFF -> "" diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SignalDatabaseMigrations.kt b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SignalDatabaseMigrations.kt index 5ea30a9f17..8f1e4d6169 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SignalDatabaseMigrations.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SignalDatabaseMigrations.kt @@ -109,6 +109,7 @@ import org.thoughtcrime.securesms.database.helpers.migration.V247_ClearUploadTim import org.thoughtcrime.securesms.database.helpers.migration.V250_ClearUploadTimestampV2 import org.thoughtcrime.securesms.database.helpers.migration.V251_ArchiveTransferStateIndex import org.thoughtcrime.securesms.database.helpers.migration.V252_AttachmentOffloadRestoredAtColumn +import org.thoughtcrime.securesms.database.helpers.migration.V253_CreateChatFolderTables /** * Contains all of the database migrations for [SignalDatabase]. Broken into a separate file for cleanliness. @@ -220,10 +221,11 @@ object SignalDatabaseMigrations { // 248 and 249 were originally in 7.18.0, but are now skipped because we needed to hotfix 7.17.6 after 7.18.0 was already released. 250 to V250_ClearUploadTimestampV2, 251 to V251_ArchiveTransferStateIndex, - 252 to V252_AttachmentOffloadRestoredAtColumn + 252 to V252_AttachmentOffloadRestoredAtColumn, + 253 to V253_CreateChatFolderTables ) - const val DATABASE_VERSION = 252 + const val DATABASE_VERSION = 253 @JvmStatic fun migrate(context: Application, db: SQLiteDatabase, oldVersion: Int, newVersion: Int) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V253_CreateChatFolderTables.kt b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V253_CreateChatFolderTables.kt new file mode 100644 index 0000000000..c89e14ef91 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V253_CreateChatFolderTables.kt @@ -0,0 +1,47 @@ +package org.thoughtcrime.securesms.database.helpers.migration + +import android.app.Application +import net.zetetic.database.sqlcipher.SQLiteDatabase +import org.thoughtcrime.securesms.database.ChatFolderTables + +/** + * Adds the tables for managing chat folders + */ +@Suppress("ClassName") +object V253_CreateChatFolderTables : SignalDatabaseMigration { + override fun migrate(context: Application, db: SQLiteDatabase, oldVersion: Int, newVersion: Int) { + db.execSQL( + """ + CREATE TABLE chat_folder ( + _id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT DEFAULT NULL, + position INTEGER DEFAULT 0, + show_unread INTEGER DEFAULT 0, + show_muted INTEGER DEFAULT 0, + show_individual INTEGER DEFAULT 0, + show_groups INTEGER DEFAULT 0, + is_muted INTEGER DEFAULT 0, + folder_type INTEGER DEFAULT 4 + ) + """ + ) + + db.execSQL( + """ + CREATE TABLE chat_folder_membership ( + _id INTEGER PRIMARY KEY AUTOINCREMENT, + chat_folder_id INTEGER NOT NULL REFERENCES chat_folder (_id) ON DELETE CASCADE, + thread_id INTEGER NOT NULL REFERENCES thread (_id) ON DELETE CASCADE, + membership_type INTEGER DEFAULT 1 + ) + """ + ) + + db.execSQL("CREATE INDEX chat_folder_position_index ON chat_folder (position)") + db.execSQL("CREATE INDEX chat_folder_membership_chat_folder_id_index ON chat_folder_membership (chat_folder_id)") + db.execSQL("CREATE INDEX chat_folder_membership_thread_id_index ON chat_folder_membership (thread_id)") + db.execSQL("CREATE INDEX chat_folder_membership_membership_type_index ON chat_folder_membership (membership_type)") + + ChatFolderTables.insertInitialChatFoldersAtCreationTime(db) + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addmembers/AddMembersActivity.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addmembers/AddMembersActivity.java index 153bbe7bb6..e9dcd145a9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addmembers/AddMembersActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addmembers/AddMembersActivity.java @@ -19,6 +19,7 @@ import org.thoughtcrime.securesms.ContactSelectionListFragment; import org.thoughtcrime.securesms.PushContactSelectionActivity; import org.thoughtcrime.securesms.R; +import org.thoughtcrime.securesms.contacts.paged.ChatType; import org.thoughtcrime.securesms.groups.GroupId; import org.thoughtcrime.securesms.groups.SelectionLimits; import org.thoughtcrime.securesms.recipients.Recipient; @@ -30,7 +31,6 @@ import org.thoughtcrime.securesms.util.views.SimpleProgressDialog; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.function.Consumer; @@ -97,7 +97,7 @@ protected void initializeToolbar() { } @Override - public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, String number, @NonNull Consumer callback) { + public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, String number, @NonNull Optional chatType, @NonNull Consumer callback) { if (getGroupId().isV1() && recipientId.isPresent() && !Recipient.resolved(recipientId.get()).getHasE164()) { Toast.makeText(this, R.string.AddMembersActivity__this_person_cant_be_added_to_legacy_groups, Toast.LENGTH_SHORT).show(); callback.accept(false); @@ -139,7 +139,7 @@ public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Opt } @Override - public void onContactDeselected(@NonNull Optional recipientId, String number) { + public void onContactDeselected(@NonNull Optional recipientId, String number, @NonNull Optional chatType) { if (contactsFragment.hasQueryFilter()) { getContactFilterView().clear(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addtogroup/AddToGroupsActivity.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addtogroup/AddToGroupsActivity.java index 4720470231..6f27c54ee7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addtogroup/AddToGroupsActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addtogroup/AddToGroupsActivity.java @@ -8,21 +8,18 @@ import android.widget.Toast; import androidx.annotation.NonNull; -import androidx.appcompat.app.AlertDialog; import androidx.lifecycle.ViewModelProvider; import com.annimon.stream.Stream; import com.google.android.material.dialog.MaterialAlertDialogBuilder; -import org.signal.core.util.concurrent.SimpleTask; import org.thoughtcrime.securesms.ContactSelectionActivity; import org.thoughtcrime.securesms.ContactSelectionListFragment; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.contacts.ContactSelectionDisplayMode; +import org.thoughtcrime.securesms.contacts.paged.ChatType; import org.thoughtcrime.securesms.groups.ui.addtogroup.AddToGroupViewModel.Event; import org.thoughtcrime.securesms.recipients.RecipientId; -import org.thoughtcrime.securesms.recipients.RecipientRepository; -import org.thoughtcrime.securesms.util.views.SimpleProgressDialog; import java.util.ArrayList; import java.util.Collections; @@ -116,7 +113,7 @@ public boolean onOptionsItemSelected(MenuItem item) { } @Override - public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, String number, @NonNull Consumer callback) { + public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, String number, @NonNull Optional chatType, @NonNull Consumer callback) { if (contactsFragment.isMulti()) { throw new UnsupportedOperationException("Not yet built to handle multi-select."); // if (contactsFragment.hasQueryFilter()) { @@ -136,7 +133,7 @@ public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Opt } @Override - public void onContactDeselected(@NonNull Optional recipientId, String number) { + public void onContactDeselected(@NonNull Optional recipientId, String number, @NonNull Optional chatType) { if (contactsFragment.hasQueryFilter()) { getContactFilterView().clear(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/CreateGroupActivity.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/CreateGroupActivity.java index 51bf453d5a..1c4d280d33 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/CreateGroupActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/CreateGroupActivity.java @@ -23,6 +23,7 @@ import org.thoughtcrime.securesms.ContactSelectionListFragment; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.contacts.ContactSelectionDisplayMode; +import org.thoughtcrime.securesms.contacts.paged.ChatType; import org.thoughtcrime.securesms.contacts.sync.ContactDiscovery; import org.thoughtcrime.securesms.groups.ui.creategroup.details.AddGroupDetailsActivity; import org.thoughtcrime.securesms.recipients.Recipient; @@ -109,7 +110,7 @@ protected void onActivityResult(int requestCode, int resultCode, @Nullable Inten } @Override - public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, String number, @NonNull Consumer callback) { + public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, String number, @NonNull Optional chatType, @NonNull Consumer callback) { if (contactsFragment.hasQueryFilter()) { getContactFilterView().clear(); } @@ -145,7 +146,7 @@ public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Opt } @Override - public void onContactDeselected(@NonNull Optional recipientId, String number) { + public void onContactDeselected(@NonNull Optional recipientId, String number, @NonNull Optional chatType) { if (contactsFragment.hasQueryFilter()) { getContactFilterView().clear(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/UserNotificationMigrationJob.java b/app/src/main/java/org/thoughtcrime/securesms/migrations/UserNotificationMigrationJob.java index 9caf693e09..1f8c92d1c7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/UserNotificationMigrationJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/UserNotificationMigrationJob.java @@ -77,7 +77,7 @@ void performMigration() { ThreadTable threadTable = SignalDatabase.threads(); - int threadCount = threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF) + + int threadCount = threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF, null) + threadTable.getArchivedConversationListCount(ConversationFilter.OFF); if (threadCount >= 3) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentRecipientSelectionFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentRecipientSelectionFragment.java index c96f9f1f54..fb05566b95 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentRecipientSelectionFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentRecipientSelectionFragment.java @@ -16,6 +16,7 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.components.ContactFilterView; import org.thoughtcrime.securesms.contacts.ContactSelectionDisplayMode; +import org.thoughtcrime.securesms.contacts.paged.ChatType; import org.thoughtcrime.securesms.conversation.ConversationIntents; import org.thoughtcrime.securesms.database.SignalDatabase; import org.thoughtcrime.securesms.payments.CanNotSendPaymentDialog; @@ -71,7 +72,7 @@ private void initializeSearch() { } @Override - public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, @Nullable String number, @NonNull Consumer callback) { + public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Optional recipientId, @Nullable String number, @NonNull Optional chatType, @NonNull Consumer callback) { if (recipientId.isPresent()) { SimpleTask.run(getViewLifecycleOwner().getLifecycle(), () -> Recipient.resolved(recipientId.get()), @@ -82,7 +83,7 @@ public void onBeforeContactSelected(boolean isFromUnknownSearchKey, @NonNull Opt } @Override - public void onContactDeselected(@NonNull Optional recipientId, @Nullable String number) {} + public void onContactDeselected(@NonNull Optional recipientId, @Nullable String number, @NonNull Optional chatType) {} @Override public void onSelectionChanged() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/select/BaseStoryRecipientSelectionFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/select/BaseStoryRecipientSelectionFragment.kt index f483557d6f..f00aed14fd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/select/BaseStoryRecipientSelectionFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/select/BaseStoryRecipientSelectionFragment.kt @@ -15,6 +15,7 @@ import org.thoughtcrime.securesms.ContactSelectionListFragment import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.contacts.ContactSelectionDisplayMode import org.thoughtcrime.securesms.contacts.HeaderAction +import org.thoughtcrime.securesms.contacts.paged.ChatType import org.thoughtcrime.securesms.contacts.selection.ContactSelectionArguments import org.thoughtcrime.securesms.database.model.DistributionListId import org.thoughtcrime.securesms.groups.SelectionLimits @@ -117,7 +118,7 @@ abstract class BaseStoryRecipientSelectionFragment : Fragment(R.layout.stories_b } } - override fun onBeforeContactSelected(isFromUnknownSearchKey: Boolean, recipientId: Optional, number: String?, callback: Consumer) { + override fun onBeforeContactSelected(isFromUnknownSearchKey: Boolean, recipientId: Optional, number: String?, chatType: Optional, callback: Consumer) { viewModel.addRecipient(recipientId.get()) if (searchField.text.isNotBlank()) { @@ -127,7 +128,7 @@ abstract class BaseStoryRecipientSelectionFragment : Fragment(R.layout.stories_b callback.accept(true) } - override fun onContactDeselected(recipientId: Optional, number: String?) { + override fun onContactDeselected(recipientId: Optional, number: String?, chatType: Optional) { viewModel.removeRecipient(recipientId.get()) } diff --git a/app/src/main/res/drawable/ic_chat_folder_24.xml b/app/src/main/res/drawable/ic_chat_folder_24.xml new file mode 100644 index 0000000000..31a6fa6131 --- /dev/null +++ b/app/src/main/res/drawable/ic_chat_folder_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_drag_handle.xml b/app/src/main/res/drawable/ic_drag_handle.xml new file mode 100644 index 0000000000..dbe204edf0 --- /dev/null +++ b/app/src/main/res/drawable/ic_drag_handle.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pin_20.xml b/app/src/main/res/drawable/ic_pin_20.xml new file mode 100644 index 0000000000..c58ee51556 --- /dev/null +++ b/app/src/main/res/drawable/ic_pin_20.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/layout/chat_folder_item.xml b/app/src/main/res/layout/chat_folder_item.xml new file mode 100644 index 0000000000..5c1ff21514 --- /dev/null +++ b/app/src/main/res/layout/chat_folder_item.xml @@ -0,0 +1,37 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/choose_chats_fragment.xml b/app/src/main/res/layout/choose_chats_fragment.xml new file mode 100644 index 0000000000..b3813decbb --- /dev/null +++ b/app/src/main/res/layout/choose_chats_fragment.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/layout/contact_search_chat_type_item.xml b/app/src/main/res/layout/contact_search_chat_type_item.xml new file mode 100644 index 0000000000..5a1b8d25be --- /dev/null +++ b/app/src/main/res/layout/contact_search_chat_type_item.xml @@ -0,0 +1,56 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/conversation_list_fragment.xml b/app/src/main/res/layout/conversation_list_fragment.xml index c85b052cf5..673eaf3cac 100644 --- a/app/src/main/res/layout/conversation_list_fragment.xml +++ b/app/src/main/res/layout/conversation_list_fragment.xml @@ -32,11 +32,21 @@ app:barrierDirection="bottom" app:constraint_referenced_ids="voice_note_player,banner_compose_view" /> + + + app:layout_constraintTop_toBottomOf="@id/chat_folder_list"> + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index a8d4bcb2a1..02e2bcd1c7 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -245,4 +245,6 @@ 4dp 0dp + 64dp + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 18b8e791fb..dddfda66d1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -369,6 +369,8 @@ Chats Messages + + Chat types Message %s @@ -5035,6 +5037,107 @@ Keyboard Send with enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Messages diff --git a/app/src/test/java/org/thoughtcrime/securesms/conversationlist/UnarchivedConversationListDataSourceTest.java b/app/src/test/java/org/thoughtcrime/securesms/conversationlist/UnarchivedConversationListDataSourceTest.java index 6530c5ffd1..031122ce58 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/conversationlist/UnarchivedConversationListDataSourceTest.java +++ b/app/src/test/java/org/thoughtcrime/securesms/conversationlist/UnarchivedConversationListDataSourceTest.java @@ -13,6 +13,7 @@ import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; +import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFolderRecord; import org.thoughtcrime.securesms.conversationlist.model.ConversationFilter; import org.thoughtcrime.securesms.conversationlist.model.ConversationReader; import org.thoughtcrime.securesms.database.DatabaseObserver; @@ -20,6 +21,8 @@ import org.thoughtcrime.securesms.database.ThreadTable; import org.thoughtcrime.securesms.dependencies.AppDependencies; +import java.util.ArrayList; +import java.util.HashSet; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -45,6 +48,8 @@ public class UnarchivedConversationListDataSourceTest { private ConversationListDataSource.UnarchivedConversationListDataSource testSubject; + private ChatFolderRecord allChatsFolder; + private ThreadTable threadTable; @Before @@ -54,9 +59,11 @@ public void setUp() { when(SignalDatabase.threads()).thenReturn(threadTable); when(AppDependencies.getDatabaseObserver()).thenReturn(mock(DatabaseObserver.class)); - testSubject = new ConversationListDataSource.UnarchivedConversationListDataSource(ConversationFilter.OFF, false); + allChatsFolder = setupAllChatsFolder(); + testSubject = new ConversationListDataSource.UnarchivedConversationListDataSource(allChatsFolder, ConversationFilter.OFF, false); } + @Test public void givenNoConversations_whenIGetTotalCount_thenIExpectZero() { // WHEN @@ -64,9 +71,6 @@ public void givenNoConversations_whenIGetTotalCount_thenIExpectZero() { // THEN assertEquals(0, result); - assertEquals(0, testSubject.getHeaderOffset()); - assertFalse(testSubject.hasPinnedHeader()); - assertFalse(testSubject.hasUnpinnedHeader()); assertFalse(testSubject.hasConversationFilterFooter()); assertFalse(testSubject.hasArchivedFooter()); } @@ -81,28 +85,22 @@ public void givenArchivedConversations_whenIGetTotalCount_thenIExpectOne() { // THEN assertEquals(1, result); - assertEquals(0, testSubject.getHeaderOffset()); - assertFalse(testSubject.hasPinnedHeader()); - assertFalse(testSubject.hasUnpinnedHeader()); assertFalse(testSubject.hasConversationFilterFooter()); assertTrue(testSubject.hasArchivedFooter()); } @Test - public void givenSinglePinnedAndArchivedConversations_whenIGetTotalCount_thenIExpectThree() { + public void givenSinglePinnedAndArchivedConversations_whenIGetTotalCount_thenIExpectTwo() { // GIVEN - when(threadTable.getPinnedConversationListCount(ConversationFilter.OFF)).thenReturn(1); - when(threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF)).thenReturn(1); + when(threadTable.getPinnedConversationListCount(ConversationFilter.OFF, allChatsFolder)).thenReturn(1); + when(threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF, allChatsFolder)).thenReturn(1); when(threadTable.getArchivedConversationListCount(ConversationFilter.OFF)).thenReturn(12); // WHEN int result = testSubject.getTotalCount(); // THEN - assertEquals(3, result); - assertEquals(1, testSubject.getHeaderOffset()); - assertTrue(testSubject.hasPinnedHeader()); - assertFalse(testSubject.hasUnpinnedHeader()); + assertEquals(2, result); assertFalse(testSubject.hasConversationFilterFooter()); assertTrue(testSubject.hasArchivedFooter()); } @@ -110,7 +108,7 @@ public void givenSinglePinnedAndArchivedConversations_whenIGetTotalCount_thenIEx @Test public void givenSingleUnpinnedAndArchivedConversations_whenIGetTotalCount_thenIExpectTwo() { // GIVEN - when(threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF)).thenReturn(1); + when(threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF, allChatsFolder)).thenReturn(1); when(threadTable.getArchivedConversationListCount(ConversationFilter.OFF)).thenReturn(12); // WHEN @@ -118,27 +116,21 @@ public void givenSingleUnpinnedAndArchivedConversations_whenIGetTotalCount_thenI // THEN assertEquals(2, result); - assertEquals(0, testSubject.getHeaderOffset()); - assertFalse(testSubject.hasPinnedHeader()); - assertFalse(testSubject.hasUnpinnedHeader()); assertFalse(testSubject.hasConversationFilterFooter()); assertTrue(testSubject.hasArchivedFooter()); } @Test - public void givenSinglePinnedAndSingleUnpinned_whenIGetTotalCount_thenIExpectFour() { + public void givenSinglePinnedAndSingleUnpinned_whenIGetTotalCount_thenIExpectTwo() { // GIVEN - when(threadTable.getPinnedConversationListCount(ConversationFilter.OFF)).thenReturn(1); - when(threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF)).thenReturn(2); + when(threadTable.getPinnedConversationListCount(ConversationFilter.OFF, allChatsFolder)).thenReturn(1); + when(threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF, allChatsFolder)).thenReturn(2); // WHEN int result = testSubject.getTotalCount(); // THEN - assertEquals(4, result); - assertEquals(2, testSubject.getHeaderOffset()); - assertTrue(testSubject.hasPinnedHeader()); - assertTrue(testSubject.hasUnpinnedHeader()); + assertEquals(2, result); assertFalse(testSubject.hasConversationFilterFooter()); assertFalse(testSubject.hasArchivedFooter()); } @@ -152,8 +144,8 @@ public void givenNoConversations_whenIGetCursor_thenIExpectAnEmptyCursor() { Cursor cursor = testSubject.getCursor(0, 100); // THEN - verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, true, 0, 100); - verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, false, 0, 100); + verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, true, 0, 100, allChatsFolder); + verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, false, 0, 100, allChatsFolder); assertEquals(0, cursor.getCount()); } @@ -168,17 +160,17 @@ public void givenArchivedConversations_whenIGetCursor_thenIExpectOne() { Cursor cursor = testSubject.getCursor(0, 100); // THEN - verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, true, 0, 100); - verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, false, 0, 100); + verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, true, 0, 100, allChatsFolder); + verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, false, 0, 100, allChatsFolder); assertEquals(1, cursor.getCount()); } @Test - public void givenSinglePinnedAndArchivedConversations_whenIGetCursor_thenIExpectThree() { + public void givenSinglePinnedAndArchivedConversations_whenIGetCursor_thenIExpectTwo() { // GIVEN setupThreadDatabaseCursors(1, 0); - when(threadTable.getPinnedConversationListCount(ConversationFilter.OFF)).thenReturn(1); - when(threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF)).thenReturn(1); + when(threadTable.getPinnedConversationListCount(ConversationFilter.OFF, allChatsFolder)).thenReturn(1); + when(threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF, allChatsFolder)).thenReturn(1); when(threadTable.getArchivedConversationListCount(ConversationFilter.OFF)).thenReturn(12); testSubject.getTotalCount(); @@ -186,16 +178,16 @@ public void givenSinglePinnedAndArchivedConversations_whenIGetCursor_thenIExpect Cursor cursor = testSubject.getCursor(0, 100); // THEN - verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, true, 0, 99); - verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, false, 0, 98); - assertEquals(3, cursor.getCount()); + verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, true, 0, 100, allChatsFolder); + verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, false, 0, 99, allChatsFolder); + assertEquals(2, cursor.getCount()); } @Test public void givenSingleUnpinnedAndArchivedConversations_whenIGetCursor_thenIExpectTwo() { // GIVEN setupThreadDatabaseCursors(0, 1); - when(threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF)).thenReturn(1); + when(threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF, allChatsFolder)).thenReturn(1); when(threadTable.getArchivedConversationListCount(ConversationFilter.OFF)).thenReturn(12); testSubject.getTotalCount(); @@ -203,42 +195,42 @@ public void givenSingleUnpinnedAndArchivedConversations_whenIGetCursor_thenIExpe Cursor cursor = testSubject.getCursor(0, 100); // THEN - verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, true, 0, 100); - verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, false, 0, 100); + verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, true, 0, 100, allChatsFolder); + verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, false, 0, 100, allChatsFolder); assertEquals(2, cursor.getCount()); } @Test - public void givenSinglePinnedAndSingleUnpinned_whenIGetCursor_thenIExpectFour() { + public void givenSinglePinnedAndSingleUnpinned_whenIGetCursor_thenIExpectTwo() { // GIVEN setupThreadDatabaseCursors(1, 1); - when(threadTable.getPinnedConversationListCount(ConversationFilter.OFF)).thenReturn(1); - when(threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF)).thenReturn(2); + when(threadTable.getPinnedConversationListCount(ConversationFilter.OFF, allChatsFolder)).thenReturn(1); + when(threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF, allChatsFolder)).thenReturn(2); testSubject.getTotalCount(); // WHEN Cursor cursor = testSubject.getCursor(0, 100); // THEN - verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, true, 0, 99); - verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, false, 0, 97); - assertEquals(4, cursor.getCount()); + verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, true, 0, 100, allChatsFolder); + verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, false, 0, 99, allChatsFolder); + assertEquals(2, cursor.getCount()); } @Test public void givenLoadingSecondPage_whenIGetCursor_thenIExpectProperOffsetAndCursorCount() { // GIVEN setupThreadDatabaseCursors(0, 100); - when(threadTable.getPinnedConversationListCount(ConversationFilter.OFF)).thenReturn(4); - when(threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF)).thenReturn(104); + when(threadTable.getPinnedConversationListCount(ConversationFilter.OFF, allChatsFolder)).thenReturn(4); + when(threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF, allChatsFolder)).thenReturn(104); testSubject.getTotalCount(); // WHEN Cursor cursor = testSubject.getCursor(50, 100); // THEN - verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, true, 50, 100); - verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, false, 44, 100); + verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, true, 50, 100, allChatsFolder); + verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, false, 46, 100, allChatsFolder); assertEquals(100, cursor.getCount()); } @@ -246,8 +238,8 @@ public void givenLoadingSecondPage_whenIGetCursor_thenIExpectProperOffsetAndCurs public void givenHasArchivedAndLoadingLastPage_whenIGetCursor_thenIExpectProperOffsetAndCursorCount() { // GIVEN setupThreadDatabaseCursors(0, 99); - when(threadTable.getPinnedConversationListCount(ConversationFilter.OFF)).thenReturn(4); - when(threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF)).thenReturn(103); + when(threadTable.getPinnedConversationListCount(ConversationFilter.OFF, allChatsFolder)).thenReturn(4); + when(threadTable.getUnarchivedConversationListCount(ConversationFilter.OFF, allChatsFolder)).thenReturn(103); when(threadTable.getArchivedConversationListCount(ConversationFilter.OFF)).thenReturn(12); testSubject.getTotalCount(); @@ -255,8 +247,8 @@ public void givenHasArchivedAndLoadingLastPage_whenIGetCursor_thenIExpectProperO Cursor cursor = testSubject.getCursor(50, 100); // THEN - verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, true, 50, 100); - verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, false, 44, 100); + verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, true, 50, 100, allChatsFolder); + verify(threadTable).getUnarchivedConversationList(ConversationFilter.OFF, false, 46, 100, allChatsFolder); assertEquals(100, cursor.getCount()); cursor.moveToLast(); @@ -266,10 +258,10 @@ public void givenHasArchivedAndLoadingLastPage_whenIGetCursor_thenIExpectProperO @Test public void givenHasNoArchivedAndIsFiltered_whenIGetCursor_thenIExpectConversationFilterFooter() { // GIVEN - ConversationListDataSource.UnarchivedConversationListDataSource testSubject = new ConversationListDataSource.UnarchivedConversationListDataSource(ConversationFilter.UNREAD, false); + ConversationListDataSource.UnarchivedConversationListDataSource testSubject = new ConversationListDataSource.UnarchivedConversationListDataSource(allChatsFolder, ConversationFilter.UNREAD, false); setupThreadDatabaseCursors(0, 3); - when(threadTable.getPinnedConversationListCount(ConversationFilter.UNREAD)).thenReturn(0); - when(threadTable.getUnarchivedConversationListCount(ConversationFilter.UNREAD)).thenReturn(3); + when(threadTable.getPinnedConversationListCount(ConversationFilter.UNREAD, allChatsFolder)).thenReturn(0); + when(threadTable.getUnarchivedConversationListCount(ConversationFilter.UNREAD, allChatsFolder)).thenReturn(3); when(threadTable.getArchivedConversationListCount(ConversationFilter.UNREAD)).thenReturn(0); testSubject.getTotalCount(); @@ -292,7 +284,26 @@ private void setupThreadDatabaseCursors(int pinned, int unpinned) { Cursor unpinnedCursor = mock(Cursor.class); when(unpinnedCursor.getCount()).thenReturn(unpinned); - when(threadTable.getUnarchivedConversationList(any(), eq(true), anyLong(), anyLong())).thenReturn(pinnedCursor); - when(threadTable.getUnarchivedConversationList(any(), eq(false), anyLong(), anyLong())).thenReturn(unpinnedCursor); + when(threadTable.getUnarchivedConversationList(any(), eq(true), anyLong(), anyLong(), any())).thenReturn(pinnedCursor); + when(threadTable.getUnarchivedConversationList(any(), eq(false), anyLong(), anyLong(), any())).thenReturn(unpinnedCursor); + } + + private ChatFolderRecord setupAllChatsFolder() { + return new ChatFolderRecord( + 1, + "", + -1, + new ArrayList<>(), + new ArrayList<>(), + new HashSet<>(), + new HashSet<>(), + false, + false, + false, + false, + false, + ChatFolderRecord.FolderType.ALL, + 0 + ); } } \ No newline at end of file diff --git a/core-ui/src/main/java/org/signal/core/ui/Dialogs.kt b/core-ui/src/main/java/org/signal/core/ui/Dialogs.kt index b0050b5b39..ce5ac68cce 100644 --- a/core-ui/src/main/java/org/signal/core/ui/Dialogs.kt +++ b/core-ui/src/main/java/org/signal/core/ui/Dialogs.kt @@ -75,6 +75,7 @@ object Dialogs { confirm: String, onConfirm: () -> Unit, onDismiss: () -> Unit, + onDismissRequest: () -> Unit = onDismiss, modifier: Modifier = Modifier, dismiss: String = NoDismiss, confirmColor: Color = Color.Unspecified, @@ -82,8 +83,14 @@ object Dialogs { properties: DialogProperties = DialogProperties() ) { androidx.compose.material3.AlertDialog( - onDismissRequest = onDismiss, - title = { Text(text = title) }, + onDismissRequest = onDismissRequest, + title = if (title.isNotEmpty()) { + { + Text(text = title) + } + } else { + null + }, text = { Text(text = body) }, confirmButton = { TextButton(onClick = { diff --git a/core-ui/src/main/java/org/signal/core/ui/copied/androidx/compose/DragAndDrop.kt b/core-ui/src/main/java/org/signal/core/ui/copied/androidx/compose/DragAndDrop.kt new file mode 100644 index 0000000000..053fd0ff9c --- /dev/null +++ b/core-ui/src/main/java/org/signal/core/ui/copied/androidx/compose/DragAndDrop.kt @@ -0,0 +1,185 @@ +package org.signal.core.ui.copied.androidx.compose + +import androidx.compose.animation.core.Animatable +import androidx.compose.animation.core.Spring +import androidx.compose.animation.core.spring +import androidx.compose.foundation.gestures.detectDragGesturesAfterLongPress +import androidx.compose.foundation.gestures.scrollBy +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.lazy.LazyItemScope +import androidx.compose.foundation.lazy.LazyListItemInfo +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableFloatStateOf +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.input.pointer.pointerInput +import androidx.compose.ui.zIndex +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.channels.Channel +import kotlinx.coroutines.launch + +/** + * From AndroidX Compose demo + * https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/LazyColumnDragAndDropDemo.kt + * + * Allows for dragging and dropping to reorder within lazy columns + */ +@Composable +fun rememberDragDropState(lazyListState: LazyListState, onMove: (Int, Int) -> Unit): DragDropState { + val scope = rememberCoroutineScope() + val state = + remember(lazyListState) { + DragDropState(state = lazyListState, onMove = onMove, scope = scope) + } + LaunchedEffect(state) { + while (true) { + val diff = state.scrollChannel.receive() + lazyListState.scrollBy(diff) + } + } + return state +} + +class DragDropState +internal constructor( + private val state: LazyListState, + private val scope: CoroutineScope, + private val onMove: (Int, Int) -> Unit +) { + var draggingItemIndex by mutableStateOf(null) + private set + + internal val scrollChannel = Channel() + + private var draggingItemDraggedDelta by mutableFloatStateOf(0f) + private var draggingItemInitialOffset by mutableIntStateOf(0) + internal val draggingItemOffset: Float + get() = + draggingItemLayoutInfo?.let { item -> + draggingItemInitialOffset + draggingItemDraggedDelta - item.offset + } ?: 0f + + private val draggingItemLayoutInfo: LazyListItemInfo? + get() = state.layoutInfo.visibleItemsInfo.firstOrNull { it.index == draggingItemIndex } + + internal var previousIndexOfDraggedItem by mutableStateOf(null) + private set + + internal var previousItemOffset = Animatable(0f) + private set + + internal fun onDragStart(offset: Offset) { + state.layoutInfo.visibleItemsInfo + .firstOrNull { item -> offset.y.toInt() in item.offset..(item.offset + item.size) } + ?.also { + draggingItemIndex = it.index + draggingItemInitialOffset = it.offset + } + } + + internal fun onDragInterrupted() { + if (draggingItemIndex != null) { + previousIndexOfDraggedItem = draggingItemIndex + val startOffset = draggingItemOffset + scope.launch { + previousItemOffset.snapTo(startOffset) + previousItemOffset.animateTo( + 0f, + spring(stiffness = Spring.StiffnessMediumLow, visibilityThreshold = 1f) + ) + previousIndexOfDraggedItem = null + } + } + draggingItemDraggedDelta = 0f + draggingItemIndex = null + draggingItemInitialOffset = 0 + } + + internal fun onDrag(offset: Offset) { + draggingItemDraggedDelta += offset.y + + val draggingItem = draggingItemLayoutInfo ?: return + val startOffset = draggingItem.offset + draggingItemOffset + val endOffset = startOffset + draggingItem.size + val middleOffset = startOffset + (endOffset - startOffset) / 2f + + val targetItem = + state.layoutInfo.visibleItemsInfo.find { item -> + middleOffset.toInt() in item.offset..item.offsetEnd && + draggingItem.index != item.index + } + if (targetItem != null) { + if ( + draggingItem.index == state.firstVisibleItemIndex || + targetItem.index == state.firstVisibleItemIndex + ) { + state.requestScrollToItem( + state.firstVisibleItemIndex, + state.firstVisibleItemScrollOffset + ) + } + onMove.invoke(draggingItem.index, targetItem.index) + draggingItemIndex = targetItem.index + } else { + val overscroll = + when { + draggingItemDraggedDelta > 0 -> + (endOffset - state.layoutInfo.viewportEndOffset).coerceAtLeast(0f) + draggingItemDraggedDelta < 0 -> + (startOffset - state.layoutInfo.viewportStartOffset).coerceAtMost(0f) + else -> 0f + } + if (overscroll != 0f) { + scrollChannel.trySend(overscroll) + } + } + } + + private val LazyListItemInfo.offsetEnd: Int + get() = this.offset + this.size +} + +fun Modifier.dragContainer(dragDropState: DragDropState): Modifier { + return pointerInput(dragDropState) { + detectDragGesturesAfterLongPress( + onDrag = { change, offset -> + change.consume() + dragDropState.onDrag(offset = offset) + }, + onDragStart = { offset -> dragDropState.onDragStart(offset) }, + onDragEnd = { dragDropState.onDragInterrupted() }, + onDragCancel = { dragDropState.onDragInterrupted() } + ) + } +} + +@Composable +fun LazyItemScope.DraggableItem( + dragDropState: DragDropState, + index: Int, + modifier: Modifier = Modifier, + content: @Composable ColumnScope.(isDragging: Boolean) -> Unit +) { + val dragging = index == dragDropState.draggingItemIndex + val draggingModifier = + if (dragging) { + Modifier.zIndex(1f).graphicsLayer { translationY = dragDropState.draggingItemOffset } + } else if (index == dragDropState.previousIndexOfDraggedItem) { + Modifier.zIndex(1f).graphicsLayer { + translationY = dragDropState.previousItemOffset.value + } + } else { + Modifier.animateItem(fadeInSpec = null, fadeOutSpec = null) + } + Column(modifier = modifier.then(draggingModifier)) { content(dragging) } +} From 6b66e4666b8d2d4586eee93094a19818662a2fdf Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Fri, 11 Oct 2024 14:23:22 -0300 Subject: [PATCH 03/51] Add update send job for call link when joining by url. --- .../thoughtcrime/securesms/database/CallTable.kt | 14 ++++++++++---- .../securesms/messages/SyncMessageProcessor.kt | 2 +- .../service/webrtc/SignalCallManager.java | 3 +-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/CallTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/CallTable.kt index 1d8f1bc5b5..6d34679eeb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/CallTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/CallTable.kt @@ -36,6 +36,7 @@ import org.thoughtcrime.securesms.calls.log.CallLogRow import org.thoughtcrime.securesms.database.model.GroupCallUpdateDetailsUtil import org.thoughtcrime.securesms.database.model.MessageId import org.thoughtcrime.securesms.dependencies.AppDependencies +import org.thoughtcrime.securesms.jobs.CallLinkUpdateSendJob import org.thoughtcrime.securesms.jobs.CallSyncEventJob import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientId @@ -589,15 +590,15 @@ class CallTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTabl AppDependencies.databaseObserver.notifyCallUpdateObservers() } - fun insertOrUpdateAdHocCallFromObserveEvent( + fun insertOrUpdateAdHocCallFromRemoteObserveEvent( callRecipient: Recipient, timestamp: Long, callId: Long ) { - handleCallLinkUpdate(callRecipient, timestamp, CallId(callId), Direction.INCOMING) + handleCallLinkUpdate(callRecipient, timestamp, CallId(callId), Direction.INCOMING, skipSyncOnInsert = true) } - fun insertAdHocCallFromObserveEvent( + fun insertAdHocCallFromLocalObserveEvent( callRecipient: Recipient, timestamp: Long, eraId: String @@ -693,7 +694,8 @@ class CallTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTabl timestamp: Long, callId: CallId?, direction: Direction = Direction.OUTGOING, - skipTimestampUpdate: Boolean = false + skipTimestampUpdate: Boolean = false, + skipSyncOnInsert: Boolean = false ): Boolean { check(callLinkRecipient.isCallLink) @@ -734,6 +736,10 @@ class CallTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTabl Log.d(TAG, "Inserted new call event for call link. Call Id: $callId") AppDependencies.databaseObserver.notifyCallUpdateObservers() + if (!skipSyncOnInsert) { + AppDependencies.jobManager.add(CallLinkUpdateSendJob(callLinkRecipient.requireCallLinkRoomId())) + } + true } else false } diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt index 8dbd453d45..f5ef7ca7f7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt @@ -1421,7 +1421,7 @@ object SyncMessageProcessor { } val recipient = resolveCallLinkRecipient(callEvent) - SignalDatabase.calls.insertOrUpdateAdHocCallFromObserveEvent( + SignalDatabase.calls.insertOrUpdateAdHocCallFromRemoteObserveEvent( callRecipient = recipient, timestamp = callEvent.timestamp!!, callId = callId diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java index 34b8dc6b4f..cda5859fb6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java @@ -68,7 +68,6 @@ import org.thoughtcrime.securesms.service.webrtc.state.WebRtcServiceState; import org.thoughtcrime.securesms.util.AppForegroundObserver; import org.thoughtcrime.securesms.util.RecipientAccessList; -import org.thoughtcrime.securesms.util.RemoteConfig; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.rx.RxStore; @@ -424,7 +423,7 @@ public void peekCallLinkCall(@NonNull RecipientId id) { String eraId = info.getEraId(); if (eraId != null && !info.getJoinedMembers().isEmpty()) { - if (SignalDatabase.calls().insertAdHocCallFromObserveEvent(callLinkRecipient, System.currentTimeMillis(), eraId)) { + if (SignalDatabase.calls().insertAdHocCallFromLocalObserveEvent(callLinkRecipient, System.currentTimeMillis(), eraId)) { AppDependencies.getJobManager() .add(CallSyncEventJob.createForObserved(callLinkRecipient.getId(), CallId.fromEra(eraId).longValue())); } From bfa5703aaaa0687b40da8b53811de07244539a18 Mon Sep 17 00:00:00 2001 From: Michelle Tang Date: Fri, 11 Oct 2024 10:59:07 -0700 Subject: [PATCH 04/51] Add context menus to chat folders. --- .../settings/app/AppSettingsActivity.kt | 21 ++- .../chats/folders/ChatFolderContextMenu.kt | 122 ++++++++++++++++++ .../app/chats/folders/ChatFoldersFragment.kt | 3 +- .../chats/folders/ChatFoldersRepository.kt | 4 + .../app/chats/folders/ChatFoldersViewModel.kt | 16 ++- .../chats/folders/CreateFoldersFragment.kt | 11 ++ .../conversationlist/ChatFolderAdapter.kt | 21 +++ .../ConversationListFragment.java | 38 ++++++ .../ConversationListViewModel.kt | 38 ++++++ .../securesms/database/ChatFolderTables.kt | 58 ++++++++- .../securesms/database/ThreadTable.kt | 41 ++++++ .../main/res/drawable/symbol_chat_check.xml | 13 ++ .../main/res/drawable/symbol_exchange_24.xml | 9 ++ app/src/main/res/navigation/app_settings.xml | 56 ++++++++ .../app_settings_with_change_number.xml | 21 +++ app/src/main/res/values/strings.xml | 12 ++ 16 files changed, 474 insertions(+), 10 deletions(-) create mode 100644 app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderContextMenu.kt create mode 100644 app/src/main/res/drawable/symbol_chat_check.xml create mode 100644 app/src/main/res/drawable/symbol_exchange_24.xml diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt index 483ec6a3c8..8531830af4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt @@ -11,6 +11,7 @@ import org.signal.donations.InAppPaymentType import org.thoughtcrime.securesms.MainActivity import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.settings.DSLSettingsActivity +import org.thoughtcrime.securesms.components.settings.app.chats.folders.CreateFoldersFragmentArgs import org.thoughtcrime.securesms.components.settings.app.notifications.profiles.EditNotificationProfileScheduleFragmentArgs import org.thoughtcrime.securesms.components.settings.app.subscription.InAppPaymentComponent import org.thoughtcrime.securesms.components.settings.app.subscription.StripeRepository @@ -68,6 +69,10 @@ class AppSettingsActivity : DSLSettingsActivity(), InAppPaymentComponent { StartLocation.USERNAME_LINK -> AppSettingsFragmentDirections.actionDirectToUsernameLinkSettings() StartLocation.RECOVER_USERNAME -> AppSettingsFragmentDirections.actionDirectToUsernameRecovery() StartLocation.REMOTE_BACKUPS -> AppSettingsFragmentDirections.actionDirectToRemoteBackupsSettingsFragment() + StartLocation.CHAT_FOLDERS -> AppSettingsFragmentDirections.actionDirectToChatFoldersFragment() + StartLocation.CREATE_CHAT_FOLDER -> AppSettingsFragmentDirections.actionDirectToCreateFoldersFragment( + CreateFoldersFragmentArgs.fromBundle(intent.getBundleExtra(START_ARGUMENTS)!!).folderId + ) } } @@ -198,6 +203,18 @@ class AppSettingsActivity : DSLSettingsActivity(), InAppPaymentComponent { @JvmStatic fun remoteBackups(context: Context): Intent = getIntentForStartLocation(context, StartLocation.REMOTE_BACKUPS) + @JvmStatic + fun chatFolders(context: Context): Intent = getIntentForStartLocation(context, StartLocation.CHAT_FOLDERS) + + @JvmStatic + fun createChatFolder(context: Context, id: Long = -1): Intent { + val arguments = CreateFoldersFragmentArgs.Builder(id) + .build() + .toBundle() + + return getIntentForStartLocation(context, StartLocation.CREATE_CHAT_FOLDER).putExtra(START_ARGUMENTS, arguments) + } + private fun getIntentForStartLocation(context: Context, startLocation: StartLocation): Intent { return Intent(context, AppSettingsActivity::class.java) .putExtra(ARG_NAV_GRAPH, R.navigation.app_settings_with_change_number) @@ -222,7 +239,9 @@ class AppSettingsActivity : DSLSettingsActivity(), InAppPaymentComponent { LINKED_DEVICES(13), USERNAME_LINK(14), RECOVER_USERNAME(15), - REMOTE_BACKUPS(16); + REMOTE_BACKUPS(16), + CHAT_FOLDERS(17), + CREATE_CHAT_FOLDER(18); companion object { fun fromCode(code: Int?): StartLocation { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderContextMenu.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderContextMenu.kt new file mode 100644 index 0000000000..e80a1df2f4 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderContextMenu.kt @@ -0,0 +1,122 @@ +package org.thoughtcrime.securesms.components.settings.app.chats.folders + +import android.content.Context +import android.view.View +import android.view.ViewGroup +import org.signal.core.util.DimensionUnit +import org.thoughtcrime.securesms.R +import org.thoughtcrime.securesms.components.menu.ActionItem +import org.thoughtcrime.securesms.components.menu.SignalContextMenu + +/** + * A context menu shown when long pressing on a chat folder. + */ +object ChatFolderContextMenu { + + fun show( + context: Context, + anchorView: View, + rootView: ViewGroup = anchorView.rootView as ViewGroup, + folderType: ChatFolderRecord.FolderType, + onEdit: () -> Unit = {}, + onAdd: () -> Unit = {}, + onMuteAll: () -> Unit = {}, + onReadAll: () -> Unit = {}, + onDelete: () -> Unit = {}, + onReorder: () -> Unit = {} + ) { + show( + context = context, + anchorView = anchorView, + rootView = rootView, + folderType = folderType, + callbacks = object : Callbacks { + override fun onEdit() = onEdit() + override fun onAdd() = onAdd() + override fun onMuteAll() = onMuteAll() + override fun onReadAll() = onReadAll() + override fun onDelete() = onDelete() + override fun onReorder() = onReorder() + } + ) + } + + private fun show( + context: Context, + anchorView: View, + rootView: ViewGroup, + folderType: ChatFolderRecord.FolderType, + callbacks: Callbacks + ) { + val actions = mutableListOf().apply { + if (folderType == ChatFolderRecord.FolderType.ALL) { + add( + ActionItem(R.drawable.symbol_plus_24, context.getString(R.string.ChatFoldersFragment__add_new_folder)) { + callbacks.onAdd() + } + ) + add( + ActionItem(R.drawable.symbol_bell_slash_24, context.getString(R.string.ChatFoldersFragment__mute_all)) { + callbacks.onMuteAll() + } + ) + add( + ActionItem(R.drawable.symbol_chat_check, context.getString(R.string.ChatFoldersFragment__mark_all_read)) { + callbacks.onReadAll() + } + ) + add( + ActionItem(R.drawable.symbol_exchange_24, context.getString(R.string.ChatFoldersFragment__reorder_folder)) { + callbacks.onReorder() + } + ) + } else { + add( + ActionItem(R.drawable.symbol_edit_24, context.getString(R.string.ChatFoldersFragment__edit_folder)) { + callbacks.onEdit() + } + ) + add( + ActionItem(R.drawable.symbol_plus_24, context.getString(R.string.ChatFoldersFragment__add_new_folder)) { + callbacks.onAdd() + } + ) + add( + ActionItem(R.drawable.symbol_bell_slash_24, context.getString(R.string.ChatFoldersFragment__mute_all)) { + callbacks.onMuteAll() + } + ) + add( + ActionItem(R.drawable.symbol_chat_check, context.getString(R.string.ChatFoldersFragment__mark_all_read)) { + callbacks.onReadAll() + } + ) + add( + ActionItem(R.drawable.symbol_trash_24, context.getString(R.string.ChatFoldersFragment__delete_folder)) { + callbacks.onDelete() + } + ) + add( + ActionItem(R.drawable.symbol_exchange_24, context.getString(R.string.ChatFoldersFragment__reorder_folder)) { + callbacks.onReorder() + } + ) + } + } + + SignalContextMenu.Builder(anchorView, rootView) + .preferredHorizontalPosition(SignalContextMenu.HorizontalPosition.START) + .preferredVerticalPosition(SignalContextMenu.VerticalPosition.BELOW) + .offsetY(DimensionUnit.DP.toPixels(8f).toInt()) + .show(actions) + } + + private interface Callbacks { + fun onEdit() + fun onAdd() + fun onMuteAll() + fun onReadAll() + fun onDelete() + fun onReorder() + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersFragment.kt index c6079035ab..0e2a342685 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersFragment.kt @@ -77,8 +77,7 @@ class ChatFoldersFragment : ComposeFragment() { state = state, modifier = Modifier.padding(contentPadding), onFolderClicked = { - viewModel.setCurrentFolder(it) - navController.safeNavigate(R.id.action_chatFoldersFragment_to_createFoldersFragment) + navController.safeNavigate(ChatFoldersFragmentDirections.actionChatFoldersFragmentToCreateFoldersFragment(it.id)) }, onAdd = { folder -> Toast.makeText(requireContext(), getString(R.string.ChatFoldersFragment__folder_added, folder.name), Toast.LENGTH_SHORT).show() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersRepository.kt index 54d65b7673..c8fb037850 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersRepository.kt @@ -40,4 +40,8 @@ object ChatFoldersRepository { fun updatePositions(folders: List) { SignalDatabase.chatFolders.updatePositions(folders) } + + fun getFolder(id: Long): ChatFolderRecord { + return SignalDatabase.chatFolders.getChatFolder(id) + } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersViewModel.kt index fe85436910..420db6e0f5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersViewModel.kt @@ -28,7 +28,12 @@ class ChatFoldersViewModel : ViewModel() { val suggestedFolders = getSuggestedFolders(context, folders) internalState.update { - it.copy(folders = folders, suggestedFolders = suggestedFolders) + it.copy( + folders = folders, + suggestedFolders = suggestedFolders, + currentFolder = ChatFolderRecord(), + originalFolder = ChatFolderRecord() + ) } } } @@ -310,4 +315,13 @@ class ChatFoldersViewModel : ViewModel() { originalFolder.excludedRecipients != currentFolder.excludedRecipients } } + + fun setCurrentFolderId(folderId: Long) { + if (folderId != -1L) { + viewModelScope.launch(Dispatchers.IO) { + val folder = ChatFoldersRepository.getFolder(folderId) + setCurrentFolder(folder) + } + } + } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/CreateFoldersFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/CreateFoldersFragment.kt index 296c22ed71..1b907ac69b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/CreateFoldersFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/CreateFoldersFragment.kt @@ -27,6 +27,7 @@ import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TextField import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -87,6 +88,12 @@ class CreateFoldersFragment : ComposeFragment() { val focusRequester = remember { FocusRequester() } val isNewFolder = state.originalFolder.id == -1L + LaunchedEffect(Unit) { + if (state.originalFolder == state.currentFolder) { + viewModel.setCurrentFolderId(arguments?.getLong(KEY_FOLDER_ID) ?: -1) + } + } + Scaffolds.Settings( title = if (isNewFolder) stringResource(id = R.string.CreateFoldersFragment__create_a_folder) else stringResource(id = R.string.CreateFoldersFragment__edit_folder), onNavigationClick = { @@ -143,6 +150,10 @@ class CreateFoldersFragment : ComposeFragment() { ) } } + + companion object { + private val KEY_FOLDER_ID = "folder_id" + } } @Composable diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ChatFolderAdapter.kt b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ChatFolderAdapter.kt index 10f33091f5..82dd3d9285 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ChatFolderAdapter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ChatFolderAdapter.kt @@ -6,6 +6,7 @@ import android.view.View import android.widget.TextView import androidx.core.content.ContextCompat import org.thoughtcrime.securesms.R +import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFolderContextMenu import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFolderRecord import org.thoughtcrime.securesms.util.adapter.mapping.LayoutFactory import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter @@ -36,6 +37,20 @@ class ChatFolderAdapter(val callbacks: Callbacks) : MappingAdapter() { itemView.setOnClickListener { callbacks.onChatFolderClicked(model.chatFolder) } + itemView.setOnLongClickListener { view -> + ChatFolderContextMenu.show( + context = itemView.context, + anchorView = view, + folderType = model.chatFolder.folderType, + onEdit = { callbacks.onEdit(model.chatFolder) }, + onAdd = { callbacks.onAdd() }, + onMuteAll = { callbacks.onMuteAll(model.chatFolder) }, + onReadAll = { callbacks.onReadAll(model.chatFolder) }, + onDelete = { callbacks.onDelete(model.chatFolder) }, + onReorder = { callbacks.onReorder() } + ) + true + } if (model.isSelected) { itemView.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, R.color.signal_colorSurfaceVariant)) } else { @@ -54,5 +69,11 @@ class ChatFolderAdapter(val callbacks: Callbacks) : MappingAdapter() { interface Callbacks { fun onChatFolderClicked(chatFolder: ChatFolderRecord) + fun onEdit(chatFolder: ChatFolderRecord) + fun onAdd() + fun onMuteAll(chatFolder: ChatFolderRecord) + fun onReadAll(chatFolder: ChatFolderRecord) + fun onDelete(chatFolder: ChatFolderRecord) + fun onReorder() } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java index 1b0a3858a9..c91ba37a3d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java @@ -1666,6 +1666,44 @@ public void onChatFolderClicked(@NonNull ChatFolderRecord chatFolder) { viewModel.select(chatFolder); } + @Override + public void onEdit(@NonNull ChatFolderRecord chatFolder) { + startActivity(AppSettingsActivity.createChatFolder(requireContext(), chatFolder.getId())); + } + + @Override + public void onAdd() { + startActivity(AppSettingsActivity.createChatFolder(requireContext(), -1)); + } + + @Override + public void onMuteAll(@NonNull ChatFolderRecord chatFolder) { + MuteDialog.show(requireContext(), until -> viewModel.onMuteChatFolder(chatFolder, until)); + } + + @Override + public void onReadAll(@NonNull ChatFolderRecord chatFolder) { + if (chatFolder.getFolderType() == ChatFolderRecord.FolderType.ALL) { + handleMarkAllRead(); + } else { + viewModel.markChatFolderRead(chatFolder); + } + } + + @Override + public void onDelete(@NonNull ChatFolderRecord chatFolder) { + new MaterialAlertDialogBuilder(requireActivity()) + .setMessage(getString(R.string.CreateFoldersFragment__delete_this_chat_folder)) + .setPositiveButton(R.string.delete, (dialog, which) -> viewModel.deleteChatFolder(chatFolder)) + .setNegativeButton(android.R.string.cancel, null) + .show(); + } + + @Override + public void onReorder() { + startActivity(AppSettingsActivity.chatFolders(requireContext())); + } + private class ArchiveListenerCallback extends ItemTouchHelper.SimpleCallback { private static final long SWIPE_ANIMATION_DURATION = 175; diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.kt index 8aa2abe23e..62a30fb54e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.kt @@ -31,7 +31,10 @@ import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.megaphone.Megaphone import org.thoughtcrime.securesms.megaphone.MegaphoneRepository import org.thoughtcrime.securesms.megaphone.Megaphones +import org.thoughtcrime.securesms.notifications.MarkReadReceiver import org.thoughtcrime.securesms.notifications.profiles.NotificationProfile +import org.thoughtcrime.securesms.recipients.Recipient +import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.util.rx.RxStore import org.whispersystems.signalservice.api.websocket.WebSocketConnectionState import java.util.concurrent.TimeUnit @@ -259,6 +262,41 @@ class ConversationListViewModel( } } + fun onMuteChatFolder(chatFolder: ChatFolderRecord, until: Long) { + viewModelScope.launch(Dispatchers.IO) { + val ids = SignalDatabase.threads.getRecipientIdsByChatFolder(chatFolder) + val recipientIds: List = ids.filter { id -> + Recipient.resolved(id).muteUntil != until + } + if (recipientIds.isNotEmpty()) { + SignalDatabase.recipients.setMuted(recipientIds, until) + } + } + } + + fun deleteChatFolder(chatFolder: ChatFolderRecord) { + viewModelScope.launch(Dispatchers.IO) { + SignalDatabase.chatFolders.deleteChatFolder(chatFolder) + val updatedFolders = folders.filter { folder -> folder.chatFolder.id != chatFolder.id } + + store.update { + it.copy( + currentFolder = updatedFolders.first().chatFolder, + chatFolders = updatedFolders + ) + } + } + } + + fun markChatFolderRead(chatFolder: ChatFolderRecord) { + viewModelScope.launch(Dispatchers.IO) { + val ids = SignalDatabase.threads.getThreadIdsByChatFolder(chatFolder) + val messageIds = SignalDatabase.threads.setRead(ids, false) + AppDependencies.messageNotifier.updateNotification(AppDependencies.application) + MarkReadReceiver.process(messageIds) + } + } + private data class ConversationListState( val chatFolders: List = emptyList(), val currentFolder: ChatFolderRecord = ChatFolderRecord(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ChatFolderTables.kt b/app/src/main/java/org/thoughtcrime/securesms/database/ChatFolderTables.kt index 5fdcbe013e..17d182fe3c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ChatFolderTables.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ChatFolderTables.kt @@ -9,6 +9,7 @@ import org.signal.core.util.groupBy import org.signal.core.util.insertInto import org.signal.core.util.readToList import org.signal.core.util.readToSingleInt +import org.signal.core.util.readToSingleObject import org.signal.core.util.requireBoolean import org.signal.core.util.requireInt import org.signal.core.util.requireLong @@ -117,6 +118,37 @@ class ChatFolderTables(context: Context?, databaseHelper: SignalDatabase?) : Dat .run() } + /** + * Returns a single chat folder that corresponds to that id + */ + fun getChatFolder(id: Long): ChatFolderRecord { + val includedChats: Map> = getIncludedChats(id) + val excludedChats: Map> = getExcludedChats(id) + + val folder = readableDatabase + .select() + .from(ChatFolderTable.TABLE_NAME) + .where("${ChatFolderTable.ID} = ?", id) + .run() + .readToSingleObject { cursor -> + ChatFolderRecord( + id = id, + name = cursor.requireString(ChatFolderTable.NAME) ?: "", + position = cursor.requireInt(ChatFolderTable.POSITION), + showUnread = cursor.requireBoolean(ChatFolderTable.SHOW_UNREAD), + showMutedChats = cursor.requireBoolean(ChatFolderTable.SHOW_MUTED), + showIndividualChats = cursor.requireBoolean(ChatFolderTable.SHOW_INDIVIDUAL), + showGroupChats = cursor.requireBoolean(ChatFolderTable.SHOW_GROUPS), + isMuted = cursor.requireBoolean(ChatFolderTable.IS_MUTED), + folderType = ChatFolderRecord.FolderType.deserialize(cursor.requireInt(ChatFolderTable.FOLDER_TYPE)), + includedChats = includedChats[id] ?: emptyList(), + excludedChats = excludedChats[id] ?: emptyList() + ) + } + + return folder ?: ChatFolderRecord() + } + /** * Maps the chat folder ids to its corresponding chat folder */ @@ -158,13 +190,20 @@ class ChatFolderTables(context: Context?, databaseHelper: SignalDatabase?) : Dat } /** - * Maps chat folder ids to all of its corresponding included chats + * Maps a chat folder id to all of its corresponding included chats. + * If an id is not specified, all chat folder ids will be mapped. */ - private fun getIncludedChats(): Map> { + private fun getIncludedChats(id: Long? = null): Map> { + val whereQuery = if (id != null) { + "${ChatFolderMembershipTable.MEMBERSHIP_TYPE} = ${MembershipType.INCLUDED.value} AND ${ChatFolderMembershipTable.CHAT_FOLDER_ID} = $id" + } else { + "${ChatFolderMembershipTable.MEMBERSHIP_TYPE} = ${MembershipType.INCLUDED.value}" + } + return readableDatabase .select() .from(ChatFolderMembershipTable.TABLE_NAME) - .where("${ChatFolderMembershipTable.MEMBERSHIP_TYPE} = ${MembershipType.INCLUDED.value}") + .where(whereQuery) .run() .groupBy { cursor -> cursor.requireLong(ChatFolderMembershipTable.CHAT_FOLDER_ID) to cursor.requireLong(ChatFolderMembershipTable.THREAD_ID) @@ -172,13 +211,20 @@ class ChatFolderTables(context: Context?, databaseHelper: SignalDatabase?) : Dat } /** - * Maps the chat folder ids to all of its corresponding excluded chats + * Maps a chat folder id to all of its corresponding excluded chats. + * If an id is not specified, all chat folder ids will be mapped. */ - private fun getExcludedChats(): Map> { + private fun getExcludedChats(id: Long? = null): Map> { + val whereQuery = if (id != null) { + "${ChatFolderMembershipTable.MEMBERSHIP_TYPE} = ${MembershipType.EXCLUDED.value} AND ${ChatFolderMembershipTable.CHAT_FOLDER_ID} = $id" + } else { + "${ChatFolderMembershipTable.MEMBERSHIP_TYPE} = ${MembershipType.EXCLUDED.value}" + } + return readableDatabase .select() .from(ChatFolderMembershipTable.TABLE_NAME) - .where("${ChatFolderMembershipTable.MEMBERSHIP_TYPE} = ${MembershipType.EXCLUDED.value}") + .where(whereQuery) .run() .groupBy { cursor -> cursor.requireLong(ChatFolderMembershipTable.CHAT_FOLDER_ID) to cursor.requireLong(ChatFolderMembershipTable.THREAD_ID) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt index cfc51dc966..add4951c75 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt @@ -1041,6 +1041,47 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa } } + fun getThreadIdsByChatFolder(chatFolder: ChatFolderRecord): List { + val folderQuery = chatFolder.toQuery() + val query = + """ + SELECT ${TABLE_NAME}.$ID + FROM $TABLE_NAME + LEFT OUTER JOIN ${RecipientTable.TABLE_NAME} ON $TABLE_NAME.$RECIPIENT_ID = ${RecipientTable.TABLE_NAME}.${RecipientTable.ID} + WHERE + $ACTIVE = 1 + $folderQuery + """ + return readableDatabase.rawQuery(query, null).readToList { cursor -> cursor.requireLong(ID) } + } + + fun getRecipientIdsByChatFolder(chatFolder: ChatFolderRecord): List { + return if (chatFolder.folderType == ChatFolderRecord.FolderType.ALL) { + readableDatabase + .select(RECIPIENT_ID) + .from(TABLE_NAME) + .where("$ACTIVE = 1") + .run() + .readToList { cursor -> + RecipientId.from(cursor.requireLong(RECIPIENT_ID)) + } + } else { + val folderQuery = chatFolder.toQuery() + val query = + """ + SELECT $RECIPIENT_ID + FROM $TABLE_NAME + LEFT OUTER JOIN ${RecipientTable.TABLE_NAME} ON $TABLE_NAME.$RECIPIENT_ID = ${RecipientTable.TABLE_NAME}.${RecipientTable.ID} + WHERE + $ACTIVE = 1 + $folderQuery + """ + readableDatabase.rawQuery(query, null).readToList { cursor -> + RecipientId.from(cursor.requireLong(RECIPIENT_ID)) + } + } + } + /** * @return Pinned recipients, in order from top to bottom. */ diff --git a/app/src/main/res/drawable/symbol_chat_check.xml b/app/src/main/res/drawable/symbol_chat_check.xml new file mode 100644 index 0000000000..e0e5d84271 --- /dev/null +++ b/app/src/main/res/drawable/symbol_chat_check.xml @@ -0,0 +1,13 @@ + + + + diff --git a/app/src/main/res/drawable/symbol_exchange_24.xml b/app/src/main/res/drawable/symbol_exchange_24.xml new file mode 100644 index 0000000000..25eedddc5d --- /dev/null +++ b/app/src/main/res/drawable/symbol_exchange_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/navigation/app_settings.xml b/app/src/main/res/navigation/app_settings.xml index 21cfae37b9..b92fb855ad 100644 --- a/app/src/main/res/navigation/app_settings.xml +++ b/app/src/main/res/navigation/app_settings.xml @@ -368,6 +368,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dddfda66d1..df34a9f123 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5069,6 +5069,18 @@ Add %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read %1$d chat type From e28b3d52c61f3fd19e79893faebdc4c3b77b315f Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Fri, 11 Oct 2024 15:32:54 -0300 Subject: [PATCH 05/51] Write in call link root key from storage service. --- .../thoughtcrime/securesms/database/CallLinkTable.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/CallLinkTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/CallLinkTable.kt index f0f42afe6f..1bba9b3c7e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/CallLinkTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/CallLinkTable.kt @@ -244,11 +244,20 @@ class CallLinkTable(context: Context, databaseHelper: SignalDatabase) : Database .values( DELETION_TIMESTAMP to deletionTimestamp, ADMIN_KEY to null, + ROOT_KEY to callLinkRootKey.keyBytes, REVOKED to true ) .where("$ROOM_ID = ?", callLink.roomId.serialize()) .run() - } else 0 + } else { + writableDatabase.update(TABLE_NAME) + .values( + ADMIN_KEY to adminPassKey, + ROOT_KEY to callLinkRootKey.keyBytes + ) + .where("$ROOM_ID = ?", callLink.roomId.serialize()) + .run() + } } } } From e1bd9753b9bb3f521bb31c6bed9e0b4e7714fe82 Mon Sep 17 00:00:00 2001 From: mtang-signal Date: Fri, 11 Oct 2024 16:23:01 -0700 Subject: [PATCH 06/51] Add string translation comments. --- app/src/main/res/values/strings.xml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index df34a9f123..d888c51a07 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1972,6 +1972,7 @@ +%1$d invited +%1$d invited + %d additional group %d additional groups @@ -1999,6 +2000,7 @@ No device found. Network error. Invalid QR code. + Sorry, you have too many devices linked already, try removing some Sorry, this is not a valid device link QR code. Link a Signal device? @@ -2021,11 +2023,13 @@ Submit passphrase Invalid passphrase! Unlock Signal + Signal Android - Lock Screen Map + Drop pin Accept address @@ -2531,6 +2535,7 @@ Signal Message + More @@ -2562,6 +2567,7 @@ No stickers installed Stickers from incoming messages will appear here Untitled + Unknown @@ -2783,6 +2789,7 @@ Media no longer available. Unable to play media. + Error finding message. Can\'t find an app able to share this media. Close @@ -2854,6 +2861,7 @@ Messages Calls + Failures Backups Lock status @@ -2863,6 +2871,7 @@ Unknown Voice Notes Contact joined Signal + No activity available to open notification channel settings. Background connection @@ -3647,10 +3656,12 @@ All message history will be permanently removed from all devices. This action cannot be undone. Delete all now + Forever 1 year 6 months 30 days + None %1$s message @@ -3675,6 +3686,7 @@ Show Ringtone Message font size + Priority Troubleshoot notifications @@ -3903,6 +3915,7 @@ Scan the address QR code of the payee + Request Pay Available balance: %1$s @@ -4034,6 +4047,7 @@ You can only pin up to %1$d chats + Contact Photo Image Archived @@ -4274,6 +4288,7 @@ Chat backups Transfer account Transfer account to a new Android device + Enter backup passphrase Restore Cannot import backups from newer versions of Signal @@ -4481,6 +4496,7 @@ Unable to open Wi-Fi Settings. Please turn on Wi-Fi manually. + Grant location permission Turn on location services Turn on Wi-Fi @@ -4734,6 +4750,7 @@ Share + Send , %1$s @@ -5234,6 +5251,7 @@ Media quality + Sent media quality Sending high quality media will use more data. From f9bf8231335bda22fe0713fd956afb45b8ebf460 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 15 Oct 2024 09:40:45 -0300 Subject: [PATCH 07/51] Add previews for MediaRestoreProgressBanner. --- .../backup/v2/ui/status/BackupStatus.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatus.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatus.kt index 43122837f2..99c6b9a7ed 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatus.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatus.kt @@ -156,6 +156,26 @@ fun BackupStatusPreview() { HorizontalDivider() + BackupStatus( + data = BackupStatusData.RestoringMedia( + bytesDownloaded = 55000.bytes, + bytesTotal = 1253.mebiBytes, + restoreStatus = BackupStatusData.RestoreStatus.WAITING_FOR_WIFI + ) + ) + + HorizontalDivider() + + BackupStatus( + data = BackupStatusData.RestoringMedia( + bytesDownloaded = 55000.bytes, + bytesTotal = 1253.mebiBytes, + restoreStatus = BackupStatusData.RestoreStatus.WAITING_FOR_INTERNET + ) + ) + + HorizontalDivider() + BackupStatus( data = BackupStatusData.RestoringMedia( bytesDownloaded = 55000.bytes, From dcbf0315c06cf55c85baa99d840b7707297e1672 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 15 Oct 2024 09:47:08 -0300 Subject: [PATCH 08/51] Rename backup status banner. --- .../v2/ui/status/{BackupStatus.kt => BackupStatusBanner.kt} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/{BackupStatus.kt => BackupStatusBanner.kt} (99%) diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatus.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatusBanner.kt similarity index 99% rename from app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatus.kt rename to app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatusBanner.kt index 99c6b9a7ed..58c8486cc7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatus.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatusBanner.kt @@ -147,7 +147,7 @@ fun BackupStatus( @SignalPreview @Composable -fun BackupStatusPreview() { +fun BackupStatusBannerPreview() { Previews.Preview { Column { BackupStatus( From 40bf7a021a5c26455f7b4e0fe90268b970d7d2de Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 15 Oct 2024 13:12:22 -0300 Subject: [PATCH 09/51] Fix issue where call name would not update. --- .../java/org/thoughtcrime/securesms/WebRtcCallActivity.java | 2 +- .../securesms/components/webrtc/WebRtcCallView.java | 5 +++-- .../securesms/components/webrtc/WebRtcCallViewModel.java | 4 ++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/WebRtcCallActivity.java b/app/src/main/java/org/thoughtcrime/securesms/WebRtcCallActivity.java index b5d63b0b35..32898c6e31 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/WebRtcCallActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/WebRtcCallActivity.java @@ -518,6 +518,7 @@ private void initializeViewModel() { viewModel.getEvents().observe(this, this::handleViewModelEvent); lifecycleDisposable.add(viewModel.getInCallstatus().subscribe(this::handleInCallStatus)); + lifecycleDisposable.add(viewModel.getRecipientFlowable().subscribe(callScreen::setRecipient)); boolean isStartedFromCallLink = getCallIntent().isStartedFromCallLink(); LiveDataUtil.combineLatest(LiveDataReactiveStreams.fromPublisher(viewModel.getCallParticipantsState().toFlowable(BackpressureStrategy.LATEST)), @@ -922,7 +923,6 @@ public void onEventMainThread(@NonNull WebRtcViewModel event) { previousEvent = event; viewModel.setRecipient(event.getRecipient()); - callScreen.setRecipient(event.getRecipient()); controlsAndInfoViewModel.setRecipient(event.getRecipient()); switch (event.getState()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallView.java b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallView.java index 038d0b8ae0..296f237709 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallView.java @@ -622,14 +622,15 @@ public void updateLocalCallParticipant(@NonNull WebRtcLocalRenderState state, } public void setRecipient(@NonNull Recipient recipient) { + collapsedToolbar.setTitle(recipient.getDisplayName(getContext())); + recipientName.setText(recipient.getDisplayName(getContext())); + if (recipient.getId() == recipientId) { return; } recipientId = recipient.getId(); largeHeaderAvatar.setRecipient(recipient, false); - collapsedToolbar.setTitle(recipient.getDisplayName(getContext())); - recipientName.setText(recipient.getDisplayName(getContext())); } public void setStatus(@Nullable String status) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallViewModel.java index 4d15cd6f73..2ed97cc02c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallViewModel.java @@ -116,6 +116,10 @@ public LiveRecipient getRecipient() { return liveRecipient.getValue(); } + public Flowable getRecipientFlowable() { + return recipientId.switchMap(id -> Recipient.observable(id).toFlowable(BackpressureStrategy.LATEST)).observeOn(AndroidSchedulers.mainThread()); + } + public void setRecipient(@NonNull Recipient recipient) { recipientId.onNext(recipient.getId()); liveRecipient.setValue(recipient.live()); From 4f61b2ad33ee4bef28e15e5bc66f862724457501 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Tue, 15 Oct 2024 12:14:41 -0400 Subject: [PATCH 10/51] Add url encoding to provisioning call. --- .../signalservice/internal/push/PushServiceSocket.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java b/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java index 50c73c6b53..db6799c9f2 100644 --- a/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java +++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java @@ -684,7 +684,8 @@ public void removeDevice(long deviceId) throws IOException { } public void sendProvisioningMessage(String destination, byte[] body) throws IOException { - makeServiceRequest(String.format(PROVISIONING_MESSAGE_PATH, destination), "PUT", + //noinspection CharsetObjectCanBeUsed + makeServiceRequest(String.format(PROVISIONING_MESSAGE_PATH, URLEncoder.encode(destination, StandardCharsets.UTF_8.name())), "PUT", JsonUtil.toJson(new ProvisioningMessage(Base64.encodeWithPadding(body)))); } From 893ef5d08c8d2f350a3df713b66472072cffe3d9 Mon Sep 17 00:00:00 2001 From: adel-signal Date: Tue, 15 Oct 2024 11:29:47 -0700 Subject: [PATCH 11/51] Add support for multiple ice server groups --- .../service/webrtc/SignalCallManager.java | 69 +++++++++++-------- .../api/messages/calls/TurnServerInfo.java | 8 +++ 2 files changed, 50 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java index cda5859fb6..21abe02856 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java @@ -89,11 +89,11 @@ import org.whispersystems.signalservice.internal.push.SyncMessage; import java.io.IOException; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Objects; @@ -410,9 +410,9 @@ public void peekCallLinkCall(@NonNull RecipientId id) { CallLinkAuthCredentialPresentation callLinkAuthCredentialPresentation = AppDependencies.getGroupsV2Authorization() .getCallLinkAuthorizationForToday( - genericServerPublicParams, - CallLinkSecretParams.deriveFromRootKey(callLinkRootKey.getKeyBytes()) - ); + genericServerPublicParams, + CallLinkSecretParams.deriveFromRootKey(callLinkRootKey.getKeyBytes()) + ); callManager.peekCallLinkCall(SignalStore.internal().groupCallingServer(), callLinkAuthCredentialPresentation.serialize(), callLinkRootKey, peekInfo -> { PeekInfo info = peekInfo.getValue(); @@ -1023,31 +1023,13 @@ public void retrieveTurnServers(@NonNull RemotePeer remotePeer) { try { TurnServerInfo turnServerInfo = AppDependencies.getSignalServiceAccountManager().getTurnServerInfo(); - List iceServers = new LinkedList<>(); - for (String url : ListUtil.emptyIfNull(turnServerInfo.getUrlsWithIps())) { - if (url.startsWith("turn")) { - iceServers.add(PeerConnection.IceServer.builder(url) - .setUsername(turnServerInfo.getUsername()) - .setPassword(turnServerInfo.getPassword()) - .setHostname(turnServerInfo.getHostname()) - .createIceServer()); - } else { - iceServers.add(PeerConnection.IceServer.builder(url) - .setHostname(turnServerInfo.getHostname()) - .createIceServer()); - } - } - for (String url : ListUtil.emptyIfNull(turnServerInfo.getUrls())) { - if (url.startsWith("turn")) { - iceServers.add(PeerConnection.IceServer.builder(url) - .setUsername(turnServerInfo.getUsername()) - .setPassword(turnServerInfo.getPassword()) - .createIceServer()); - } else { - iceServers.add(PeerConnection.IceServer.builder(url).createIceServer()); - } + List turnServerInfos = new ArrayList<>(); + if (turnServerInfo != null) { + turnServerInfos.add(turnServerInfo); + turnServerInfos.addAll(turnServerInfo.getIceServers()); } + List iceServers = mapToIceServers(turnServerInfos); process((s, p) -> { RemotePeer activePeer = s.getCallInfoState().getActivePeer(); if (activePeer != null && activePeer.getCallId().equals(remotePeer.getCallId())) { @@ -1064,6 +1046,39 @@ public void retrieveTurnServers(@NonNull RemotePeer remotePeer) { }); } + private static List mapToIceServers(@NonNull List turnServerInfos) { + List iceServers = new ArrayList<>(); + + for (TurnServerInfo turnServerInfo: turnServerInfos) { + if (turnServerInfo.getUrls() != null) { + iceServers.addAll( + turnServerInfo.getUrlsWithIps() + .stream() + .map(url -> + PeerConnection.IceServer.builder(url) + .setUsername(turnServerInfo.getUsername()) + .setPassword(turnServerInfo.getPassword()) + .setHostname(turnServerInfo.getHostname()) + .createIceServer() + ).toList()); + } + if (turnServerInfo.getUrlsWithIps() != null) { + iceServers.addAll( + turnServerInfo.getUrls() + .stream() + .map(url -> + PeerConnection.IceServer.builder(url) + .setUsername(turnServerInfo.getUsername()) + .setPassword(turnServerInfo.getPassword()) + .createIceServer() + ).toList() + ); + } + } + + return iceServers; + } + public void sendGroupCallUpdateMessage(@NonNull Recipient recipient, @Nullable String groupCallEraId, final @Nullable CallId callId, boolean isIncoming, boolean isJoinEvent) { Log.i(TAG, "sendGroupCallUpdateMessage id: " + recipient.getId() + " era: " + groupCallEraId + " isIncoming: " + isIncoming + " isJoinEvent: " + isJoinEvent); diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/messages/calls/TurnServerInfo.java b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/messages/calls/TurnServerInfo.java index 5833d512c7..8e9f9737fc 100644 --- a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/messages/calls/TurnServerInfo.java +++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/messages/calls/TurnServerInfo.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Collections; import java.util.List; public class TurnServerInfo { @@ -22,6 +23,9 @@ public class TurnServerInfo { @JsonProperty private List urlsWithIps; + @JsonProperty + private List iceServers; + public String getUsername() { return username; } @@ -42,4 +46,8 @@ public List getUrls() { public List getUrlsWithIps() { return urlsWithIps; } + + public List getIceServers() { + return (iceServers != null) ? iceServers : Collections.emptyList(); + } } From 6a77631b098684bc8937d9199ee411b2a491fe2c Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Tue, 15 Oct 2024 15:37:37 -0400 Subject: [PATCH 12/51] Fix rereg reglock bug. --- .../securesms/registration/ui/RegistrationViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt index 9b6fa678c5..dff1022ba7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt @@ -679,7 +679,7 @@ class RegistrationViewModel : ViewModel() { */ private suspend fun registerAccountInternal(context: Context, sessionId: String?, registrationData: RegistrationData, pin: String?, masterKey: MasterKey): Pair { Log.v(TAG, "registerAccountInternal()") - val registrationResult: RegisterAccountResult = RegistrationRepository.registerAccount(context = context, sessionId = sessionId, registrationData = registrationData, pin = pin) { masterKey } + val registrationResult: RegisterAccountResult = RegistrationRepository.registerAccount(context = context, sessionId = sessionId, registrationData = registrationData, pin = pin) // Check if reg lock is enabled if (registrationResult !is RegisterAccountResult.RegistrationLocked) { From b073005ff92ae2d31f32dd9a7e801eb00c02cb82 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 15 Oct 2024 16:51:38 -0300 Subject: [PATCH 13/51] Update remote backups settings to align with design. --- .../securesms/backup/v2/BackupRepository.kt | 42 +- .../remote/RemoteBackupsSettingsFragment.kt | 403 +++++++++++++----- .../remote/RemoteBackupsSettingsState.kt | 35 +- .../remote/RemoteBackupsSettingsViewModel.kt | 121 ++++-- .../jobs/BackupSubscriptionCheckJob.kt | 36 +- app/src/main/res/values/strings.xml | 14 +- .../org/signal/core/ui/ModifierExtensions.kt | 22 + 7 files changed, 516 insertions(+), 157 deletions(-) create mode 100644 core-ui/src/main/java/org/signal/core/ui/ModifierExtensions.kt diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt index e773119970..5cc7aa476d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt @@ -57,6 +57,7 @@ import org.thoughtcrime.securesms.jobs.RequestGroupV2InfoJob import org.thoughtcrime.securesms.keyvalue.KeyValueStore import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.net.SignalNetwork +import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.util.toMillis import org.whispersystems.signalservice.api.NetworkResult @@ -73,6 +74,7 @@ import org.whispersystems.signalservice.api.crypto.AttachmentCipherStreamUtil import org.whispersystems.signalservice.api.messages.SignalServiceAttachment.ProgressListener import org.whispersystems.signalservice.api.push.ServiceId.ACI import org.whispersystems.signalservice.api.push.ServiceId.PNI +import org.whispersystems.signalservice.api.push.exceptions.NonSuccessfulResponseCodeException import org.whispersystems.signalservice.internal.crypto.PaddingInputStream import org.whispersystems.signalservice.internal.push.AttachmentUploadForm import org.whispersystems.signalservice.internal.push.SubscriptionsConfiguration @@ -113,9 +115,24 @@ object BackupRepository { } @WorkerThread - fun turnOffAndDeleteBackup() { - RecurringInAppPaymentRepository.cancelActiveSubscriptionSync(InAppPaymentSubscriberRecord.Type.BACKUP) - SignalStore.backup.disableBackups() + fun turnOffAndDeleteBackup(): Boolean { + return try { + Log.d(TAG, "Attempting to disable backups.") + getBackupTier().runIfSuccessful { tier -> + if (tier == MessageBackupTier.PAID) { + Log.d(TAG, "User is currently on a paid tier. Canceling.") + RecurringInAppPaymentRepository.cancelActiveSubscriptionSync(InAppPaymentSubscriberRecord.Type.BACKUP) + Log.d(TAG, "Successfully canceled paid tier.") + } + } + + Log.d(TAG, "Disabling backups.") + SignalStore.backup.disableBackups() + true + } catch (e: Exception) { + Log.w(TAG, "Failed to turn off backups.", e) + false + } } private fun createSignalDatabaseSnapshot(baseName: String): SignalDatabase { @@ -515,6 +532,25 @@ object BackupRepository { } } + /** + * If backups are initialized, this method will query the server for the current backup level. + * If backups are not initialized, this method will return either the stored tier or a 404 result. + */ + fun getBackupTier(): NetworkResult { + return if (SignalStore.backup.backupsInitialized) { + getBackupTier(Recipient.self().requireAci()) + } else if (SignalStore.backup.backupTier != null) { + NetworkResult.Success(SignalStore.backup.backupTier!!) + } else { + NetworkResult.StatusCodeError(NonSuccessfulResponseCodeException(404)) + } + } + + /** + * Grabs the backup tier for the given ACI. Note that this will set the user's backup + * tier to FREE if they are not on PAID, so avoid this method if you don't intend that + * to be the case. + */ private fun getBackupTier(aci: ACI): NetworkResult { val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/remote/RemoteBackupsSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/remote/RemoteBackupsSettingsFragment.kt index 668d46ac7b..967d7474ed 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/remote/RemoteBackupsSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/remote/RemoteBackupsSettingsFragment.kt @@ -23,6 +23,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialogDefaults @@ -66,6 +67,7 @@ import org.signal.core.ui.Scaffolds import org.signal.core.ui.SignalPreview import org.signal.core.ui.Snackbars import org.signal.core.ui.Texts +import org.signal.core.ui.horizontalGutters import org.signal.core.ui.theme.SignalTheme import org.signal.core.util.logging.Log import org.signal.core.util.money.FiatMoney @@ -119,6 +121,7 @@ class RemoteBackupsSettingsFragment : ComposeFragment() { val callbacks = remember { Callbacks() } RemoteBackupsSettingsContent( + backupsInitialized = state.backupsInitialized, messageBackupsType = state.messageBackupsType, lastBackupTimestamp = state.lastBackupTimestamp, canBackUpUsingCellular = state.canBackUpUsingCellular, @@ -128,7 +131,8 @@ class RemoteBackupsSettingsFragment : ComposeFragment() { contentCallbacks = callbacks, backupProgress = backupProgress, backupSize = state.backupSize, - renewalTime = state.renewalTime + renewalTime = state.renewalTime, + backupState = state.backupState ) } @@ -145,6 +149,10 @@ class RemoteBackupsSettingsFragment : ComposeFragment() { } } + override fun onLaunchBackupsCheckoutFlow() { + checkoutLauncher.launch(null) + } + override fun onBackUpUsingCellularClick(canUseCellular: Boolean) { viewModel.setCanBackUpUsingCellular(canUseCellular) } @@ -245,6 +253,7 @@ class RemoteBackupsSettingsFragment : ComposeFragment() { */ private interface ContentCallbacks { fun onNavigationClick() = Unit + fun onLaunchBackupsCheckoutFlow() = Unit fun onBackupTypeActionClick(tier: MessageBackupTier) = Unit fun onBackUpUsingCellularClick(canUseCellular: Boolean) = Unit fun onBackupNowClick() = Unit @@ -259,7 +268,9 @@ private interface ContentCallbacks { @Composable private fun RemoteBackupsSettingsContent( + backupsInitialized: Boolean, messageBackupsType: MessageBackupsType?, + backupState: RemoteBackupsSettingsState.BackupState, renewalTime: Duration, lastBackupTimestamp: Long, canBackUpUsingCellular: Boolean, @@ -286,101 +297,65 @@ private fun RemoteBackupsSettingsContent( modifier = Modifier .padding(it) ) { - if (messageBackupsType != null) { + if (backupState == RemoteBackupsSettingsState.BackupState.LOADING) { + item { + LoadingCard() + } + } else if (backupState == RemoteBackupsSettingsState.BackupState.ERROR) { + item { + ErrorCard() + } + } else if (messageBackupsType != null) { item { - BackupTypeRow( + BackupCard( messageBackupsType = messageBackupsType, renewalTime = renewalTime, + backupState = backupState, onBackupTypeActionButtonClicked = contentCallbacks::onBackupTypeActionClick ) } } - item { - Texts.SectionHeader(text = stringResource(id = R.string.RemoteBackupsSettingsFragment__backup_details)) - } + if (backupsInitialized) { + appendBackupDetailsItems( + backupProgress = backupProgress, + lastBackupTimestamp = lastBackupTimestamp, + backupSize = backupSize, + backupsFrequency = backupsFrequency, + canBackUpUsingCellular = canBackUpUsingCellular, + contentCallbacks = contentCallbacks + ) + } else { + // TODO [backups] -- Download progress bar / state if required. - if (backupProgress == null || backupProgress.state == ArchiveUploadProgressState.State.None) { item { - LastBackupRow( - lastBackupTimestamp = lastBackupTimestamp, - onBackupNowClick = contentCallbacks::onBackupNowClick + Text( + text = stringResource(R.string.RemoteBackupsSettingsFragment__backups_have_been_turned_off), + style = MaterialTheme.typography.bodyMedium, + modifier = Modifier.padding(top = 24.dp, bottom = 20.dp) ) } - } else { - item { - InProgressBackupRow(progress = backupProgress.completedAttachments.toInt(), totalProgress = backupProgress.totalAttachments.toInt()) - } - } - item { - Rows.TextRow(text = { - Column { - Text( - text = stringResource(id = R.string.RemoteBackupsSettingsFragment__backup_size), - style = MaterialTheme.typography.bodyLarge, - color = MaterialTheme.colorScheme.onSurface - ) - Text( - text = Util.getPrettyFileSize(backupSize), - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant - ) + item { + Buttons.LargePrimary( + onClick = { contentCallbacks.onBackupTypeActionClick(MessageBackupTier.FREE) }, + modifier = Modifier.horizontalGutters() + ) { + Text(text = stringResource(R.string.RemoteBackupsSettingsFragment__reenable_backups)) } - }) - } - - item { - Rows.TextRow( - text = { - Column { - Text( - text = stringResource(id = R.string.RemoteBackupsSettingsFragment__backup_frequency), - style = MaterialTheme.typography.bodyLarge, - color = MaterialTheme.colorScheme.onSurface - ) - Text( - text = getTextForFrequency(backupsFrequency = backupsFrequency), - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant - ) - } - }, - onClick = contentCallbacks::onChangeBackupFrequencyClick - ) - } - - item { - Rows.ToggleRow( - checked = canBackUpUsingCellular, - text = stringResource(id = R.string.RemoteBackupsSettingsFragment__back_up_using_cellular), - onCheckChanged = contentCallbacks::onBackUpUsingCellularClick - ) - } - - item { - Rows.TextRow( - text = stringResource(R.string.RemoteBackupsSettingsFragment__view_backup_key), - onClick = contentCallbacks::onViewBackupKeyClick - ) - } - - item { - Dividers.Default() - } - - item { - Rows.TextRow( - text = stringResource(id = R.string.RemoteBackupsSettingsFragment__turn_off_and_delete_backup), - foregroundTint = MaterialTheme.colorScheme.error, - onClick = contentCallbacks::onTurnOffAndDeleteBackupsClick - ) + } } } } when (requestedDialog) { RemoteBackupsSettingsState.Dialog.NONE -> {} + RemoteBackupsSettingsState.Dialog.TURN_OFF_FAILED -> { + FailedToTurnOffBackupDialog( + onDismiss = contentCallbacks::onDialogDismissed + ) + } + RemoteBackupsSettingsState.Dialog.TURN_OFF_AND_DELETE_BACKUPS -> { TurnOffAndDeleteBackupsDialog( onConfirm = contentCallbacks::onTurnOffAndDeleteBackupsConfirm, @@ -431,9 +406,104 @@ private fun RemoteBackupsSettingsContent( } } +private fun LazyListScope.appendBackupDetailsItems( + backupProgress: ArchiveUploadProgressState?, + lastBackupTimestamp: Long, + backupSize: Long, + backupsFrequency: BackupFrequency, + canBackUpUsingCellular: Boolean, + contentCallbacks: ContentCallbacks +) { + item { + Dividers.Default() + } + + item { + Texts.SectionHeader(text = stringResource(id = R.string.RemoteBackupsSettingsFragment__backup_details)) + } + + if (backupProgress == null || backupProgress.state == ArchiveUploadProgressState.State.None) { + item { + LastBackupRow( + lastBackupTimestamp = lastBackupTimestamp, + onBackupNowClick = contentCallbacks::onBackupNowClick + ) + } + } else { + item { + InProgressBackupRow(progress = backupProgress.completedAttachments.toInt(), totalProgress = backupProgress.totalAttachments.toInt()) + } + } + + item { + Rows.TextRow(text = { + Column { + Text( + text = stringResource(id = R.string.RemoteBackupsSettingsFragment__backup_size), + style = MaterialTheme.typography.bodyLarge, + color = MaterialTheme.colorScheme.onSurface + ) + Text( + text = Util.getPrettyFileSize(backupSize), + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + } + }) + } + + item { + Rows.TextRow( + text = { + Column { + Text( + text = stringResource(id = R.string.RemoteBackupsSettingsFragment__backup_frequency), + style = MaterialTheme.typography.bodyLarge, + color = MaterialTheme.colorScheme.onSurface + ) + Text( + text = getTextForFrequency(backupsFrequency = backupsFrequency), + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + } + }, + onClick = contentCallbacks::onChangeBackupFrequencyClick + ) + } + + item { + Rows.ToggleRow( + checked = canBackUpUsingCellular, + text = stringResource(id = R.string.RemoteBackupsSettingsFragment__back_up_using_cellular), + onCheckChanged = contentCallbacks::onBackUpUsingCellularClick + ) + } + + item { + Rows.TextRow( + text = stringResource(R.string.RemoteBackupsSettingsFragment__view_backup_key), + onClick = contentCallbacks::onViewBackupKeyClick + ) + } + + item { + Dividers.Default() + } + + item { + Rows.TextRow( + text = stringResource(id = R.string.RemoteBackupsSettingsFragment__turn_off_and_delete_backup), + foregroundTint = MaterialTheme.colorScheme.error, + onClick = contentCallbacks::onTurnOffAndDeleteBackupsClick + ) + } +} + @Composable -private fun BackupTypeRow( +private fun BackupCard( messageBackupsType: MessageBackupsType, + backupState: RemoteBackupsSettingsState.BackupState, renewalTime: Duration, onBackupTypeActionButtonClicked: (MessageBackupTier) -> Unit = {} ) { @@ -453,28 +523,63 @@ private fun BackupTypeRow( Text( text = buildAnnotatedString { - SignalSymbol(SignalSymbols.Weight.REGULAR, SignalSymbols.Glyph.CHECKMARK) - append(" ") + if (backupState == RemoteBackupsSettingsState.BackupState.ACTIVE) { + SignalSymbol(SignalSymbols.Weight.REGULAR, SignalSymbols.Glyph.CHECKMARK) + append(" ") + } + append(title) }, color = MaterialTheme.colorScheme.onSurfaceVariant, style = MaterialTheme.typography.bodyMedium ) - val cost = when (messageBackupsType) { - is MessageBackupsType.Paid -> stringResource(R.string.RemoteBackupsSettingsFragment__s_per_month, FiatMoneyUtil.format(LocalContext.current.resources, messageBackupsType.pricePerMonth)) - is MessageBackupsType.Free -> stringResource(R.string.RemoteBackupsSettingsFragment__your_backup_plan_is_free) - } + when (backupState) { + RemoteBackupsSettingsState.BackupState.ACTIVE -> { + val cost = when (messageBackupsType) { + is MessageBackupsType.Paid -> stringResource(R.string.RemoteBackupsSettingsFragment__s_per_month, FiatMoneyUtil.format(LocalContext.current.resources, messageBackupsType.pricePerMonth)) + is MessageBackupsType.Free -> stringResource(R.string.RemoteBackupsSettingsFragment__your_backup_plan_is_free) + } - Text( - text = cost, - modifier = Modifier.padding(top = 12.dp) - ) + Text( + text = cost, + modifier = Modifier.padding(top = 12.dp) + ) + } + + RemoteBackupsSettingsState.BackupState.INACTIVE -> { + Text( + text = stringResource(R.string.RemoteBackupsSettingsFragment__subscription_inactive), + color = MaterialTheme.colorScheme.onSurfaceVariant, + style = MaterialTheme.typography.bodyMedium, + modifier = Modifier.padding(top = 8.dp) + ) + } + + RemoteBackupsSettingsState.BackupState.CANCELED -> { + Text( + text = stringResource(R.string.RemoteBackupsSettingsFragment__subscription_cancelled), + color = MaterialTheme.colorScheme.error, + style = MaterialTheme.typography.labelLarge, + modifier = Modifier.padding(top = 8.dp) + ) + } + + else -> error("Not supported here.") + } if (messageBackupsType is MessageBackupsType.Paid) { + @Suppress("KotlinConstantConditions") + val resource = when (backupState) { + RemoteBackupsSettingsState.BackupState.ACTIVE -> R.string.RemoteBackupsSettingsFragment__renews_s + RemoteBackupsSettingsState.BackupState.INACTIVE -> R.string.RemoteBackupsSettingsFragment__expired_on_s + RemoteBackupsSettingsState.BackupState.CANCELED -> R.string.RemoteBackupsSettingsFragment__expires_on_s + else -> error("Not supported here.") + } + if (renewalTime > 0.seconds) { Text( - text = stringResource(R.string.RemoteBackupsSettingsFragment__renews_s, DateUtils.formatDateWithYear(Locale.getDefault(), renewalTime.inWholeMilliseconds)) + text = stringResource(resource, DateUtils.formatDateWithYear(Locale.getDefault(), renewalTime.inWholeMilliseconds)) ) } } @@ -494,21 +599,52 @@ private fun BackupTypeRow( is MessageBackupsType.Free -> stringResource(R.string.RemoteBackupsSettingsFragment__upgrade) } - Buttons.LargeTonal( - onClick = { onBackupTypeActionButtonClicked(messageBackupsType.tier) }, - colors = ButtonDefaults.filledTonalButtonColors().copy( - containerColor = SignalTheme.colors.colorTransparent5, - contentColor = colorResource(R.color.signal_light_colorOnSurface) - ), - modifier = Modifier.padding(top = 12.dp) - ) { - Text( - text = buttonText - ) + if (backupState == RemoteBackupsSettingsState.BackupState.ACTIVE) { + Buttons.LargeTonal( + onClick = { onBackupTypeActionButtonClicked(messageBackupsType.tier) }, + colors = ButtonDefaults.filledTonalButtonColors().copy( + containerColor = SignalTheme.colors.colorTransparent5, + contentColor = colorResource(R.color.signal_light_colorOnSurface) + ), + modifier = Modifier.padding(top = 12.dp) + ) { + Text( + text = buttonText + ) + } } } } +@Composable +private fun BoxCard(content: @Composable () -> Unit) { + Box( + contentAlignment = Alignment.Center, + modifier = Modifier + .fillMaxWidth() + .defaultMinSize(minHeight = 150.dp) + .padding(horizontal = 16.dp, vertical = 12.dp) + .background(color = SignalTheme.colors.colorSurface2, shape = RoundedCornerShape(12.dp)) + .padding(24.dp) + ) { + content() + } +} + +@Composable +private fun LoadingCard() { + BoxCard { + CircularProgressIndicator() + } +} + +@Composable +private fun ErrorCard() { + BoxCard { + Text(text = "Error") // TODO [alex] -- Finalized error card + } +} + @Composable private fun InProgressBackupRow( progress: Int?, @@ -590,6 +726,19 @@ private fun LastBackupRow( } } +@Composable +private fun FailedToTurnOffBackupDialog( + onDismiss: () -> Unit +) { + Dialogs.SimpleAlertDialog( + title = "TODO", + body = "TODO", + confirm = stringResource(id = android.R.string.ok), + onConfirm = {}, + onDismiss = onDismiss + ) +} + @Composable private fun TurnOffAndDeleteBackupsDialog( onConfirm: () -> Unit, @@ -733,6 +882,7 @@ private fun getTextForFrequency(backupsFrequency: BackupFrequency): String { private fun RemoteBackupsSettingsContentPreview() { Previews.Preview { RemoteBackupsSettingsContent( + backupsInitialized = true, messageBackupsType = MessageBackupsType.Free(mediaRetentionDays = 30), lastBackupTimestamp = -1, canBackUpUsingCellular = false, @@ -742,28 +892,65 @@ private fun RemoteBackupsSettingsContentPreview() { contentCallbacks = object : ContentCallbacks {}, backupProgress = null, renewalTime = 1727193018.seconds, - backupSize = 2300000 + backupSize = 2300000, + backupState = RemoteBackupsSettingsState.BackupState.ACTIVE ) } } @SignalPreview @Composable -private fun BackupTypeRowPreview() { +private fun LoadingCardPreview() { + Previews.Preview { + LoadingCard() + } +} + +@SignalPreview +@Composable +private fun ErrorCardPreview() { + Previews.Preview { + ErrorCard() + } +} + +@SignalPreview +@Composable +private fun BackupCardPreview() { Previews.Preview { Column { - BackupTypeRow( + BackupCard( messageBackupsType = MessageBackupsType.Paid( pricePerMonth = FiatMoney(BigDecimal.valueOf(3), Currency.getInstance("CAD")), storageAllowanceBytes = 100_000_000 ), + backupState = RemoteBackupsSettingsState.BackupState.ACTIVE, renewalTime = 1727193018.seconds ) - BackupTypeRow( + BackupCard( + messageBackupsType = MessageBackupsType.Paid( + pricePerMonth = FiatMoney(BigDecimal.valueOf(3), Currency.getInstance("CAD")), + storageAllowanceBytes = 100_000_000 + ), + backupState = RemoteBackupsSettingsState.BackupState.CANCELED, + renewalTime = 1727193018.seconds + ) + + BackupCard( + messageBackupsType = MessageBackupsType.Paid( + pricePerMonth = FiatMoney(BigDecimal.valueOf(3), Currency.getInstance("CAD")), + storageAllowanceBytes = 100_000_000 + ), + backupState = RemoteBackupsSettingsState.BackupState.INACTIVE, + renewalTime = 1727193018.seconds + ) + + BackupCard( messageBackupsType = MessageBackupsType.Free( mediaRetentionDays = 30 ), + backupState = RemoteBackupsSettingsState.BackupState.ACTIVE, renewalTime = 0.seconds ) } @@ -789,6 +976,16 @@ private fun InProgressRowPreview() { } } +@SignalPreview +@Composable +private fun FailedToTurnOffBackupDialogPreview() { + Previews.Preview { + FailedToTurnOffBackupDialog( + onDismiss = {} + ) + } +} + @SignalPreview @Composable private fun TurnOffAndDeleteBackupsDialogPreview() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/remote/RemoteBackupsSettingsState.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/remote/RemoteBackupsSettingsState.kt index b70706b578..446cfd20db 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/remote/RemoteBackupsSettingsState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/remote/RemoteBackupsSettingsState.kt @@ -11,8 +11,10 @@ import kotlin.time.Duration import kotlin.time.Duration.Companion.seconds data class RemoteBackupsSettingsState( + val backupsInitialized: Boolean, val messageBackupsType: MessageBackupsType? = null, val canBackUpUsingCellular: Boolean = false, + val backupState: BackupState = BackupState.LOADING, val backupSize: Long = 0, val backupsFrequency: BackupFrequency = BackupFrequency.DAILY, val lastBackupTimestamp: Long = 0, @@ -20,12 +22,43 @@ data class RemoteBackupsSettingsState( val dialog: Dialog = Dialog.NONE, val snackbar: Snackbar = Snackbar.NONE ) { + /** + * Describes the state of the user's selected backup tier. + */ + enum class BackupState { + /** + * The exact backup state is being loaded from the network. + */ + LOADING, + + /** + * User has an active backup + */ + ACTIVE, + + /** + * User has an inactive paid tier backup + */ + INACTIVE, + + /** + * User has a canceled paid tier backup + */ + CANCELED, + + /** + * An error occurred retrieving the network state + */ + ERROR + } + enum class Dialog { NONE, TURN_OFF_AND_DELETE_BACKUPS, BACKUP_FREQUENCY, DELETING_BACKUP, - BACKUP_DELETED + BACKUP_DELETED, + TURN_OFF_FAILED } enum class Snackbar { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/remote/RemoteBackupsSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/remote/RemoteBackupsSettingsViewModel.kt index 0ae28905e2..815f3e24fe 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/remote/RemoteBackupsSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/remote/RemoteBackupsSettingsViewModel.kt @@ -15,8 +15,10 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.backup.v2.BackupFrequency import org.thoughtcrime.securesms.backup.v2.BackupRepository +import org.thoughtcrime.securesms.backup.v2.MessageBackupTier import org.thoughtcrime.securesms.components.settings.app.subscription.RecurringInAppPaymentRepository import org.thoughtcrime.securesms.database.model.InAppPaymentSubscriberRecord import org.thoughtcrime.securesms.dependencies.AppDependencies @@ -30,34 +32,24 @@ import kotlin.time.Duration.Companion.seconds * ViewModel for state management of RemoteBackupsSettingsFragment */ class RemoteBackupsSettingsViewModel : ViewModel() { + + companion object { + private val TAG = Log.tag(RemoteBackupsSettingsFragment::class) + } + private val _state = MutableStateFlow( RemoteBackupsSettingsState( + backupsInitialized = SignalStore.backup.backupsInitialized, messageBackupsType = null, lastBackupTimestamp = SignalStore.backup.lastBackupTime, backupSize = SignalStore.backup.totalBackupSize, - backupsFrequency = SignalStore.backup.backupFrequency + backupsFrequency = SignalStore.backup.backupFrequency, + canBackUpUsingCellular = SignalStore.backup.backupWithCellular ) ) val state: StateFlow = _state - init { - refresh() - - viewModelScope.launch { - val activeSubscription = withContext(Dispatchers.IO) { - RecurringInAppPaymentRepository.getActiveSubscriptionSync(InAppPaymentSubscriberRecord.Type.BACKUP) - } - - if (activeSubscription.isSuccess) { - val subscription = activeSubscription.getOrThrow().activeSubscription - if (subscription != null) { - _state.update { it.copy(renewalTime = subscription.endOfCurrentPeriod.seconds) } - } - } - } - } - fun setCanBackUpUsingCellular(canBackUpUsingCellular: Boolean) { SignalStore.backup.backupWithCellular = canBackUpUsingCellular _state.update { it.copy(canBackUpUsingCellular = canBackUpUsingCellular) } @@ -80,17 +72,85 @@ class RemoteBackupsSettingsViewModel : ViewModel() { fun refresh() { viewModelScope.launch { + Log.d(TAG, "Attempting to synchronize backup tier from archive service.") + + val backupTier = withContext(Dispatchers.IO) { + BackupRepository.getBackupTier() + } + + backupTier.runIfSuccessful { + Log.d(TAG, "Setting backup tier to $it") + SignalStore.backup.backupTier = it + } + val tier = SignalStore.backup.backupTier val backupType = if (tier != null) BackupRepository.getBackupsType(tier) else null _state.update { it.copy( + backupsInitialized = SignalStore.backup.backupsInitialized, messageBackupsType = backupType, + backupState = RemoteBackupsSettingsState.BackupState.LOADING, lastBackupTimestamp = SignalStore.backup.lastBackupTime, backupSize = SignalStore.backup.totalBackupSize, - backupsFrequency = SignalStore.backup.backupFrequency + backupsFrequency = SignalStore.backup.backupFrequency, + canBackUpUsingCellular = SignalStore.backup.backupWithCellular ) } + + when (tier) { + MessageBackupTier.PAID -> { + Log.d(TAG, "Attempting to retrieve subscription details for active PAID backup.") + + val activeSubscription = withContext(Dispatchers.IO) { + RecurringInAppPaymentRepository.getActiveSubscriptionSync(InAppPaymentSubscriberRecord.Type.BACKUP) + } + + if (activeSubscription.isSuccess) { + Log.d(TAG, "Retrieved subscription details.") + + val subscription = activeSubscription.getOrThrow().activeSubscription + if (subscription != null) { + Log.d(TAG, "Subscription found. Updating UI state with subscription details.") + _state.update { + it.copy( + renewalTime = subscription.endOfCurrentPeriod.seconds, + backupState = when { + subscription.isActive -> RemoteBackupsSettingsState.BackupState.ACTIVE + subscription.isCanceled -> RemoteBackupsSettingsState.BackupState.CANCELED + else -> RemoteBackupsSettingsState.BackupState.INACTIVE + } + ) + } + } else { + Log.d(TAG, "ActiveSubscription had null subscription object. Updating UI state with INACTIVE subscription.") + _state.update { + it.copy( + renewalTime = 0.seconds, + backupState = RemoteBackupsSettingsState.BackupState.INACTIVE + ) + } + } + } else { + Log.d(TAG, "Failed to load ActiveSubscription data. Updating UI state with error.") + _state.update { + it.copy( + renewalTime = 0.seconds, + backupState = RemoteBackupsSettingsState.BackupState.ERROR + ) + } + } + } + + MessageBackupTier.FREE -> { + Log.d(TAG, "Updating UI state with ACTIVE FREE tier.") + _state.update { it.copy(renewalTime = 0.seconds, backupState = RemoteBackupsSettingsState.BackupState.ACTIVE) } + } + null -> { + Log.d(TAG, "Updating UI state with INACTIVE null tier.") + _state.update { it.copy(renewalTime = 0.seconds, backupState = RemoteBackupsSettingsState.BackupState.INACTIVE) } + } + } } } @@ -98,28 +158,23 @@ class RemoteBackupsSettingsViewModel : ViewModel() { viewModelScope.launch { requestDialog(RemoteBackupsSettingsState.Dialog.DELETING_BACKUP) - withContext(Dispatchers.IO) { + val succeeded = withContext(Dispatchers.IO) { BackupRepository.turnOffAndDeleteBackup() } if (isActive) { - requestDialog(RemoteBackupsSettingsState.Dialog.BACKUP_DELETED) - delay(2000.milliseconds) - requestDialog(RemoteBackupsSettingsState.Dialog.NONE) - refresh() + if (succeeded) { + requestDialog(RemoteBackupsSettingsState.Dialog.BACKUP_DELETED) + delay(2000.milliseconds) + requestDialog(RemoteBackupsSettingsState.Dialog.NONE) + refresh() + } else { + requestDialog(RemoteBackupsSettingsState.Dialog.TURN_OFF_FAILED) + } } } } - private fun refreshBackupState() { - _state.update { - it.copy( - lastBackupTimestamp = SignalStore.backup.lastBackupTime, - backupSize = SignalStore.backup.totalBackupSize - ) - } - } - fun onBackupNowClick() { BackupMessagesJob.enqueue() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupSubscriptionCheckJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupSubscriptionCheckJob.kt index ef96c1235b..758128420b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupSubscriptionCheckJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupSubscriptionCheckJob.kt @@ -9,6 +9,7 @@ import androidx.annotation.VisibleForTesting import org.signal.core.util.billing.BillingPurchaseResult import org.signal.core.util.logging.Log import org.signal.donations.InAppPaymentType +import org.thoughtcrime.securesms.backup.v2.BackupRepository import org.thoughtcrime.securesms.backup.v2.MessageBackupTier import org.thoughtcrime.securesms.components.settings.app.subscription.InAppPaymentsRepository import org.thoughtcrime.securesms.components.settings.app.subscription.RecurringInAppPaymentRepository @@ -55,65 +56,70 @@ class BackupSubscriptionCheckJob private constructor(parameters: Parameters) : C } override suspend fun doRun(): Result { + if (!SignalStore.account.isRegistered) { + Log.i(TAG, "User is not registered. Exiting.") + return Result.success() + } + if (!RemoteConfig.messageBackups) { Log.i(TAG, "Message backups are not enabled. Exiting.") return Result.success() } + if (!SignalStore.backup.backupsInitialized) { + Log.i(TAG, "Backups are not initialized on this device. Exiting.") + return Result.success() + } + if (!AppDependencies.billingApi.isApiAvailable()) { Log.i(TAG, "Google Play Billing API is not available on this device. Exiting.") return Result.success() } + BackupRepository.getBackupTier().runIfSuccessful { + Log.i(TAG, "Successfully retrieved backup tier $it. Applying.") + SignalStore.backup.backupTier = it + } + val purchase: BillingPurchaseResult = AppDependencies.billingApi.queryPurchases() val hasActivePurchase = purchase is BillingPurchaseResult.Success && purchase.isAcknowledged && purchase.isWithinTheLastMonth() val subscriberId = InAppPaymentsRepository.getSubscriber(InAppPaymentSubscriberRecord.Type.BACKUP) if (subscriberId == null && hasActivePurchase) { Log.w(TAG, "User has active Google Play Billing purchase but no subscriber id! User should cancel backup and resubscribe.") - updateLocalState(null) // TODO [message-backups] Set UI flag hint here to launch sheet (designs pending) return Result.success() } val tier = SignalStore.backup.backupTier if (subscriberId == null && tier == MessageBackupTier.PAID) { - Log.w(TAG, "User has no subscriber id but PAID backup tier. Reverting to no backup tier and informing the user.") - updateLocalState(null) + Log.w(TAG, "User has no subscriber id but PAID backup tier. User will need to cancel and resubscribe.") // TODO [message-backups] Set UI flag hint here to launch sheet (designs pending) return Result.success() } val activeSubscription = RecurringInAppPaymentRepository.getActiveSubscriptionSync(InAppPaymentSubscriberRecord.Type.BACKUP).getOrNull() if (activeSubscription?.isActive == true && tier != MessageBackupTier.PAID) { - Log.w(TAG, "User has an active subscription but no backup tier. Setting to PAID and enabling backups.") - updateLocalState(MessageBackupTier.PAID) + Log.w(TAG, "User has an active subscription but no backup tier.") + // TODO [message-backups] Set UI flag hint here to launch error sheet? return Result.success() } if (activeSubscription?.isActive != true && tier == MessageBackupTier.PAID) { - Log.w(TAG, "User subscription is inactive or does not exist. Clearing backup tier.") + Log.w(TAG, "User subscription is inactive or does not exist. User will need to cancel and resubscribe.") // TODO [message-backups] Set UI hint? - updateLocalState(null) return Result.success() } if (activeSubscription?.isActive != true && hasActivePurchase) { - Log.w(TAG, "User subscription is inactive but user has a recent purchase. Clearing backup tier.") + Log.w(TAG, "User subscription is inactive but user has a recent purchase. User will need to cancel and resubscribe.") // TODO [message-backups] Set UI hint? - updateLocalState(null) return Result.success() } return Result.success() } - private fun updateLocalState(backupTier: MessageBackupTier?) { - synchronized(InAppPaymentSubscriberRecord.Type.BACKUP) { - SignalStore.backup.backupTier = backupTier - } - } - override fun serialize(): ByteArray? = null override fun getFactoryKey(): String = KEY diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d888c51a07..ba2ce78cdc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7550,11 +7550,13 @@ Backup type changed and subscription cancelled - Subscription cancelled + Subscription canceled Download complete Backup will be created overnight. + + Subscription inactive Backup plan @@ -7563,8 +7565,12 @@ %1$s/month Your backup plan is free - + Renews %1$s + + Expires on %1$s + + Expired on %1$s Back up your message history so you never lose data when you get a new phone or reinstall Signal. @@ -7609,6 +7615,10 @@ Manually back up Please enter your device pin, password or pattern. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/core-ui/src/main/java/org/signal/core/ui/ModifierExtensions.kt b/core-ui/src/main/java/org/signal/core/ui/ModifierExtensions.kt new file mode 100644 index 0000000000..507ede5cf2 --- /dev/null +++ b/core-ui/src/main/java/org/signal/core/ui/ModifierExtensions.kt @@ -0,0 +1,22 @@ +/* + * Copyright 2024 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.signal.core.ui + +import androidx.compose.foundation.layout.padding +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.dimensionResource +import androidx.compose.ui.unit.Dp + +/** + * Applies sensible horizontal padding to the given component. + */ +@Composable +fun Modifier.horizontalGutters( + gutterSize: Dp = dimensionResource(R.dimen.core_ui__gutter) +): Modifier { + return padding(horizontal = gutterSize) +} From dd4d674a610158aed81262de7d9fd60afd1511e9 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 15 Oct 2024 16:55:45 -0300 Subject: [PATCH 14/51] BackupStatusRow to display backup restore status in settings fragment. --- .../backup/v2/ui/status/BackupStatusBanner.kt | 16 +- .../backup/v2/ui/status/BackupStatusRow.kt | 240 ++++++++++++++++++ .../banners/MediaRestoreProgressBanner.kt | 4 +- app/src/main/res/values/strings.xml | 11 + 4 files changed, 261 insertions(+), 10 deletions(-) create mode 100644 app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatusRow.kt diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatusBanner.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatusBanner.kt index 58c8486cc7..d955da0ef8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatusBanner.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatusBanner.kt @@ -55,7 +55,7 @@ private const val NONE = -1 */ @OptIn(ExperimentalLayoutApi::class) @Composable -fun BackupStatus( +fun BackupStatusBanner( data: BackupStatusData, onSkipClick: () -> Unit = {}, onDismissClick: () -> Unit = {}, @@ -150,13 +150,13 @@ fun BackupStatus( fun BackupStatusBannerPreview() { Previews.Preview { Column { - BackupStatus( + BackupStatusBanner( data = BackupStatusData.RestoringMedia(5755000.bytes, 1253.mebiBytes) ) HorizontalDivider() - BackupStatus( + BackupStatusBanner( data = BackupStatusData.RestoringMedia( bytesDownloaded = 55000.bytes, bytesTotal = 1253.mebiBytes, @@ -166,7 +166,7 @@ fun BackupStatusBannerPreview() { HorizontalDivider() - BackupStatus( + BackupStatusBanner( data = BackupStatusData.RestoringMedia( bytesDownloaded = 55000.bytes, bytesTotal = 1253.mebiBytes, @@ -176,7 +176,7 @@ fun BackupStatusBannerPreview() { HorizontalDivider() - BackupStatus( + BackupStatusBanner( data = BackupStatusData.RestoringMedia( bytesDownloaded = 55000.bytes, bytesTotal = 1253.mebiBytes, @@ -186,13 +186,13 @@ fun BackupStatusBannerPreview() { HorizontalDivider() - BackupStatus( + BackupStatusBanner( data = BackupStatusData.NotEnoughFreeSpace(40900.kibiBytes) ) HorizontalDivider() - BackupStatus( + BackupStatusBanner( data = BackupStatusData.CouldNotCompleteBackup ) } @@ -241,7 +241,7 @@ sealed interface BackupStatusData { class NotEnoughFreeSpace( requiredSpace: ByteSize ) : BackupStatusData { - private val requiredSpace = requiredSpace.toUnitString(maxPlaces = 2) + val requiredSpace = requiredSpace.toUnitString(maxPlaces = 2) override val iconRes: Int = R.drawable.symbol_backup_error_24 diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatusRow.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatusRow.kt new file mode 100644 index 0000000000..31a51a5aea --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatusRow.kt @@ -0,0 +1,240 @@ +/* + * Copyright 2024 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.thoughtcrime.securesms.backup.v2.ui.status + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.text.InlineTextContent +import androidx.compose.foundation.text.appendInlineContent +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LinearProgressIndicator +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.dimensionResource +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.Placeholder +import androidx.compose.ui.text.PlaceholderVerticalAlign +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import org.signal.core.ui.Previews +import org.signal.core.ui.Rows +import org.signal.core.ui.SignalPreview +import org.signal.core.util.ByteSize +import org.thoughtcrime.securesms.R +import kotlin.math.roundToInt + +/** + * Backup status displayable as a row on a settings page. + */ +@Composable +fun BackupStatusRow( + backupStatusData: BackupStatusData, + onSkipClick: () -> Unit = {}, + onCancelClick: () -> Unit = {} +) { + Column { + if (backupStatusData !is BackupStatusData.CouldNotCompleteBackup) { + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier.padding(horizontal = dimensionResource(R.dimen.core_ui__gutter)) + ) { + LinearProgressIndicator( + color = progressColor(backupStatusData), + progress = { backupStatusData.progress }, + modifier = Modifier.weight(1f) + ) + + IconButton( + onClick = onCancelClick + ) { + Icon( + painter = painterResource(R.drawable.symbol_x_24), + contentDescription = stringResource(R.string.BackupStatusRow__cancel_download) + ) + } + } + } + + when (backupStatusData) { + is BackupStatusData.RestoringMedia -> { + Text( + text = getRestoringMediaString(backupStatusData), + modifier = Modifier.padding(horizontal = dimensionResource(R.dimen.core_ui__gutter)) + ) + } + + is BackupStatusData.NotEnoughFreeSpace -> { + Text( + text = stringResource( + R.string.BackupStatusRow__not_enough_space, + backupStatusData.requiredSpace, + "%d".format((backupStatusData.progress * 100).roundToInt()) + ), + modifier = Modifier.padding(horizontal = dimensionResource(R.dimen.core_ui__gutter)) + ) + + Rows.TextRow( + text = stringResource(R.string.BackupStatusRow__skip_download), + onClick = onSkipClick + ) + } + + BackupStatusData.CouldNotCompleteBackup -> { + val inlineContentMap = mapOf( + "yellow_bullet" to InlineTextContent( + Placeholder(12.sp, 12.sp, PlaceholderVerticalAlign.TextCenter) + ) { + Box( + modifier = Modifier + .size(12.dp) + .background(color = backupStatusData.iconColors.foreground, shape = CircleShape) + ) + } + ) + + Text( + text = buildAnnotatedString { + appendInlineContent("yellow_bullet") + append(" ") + append(stringResource(R.string.BackupStatusRow__your_last_backup)) + }, + inlineContent = inlineContentMap, + modifier = Modifier.padding(horizontal = dimensionResource(R.dimen.core_ui__gutter)) + ) + } + } + } +} + +@Composable +private fun getRestoringMediaString(backupStatusData: BackupStatusData.RestoringMedia): String { + return when (backupStatusData.restoreStatus) { + BackupStatusData.RestoreStatus.NORMAL -> { + stringResource( + R.string.BackupStatusRow__downloading_s_of_s_s, + backupStatusData.bytesDownloaded.toUnitString(2), + backupStatusData.bytesTotal.toUnitString(2), + "%d".format((backupStatusData.progress * 100).roundToInt()) + ) + } + BackupStatusData.RestoreStatus.LOW_BATTERY -> stringResource(R.string.BackupStatus__status_device_has_low_battery) + BackupStatusData.RestoreStatus.WAITING_FOR_INTERNET -> stringResource(R.string.BackupStatus__status_no_internet) + BackupStatusData.RestoreStatus.WAITING_FOR_WIFI -> stringResource(R.string.BackupStatus__status_waiting_for_wifi) + BackupStatusData.RestoreStatus.FINISHED -> stringResource(R.string.BackupStatus__restore_complete) + } +} + +@Composable +private fun progressColor(backupStatusData: BackupStatusData): Color { + return when (backupStatusData) { + is BackupStatusData.RestoringMedia -> MaterialTheme.colorScheme.primary + else -> backupStatusData.iconColors.foreground + } +} + +@SignalPreview +@Composable +fun BackupStatusRowNormalPreview() { + Previews.Preview { + BackupStatusRow( + backupStatusData = BackupStatusData.RestoringMedia( + bytesTotal = ByteSize(100), + bytesDownloaded = ByteSize(50), + restoreStatus = BackupStatusData.RestoreStatus.NORMAL + ) + ) + } +} + +@SignalPreview +@Composable +fun BackupStatusRowWaitingForWifiPreview() { + Previews.Preview { + BackupStatusRow( + backupStatusData = BackupStatusData.RestoringMedia( + bytesTotal = ByteSize(100), + bytesDownloaded = ByteSize(50), + restoreStatus = BackupStatusData.RestoreStatus.WAITING_FOR_WIFI + ) + ) + } +} + +@SignalPreview +@Composable +fun BackupStatusRowWaitingForInternetPreview() { + Previews.Preview { + BackupStatusRow( + backupStatusData = BackupStatusData.RestoringMedia( + bytesTotal = ByteSize(100), + bytesDownloaded = ByteSize(50), + restoreStatus = BackupStatusData.RestoreStatus.WAITING_FOR_INTERNET + ) + ) + } +} + +@SignalPreview +@Composable +fun BackupStatusRowLowBatteryPreview() { + Previews.Preview { + BackupStatusRow( + backupStatusData = BackupStatusData.RestoringMedia( + bytesTotal = ByteSize(100), + bytesDownloaded = ByteSize(50), + restoreStatus = BackupStatusData.RestoreStatus.LOW_BATTERY + ) + ) + } +} + +@SignalPreview +@Composable +fun BackupStatusRowFinishedPreview() { + Previews.Preview { + BackupStatusRow( + backupStatusData = BackupStatusData.RestoringMedia( + bytesTotal = ByteSize(100), + bytesDownloaded = ByteSize(50), + restoreStatus = BackupStatusData.RestoreStatus.FINISHED + ) + ) + } +} + +@SignalPreview +@Composable +fun BackupStatusRowNotEnoughFreeSpacePreview() { + Previews.Preview { + BackupStatusRow( + backupStatusData = BackupStatusData.NotEnoughFreeSpace( + requiredSpace = ByteSize(50) + ) + ) + } +} + +@SignalPreview +@Composable +fun BackupStatusRowCouldNotCompleteBackupPreview() { + Previews.Preview { + BackupStatusRow( + backupStatusData = BackupStatusData.CouldNotCompleteBackup + ) + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/banner/banners/MediaRestoreProgressBanner.kt b/app/src/main/java/org/thoughtcrime/securesms/banner/banners/MediaRestoreProgressBanner.kt index 88124836ca..aad635e31c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/banner/banners/MediaRestoreProgressBanner.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/banner/banners/MediaRestoreProgressBanner.kt @@ -23,7 +23,7 @@ import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.map import org.signal.core.util.bytes import org.signal.core.util.throttleLatest -import org.thoughtcrime.securesms.backup.v2.ui.status.BackupStatus +import org.thoughtcrime.securesms.backup.v2.ui.status.BackupStatusBanner import org.thoughtcrime.securesms.backup.v2.ui.status.BackupStatusData import org.thoughtcrime.securesms.banner.Banner import org.thoughtcrime.securesms.database.DatabaseObserver @@ -71,7 +71,7 @@ class MediaRestoreProgressBanner(private val listener: RestoreProgressBannerList @Composable override fun DisplayBanner(model: BackupStatusData, contentPadding: PaddingValues) { - BackupStatus( + BackupStatusBanner( data = model, onSkipClick = listener::onSkip, onDismissClick = listener::onDismissComplete diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ba2ce78cdc..8045c8cc0a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7443,6 +7443,17 @@ %1$s of %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap "Back up now" to try again. From 96dd77364e82dd118d6b540192643e80e96e9540 Mon Sep 17 00:00:00 2001 From: Michelle Tang Date: Tue, 15 Oct 2024 13:30:15 -0700 Subject: [PATCH 15/51] Update chat folder display list. --- .../securesms/components/FromTextView.java | 25 ++++++++++--- .../ConversationListAdapter.java | 37 +++++++++++++++---- .../ConversationListDataSource.java | 8 ++-- .../ConversationListFragment.java | 10 ++++- .../ConversationListItem.java | 20 ++++------ .../ConversationListSearchAdapter.kt | 3 +- .../conversationlist/model/Conversation.java | 1 + app/src/main/res/drawable/symbol_pin_16.xml | 10 +++++ .../conversation_list_item_folder_empty.xml | 25 +++++++++++++ .../layout/conversation_list_item_view.xml | 12 ------ app/src/main/res/values/strings.xml | 4 ++ 11 files changed, 110 insertions(+), 45 deletions(-) create mode 100644 app/src/main/res/drawable/symbol_pin_16.xml create mode 100644 app/src/main/res/layout/conversation_list_item_folder_empty.xml diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/FromTextView.java b/app/src/main/java/org/thoughtcrime/securesms/components/FromTextView.java index b254011987..63eefb8ee6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/FromTextView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/FromTextView.java @@ -44,6 +44,10 @@ public void setText(Recipient recipient, @Nullable CharSequence fromString, @Nul } public void setText(Recipient recipient, @Nullable CharSequence fromString, @Nullable CharSequence suffix, boolean asThread, boolean showSelfAsYou) { + setText(recipient, fromString, suffix, asThread, showSelfAsYou, false); + } + + public void setText(Recipient recipient, @Nullable CharSequence fromString, @Nullable CharSequence suffix, boolean asThread, boolean showSelfAsYou, boolean isPinned) { SpannableStringBuilder builder = new SpannableStringBuilder(); if (asThread && recipient.isSelf() && showSelfAsYou) { @@ -66,25 +70,34 @@ public void setText(Recipient recipient, @Nullable CharSequence fromString, @Nul .append(SpanUtil.buildCenteredImageSpan(official)); } + if (recipient.isMuted()) { + builder.append(" ") + .append(SpanUtil.buildCenteredImageSpan(getMuted())); + } + setText(builder); if (recipient.isBlocked()) setCompoundDrawablesRelativeWithIntrinsicBounds(getBlocked(), null, null, null); - else if (recipient.isMuted()) setCompoundDrawablesRelativeWithIntrinsicBounds(getMuted(), null, null, null); + else if (isPinned) setCompoundDrawablesRelativeWithIntrinsicBounds(getPinned(), null, null, null); else setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, 0, 0); } private Drawable getBlocked() { - return getDrawable(R.drawable.symbol_block_16); + return getDrawable(R.drawable.symbol_block_16, R.color.signal_icon_tint_secondary); } private Drawable getMuted() { - return getDrawable(R.drawable.ic_bell_disabled_16); + return getDrawable(R.drawable.ic_bell_disabled_16, R.color.signal_icon_tint_secondary); + } + + private Drawable getPinned() { + return getDrawable(R.drawable.symbol_pin_16, R.color.signal_colorOnSurface); } - private Drawable getDrawable(@DrawableRes int drawable) { + private Drawable getDrawable(@DrawableRes int drawable, int colorRes) { Drawable mutedDrawable = ContextUtil.requireDrawable(getContext(), drawable); - mutedDrawable.setBounds(0, 0, ViewUtil.dpToPx(18), ViewUtil.dpToPx(18)); - DrawableUtil.tint(mutedDrawable, ContextCompat.getColor(getContext(), R.color.signal_icon_tint_secondary)); + mutedDrawable.setBounds(0, 0, ViewUtil.dpToPx(16), ViewUtil.dpToPx(16)); + DrawableUtil.tint(mutedDrawable, ContextCompat.getColor(getContext(), colorRes)); return mutedDrawable; } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListAdapter.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListAdapter.java index 3e065e3430..17b29dfcf2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListAdapter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListAdapter.java @@ -38,6 +38,7 @@ class ConversationListAdapter extends ListAdapter typingSet = new HashSet<>(); + private final LifecycleOwner lifecycleOwner; + private final RequestManager requestManager; + private final OnConversationClickListener onConversationClickListener; + private final ClearFilterViewHolder.OnClearFilterClickListener onClearFilterClicked; + private final EmptyFolderViewHolder.OnFolderSettingsClickListener onFolderSettingsClicked; + private final Set typingSet = new HashSet<>(); - private PagingController pagingController; + private ConversationSet selectedConversations = new ConversationSet(); + private PagingController pagingController; protected ConversationListAdapter(@NonNull LifecycleOwner lifecycleOwner, @NonNull RequestManager requestManager, @NonNull OnConversationClickListener onConversationClickListener, - @NonNull ClearFilterViewHolder.OnClearFilterClickListener onClearFilterClicked) + @NonNull ClearFilterViewHolder.OnClearFilterClickListener onClearFilterClicked, + @NonNull EmptyFolderViewHolder.OnFolderSettingsClickListener onFolderSettingsClicked) { super(new ConversationDiffCallback()); @@ -65,6 +68,7 @@ protected ConversationListAdapter(@NonNull LifecycleOwner lifecycleOwner, this.requestManager = requestManager; this.onConversationClickListener = onConversationClickListener; this.onClearFilterClicked = onClearFilterClicked; + this.onFolderSettingsClicked = onFolderSettingsClicked; } @Override @@ -118,6 +122,9 @@ protected ConversationListAdapter(@NonNull LifecycleOwner lifecycleOwner, } else if (viewType == TYPE_CLEAR_FILTER_EMPTY) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.conversation_list_item_clear_filter_empty, parent, false); return new ClearFilterViewHolder(v, onClearFilterClicked); + } else if (viewType == TYPE_CHAT_FOLDER_EMPTY) { + View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.conversation_list_item_folder_empty, parent, false); + return new EmptyFolderViewHolder(v, onFolderSettingsClicked); } else { throw new IllegalStateException("Unknown type! " + viewType); } @@ -229,6 +236,8 @@ public int getItemViewType(int position) { return TYPE_CLEAR_FILTER_FOOTER; case CONVERSATION_FILTER_EMPTY: return TYPE_CLEAR_FILTER_EMPTY; + case CHAT_FOLDER_EMPTY: + return TYPE_CHAT_FOLDER_EMPTY; case THREAD: return TYPE_THREAD; case EMPTY: @@ -281,6 +290,18 @@ public HeaderViewHolder(@NonNull View itemView) { } } + static class EmptyFolderViewHolder extends RecyclerView.ViewHolder { + + public EmptyFolderViewHolder(@NonNull View itemView, OnFolderSettingsClickListener listener) { + super(itemView); + itemView.findViewById(R.id.folder_settings).setOnClickListener(v -> listener.onFolderSettingsClick()); + } + + interface OnFolderSettingsClickListener { + void onFolderSettingsClick(); + } + } + interface OnConversationClickListener { void onConversationClick(@NonNull Conversation conversation); boolean onConversationLongClick(@NonNull Conversation conversation, @NonNull View view); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListDataSource.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListDataSource.java index 5d4181dd83..05e5bb2a04 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListDataSource.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListDataSource.java @@ -110,12 +110,14 @@ public int size() { SignalTrace.endSection(); if (conversations.isEmpty() && start == 0 && length == 1) { - if (conversationFilter == ConversationFilter.OFF) { - return Collections.singletonList(new Conversation(ConversationReader.buildThreadRecordForType(Conversation.Type.EMPTY, 0, false))); - } else { + if (conversationFilter != ConversationFilter.OFF) { return Collections.singletonList(new Conversation(ConversationReader.buildThreadRecordForType(Conversation.Type.CONVERSATION_FILTER_EMPTY, 0, showConversationFooterTip))); + } else if (chatFolder.getFolderType() != ChatFolderRecord.FolderType.ALL) { + return Collections.singletonList(new Conversation(ConversationReader.buildThreadRecordForType(Conversation.Type.CHAT_FOLDER_EMPTY, 0, false))); + } else { + return Collections.singletonList(new Conversation(ConversationReader.buildThreadRecordForType(Conversation.Type.EMPTY, 0, false))); } } else { return conversations; diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java index c91ba37a3d..c38389c1e5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java @@ -203,7 +203,8 @@ public class ConversationListFragment extends MainFragment implements ActionMode ConversationListAdapter.OnConversationClickListener, MegaphoneActionController, ClearFilterViewHolder.OnClearFilterClickListener, - ChatFolderAdapter.Callbacks + ChatFolderAdapter.Callbacks, + ConversationListAdapter.EmptyFolderViewHolder.OnFolderSettingsClickListener { public static final short MESSAGE_REQUESTS_REQUEST_CODE_CREATE_NAME = 32562; public static final short SMS_ROLE_REQUEST_CODE = 32563; @@ -916,7 +917,7 @@ private void maybeScheduleRefreshProfileJob() { private void initializeListAdapters() { - defaultAdapter = new ConversationListAdapter(getViewLifecycleOwner(), Glide.with(this), this, this); + defaultAdapter = new ConversationListAdapter(getViewLifecycleOwner(), Glide.with(this), this, this, this); setAdapter(defaultAdapter); @@ -1704,6 +1705,11 @@ public void onReorder() { startActivity(AppSettingsActivity.chatFolders(requireContext())); } + @Override + public void onFolderSettingsClick() { + startActivity(AppSettingsActivity.chatFolders(requireContext())); + } + private class ArchiveListenerCallback extends ItemTouchHelper.SimpleCallback { private static final long SWIPE_ANIMATION_DURATION = 175; diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListItem.java index 7700b99238..5835d5a5fa 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListItem.java @@ -171,7 +171,6 @@ protected void onFinishInflate() { this.uncheckedView = findViewById(R.id.conversation_list_item_unchecked); this.checkedView = findViewById(R.id.conversation_list_item_checked); this.unreadMentions = findViewById(R.id.conversation_list_item_unread_mentions_indicator); - this.pinnedView = findViewById(R.id.conversation_list_item_pinned); this.thumbSize = (int) DimensionUnit.SP.toPixels(16f); this.thumbTarget = new GlideLiveDataTarget(thumbSize, thumbSize); this.searchStyleFactory = () -> new CharacterStyle[] { new ForegroundColorSpan(ContextCompat.getColor(getContext(), R.color.signal_colorOnSurface)), SpanUtil.getBoldSpan() }; @@ -215,7 +214,7 @@ public void bind(@NonNull LifecycleOwner lifecycleOwner, @NonNull Set typingThreads, @NonNull ConversationSet selectedConversations) { - bindThread(lifecycleOwner, thread, glideRequests, locale, typingThreads, selectedConversations, null, false); + bindThread(lifecycleOwner, thread, glideRequests, locale, typingThreads, selectedConversations, null, false, true); } public void bindThread(@NonNull LifecycleOwner lifecycleOwner, @@ -225,7 +224,8 @@ public void bindThread(@NonNull LifecycleOwner lifecycleOwner, @NonNull Set typingThreads, @NonNull ConversationSet selectedConversations, @Nullable String highlightSubstring, - boolean appendSystemContactIcon) + boolean appendSystemContactIcon, + boolean showPinned) { this.threadId = thread.getThreadId(); this.requestManager = requestManager; @@ -250,9 +250,9 @@ public void bindThread(@NonNull LifecycleOwner lifecycleOwner, if (highlightSubstring != null) { String name = recipient.get().isSelf() ? getContext().getString(R.string.note_to_self) : recipient.get().getDisplayName(getContext()); - this.fromView.setText(recipient.get(), SearchUtil.getHighlightedSpan(locale, searchStyleFactory, name, highlightSubstring, SearchUtil.MATCH_ALL), suffix); + this.fromView.setText(recipient.get(), SearchUtil.getHighlightedSpan(locale, searchStyleFactory, name, highlightSubstring, SearchUtil.MATCH_ALL), suffix, true, false, showPinned && thread.isPinned()); } else { - this.fromView.setText(recipient.get(), suffix); + this.fromView.setText(recipient.get(), recipient.get().getDisplayName(getContext()), suffix, true, false, showPinned && thread.isPinned()); } this.typingThreads = typingThreads; @@ -281,12 +281,6 @@ public void bindThread(@NonNull LifecycleOwner lifecycleOwner, this.archivedView.setVisibility(View.GONE); } - if (thread.isPinned()) { - this.pinnedView.setVisibility(View.VISIBLE); - } else { - this.pinnedView.setVisibility(View.GONE); - } - setStatusIcons(thread); setSelectedConversations(selectedConversations); setBadgeFromRecipient(recipient.get()); @@ -570,9 +564,9 @@ private void onRecipientChanged(@NonNull Recipient recipient) { } else { name = recipient.getDisplayName(getContext()); } - fromView.setText(recipient, SearchUtil.getHighlightedSpan(locale, searchStyleFactory, new SpannableString(name), highlightSubstring, SearchUtil.MATCH_ALL), null, thread != null); + fromView.setText(recipient, SearchUtil.getHighlightedSpan(locale, searchStyleFactory, new SpannableString(name), highlightSubstring, SearchUtil.MATCH_ALL), null, thread != null, false, thread != null && thread.isPinned()); } else { - fromView.setText(recipient); + fromView.setText(recipient, recipient.getDisplayName(getContext()), null, true, false, thread != null && thread.isPinned()); } contactPhotoImage.setAvatar(requestManager, recipient, !batchMode, false); setBadgeFromRecipient(recipient); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListSearchAdapter.kt b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListSearchAdapter.kt index 17c48c4169..11b61bbd1f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListSearchAdapter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListSearchAdapter.kt @@ -121,7 +121,8 @@ class ConversationListSearchAdapter( emptySet(), ConversationSet(), model.thread.query, - true + true, + false ) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/model/Conversation.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/model/Conversation.java index 42b78e5030..cbf359b096 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/model/Conversation.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/model/Conversation.java @@ -45,6 +45,7 @@ public enum Type { ARCHIVED_FOOTER, CONVERSATION_FILTER_FOOTER, CONVERSATION_FILTER_EMPTY, + CHAT_FOLDER_EMPTY, EMPTY } } diff --git a/app/src/main/res/drawable/symbol_pin_16.xml b/app/src/main/res/drawable/symbol_pin_16.xml new file mode 100644 index 0000000000..48110ef2f9 --- /dev/null +++ b/app/src/main/res/drawable/symbol_pin_16.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/conversation_list_item_folder_empty.xml b/app/src/main/res/layout/conversation_list_item_folder_empty.xml new file mode 100644 index 0000000000..672a73b953 --- /dev/null +++ b/app/src/main/res/layout/conversation_list_item_folder_empty.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/app/src/main/res/layout/conversation_list_item_view.xml b/app/src/main/res/layout/conversation_list_item_view.xml index f0dda73420..6d2a4182e5 100644 --- a/app/src/main/res/layout/conversation_list_item_view.xml +++ b/app/src/main/res/layout/conversation_list_item_view.xml @@ -194,18 +194,6 @@ android:textColor="@color/signal_colorSurface" tools:visibility="gone" /> - - New chat Open Camera No chats yet.\nGet started by messaging a friend. + + No chats to display + + Folder settings From 0d878ca70a18efc5f90fc6f0db0ad74c7d24e04b Mon Sep 17 00:00:00 2001 From: mtang-signal Date: Tue, 15 Oct 2024 16:57:29 -0700 Subject: [PATCH 16/51] Default to showing muted chats. --- .../components/settings/app/chats/folders/ChatFolderRecord.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord.kt index bb55279fa6..9acc3be55f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord.kt @@ -14,12 +14,12 @@ data class ChatFolderRecord( val includedRecipients: Set = emptySet(), val excludedRecipients: Set = emptySet(), val showUnread: Boolean = false, - val showMutedChats: Boolean = false, + val showMutedChats: Boolean = true, val showIndividualChats: Boolean = false, val showGroupChats: Boolean = false, val isMuted: Boolean = false, val folderType: FolderType = FolderType.CUSTOM, - val unreadCount: Int = 0 // TODO [michelle]: unread count + val unreadCount: Int = 0 ) { enum class FolderType(val value: Int) { /** Folder containing all chats */ From a90df1e262b596bb30923fea6016274988185eff Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 10 Oct 2024 16:01:48 -0400 Subject: [PATCH 17/51] Get a big backupV2 import fully working. --- .../backup/v2/ArchiveImportExportTests.kt | 20 +-- .../securesms/backup/v2/BackupRepository.kt | 153 +++++++++++++++--- .../AttachmentTableArchiveExtensions.kt | 7 - .../CallLinkTableArchiveExtensions.kt | 8 +- .../v2/database/CallTableArchiveExtensions.kt | 7 - .../ChatColorsTableArchiveExtensions.kt | 15 -- ...DistributionListTablesArchiveExtensions.kt | 9 -- .../InAppPaymentTableArchiveExtensions.kt | 15 -- .../database/MessageTableArchiveExtensions.kt | 6 - .../ReactionTableArchiveExtensions.kt | 15 -- .../RecipientTableArchiveExtensions.kt | 12 -- .../database/StickerTableArchiveExtensions.kt | 15 -- .../database/ThreadTableArchiveExtensions.kt | 7 - .../v2/exporters/CallLinkArchiveExporter.kt | 5 +- .../v2/importer/AdHodCallArchiveImporter.kt | 11 +- .../v2/importer/CallLinkArchiveImporter.kt | 16 +- .../v2/importer/ChatItemArchiveImporter.kt | 2 +- .../InternalBackupPlaygroundViewModel.kt | 1 + .../securesms/database/NameCollisionTables.kt | 14 +- .../securesms/database/SQLiteDatabase.java | 1 + .../securesms/database/SearchTable.kt | 5 +- .../securesms/database/SignalDatabase.kt | 5 +- .../database/SqlCipherErrorHandler.kt | 20 +-- .../securesms/jobmanager/JobManager.java | 4 +- .../securesms/jobs/BackupRestoreJob.kt | 7 +- .../org/signal/core/util/ProtoExtensions.kt | 4 + .../core/util/SQLiteDatabaseExtensions.kt | 70 +++++++- 27 files changed, 261 insertions(+), 193 deletions(-) delete mode 100644 app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ChatColorsTableArchiveExtensions.kt delete mode 100644 app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/InAppPaymentTableArchiveExtensions.kt delete mode 100644 app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ReactionTableArchiveExtensions.kt delete mode 100644 app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/StickerTableArchiveExtensions.kt diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/ArchiveImportExportTests.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/ArchiveImportExportTests.kt index 6622510668..929cab9e29 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/ArchiveImportExportTests.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/ArchiveImportExportTests.kt @@ -14,7 +14,6 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.signal.core.util.Base64 -import org.signal.core.util.SqlUtil import org.signal.core.util.logging.Log import org.signal.core.util.readFully import org.signal.libsignal.messagebackup.ComparableBackup @@ -22,12 +21,9 @@ import org.signal.libsignal.messagebackup.MessageBackup import org.signal.libsignal.zkgroup.profiles.ProfileKey import org.thoughtcrime.securesms.backup.v2.proto.Frame import org.thoughtcrime.securesms.backup.v2.stream.PlainTextBackupReader -import org.thoughtcrime.securesms.database.DistributionListTables import org.thoughtcrime.securesms.database.KeyValueDatabase -import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.keyvalue.SignalStore -import org.thoughtcrime.securesms.recipients.RecipientId import org.whispersystems.signalservice.api.kbs.MasterKey import org.whispersystems.signalservice.api.push.ServiceId import java.io.ByteArrayInputStream @@ -263,21 +259,7 @@ class ArchiveImportExportTests { } private fun resetAllData() { - // Need to delete these first to prevent foreign key crash - SignalDatabase.rawDatabase.execSQL("DELETE FROM ${DistributionListTables.ListTable.TABLE_NAME}") - SignalDatabase.rawDatabase.execSQL("DELETE FROM ${DistributionListTables.MembershipTable.TABLE_NAME}") - - SqlUtil.getAllTables(SignalDatabase.rawDatabase) - .filterNot { it.contains("sqlite") || it.contains("fts") || it.startsWith("emoji_search_") } // If we delete these we'll corrupt the DB - .sorted() - .forEach { table -> - SignalDatabase.rawDatabase.execSQL("DELETE FROM $table") - SqlUtil.resetAutoIncrementValue(SignalDatabase.rawDatabase, table) - } - - AppDependencies.recipientCache.clear() - AppDependencies.recipientCache.clearSelf() - RecipientId.clearCache() + // All the main database stuff is reset as a normal part of importing KeyValueDatabase.getInstance(AppDependencies.application).clear() SignalStore.resetCache() diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt index 5cc7aa476d..0d64251a1d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt @@ -11,9 +11,15 @@ import kotlinx.coroutines.withContext import org.greenrobot.eventbus.EventBus import org.signal.core.util.Base64 import org.signal.core.util.EventTimer +import org.signal.core.util.Stopwatch import org.signal.core.util.concurrent.LimitedWorker import org.signal.core.util.concurrent.SignalExecutors +import org.signal.core.util.forceForeignKeyConstraintsEnabled import org.signal.core.util.fullWalCheckpoint +import org.signal.core.util.getAllIndexDefinitions +import org.signal.core.util.getAllTableDefinitions +import org.signal.core.util.getAllTriggerDefinitions +import org.signal.core.util.getForeignKeyViolations import org.signal.core.util.logging.Log import org.signal.core.util.stream.NonClosingOutputStream import org.signal.core.util.withinTransaction @@ -27,8 +33,6 @@ import org.thoughtcrime.securesms.attachments.Attachment import org.thoughtcrime.securesms.attachments.AttachmentId import org.thoughtcrime.securesms.attachments.Cdn import org.thoughtcrime.securesms.attachments.DatabaseAttachment -import org.thoughtcrime.securesms.backup.v2.database.clearAllDataForBackup -import org.thoughtcrime.securesms.backup.v2.database.clearAllDataForBackupRestore import org.thoughtcrime.securesms.backup.v2.importer.ChatItemArchiveImporter import org.thoughtcrime.securesms.backup.v2.processor.AccountDataArchiveProcessor import org.thoughtcrime.securesms.backup.v2.processor.AdHocCallArchiveProcessor @@ -49,6 +53,7 @@ import org.thoughtcrime.securesms.crypto.AttachmentSecretProvider import org.thoughtcrime.securesms.crypto.DatabaseSecretProvider import org.thoughtcrime.securesms.database.AttachmentTable import org.thoughtcrime.securesms.database.KeyValueDatabase +import org.thoughtcrime.securesms.database.SearchTable import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.database.model.InAppPaymentSubscriberRecord import org.thoughtcrime.securesms.dependencies.AppDependencies @@ -375,11 +380,11 @@ object BackupRepository { } return frameReader.use { reader -> - import(backupKey, reader, selfData) + import(backupKey, reader, selfData, cancellationSignal = { false }) } } - fun import(length: Long, inputStreamFactory: () -> InputStream, selfData: SelfData, plaintext: Boolean = false): ImportResult { + fun import(length: Long, inputStreamFactory: () -> InputStream, selfData: SelfData, plaintext: Boolean = false, cancellationSignal: () -> Boolean = { false }): ImportResult { val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() val frameReader = if (plaintext) { @@ -394,79 +399,139 @@ object BackupRepository { } return frameReader.use { reader -> - import(backupKey, reader, selfData) + import(backupKey, reader, selfData, cancellationSignal) } } private fun import( backupKey: BackupKey, frameReader: BackupImportReader, - selfData: SelfData + selfData: SelfData, + cancellationSignal: () -> Boolean ): ImportResult { + val stopwatch = Stopwatch("import") val eventTimer = EventTimer() val header = frameReader.getHeader() if (header == null) { - Log.e(TAG, "Backup is missing header!") + Log.e(TAG, "[import] Backup is missing header!") return ImportResult.Failure } else if (header.version > VERSION) { - Log.e(TAG, "Backup version is newer than we understand: ${header.version}") + Log.e(TAG, "[import] Backup version is newer than we understand: ${header.version}") return ImportResult.Failure } - SignalDatabase.rawDatabase.withinTransaction { - SignalDatabase.recipients.clearAllDataForBackupRestore() - SignalDatabase.distributionLists.clearAllDataForBackupRestore() - SignalDatabase.threads.clearAllDataForBackupRestore() - SignalDatabase.messages.clearAllDataForBackupRestore() - SignalDatabase.attachments.clearAllDataForBackupRestore() - SignalDatabase.stickers.clearAllDataForBackupRestore() - SignalDatabase.reactions.clearAllDataForBackupRestore() - SignalDatabase.inAppPayments.clearAllDataForBackupRestore() - SignalDatabase.chatColors.clearAllDataForBackupRestore() - SignalDatabase.calls.clearAllDataForBackup() - SignalDatabase.callLinks.clearAllDataForBackup() + try { + // Removing all the data from the various tables is *very* expensive (i.e. can take *several* minutes) if we don't do some pre-work. + // SQLite optimizes deletes if there's no foreign keys, triggers, or WHERE clause, so that's the environment we're gonna create. + + Log.d(TAG, "[import] Disabling foreign keys...") + SignalDatabase.rawDatabase.forceForeignKeyConstraintsEnabled(false) + + Log.d(TAG, "[import] Acquiring transaction...") + SignalDatabase.rawDatabase.beginTransaction() + + Log.d(TAG, "[import] Inside transaction.") + stopwatch.split("get-transaction") + + Log.d(TAG, "[import] --- Dropping all indices ---") + val indexMetadata = SignalDatabase.rawDatabase.getAllIndexDefinitions() + for (index in indexMetadata) { + Log.d(TAG, "[import] Dropping index ${index.name}...") + SignalDatabase.rawDatabase.execSQL("DROP INDEX IF EXISTS ${index.name}") + } + stopwatch.split("drop-indices") + + if (cancellationSignal()) { + return ImportResult.Failure + } + + Log.d(TAG, "[import] --- Dropping all triggers ---") + val triggerMetadata = SignalDatabase.rawDatabase.getAllTriggerDefinitions() + for (trigger in triggerMetadata) { + Log.d(TAG, "[import] Dropping trigger ${trigger.name}...") + SignalDatabase.rawDatabase.execSQL("DROP TRIGGER IF EXISTS ${trigger.name}") + } + stopwatch.split("drop-triggers") + + if (cancellationSignal()) { + return ImportResult.Failure + } + + Log.d(TAG, "[import] --- Recreating all tables ---") + val tableMetadata = SignalDatabase.rawDatabase.getAllTableDefinitions().filter { !it.name.startsWith(SearchTable.FTS_TABLE_NAME + "_") } + for (table in tableMetadata) { + Log.d(TAG, "[import] Dropping table ${table.name}...") + SignalDatabase.rawDatabase.execSQL("DROP TABLE IF EXISTS ${table.name}") + + Log.d(TAG, "[import] Creating table ${table.name}...") + SignalDatabase.rawDatabase.execSQL(table.statement) + } + + RecipientId.clearCache() + AppDependencies.recipientCache.clear() + AppDependencies.recipientCache.clearSelf() + + stopwatch.split("drop-data") + + if (cancellationSignal()) { + return ImportResult.Failure + } // Add back self after clearing data val selfId: RecipientId = SignalDatabase.recipients.getAndPossiblyMerge(selfData.aci, selfData.pni, selfData.e164, pniVerified = true, changeSelf = true) SignalDatabase.recipients.setProfileKey(selfId, selfData.profileKey) SignalDatabase.recipients.setProfileSharing(selfId, true) - eventTimer.emit("setup") val importState = ImportState(backupKey) val chatItemInserter: ChatItemArchiveImporter = ChatItemArchiveProcessor.beginImport(importState) + Log.d(TAG, "[import] Beginning to read frames.") val totalLength = frameReader.getStreamLength() + var frameCount = 0 for (frame in frameReader) { when { frame.account != null -> { AccountDataArchiveProcessor.import(frame.account, selfId, importState) eventTimer.emit("account") + frameCount++ } frame.recipient != null -> { RecipientArchiveProcessor.import(frame.recipient, importState) eventTimer.emit("recipient") + frameCount++ } frame.chat != null -> { ChatArchiveProcessor.import(frame.chat, importState) eventTimer.emit("chat") + frameCount++ } frame.adHocCall != null -> { AdHocCallArchiveProcessor.import(frame.adHocCall, importState) eventTimer.emit("call") + frameCount++ } frame.stickerPack != null -> { StickerArchiveProcessor.import(frame.stickerPack) eventTimer.emit("sticker-pack") + frameCount++ } frame.chatItem != null -> { chatItemInserter.import(frame.chatItem) eventTimer.emit("chatItem") + frameCount++ + + if (frameCount % 1000 == 0) { + if (cancellationSignal()) { + return ImportResult.Failure + } + Log.d(TAG, "Imported $frameCount frames so far.") + } // TODO if there's stuff in the stream after chatItems, we need to flush the inserter before going to the next phase } @@ -479,16 +544,50 @@ object BackupRepository { eventTimer.emit("chatItem") } + stopwatch.split("frames") + + Log.d(TAG, "[import] Rebuilding FTS index...") + SignalDatabase.messageSearch.rebuildIndex() + + Log.d(TAG, "[import] --- Recreating indices ---") + for (index in indexMetadata) { + Log.d(TAG, "[import] Creating index ${index.name}...") + SignalDatabase.rawDatabase.execSQL(index.statement) + } + stopwatch.split("recreate-indices") + + Log.d(TAG, "[import] --- Recreating triggers ---") + for (trigger in triggerMetadata) { + Log.d(TAG, "[import] Creating trigger ${trigger.name}...") + SignalDatabase.rawDatabase.execSQL(trigger.statement) + } + stopwatch.split("recreate-triggers") + + Log.d(TAG, "[import] Updating threads...") importState.chatIdToLocalThreadId.values.forEach { SignalDatabase.threads.update(it, unarchive = false, allowDeletion = false) } + stopwatch.split("thread-updates") + + val foreignKeyViolations = SignalDatabase.rawDatabase.getForeignKeyViolations() + if (foreignKeyViolations.isNotEmpty()) { + throw IllegalStateException("Foreign key check failed! Violations: $foreignKeyViolations") + } + stopwatch.split("fk-check") + + SignalDatabase.rawDatabase.setTransactionSuccessful() + } finally { + if (SignalDatabase.rawDatabase.inTransaction()) { + SignalDatabase.rawDatabase.endTransaction() + } + + Log.d(TAG, "[import] Re-enabling foreign keys...") + SignalDatabase.rawDatabase.forceForeignKeyConstraintsEnabled(true) } AppDependencies.recipientCache.clear() AppDependencies.recipientCache.warmUp() - Log.d(TAG, "import() ${eventTimer.stop().summary}") - val groupJobs = SignalDatabase.groups.getGroups().use { groups -> groups .asSequence() @@ -502,6 +601,10 @@ object BackupRepository { .toList() } AppDependencies.jobManager.addAll(groupJobs) + stopwatch.split("group-jobs") + + Log.d(TAG, "[import] Finished! ${eventTimer.stop().summary}") + stopwatch.stop(TAG) return ImportResult.Success(backupTime = header.backupTimeMs) } @@ -1091,6 +1194,10 @@ class ImportState(val backupKey: BackupKey) { val chatIdToLocalRecipientId: MutableMap = hashMapOf() val chatIdToBackupRecipientId: MutableMap = hashMapOf() val remoteToLocalColorId: MutableMap = hashMapOf() + + fun requireLocalRecipientId(remoteId: Long): RecipientId { + return remoteToLocalRecipientId[remoteId] ?: throw IllegalArgumentException("There is no local recipientId for remote recipientId $remoteId!") + } } class BackupMetadata( diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/AttachmentTableArchiveExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/AttachmentTableArchiveExtensions.kt index 52394176ce..b100df773c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/AttachmentTableArchiveExtensions.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/AttachmentTableArchiveExtensions.kt @@ -5,17 +5,10 @@ package org.thoughtcrime.securesms.backup.v2.database -import org.signal.core.util.SqlUtil -import org.signal.core.util.deleteAll import org.thoughtcrime.securesms.attachments.Attachment import org.thoughtcrime.securesms.attachments.AttachmentId import org.thoughtcrime.securesms.database.AttachmentTable -fun AttachmentTable.clearAllDataForBackupRestore() { - writableDatabase.deleteAll(AttachmentTable.TABLE_NAME) - SqlUtil.resetAutoIncrementValue(writableDatabase, AttachmentTable.TABLE_NAME) -} - fun AttachmentTable.restoreWallpaperAttachment(attachment: Attachment): AttachmentId? { return insertAttachmentsForMessage(AttachmentTable.WALLPAPER_MESSAGE_ID, listOf(attachment), emptyList()).values.firstOrNull() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/CallLinkTableArchiveExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/CallLinkTableArchiveExtensions.kt index 0ed2e934a4..28c499f983 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/CallLinkTableArchiveExtensions.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/CallLinkTableArchiveExtensions.kt @@ -5,8 +5,6 @@ package org.thoughtcrime.securesms.backup.v2.database -import org.signal.core.util.SqlUtil -import org.signal.core.util.deleteAll import org.signal.core.util.select import org.thoughtcrime.securesms.database.CallLinkTable @@ -14,12 +12,8 @@ fun CallLinkTable.getCallLinksForBackup(): CallLinkArchiveExporter { val cursor = readableDatabase .select() .from(CallLinkTable.TABLE_NAME) + .where("${CallLinkTable.ROOT_KEY} NOT NULL") .run() return CallLinkArchiveExporter(cursor) } - -fun CallLinkTable.clearAllDataForBackup() { - writableDatabase.deleteAll(CallLinkTable.TABLE_NAME) - SqlUtil.resetAutoIncrementValue(writableDatabase, CallLinkTable.TABLE_NAME) -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/CallTableArchiveExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/CallTableArchiveExtensions.kt index 5ed0cfe8b2..1c780545d6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/CallTableArchiveExtensions.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/CallTableArchiveExtensions.kt @@ -5,8 +5,6 @@ package org.thoughtcrime.securesms.backup.v2.database -import org.signal.core.util.SqlUtil -import org.signal.core.util.deleteAll import org.signal.core.util.select import org.thoughtcrime.securesms.database.CallTable @@ -19,8 +17,3 @@ fun CallTable.getAdhocCallsForBackup(): AdHocCallArchiveExporter { .run() ) } - -fun CallTable.clearAllDataForBackup() { - writableDatabase.deleteAll(CallTable.TABLE_NAME) - SqlUtil.resetAutoIncrementValue(writableDatabase, CallTable.TABLE_NAME) -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ChatColorsTableArchiveExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ChatColorsTableArchiveExtensions.kt deleted file mode 100644 index e4458492c9..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ChatColorsTableArchiveExtensions.kt +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright 2024 Signal Messenger, LLC - * SPDX-License-Identifier: AGPL-3.0-only - */ - -package org.thoughtcrime.securesms.backup.v2.database - -import org.signal.core.util.SqlUtil -import org.signal.core.util.deleteAll -import org.thoughtcrime.securesms.database.ChatColorsTable - -fun ChatColorsTable.clearAllDataForBackupRestore() { - writableDatabase.deleteAll(ChatColorsTable.TABLE_NAME) - SqlUtil.resetAutoIncrementValue(writableDatabase, ChatColorsTable.TABLE_NAME) -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/DistributionListTablesArchiveExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/DistributionListTablesArchiveExtensions.kt index ec13aa231f..2bd60d1f90 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/DistributionListTablesArchiveExtensions.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/DistributionListTablesArchiveExtensions.kt @@ -5,8 +5,6 @@ package org.thoughtcrime.securesms.backup.v2.database -import org.signal.core.util.SqlUtil -import org.signal.core.util.deleteAll import org.signal.core.util.select import org.signal.core.util.withinTransaction import org.thoughtcrime.securesms.backup.v2.exporters.DistributionListArchiveExporter @@ -39,10 +37,3 @@ fun DistributionListTables.getMembersForBackup(id: DistributionListId): List rawMembers } } - -fun DistributionListTables.clearAllDataForBackupRestore() { - writableDatabase.deleteAll(DistributionListTables.ListTable.TABLE_NAME) - writableDatabase.deleteAll(DistributionListTables.MembershipTable.TABLE_NAME) - SqlUtil.resetAutoIncrementValue(writableDatabase, DistributionListTables.ListTable.TABLE_NAME) - SqlUtil.resetAutoIncrementValue(writableDatabase, DistributionListTables.MembershipTable.TABLE_NAME) -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/InAppPaymentTableArchiveExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/InAppPaymentTableArchiveExtensions.kt deleted file mode 100644 index 3ed4bcd030..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/InAppPaymentTableArchiveExtensions.kt +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright 2024 Signal Messenger, LLC - * SPDX-License-Identifier: AGPL-3.0-only - */ - -package org.thoughtcrime.securesms.backup.v2.database - -import org.signal.core.util.SqlUtil -import org.signal.core.util.deleteAll -import org.thoughtcrime.securesms.database.InAppPaymentTable - -fun InAppPaymentTable.clearAllDataForBackupRestore() { - writableDatabase.deleteAll(InAppPaymentTable.TABLE_NAME) - SqlUtil.resetAutoIncrementValue(writableDatabase, InAppPaymentTable.TABLE_NAME) -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/MessageTableArchiveExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/MessageTableArchiveExtensions.kt index 98a77f044c..a460f9c44c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/MessageTableArchiveExtensions.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/MessageTableArchiveExtensions.kt @@ -5,7 +5,6 @@ package org.thoughtcrime.securesms.backup.v2.database -import org.signal.core.util.SqlUtil import org.signal.core.util.select import org.thoughtcrime.securesms.backup.v2.ImportState import org.thoughtcrime.securesms.backup.v2.exporters.ChatItemArchiveExporter @@ -78,8 +77,3 @@ fun MessageTable.getMessagesForBackup(db: SignalDatabase, backupTime: Long, medi fun MessageTable.createChatItemInserter(importState: ImportState): ChatItemArchiveImporter { return ChatItemArchiveImporter(writableDatabase, importState, 500) } - -fun MessageTable.clearAllDataForBackupRestore() { - writableDatabase.delete(MessageTable.TABLE_NAME, null, null) - SqlUtil.resetAutoIncrementValue(writableDatabase, MessageTable.TABLE_NAME) -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ReactionTableArchiveExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ReactionTableArchiveExtensions.kt deleted file mode 100644 index cd5e8690b5..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ReactionTableArchiveExtensions.kt +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright 2023 Signal Messenger, LLC - * SPDX-License-Identifier: AGPL-3.0-only - */ - -package org.thoughtcrime.securesms.backup.v2.database - -import org.signal.core.util.SqlUtil -import org.signal.core.util.deleteAll -import org.thoughtcrime.securesms.database.ReactionTable - -fun ReactionTable.clearAllDataForBackupRestore() { - writableDatabase.deleteAll(ReactionTable.TABLE_NAME) - SqlUtil.resetAutoIncrementValue(writableDatabase, ReactionTable.TABLE_NAME) -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/RecipientTableArchiveExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/RecipientTableArchiveExtensions.kt index 4928136022..0bef7777e6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/RecipientTableArchiveExtensions.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/RecipientTableArchiveExtensions.kt @@ -7,8 +7,6 @@ package org.thoughtcrime.securesms.backup.v2.database import android.content.ContentValues import org.signal.core.util.Base64 -import org.signal.core.util.SqlUtil -import org.signal.core.util.deleteAll import org.signal.core.util.logging.Log import org.signal.core.util.nullIfBlank import org.signal.core.util.select @@ -20,7 +18,6 @@ import org.thoughtcrime.securesms.backup.v2.proto.AccountData import org.thoughtcrime.securesms.database.GroupTable import org.thoughtcrime.securesms.database.RecipientTable import org.thoughtcrime.securesms.database.model.databaseprotos.RecipientExtras -import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.profiles.ProfileName import org.thoughtcrime.securesms.recipients.RecipientId @@ -123,15 +120,6 @@ fun RecipientTable.restoreSelfFromBackup(accountData: AccountData, selfId: Recip .run() } -fun RecipientTable.clearAllDataForBackupRestore() { - writableDatabase.deleteAll(RecipientTable.TABLE_NAME) - SqlUtil.resetAutoIncrementValue(writableDatabase, RecipientTable.TABLE_NAME) - - RecipientId.clearCache() - AppDependencies.recipientCache.clear() - AppDependencies.recipientCache.clearSelf() -} - fun RecipientTable.restoreReleaseNotes(): RecipientId { val releaseChannelId: RecipientId = insertReleaseChannelRecipient() SignalStore.releaseChannel.setReleaseChannelRecipientId(releaseChannelId) diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/StickerTableArchiveExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/StickerTableArchiveExtensions.kt deleted file mode 100644 index a9f5edf249..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/StickerTableArchiveExtensions.kt +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright 2023 Signal Messenger, LLC - * SPDX-License-Identifier: AGPL-3.0-only - */ - -package org.thoughtcrime.securesms.backup.v2.database - -import org.signal.core.util.SqlUtil -import org.signal.core.util.deleteAll -import org.thoughtcrime.securesms.database.StickerTable - -fun StickerTable.clearAllDataForBackupRestore() { - writableDatabase.deleteAll(StickerTable.TABLE_NAME) - SqlUtil.resetAutoIncrementValue(writableDatabase, StickerTable.TABLE_NAME) -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ThreadTableArchiveExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ThreadTableArchiveExtensions.kt index 6874572bb1..21b0f08150 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ThreadTableArchiveExtensions.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ThreadTableArchiveExtensions.kt @@ -5,7 +5,6 @@ package org.thoughtcrime.securesms.backup.v2.database -import org.signal.core.util.SqlUtil import org.thoughtcrime.securesms.backup.v2.exporters.ChatArchiveExporter import org.thoughtcrime.securesms.database.RecipientTable import org.thoughtcrime.securesms.database.SignalDatabase @@ -35,9 +34,3 @@ fun ThreadTable.getThreadsForBackup(db: SignalDatabase): ChatArchiveExporter { return ChatArchiveExporter(cursor, db) } - -fun ThreadTable.clearAllDataForBackupRestore() { - writableDatabase.delete(ThreadTable.TABLE_NAME, null, null) - SqlUtil.resetAutoIncrementValue(writableDatabase, ThreadTable.TABLE_NAME) - clearCache() -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/exporters/CallLinkArchiveExporter.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/exporters/CallLinkArchiveExporter.kt index 90c0fb4da3..0da7cd2ca4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/exporters/CallLinkArchiveExporter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/exporters/CallLinkArchiveExporter.kt @@ -6,7 +6,6 @@ package org.thoughtcrime.securesms.backup.v2.database import android.database.Cursor -import okio.ByteString import okio.ByteString.Companion.toByteString import org.signal.ringrtc.CallLinkState import org.thoughtcrime.securesms.backup.v2.ArchiveRecipient @@ -32,8 +31,8 @@ class CallLinkArchiveExporter(private val cursor: Cursor) : Iterator CallTable.Event.GENERIC_GROUP_CALL AdHocCall.State.UNKNOWN_STATE -> CallTable.Event.GENERIC_GROUP_CALL } + val peer = importState.remoteToLocalRecipientId[call.recipientId] ?: run { + Log.w(TAG, "Failed to find matching recipientId for peer with remote recipientId ${call.recipientId}! Skipping.") + return + } + SignalDatabase.writableDatabase .insertInto(CallTable.TABLE_NAME) .values( CallTable.CALL_ID to call.callId, - CallTable.PEER to importState.remoteToLocalRecipientId[call.recipientId]!!.serialize(), + CallTable.PEER to peer.serialize(), CallTable.TYPE to CallTable.Type.serialize(CallTable.Type.AD_HOC_CALL), CallTable.DIRECTION to CallTable.Direction.serialize(CallTable.Direction.OUTGOING), CallTable.EVENT to CallTable.Event.serialize(event), diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/importer/CallLinkArchiveImporter.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/importer/CallLinkArchiveImporter.kt index c1d7d1bad5..8cfc1ee2ac 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/importer/CallLinkArchiveImporter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/importer/CallLinkArchiveImporter.kt @@ -5,6 +5,8 @@ package org.thoughtcrime.securesms.backup.v2.importer +import org.signal.core.util.isEmpty +import org.signal.core.util.logging.Log import org.signal.ringrtc.CallLinkRootKey import org.signal.ringrtc.CallLinkState import org.thoughtcrime.securesms.backup.v2.ArchiveCallLink @@ -21,13 +23,21 @@ import java.time.Instant * Handles the importing of [ArchiveCallLink] models into the local database. */ object CallLinkArchiveImporter { + + private val TAG = Log.tag(CallLinkArchiveImporter::class) + fun import(callLink: ArchiveCallLink): RecipientId? { - val rootKey: CallLinkRootKey - try { - rootKey = CallLinkRootKey(callLink.rootKey.toByteArray()) + val rootKey: CallLinkRootKey = try { + CallLinkRootKey(callLink.rootKey.toByteArray()) } catch (e: Exception) { + if (callLink.rootKey.isEmpty()) { + Log.w(TAG, "Missing root key!") + } else { + Log.w(TAG, "Failed to parse a non-empty root key!") + } return null } + return SignalDatabase.callLinks.insertCallLink( CallLinkTable.CallLink( recipientId = RecipientId.UNKNOWN, diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/importer/ChatItemArchiveImporter.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/importer/ChatItemArchiveImporter.kt index b633cd7e2b..20b89080b4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/importer/ChatItemArchiveImporter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/importer/ChatItemArchiveImporter.kt @@ -875,7 +875,7 @@ class ChatItemArchiveImporter( private fun ContentValues.addQuote(quote: Quote) { this.put(MessageTable.QUOTE_ID, quote.targetSentTimestamp ?: MessageTable.QUOTE_TARGET_MISSING_ID) - this.put(MessageTable.QUOTE_AUTHOR, importState.remoteToLocalRecipientId[quote.authorId]!!.serialize()) + this.put(MessageTable.QUOTE_AUTHOR, importState.requireLocalRecipientId(quote.authorId).serialize()) this.put(MessageTable.QUOTE_BODY, quote.text?.body) this.put(MessageTable.QUOTE_TYPE, quote.type.toLocalQuoteType()) this.put(MessageTable.QUOTE_BODY_RANGES, quote.text?.bodyRanges?.toLocalBodyRanges()?.encode()) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundViewModel.kt index 30a9ba3b8f..c57309afed 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundViewModel.kt @@ -536,6 +536,7 @@ class InternalBackupPlaygroundViewModel : ViewModel() { AppDependencies.jobManager.cancelAllInQueue("ArchiveAttachmentJobs_0") AppDependencies.jobManager.cancelAllInQueue("ArchiveAttachmentJobs_1") AppDependencies.jobManager.cancelAllInQueue("ArchiveThumbnailUploadJob") + AppDependencies.jobManager.cancelAllInQueue("BackupRestoreJob") } fun fetchRemoteBackupAndWritePlaintext(outputStream: OutputStream?) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/NameCollisionTables.kt b/app/src/main/java/org/thoughtcrime/securesms/database/NameCollisionTables.kt index de0ca4ff64..79787dfc11 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/NameCollisionTables.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/NameCollisionTables.kt @@ -55,16 +55,12 @@ class NameCollisionTables( private val PROFILE_CHANGE_TIMEOUT = 1.days - fun createTables(db: SQLiteDatabase) { - db.execSQL(NameCollisionTable.CREATE_TABLE) - db.execSQL(NameCollisionMembershipTable.CREATE_TABLE) - } + val CREATE_TABLE = arrayOf( + NameCollisionTable.CREATE_TABLE, + NameCollisionMembershipTable.CREATE_TABLE + ) - fun createIndexes(db: SQLiteDatabase) { - NameCollisionMembershipTable.CREATE_INDEXES.forEach { - db.execSQL(it) - } - } + val CREATE_INDEXES = NameCollisionMembershipTable.CREATE_INDEXES } /** diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SQLiteDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/SQLiteDatabase.java index 428ac0efd6..37ea3a7159 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SQLiteDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SQLiteDatabase.java @@ -14,6 +14,7 @@ import net.zetetic.database.sqlcipher.SQLiteStatement; import net.zetetic.database.sqlcipher.SQLiteTransactionListener; +import org.signal.core.util.logging.Log; import org.signal.core.util.tracing.Tracer; import java.io.IOException; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SearchTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/SearchTable.kt index dc9a0b1769..f3c3a45de9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SearchTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SearchTable.kt @@ -180,10 +180,11 @@ class SearchTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa writableDatabase.withinTransaction { db -> db.execSQL( """ - INSERT INTO $FTS_TABLE_NAME ($ID, $BODY) + INSERT INTO $FTS_TABLE_NAME ($ID, $BODY, $THREAD_ID) SELECT ${MessageTable.ID}, - ${MessageTable.BODY} + ${MessageTable.BODY}, + ${MessageTable.THREAD_ID} FROM ${MessageTable.TABLE_NAME} WHERE diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SignalDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/SignalDatabase.kt index 0d581c71b8..a2ea24a7f6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SignalDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SignalDatabase.kt @@ -113,7 +113,7 @@ open class SignalDatabase(private val context: Application, databaseSecret: Data db.execSQL(CallLinkTable.CREATE_TABLE) db.execSQL(CallTable.CREATE_TABLE) db.execSQL(KyberPreKeyTable.CREATE_TABLE) - NameCollisionTables.createTables(db) + executeStatements(db, NameCollisionTables.CREATE_TABLE) db.execSQL(InAppPaymentTable.CREATE_TABLE) db.execSQL(InAppPaymentSubscriberTable.CREATE_TABLE) executeStatements(db, SearchTable.CREATE_TABLE) @@ -144,12 +144,11 @@ open class SignalDatabase(private val context: Application, databaseSecret: Data executeStatements(db, ReactionTable.CREATE_INDEXES) executeStatements(db, KyberPreKeyTable.CREATE_INDEXES) executeStatements(db, ChatFolderTables.CREATE_INDEXES) + executeStatements(db, NameCollisionTables.CREATE_INDEXES) executeStatements(db, SearchTable.CREATE_TRIGGERS) executeStatements(db, MessageSendLogTables.CREATE_TRIGGERS) - NameCollisionTables.createIndexes(db) - DistributionListTables.insertInitialDistributionListAtCreationTime(db) ChatFolderTables.insertInitialChatFoldersAtCreationTime(db) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherErrorHandler.kt b/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherErrorHandler.kt index 322a769bee..5956e73ec5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherErrorHandler.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherErrorHandler.kt @@ -165,16 +165,16 @@ class SqlCipherErrorHandler(private val databaseName: String) : DatabaseErrorHan } private fun attemptToClearFullTextSearchIndex(db: SQLiteDatabase) { - try { - try { - db.reopenReadWrite() - } catch (e: Exception) { - Log.w(TAG, "Failed to re-open as read-write!", e) - } - SignalDatabase.messageSearch.fullyResetTables(db, useTransaction = false) - } catch (e: Throwable) { - Log.w(TAG, "Failed to clear full text search index.", e) - } +// try { +// try { +// db.reopenReadWrite() +// } catch (e: Exception) { +// Log.w(TAG, "Failed to re-open as read-write!", e) +// } +// SignalDatabase.messageSearch.fullyResetTables(db, useTransaction = false) +// } catch (e: Throwable) { +// Log.w(TAG, "Failed to clear full text search index.", e) +// } } private sealed class DiagnosticResults(val logs: String) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobmanager/JobManager.java b/app/src/main/java/org/thoughtcrime/securesms/jobmanager/JobManager.java index 5b9b18f9b2..c75ca04690 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobmanager/JobManager.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobmanager/JobManager.java @@ -64,7 +64,9 @@ public class JobManager implements ConstraintObserver.Notifier { public JobManager(@NonNull Application application, @NonNull Configuration configuration) { this.application = application; this.configuration = configuration; - this.executor = new FilteredExecutor(configuration.getExecutorFactory().newSingleThreadExecutor("signal-JobManager"), ThreadUtil::isMainThread); + this.executor = new FilteredExecutor(configuration.getExecutorFactory().newSingleThreadExecutor("signal-JobManager"), () -> { + return ThreadUtil.isMainThread() || Thread.currentThread().getName().equals("Instr: org.thoughtcrime.securesms.testing.SignalTestRunner"); + }); this.jobTracker = configuration.getJobTracker(); this.jobController = new JobController(application, configuration.getJobStorage(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupRestoreJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupRestoreJob.kt index 1235c22a76..393574ed85 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupRestoreJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupRestoreJob.kt @@ -39,6 +39,7 @@ class BackupRestoreJob private constructor(parameters: Parameters) : BaseJob(par .addConstraint(NetworkConstraint.KEY) .setMaxAttempts(Parameters.UNLIMITED) .setMaxInstancesForFactory(1) + .setQueue("BackupRestoreJob") .build() ) @@ -85,6 +86,10 @@ class BackupRestoreJob private constructor(parameters: Parameters) : BaseJob(par throw IOException() } + if (isCanceled) { + return + } + controller.update( title = context.getString(R.string.BackupProgressService_title), progress = 0f, @@ -93,7 +98,7 @@ class BackupRestoreJob private constructor(parameters: Parameters) : BaseJob(par val self = Recipient.self() val selfData = BackupRepository.SelfData(self.aci.get(), self.pni.get(), self.e164.get(), ProfileKey(self.profileKey)) - BackupRepository.import(length = tempBackupFile.length(), inputStreamFactory = tempBackupFile::inputStream, selfData = selfData, plaintext = false) + BackupRepository.import(length = tempBackupFile.length(), inputStreamFactory = tempBackupFile::inputStream, selfData = selfData, plaintext = false, cancellationSignal = { isCanceled }) SignalStore.backup.restoreState = RestoreState.RESTORING_MEDIA } diff --git a/core-util-jvm/src/main/java/org/signal/core/util/ProtoExtensions.kt b/core-util-jvm/src/main/java/org/signal/core/util/ProtoExtensions.kt index 2bd6cf61d1..5f8b6e3bae 100644 --- a/core-util-jvm/src/main/java/org/signal/core/util/ProtoExtensions.kt +++ b/core-util-jvm/src/main/java/org/signal/core/util/ProtoExtensions.kt @@ -20,6 +20,10 @@ import java.util.LinkedList private const val TAG = "ProtoExtension" +fun ByteString?.isEmpty(): Boolean { + return this == null || this.size == 0 +} + fun ByteString?.isNotEmpty(): Boolean { return this != null && this.size > 0 } diff --git a/core-util/src/main/java/org/signal/core/util/SQLiteDatabaseExtensions.kt b/core-util/src/main/java/org/signal/core/util/SQLiteDatabaseExtensions.kt index 7d53d6c0b0..a68afc5d12 100644 --- a/core-util/src/main/java/org/signal/core/util/SQLiteDatabaseExtensions.kt +++ b/core-util/src/main/java/org/signal/core/util/SQLiteDatabaseExtensions.kt @@ -6,6 +6,12 @@ import android.database.sqlite.SQLiteDatabase import androidx.core.content.contentValuesOf import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteQueryBuilder +import org.signal.core.util.SqlUtil.ForeignKeyViolation +import org.signal.core.util.logging.Log +import kotlin.time.Duration +import kotlin.time.Duration.Companion.seconds + +private val TAG = "SQLiteDatabaseExtensions" /** * Begins a transaction on the `this` database, runs the provided [block] providing the `this` value as it's argument @@ -46,7 +52,11 @@ fun SupportSQLiteDatabase.getAllTables(): List { * Returns a list of objects that represent the table definitions in the database. Basically the table name and then the SQL that was used to create it. */ fun SupportSQLiteDatabase.getAllTableDefinitions(): List { - return this.query("SELECT name, sql FROM sqlite_schema WHERE type = 'table' AND sql NOT NULL AND name != 'sqlite_sequence'") + return this + .select("name", "sql") + .from("sqlite_schema") + .where("type = ? AND sql NOT NULL AND name != ?", "table", "sqlite_sequence") + .run() .readToList { cursor -> CreateStatement( name = cursor.requireNonNullString("name"), @@ -61,7 +71,11 @@ fun SupportSQLiteDatabase.getAllTableDefinitions(): List { * Returns a list of objects that represent the index definitions in the database. Basically the index name and then the SQL that was used to create it. */ fun SupportSQLiteDatabase.getAllIndexDefinitions(): List { - return this.query("SELECT name, sql FROM sqlite_schema WHERE type = 'index' AND sql NOT NULL") + return this + .select("name", "sql") + .from("sqlite_schema") + .where("type = ? AND sql NOT NULL", "index") + .run() .readToList { cursor -> CreateStatement( name = cursor.requireNonNullString("name"), @@ -71,6 +85,24 @@ fun SupportSQLiteDatabase.getAllIndexDefinitions(): List { .sortedBy { it.name } } +/** + * Retrieves the names of all triggers, sorted alphabetically. + */ +fun SupportSQLiteDatabase.getAllTriggerDefinitions(): List { + return this + .select("name", "sql") + .from("sqlite_schema") + .where("type = ? AND sql NOT NULL", "trigger") + .run() + .readToList { + CreateStatement( + name = it.requireNonNullString("name"), + statement = it.requireNonNullString("sql") + ) + } + .sortedBy { it.name } +} + fun SupportSQLiteDatabase.getForeignKeys(): List { return SqlUtil.getAllTables(this) .map { table -> @@ -93,6 +125,24 @@ fun SupportSQLiteDatabase.areForeignKeyConstraintsEnabled(): Boolean { } } +/** + * Provides a list of all foreign key violations present. + * If a [targetTable] is specified, results will be limited to that table specifically. + * Otherwise, the check will be performed across all tables. + */ +@JvmOverloads +fun SupportSQLiteDatabase.getForeignKeyViolations(targetTable: String? = null): List { + return SqlUtil.getForeignKeyViolations(this, targetTable) +} + +/** + * For tables that have an autoincrementing primary key, this will reset the key to start back at 1. + * IMPORTANT: This is quite dangerous! Only do this if you're effectively resetting the entire database. + */ +fun SupportSQLiteDatabase.resetAutoIncrementValue(targetTable: String) { + SqlUtil.resetAutoIncrementValue(this, targetTable) +} + /** * Does a full WAL checkpoint (TRUNCATE mode, where the log is for sure flushed and the log is zero'd out). * Will try up to [maxAttempts] times. Can technically fail if the database is too active and the checkpoint @@ -132,6 +182,22 @@ fun SupportSQLiteDatabase.getIndexes(): List { } } +fun SupportSQLiteDatabase.forceForeignKeyConstraintsEnabled(enabled: Boolean, timeout: Duration = 10.seconds) { + val startTime = System.currentTimeMillis() + while (true) { + try { + this.setForeignKeyConstraintsEnabled(enabled) + break + } catch (e: IllegalStateException) { + if (System.currentTimeMillis() - startTime > timeout.inWholeMilliseconds) { + throw IllegalStateException("Failed to force foreign keys to '$enabled' within the timeout of $timeout", e) + } + Log.w(TAG, "Failed to set foreign keys because we're in a transaction. Waiting 100ms then trying again.") + ThreadUtil.sleep(100) + } + } +} + /** * Checks if a row exists that matches the query. */ From 97f1e1804676915d236b00b645cb6ab85ab0d7e6 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 16 Oct 2024 14:37:56 -0400 Subject: [PATCH 18/51] Remove some unused AccountManager code. --- .../api/SignalServiceAccountManager.java | 130 ------------------ 1 file changed, 130 deletions(-) diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java index 7fbefa24a0..b5757026fe 100644 --- a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java +++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java @@ -200,11 +200,6 @@ public void setGcmId(Optional gcmRegistrationId) throws IOException { } } - public Single> checkBackupAuthCredentials(@Nonnull String e164, @Nonnull List usernamePasswords) { - - return pushServiceSocket.checkSvr2AuthCredentials(new BackupAuthCheckRequest(e164, usernamePasswords), DefaultResponseMapper.getDefault(BackupV2AuthCheckResponse.class)); - } - /** * Request a push challenge. A number will be pushed to the GCM (FCM) id. This can then be used * during SMS/call requests to bypass the CAPTCHA. @@ -217,109 +212,6 @@ public void requestRegistrationPushChallenge(String sessionId, String gcmRegistr pushServiceSocket.requestPushChallenge(sessionId, gcmRegistrationId); } - public ServiceResponse createRegistrationSession(@Nullable String fcmToken, @Nullable String mcc, @Nullable String mnc) { - try { - final RegistrationSessionMetadataResponse response = pushServiceSocket.createVerificationSession(fcmToken, mcc, mnc); - return ServiceResponse.forResult(response, 200, null); - } catch (IOException e) { - return ServiceResponse.forUnknownError(e); - } - } - - public ServiceResponse getRegistrationSession(String sessionId) { - try { - final RegistrationSessionMetadataResponse response = pushServiceSocket.getSessionStatus(sessionId); - return ServiceResponse.forResult(response, 200, null); - } catch (IOException e) { - return ServiceResponse.forUnknownError(e); - } - } - - public ServiceResponse submitPushChallengeToken(String sessionId, String pushChallengeToken) { - try { - final RegistrationSessionMetadataResponse response = pushServiceSocket.patchVerificationSession(sessionId, null, null, null, null, pushChallengeToken); - return ServiceResponse.forResult(response, 200, null); - } catch (IOException e) { - return ServiceResponse.forUnknownError(e); - } - } - - public ServiceResponse submitCaptchaToken(String sessionId, @Nullable String captchaToken) { - try { - final RegistrationSessionMetadataResponse response = pushServiceSocket.patchVerificationSession(sessionId, null, null, null, captchaToken, null); - return ServiceResponse.forResult(response, 200, null); - } catch (IOException e) { - return ServiceResponse.forUnknownError(e); - } - } - - /** - * Request an SMS verification code. On success, the server will send - * an SMS verification code to this Signal user. - * - * @param androidSmsRetrieverSupported - */ - public ServiceResponse requestSmsVerificationCode(String sessionId, Locale locale, boolean androidSmsRetrieverSupported) { - try { - final RegistrationSessionMetadataResponse response = pushServiceSocket.requestVerificationCode(sessionId, locale, androidSmsRetrieverSupported, PushServiceSocket.VerificationCodeTransport.SMS); - return ServiceResponse.forResult(response, 200, null); - } catch (IOException e) { - return ServiceResponse.forUnknownError(e); - } - } - - /** - * Request a Voice verification code. On success, the server will - * make a voice call to this Signal user. - * - * @param locale - */ - public ServiceResponse requestVoiceVerificationCode(String sessionId, Locale locale, boolean androidSmsRetrieverSupported) { - try { - final RegistrationSessionMetadataResponse response = pushServiceSocket.requestVerificationCode(sessionId, locale, androidSmsRetrieverSupported, PushServiceSocket.VerificationCodeTransport.VOICE); - return ServiceResponse.forResult(response, 200, null); - } catch (IOException e) { - return ServiceResponse.forUnknownError(e); - } - } - - /** - * Verify a Signal Service account with a received SMS or voice verification code. - * - * @param verificationCode The verification code received via SMS or Voice - * (see {@link #requestSmsVerificationCode} and - * {@link #requestVoiceVerificationCode}). - * @param sessionId The ID of the current registration session. - * @return The UUID of the user that was registered. - * @throws IOException for various HTTP and networking errors - */ - public ServiceResponse verifyAccount(@Nonnull String verificationCode, @Nonnull String sessionId) { - try { - RegistrationSessionMetadataResponse response = pushServiceSocket.submitVerificationCode(sessionId, verificationCode); - return ServiceResponse.forResult(response, 200, null); - } catch (IOException e) { - return ServiceResponse.forUnknownError(e); - } - } - - public @Nonnull ServiceResponse registerAccount(@Nullable String sessionId, @Nullable String recoveryPassword, AccountAttributes attributes, PreKeyCollection aciPreKeys, PreKeyCollection pniPreKeys, String fcmToken, boolean skipDeviceTransfer) { - try { - VerifyAccountResponse response = pushServiceSocket.submitRegistrationRequest(sessionId, recoveryPassword, attributes, aciPreKeys, pniPreKeys, fcmToken, skipDeviceTransfer); - return ServiceResponse.forResult(response, 200, null); - } catch (IOException e) { - return ServiceResponse.forUnknownError(e); - } - } - - public @Nonnull ServiceResponse changeNumber(@Nonnull ChangePhoneNumberRequest changePhoneNumberRequest) { - try { - VerifyAccountResponse response = this.pushServiceSocket.changeNumber(changePhoneNumberRequest); - return ServiceResponse.forResult(response, 200, null); - } catch (IOException e) { - return ServiceResponse.forUnknownError(e); - } - } - /** * Refresh account attributes with server. * @@ -670,15 +562,6 @@ public void addDevice(String deviceIdentifier, this.pushServiceSocket.sendProvisioningMessage(deviceIdentifier, ciphertext); } - public ServiceResponse distributePniKeys(PniKeyDistributionRequest request) { - try { - VerifyAccountResponse response = this.pushServiceSocket.distributePniKeys(request); - return ServiceResponse.forResult(response, 200, null); - } catch (IOException e) { - return ServiceResponse.forUnknownError(e); - } - } - public List getDevices() throws IOException { return this.pushServiceSocket.getDevices(); } @@ -845,19 +728,6 @@ public void cancelInFlightRequests() { this.pushServiceSocket.cancelInFlightRequests(); } - private String createDirectoryServerToken(String e164number, boolean urlSafe) { - try { - MessageDigest digest = MessageDigest.getInstance("SHA1"); - byte[] token = Util.trim(digest.digest(e164number.getBytes()), 10); - String encoded = Base64.encodeWithoutPadding(token); - - if (urlSafe) return encoded.replace('+', '-').replace('/', '_'); - else return encoded; - } catch (NoSuchAlgorithmException e) { - throw new AssertionError(e); - } - } - public GroupsV2Api getGroupsV2Api() { return new GroupsV2Api(pushServiceSocket, groupsV2Operations); } From 69b506db1c689ea7a01eb740e96b69deacfa412b Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 16 Oct 2024 14:49:07 -0400 Subject: [PATCH 19/51] Perform search table rebuilds in a single transaction. --- .../securesms/database/SearchTable.kt | 40 ++++++------------- .../RebuildMessageSearchIndexMigrationJob.kt | 1 + 2 files changed, 14 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SearchTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/SearchTable.kt index f3c3a45de9..017240e4c0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SearchTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SearchTable.kt @@ -160,39 +160,25 @@ class SearchTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa /** * Re-adds every message to the index. It's fine to insert the same message twice; the table will naturally de-dupe. * - * In order to prevent the database from locking up with super large inserts, this will perform the re-index in batches of the size you specify. - * It is not guaranteed that every batch will be the same size, but rather that the batches will be _no larger_ than the specified size. - * * Warning: This is a potentially extremely-costly operation! It can take 10+ seconds on large installs and/or slow devices. * Be smart about where you call this. * * @return True if the rebuild was successful, otherwise false. */ - fun rebuildIndex(batchSize: Long = 10_000L): Boolean { + fun rebuildIndex(): Boolean { try { - val maxId: Long = SignalDatabase.messages.getNextId() - - Log.i(TAG, "Re-indexing. Operating on ID's 1-$maxId in steps of $batchSize.") - - for (i in 1..maxId step batchSize) { - Log.i(TAG, "Reindexing ID's [$i, ${i + batchSize})") - - writableDatabase.withinTransaction { db -> - db.execSQL( - """ - INSERT INTO $FTS_TABLE_NAME ($ID, $BODY, $THREAD_ID) - SELECT - ${MessageTable.ID}, - ${MessageTable.BODY}, - ${MessageTable.THREAD_ID} - FROM - ${MessageTable.TABLE_NAME} - WHERE - ${MessageTable.ID} >= $i AND - ${MessageTable.ID} < ${i + batchSize} - """ - ) - } + writableDatabase.withinTransaction { db -> + db.execSQL( + """ + INSERT INTO $FTS_TABLE_NAME ($ID, $BODY, $THREAD_ID) + SELECT + ${MessageTable.ID}, + ${MessageTable.BODY}, + ${MessageTable.THREAD_ID} + FROM + ${MessageTable.TABLE_NAME} + """ + ) } } catch (e: SQLiteException) { Log.w(TAG, "Failed to rebuild index!", e) diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/RebuildMessageSearchIndexMigrationJob.kt b/app/src/main/java/org/thoughtcrime/securesms/migrations/RebuildMessageSearchIndexMigrationJob.kt index 5277133519..63c992b859 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/RebuildMessageSearchIndexMigrationJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/RebuildMessageSearchIndexMigrationJob.kt @@ -7,6 +7,7 @@ import org.thoughtcrime.securesms.jobmanager.Job /** * Rebuilds the full-text search index for the messages table. */ +@Deprecated("Do not use! Perform the index rebuild synchronously instead.") internal class RebuildMessageSearchIndexMigrationJob( parameters: Parameters = Parameters.Builder().build() ) : MigrationJob(parameters) { From 262b359c3fb892499231101c7da687bb423972a2 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 16 Oct 2024 15:41:08 -0400 Subject: [PATCH 20/51] Inline the call links feature flag. --- .../securesms/WebRtcCallActivity.java | 4 ---- .../securesms/calls/log/CallLogFragment.kt | 17 ++--------------- .../calls/log/CallLogPagedDataSource.kt | 3 +-- .../thoughtcrime/securesms/util/RemoteConfig.kt | 11 ----------- 4 files changed, 3 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/WebRtcCallActivity.java b/app/src/main/java/org/thoughtcrime/securesms/WebRtcCallActivity.java index 32898c6e31..9e4609ed66 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/WebRtcCallActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/WebRtcCallActivity.java @@ -412,10 +412,6 @@ private void processIntent(@NonNull CallIntent intent) { } private void initializePendingParticipantFragmentListener() { - if (!RemoteConfig.adHocCalling()) { - return; - } - getSupportFragmentManager().setFragmentResultListener( PendingParticipantsBottomSheet.REQUEST_KEY, this, diff --git a/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogFragment.kt index aaaa90b57a..8e954c6b9a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogFragment.kt @@ -63,7 +63,6 @@ import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.stories.tabs.ConversationListTab import org.thoughtcrime.securesms.stories.tabs.ConversationListTabsViewModel import org.thoughtcrime.securesms.util.CommunicationActions -import org.thoughtcrime.securesms.util.RemoteConfig import org.thoughtcrime.securesms.util.ViewUtil import org.thoughtcrime.securesms.util.doAfterNextLayout import org.thoughtcrime.securesms.util.fragments.requireListener @@ -259,13 +258,7 @@ class CallLogFragment : Fragment(R.layout.call_log_fragment), CallLogAdapter.Cal val count = callLogActionMode.getCount() MaterialAlertDialogBuilder(requireContext()) .setTitle(resources.getQuantityString(R.plurals.CallLogFragment__delete_d_calls, count, count)) - .setMessage( - if (RemoteConfig.adHocCalling) { - getString(R.string.CallLogFragment__call_links_youve_created) - } else { - null - } - ) + .setMessage(getString(R.string.CallLogFragment__call_links_youve_created)) .setPositiveButton(R.string.CallLogFragment__delete) { _, _ -> performDeletion(count, viewModel.stageSelectionDeletion()) callLogActionMode.end() @@ -416,13 +409,7 @@ class CallLogFragment : Fragment(R.layout.call_log_fragment), CallLogAdapter.Cal override fun deleteCall(call: CallLogRow) { MaterialAlertDialogBuilder(requireContext()) .setTitle(resources.getQuantityString(R.plurals.CallLogFragment__delete_d_calls, 1, 1)) - .setMessage( - if (RemoteConfig.adHocCalling) { - getString(R.string.CallLogFragment__call_links_youve_created) - } else { - null - } - ) + .setMessage(getString(R.string.CallLogFragment__call_links_youve_created)) .setPositiveButton(R.string.CallLogFragment__delete) { _, _ -> performDeletion(1, viewModel.stageCallDeletion(call)) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogPagedDataSource.kt b/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogPagedDataSource.kt index 635ce62046..8409cbe7ee 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogPagedDataSource.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogPagedDataSource.kt @@ -1,7 +1,6 @@ package org.thoughtcrime.securesms.calls.log import org.signal.paging.PagedDataSource -import org.thoughtcrime.securesms.util.RemoteConfig class CallLogPagedDataSource( private val query: String?, @@ -10,7 +9,7 @@ class CallLogPagedDataSource( ) : PagedDataSource { private val hasFilter = filter == CallLogFilter.MISSED - private val hasCallLinkRow = RemoteConfig.adHocCalling && filter == CallLogFilter.ALL && query.isNullOrEmpty() + private val hasCallLinkRow = filter == CallLogFilter.ALL && query.isNullOrEmpty() private var callEventsCount = 0 private var callLinksCount = 0 diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt b/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt index 88cf8f9d1e..2bfc9f6442 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt @@ -846,17 +846,6 @@ object RemoteConfig { sticky = true ) - /** - * Whether or not ad-hoc calling is enabled - */ - @JvmStatic - @get:JvmName("adHocCalling") - val adHocCalling: Boolean by remoteBoolean( - key = "android.calling.ad.hoc.3", - defaultValue = false, - hotSwappable = false - ) - /** Maximum number of attachments allowed to be sent/received. */ val maxAttachmentCount: Int by remoteInt( key = "android.attachments.maxCount", From 12c9b023743f9298ae89900f6376725a19003861 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 16 Oct 2024 15:14:48 -0400 Subject: [PATCH 21/51] Update translations and other static files. --- app/src/main/res/values-af/strings.xml | 186 +++++++- app/src/main/res/values-ar/strings.xml | 518 ++++++++++++++------- app/src/main/res/values-az/strings.xml | 186 +++++++- app/src/main/res/values-bg/strings.xml | 186 +++++++- app/src/main/res/values-bn/strings.xml | 186 +++++++- app/src/main/res/values-bs/strings.xml | 200 +++++++- app/src/main/res/values-ca/strings.xml | 186 +++++++- app/src/main/res/values-cs/strings.xml | 200 +++++++- app/src/main/res/values-da/strings.xml | 186 +++++++- app/src/main/res/values-de/strings.xml | 204 +++++++- app/src/main/res/values-el/strings.xml | 186 +++++++- app/src/main/res/values-es/strings.xml | 212 +++++++-- app/src/main/res/values-et/strings.xml | 186 +++++++- app/src/main/res/values-eu/strings.xml | 186 +++++++- app/src/main/res/values-fa/strings.xml | 186 +++++++- app/src/main/res/values-fi/strings.xml | 186 +++++++- app/src/main/res/values-fr/strings.xml | 240 ++++++++-- app/src/main/res/values-ga/strings.xml | 207 +++++++- app/src/main/res/values-gl/strings.xml | 186 +++++++- app/src/main/res/values-gu/strings.xml | 186 +++++++- app/src/main/res/values-hi/strings.xml | 186 +++++++- app/src/main/res/values-hr/strings.xml | 200 +++++++- app/src/main/res/values-hu/strings.xml | 186 +++++++- app/src/main/res/values-in/strings.xml | 179 ++++++- app/src/main/res/values-it/strings.xml | 188 +++++++- app/src/main/res/values-iw/strings.xml | 200 +++++++- app/src/main/res/values-ja/strings.xml | 179 ++++++- app/src/main/res/values-ka/strings.xml | 162 ++++++- app/src/main/res/values-kk/strings.xml | 186 +++++++- app/src/main/res/values-km/strings.xml | 179 ++++++- app/src/main/res/values-kn/strings.xml | 186 +++++++- app/src/main/res/values-ko/strings.xml | 179 ++++++- app/src/main/res/values-ky/strings.xml | 179 ++++++- app/src/main/res/values-lt/strings.xml | 200 +++++++- app/src/main/res/values-lv/strings.xml | 193 +++++++- app/src/main/res/values-mk/strings.xml | 186 +++++++- app/src/main/res/values-ml/strings.xml | 188 +++++++- app/src/main/res/values-mr/strings.xml | 186 +++++++- app/src/main/res/values-ms/strings.xml | 179 ++++++- app/src/main/res/values-my/strings.xml | 179 ++++++- app/src/main/res/values-nb/strings.xml | 186 +++++++- app/src/main/res/values-nl/strings.xml | 188 +++++++- app/src/main/res/values-pa/strings.xml | 188 +++++++- app/src/main/res/values-pl/strings.xml | 200 +++++++- app/src/main/res/values-pt-rBR/strings.xml | 188 +++++++- app/src/main/res/values-pt/strings.xml | 186 +++++++- app/src/main/res/values-ro/strings.xml | 193 +++++++- app/src/main/res/values-ru/strings.xml | 200 +++++++- app/src/main/res/values-sk/strings.xml | 200 +++++++- app/src/main/res/values-sl/strings.xml | 202 +++++++- app/src/main/res/values-sq/strings.xml | 186 +++++++- app/src/main/res/values-sr/strings.xml | 186 +++++++- app/src/main/res/values-sv/strings.xml | 186 +++++++- app/src/main/res/values-sw/strings.xml | 186 +++++++- app/src/main/res/values-ta/strings.xml | 186 +++++++- app/src/main/res/values-te/strings.xml | 186 +++++++- app/src/main/res/values-th/strings.xml | 179 ++++++- app/src/main/res/values-tl/strings.xml | 186 +++++++- app/src/main/res/values-tr/strings.xml | 186 +++++++- app/src/main/res/values-ug/strings.xml | 179 ++++++- app/src/main/res/values-uk/strings.xml | 214 ++++++++- app/src/main/res/values-ur/strings.xml | 162 ++++++- app/src/main/res/values-vi/strings.xml | 179 ++++++- app/src/main/res/values-yue/strings.xml | 179 ++++++- app/src/main/res/values-zh-rCN/strings.xml | 179 ++++++- app/src/main/res/values-zh-rHK/strings.xml | 179 ++++++- app/src/main/res/values-zh-rTW/strings.xml | 179 ++++++- app/src/main/res/values/strings.xml | 2 +- app/static-ips.gradle.kts | 2 +- 69 files changed, 11791 insertions(+), 1160 deletions(-) diff --git a/app/src/main/res/values-af/strings.xml b/app/src/main/res/values-af/strings.xml index 8e2d211152..5ed93221d7 100644 --- a/app/src/main/res/values-af/strings.xml +++ b/app/src/main/res/values-af/strings.xml @@ -368,6 +368,8 @@ Kletse Boodskappe + + Chat types Boodskap %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Jy is gereed. Begin jou rugsteun nou. Na gelang van die grootte van jou rugsteun kan dit lank neem. Jy kan jou foon soos gewoonlik gebruik terwyl die rugsteun plaasvind. @@ -1969,6 +1971,7 @@ +%1$d genooi +%1$d genooi + %1$d bykomende groep %1$d bykomende groepe @@ -1995,6 +1998,7 @@ Geen toestel gevind nie. Netwerkfout. Ongeldige QR-kode. + Jammer, jy het te veel toestelle reeds gekoppel. Probeer om sommige van die toestelle te verwyder Jammer, dit is nie \'n geldige QR-kode vir toestelkoppeling nie. Koppel \'n Signal-toestel? @@ -2017,11 +2021,13 @@ Dien wagwoordfrase in Ongeldige wagwoordfrase! Ontsluit Signal + Signal Android - Sluit Skerm Kaart + Merker Aanvaar adres @@ -2525,6 +2531,7 @@ Signal-boodskap + Meer @@ -2556,6 +2563,7 @@ Geen plakkers geïnstalleer nie Plakkers van inkomende boodskappe sal hier verskyn Naamloos + Onbekend @@ -2777,6 +2785,7 @@ Media nie meer beskikbaar nie. Kan nie media speel nie. + Fout met vind van boodskap. Kan nie \'n toepassing vind wat hierdie media kan deel nie. Maak toe @@ -2848,6 +2857,7 @@ Boodskappe Oproepe + Mislukkings Rugsteunkopieë Slotstatus @@ -2857,6 +2867,7 @@ Onbekend Stemnotas Kontak het by Signal aangesluit + Geen aktiwiteit beskikbaar om kennisgewingkanaal-instellings oop te maak nie. Agtergrondverbinding @@ -3641,10 +3652,12 @@ Alle boodskapgeskiedenis sal permanent van alle toestelle verwyder word. Hierdie aksie kan nie ongedaan gemaak word nie. Skrap alles nou + Vir ewig 1 jaar 6 maande 30 dae + Geen %1$s boodskap @@ -3669,6 +3682,7 @@ Vertoon Luitoon Boodskaplettergrootte + Prioriteit Kennisgewingfoutopsporing @@ -3897,6 +3911,7 @@ Skandeer die adres-QR-kode van die betalingontvanger + Versoek Betaal Beskikbare saldo: %1$s @@ -4028,6 +4043,7 @@ Jy kan slegs tot %1$d met \'n merkspeld merk. + Kontakfoto Geargiveer @@ -4036,6 +4052,10 @@ Nuwe klets Maak Kamera oop Nog geen kletse nie.\nBegin deur ’n boodskap aan ’n vriend te skryf. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Klets rugsteune Dra rekening oor Dra rekening oor na nuwe Android-toestel + Voer rugsteun-wagwoordfrase in Herstel Kan nie rugsteun uit nuwer Signal-weergawes invoer nie @@ -4475,6 +4496,7 @@ Kan nie Wi-Fi-instellings oopmaak nie. Skakel asseblief Wi-Fi met die hand aan. + Verleen liggingstoestemming Skakel liggingsdienste aan Skakel Wi-Fi aan @@ -4728,6 +4750,7 @@ Deel + Stuur , %1$s @@ -5031,6 +5054,119 @@ Toetsbord Stuur met Enter-sleutel + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Boodskappe @@ -5115,6 +5251,7 @@ Mediakwaliteit + Gestuurde mediakwaliteit Stuur van hoëkwaliteitmedia sal meer data gebruik. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Jou rugsteun-intekening het verval - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Jou rugsteunplan het verval omdat dit nie met jou huidige betalingsmetode hernu kon word nie. Die media in jou rugsteun sal ná %1$d dag geskrap word. + Jou rugsteunplan het verval omdat dit nie met jou huidige betalingsmetode hernu kon word nie. Die media in jou rugsteun sal ná %1$d dae geskrap word. Jy kan enige tyd weer vir rugsteun begin betaal sodat jy kan voortgaan om al jou media te rugsteun. @@ -7257,9 +7394,9 @@ As jy \"Slaan oor\" kies, sal die media in jou rugsteun oor %1$d dae geskrap word. - Your backups subscription failed to renew + Jou rugsteun-intekening kon nie hernu word nie - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Maak seker jou betalingsmetode is op datum. Tik op Bestuur intekening en tik onder Betalingsmetodes op Doen opdatering. Kon nie rugsteun voltooi nie @@ -7271,7 +7408,7 @@ Bestuur intekening - Subscribe for %1$s/month + Teken in teen %1$s/maand Laai media nou af @@ -7306,6 +7443,17 @@ %1$s of %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Stoorruimte-optimalisering kan slegs gebruik word met die betaalde vlak van Signal-rugsteun. Gradeer jou rugsteunplan op om hierdie kenmerk te begin gebruik. - Subscribe for %1$s/month + Teken in teen %1$s/maand - This media is no longer available + Hierdie media is nie meer beskikbaar nie - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Jou huidige Signal-rugsteunplan sluit jou mees onlangse %1$d dag se media in. Gradeer nou op om al jou media te begin rugsteun. + Jou huidige Signal-rugsteunplan sluit jou mees onlangse %1$d dae se media in. Gradeer nou op om al jou media te begin rugsteun. - Subscribe for %1$s/month + Teken in teen %1$s/maand Skrapping is nou oor al jou toestelle gesinchroniseer @@ -7413,11 +7561,13 @@ Rugsteuntipe verander en intekening gekanselleer - Intekening gekanselleer + Subscription canceled Aflaai voltooi Rugsteun sal oornag geskep word. + + Subscription inactive Rugsteunplan @@ -7426,8 +7576,12 @@ %1$s/maand Jou rugsteunplan is gratis - + Hernu %1$s + + Expires on %1$s + + Expired on %1$s Rugsteun jou boodskapgeskiedenis sodat jy nooit data verloor wanneer jy \'n nuwe foon kry of Signal herinstalleer nie. @@ -7472,6 +7626,10 @@ Rugsteun handmatig Voer asseblief jou toestel se pin, wagwoord of patroon in. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index b05f3471bb..488d5503a3 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -380,6 +380,8 @@ الدردشات الرسائل + + Chat types رسالة %1$s @@ -896,7 +898,7 @@ - You\'re all set. Start your backup now. + أنت جاهز الآن. ابدأ النسخ الاحتياطي لديك الآن. قد يستغرق هذا وقتًا طويلًا حسب حجم النسخة الاحتياطية الخاصة بك. يُمكنك استخدام هاتفك بشكل اعتيادي أثناء إجراء عملية النسخ الاحتياطي. @@ -2213,6 +2215,7 @@ +%1$d مدعوون +%1$d مدعوون + %1$d مجموعة إضافية %1$d مجموعة إضافية @@ -2243,6 +2246,7 @@ لم يتم العثور على أي جهاز. خطأ في الشبكة. كود الـ QR غير صالح. + عذرًا، لديك عدة أجهزة مرتبطة. يُرجى إزالة بعضها. عذرًا، الرابط غير صحيح. هل ترغبُ بربط جهاز يستخدم سيجنال؟ @@ -2269,11 +2273,13 @@ أدخِل العبارة السرية عبارة سرية غير صحيحة! فتح قفل سيجنال + سيجنال أندرويد - قفل الشاشة الخريطة + ضع علامة اقبل العنوان @@ -2374,13 +2380,13 @@ - العودة للوراء + عودة للوراء معلومات عن المكالمة - الكاميرا غير مشغلة + الكاميرا في حالة عدم تشغيل يُرجى النقر هنا لتشغيل مكالمة الفيديو لديك. @@ -2577,7 +2583,7 @@ إنهاء المُكالمة - تفعيل الرنين الجماعي + تفعيل الرنين للمجموعة حدث خطأ في واجهة المستخدم. يُرجى الإبلاغ عن هذا الخطأ للمطوِّرين. @@ -2599,7 +2605,7 @@ هل تريد خفض يدك؟ - اخفض + خفض اليد إلغاء @@ -2610,8 +2616,8 @@ %1$s رفع يده - %1$s +%2$d رفعتم أيديكم - %1$s +%2$d رفع يده + %1$s +%2$d رفعوا أيديهم + %1$s +%2$d رفعتَ يدك %1$s +%2$d رفعتُما أيديكُما %1$s +%2$d رفعتم أيديكم %1$s +%2$d رفعتم أيديكم @@ -2838,7 +2844,7 @@ - تم العثور على تضارب أسماء + هناك اختلاف في الأسماء إظهار @@ -2865,6 +2871,7 @@ ‫رسالة سيجنال + المزيد @@ -2896,6 +2903,7 @@ لا يوجد ملصقات مُثبَّتة ستظهر هنا الملصقات القادمة من الرسائل الواردة بدون عنوان + غير معروف @@ -2915,98 +2923,98 @@ فشل الحفظ - تمّ الحفظ - المس على الخط لحذفه + اكتمل الحفظ + انقر على الخط لحذفه إرسال - فشل إرسال السجل - تم بنجاح ! - يُرجى نسخ هذا العنوان وإضافته إلى بلاغك أو إلى بريد الدعم :\n\n%1$s - شارك - سيتم نشر هذا السّجل علناً حتى يتمكن المساهمون في التطبيق من الاطلاع عليه. يمكنك فحصه أو تعديله قبل رفعه. + فشل في الإبلاغ عن مشكلة + تمَّ بنجاح! + يُرجى نسخ هذا العنوان وإضافته إلى بلاغك عن مشكلة أو إلى بريد الدعم :\n\n%1$s + مشاركة + سيتمُّ نشر هذا السّجل علنًا على الانترنت حتى يتمكن المساهمون من الاطِّلاع عليه. يمكنك فحصه أو تعديله قبل تحميله. - المُرشِّح : - معلومات الجهاز : - إصدار اﻷندرويد + الفلتر: + معلومات الجهاز: + إصدار اﻷندرويد: - قفل التسجيل : + قفل التسجيل: - تم تحديث المجموعة - غادر المجموعة - إعادة ضبط جلسة آمنة. + تمَّ تحديث المجموعة + غادَرَ المجموعة + تمَّت إعادة ضبط جلسة آمنة. مسودة: رسالة وسائط متعددة - ملصق - صورة لمشاهدة لمرة واحدة - فيديو لمشاهدة لمرة واحدة - وسيط لمشاهدة لمرة واحدة + مُلصَق + صورة للمشاهدة لمرة واحدة + فيديو للمشاهدة لمرة واحدة + وسيط للمشاهدة لمرة واحدة حُذفَت هذه الرسالة. - لقد حذفت هذه الرسالة. + حذفتَ هذه الرسالة. - أرسلت طلبًا لتفعيل عمليات الدفع + أرسلتَ طلبًا لتفعيل عمليات الدفع. - يُريدك %1$s أن تُفعّل عمليات الدفع + يُريدك %1$s أن تُفعِّل عمليات الدفع - لقد فعّلت عمليات الدفع + فعّلتَ عمليات الدفع يُمكن لـ %1$s قبول عمليات الدفع الآن %1$s متواجد على سيجنال! - الرسائل المختفية غير مفعّلة + ميزة إخفاء الرسائل غير مُفعَّلة ضبط توقيت إخفاء الرسائل إلى %1$s - هناك تغيير في رقم الأمان - لقد تغيّر رقم الأمان بينك وبـين %1$s. - لقد قمت بالإشارة بالتحقّق - لقد قمت بإلغاء التحقق - لم يمكن معالجة الرسالة - مشكل في التوصيل - طلب التراسل + تمَّ تغيير رقم الأمان + تغيَّر رقم الأمان بينك وبـين %1$s. + قمتَ بتأكيد التحقُّق. + قمتَ بتأكيد إلغاء التحقُّق. + لَمْ تكتمِل معالجة الرسالة + مشكلة في التوصيل + طلب مراسلة - لقد أخفيت هذا الشخص، راسله مُجددًا لإضافته إلى قائمتك. + قمتَ بإخفاء جهة الاتصال هذه، راسلهم مُجددًا لإضافتهم إلى قائمتك. صورة صورة متحركة رسالة صوتية ملف فيديو - تم إنعاش جلسة الدردشة + تمَّ تحديث جلسة الدردشة - تبرّع %1$s لك + تبرَّع %1$s لك - تبرّعت لـ %1$s + تبرّعتَ لـ %1$s - لقد استردَدت شارة + استردَدت شارة - تفاعل %1$s مع قِصتك + تفاعَل %1$s مع قِصتك - تفاعل %1$s مع قِصتهم + تفاعَل %1$s مع قِصتهم عمليات الدفع رسالة مُجدولة - تم دمج سِجل رسائلك + تمَّ دمج سِجل رسائلك يعود الرقم %1$s إلى %2$s تحديث سيجنال - إصدار جديد من سيجنال متوفر. انقر للتحديث. - تعذّر على سيجنال التحديث + إصدار جديد من سيجنال متوفِّر. انقر للتحديث. + تعذَّر على سيجنال التحديث سنحاول من جديد لاحقًا. - تم تحديث سيجنال بنجاح - تم تحديثك تلقائيًا إلى الإصدار %1$s. + تمَّ تحديث سيجنال بنجاح + تمَّ تحديث التطبيق لديك تلقائيًا إلى الإصدار %1$s. قمتَ بالتحديث إلى النسخة %1$s. - هل تود إرسال الرسالة ؟ - أرسل + هل ترغبُ بإرسال الرسالة؟ + إرسال - هل تود إرسال الرسالة ؟ - أرسل + هل ترغبُ بإرسال الرسالة؟ + إرسال @@ -3014,49 +3022,49 @@ إضافة اسم مُستخدم - يُرجى اختيار اسم المُستخدم + اختر اسم مُستخدم خاص بك اسم المُستخدم حذف - تم حذف اسم المُستخدم بنجاح. - حدث خطأ فى الشبكة + تمَّ حذف اسم المُستخدم بنجاح. + حدث خطأ في الشبكة. - قمتَ بمحاولات كثيرة. يُرجى المحاولة لاحقاً - اسم المُستخدم هذا غير متوفّر. - أسماء المُستخدمين يجب أن تحتوي فقط على الحروف الأبجدية، 0-9، أو \"_\". + قمتَ بمحاولاتٍ كثيرة. يُرجى المحاولة لاحقًا. + اسم المُستخدم هذا غير متوفِّر. + أسماء المُستخدمين يجب أن تحتوي فقط على الحروف الأبجدية، أو الأرقام 0-9، أو \"_\". اسم المُستخدم لا يمكن أن يبدأ برقم. - اسم المُستخدم غير صالح + اسم المُستخدم غير صالح. اسم المُستخدم لا بد أن يكون بين %1$d و%2$d رمز. - يتم دائمًا إقران أسماء المستخدمين بمجموعة من الأرقام. + يتم دائمًا إقران أسماء المُستخدمين بمجموعة من الأرقام. ماذا يعني هذا الرقم؟ - تُساعد هذه الأرقام في الحفاظ على خصوصية اسم المُستخدم الخاص بك حتى تتجنب الرسائل غير مرغوب فيها. شارك اسم المُستخدم الخاص بك مع الأشخاص والمجموعات الذين ترغب في الدردشة معهم. إذا قمت بتغيير أسماء المُستخدمين، سَتحصل على مجموعة جديدة من الأرقام. + تُساعد هذه الأرقام في الحفاظ على خصوصية اسم المُستخدم الخاص بك حتى تتجنَّب الرسائل غير المرغوب فيها. شارِك اسم المُستخدم الخاص بك مع الأشخاص والمجموعات الذين ترغب في الدردشة معهم. إذا قمتَ بتغيير أسماء المُستخدمين، سَتحصل على مجموعة جديدة من الأرقام. تخطّي تمّ - اسم المُستخدم هذا ليس موجودًا، جرّب رقمًا آخر. + اسم المُستخدم هذا ليس موجودًا. جرِّب رقمًا آخر. - اسم مُستخدم غير صحيح، أدخل رمزيْن %1$d على الأقل. + اسم مُستخدم غير صحيح. أدخِل %1$d رمز (رموز) كحد أدنى. - اسم مُستخدم غير صحيح، أدخل %1$d رمزًا كحد أقصى. + اسم مُستخدم غير صحيح. أدخِل %1$d رمز (رموز) كحد أقصى. - لا يُمكن لهذا الرقم أن يكون 00. أدخل رقمًا بين 1 –9 + لا يُمكن لهذا الرقم أن يكون 00. أدخِل رقمًا بين 1 –9 - الأرقام التي تحتوي على أكثر من رقمين لا يُمكن أن تبدأ بـ 0 + الأرقام التي تحتوي على أكثر من رقمين لا يُمكن أن تبدأ بـ 0. - سيُؤدي استرداد اسم المُستخدم الخاص بك إلى إعادة تعيين رمز ورابط الاستجابة السريعة الخاصين بك. هل أنت مُتأكد؟ + سيُؤدي استرداد اسم المُستخدم الخاص بك إلى إعادة تعيين رابط وكود الـ QR الخاصين بك. هل أنت مُتأكِّد؟ - سيُؤدي تغيير اسم المُستخدم الخاص بك إلى إعادة تعيين رمز الاستجابة السريع والرابط الحاليين الخاصين بك. هل أنت متأكد؟ + سيُؤدي تغيير اسم المُستخدم الخاص بك إلى إعادة تعيين الرابط وكود الـ QR الحاليين الخاصين بك. هل أنت متأكِّد؟ مواصلة %1$d جهة اتصال تستخدم سيجنال!‏ ‏‏%1$d جهة اتصال تستخدم سيجنال!‏ - %1$d جهات اتصال تستخدم سيجنال! - %1$d جهات اتصال تستخدم سيجنال! + %1$d جهتي اتصال تستخدم سيجنال! + %1$d جهات اتصالٍ تستخدم سيجنال! %1$d جهة اتصال تستخدم سيجنال! %1$d جهة اتصال تستخدم سيجنال! @@ -3066,23 +3074,23 @@ نسخ أو مشاركة رابط اسم المُستخدم - جهة الاتصال هذه تستخدم نسخة أحدث من تطبيق سيجنال وصيغة رمز الاستجابة السريع أو QR فيها لا تتوافق مع نسختك. يرجى تحديث النسخة للمقارنة. - إن رمز الاستجابة السّريع الذي تمّ مسحه ليس برمز تحقق لرقم سلامة مُصاغ بشكل صحيح. يُرجى محاولة المسح من جديد. - شارك رقم الأمان بواسطة… + جهة الاتصال هذه تستخدم نسخة أحدث من تطبيق سيجنال وكود الـ QR فيها لا يتوافق مع نسختك. يُرجى تحديث النسخة للمقارنة. + كود الـ QR الذي تمَّ مسحه ليس برمز تحقُّق لرقم أمان تمَّت صياغته بشكلٍ صحيح. يُرجى محاولة المسح من جديد. + شارِك رقم الأمان من خلال… رقم الأمان الخاص بنا في سيجنال: يبدو عدم وجود أي تطبيقات لديك للمشاركة من خلالها. - لم يُعثر على رقم سلامة يمكن مقارنته في الحافظة - يحتاج سيجنال إلى إذن الكاميرا من أجل مسح رمز الاستجابة السريع QR ولكن تم إيقاف الإذن على نحو دائم، الرجاء زيارة إعدادات التطبيق واختيار \"الأذونات\"، ثم تفعيل \"الكاميرا\". - لا يمكن مسح رمز الإستجابة السريعة QR بدون إذن استخدام الكاميرا - يجب عليك أولا تبادل الرسائل لإظهار رقم أمان %1$s. + لم يُعثَر في الحافظة على رقم أمان يمكن مقارنته. + يحتاج سيجنال إلى إذن الكاميرا من أجل مسح كود الـ QR، ولكن تمَّ إيقاف الإذن على نحو دائم. الرجاء زيارة إعدادات التطبيق واختيار \"الأذونات\"، ثم تفعيل \"الكاميرا\". + لا يمكن مسح كود الـ QR بدون إذن استخدام الكاميرا. + يجب عليك أولًا تبادل الرسائل لإظهار رقم الأمان الخاص بـ %1$s. - سَيتم إنشاء رقم أمان مع هذا الشخص بعد تبادل الرسائل معه. + سيتم إنشاء رقم أمان مع هذا الشخص بعد تبادل الرسائل معه. موافق - معرفة المزيد + اعرف المزيد - موافق + حسنًا @@ -3091,44 +3099,45 @@ - عُميَّت الرسالة لجلسة غير موجودة + تمَّ تشفير الرسالة لجلسة غير موجودة. - رسالة متعددة الوسائط مُعمَّاة بطريقة سيئة - عُميَّت الرسالة متعدّدة الوسائط لجلسة غير موجودة… + رسالة مُتعدِّدة الوسائط مشفَّرة بطريقة غير صحيحة + تمَّ تشفير الرسالة مُتعدِّدة الوسائط لجلسة غير موجودة… كتم الإشعارات - المس للفتح. - سيجنال غير مقفل + انقرللفتح. + سيجنال غير مُقفَل اقفِل سيجنال أنت - صنف الوسائط غير مدعوم + نوع الوسائط غير مدعوم مسوَّدة - يحتاج سيجنال إلى إذن سعة التخزين من أجل استخدام الذاكرة الخارجية ولكن تم إيقاف الإذن على نحو دائم. الرجاء زيارة إعدادات التطبيق، واختيار\"الصلاحيات\"، ثم تفعيل \"سعة التخزين\". - لا يمكن الحفظ إلى الذاكرة الخارجية بدون أذونات - أَتريد حذف الرسالة؟ - هذا الإجراء سَيحذف الرسالة بشكل دائم. + يحتاج سيجنال إلى إذن الوصول إلى مساحة التخزين من أجل استخدام الذاكرة الخارجية، ولكن تمَّ إيقاف الإذن بشكلٍ دائم. يُرجى زيارة إعدادات التطبيق، وتحديد \"الصلاحيات\"، ثم تفعيل \"مساحة التخزين\". + لا يمكن الحفظ إلى الذاكرة الخارجية بدون أذونات. + أترغبُ بحذف الرسالة؟ + هذا الإجراء سَيحذف الرسالة بشكلٍ دائم. %1$s إلى %2$s أنت إلى %1$s %1$s إليك - هذه الوسيط لم يعد متاحا. + ملف الوسائط لم يعد مُتاحًا. - تعذّر تشغيل الوسائط. + تعذَّر تشغيل الوسائط. + خطأ في البحث عن الرسالة. - لم يعثر على تطبيق قادر على فتح هذا الملف. + لم يعثر على تطبيق قادر على مشاركة هذا الملف. إغلاق - خطأ في الوسائط + خطأ في ملف الوسائط - خطأ في حذف الرسالة، قد تكون الرسالة لا زالت متواجدة + خطأ في حذف الرسالة. قد تكون الرسالة لا زالت موجودة. - قراءة المزيد + اقرأ المزيد @@ -3139,8 +3148,8 @@ %1$d رسالة %1$d رسالتين %1$d رسائل - %1$d رسالة - %1$d رسالة + %1$d رسالةً + %1$d رسالةٍ @@ -3148,42 +3157,42 @@ %1$d دردشة %1$d دردشتين %1$d دردشات - %1$d دردشة - %1$d دردشة + %1$d دردشةً + %1$d دردشةٍ الأحدث من: %1$s - رسالة مقفلة - فشل توصيل الرسالة. + رسالة مُقفَلة + فشل في إرسال الرسالة. - تعذّر إرسال القصة + تعذَّر إرسال القصة - أنت إلى %1$s - فشل توصيل الرسالة. - خطأ بالارسال - إن توصيل الرسالة متوقف مؤقتا. - يُرجى التأكد قبل مواصلة التراسل في سيجنال. - وسم جميع الرسائل بأنها مقروءة - عُدَّها مقروءة - تعطيل هذه الإشعارات - صورة للعرض مرة واحدة - مقطع فيديو للعرض مرة واحدة - رَدّ + منك إلى %1$s + فشل في إرسال الرسالة. + خطأ في إرسال الرسالة. + إرسال الرسالة توقَّفَ مؤقَّتًا. + قُم بالتوثيق لمواصلة التراسل على سيجنال. + تحديد جميع الرسائل كمقروءة + تحديد كمقروءة + إيقاف هذه الإشعارات + صورة للعرض لمرة واحدة + مقطع فيديو للعرض لمرة واحدة + الرد ‫رسالة سيجنال - %1$s%2$s + %1$s %2$s جهة اتصال تفاعل %1$s مع: \"%2$s\". - تفاعل %1$s مع فيديوهاتك. + تفاعل %1$s مع مقطع الفيديو الخاص بك. تفاعل %1$s مع صورتك. - تفاعل %1$s مع صورتك الـ GIF. - تفاعل %1$s مع ملفك الخاص. - تفاعل %1$s مع تسجيلك الصوتي. - تفاعل %1$s مع وسائطك التي تُعرَض مرة واحدة. + تفاعل %1$s مع صورة GIF الخاصة بك. + تفاعل %1$s مع الملف الخاص بك. + تفاعل %1$s مع الملف الصوتي الخاص بك. + تفاعل %1$s مع ملف الوسائط لديك الذي يُعرَض لمرة واحدة. تفاعل %1$s مع عملية الدفع الخاصة بك. - تم تفاعل %1$s مع ملصقك الخاص. - تم حذف هذه الرسالة. + تفاعل %1$s مع الملصق الخاص بك. + تمَّ حذف هذه الرسالة. - تعطيل إشعارات انضمام شخص إلى سيجنال؟ تمكنك تفعيلها مجددا في سيجنال > الإعدادات > الإشعارات. + هل ترغبُ بإيقاف إشعارات انضمام شخص إلى سيجنال؟ يمكنك تفعيل الميزة مُجدَّدًا في سيجنال > الإعدادات > الإشعارات. @@ -3191,27 +3200,29 @@ لتلقي إشعارات بالرسائل الجديدة: - 1. انقر على \"إعدادات\" أسفله + 1. انقر على \"الإعدادات\" في الأسفل - 2. %1$s تفعيل الإشعارات + 2. %1$s قُم بتفعيل الإشعارات الإعدادات الرسائل المُكالمات + الأخطاء - النُسخ الإحتياطية + النُسخ الاحتياطية حالة القفل تحديثات التطبيق أخرى - المُحادثات - مجهول + الدردشات + غير معروف الملاحظات الصوتية انضمّت جهة الاتصال إلى سيجنال + لا وجود لأي نشاط متاح لفتح إعدادات قناة الإشعارات. - اتصال الخلفية + اتصال في الواجهة الخلفية حالة المكالمة @@ -3223,7 +3234,7 @@ الردود السريعة غير متاحة عند قفل سيجنال! - مشكلة في الإرسال! + مشكلة في إرسال الرسائل! تم حفظ الوسائط @@ -3244,7 +3255,7 @@ سيجنال رسالة جديدة - طلب التراسُل + طلب مراسلة أنت %1$s • قصة @@ -3270,7 +3281,7 @@ إعداد اسم المستخدم - شغّل الفيديو + شغِّل الفيديو فيه تعليق @@ -3279,8 +3290,8 @@ %1$d عنصر %1$d عنصرين %1$d عناصر - %1$d عنصر - %1$d عنصر + %1$d عنصرًا + %1$d عنصرٍ جارٍ المعالجة… @@ -3297,7 +3308,7 @@ أعد تسجيل الجهاز - لقد تم تسجيل خروجك من تطبيق سيجنال على هذا الجهاز. + تمَّ تسجيل خروجك من تطبيق سيجنال على هذا الجهاز. @@ -3305,36 +3316,36 @@ - للإجابة على المكالمة، يجب عليك منح ترخيص الوصول إلى ميكروفونك. + للإجابة على المكالمة، اسمح لسيجنال بالوصول إلى الميكروفون على جهازك. للرّد على مكالمة الفيديو، يُرجى منح Signal ترخيص الوصول إلى الميكروفون و الكاميرا على هاتفك. - يحتاج سيجنال إلى أذونات الميكروفون والكاميرا من أجل استقبال أو تلقّي المكالمات، ولكن الإذن لم يُمنح بشكل دائم. الرجاء زيارة إعدادات التطبيق، واختيار \"الأذونات\"، ثم تفعيل \"الميكروفون\" و\"الكاميرا\". - أجاب عبر جهاز مرتبط. - رُفض عبر جهاز مرتبط. - مشغول في جهاز مرتبط. + يحتاج سيجنال إلى أذونات الوصول إلى الميكروفون والكاميرا من أجل استقبال أو إجراء المكالمات، ولكن الإذن تمَّ رفضه بشكلٍ دائم. يُرجى زيارة \"إعدادات التطبيق\"، واختيار \"الأذونات\"، ثم تفعيل \"الميكروفون\" و\"الكاميرا\". + تمَّت الإجابة عبر جهاز مُرتبِط. + تمَّ الرفض عبر جهاز مُرتبِط. + مشغول على جهاز مُرتبِط. لقد نُقل زر تغيير الكاميرا إلى هنا، انقر على الفيديو الخاص بك لتُجرّبه. انضم شخص لهذه المكالمة برقم أمان مختلف. - يُرجى السحب لتغيير نمط العرض + يُرجى السحب للأعلى لتغيير نمط العرض رفض - أجب + إجابة أجب بدون فيديو - مخرج الصوت + مخرَج الصوت - سماعة أذن الهاتف + سماعة الأذن للهاتف - مكبر الصوت + مُكبِّر الصوت بلوتوث @@ -3367,23 +3378,23 @@ المزيد - امسح النص الذي ادخلته + امسح النص الذي أدخلته إظهار لوحة المفاتيح إظهار لوحة الاتصال لا توجد جهات اتصال. - تحميل جهات الاتصال… + جارٍ تحميل جهات الاتصال… صورة جهة الاتصال - يحتاج سيجنال إلى أذن الوصول إلى جهات الاتصال من أجل عرضها لك، ولكن تم إيقاف الإذن على نحو دائم. الرجاء زيارة إعدادات التطبيق، اختيار \"الأذونات\"، ثم تفعيل \"جهات الاتصال\". - خطأ في جلب جهات الاتصال، يُرجى التحقق مِن اتصالك بالشبكة + يحتاج سيجنال إلى أذن الوصول إلى جهات الاتصال من أجل عرضها لك، ولكن تمَّ إيقاف الإذن بشكلٍ دائم. يُرجى زيارة إعدادات التطبيق، واختيار \"الأذونات\"، ثم تفعيل \"جهات الاتصال\". + خطأ في استرجاع جهات الاتصال. يُرجى التحقُّق مِن اتصالك بالشبكة. لم يتم العثور على اسم المُستخدم - "\"%1$s\" ليس مُستخدم لِسيجنال. يرجى التحقّق من اسم المُستخدم والمحاولة ثانية." - ليست بحاجة إلى إضافة نفسك للمجموعة + "\"%1$s\" ليس مُستخدم لِسيجنال. يُرجى التحقُّق من اسم المُستخدم والمحاولة مُجدَّدًا." + لستَ بحاجة إلى إضافة نفسك إلى المجموعة وصلت المجموعة إلى الحد الأقصى. أقصى حد للأعضاء في مجموعات سيجنال هو %1$d عضوا. تم وصول الأعضاء إلى الحد المُوصى به @@ -4045,10 +4056,12 @@ ستُحذف جميع محفوظات الرسائل نهائيًا من كل الأجهزة. لا يُمكن التراجع عن هذا الإجراء. حذف الكل الآن + للأبد عام واحد 6 أشهر 30 يوما + لا شيء %1$s رسائل @@ -4077,6 +4090,7 @@ اظهار الرّنة حجم الخط في الرسائل + الأولوية استكشاف أخطاء الإشعارات @@ -4305,6 +4319,7 @@ قراءة عنوان المرسل إليه من الرمز المربع + الطلب دَفع الرصيد المتوفر : %1$s @@ -4440,6 +4455,7 @@ يمكنك تثبيت ما يصل إلى %1$d دردشات فقط + صورة جهة الاتصال الأرشيف @@ -4448,6 +4464,10 @@ دردشة جديدة فتح الكاميرا لا دردشات حتى الآن.\nابدأ عن طريق محادثة صديق. + + No chats to display + + Folder settings @@ -4712,6 +4732,7 @@ النسخ الاحتياطية للدردشات نقل الحساب نقل الحساب نحو جهاز أندرويد جديد + ادخل العبارة السرية الخاصة بالنسخ الاحتياطية استعادة لا يمكن استيراد نسخ احتياطية من إصدارات أحدث من سيجنال @@ -4919,6 +4940,7 @@ تعذر فتح إعدادات Wi-Fi. يُرجى تشغيل Wi-Fi يدويا. + منح إذن الوصول للموقع تشغيل خدمات الموقع شغِّل Wi-Fi @@ -5200,6 +5222,7 @@ مشاركة + أرسلْ ، %1$s @@ -5507,6 +5530,131 @@ لوحة المفاتيح أرسل بالضغط على إدخال + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat types + %1$d chat type + %1$d chat types + %1$d chat types + %1$d chat types + %1$d chat types + + + + %1$d chats + %1$d chat + %1$d chats + %1$d chats + %1$d chats + %1$d chats + + + + %1$d chats excluded + %1$d chat excluded + %1$d chats excluded + %1$d chats excluded + %1$d chats excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done الرسائل @@ -5595,6 +5743,7 @@ جودة الوسائط + جودة الوسائط المرسلة إن إرسال وسائط بجودة عالية سوف يستخدم كما أكبر من البيانات. @@ -7859,15 +8008,15 @@ - Your backups subscription expired + انتهت صلاحية اشتراك النسخ الاحتياطي الخاص بحسابك. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + انتهت صلاحية اشتراك النسخ الاحتياطي الخاص بحسابك لأنه تعذّر تجديده بواسطة طريقة الدفع الحالية الخاصة بك. سَيتمُّ حذف الوسائط الموجودة في النسخة الاحتياطية الخاصة بك بعد %1$d أيام. + انتهت صلاحية اشتراك النسخ الاحتياطي الخاص بك لأنه تعذَّر تجديده بواسطة طريقة الدفع الحالية الخاصة بك. سَيتمُّ حذف الوسائط الموجودة في النسخة الاحتياطية الخاصة بك بعد %1$d يوم. + انتهت صلاحية اشتراك النسخ الاحتياطي الخاص بك لأنه تعذّر تجديده بواسطة طريقة الدفع الحالية الخاصة بك. سَيتمُّ حذف الوسائط الموجودة في النسخة الاحتياطية الخاصة بك بعد %1$d يومين. + انتهت صلاحية اشتراك النسخ الاحتياطي الخاص بك لأنه تعذّر تجديده بواسطة طريقة الدفع الحالية الخاصة بك. سَيتمُّ حذف الوسائط الموجودة في النسخة الاحتياطية الخاصة بك بعد %1$d أيام. + انتهت صلاحية اشتراك النسخ الاحتياطي الخاص بك لأنه تعذّر تجديده بواسطة طريقة الدفع الحالية الخاصة بك. سَيتمُّ حذف الوسائط الموجودة في النسخة الاحتياطية الخاصة بك بعد %1$d يومًا. + انتهت صلاحية اشتراك النسخ الاحتياطي الخاص بك لأنه تعذّر تجديده بواسطة طريقة الدفع الحالية الخاصة بك. سَيتمُّ حذف الوسائط الموجودة في النسخة الاحتياطية الخاصة بك بعد %1$d يومٍ. يُمكنك دفع ثمن النسخ الاحتياطية مرة أخرى في أي وقت لمواصلة نسخ جميع وسائطك الاحتياطية. @@ -7889,9 +8038,9 @@ إذا اخترت \"تخطي\" فسيتم حذف الوسائط في النسخ الاحتياطي الخاص بك في %1$d يوم. - Your backups subscription failed to renew + تعذَّر تجديد اشتراك النسخ الاحتياطي الخاص بحسابك. - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + تأكَّد من أن طريقة الدفع الخاصة بك مُحدَّثة. انقر على \"إدارة الاشتراك\"، ثم انقر على \"تحديث\" ضمن تبويب \"طرق الدفع\". تعذّر إكمال النسخ الاحتياطي @@ -7903,7 +8052,7 @@ إدارة الاشتراك - Subscribe for %1$s/month + اشترِك مقابل %1$s/شهريًا تنزيل الوسائط الآن @@ -7938,6 +8087,17 @@ %1$s من %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7991,22 +8151,22 @@ لا يمكن استخدام ميزة تحسين التخزين إلا مع المستوى المدفوع لنسخ سيجنال الاحتياطية. يُرجى ترقية خطة نسخك الاحتياطية لتفعيل هذه الميزة. - Subscribe for %1$s/month + اشترِك مقابل %1$s/شهريًا - This media is no longer available + لم يعد ملف الوسائط هذا متوفِّرًا. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + يتضمن الاشتراك الحالي للنسخ الاحتياطي في حسابك على سيجنال الوسائط الخاصة بالأيام %1$d الماضية. + يتضمن الاشتراك الحالي للنسخ الاحتياطي في حسابك على سيجنال الوسائط الخاصة باليوم %1$d الماضي. + يتضمن الاشتراك الحالي للنسخ الاحتياطي في حسابك على سيجنال الوسائط الخاصة باليومين %1$d الماضيين. + يتضمن الاشتراك الحالي للنسخ الاحتياطي في حسابك على سيجنال الوسائط الخاصة بالأيام %1$d الماضية. + يتضمن الاشتراك الحالي للنسخ الاحتياطي في حسابك على سيجنال الوسائط الخاصة %1$d الماضية. + يتضمن الاشتراك الحالي للنسخ الاحتياطي في حسابك على سيجنال الوسائط الخاصة %1$d الماضية. - Subscribe for %1$s/month + اشترِك مقابل %1$s/شهريًا عملية الحذف تتم في تزامن عبر جميع أجهزتك الآن @@ -8049,11 +8209,13 @@ تم تغيير نوع النُسخ الاحتياطية وإلغاء الاشتراك - لقد أُلغي الاشتراك + Subscription canceled انتهى التنزيل سيتم إنشاء نسخة احتياطية خلال الليل. + + Subscription inactive خطة النسخ الاحتياطي @@ -8062,8 +8224,12 @@ %1$s/شهريًا خطة النسخ الاحتياطي الخاصة بك مجانية - + التجديد في %1$s + + Expires on %1$s + + Expired on %1$s انسخ سجل رسائلك كي لا تفقد بياناتك أبدًا عندما تستخدم هاتفًا جديدًا أو تعيد تثبيت سيجنال. @@ -8108,6 +8274,10 @@ نسخ احتياطي يدوي يُرجى إدخال الرقم التعريفي الشخصي أو كلمة المرور أو نمط تعطيل كلمة المرور لجهازك. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 3d417981f6..90db16691c 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -368,6 +368,8 @@ Çatlar Mesajlar + + Chat types Mesaj %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Hazırsan. Artıq ehtiyat nüsxəni çıxarmağa başla. Ehtiyat nüsxə həcmindən asılı olaraq, bu, bir qədər uzun çəkə bilər. Ehtiyat nüsxə çıxarılarkən adi hallarda olduğu kimi telefonunuzdan istifadə edə bilərsiniz. @@ -1969,6 +1971,7 @@ %1$d+ nəfər dəvət edildi %1$d+ nəfər dəvət edildi + %1$d əlavə qrup %1$d əlavə qrup @@ -1995,6 +1998,7 @@ Cihaz tapılmadı. Şəbəkə xətası. Etibarsız QR kod. + Təəssüf ki, həddən çox cihazla əlaqə yaratdınız, bəzilərini çıxartmağa çalışın Təəssüf ki, cihaz əlaqələndirmək üçün etibarlı bir QR kodu deyil. Signal cihazı ilə əlaqə yaradılsın? @@ -2017,11 +2021,13 @@ Parolu təqdim edin Etibarsız parol! Signal-ın kilidini aç + Signal Android - Kilid Ekranı Xəritə + Sancaqla Ünvanı qəbul et @@ -2525,6 +2531,7 @@ Signal Mesajı + Daha çox @@ -2556,6 +2563,7 @@ Heç bir stiker quraşdırılmadı Gələn mesajlardan aldığınız stikerlər burada görünəcək Başlıqsız + Bilinmir @@ -2777,6 +2785,7 @@ Media artıq mövcud deyil. Media faylını açmaq mümkün olmadı. + Mesaj tapma xətası. Bu medianı paylaşmaq üçün bir tətbiq tapıla bilmir. Bağla @@ -2848,6 +2857,7 @@ Mesajlar Zənglər + Xətalar Nüsxələr Kilid statusu @@ -2857,6 +2867,7 @@ Bilinmir Səsli qeydlər Əlaqə Signal-a qoşuldu + Bildiriş kanalı tənzimləmələrini açmaq üçün mövcud bir fəaliyyət yoxdur Arxaplan bağlantısı @@ -3641,10 +3652,12 @@ Bütün mesaj tarixçəsi bütün cihazlardan həmişəlik silinəcək. Bu əməliyyat geri qaytarıla bilməz. Hamısını indi sil + Həmişəlik 1 il 6 ay 30 gün + Heç biri %1$s mesaj @@ -3669,6 +3682,7 @@ Göstər Zəng səsi Mesaj şrift ölçüsü + Üstünlük Nasazlıqların aradan qaldırılması bildirişi @@ -3897,6 +3911,7 @@ Alacaq şəxsin QR kod ünvanını skan edin + Tələb Ödə Mövcud balans: %1$s @@ -4028,6 +4043,7 @@ Yalnız %1$d çata qədər sancaqlaya bilərsiniz + Əlaqə fotosu Arxivləndi @@ -4036,6 +4052,10 @@ Yeni çat Kameranı aç Hələ ki, heç bir çat yoxdur.\nBir dostunuza mesaj göndərərək başlayın. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Çat nüsxələri Hesabı köçür Hesabınızı yeni bir Android cihazına köçürün + Nüsxə parolunu daxil edin Geri yüklə Signal-ın yeni versiyalarından nüsxələr idxal edilmir @@ -4475,6 +4496,7 @@ Wi-Fi tənzimləmələri açıla bilmir. Zəhmət olmasa \"Wi-Fi\"ı əllə işə salın. + Yerləşməyə müraciətə icazə verin Yerləşmə xidmətlərini işə sal \"Wi-Fi\"ı açın @@ -4728,6 +4750,7 @@ Paylaş + Göndər , %1$s @@ -5031,6 +5054,119 @@ Klaviatura \"Enter\"ə basaraq göndər + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Mesajlar @@ -5115,6 +5251,7 @@ Media keyfiyyəti + Göndərilən media keyfiyyəti Yüksək keyfiyyətli media göndərərkən, daha çox verilənlər istifadə ediləcək. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Ehtiyat nüsxə abunəliyinin vaxtı bitdi - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Cari ödəniş metodunuzla yenilənə bilmədiyindən ehtiyat nüsxə planınızın vaxtı bitdi. %1$d gündən sonra ehtiyat nüsxəsnizdə olan media fayllarınız silinəcək. + Cari ödəniş metodunuzla yenilənə bilmədiyindən ehtiyat nüsxə planınızın vaxtı bitdi. %1$d gündən sonra ehtiyat nüsxənizdə olan media fayllarınız silinəcək. Bütün media fayllarınızın ehtiyat nüsxəsini çıxarmağa davam etmək üçün istənilən vaxt yenidən ehtiyat nüsxələr üçün ödəniş etməyə başlaya bilərsiniz. @@ -7257,9 +7394,9 @@ \"Ötür\" seçimini etsəniz ehtiyat nüsxənizdəki media faylı %1$d günə silinəcək. - Your backups subscription failed to renew + Ehtiyat nüsxə abunəliyinizi yeniləmək mümkün olmadı - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Ödəniş metodunuzun yeniləndiyindən əmin olmaq üçün yoxlayın. \"Abunəliyi idarə et\" seçib, \"Ödəniş metodları\" bölməsinin altında \"Yenilə\" seçiminə toxunun. Ehtiyat nüsxəni tamamlamaq mümkün olmadı @@ -7271,7 +7408,7 @@ Abunəliyi idarə et - Subscribe for %1$s/month + Aylıq %1$s məbləğinə abunə ol Media faylını indi endir @@ -7306,6 +7443,17 @@ %1$s /%2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Yaddaş optimallaşdırması yalnız Signal ehtiyat nüsxələrinin ödənişli səviyyəsi ilə istifadə oluna bilər. Bu xüsusiyyətdən istifadə etməyə başlamaq üçün ehtiyat nüsxə planını yeniləşdirin. - Subscribe for %1$s/month + Aylıq %1$s məbləğinə abunə ol - This media is no longer available + Bu media faylı artıq mövcud deyil - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Cari Signal ehtiyat nüsxəsi planınız son %1$d günlük media fayllarını əhatə edir. Bütün media fayllarınızın ehtiyat nüsxəsini çıxarmaq üçün indi yeniləyin. + Cari Signal ehtiyat nüsxəsi planınız son %1$d günlük media fayllarını əhatə edir. Bütün media fayllarınızın ehtiyat nüsxəsini çıxarmaq üçün indi yeniləyin. - Subscribe for %1$s/month + Aylıq %1$s məbləğinə abunə ol Silmə funksiyası artıq bütün cihazlarınızla sinxronlaşdırılıb @@ -7413,11 +7561,13 @@ Ehtiyat nüsxə növü dəyişdirildi və abunəlik ləğv edildi - Abunəlik ləğv edildi + Subscription canceled Endirmə tamamlandı Ehtiyat nüsxə gecə çıxarılacaq. + + Subscription inactive Ehtiyat nüsxə planı @@ -7426,8 +7576,12 @@ %1$s/ay Ehtiyat nüsxə planınız pulsuzdur - + %1$s yenilənir + + Expires on %1$s + + Expired on %1$s Yeni telefon aldığınız və ya Signal-ı təkrar quraşdırdığınız zaman məlumatları itirməmək üçün mesaj tarixçəsinin ehtiyat nüsxəsini çıxarın. @@ -7472,6 +7626,10 @@ Əllə ehtiyat nüsxə çıxarmaq üçün Cihazın PIN kodunu, parolunu və ya qrafik şifrəsini daxil edin. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index d03d17f18a..3c0b5be00f 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -368,6 +368,8 @@ Чатове Съобщения + + Chat types Съобщение %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Всичко е готово. Започнете резервното копиране сега. В зависимост от размера на вашето резервно копие това може да отнеме доста време. Докато резервното копиране се извършва, можете да използвате телефона си както обикновено. @@ -1969,6 +1971,7 @@ +%1$d поканен +%1$d поканени + %1$d допълнителна група %1$d допълнителни групи @@ -1995,6 +1998,7 @@ Не е открито устройство. Проблем с мобилната мрежа. Невалиден QR код. + За съжалние, имате твърде много свързани устройства, опитайте да премахнете някои от тях… За съжаление, това не е валидна QR връзка. Свързване със Signal устройство? @@ -2017,11 +2021,13 @@ Задай паролата Грешна парола! Отключи Signal + Signal Android - Заключен екран Карта + Пуснете пин Приемете адрес @@ -2525,6 +2531,7 @@ Съобщение в Signal + Още @@ -2556,6 +2563,7 @@ Няма инсталирани стикери Стикери от входящи съобщения ще се появяват тук Неозаглавен + Непознат @@ -2777,6 +2785,7 @@ Тази мултимедия вече не е налична. Неуспешно възпроизвеждане на мултимедия. + Грешка при намиране на съобщение. Не може да бъде намерено приложение, което да може да споделя тази мултимедия. Затвори @@ -2848,6 +2857,7 @@ Съобщения Обаждания + Грешки Архиви Статус на заключването @@ -2857,6 +2867,7 @@ Непознат Гласови бележки Един от контактите Ви се присъедини към Signal! + Няма налична активност за отваряне на настройките на канала за известия. Връзка във фонов режим @@ -3641,10 +3652,12 @@ Цялата история на съобщенията ще бъде изтрита перманентно. Това действие не може да бъде върнато назад. Изтриване на всички сега + Завинаги 1 година 6 месеца 30 дни + Нищо %1$s съобщение @@ -3669,6 +3682,7 @@ Показване Мелодия Размер на текста + Приоритет Известия за отстраняване на неизправности @@ -3897,6 +3911,7 @@ Сканирайте QR кода с адреса на получателя + Поискай Плати Наличен баланс: %1$s @@ -4028,6 +4043,7 @@ Можете да фиксирате само до %1$d чатове + Изображение на контакта Архивиран @@ -4036,6 +4052,10 @@ Нов чат Отвори Kамера Все още няма чатове.\nЗапочнете, като изпратите съобщение на някой приятел. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Архив на чатовете Прехвърляне на акаунт Прехвърляне на акаунта на ново устройство с Android + Въведете парола за архивното копие Възстановяване Не може да се внасят архивни копия от по-нови версии @@ -4475,6 +4496,7 @@ Не успяхме да отворим настройките за Wi-Fi. Моля, включете Wi-Fi ръчно. + Ползволи да ползва местоположение Включи услуга за местоположение Включи Wi-Fi @@ -4728,6 +4750,7 @@ Споделяне + Изпращане , %1$s @@ -5031,6 +5054,119 @@ Клавиатура Изпратете с enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Съобщения @@ -5115,6 +5251,7 @@ Качество на мултимедията + Качество на изпратената мултимедия Изпращането на висококачествени мултимедийни файлове ще използва повече данни. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Вашият абонамент за резервни копия е изтекъл - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Вашият план за резервно копиране е изтекъл, защото не можахме да го подновим с текущия ви начин на плащане. След %1$d ден мултимедията, съхранена във вашето резервно копие, ще бъде изтрита. + Вашият план за резервно копиране е изтекъл, защото не можахме да го подновим с текущия ви начин на плащане. След %1$d дни мултимедията, съхранена във вашето резервно копие, ще бъде изтрита. Можете да започнете отново да плащате за резервно копиране по всяко време, за да продължите да поддържате резервно копие на всичката ви мултимедия. @@ -7257,9 +7394,9 @@ Ако изберете „Пропускане“, мултимедията във вашето резервно копие ще бъде изтрита след %1$d дни. - Your backups subscription failed to renew + Вашият абонамент за резервни копия не успя да се поднови - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Уверете се, че начинът ви на плащане е актуален. Докоснете „Управление на абонамента“ и под „Начини на плащане“ докоснете „Актуализиране“. Неуспешно резервно копиране @@ -7271,7 +7408,7 @@ Управление на абонамента - Subscribe for %1$s/month + Абониране за %1$s/месец Изтегляне на мултимедията сега @@ -7306,6 +7443,17 @@ %1$s от %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Оптимизацията на съхранението може да се използва само с платената версия на Signal Backups. Надградете плана ви за резервни копия сега, за да започнете да използвате тази функция. - Subscribe for %1$s/month + Абониране за %1$s/месец - This media is no longer available + Тази мултимедия вече не е налична - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Текущият ви план за резервни копия на Signal включва последния %1$d ден мултимедия. За да започне да се прави резервно копие на всичката ви мултимедия, надградете сега. + Текущият ви план за резервни копия на Signal включва последните %1$d дни мултимедия. За да започне да се прави резервно копие на всичката ви мултимедия, надградете сега. - Subscribe for %1$s/month + Абониране за %1$s/месец Изтриването вече е синхронизирано на всички ваши устройства @@ -7413,11 +7561,13 @@ Видът резервно копие е променен и абонаментът е отменен - Абонаментът е отменен + Subscription canceled Изтеглянето е завършено Резервното копие ще бъде създадено през нощта. + + Subscription inactive План за резервно копиране @@ -7426,8 +7576,12 @@ %1$s/месец Вашият резервен план е безплатен - + Подновява се на %1$s + + Expires on %1$s + + Expired on %1$s Създайте резервно копие на историята на съобщенията си, за да не изгубите данните, когато си вземете нов телефон или преинсталирате Signal. @@ -7472,6 +7626,10 @@ Ръчно резервно копиране Моля, въведете ПИН, парола или фигура за вашето устройство. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index dd7562f277..cb64e7e061 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -368,6 +368,8 @@ চ্যাট ম্যাসেজ + + Chat types %1$sটি বার্তা @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + আপনার সব প্রস্তুতি সম্পন্ন হয়েছে। এখনই আপনার ব্যাকআপ শুরু করুন। আপনার ব্যাকআপের আকারের উপর নির্ভর করে, এটি লম্বা সময় নিতে পারে। ব্যাকআপ নেওয়ার সময় আপনি স্বাভাবিক সময়ের মতই আপনার ফোন ব্যবহার করতে পারবেন। @@ -1969,6 +1971,7 @@ +%1$d আমন্ত্রিত + %1$d আমন্ত্রিত + %1$d টি অতিরিক্ত গ্রুপ %1$dটি অতিরিক্ত গ্রুপ @@ -1995,6 +1998,7 @@ কোনও ডিভাইস পাওয়া যায় নি। নেটওয়ার্ক ত্রুটি। অকার্যকর QR কোড। + দুঃখিত, ইতিমধ্যে আপনার সাথে সংযুক্ত অনেকগুলি ডিভাইস রয়েছে, কিছু সরানোর চেষ্টা করুন দুঃখিত, এটি কোনও বৈধ ডিভাইসের লিঙ্ক কিউআর কোড নয়। একটি Signal ডিভাইস লিঙ্ক করবেন? @@ -2017,11 +2021,13 @@ পাসফ্রেজ সাবমিট করুন অকার্যকর পাসফ্রেজ! Signal আনলক করুন + Signal অ্যান্ড্রয়েড - লক স্ক্রিন ম্যাপ + ড্রপ পিন ঠিকানাটি মানছি @@ -2525,6 +2531,7 @@ Signal বার্তা + আরও @@ -2556,6 +2563,7 @@ কোনো স্টিকার ইনস্টল করা নেই আগত বার্তাগুলির স্টিকারসমূহ এখানে দেখা যাবে নামহীন + অজানা @@ -2777,6 +2785,7 @@ মিডিয়াটি আর উপলভ্য নেই। মিডিয়াটি চালানো যায়নি। + ম্যাসেজটি খুঁজে পেতে ত্রুটি হয়েছে। এই মিডিয়া শেয়ার করার জন্য কোনও অ্যাপ পাওয়া যায়নি। বন্ধ @@ -2848,6 +2857,7 @@ বার্তাসমূহ কল সমূহ + ব্যর্থতাসমূহ ব্যাকআপ সমূহ লক্ অবস্থা @@ -2857,6 +2867,7 @@ অজানা ভয়েস নোট পরিচিতি Signal এ যোগ দিয়েছে + নোটিফিকেশন চ্যানেল সেটিংস খোলার কোন কার্যকলাপ উপলভ্য নেই। ব্যাকগ্রাউন্ড সংযোগ @@ -3641,10 +3652,12 @@ সকল মেসেজের ইতিহাস স্থায়ীভাবে সকল ডিভাইস থেকে মুছে ফেলা হবে। এই কার্যক্রমটি পূর্বাবস্থায় ফেরানো যাবে না। এখনই সব মুছে ফেলুন + চিরতরে ১ বছর ৬ মাস ৩০ দিন + কিছুই না %1$sটি ম্যাসেজ @@ -3669,6 +3682,7 @@ দেখান রিংটোন বার্তার হরফের আকার + অগ্রাধিকার বিজ্ঞপ্তিজনিত সমস্যার সমাধান @@ -3897,6 +3911,7 @@ প্রদানকারীর ঠিকানা কিউআর কোডটি স্ক্যান করুন + অনুরোধ প্রদান করুন পর্যাপ্ত অর্থ: %1$s @@ -4028,6 +4043,7 @@ আপনি শুধু %1$dটি চ্যাট পিন করতে পারবেন + পরিচিতির ফটো ইমেজ আর্কাইভ করা @@ -4036,6 +4052,10 @@ নতুন চ্যাট ক্যামেরা চালু করুন এখনো কোনো চ্যাট নেই।\nবন্ধুকে ম্যাসেজ পাঠিয়ে শুরু করুন। + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ চ্যাট ব্যাকআপ অ্যাকাউন্ট স্থানান্তর করুন একটি নতুন অ্যান্ড্রয়েড ডিভাইসে অ্যাকাউন্ট স্থানান্তর করুন + ব্যাকঅাপ পাসফ্রেজ প্রবেশ করান পুনরুদ্ধার Signal-এর নতুন সংস্করণ থেকে ব্যাকআপ ইম্পোর্ট সম্ভব নয় @@ -4475,6 +4496,7 @@ ওয়াইফাই সেটিংস খুলতে অক্ষম। ম্যানুয়ালি ওয়াইফাই চালু করুন। + লোকেশন অনুমতি দিন লোকেশন পরিষেবা চালু করুন ওয়াই-ফাই চালু করুন @@ -4728,6 +4750,7 @@ শেয়ার করুন + পাঠান , %1$s @@ -5031,6 +5054,119 @@ কীবোর্ড এন্টার দিয়ে পাঠান + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done বার্তাসমূহ @@ -5115,6 +5251,7 @@ মিডিয়ার মান + পাঠানো মিডিয়ার মান উচ্চ মানের মিডিয়া প্রেরণে আরও ডেটা ব্যবহার হবে। @@ -7235,11 +7372,11 @@ - Your backups subscription expired + আপনার ব্যাকআপ সাবস্ক্রিপশনের মেয়াদ শেষ হয়ে গেছে - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + আপনার ব্যাকআপ প্ল্যানের মেয়াদ শেষ হয়ে গেছে, কারণ এটি আপনার বর্তমান পেমেন্টের পদ্ধতি অনুসারে নবায়ন করা যায়নি। %1$d দিন পর আপনার ব্যাকআপের মিডিয়া মুছে ফেলা হবে। + আপনার ব্যাকআপ প্ল্যানের মেয়াদ শেষ হয়ে গেছে, কারণ এটি আপনার বর্তমান পেমেন্টের পদ্ধতি অনুসারে নবায়ন করা যায়নি। %1$d দিন পর আপনার ব্যাকআপের মিডিয়া মুছে ফেলা হবে। আপনার সকল মিডিয়ার ব্যাকআপ নেওয়া চালিয়ে যেতে আপনি যেকোনো সময় আবার ব্যাকআপের জন্য পেমেন্ট শুরু করতে পারেন। @@ -7257,9 +7394,9 @@ আপনি যদি \"এড়িয়ে যান\" নির্বাচন করেন, তাহলে আপনার ব্যাকআপে থাকা মিডিয়া %1$d দিনের মধ্যে মুছে যাবে। - Your backups subscription failed to renew + আপনার ব্যাকআপ সাবস্ক্রিপশন নবায়ন ব্যর্থ হয়েছে - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + আপনার পেমেন্ট পদ্ধতি হালনাগাদ কিনা তা নিশ্চিত করতে পরীক্ষা করুন। সাবস্ক্রিপশন নিয়ন্ত্রণ করতে ট্যাপ করুন এবং পেমেন্ট পদ্ধতির অধীনে \'আপডেট করুন\'এ ট্যাপ করুন। ব্যাকআপ সম্পন্ন করা যায়নি @@ -7271,7 +7408,7 @@ সাবস্ক্রিপশন ব্যবহার করুন - Subscribe for %1$s/month + %1$s/মাসের জন্য সাবস্ক্রাইব করুন এখনই মিডিয়া ডাউনলোড করুন @@ -7306,6 +7443,17 @@ %1$s এর %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ স্টোরেজ অপ্টিমাইজেশন শুধুমাত্র Signal ব্যাকআপের পেইড টায়ারের ক্ষেত্রে ব্যবহার করা যেতে পারে। এই ফিচারটি ব্যবহার শুরু করতে আপনার ব্যাকআপ প্ল্যান আপগ্রেড করুন। - Subscribe for %1$s/month + %1$s/মাসের জন্য সাবস্ক্রাইব করুন - This media is no longer available + এই মিডিয়াটি আর নেই - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + আপনার বর্তমান Signal ব্যাকআপ প্ল্যানে আপনার সাম্প্রতিক %1$d দিনের মিডিয়া অন্তর্ভুক্ত রয়েছে। আপনার সকল মিডিয়া ব্যাকআপ নেওয়া শুরু করতে, এখনই আপগ্রেড করুন। + আপনার বর্তমান Signal ব্যাকআপ প্ল্যানে আপনার সাম্প্রতিক %1$d দিনের মিডিয়া অন্তর্ভুক্ত রয়েছে। আপনার সকল মিডিয়া ব্যাকআপ নেওয়া শুরু করতে, এখনই আপগ্রেড করুন। - Subscribe for %1$s/month + %1$s/মাসের জন্য সাবস্ক্রাইব করুন মুছে ফেলার বিষয়টি এখন আপনার সকল ডিভাইস জুড়ে সিঙ্ক করা হয়েছে @@ -7413,11 +7561,13 @@ ব্যাকআপের ধরন পরিবর্তিত হয়েছে এবং সাবস্ক্রিপশন বাতিল করা হয়েছে - সদস্যতা বাতিল করা হয়েছে + Subscription canceled ডাউনলোড সম্পন্ন হয়েছে রাতের বেলা ব্যাকআপ তৈরি করা হবে। + + Subscription inactive ব্যাকআপ প্ল্যান @@ -7426,8 +7576,12 @@ %1$s/মাস আপনার ব্যাকআপ প্ল্যান ফ্রি - + %1$s নবায়ন করছে + + Expires on %1$s + + Expired on %1$s আপনার মেসেজের ইতিহাসের ব্যাকআপ নিন, যাতে আপনি যখন কোনো নতুন ফোন ব্যবহার করা শুরু করবেন বা Signal পুনরায় ইনস্টল করবেন তখন আপনি কখনোই ডেটা হারাবেন না। @@ -7472,6 +7626,10 @@ ম্যানুয়ালি ব্যাকআপ অনুগ্রহ করে আপনার ডিভাইসের পিন, পাসওয়ার্ড বা প্যাটার্ন লিখুন। + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-bs/strings.xml b/app/src/main/res/values-bs/strings.xml index 07c3ca0575..66ee59b06d 100644 --- a/app/src/main/res/values-bs/strings.xml +++ b/app/src/main/res/values-bs/strings.xml @@ -374,6 +374,8 @@ Chatovi Poruke + + Chat types Poruka %1$s @@ -856,7 +858,7 @@ - You\'re all set. Start your backup now. + Sve je spremno. Pokrenite kreiranje sigurnosne kopije sada. Ovisno o veličini vaše sigurnosne kopije, ovo može potrajati. Možete koristiti svoj telefon kao i obično dok se kreira sigurnosna kopija. @@ -2091,6 +2093,7 @@ Pozvano je više od %1$d Pozvano je više od %1$d + %1$d dodatna grupa %1$d dodatne grupe @@ -2119,6 +2122,7 @@ Nijedan uređaj nije pronađen. Greška u mreži. Nevažeći QR kōd. + Povezali ste previše uređaja, molimo pokušajte ukloniti neke od njih Ovo nije ispravan QR kōd za povezivanje uređaja. Povezati Signal uređaj? @@ -2143,11 +2147,13 @@ Unesite lozinku Pogrešna lozinka! Otključajte Signal + Signal Android – Zaključan ekran Karta + Stavite pribadaču Prihvati adresu @@ -2695,6 +2701,7 @@ Signal poruka + Više @@ -2726,6 +2733,7 @@ Nema instaliranih naljepnica Naljepnice iz primljenih poruka bit će prikazane ovdje Bez naziva + Nepoznato @@ -2949,6 +2957,7 @@ Datoteka više nije dostupna. Nije moguće reproducirati medijski sadržaj. + Greška pri pronalaženju poruke. Nije pronađena aplikacija koja može podijeliti ovu datoteku. Zatvori @@ -3024,6 +3033,7 @@ Poruke Pozivi + Greške Rezervne kopije Status zaključavanja @@ -3033,6 +3043,7 @@ Nepoznato Glasovne bilješke Kontakt je počeo koristiti Signal + Nema aktivnosti za otvaranje postavki obavještenjā. Konekcija u pozadini @@ -3843,10 +3854,12 @@ Sva historija poruka će biti trajno uklonjena sa svih uređaja. Ova radnja ne može se poništiti. Izbriši sve odmah + Zauvijek 1 godinu 6 mjeseci 30 dana + Neograničeno %1$s poruka @@ -3873,6 +3886,7 @@ Prikaži Zvono Veličina slova u poruci + Prioritet Rješavanje problema s obavijestima @@ -4101,6 +4115,7 @@ Skeniraj QR kōd za adresu osobe koja uplaćuje + Zahtjev Plati Raspoloživo: %1$s @@ -4234,6 +4249,7 @@ Možete zakačiti najviše sljedeći broj chatova: %1$d + Slika kontakta Arhivirano @@ -4242,6 +4258,10 @@ Novi chat Pokreni kameru Još nema chatova.\nZapočnite slanjem poruke prijatelju. + + No chats to display + + Folder settings @@ -4490,6 +4510,7 @@ Rezervne kopije chata Prenesi račun Prenesite račun na novi Android uređaj + Unesite lozinku za rezervne kopije Vrati Ne mogu se preuzeti sig. kopije u novoj verziji Signala @@ -4697,6 +4718,7 @@ Nije moguće otvoriti Wi-Fi podešavanja. Molimo, ručno aktivirajte Wi-Fi. + Dopustite pristup lokaciji Aktiviraj lokaciju telefona Uključi Wi-Fi @@ -4964,6 +4986,7 @@ Dijeli + Šalji , %1$s @@ -5269,6 +5292,125 @@ Tastatura Pošaljite sa Enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + %1$d chat types + %1$d chat types + + + + %1$d chat + %1$d chats + %1$d chats + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + %1$d chats excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Poruke @@ -5355,6 +5497,7 @@ Kvalitet zapisa + Kvalitet poslatih zapisa Slanje visokokvalitetnih zapisa kreirat će veći protok. @@ -7547,13 +7690,13 @@ - Your backups subscription expired + Vaša pretplata na sigurnosnu kopiju je istekla - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Vaš plan sigurnosne kopije je istekao jer se nije mogao obnoviti vašim trenutnim načinom plaćanja. Nakon %1$d dan, mediji u vašoj sigurnosnoj kopiji će biti izbrisani. + Vaš plan sigurnosne kopije je istekao jer se nije mogao obnoviti vašim trenutnim načinom plaćanja. Nakon %1$d dana, mediji u vašoj sigurnosnoj kopiji će biti izbrisani. + Vaš plan sigurnosne kopije je istekao jer se nije mogao obnoviti vašim trenutnim načinom plaćanja. Nakon %1$d dana, mediji u vašoj sigurnosnoj kopiji će biti izbrisani. + Vaš plan sigurnosne kopije je istekao jer se nije mogao obnoviti vašim trenutnim načinom plaćanja. Nakon %1$d dana, mediji u vašoj sigurnosnoj kopiji će biti izbrisani. Možete ponovo početi plaćati sigurnosne kopije u bilo kojem trenutku kako biste nastavili s kreiranjem sigurnosnih kopija svih svojih medija. @@ -7573,9 +7716,9 @@ Ako odaberete \"Preskoči\", medij u vašoj sigurnosnoj kopiji će biti izbrisan za %1$d dana. - Your backups subscription failed to renew + Vaša pretplata na sigurnosne kopije nije obnovljena - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Provjerite je li vaš način plaćanja ažuriran. Dodirnite Upravljanje pretplatom i pod Načini plaćanja dodirnite Ažuriraj. Nije moguće završiti kreiranje sigurnosne kopije @@ -7587,7 +7730,7 @@ Upravljaj pretplatom - Subscribe for %1$s/month + Pretplatite se za %1$s mjesečno Preuzmite medije sada @@ -7622,6 +7765,17 @@ %1$s od %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7675,20 +7829,20 @@ Optimizacija pohrane može se koristiti samo s plaćenim nivoom sigurnosnih kopija Signala. Nadogradite svoj plan rezervne kopije da počnete koristiti ovu značajku. - Subscribe for %1$s/month + Pretplatite se za %1$s mjesečno - This media is no longer available + Ovaj medij više nije dostupan - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Vaš trenutni paket sigurnosne kopije Signala uključuje vaš posljednji %1$d dan medija. Da započnete kreiranje rezervnih kopija svih svojih medija, nadogradite sada. + Vaš trenutni paket sigurnosne kopije Signala uključuje vaš posljednji %1$d dana medija. Da započnete kreiranje rezervnih kopija svih svojih medija, nadogradite sada. + Vaš trenutni paket sigurnosne kopije Signala uključuje vaš posljednji %1$d dana medija. Da započnete kreiranje rezervnih kopija svih svojih medija, nadogradite sada. + Vaš trenutni paket sigurnosne kopije Signala uključuje vaš posljednji %1$d dana medija. Da započnete kreiranje rezervnih kopija svih svojih medija, nadogradite sada. - Subscribe for %1$s/month + Pretplatite se za %1$s mjesečno Brisanje je sada sinhronizirano na svim vašim uređajima @@ -7731,11 +7885,13 @@ Vrsta sigurnosne kopije je promijenjena i pretplata je otkazana - Pretplata je otkazana + Subscription canceled Preuzimanje je završeno Sigurnosna kopija će biti kreirana tokom noći. + + Subscription inactive Paket rezervne kopije @@ -7744,8 +7900,12 @@ %1$s/mjesečno Vaš paket rezervne kopije je besplatan - + Obnavlja se %1$s + + Expires on %1$s + + Expired on %1$s Kreirajte sigurnosnu kopiju historije poruka da nikada ne izgubite podatke kada nabavite novi telefon ili ponovo instalirate Signal. @@ -7790,6 +7950,10 @@ Ručno kreiranje sigurnosne kopije Unesite PIN za svoj uređaj, lozinku ili uzorak. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index f9d0e142ca..8364059637 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -368,6 +368,8 @@ Xats Missatges + + Chat types Missatge %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Tot a punt! Ja pots iniciar la teva còpia de seguretat. Depenent de la mida de la teva còpia de seguretat, això pot trigar força estona. Mentre es fa la còpia de seguretat, podràs continuar utilitzant el teu telèfon com de costum. @@ -1969,6 +1971,7 @@ +%1$d convidat +%1$d convidats + %1$d grup addicional %1$d grups addicionals @@ -1995,6 +1998,7 @@ No es troba cap dispositiu. Error de xarxa. Codi QR no vàlid. + Teniu massa dispositius enllaçats, proveu de suprimir-ne algun. Això no és un codi QR amb enllaç vàlid. Voleu enllaçar un dispositiu de Signal? @@ -2017,11 +2021,13 @@ Envia la contrasenya Contrasenya incorrecta! Desbloca el Signal + Signal Android - Bloca la pantalla Mapa + Marqueu el lloc Accepta l\'adreça @@ -2525,6 +2531,7 @@ Missatge del Signal + Més @@ -2556,6 +2563,7 @@ No hi ha adhesius instal·lats. Els adhesius dels missatges d\'entrada apareixeran aquí. Sense títol + Desconegut @@ -2777,6 +2785,7 @@ El contingut ja no està disponible. No s\'ha pogut reproduir l\'arxiu. + Error trobant el missatge. No es pot trobar cap aplicació que pugui compartir aquest contingut. Tanca @@ -2848,6 +2857,7 @@ Missatges Trucades + Fallades Còpies de seguretat Estat del bloqueig @@ -2857,6 +2867,7 @@ Desconegut Notes de veu El contacte s\'ha afegit al Signal. + No hi ha activitat disponible per obrir la configuració del canal de notificacions. Connexió en segon pla @@ -3641,10 +3652,12 @@ S\'esborrarà permanentment tot l\'historial de missatges de tots els dispositius. Aquesta acció no es pot desfer. Esborrar-ho tot ara + Per sempre 1 any 6 mesos 30 dies + Cap %1$s missatge @@ -3669,6 +3682,7 @@ Mostra To de trucada Mida de la lletra dels missatges + Prioritat Resolució de problemes de les notificacions @@ -3897,6 +3911,7 @@ Escaneja el codi QR de l\'adreça del beneficiari + Sol·licitud Paga Saldo disponible: %1$s @@ -4028,6 +4043,7 @@ Només podeu fixar fins a %1$d xats. + Fotografia del contacte Arxivat @@ -4036,6 +4052,10 @@ Nou xat Obre la càmera Encara no tens cap xat.\nComença enviant un missatge a algú. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Còpies de seguretat de xats Transfereix el compte Transfereix el compte a un dispositiu d\'Android nou + Escriviu la contrasenya de la còpia de seguretat. Restaura No es pot importar backup de versions noves de Signal @@ -4475,6 +4496,7 @@ No es pot obrir la configuració de la Wi-Fi. Activeu-la manualment. + Concedeix el permís d\'ubicació Activa els serveis d\'ubicació Activa la Wi-Fi @@ -4728,6 +4750,7 @@ Compartir-lo + Envia , %1$s @@ -5031,6 +5054,119 @@ Teclat Enviar amb la tecla de Retorn + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Missatges @@ -5115,6 +5251,7 @@ Qualitat dels mitjans + Qualitat dels mitjans enviats L’enviament de mitjans d’alta qualitat usarà més dades. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + La teva subscripció al pla de còpies de seguretat ha caducat - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + El teu pla de còpia de seguretat d\'arxius ha caducat perquè no s\'ha pogut renovar amb el teu mètode de pagament actual. S\'eliminaran els arxius de la teva còpia de seguretat en %1$d dia. + El teu pla de còpia de seguretat d\'arxius ha caducat perquè no s\'ha pogut renovar amb el teu mètode de pagament actual. S\'eliminaran els arxius de la teva còpia de seguretat en %1$d dies. Per continuar fent còpies de seguretat de tots els teus arxius, pots tornar a pagar per aquest servei en qualsevol moment. @@ -7257,9 +7394,9 @@ Si selecciones \"Ometre\", els arxius de la teva còpia de seguretat s\'eliminaran d\'aquí a %1$d dies. - Your backups subscription failed to renew + La teva subscripció al pla de còpies de seguretat no s\'ha pogut renovar - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Assegura\'t que el teu mètode de pagament està actualitzat. Toca Gestionar la subscripció, i a Mètodes de pagament toca Actualització. No s\'ha pogut completar la còpia de seguretat @@ -7271,7 +7408,7 @@ Gestiona la subscripció - Subscribe for %1$s/month + Subscriu-te per %1$s/mes Descarregar els arxius ara @@ -7306,6 +7443,17 @@ %1$s de %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ L\'optimització d\'emmagatzematge només es pot utilitzar amb el nivell de subscripció de pagament de Còpies de seguretat de Signal. Actualitza el teu pla de còpies de seguretat per accedir a aquesta funció. - Subscribe for %1$s/month + Subscriu-te per %1$s/mes - This media is no longer available + Aquest arxiu ja no està disponible. - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + El teu pla de còpia de seguretat actual de Signal inclou el teu darrer dia d\'arxius multimèdia. Per començar a fer còpies de seguretat de tots els teus arxius, actualitza ara la teva subscripció. + El teu pla de còpia de seguretat actual de Signal inclou els teus darrers %1$d dies d\'arxius multimèdia. Per començar a fer còpies de seguretat de tots els teus arxius, actualitza ara la teva subscripció. - Subscribe for %1$s/month + Subscriu-te per %1$s/mes L\'eliminació de continguts ara es sincronitza ara a tots els teus dispositius @@ -7413,11 +7561,13 @@ S\'ha canviat el tipus de còpia de seguretat i s\'ha cancel·lat la subscripció - Subscripció cancel·lada + Subscription canceled Descàrrega completa La còpia de seguretat es crearà durant la nit. + + Subscription inactive Pla de còpies de seguretat @@ -7426,8 +7576,12 @@ %1$s/ mes El teu pla de còpies de seguretat és gratuït - + Renovacions %1$s + + Expires on %1$s + + Expired on %1$s Fes una còpia de seguretat de l\'historial de missatges per no perdre mai cap dada quan compris un telèfon nou o tornis a instal·lar Signal. @@ -7472,6 +7626,10 @@ Còpia de seguretat manual Introdueix el PIN, la contrasenya o el patró del teu dispositiu. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 464c7b5c4f..15a7270729 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -374,6 +374,8 @@ Chaty Zprávy + + Chat types Zpráva %1$s @@ -856,7 +858,7 @@ - You\'re all set. Start your backup now. + Vše je nastaveno. Můžete zahájit zálohování. V závislosti na velikosti zálohy to může trvat delší dobu. Během zálohování můžete telefon používat jako obvykle. @@ -2091,6 +2093,7 @@ +%1$d pozváno +%1$d pozváno + %1$d další skupina %1$d další skupiny @@ -2119,6 +2122,7 @@ Nenalezeno žádné zařízení. Chyba sítě. Neplatný QR kód. + Omlouváme se, ale máte propojeno příliš mnoho zařízení. Zkuste některé propojení zrušit Omlouváme se, ale toto není platný QR kód pro propojení zařízení. Propojit zařízení Signal? @@ -2143,11 +2147,13 @@ Zadejte heslo Chybné heslo! Odemknout Signal + Signal Android - Zamykací obrazovka Mapa + Umístit ukazatel Potvrdit adresu @@ -2695,6 +2701,7 @@ Zpráva Signal + Víc @@ -2726,6 +2733,7 @@ Nejsou instalovány žádné nálepky Nálepky z příchozích zpráv se objeví zde Nepojmenovaná + Neznámý @@ -2949,6 +2957,7 @@ Média již nejsou k dispozici. Médium nelze přehrát. + Při hledání zprávy došlo k chybě. Nebyla nalezena žádná aplikace pro sdílení tohoto média. Zavřít @@ -3024,6 +3033,7 @@ Zprávy Volání + Chyby Zálohy Stav zámku @@ -3033,6 +3043,7 @@ Neznámý Hlasové poznámky Kontakt se připojil k Signal + K otevření nastavení kanálu oznámení není k dispozici žádná aktivita. Spojení na pozadí @@ -3843,10 +3854,12 @@ Ze všech zařízení bude trvale odstraněna veškerá historie zpráv. Tuto operaci nelze vzít zpět. Vše nyní odstranit + Navždy 1 rok 6 měsíců 30 dní + Žádný %1$s zpráva @@ -3873,6 +3886,7 @@ Zobrazit Vyzvánění Velikost písma zprávy + Priorita Řešení problémů s oznámeními @@ -4101,6 +4115,7 @@ Naskenujte QR kód adresy příjemce + Požadavek Zaplatit Dostupný zůstatek: %1$s @@ -4234,6 +4249,7 @@ Můžete připnout nanejvýš %1$d chaty + Fotografie kontaktu Archivováno @@ -4242,6 +4258,10 @@ Nový chat Otevřít fotoaparát Zatím nemáte žádné chaty.\nZačněte tím, že pošlete zprávu někomu z přátel. + + No chats to display + + Folder settings @@ -4490,6 +4510,7 @@ Zálohy chatů Přenést účet Přenést účet na nové Android zařízení + Zadejte heslo pro zálohu Obnovení Nelze importovat zálohy z novějších verzí Signal @@ -4697,6 +4718,7 @@ Nepovedlo se otevřít Wi-Fi nastavení. Aktivujte prosím Wi-Fi ručně. + Udělit oprávnění k poloze Zapnout služby polohy Zapnout Wi-Fi @@ -4964,6 +4986,7 @@ Sdílet + Odeslat , %1$s @@ -5269,6 +5292,125 @@ Klávesnice Odeslat tlačítkem Enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + %1$d chat types + %1$d chat types + + + + %1$d chat + %1$d chats + %1$d chats + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + %1$d chats excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Zprávy @@ -5355,6 +5497,7 @@ Kvalita médií + Kvalita odeslaných médií Odesílání médií ve vysoké kvalitě spotřebovává více dat. @@ -7547,13 +7690,13 @@ - Your backups subscription expired + Platnost vašeho předplatného pro zálohování vypršela - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Platnost vašeho předplatného pro zálohování vypršela, protože jej nebylo možné obnovit pomocí aktuálního způsobu platby. Po %1$d dni budou média ve vaší záloze odstraněna. + Platnost vašeho předplatného pro zálohování vypršela, protože jej nebylo možné obnovit pomocí aktuální platební metody. Po %1$d dnech budou média ve vaší záloze odstraněna. + Platnost vašeho předplatného pro zálohování vypršela, protože jej nebylo možné obnovit pomocí aktuální platební metody. Po %1$d dnech budou média ve vaší záloze odstraněna. + Platnost vašeho předplatného pro zálohování vypršela, protože jej nebylo možné obnovit pomocí aktuální platební metody. Po %1$d dnech budou média ve vaší záloze odstraněna. Kdykoliv můžete opět začít platit za zálohování a pokračovat v zálohování všech svých médií. @@ -7573,9 +7716,9 @@ Pokud zvolíte možnost „Přeskočit“, budou média ve vaší záloze odstraněna za %1$d dní. - Your backups subscription failed to renew + Předplatné pro zálohování se nepodařilo obnovit - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Zkontrolujte, zda je vámi zvolená platební metoda aktuální. Klikněte na možnost Správa předplatného a v části Platební metody na Aktualizovat. Zálohování se nepodařilo dokončit @@ -7587,7 +7730,7 @@ Spravovat předplatné - Subscribe for %1$s/month + Předplatit za %1$s / měsíc Stáhnout média @@ -7622,6 +7765,17 @@ %1$s z %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7675,20 +7829,20 @@ Optimalizaci úložiště lze použít pouze s placenou službou Signal zálohování. Aktualizujte svůj plán zálohování, abyste mohli začít tuto funkci používat. - Subscribe for %1$s/month + Předplatit za %1$s / měsíc - This media is no longer available + Toto médium již není k dispozici - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Vaše předplatné pro zálohování médií v aplikaci Signal bude trvat již jen %1$d den. Pro zálohování všech svých médií proveďte aktualizaci. + Vaše předplatné pro zálohování médií v aplikaci Signal bude trvat již jen %1$d dny. Pro zálohování všech svých médií proveďte aktualizaci. + Vaše předplatné pro zálohování médií v aplikaci Signal bude trvat již jen %1$d dní. Pro zálohování všech svých médií proveďte aktualizaci. + Vaše předplatné pro zálohování médií v aplikaci Signal bude trvat již jen %1$d dní. Pro zálohování všech svých médií proveďte aktualizaci. - Subscribe for %1$s/month + Předplatit za %1$s / měsíc Odstraňování zpráv je nyní synchronizováno pro všechna vaše zařízení @@ -7731,11 +7885,13 @@ Typ zálohování změněn a předplatné zrušeno - Předplatné zrušeno + Subscription canceled Stahování dokončeno Záloha bude vytvořena přes noc. + + Subscription inactive Plán zálohování @@ -7744,8 +7900,12 @@ %1$s / měsíčně Váš plán zálohování je zdarma - + Obnovení %1$s + + Expires on %1$s + + Expired on %1$s Zálohujte si historii zpráv. Už nikdy nepřijdete o data, když si pořídíte nový telefon nebo přeinstalujete aplikaci Signal. @@ -7790,6 +7950,10 @@ Ruční zálohování Zadejte prosím PIN, heslo nebo vzorec svého zařízení. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 74bb830a4c..729eacfae9 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -368,6 +368,8 @@ Chats Beskeder + + Chat types Besked %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Det var det. Start din sikkerhedskopiering nu. Afhængigt af størrelsen på din sikkerhedskopi kan dette tage lang tid. Du kan bruge din telefon, som du plejer, mens sikkerhedskopieringen oprettes. @@ -1969,6 +1971,7 @@ +%1$d inviteret +%1$d inviterede + %1$d yderligere gruppe %1$d yderligere grupper @@ -1995,6 +1998,7 @@ Ingen enhed fundet Netværksfejl. Ugyldig QR-kode. + Beklager. Du har allerede for mange enheder tilsluttet, prøv at fjerne én Beklager, QR-koden kan ikke bruges til at forbinde enheder. Tilknyt en Signal-enhed? @@ -2017,11 +2021,13 @@ Tilføj adgangssætning Ugyldig adgangssætning! Lås Signal op + Signal Android - Låseskærm Kort + Placér markør Godkend adresse @@ -2525,6 +2531,7 @@ Signal-besked + Mere @@ -2556,6 +2563,7 @@ Ingen klistermærker installeret Klistermærker fra modtagede beskeder vises her Ingen titel + Ukendt @@ -2777,6 +2785,7 @@ Mediefil er ikke længere tilgængelig. Medier kunne ikke afspilles. + Kunne ikke finde besked. Kan ikke finde en app, som kan dele denne mediefil. Luk @@ -2848,6 +2857,7 @@ Beskeder Opkald + Registrerede fejl Sikkerhedskopier Låsestatus @@ -2857,6 +2867,7 @@ Ukendt Stemmenoter Kontakt bruger nu Signal + Ingen aktivitet tilgængelig for at åbne indstillinger for notifikationsskanal. Forbindelse i baggrunden @@ -3641,10 +3652,12 @@ Al beskedhistorik fjernes permanent fra alle forbundne enheder. Denne handling kan ikke fortrydes. Slet alt nu + For evigt 1 år 6 måneder 30 dage + Ingen %1$s besked @@ -3669,6 +3682,7 @@ Vis Ringetone Skriftstørrelse på beskeder + Prioritet Fejlfinding af notifikationer @@ -3897,6 +3911,7 @@ Scan betalingsmodtagerens QR-kode for adresse + Anmodning Betal Disponibel saldo: %1$s @@ -4028,6 +4043,7 @@ Du kan kun fastgøre op til %1$d chats + Kontaktbillede Arkiveret @@ -4036,6 +4052,10 @@ Ny chat Åbn kamera Der er ingen chats endnu.\nKom i gang ved at sende en besked til en ven. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Sikkerhedskopier af chats Overfør konto Overfør konto til en ny Android-enhed + Indtast adgangssætning til sikkerhedskopi Gendan Kan ikke importere backups fra nyere Signal-versioner @@ -4475,6 +4496,7 @@ Wi-Fi-indstillinger kan ikke åbnes. Slå Wi-Fi til manuelt. + Tildel placeringstilladelser Slå placeringstjenester til Aktiver Wi-Fi @@ -4728,6 +4750,7 @@ Del + Send . %1$s @@ -5031,6 +5054,119 @@ Tastatur Send med enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Beskeder @@ -5115,6 +5251,7 @@ Mediekvalitet + Kvalitet af sendte mediefiler Afsendelse af mediefiler i høj kvalitet bruger mere data. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Dit sikkerhedskopieringsabonnement er udløbet - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Dit abonnement for sikkerhedskopiering kunne ikke fornyes med din nuværende betalingsmetode. Om %1$d dag slettes alle medier, der er gemt i din sikkerhedskopi. + Dit abonnement for sikkerhedskopiering kunne ikke fornyes med din nuværende betalingsmetode. Om %1$d dage slettes alle medier, der er gemt i din sikkerhedskopi. Du kan til enhver tid begynde at betale for sikkerhedskopier igen for at fortsætte med at sikkerhedskopiere alle dine medier. @@ -7257,9 +7394,9 @@ Hvis du vælger \"Spring over\", slettes medierne i sikkerhedskopien inden for %1$d dage. - Your backups subscription failed to renew + Dit sikkerhedskopieringsabonnement kunne ikke fornyes - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Sørg for, at din betalingsmetode er opdateret. Tryk på Administrer abonnement, og tryk på Opdater under Betalingsmetoder. Kunne ikke gennemføre sikkerhedskopieringen @@ -7271,7 +7408,7 @@ Administrer abonnement - Subscribe for %1$s/month + Abonner for %1$s/måned Download medier nu @@ -7306,6 +7443,17 @@ %1$s af %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Lageroptimering kan kun bruges, hvis du betaler for Signal-sikkerhedskopier. Opgrader dit abonnement på sikkerhedskopiering for at begynde at bruge denne funktion. - Subscribe for %1$s/month + Abonner for %1$s/måned - This media is no longer available + Denne mediefil er ikke længere tilgængelig - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Dit nuværende abonnement på Signal-sikkerhedskopiering omfatter medier fra den sidste %1$d dag. Opgrader nu for at begynde at sikkerhedskopiere alle dine medier. + Dit nuværende abonnement på Signal-sikkerhedskopiering omfatter medier fra de sidste %1$d dage. Opgrader nu for at begynde at sikkerhedskopiere alle dine medier. - Subscribe for %1$s/month + Abonner for %1$s/måned Sletning synkroniseres nu på tværs af alle dine enheder @@ -7413,11 +7561,13 @@ Sikkerhedskopieringstype ændret og abonnement annulleret - Abonnement annulleret + Subscription canceled Download fuldført Sikkerhedskopien oprettes i nat. + + Subscription inactive Sikkerhedskopieringsabonnement @@ -7426,8 +7576,12 @@ %1$s/måned Dit sikkerhedskopieringsabonnement er gratis - + Fornyes %1$s + + Expires on %1$s + + Expired on %1$s Sikkerhedskopier din beskedhistorik, så du aldrig mister data, når du får en ny telefon eller geninstallerer Signal. @@ -7472,6 +7626,10 @@ Lav manuel sikkerhedskopi Angiv din enheds pinkode, adgangskode eller dit mønster. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 537a89010d..5855d8f8ce 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -368,6 +368,8 @@ Chats Nachrichten + + Chat types Nachricht %1$s @@ -427,7 +429,7 @@ Video kann nicht heruntergeladen werden. Du musst es erneut verschicken. - Wurde eben bearbeitet + Gerade bearbeitet Bearbeitet %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Du kannst loslegen. Beginne jetzt deine Datensicherung. Je nach Größe deiner Datensicherung könnte diese etwas dauern. Während der Datensicherung kannst du dein Mobiltelefon weiterhin ganz normal nutzen. @@ -1490,7 +1492,7 @@ Zeichne zum Verwischen weiterer Gesichter oder Bereiche - Gedrückt halten für Sprachnachricht, loslassen + Gedrückt halten für Sprachnachricht, loslassen zum Versenden Nachricht bearbeiten @@ -1542,8 +1544,8 @@ Ausgewählte Elemente löschen? - Dies wird die ausgewählte Datei unwiderruflich löschen. Jegliche diesen Elementen zugehörigen Nachrichtentexte werden ebenfalls gelöscht. - Dies wird alle %1$d ausgewählten Dateien unwiderruflich löschen. Jegliche diesen Elementen zugehörigen Nachrichtentexte werden ebenfalls gelöscht. + Dies wird die ausgewählte Datei unwiderruflich löschen. Zugehörige Nachrichtentexte werden ebenfalls gelöscht. + Dies wird alle %1$d ausgewählten Dateien unwiderruflich löschen. Zugehörige Nachrichtentexte werden ebenfalls gelöscht. Löschen Nachrichten werden gelöscht … @@ -1590,7 +1592,7 @@ PIN überprüfen Leg los Neue Gruppe - Einladen + Kontakte einladen Chat-Farben Profilbild @@ -1969,6 +1971,7 @@ +%1$d eingeladen +%1$d eingeladen + %1$d weitere Gruppe %1$d weitere Gruppen @@ -1995,6 +1998,7 @@ Kein Gerät gefunden. Netzwerkfehler. Ungültiger QR-Code. + Es sind bereits zu viele Geräte gekoppelt. Bitte entferne mindestens ein Gerät. Dies ist kein gültiger QR-Code zur Gerätekopplung. Signal-Gerät koppeln? @@ -2017,11 +2021,13 @@ Passphrase übermitteln Passphrase ungültig! Signal entsperren + Signal Android – Sperrbildschirm Karte + Markierung platzieren Adresse übernehmen @@ -2525,6 +2531,7 @@ Signal-Nachricht + Mehr @@ -2556,6 +2563,7 @@ Keine Sticker installiert Hier werden Sticker aus eingehenden Nachrichten angezeigt Unbenannt + Unbekannt @@ -2777,6 +2785,7 @@ Medieninhalte nicht mehr verfügbar. Medieninhalt kann nicht wiedergegeben werden. + Fehler beim Suchen der Nachricht. Keine App zum Teilen dieser Medieninhalte gefunden. Schließen @@ -2848,6 +2857,7 @@ Nachrichten Anrufe + Fehler Datensicherungen Sperrstatus @@ -2857,6 +2867,7 @@ Unbekannt Sprachnachrichten Neuer Kontakt nutzt Signal + Keine Aktivität verfügbar, um die Einstellungen für den Benachrichtigungskanal zu öffnen. Hintergrundverbindung @@ -3641,10 +3652,12 @@ Alle Nachrichtenverläufe werden dauerhaft von allen Geräten gelöscht Dies kann nicht rückgängig gemacht werden. Alle jetzt löschen + Für immer 1 Jahr 6 Monate 30 Tage + Keine %1$s Nachricht @@ -3669,6 +3682,7 @@ Anzeigen Klingelton Schriftgröße für Nachrichten + Priorität Fehlerbehebung bei Benachrichtigungen @@ -3897,6 +3911,7 @@ Scanne den Adress-QR-Code des Empfängers + Anfrage Bezahlen Verfügbarer Kontostand: %1$s @@ -4028,6 +4043,7 @@ Du kannst maximal %1$d Chats anheften + Kontaktbild Archiviert @@ -4036,6 +4052,10 @@ Neuer Chat Kamera öffnen Noch keine Chats.\nLeg los und schreib einer Freundin oder einem Freund. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Chat-Sicherungen Konto übertragen Konto auf ein neues Android-Gerät übertragen + Sicherungspassphrase eingeben Wiederherstellen Import von Datensicherungen neuerer Signal-Versionen nicht möglich @@ -4475,6 +4496,7 @@ Die WLAN-Einstellungen können nicht geöffnet werden. Bitte schalte WLAN manuell ein. + Standortberechtigung gewähren Standortdienste einschalten WLAN einschalten @@ -4728,6 +4750,7 @@ Teilen + Senden , %1$s @@ -5031,6 +5054,119 @@ Tastatur Mit Enter-Taste versenden + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Nachrichten @@ -5115,6 +5251,7 @@ Medienqualität + Medienqualität für Versand Das Senden von Medieninhalten hoher Qualität verbraucht mehr Datenvolumen. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Dein Backup-Abo ist abgelaufen - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Dein Backup-Abo ist abgelaufen, da es mit deiner aktuellen Zahlungsmethode nicht verlängert werden konnte. Nach %1$d Tag werden die Medien in deinem Backup gelöscht. + Dein Backup-Abo ist abgelaufen, da es mit deiner aktuellen Zahlungsmethode nicht verlängert werden konnte. Nach %1$d Tagen werden die Medien in deinem Backup gelöscht. Um weiterhin all deine Medien zu sichern, kannst du jederzeit wieder für die Datensicherungen bezahlen. @@ -7257,9 +7394,9 @@ Wenn du »Überspringen« wählst, werden die Medien in der Datensicherung in %1$d Tagen gelöscht. - Your backups subscription failed to renew + Dein Backup-Abo konnte nicht verlängert werden - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Überprüfe, ob deine Zahlungsmethode auf dem neuesten Stand ist. Tippe auf »Backup-Abo verwalten« und unter Zahlungsmethoden auf »Aktualisieren«. Die Datensicherung konnte nicht abgeschlossen werden @@ -7269,9 +7406,9 @@ Überspringen - Regelmäßige Spende verwalten + Backup-Abo verwalten - Subscribe for %1$s/month + Abonniere für %1$s/Monat Medien jetzt herunterladen @@ -7306,6 +7443,17 @@ %1$s von %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7355,22 +7503,22 @@ - Aktualisiere deine Spendeneinstellung, um diese Funktion zu aktivieren + Upgraden um diese Funktion zu aktivieren - Die Speicheroptimierung kann nur verwendet werden, wenn du für deine Datensicherung bei Signal spendest. Aktualisiere, wie du deine Daten sichern möchtest, um diese Funktion zu nutzen. + Die Speicheroptimierung kann nur mit der kostenpflichtigen Option für Signal Backups genutzt werden. Upgrade deine Backup-Option, um diese Funktion zu nutzen. - Subscribe for %1$s/month + Abonniere für %1$s/Monat - This media is no longer available + Diese Medien sind nicht länger verfügbar - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Dein aktuelles Signal Backup-Abo umfasst die aktuellsten Medien des letzten Tages. Führe jetzt ein Upgrade durch, um mit der Sicherung alle Medien zu beginnen. + Dein aktuelles Signal Backup-Abo umfasst die aktuellsten Medien der letzten %1$d Tage. Führe jetzt ein Upgrade durch, um mit der Sicherung aller Medien zu beginnen. - Subscribe for %1$s/month + Abonniere für %1$s/Monat Der Löschvorgang wird jetzt auf all deinen Geräten synchronisiert @@ -7413,11 +7561,13 @@ Art der Datensicherung geändert und regelmäßige Spende storniert - Regelmäßige Spende gekündigt + Subscription canceled Download abgeschlossen Datensicherung wird über Nacht erstellt. + + Subscription inactive Datensicherungsplan @@ -7426,8 +7576,12 @@ %1$s/Monat Dein Datensicherungsplan ist kostenlos - + Verlängert sich am %1$s + + Expires on %1$s + + Expired on %1$s Sichere deinen Nachrichtenverlauf und verliere keine alten Nachrichten, wenn du ein neues Mobiltelefon hast bzw. Signal erneut installierst. @@ -7439,7 +7593,7 @@ Verwalten oder abbrechen - Aktualisieren + Upgraden %1$d/%2$d @@ -7472,6 +7626,10 @@ Daten manuell sichern Bitte gib deine Geräte-Pin, dein Passwort oder dein Sperrmuster ein. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 291ca008a5..941f2e1a3c 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -368,6 +368,8 @@ Συνομιλίες Μηνύματα + + Chat types Μήνυμα %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Είσαι εντάξει. Ξεκίνα τη δημιουργία αντιγράφων ασφαλείας τώρα. Ανάλογα με το μέγεθος του αντιγράφου ασφαλείας σου, αυτό μπορεί να διαρκέσει πολύ. Μπορείς να χρησιμοποιείς το τηλέφωνό σου όπως συνήθως, κατά τη διάρκεια της δημιουργίας αντιγράφων ασφαλείας. @@ -1969,6 +1971,7 @@ +%1$d προσκεκλημένος +%1$d προσκεκλημένοι + %1$d επιπλέον ομάδα %1$d επιπλέον ομάδες @@ -1995,6 +1998,7 @@ Δεν βρέθηκε συσκευή. Σφάλμα δικτύου. Μη έγκυρος QR κωδικός. + Δυστυχώς έχεις πάρα πολλές συσκευές συνδεμένες, προσπάθησε να διαγράψεις κάποιες Συγγνώμη, αυτός δεν είναι ένας έγκυρος κωδικός QR για σύνδεση συσκευών. Σύνδεση κάποιας συσκευής Signal; @@ -2017,11 +2021,13 @@ Καταχώρηση συνθηματικού Μη έγκυρο συνθηματικό! Ξεκλείδωσε το Signal + Signal Android - Κλείδωμα οθόνης Χάρτης + Καρφίτσωμα τοποθεσίας Αποδοχή διεύθυνσης @@ -2525,6 +2531,7 @@ Μήνυμα Signal + Περισσότερα @@ -2556,6 +2563,7 @@ Δεν έχουν εγκατασταθεί αυτοκόλλητα Αυτοκόλλητα από εισερχόμενα μηνύματα θα εμφανίζονται εδώ Χωρίς τίτλο + Άγνωστο @@ -2777,6 +2785,7 @@ Το πολυμέσο δεν είναι πια διαθέσιμο. Μη δυνατότητα αναπαραγωγής πολυμέσων. + Σφάλμα κατά την εύρεση του μηνύματος. Δεν βρέθηκε εφαρμογή που να μπορεί να διαμοιραστεί αυτό το πολυμέσο. Κλείσιμο @@ -2848,6 +2857,7 @@ Μηνύματα Κλήσεις + Αποτυχίες Αντίγραφα ασφαλείας Κατάσταση κλειδώματος @@ -2857,6 +2867,7 @@ Άγνωστο Ηχητικές σημειώσεις Επαφή που εγκατέστησε το Signal + Δεν υπάρχει διαθέσιμη δραστηριότητα για το άνοιγμα ρυθμίσεων του καναλιού ειδοποίησης. Σύνδεση στο υπόβαθρο @@ -3641,10 +3652,12 @@ Όλο το ιστορικό των μηνυμάτων θα αφαιρεθεί μόνιμα από όλες τις συσκευές. Αυτή η ενέργεια δεν μπορεί να αναιρεθεί. Διαγραφή όλων τώρα + Για πάντα 1 έτος 6 μήνες 30 ημέρες + Κανένα %1$s μήνυμα @@ -3669,6 +3682,7 @@ Εμφάνιση Ήχος κλήσης Μέγεθος γραμματοσειράς μηνύματος + Προτεραιότητα Ειδοποιήσεις αντιμετώπισης προβλημάτων @@ -3897,6 +3911,7 @@ Σαρώστε τον κωδικό QR της διεύθυνσης του δικαιούχου πληρωμής + Αίτημα Πληρωμή Εναπομείναν υπόλοιπο: %1$s @@ -4028,6 +4043,7 @@ Μπορείς να καρφιτσώσεις μέχρι %1$d συνομιλίες + Φωτογραφία επαφής Αρχειοθετημένα @@ -4036,6 +4052,10 @@ Νέα συνομιλία Άνοιγμα κάμερας Δεν υπάρχουν ακόμα συνομιλίες.\nΞεκίνα στέλνοντας μήνυμα σε κάποιον/α φίλο/η σου. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Αντίγραφα ασφαλείας συνομιλιών Μεταφορά λογαριασμού Μεταφορά λογαριασμού σε νέα συσκευή Android + Εισαγωγή συνθηματικό αντίγραφου ασφαλείας Επαναφορά Δεν εισαγάγουμε backup από νεότερη έκδοση Signal @@ -4475,6 +4496,7 @@ Δεν μπορέσαμε να ανοίξουμε τις Ρυθμίσεις Wi-Fi. Παρακαλώ ενεργοποίησε το Wi-Fi χειροκίνητα. + Παραχώρηση άδειας τοποθεσίας Ενεργοποίηση υπηρεσιών τοποθεσίας Ενεργοποίηση Wi-Fi @@ -4728,6 +4750,7 @@ Μοιράσου + Αποστολή , %1$s @@ -5031,6 +5054,119 @@ Πληκτρολόγιο Αποστολή με enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Μηνύματα @@ -5115,6 +5251,7 @@ Ποιότητα πολυμέσων + Ποιότητα απεσταλμένων πολυμέσων Η αποστολή πολυμέσων υψηλής ποιότητας θα καταναλώνει περισσότερα δεδομένα. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Η συνδρομή σου για δημιουργία αντιγράφων ασφαλείας έληξε - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Το πρόγραμμα δημιουργίας αντιγράφων ασφαλείας έληξε επειδή δεν ήταν δυνατή η ανανέωσή του με την τρέχουσα μέθοδο πληρωμής. Μετά από %1$d ημέρα, τα πολυμέσα στα αντίγραφα ασφαλείας σου θα διαγραφούν. + Το πρόγραμμα δημιουργίας αντιγράφων ασφαλείας έληξε επειδή δεν ήταν δυνατή η ανανέωσή του με την τρέχουσα μέθοδο πληρωμής. Μετά από %1$d ημέρες, τα πολυμέσα στα αντίγραφα ασφαλείας σου θα διαγραφούν. Μπορείς να αρχίσεις να πληρώνεις ξανά για τα αντίγραφα ασφαλείας ανά πάσα στιγμή για να συνεχίσεις να δημιουργείς αντίγραφα ασφαλείας για όλα τα πολυμέσα σου. @@ -7257,9 +7394,9 @@ Αν επιλέξεις «Παράλειψη», τα πολυμέσα στο αντίγραφο ασφαλείας σου θα διαγραφούν σε %1$d ημέρες. - Your backups subscription failed to renew + Η συνδρομή σου για δημιουργία αντιγράφων ασφαλείας δεν ανανεώθηκε - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Επιβεβαίωσε ότι η μέθοδος πληρωμής είναι επικαιροποιημένη. Πάτησε Διαχείριση συνδρομής και στην ενότητα Τρόποι πληρωμής πάτησε Ενημέρωση. Δεν ήταν δυνατή η ολοκλήρωση δημιουργίας αντιγράφων ασφαλείας @@ -7271,7 +7408,7 @@ Διαχείριση συνδρομής - Subscribe for %1$s/month + Εγγράψου για %1$s/μήνα Λήψη πολυμέσων τώρα @@ -7306,6 +7443,17 @@ %1$s από %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Η βελτιστοποίηση αποθηκευτικού χώρου μπορεί να χρησιμοποιηθεί μόνο με την πληρωμένη βαθμίδα του Signal Backups. Αναβάθμισε το πρόγραμμα δημιουργίας αντιγράφων ασφαλείας σου για να αρχίσεις να χρησιμοποιείς αυτήν τη λειτουργία. - Subscribe for %1$s/month + Εγγράψου για %1$s/μήνα - This media is no longer available + Το πολυμέσο δεν είναι πια διαθέσιμο - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Το τρέχον πρόγραμμα δημιουργίας αντιγράφων ασφαλείας Signal περιλαμβάνει την πιο πρόσφατη %1$d ημέρα των πολυμέσων σου. Για να ξεκινήσεις τη δημιουργία αντιγράφων ασφαλείας όλων των πολυμέσων σου, κάνε αναβάθμιση τώρα. + Το τρέχον πρόγραμμα δημιουργίας αντιγράφων ασφαλείας Signal περιλαμβάνει τις πιο πρόσφατες %1$d ημέρες των πολυμέσων σου. Για να ξεκινήσεις τη δημιουργία αντιγράφων ασφαλείας όλων των πολυμέσων σου, κάνε αναβάθμιση τώρα. - Subscribe for %1$s/month + Εγγράψου για %1$s/μήνα Η διαγραφή έχει συγχρονιστεί με όλες τις συσκευές σου @@ -7413,11 +7561,13 @@ Ο τύπος αντιγράφου ασφαλείας άλλαξε και η συνδρομή ακυρώθηκε - Η συνδρομή ακυρώθηκε + Subscription canceled Η λήψη ολοκληρώθηκε Το αντίγραφο ασφαλείας θα δημιουργηθεί κατά τη διάρκεια της νύχτας. + + Subscription inactive Πρόγραμμα αντιγράφων ασφαλείας @@ -7426,8 +7576,12 @@ %1$s/μήνα Το πρόγραμμα αντιγράφων σαφαλείας σου είναι δωρεάν - + Ανανεώνεται %1$s + + Expires on %1$s + + Expired on %1$s Δημιούργησε αντίγραφα ασφαλείας του ιστορικού μηνυμάτων σου, ώστε να μην χάνεις ποτέ δεδομένα αν αγοράσεις νέο τηλέφωνο ή επανεγκαταστήσεις το Signal. @@ -7472,6 +7626,10 @@ Δημιουργία αντιγράφων ασφαλείας χειροκίνητα Γράψε τον κωδικό PIN, τον κωδικό πρόσβασης ή το μοτίβο της συσκευής σου. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index f3bd9f8884..72528c2933 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -145,7 +145,7 @@ - Puedes tener nuevos mensajes + Es posible que tengas nuevos mensajes Personas bloqueadas @@ -368,6 +368,8 @@ Chats Mensajes + + Chat types Enviar mensaje a %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + ¡Todo listo! Ya puedes iniciar tu copia de seguridad. Dependiendo del tamaño de tu copia de seguridad, este proceso puede llevar bastante tiempo. Mientras se realiza la copia de seguridad, podrás seguir usando tu teléfono como de costumbre. @@ -1969,6 +1971,7 @@ +%1$d invitación +%1$d invitaciones + %1$d grupo más %1$d grupos más @@ -1995,6 +1998,7 @@ No se ha encontrado ningún dispositivo. Error de red. Código QR no válido. + Tienes demasiados dispositivos vinculados. Elimina alguno. Este código QR no es válido. ¿Vincular un dispositivo a tu cuenta de Signal? @@ -2017,11 +2021,13 @@ Enviar frase de contraseña Frase de contraseña no válida. Desbloquear Signal + Signal Android: Pantalla de bloqueo Mapa + Situar marcador Aceptar dirección @@ -2525,6 +2531,7 @@ Mensaje de Signal + Más @@ -2556,6 +2563,7 @@ No hay ningún sticker instalado Los stickers que recibas en mensajes aparecerán aquí Sin nombre + Desconocido @@ -2777,6 +2785,7 @@ El archivo multimedia ya no está disponible. No se ha podido reproducir el archivo. + Error al encontrar el mensaje. No se puede encontrar una aplicación para compartir este archivo. Cerrar @@ -2848,6 +2857,7 @@ Mensajes Llamadas + Fallos Copias de seguridad Estado de bloqueo @@ -2857,6 +2867,7 @@ Desconocido Notas de voz Alguien comienza a usar Signal + No hay actividad disponible para abrir los ajustes del canal de notificaciones. Conexión en segundo plano @@ -3298,7 +3309,7 @@ Fallo en la entrega - No se ha podido recibir un mensaje, sticker, reacción o notificación de lectura de %1$s. Puede haberlo enviado en un chat privado o en un grupo común. + No se ha podido recibir un mensaje, sticker, reacción o confirmación de lectura que %1$s te ha enviado directamente o en un chat grupal en común. No se ha podido recibir un mensaje, sticker, reacción o notificación de lectura de %1$s. @@ -3641,10 +3652,12 @@ El historial completo de mensajes se eliminará de forma permanente de todos tus dispositivos. Esta acción no se puede deshacer. Borrar todos ahora + Para siempre 1 año 6 meses 30 días + Ninguna %1$s mensaje @@ -3669,6 +3682,7 @@ Mostrar Tono de llamada Tamaño de fuente de los mensajes + Prioridad Solución de problemas con las notificaciones @@ -3897,6 +3911,7 @@ Escanea el código QR de la persona que recibirá el pago + Solicitar Pagar Saldo disponible: %1$s @@ -4028,6 +4043,7 @@ Puedes fijar hasta %1$d chats destacados + Foto de contacto Archivados @@ -4036,6 +4052,10 @@ Nuevo chat Abrir cámara Todavía no hay chats.\nComienza a chatear con tus amistades. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Copias de seguridad de los chats Transferir cuenta Transferir cuenta a un dispositivo Android nuevo + Introducir contraseña de la copia de seguridad Restaurar No se pueden importar nuevas copias de seguridad @@ -4475,6 +4496,7 @@ No se han podido abrir los ajustes de Wi-Fi. Activa manualmente el Wi-Fi. + Permitir acceso a la ubicación Activar servicios de ubicación Activar Wi-Fi @@ -4728,6 +4750,7 @@ Compartir + Enviar , %1$s @@ -4969,7 +4992,7 @@ Generando informe… - Tu informe solo se genera en el momento de la exportación y Signal no lo almacena en tu dispositivo. + Tu informe solo se genera en el momento en que se exporta y Signal no lo almacena en tu dispositivo. Puedes cambiar tu número de teléfono a uno nuevo. Este cambio es irreversible.\n Antes de continuar, comprueba que tu número nuevo puede recibir SMS o llamadas. @@ -5031,6 +5054,119 @@ Teclado Enviar con Intro + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Mensajes @@ -5115,6 +5251,7 @@ Calidad de fotos y vídeos + Calidad de fotos y vídeos enviados Si seleccionas la opción de alta calidad, se usarán más datos. @@ -5517,7 +5654,7 @@ Mostrar en mi perfil Insignia a mostrar Continuar - Si tienes más de una insignia, puedes seleccionar cuál mostrar en tu perfil a otras personas. + Si tienes más de una insignia, puedes seleccionar cuál quieres que otras personas vean en tu perfil. Consigue insignias para tu perfil al ayudar a Signal. Signal es una organización sin ánimo de lucro, sin anuncios ni inversores. Nuestra misión se sostiene únicamente gracias al apoyo de personas como tú. @@ -5700,11 +5837,11 @@ El número CVC de tu tarjeta es incorrecto. Actualízalo en Google Pay e inténtalo de nuevo. - Tu tarjeta no dispone de fondos suficientes para completar esta compra. Inténtalo con otro método de pago. + Tu tarjeta no dispone de fondos suficientes para completar este pago. Inténtalo con otro método de pago. - El mes de vencimiento de tu método de pago no es correcto. Actualízalo en Google Pay e inténtalo de nuevo. + El mes de vencimiento de tu método de pago es incorrecto. Actualízalo en Google Pay e inténtalo de nuevo. - El año de vencimiento de tu método de pago no es correcto. Actualízalo en Google Pay e inténtalo de nuevo. + El año de vencimiento de tu método de pago es incorrecto. Actualízalo en Google Pay e inténtalo de nuevo. Intenta completar la donación de nuevo o contacta a tu banco para más información. @@ -5720,15 +5857,15 @@ El número CVC de tu tarjeta es incorrecto. Comprueba que los datos de tu tarjeta son correctos e inténtalo de nuevo. - El mes de vencimiento de tu tarjeta no es correcto. Comprueba que los datos de tu tarjeta son correctos e inténtalo de nuevo. + El mes de vencimiento de tu tarjeta es incorrecto. Comprueba que los datos de tu tarjeta son correctos e inténtalo de nuevo. - El año de vencimiento de tu tarjeta no es correcto. Comprueba que los datos de tu tarjeta son correctos e inténtalo de nuevo. + El año de vencimiento de tu tarjeta es incorrecto. Comprueba que los datos de tu tarjeta son correctos e inténtalo de nuevo. - Tu número de tarjeta no es correcto. Comprueba que los datos de tu tarjeta son correctos e inténtalo de nuevo. + Tu número de tarjeta es incorrecto. Comprueba que los datos de tu tarjeta son correctos e inténtalo de nuevo. - La cuenta bancaria proporcionada no tiene fondos suficientes para completar esta compra. Vuelve a intentarlo o contacta con tu banco para obtener más información. + La cuenta bancaria proporcionada no tiene fondos suficientes para completar este pago. Vuelve a intentarlo o contacta con tu banco para obtener más información. Esta donación fue revocada por el titular de la cuenta y no pudo procesarse. No se te ha cobrado. @@ -6621,7 +6758,7 @@ Correo - ¿Dónde encuentro los datos bancarios? + ¿Dónde encuentro mis datos bancarios? Donar %1$s/mes @@ -6695,7 +6832,7 @@ Donación completada - Se ha recibido tu transferencia bancaria. Puedes añadir esta insignia en tu perfil para mostrar que apoyas a Signal. + Hemos recibido tu transferencia bancaria. Puedes añadir esta insignia a tu perfil para mostrar que apoyas a Signal. Hecho @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Tu suscripción al plan de copias de seguridad ha caducado - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Tu plan de copia de seguridad ha caducado porque no se ha podido renovar con tu método de pago actual. Transcurrido %1$d día, se eliminarán los archivos multimedia de tu copia de seguridad. + Tu plan de copia de seguridad ha caducado porque no se ha podido renovar con tu método de pago actual. Transcurridos %1$d días, se eliminarán los archivos multimedia de tu copia de seguridad. Puedes volver a pagar por las copias de seguridad en cualquier momento para seguir haciendo copias de todos tus archivos multimedia. @@ -7257,9 +7394,9 @@ Si eliges \"Omitir\", los archivos multimedia de tu copia de seguridad se eliminarán en %1$d días. - Your backups subscription failed to renew + No se ha renovar tu suscripción al plan de copias de seguridad - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Asegúrate de que tu método de pago esté actualizado. Toca \"Gestionar suscripción\" y, en Métodos de pago, selecciona \"Actualizar\". Copia de seguridad incompleta @@ -7271,7 +7408,7 @@ Gestionar suscripción - Subscribe for %1$s/month + Suscríbete por %1$s/mes Descargar archivos @@ -7306,6 +7443,17 @@ %1$s de %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ La optimización de almacenamiento solo se puede utilizar con el nivel de pago de las copias de seguridad de Signal. Actualiza tu plan de copias de seguridad para empezar a usar esta función. - Subscribe for %1$s/month + Suscríbete por %1$s/mes - This media is no longer available + Este archivo ya no está disponible - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Tu plan de copia de seguridad actual de Signal incluye tu último día de archivos multimedia. Para comenzar a hacer una copia de seguridad de todos tus archivos, actualiza tu suscripción ahora. + Tu plan de copia de seguridad actual de Signal incluye tus últimos %1$d días de archivos multimedia. Para comenzar a hacer una copia de seguridad de todos tus archivos, actualiza tu suscripción ahora. - Subscribe for %1$s/month + Suscríbete por %1$s/mes Ahora, la eliminación de mensajes se sincroniza en todos tus dispositivos @@ -7413,11 +7561,13 @@ Se ha cambiado el tipo de copia de seguridad y se ha cancelado tu suscripción - Suscripción cancelada + Subscription canceled Descarga completa La copia de seguridad se creará durante la noche. + + Subscription inactive Plan de copias de seguridad @@ -7426,8 +7576,12 @@ %1$s/mes Tu plan de copias de seguridad es gratis - + Se renueva el %1$s + + Expires on %1$s + + Expired on %1$s Haz una copia de seguridad de tu historial de mensajes para no perder ningún dato cuando compras un teléfono nuevo o reinstalas Signal. @@ -7472,6 +7626,10 @@ Copia de seguridad manual Introduce el PIN, la contraseña o el patrón de tu dispositivo. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 992fff3232..59e256b384 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -368,6 +368,8 @@ Vestlused Sõnumid + + Chat types Sõnum %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Ongi valmis. Alusta kohe varundamisega. Olenevalt varukoopia suurusest võib selleks kuluda palju aega. Varundamise ajal saad oma telefoni tavapäraselt kasutada. @@ -1969,6 +1971,7 @@ +%1$d kutsutud +%1$d kutsutud + %1$d lisagrupp %1$d lisagrupp @@ -1995,6 +1998,7 @@ Seadet ei leitud. Võrgu viga. Sobimatu QR-kood. + Vabandust, sul on juba liiga palju seadmeid lingitud, proovi mõned eemaldada Vabandust, see ei ole sobiv seadme linkimise QR-kood. Lingid Signali seadme? @@ -2017,11 +2021,13 @@ Saada salasõna Sobimatu salasõna! Lukusta Signal lahti + Signal Android: ekraanilukk Kaart + Kukuta nööpnõel Kinnita aadress @@ -2525,6 +2531,7 @@ Signali sõnum + Rohkem @@ -2556,6 +2563,7 @@ Kleepse pole paigaldatud Kleepsud sissetulevatelt sõnumitelt kuvatakse siin Nimetu + Tundmatu @@ -2777,6 +2785,7 @@ Meedia ei ole enam saadaval. Meediat ei saa esitada. + Viga sõnumi leidmisel. Ei leia rakendust, mis oleks võimeline seda meediafaili jagama. Sulge @@ -2848,6 +2857,7 @@ Sõnumid Kõned + Ebaõnnestumised Varukoopiad Luku olek @@ -2857,6 +2867,7 @@ Tundmatu Häälmärkmed Kontakt liitus Signaliga + Teavituste kanali sätete avamiseks pole tegevusi. Taustaühendus @@ -3641,10 +3652,12 @@ Kogu sõnumiajalugu kustutatakse püsivalt. Seda toimingut ei saa tagasi võtta. Kustuta kõik kohe + Igaveseks 1 aasta 6 kuud 30 päeva + Puudub %1$s sõnum @@ -3669,6 +3682,7 @@ Kuva Helin Sõnumi fondisuurus + Prioriteet Teavituste tõrkeotsing @@ -3897,6 +3911,7 @@ Sisesta makse saaja QR-koodi aadress + Taotlus Maksa Saadavalolev saldo: %1$s @@ -4028,6 +4043,7 @@ Sa saad kinnitada kuni %1$d vestlust + Kontakti foto pilt Arhiveeritud @@ -4036,6 +4052,10 @@ Uus vestlus Ava kaamera Vestlused puuduvad.\nTee algust ja saada sõbrale sõnum. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Vestluste varukoopiad Kanna konto üle Kanna konto üle uude Android-seadmesse + Sisesta varukoopia salasõna Taasta Uuematest Signali versioonidest ei saa varukoopiaid importida @@ -4475,6 +4496,7 @@ WiFi sätete avamine ei õnnestunud. Palun lülita WiFi käsitsi sisse. + Luba juurdepääs asukohale Lülita sisse asukohateenused Lülita Wi-Fi sisse @@ -4728,6 +4750,7 @@ Jaga + Saada , %1$s @@ -5031,6 +5054,119 @@ Klaviatuur Saada Enter-klahviga + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Sõnumid @@ -5115,6 +5251,7 @@ Meedia kvaliteet + Saadetud meedia kvaliteet Kõrge kvaliteediga meedia saatmine kasutab rohkem andmesidet. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Sinu varundamiste tellimus lõppes - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Sinu varundamise plaan on aegunud, sest me ei saanud seda su praeguse maksemeetodiga uuendada. %1$d päeva pärast varukoopias olev meedia kustutatakse. + Sinu varundamise plaan on aegunud, sest me ei saanud seda su praeguse maksemeetodiga uuendada. %1$d päeva pärast varukoopias olev meedia kustutatakse. Selleks, et oma meedia varundamist jätkata, saad igal ajal uuesti varundamise eest tasumist alustada. @@ -7257,9 +7394,9 @@ Kui valid „Jäta vahele“, kustutatakse su varukoopias olev meedia %1$d päeva pärast. - Your backups subscription failed to renew + Sinu varukoopiate tellimust ei saanud uuendada - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Palun veendu, et sinu maksemeetod on ajakohane. Toksa Halda tellimust ning seejärel Maksete all Uuenda. Varundamine ei õnnestunud @@ -7271,7 +7408,7 @@ Tellimuse haldamine - Subscribe for %1$s/month + Telli hinnaga %1$s kuus Lae meedia alla @@ -7306,6 +7443,17 @@ %1$s / %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Salvestusruumi saab optimeerida ainult Signali tasulise varundamise tasemega. Selle funktsiooni kasutamiseks uuenda oma varundamisplaani. - Subscribe for %1$s/month + Telli hinnaga %1$s kuus - This media is no longer available + See meedia ei ole enam saadaval - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Sinu praegune Signali varundamise plaan sisaldab viimase %1$d päeva meediat. Uuenda tellimust, et alustada kogu meedia varundamist. + Sinu praegune Signali varundamise plaan sisaldab viimase %1$d päeva meediat. Uuenda tellimust, et alustada kogu meedia varundamist. - Subscribe for %1$s/month + Telli hinnaga %1$s kuus Kustutamine on nüüd kõigi su seadmete üleselt sünkroniseeritud @@ -7413,11 +7561,13 @@ Varukoopia tüüpi muudeti ja tellimus tühistati - Tellimus tühistatud + Subscription canceled Allalaadimine on lõpetatud Varukoopia luuakse öösel. + + Subscription inactive Varundamisplaan @@ -7426,8 +7576,12 @@ %1$s/kuu Sul on tasuta varundamisplaan - + Uueneb %1$s + + Expires on %1$s + + Expired on %1$s Varunda oma sõnumiajalugu, et mitte kaotada andmeid, kui telefoni välja vahetad ja Signali uuesti paigaldad. @@ -7472,6 +7626,10 @@ Varunda käsitsi Sisesta oma seadme PIN-kood, salasõna või muster. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index c34f9341bd..a59e8cf8c9 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -368,6 +368,8 @@ Txatak Mezuak + + Chat types Mezu %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Prest! Hasi babeskopia egiten. Babeskopiaren tamainaren arabera, baliteke luze jotzea. Babeskopia sortu bitartean, telefonoa normaltasunez erabil dezakezu. @@ -1969,6 +1971,7 @@ + %1$d gonbidatuta +%1$d gonbidatuta + talde %1$d gehiago %1$d talde gehiago @@ -1995,6 +1998,7 @@ Ez da gailurik aurkitu. Sare errorea. Baliogabeko QR kodea. + Zoritxarrez, gailu gehiegi dauzkazu lotuta, saia zaitez batzuk ezabatzen Barkatu, hau ez da gailua lotzeko baliozko QR kodea. Lotu Signal gailu bat? @@ -2017,11 +2021,13 @@ Bidali pasaesaldia Pasaesaldi baliogabea! Desblokeatu Signal + Signal Android - Blokeatu pantaila Mapa + Baztertu pin-a Onartu helbidea @@ -2525,6 +2531,7 @@ Signal mezua + Gehiago @@ -2556,6 +2563,7 @@ Ez dago eranskailurik instalatuta Jasotako mezuetako eranskailuak hemen agertuko dira Izenbururi gabe + Ezezaguna @@ -2777,6 +2785,7 @@ Medioa jada ez dago eskuragarri. Ezin da erreproduzitu multimedia-edukia. + Errore bat gertatu da mezua bilatzean. Ez da topatu multimedia eduki hau partekatzeko gai den aplikaziorik. Itxi @@ -2848,6 +2857,7 @@ Mezuak Deiak + Hutsegiteak Babeskopiak Blokeo egoera @@ -2857,6 +2867,7 @@ Ezezaguna Ahots Oharrak Kontaktua orain Signalen dago + Ez dago jakinarazpen-kanalaren ezarpenak irekitzeko jarduerarik. Atzeko planoko konexioa @@ -3641,10 +3652,12 @@ Mezuen historia betiko ezabatu da gailu guztietan. Ekintza hau ezin da desegin. Ezabatu dena orain + Betirako Urte 1 6 hilabete 30 egun + Bat ere ez %1$s mezu @@ -3669,6 +3682,7 @@ Erakutsi Doinua Mezuaren letra-tipoaren tamaina + Lehentasuna Konpondu jakinarazpenak @@ -3897,6 +3911,7 @@ Eskaneatu onuradunaren helbidearen QR kodea. + Eskaera Ordaindu Balantze eskuragarria :%1$s @@ -4028,6 +4043,7 @@ Gehienez %1$d txat aingura ditzakezu + Kontaktuaren argazkia Artxibatuta @@ -4036,6 +4052,10 @@ Txat berria Ireki kamera Ez dago txatik.\nBidali mezu bat lagun bati. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Txaten babeskopiak Transferitu kontua Transferitu kontua Android gailu berri batera + Idatzi babeskopiaren pasaesaldia Berreskuratu Ezin dira inportatu Signal bertsio berrien babeskopiak @@ -4475,6 +4496,7 @@ Ezin dira Wi-Fi ezarpenak ireki. Mesedez, aktibatu Wi-Fi eskuz. + Eman kokapen-baimena Aktibatu kokapen zerbitzuak Aktibatu Wi-Fi-a @@ -4728,6 +4750,7 @@ Elkarbanatu + Bidali , %1$s @@ -5031,6 +5054,119 @@ Teklatua Bidali \"Sartu\" tekla sakatzean + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Mezuak @@ -5115,6 +5251,7 @@ Media kalitatea + Bidali media kalitatea Kalitate handiko multimedia bidaltzeak datu gehiago erabiliko ditu. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Babeskopien harpidetza iraungi egin da - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Babeskopien plana iraungi egin da, ezin izan baita berritu oraingo ordainketa-metodoarekin. %1$d egun igarotakoan, babeskopiako multimedia-edukia ezabatu egingo da. + Babeskopien plana iraungi egin da, ezin izan baita berritu oraingo ordainketa-metodoarekin. %1$d egun igarotakoan, babeskopiako multimedia-edukia ezabatu egingo da. Multimedia-edukiaren babeskopiak egiten jarraitzeko, babeskopiak berriro ordaintzen has zaitezke. @@ -7257,9 +7394,9 @@ \"Saltatu\" aukeratzen baduzu, babeskopiako multimedia-edukia %1$d egunen buruan ezabatuko da. - Your backups subscription failed to renew + Ezin izan da berritu babeskopien harpidetza - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Egiaztatu ordainketa-metodoa eguneratuta daukazula. Sakatu \"Kudeatu harpidetza\" eta, \"Ordainketa-metodoak\" atalean, sakatu Eguneratu. Ezin izan da osatu babeskopia @@ -7271,7 +7408,7 @@ Kudeatu harpidetza - Subscribe for %1$s/month + Harpidetu hilean %1$s ordainduta Deskargatu multimedia-edukia @@ -7306,6 +7443,17 @@ %1$s / %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Biltegia optimizatzeko aukera erabiltzeko, Signal-en Babeskopiak eginbidearen ordainpeko mailaren batean egon behar duzu. Eginbide hau erabiltzen hasteko, igo babeskopia-plana mailaz. - Subscribe for %1$s/month + Harpidetu hilean %1$s ordainduta - This media is no longer available + Multimedia-eduki hau jada ez dago erabilgarri - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Zure Signal-eko babeskopia-planak %1$d eguneko multimedia-eduki berriena hartzen du barnean. Multimedia-eduki guztiaren babeskopia egiten hasteko, igo mailaz. + Zure Signal-eko babeskopia-planak %1$d eguneko multimedia-eduki berriena hartzen du barnean. Multimedia-eduki guztiaren babeskopia egiten hasteko, igo mailaz. - Subscribe for %1$s/month + Harpidetu hilean %1$s ordainduta Orain, ezabatzeko ekintza gailu guztietan sinkronizatzen da @@ -7413,11 +7561,13 @@ Babeskopia-mota aldatu da eta harpidetza bertan behera utzi da - Harpidetza bertan behera utzi da + Subscription canceled Deskarga osatuta Babeskopia gauez sortuko da. + + Subscription inactive Babeskopia-plana @@ -7426,8 +7576,12 @@ %1$s/hilabete Zure babeskopia-plana doakoa da - + Berritze-data: %1$s + + Expires on %1$s + + Expired on %1$s Egin mezu-historiaren babeskopia, gailuz aldatzean edo Signal berriro instalatzean ez dezazun daturik galdu. @@ -7472,6 +7626,10 @@ Egin babeskopiak eskuz Sartu gailuaren PIN, pasahitz edo patroia. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 3b7ed1c366..b6d34e7b90 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -368,6 +368,8 @@ گفتگوها پیام‌ها + + Chat types ارسال پیام به %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + همه چیز آماده است. اکنون پشتیبان‌گیری را شروع کنید. بسته به اندازه پشتیبان، این امر ممکن است زمان زیادی طول بکشد. هنگام پشتیبان‌گیری، می‌توانید مثل همیشه از تلفن خود استفاده کنید. @@ -1969,6 +1971,7 @@ +%1$d دعوت شدند +%1$d دعوت شدند + %1$d گروه دیگر %1$d گروه دیگر @@ -1995,6 +1998,7 @@ هیچ دستگاهی یافت نشد. خطای شبکه. کد QR نامعتبر است. + پوزش، شما دارای دستگاه‌های پیوند داده شدهٔ زیادی هستید، سعی کنید تعدادی از آن‌ها را حذف کنید متاسفانه این کد QR برای اتصال دستگاه معتبر نيست. پیوند یک دستگاه سیگنال؟ @@ -2017,11 +2021,13 @@ ارسال گذرواژه گذرواژه معتبر نیست! باز کردن قفل سیگنال + سیگنال اندروید - صفحهٔ قفل نقشه + قرار دادن نشانگر پذیرفتن نشانی @@ -2525,6 +2531,7 @@ پیام سیگنال + بیشتر @@ -2556,6 +2563,7 @@ هیچ استیکری نصب نشده است استیکرهایی که از پیام‌های ورودی دریافت می‌شوند اینجا نمایش داده خواهند شد بدون نام + ناشناخته @@ -2777,6 +2785,7 @@ رسانه دیگر در دسترس نیست. پخش رسانه امکان‌پذیر نیست. + خطا در یافتن پیام. برنامه‌ای برای اشتراک‌گذاری این رسانه پیدا نشد. بستن @@ -2848,6 +2857,7 @@ پیام‌ها تماس‌ها + خرابی‌ها پشتیبان‌ها وضعیت قفل @@ -2857,6 +2867,7 @@ ناشناخته یادداشت‌های صوتی مخاطب به سیگنال پیوست + هیچ فعالیتی برای باز کردن تنظیمات کانال اعلان‌ها در دسترس نیست. اتصال پس‌زمینه @@ -3641,10 +3652,12 @@ کل تاریخچه پیام برای همیشه از همه دستگاه‌ها حذف خواهد شد. این کار بازگشت‌پذیر نیست. پاک کردن همه، اکنون + برای همیشه ۱ سال ۶ ماه ۳۰ روز + هیچ‌کدام %1$s پیام @@ -3669,6 +3682,7 @@ نمایش صدای زنگ اندازهٔ قلم پیام + اولویت اعلان‌های عیب‌یابی @@ -3897,6 +3911,7 @@ کد QR نشانی پرداخت شونده را اسکن کنید + درخواست پرداخت موجودی قابل برداشت: %1$s @@ -4028,6 +4043,7 @@ فقط تا %1$d مکالمه را می‌توانید سنجاق کنید + تصویر مخاطب بایگانی شده @@ -4036,6 +4052,10 @@ گفتگوی جدید باز کردن دوربین هنوز هیچ گفتگویی وجود ندارد.\n با پیام دادن به یک دوست شروع کنید. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ پشتیبان‌های گفتگو انتقال حساب کاربری انتقال حساب کاربری به یک دستگاه اندروید‌ی جدید + وارد کردن گذرواژهٔ پشتیبان بازگردانی امکان وارد کردن پشتیبان از نسخه‌های جدیدتر سیگنال نیست @@ -4475,6 +4496,7 @@ باز کردن تنظیمات Wi-Fi ممکن نیست. لطفاً Wi-Fi را به صورت دستی روشن کنید. + اعطای مجوز مکان سرویس‌های مکان را روشن کنید روشن کردن Wi-Fi @@ -4728,6 +4750,7 @@ اشتراک‌گذاری + ارسال ، %1$s @@ -5031,6 +5054,119 @@ صفحه‌کلید ارسال با enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done پیام‌ها @@ -5115,6 +5251,7 @@ کیفیت رسانه + کیفیت ارسال رسانه ارسال رسانه با کیفیت بالا از داده‌های بیشتری استفاده خواهد کرد. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + اشتراک نسخه پشتیبان شما منقضی شده است - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + طرح پشتیبان شما منقضی شده است زیرا با روش پرداخت فعلی‌تان قابل تمدید نیست. پس از %1$d روز، رسانه موجود در نسخه پشتیبان شما حذف خواهد شد. + طرح پشتیبان شما منقضی شده است زیرا با روش پرداخت فعلی شما قابل تمدید نیست. پس از %1$d روز، رسانه موجود در نسخه پشتیبان شما حذف خواهد شد. برای ادامه پشتیبان‌گیری از تمام رسانه‌های خود، می‌توانید هر زمان که خواستید دوباره هزینه پشتیبان‌گیری خود را پرداخت کنید. @@ -7257,9 +7394,9 @@ اگر «رد کردن» را انتخاب کنید، رسانه موجود در نسخه پشتیبان شما ظرف %1$d روز حذف خواهد شد. - Your backups subscription failed to renew + اشتراک نسخه پشتیبان شما تمدید نشد - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + بررسی کنید تا مطمئن شوید که روش پرداخت شما به‌روز است. روی «مدیریت اشتراک» ضربه بزنید و در قسمت «روش‌های پرداخت»، روی «به‌روزرسانی» ضربه بزنید. پشتیبان‌گیری انجام نشد @@ -7271,7 +7408,7 @@ مدیریت اشتراک - Subscribe for %1$s/month + اشتراک به‌قیمت %1$s در ماه اکنون رسانه را دانلود کنید @@ -7306,6 +7443,17 @@ %1$s از %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ بهینه‌سازی فضای ذخیره‌سازی فقط با نسخه پولی پشتیبان‌گیری سیگنال امکان‌پذیر است. برای استفاده از این قابلیت، طرح پشتیبان‌گیری خود را ارتقا دهید. - Subscribe for %1$s/month + اشتراک به‌قیمت %1$s در ماه - This media is no longer available + این رسانه دیگر در دسترس نیست - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + طرح پشتیبان فعلی سیگنال شما شامل رسانه %1$d روز اخیر است. برای شروع پشتیبان‌گیری از همه رسانه‌های خود، همین حالا به‌روزرسانی کنید. + طرح پشتیبان فعلی سیگنال شما شامل رسانه %1$d روز اخیر است. برای شروع پشتیبان‌گیری از همه رسانه‌های خود، همین حالا به‌روزرسانی کنید. - Subscribe for %1$s/month + اشتراک به‌قیمت %1$s در ماه اکنون حذف در همه دستگاه‌های شما همگام‌سازی می‌شود @@ -7413,11 +7561,13 @@ نوع پشتیبان تغییر کرد و اشتراک لغو شد - اشتراک لغو شد + Subscription canceled دانلود کامل شد پشتیبان‌گیری در طول شب انجام می‌شود. + + Subscription inactive طرح پشتیبان @@ -7426,8 +7576,12 @@ %1$s در ماه طرح پشتیبان شما خالی است - + در %1$s تمدید می‌شود + + Expires on %1$s + + Expired on %1$s از تاریخچه پیام خود پشتیبان‌گیری کنید تا بعد از خرید تلفن جدید یا نصب مجدد سیگنال، هرگز اطلاعات خود را از دست ندهید. @@ -7472,6 +7626,10 @@ پشتیبان‌گیری دستی لطفا پین، رمز عبور یا الگوی دستگاه خود را وارد کنید. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index a897973605..b5e5d505b5 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -368,6 +368,8 @@ Keskustelut Viestit + + Chat types Viesti: %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Kaikki on valmista. Aloita varmuuskopiointi nyt. Varmuuskopion koosta riippuen tämä voi kestää pitkään. Voit käyttää puhelinta tavalliseen tapaan varmuuskopioinnin aikana. @@ -1969,6 +1971,7 @@ +%1$d kutsuttu +%1$d kutsuttu + %1$d toinen ryhmä %1$d muuta ryhmää @@ -1995,6 +1998,7 @@ Laitetta ei löytynyt. Verkkovirhe. Virheellinen QR-koodi. + Valitettavasti sinulla on jo liian monta laitetta yhdistettynä. Kokeile poistaa joitakin. Valitettavasti tämä ei ole laitteen yhdistämiseksi tarkoitettu QR-koodi. Yhdistetäänkö Signal-laite? @@ -2017,11 +2021,13 @@ Syötä salalause Salalause ei kelpaa! Avaa Signalin lukitus + Signal Android - Lukitusnäyttö Kartta + Tee karttamerkintä Hyväksy osoite @@ -2525,6 +2531,7 @@ Signal-viesti + Lisää @@ -2556,6 +2563,7 @@ Tarroja ei ole asennettu Vastaanotetut tarrat näytetään tässä Nimetön + Tuntematon @@ -2777,6 +2785,7 @@ Media ei ole enää saatavilla. Mediasisältöä ei voi toistaa. + Virhe etsittäessä viestiä. Mikään sovellus ei tue tämän median jakamista. Sulje @@ -2848,6 +2857,7 @@ Viestit Puhelut + Viat Varmuuskopiot Lukituksen tila @@ -2857,6 +2867,7 @@ Tuntematon Ääniviestit Yhteystieto liittyi Signaliin + Ilmoituskanavan asetuksen avaavaa toimintaa ei ole saatavana. Taustayhteys @@ -3641,10 +3652,12 @@ Koko viestihistoria poistetaan pysyvästi kaikista laitteista. Toimintoa ei voi kumota. Tätä toimintoa ei voi perua. Poista kaikki nyt + Pysyvästi 1 vuosi 6 kuukautta 30 päivää + Ei mitään %1$s viesti @@ -3669,6 +3682,7 @@ Näytä Soittoääni Viestien tekstin koko + Prioriteetti Ilmoitusten vianetsintä @@ -3897,6 +3911,7 @@ Skannaa maksun saajan QR-koodi + Pyyntö Maksa Käytettävissä oleva saldo: %1$s @@ -4028,6 +4043,7 @@ Voit kiinnittää enintään %1$d keskustelua + Yhteystiedon kuva Arkistoitu @@ -4036,6 +4052,10 @@ Uusi keskustelu Avaa kamera Keskusteluita ei vielä ole.\nAloita lähettämällä viesti kaverillesi. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Keskustelujen varmuuskopiot Siirrä tili Siirrä tili uuteen Android-laitteeseen + Syötä varmuuskopion salalause Palauta Varmuuskopiota ei voi tuoda uudemmasta Signal-versiosta @@ -4475,6 +4496,7 @@ Wi-Fi-asetusten avaaminen ei onnistunut. Laita Wi-Fi päälle käsin. + Salli paikannus Laita päälle sijaintipalvelut Laita Wi-Fi päälle @@ -4728,6 +4750,7 @@ Jaa + Lähetä , %1$s @@ -5031,6 +5054,119 @@ Näppäimistö Lähetä enter-painikkeella + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Viestit @@ -5115,6 +5251,7 @@ Median laatu + Lähetettävän median laatu Korkealaatuisen median lähetys kuluttaa enemmän dataa. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Varmuuskopioinnin tilauksesi on vanhentunut - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Varmuuskopiointitilauksesi on vanhentunut, koska sitä ei voitu uusia käytössä olevalla maksutavalla. Varmuuskopiossasi oleva media poistetaan %1$d päivän kuluttua. + Varmuuskopiointitilauksesi on vanhentunut, koska sitä ei voitu uusia käytössä olevalla maksutavalla. Varmuuskopiossasi oleva media poistetaan %1$d päivän kuluttua. Voit jatkaa varmuuskopiopalvelun maksamista uudelleen milloin tahansa jatkaaksesi kaiken mediasi varmuuskopiointia. @@ -7257,9 +7394,9 @@ Jos valitset Ohita, varmuuskopiossasi oleva media poistetaan %1$d päivän kuluttua. - Your backups subscription failed to renew + Varmuuskopiointitilauksesi uusiminen epäonnistui - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Varmista, että maksutapasi on ajan tasalla. Napauta Hallinnoi tilausta ja napauta Päivitä Maksutavat-kohdassa. Varmuuskopiointia ei voitu suorittaa loppuun @@ -7271,7 +7408,7 @@ Hallinnoi tilausta - Subscribe for %1$s/month + Tilaa hintaan %1$s / kk Lataa media nyt @@ -7306,6 +7443,17 @@ %1$s / %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Tallennustilan optimointia voidaan käyttää vain Signalin maksullisen varmuuskopiointitilauksen yhteydessä. Päivitä varmuuskopioinnin tilaus, jotta voit alkaa käyttää tätä ominaisuutta. - Subscribe for %1$s/month + Tilaa hintaan %1$s / kk - This media is no longer available + Media ei ole enää saatavilla - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Signal-varmuuskopioinnin tilauksesi sisältää viimeisen %1$d päivän mediasisällön. Päivitä tilaus, jotta voit aloittaa kaiken mediasisällön varmuuskopioinnin. + Signal-varmuuskopioinnin tilauksesi sisältää viimeisten %1$d päivän mediasisällön. Päivitä tilaus, jotta voit aloittaa kaiken mediasisällön varmuuskopioinnin. - Subscribe for %1$s/month + Tilaa hintaan %1$s / kk Poistaminen synkronoidaan nyt kaikkien laitteidesi välillä @@ -7413,11 +7561,13 @@ Varmuuskopion tyyppi muutettu ja tilaus peruutettu - Tilaus on peruttu + Subscription canceled Lataus valmis Varmuuskopio luodaan yön aikana. + + Subscription inactive Varmuuskopioinnin tilaus @@ -7426,8 +7576,12 @@ %1$s/kk Varmuuskopioinnin tilaus on ilmainen - + Uusiutuu %1$s + + Expires on %1$s + + Expired on %1$s Varmuuskopioi viestihistoriasi, jotta et koskaan menetä tietoja, kun hankit uuden puhelimen tai asennat Signalin uudelleen. @@ -7472,6 +7626,10 @@ Varmuuskopioi manuaalisesti Anna laitteesi PIN-koodi, salasana tai kuvio. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 520c1de1ff..58afed77cf 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -170,7 +170,7 @@ Numéro de carte non valide - Carte expirée + Carte arrivée à expiration CVC trop court @@ -332,7 +332,7 @@ Mettre à jour Ne pas mettre à jour Avertissement - Votre version de Signal est expirée. Vous pouvez afficher l’historique de vos messages, mais vous ne pourrez pas échanger de messages tant que vous n’aurez pas mis Signal à jour. + Votre version de Signal est arrivée à expiration. Vous pouvez toujours afficher l\'historique de vos messages, mais vous ne pouvez pas en échanger. Pour envoyer et recevoir de nouveaux messages, merci de mettre à jour Signal. Navigateur web introuvable. @@ -368,6 +368,8 @@ Conversations Messages + + Chat types Message %1$s @@ -397,7 +399,7 @@ Non envoyé. Appuyer pour afficher des infos. - Envoi partiel. Appuyer pour afficher des infos. + Envoi partiel. Toucher pour afficher plus d\'infos. Non envoyé. %1$s a quitté le groupe. Envoi mis en pause @@ -569,17 +571,17 @@ L’enregistrement des %1$d médias dans l\'espace de stockage permettra à n’importe quelle autre appli de votre appareil d’y accéder.\n\nPoursuivre ? - Erreur d’enregistrement du fichier joint dans l\'espace de stockage ! - Erreur d’enregistrement des fichiers joints dans l\'espace de stockage ! + Impossible d\'enregistrer la pièce jointe dans l\'espace de stockage. + Impossible d\'enregistrer les pièces jointes dans l\'espace de stockage. Impossible d’écrire dans l\'espace de stockage - Enregistrement du fichier joint - Enregistrement de %1$d fichiers joints + Enregistrement de la pièce jointe + Enregistrement de %1$d pièces jointes - Enregistrement du fichier joint dans l\'espace de stockage… - Enregistrement de %1$d fichiers joints dans l\'espace de stockage… + Enregistrement de la pièce jointe dans l\'espace de stockage… + Enregistrement de %1$d pièces jointes dans l\'espace de stockage… En attente… @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + À vos marques… Prêts ? Lancez votre sauvegarde. Selon la taille de la sauvegarde, l’opération peut prendre du temps. Vous pouvez continuer d’utiliser votre téléphone pendant que nous sauvegardons vos données. @@ -1033,7 +1035,7 @@ Cet appareil ne prend pas en charge les services Google Play. Pour désactiver les optimisations système de la batterie qui empêchent Signal de récupérer les messages lorsque l\'application est inactive, appuyez ici. - Votre version de Signal est expirée. Mettez-la à jour maintenant afin d’échanger des messages. + Votre version de Signal est arrivée à expiration. Pour échanger des messages, passez à la nouvelle version. Mettre Signal à jour maintenant @@ -1355,7 +1357,7 @@ Nom de profil Nom d’utilisateur À propos - Échec de définition de l’avatar + Impossible de définir la photo de profil Macarons Lien ou code QR @@ -1547,7 +1549,7 @@ Suppression Suppression des messages… - Récupération des fichiers joints… + Récupération des pièces jointes… Trier par Le plus récent Le plus ancien @@ -1579,9 +1581,9 @@ Envoyé par %1$s - Envoyé par vous + Vous avez envoyé ce média Envoyé par %1$s à %2$s - Envoyé par vous à %1$s + Vous avez envoyé ce média à %1$s Me le rappeler plus tard @@ -1757,9 +1759,9 @@ La description du groupe a changé. - Vous avez changé l’avatar du groupe. - %1$s a changé l’avatar du groupe. - L’avatar du groupe a été changé. + Vous avez changé la photo du groupe. + %1$s a changé photo du groupe. + La photo du groupe a été changée. Vous avez défini l\'autorisation de modifier les informations du groupe sur \"%1$s\". @@ -1969,6 +1971,7 @@ + %1$d invité + %1$d invités + %1$d groupe supplémentaire %1$d groupes supplémentaires @@ -1995,6 +1998,7 @@ Aucun appareil n’a été trouvé. Erreur réseau. Le code QR est invalide + Vous avez déjà associé un trop grand nombre d’appareils. Veuillez en supprimer quelques-uns. Le code QR utilisé pour associer l’appareil n’est pas un code valide. Associer un appareil Signal ? @@ -2017,11 +2021,13 @@ Envoyer la phrase de passe La phrase de passe est erronée. Déverrouiller Signal + Signal pour Android – Écran de verrouillage Carte + Marquer Accepter l’adresse @@ -2525,6 +2531,7 @@ Message Signal + Plus @@ -2556,6 +2563,7 @@ Aucun sticker n’est installé Les stickers des messages reçus s’affichent ici Sans titre + Inconnu @@ -2777,6 +2785,7 @@ Le média n’est plus disponible. Impossible d’ouvrir le fichier. + Le message n’a pas été trouvé. Impossible de trouver une appli qui peut partager ce média. Fermer @@ -2848,6 +2857,7 @@ Messages Appels + Échecs Sauvegardes État de verrouillage @@ -2857,6 +2867,7 @@ Inconnu Notes vocales Un contact a rejoint Signal + Aucune activité n’est disponible pour ouvrir les paramètres du canal de notification. Connexion en arrière-plan @@ -3075,7 +3086,7 @@ Envoyer Rédaction d’un message Afficher/masquer le clavier des émojis - Imagette de fichiers joints + Miniature de la pièce jointe Afficher/masquer le tiroir de l’appareil photo à basse résolution Enregistrer et envoyer un message audio en pièce jointe @@ -3377,7 +3388,7 @@ En attente Envoyé à - Envoyé de + Envoyé par Remis à Lu par N’a pas été envoyé @@ -3641,10 +3652,12 @@ Vous allez définitivement supprimer tout l’historique de vos messages de tous vos appareils. Cette action est irréversible. Tout supprimer maintenant + Pour toujours 1 an 6 mois 30 jours + Aucune %1$s message @@ -3669,6 +3682,7 @@ Afficher Sonnerie Taille de police des messages + Priorité Notifications retardées @@ -3897,6 +3911,7 @@ Lisez le code QR de l’adresse du bénéficiaire + Demande Payer Solde disponible : %1$s @@ -4028,6 +4043,7 @@ Vous ne pouvez épingler plus de %1$d conversations + Photo du contact Archivée @@ -4036,6 +4052,10 @@ Nouvelle conversation Ouvrir l’appareil photo Aucune conversation pour le moment.\nPour commencer, envoyez un message à un ami. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Sauvegardes des conversations Transfert de compte Transférer le compte vers un nouvel appareil Android + Saisissez la phrase de passe de la sauvegarde Restaurer Import des données de versions ultérieures impossible @@ -4475,6 +4496,7 @@ Impossible d’ouvrir les paramètres du Wi-Fi. Veuillez activer le Wi-Fi manuellement. + Accorder l’autorisation pour la localisation Activer les services de localisation Activer le Wi-Fi @@ -4728,6 +4750,7 @@ Partager + Envoyer , %1$s @@ -5031,6 +5054,119 @@ Clavier Touche Entrée pour envoyer + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Messages @@ -5115,6 +5251,7 @@ Qualité des médias + Qualité des médias envoyés Envoyer des médias de haute qualité demande plus de données. @@ -5331,7 +5468,7 @@ - Aperçu de l’avatar + Aperçu de la photo de profil Appareil photo Prendre une photo Choisir une photo @@ -5339,8 +5476,8 @@ Texte Enregistrer - Supprimer l’avatar - Échec d’enregistrement de l’avatar + Supprimer la photo de profil + Impossible d\'enregistrer la photo de profil Aperçu @@ -5565,7 +5702,7 @@ Installez la dernière version de Signal - Cette version de Signal a expiré. Mettez Signal à jour pour continuer à utiliser l’appli. + Cette version de Signal est arrivée à expiration. Pour continuer d\'utiliser l\'appli, passez à la nouvelle version. Mettre à jour @@ -5690,7 +5827,7 @@ Votre carte ne permet pas ce type d’achat. Essayez un autre mode de paiement. - Votre carte est expirée. Mettez à jour votre mode de paiement dans Google Pay, puis réessayez. + Votre carte est arrivée à expiration. Mettez à jour votre mode de paiement dans Google Pay, puis réessayez. Allez sur Google Pay @@ -5716,7 +5853,7 @@ Veuillez vérifier que les informations de votre carte sont correctes puis réessayez. Si le problème persiste, veuillez contacter votre banque. - Votre carte a expiré. Veuillez vérifier que les informations de votre carte sont correctes puis réessayez. + Votre carte est arrivée à expiration. Vérifiez que les informations de votre carte sont à jour, puis réessayez. Le code CVV de votre carte est erroné. Veuillez vérifier que les informations de votre carte sont correctes puis réessayez. @@ -6369,7 +6506,7 @@ %1$d minutes restantes - Expiré + Don arrivé à expiration Appuyez pour avancer @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Expiration de votre abonnement de sauvegarde - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Votre mode de paiement actuel ne nous permet pas de traiter votre paiement et de renouveler votre forfait de sauvegarde. Vous disposez d\'un délai d\'%1$d jour pour récupérer les médias de votre sauvegarde. Passé ce délai, ils seront tous supprimés. + Votre mode de paiement actuel ne nous permet pas de traiter votre paiement et de renouveler votre forfait de sauvegarde. Vous disposez d\'un délai de %1$d jours pour récupérer les médias de votre sauvegarde. Passé ce délai, ils seront tous supprimés. Pour continuer de sauvegarder vos fichiers multimédias, vous pouvez de nouveau souscrire un forfait. @@ -7257,9 +7394,9 @@ Si vous choisissez d’ignorer ce message, les fichiers stockés dans votre sauvegarde seront supprimés d’ici %1$d jours. - Your backups subscription failed to renew + Impossible de renouveler votre abonnement de sauvegarde - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Vérifiez que votre mode de paiement est à jour. Appuyez sur \"Gérer l\'abonnement\", puis sur \"Modes de paiement\" et sur \"Mettre à jour\". Impossible de terminer la sauvegarde @@ -7269,9 +7406,9 @@ Ignorer - Gérer l’abonnement + Gérer l\'abonnement - Subscribe for %1$s/month + S\'abonner pour %1$s/mois Télécharger les médias maintenant @@ -7306,6 +7443,17 @@ %1$s sur %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ L\'optimisation de l\'espace de stockage n\'est disponible qu\'avec la version payante du forfait de sauvegarde Signal. Donnez un coup de pouce à Signal et passez à la version payante pour utiliser cette fonctionnalité. - Subscribe for %1$s/month + S\'abonner pour %1$s/mois - This media is no longer available + Ce média n\'est plus disponible - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Avec votre forfait actuel, seuls vos médias des dernières 24 heures sont sauvegardés. Pour sauvegarder tous vos médias, veuillez mettre à niveau votre abonnement. + Avec votre forfait actuel, seuls vos médias des %1$d derniers jours sont sauvegardés. Pour sauvegarder tous vos médias, veuillez mettre à niveau votre abonnement. - Subscribe for %1$s/month + S\'abonner pour %1$s/mois La suppression des messages est maintenant synchronisée sur tous vos appareils. @@ -7413,11 +7561,13 @@ Type de sauvegarde modifié et abonnement résilié - Abonnement résilié + Subscription canceled Sauvegarde téléchargée Signal créera une sauvegarde cette nuit. + + Subscription inactive Forfait de sauvegarde @@ -7426,8 +7576,12 @@ %1$s/mois Votre forfait de sauvegarde est gratuit - + Prochaine échéance le %1$s + + Expires on %1$s + + Expired on %1$s Sauvegardez l\'historique de vos messages pour conserver toutes vos données – même si vous changez de téléphone ou réinstallez Signal. @@ -7472,6 +7626,10 @@ Sauvegarde manuelle Saisissez le code PIN, mot de passe ou schéma de déverrouillage de votre appareil. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-ga/strings.xml b/app/src/main/res/values-ga/strings.xml index 779264e05a..e7d282d6de 100644 --- a/app/src/main/res/values-ga/strings.xml +++ b/app/src/main/res/values-ga/strings.xml @@ -377,6 +377,8 @@ Comhráite Teachtaireachtaí + + Chat types Teachtaireacht %1$s @@ -876,7 +878,7 @@ - You\'re all set. Start your backup now. + Tá tú ullamh anois. Tosaigh ar do chúltacú anois. Ag brath ar mhéid do chúltaca, d\'fhéadfadh sé seo go leor ama a thógáil. Beidh tú in ann do ghuthán a úsáid mar is gnáth le linn an chúltacaithe. @@ -2152,6 +2154,7 @@ +%1$d a fuair cuireadh +%1$d a fuair cuireadh + %1$d ghrúpa sa bhreis %1$d ghrúpa sa bhreis @@ -2181,6 +2184,7 @@ Níor aimsíodh aon ghléas. Botún líonra. QR code neamhbhailí. + Faraor, tá a thuilleadh gléasanna nascaithe, cuir de le cúpla cinn. Faraor, ní QR code nacs gléis bailí é seo. Nasc gléas Signal? @@ -2206,11 +2210,13 @@ Seol isteach an nath faire Nath faire neamhbhailí! Díghlasáil Signal + Signal Android — Scáileán Glasála Léarscáil + Caith uait an biorán Glac leis an seoladh @@ -2780,6 +2786,7 @@ Teachtaireacht Signal + Tuilleadh @@ -2811,6 +2818,7 @@ Níl aon ghreamáin suiteáilte Taispeánfar greamáin ó theachtaireachtaí isteach anseo Gan teideal + Anaithnid @@ -3035,6 +3043,7 @@ Níl an meán sin ar fáil a thuilleadh. Ní féidir meáin a sheinm. + Earráid leis an teachtaireacht a aimsiú. Ní féidir aip a aimsiú atá in ann an meán seo a chomhroinnt. Dún @@ -3112,6 +3121,7 @@ Teachtaireachtaí Glaonna + Teipeanna Cúltacaithe An chaoi ina bhfuil an glas @@ -3121,6 +3131,7 @@ Anaithnid Glórnótaí Chuaigh an teagmhálaí isteach in Signal + Níl aon ghníomhaíocht ar fáil chun socruithe an chainéil fógraí a oscailt. Nasc cúlra @@ -3944,10 +3955,12 @@ Bainfear an stair teachtaireachtaí go léir ó gach gléas go buan. Ní féidir an gníomh sin a chealú. Scrios iad uile anois + Choíche 1 bhliain amháin 6 mhí 30 lá + Gan Fuaim %1$s teachtaireacht @@ -3975,6 +3988,7 @@ Taispeáin Glaofhuaim Méid chlófhoirne na teachtaireachta + Tosaíocht Fabhtcheartaigh fógraí @@ -4203,6 +4217,7 @@ Scan cód QR seolta an íocaí + Iarratas Íoc Available Balance: %1$s @@ -4337,6 +4352,7 @@ Ní féidir leat ach suas leis an líon seo comhráite a phionnáil: %1$d + Íomha ghrianghraif den teagmhálaí Curtha sa chartlann @@ -4345,6 +4361,10 @@ Comhrá nua Oscail an Grianghrafadán No chats yet.\nGet started by messaging a friend. + + No chats to display + + Folder settings @@ -4601,6 +4621,7 @@ Cúltacaí na gcomhráite Cuntas a Aistriú Aistrigh cuntas chuig gléas nua Android + Cuir isteach frása faire an chúltaca Cuir ar ais Ní féidir cúltaca a iompórtáil ó leaganacha níos nuaí @@ -4808,6 +4829,7 @@ Ní féidir Socruithe Wi-Fi a oscailt. Cas air Wi-Fi de láimh. + Tabhair cead chun do shuíomh a aimsiú Cuir na seirbhísí suímh ar siúl Cuir Wi-Fi ar siúl @@ -5082,6 +5104,7 @@ Comhroinn + Seol , %1$s @@ -5388,6 +5411,128 @@ An méarchlár Seol leis an eochair iontrála + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + %1$d chat types + %1$d chat types + %1$d chat types + + + + %1$d chat + %1$d chats + %1$d chats + %1$d chats + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + %1$d chats excluded + %1$d chats excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Teachtaireachtaí @@ -5475,6 +5620,7 @@ Media Quality + Sent Media Quality Sending high quality media will use more data. @@ -7703,14 +7849,14 @@ - Your backups subscription expired + Chuaigh do shíntiús le cúltacaí in éag - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Chuaigh do phlean cúltacaithe in éag toisc nárbh fhéidir é a nuashonrú le do mhodh reatha íocaíochta. Tar éis %1$d lá, scriosfar na meáin i do chúltaca. + Chuaigh do phlean cúltacaithe in éag toisc nárbh fhéidir é a nuashonrú le do mhodh reatha íocaíochta. Tar éis %1$d lá, scriosfar na meáin i do chúltaca. + Chuaigh do phlean cúltacaithe in éag toisc nárbh fhéidir é a nuashonrú le do mhodh reatha íocaíochta. Tar éis %1$d lá, scriosfar na meáin i do chúltaca. + Chuaigh do phlean cúltacaithe in éag toisc nárbh fhéidir é a nuashonrú le do mhodh reatha íocaíochta. Tar éis %1$d lá, scriosfar na meáin i do chúltaca. + Chuaigh do phlean cúltacaithe in éag toisc nárbh fhéidir é a nuashonrú le do mhodh reatha íocaíochta. Tar éis %1$d lá, scriosfar na meáin i do chúltaca. Is féidir leat tosú ag íoc as cúltacaí arís am ar bith le leanúint le cúltacú do mheán uile. @@ -7731,9 +7877,9 @@ Má roghnaíonn tú \"Gabh thar\" scriosfar na meáin i do chúltaca i gceann %1$d lá.. - Your backups subscription failed to renew + Theip ar nuashonrú do shíntiúis le cúltacaí - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Seiceáil go bhfuil do mhodh íocaíochta suas chun dáta. Tapáil Bainistigh síntiús agus, faoi Mhodhanna íocaíochta, tapáil Nuashonraigh. Níorbh fhéidir an cúltaca a chur i gcrích @@ -7745,7 +7891,7 @@ Bainistigh síntiús - Subscribe for %1$s/month + Íoc síntiús %1$s/sa mhí Íoslódáil meáin anois @@ -7780,6 +7926,17 @@ %1$s as %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7833,21 +7990,21 @@ Ní féidir optamú stórais a úsáid ach leis an leibhéal íoctha de Chúltacaí Signal. Uasghrádaigh do phlean cúltacaithe le tosú ar úsáid na gné sin. - Subscribe for %1$s/month + Íoc síntiús %1$s/sa mhí - This media is no longer available + Níl na meáin seo ar fáil a thuilleadh - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Áirítear i do phlean reatha cúltacaí Signal an %1$d lá is déanaí de do mheáin. Le tosú ar do mheáin uile a chúltacú, uasghrádaigh anois. + Áirítear i do phlean reatha cúltacaí Signal an %1$d lá is déanaí de do mheáin. Le tosú ar do mheáin uile a chúltacú, uasghrádaigh anois. + Áirítear i do phlean reatha cúltacaí Signal na %1$d lá is déanaí de do mheáin. Le tosú ar do mheáin uile a chúltacú, uasghrádaigh anois. + Áirítear i do phlean reatha cúltacaí Signal na %1$d lá is déanaí de do mheáin. Le tosú ar do mheáin uile a chúltacú, uasghrádaigh anois. + Áirítear i do phlean reatha cúltacaí Signal na %1$d lá is déanaí de do mheáin. Le tosú ar do mheáin uile a chúltacú, uasghrádaigh anois. - Subscribe for %1$s/month + Íoc síntiús %1$s/sa mhí Tá scriosadh sioncronaithe trasna do ghléasanna uile anois @@ -7890,11 +8047,13 @@ Athraíodh an cineál cúltaca agus cuireadh an síntiús ar ceal - Cuireadh an síntiús ar ceal + Subscription canceled Íoslódáil críochnaithe Cruthófar cúltaca thar oíche. + + Subscription inactive Plean cúltaca @@ -7903,8 +8062,12 @@ %1$s/mí Tá do phlean cúltaca saor in aisce - + Athnuachan %1$s + + Expires on %1$s + + Expired on %1$s Cúltacaigh do stair teachtaireachtaí ionas nach gcaillfidh tú sonraí nuair a fhaigheann tú guthán nua nó nuair a athshuiteálann tú Signal. @@ -7949,6 +8112,10 @@ Déan cúltaca de láimh Cuir isteach UAP, pasfhocal, nó patrún do ghléis. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 170493b04d..a1a92358d2 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -368,6 +368,8 @@ Conversas Mensaxes + + Chat types Mensaxe %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Acabaches. Xa podes iniciar a copia de seguranza. En función do tamaño da copia, isto pode tardar bastante tempo. Pero non te preocupes, podes seguir usando o teu teléfono como de costume mentres se completa o proceso. @@ -1969,6 +1971,7 @@ +%1$d convidados +%1$d convidado + %1$d grupo adicional %1$d grupos adicionais @@ -1995,6 +1998,7 @@ Ningún dispositivo atopado. Erro de rede. Código QR non válido. + Sentímolo, mais xa tes moitos dispositivos vinculados. Proba a eliminar algún Desculpa, este non é un código QR válido para vincular o dispositivo. Vincular un dispositivo a Signal? @@ -2017,11 +2021,13 @@ Enviar frase de acceso Frase de acceso non válida! Desbloquear Signal + Signal Android - Bloqueo de pantalla Mapa + Engadir marcador Aceptar enderezo @@ -2525,6 +2531,7 @@ Mensaxe de Signal + Máis @@ -2556,6 +2563,7 @@ Sen adhesivos instalados Os adhesivos das mensaxes entrantes aparecerán aquí Sen título + Descoñecido @@ -2777,6 +2785,7 @@ Contido multimedia xa non dispoñible. Non se pode reproducir. + Erro ao buscar a mensaxe. Non se atopa unha aplicación con que compartir este contido multimedia. Pechar @@ -2848,6 +2857,7 @@ Mensaxes Chamadas + Erros Copias de seguranza Bloquear estado @@ -2857,6 +2867,7 @@ Descoñecido Notas de voz Un contacto únese a Signal + Non hai actividade dispoñible para abrir a configuración de notificacións. Conexión en segundo plano @@ -3641,10 +3652,12 @@ Borrarase o historial de mensaxes de forma permanente de todos os dispositivos. Esta acción non se pode desfacer. Borrar todo agora + Para sempre 1 ano 6 meses 30 días + Ningún %1$s mensaxe @@ -3669,6 +3682,7 @@ Mostrar Ton de chamada Tamaño da fonte + Prioridade Solucionar problemas coas notificacións @@ -3897,6 +3911,7 @@ Escanea o código QR do enderezo do destinatario + Solicitude Pagar Saldo dispoñible: %1$s @@ -4028,6 +4043,7 @@ Só podes fixar %1$d conversas + Foto do contacto No arquivo @@ -4036,6 +4052,10 @@ Nova conversa Abrir cámara Aínda non hai conversas.\nInicia unha conversa cunha amizade. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Copias de seguranza das conversas Transferir conta Transferir a conta un novo dispositivo Android + Inserir frase de acceso para a copia de seguranza Restaurar Non se importan copias dende novas versións de Signal @@ -4475,6 +4496,7 @@ Non se puido abrir o axuste Wi-Fi. Activa a Wi-Fi de xeito manual. + Conceder permiso de localización Activar servizos de localización Activar Wi-Fi @@ -4728,6 +4750,7 @@ Compartir + Enviar , %1$s @@ -5031,6 +5054,119 @@ Teclado Enviar coa tecla de retorno + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Mensaxes @@ -5115,6 +5251,7 @@ Calidade multimedia + Calidade dos envíos Enviando multimedia con alta calidade usarás máis datos @@ -7235,11 +7372,11 @@ - Your backups subscription expired + A túa subscrición da copia de seguranza venceu - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + O teu plan venceu porque non se puido renovar o teu método de pagamento actual. Pasado %1$d día, o contido multimedia da túa copia eliminarase. + O teu plan venceu porque non se puido renovar o teu método de pagamento actual. Pasados %1$d días, o contido multimedia da túa copia eliminarase. Se queres volver a facer unha copia de seguranza de todos os teus arquivos multimedia, podes ter acceso de novo ao plan pagando en calquera momento. @@ -7257,9 +7394,9 @@ Se escolles «Omitir», os arquivos multimedia da túa copia de seguranza eliminaranse en %1$d días. - Your backups subscription failed to renew + A túa subscrición da copia de seguranza non se puido renovar - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Asegúrate de que o teu método de pagamento está actualizado. Preme en «Xestionar subscrición» e, na sección de Métodos de pagamento, preme «Actualizar». Non se realizou a copia de seguranza @@ -7271,7 +7408,7 @@ Xestionar subscrición - Subscribe for %1$s/month + Subscríbete por %1$s/mes Descargar contido agora @@ -7306,6 +7443,17 @@ %1$s de %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Só se pode acceder á optimización de almacenamento co nivel de pago das copias de seguranza de Signal. Cambia o teu plan para gozar desta función. - Subscribe for %1$s/month + Subscríbete por %1$s/mes - This media is no longer available + O contido multimedia xa non está dispoñible - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + O teu plan actual á copia de seguranza de Signal inclúe os arquivos do último día. Para protexer todo o teu contido multimedia, mellora o teu plan. + O teu plan actual á copia de seguranza de Signal inclúe os arquivos dos últimos %1$d días. Para protexer todo o teu contido multimedia, mellora o teu plan. - Subscribe for %1$s/month + Subscríbete por %1$s/mes Agora a acción de borrar está sincronizada en todos os teus dispositivos @@ -7413,11 +7561,13 @@ Cambiouse o tipo de copia de seguranza e cancelouse a subscrición - Cancelouse a subscrición + Subscription canceled Descarga completa A copia de seguranza crearase durante a noite. + + Subscription inactive Plan de copia de seguranza @@ -7426,8 +7576,12 @@ %1$s/mes O teu plan é gratuíto - + Renóvase o %1$s + + Expires on %1$s + + Expired on %1$s Fai unha copia de seguranza do teu historial de mensaxes para que nunca perdas datos cando cambies de teléfono ou volvas instalar Signal. @@ -7472,6 +7626,10 @@ Facer manualmente Escribe o PIN, contrasinal ou patrón do dispositivo. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-gu/strings.xml b/app/src/main/res/values-gu/strings.xml index de8aeb7642..4d1fb943d0 100644 --- a/app/src/main/res/values-gu/strings.xml +++ b/app/src/main/res/values-gu/strings.xml @@ -368,6 +368,8 @@ ચેટ મેસેજ + + Chat types મેસેજ %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + તમે એકદમ તૈયાર છો. હવે તમારું બેકઅપ શરૂ કરો. તમારા બેકઅપની સાઇઝના આધારે, આમાં લાંબો સમય લાગી શકે છે. જ્યારે બેકઅપ લેવામાં આવે ત્યારે તમે સામાન્ય રીતે કરતાં હોવ તેમ તમે તમારા ફોનનો ઉપયોગ કરી શકો છો. @@ -1969,6 +1971,7 @@ +%1$dને આમંત્રિત કર્યા +%1$dને આમંત્રિત કર્યા + %1$d વધારાના જૂથો %1$d વધારાના જૂથો @@ -1995,6 +1998,7 @@ કોઈ ડિવાઇસ મળ્યું નથી. નેટવર્ક ભૂલ. અમાન્ય QR કોડ. + માફ કરશો, તમારી પાસે ઘણા બધા ડિવાઇસ પહેલાથી જોડાયેલા છે, કેટલાકને દૂર કરવાનો પ્રયાસ કરો માફ કરશો, આ માન્ય ડિવાઇસ લિંક QR કોડ નથી. Signal ડિવાઇસ ને લિંક કરીએ? @@ -2017,11 +2021,13 @@ પાસફ્રેઝ સબમિટ કરો અમાન્ય પાસફ્રેઝ! Signal અનલૉક કરો + Signal એન્ડ્રોઇડ - લૉક સ્ક્રીન નકશો + ડ્રોપ પિન સરનામું સ્વીકારો @@ -2525,6 +2531,7 @@ Signal મેસેજ + વધુ @@ -2556,6 +2563,7 @@ કોઈ સ્ટીકરો ઇન્સ્ટોલ કરેલા નથી આવતા મેસેજ ના સ્ટીકરો અહીં દેખાશે શીર્ષક વિનાનું + અજાણ્યું @@ -2777,6 +2785,7 @@ મીડિયા હવે ઉપલબ્ધ નથી. મીડિયા ચલાવવામાં અસમર્થ. + મેસેજ શોધવામાં ભૂલ. આ મીડિયાને શેર કરવા માટે સક્ષમ એપ્લિકેશન શોધી શકાતી નથી. બંધ @@ -2848,6 +2857,7 @@ મેસેજ કૉલ્સ + નિષ્ફળતા બેકઅપ્સ લૉક સ્ટેટસ @@ -2857,6 +2867,7 @@ અજાણ્યું વૉઈસ નોટ્સ સંપર્ક Signal સાથે જોડાયો + સૂચના ચેનલ સેટિંગ્સ ખોલવા માટે કોઈ પ્રવૃત્તિ ઉપલબ્ધ નથી. બેકગ્રાઉંડ કનેક્શન @@ -3641,10 +3652,12 @@ બધી મેસેજ હિસ્ટ્રી આ ડિવાઇસ પરથી કાયમ માટે ડિલીટ કરવામાં આવશે. આ ક્રિયાને પૂર્વવત કરી શકાશે નહીં. બધુ હમણાં ડિલીટ કરો + હમેશા 1 વર્ષ 6 મહિના 30 દિવસો + કંઈ નહીં %1$s મેસેજ @@ -3669,6 +3682,7 @@ બતાવો રીંગટોન મેસેજ ફોન્ટ કદ + પ્રાથમિકતા નોટિફિકેશનનું મુશ્કેલીનિવારણ કરો @@ -3897,6 +3911,7 @@ ચૂકવનારનું એડ્રેસ QR કોડ સ્કેન કરો + વિનંતી ચૂકવો ઉપલબ્ધ બેલેન્સ: %1$s @@ -4028,6 +4043,7 @@ તમે ફક્ત %1$d ચેટ સુધી જ પિન અપ શકો છો + સંપર્ક ફોટો છબી આર્કાઇવ કરેલ @@ -4036,6 +4052,10 @@ નવી ચેટ કેમેરો ખોલો હજી સુધી કોઈ ચેટ નથી.\nમિત્રને મેસેજ કરીને પ્રારંભ કરો. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ ચેટ બૅકઅપ એકાઉન્ટ ટ્રાન્સફર કરો નવા Android ડિવાઇસમાં એકાઉન્ટ ટ્રાન્સફર કરો + બૅકઅપ પાસફ્રેઝ દાખલ કરો રિસ્ટોર Signalના નવા વર્ઝનમાંથી બેકઅપ આયાત કરી શકાતો નથી @@ -4475,6 +4496,7 @@ વાઇફાઇ સેટિંગ્સ ખોલવામાં અસમર્થ. કૃપા કરીને જાતે વાઇફાઇ ચાલુ કરો. + સ્થાન પરવાનગી આપો સ્થાન સેવાઓ ચાલુ કરો Wi-Fi ચાલુ કરો @@ -4728,6 +4750,7 @@ શેર કરો + મોકલો , %1$s @@ -5031,6 +5054,119 @@ કીબોર્ડ એન્ટર દબાવીને મોકલો + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done મેસેજ @@ -5115,6 +5251,7 @@ મીડિયા ગુણવત્તા + મોકલેલ મીડિયાની ગુણવત્તા ઉચ્ચ ગુણવત્તાના મીડિયા મોકલવાથી વધુ ડેટા વાપરશે. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + તમારું બેકઅપ સબ્સ્ક્રિપ્શન સમાપ્ત થઈ ગયું - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + તમારા બેકઅપ પ્લાનની સમયસીમા સમાપ્ત થઈ ગઈ છે કારણ કે તે તમારી વર્તમાન ચુકવણી પદ્ધતિ સાથે રિન્યૂ કરી શકાયું નથી. %1$d દિવસ પછી, તમારા બેકઅપમાંના મીડિયાને ડિલીટ કરવામાં આવશે. + તમારા બેકઅપ પ્લાનની સમયસીમા સમાપ્ત થઈ ગઈ છે કારણ કે તે તમારી વર્તમાન ચુકવણી પદ્ધતિ સાથે રિન્યૂ કરી શકાયું નથી. %1$d દિવસ પછી, તમારા બેકઅપમાંના મીડિયાને ડિલીટ કરવામાં આવશે. તમે તમારા તમામ મીડિયાનું બેકઅપ લેવાનું ચાલુ રાખવા માટે કોઈ પણ સમયે ફરીથી બેકઅપ માટે ચુકવણી કરવાનું શરૂ કરી શકો છો. @@ -7257,9 +7394,9 @@ જો તમે \"છોડો\" પસંદ કરો છો, તો તમારા બેકઅપમાંના મીડિયા %1$d દિવસમાં ડિલીટ કરવામાં આવશે. - Your backups subscription failed to renew + તમારા બેકઅપ સબ્સ્ક્રિપ્શનને રિન્યૂ કરવાનું નિષ્ફળ થયું - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + તમારી ચુકવણી પદ્ધતિ અપ ટૂ ડેટ છે તેની ખાતરી કરવા માટે તપાસો. સબ્સ્ક્રિપ્શન મેનેજ કરો પર ટેપ કરો અને ચુકવણી પદ્ધતિઓ હેઠળ અપડેટ કરો પર ટેપ કરો. બેકઅપ પૂર્ણ કરી શકાયું નથી @@ -7271,7 +7408,7 @@ સબ્સ્ક્રિપ્શન મેનેજ કરો - Subscribe for %1$s/month + %1$s/મહિને સબ્સ્ક્રાઇબ કરો હમણાં જ મીડિયા ડાઉનલોડ કરો @@ -7306,6 +7443,17 @@ %1$sની%2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ સ્ટોરેજ ઑપ્ટિમાઇઝેશનનો ઉપયોગ માત્ર Signal બેકઅપના પેઇડ ટીયર સાથે જ થઈ શકે છે. આ ફીચરનો ઉપયોગ શરૂ કરવા માટે તમારા બેકઅપ પ્લાનને અપગ્રેડ કરો. - Subscribe for %1$s/month + %1$s/મહિને સબ્સ્ક્રાઇબ કરો - This media is no longer available + આ મીડિયા હવે ઉપલબ્ધ નથી - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + તમારા વર્તમાન Signal બેકઅપ પ્લાનમાં તમારા સૌથી તાજેતરના %1$d દિવસના મીડિયાનો સમાવેશ થાય છે. તમારા બધા મીડિયાનું બેકઅપ લેવાનું શરૂ કરવા માટે, હમણાં જ અપગ્રેડ કરો. + તમારા વર્તમાન Signal બેકઅપ પ્લાનમાં તમારા સૌથી તાજેતરના %1$d દિવસના મીડિયાનો સમાવેશ થાય છે. તમારા બધા મીડિયાનું બેકઅપ લેવાનું શરૂ કરવા માટે, હમણાં જ અપગ્રેડ કરો. - Subscribe for %1$s/month + %1$s/મહિને સબ્સ્ક્રાઇબ કરો ડિલીટ કરવાનું હવે તમારા બધા ડિવાઇસ પર સિંક કરવામાં આવ્યું છે @@ -7413,11 +7561,13 @@ બેકઅપ પ્રકાર બદલાયો અને સબ્સ્ક્રિપ્શન રદ કર્યું - સબ્સ્ક્રિપ્શન રદ કર્યું + Subscription canceled ડાઉનલોડ પૂર્ણ બેકઅપ રાત્રિ દરમિયાન લેવામાં આવશે. + + Subscription inactive બેકઅપ પ્લાન @@ -7426,8 +7576,12 @@ %1$s/માસ તમારો બેકઅપ પ્લાન મફત છે - + %1$sના રોજ રિન્યૂ થશે + + Expires on %1$s + + Expired on %1$s તમારી મેસેજ હિસ્ટ્રીનું બેકઅપ લો જેથી જ્યારે તમે નવો ફોન લો અથવા Signalને ફરીથી ઇન્સ્ટોલ કરો ત્યારે તમે ક્યારેય ડેટા ગુમાવશો નહીં. @@ -7472,6 +7626,10 @@ મેન્યુઅલી બેકઅપ કૃપા કરીને તમારો ડિવાઇસ પિન, પાસવર્ડ અથવા પેટર્ન દાખલ કરો. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index f196511dbe..6aebcd9982 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -368,6 +368,8 @@ चैट मैसेज + + Chat types %1$s को मेसेज @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + अब आप तैयार हैं। अभी अपना बैकअप शुरू करें। आपके बैकअप के आकार के आधार पर, इसमें लंबा समय लग सकता है। बैकअप के दौरान, आप अपना फ़ोन सामान्य रूप से इस्तेमाल कर सकते हैं। @@ -1969,6 +1971,7 @@ +%1$d आमंत्रित किए गए +%1$d आमंत्रित किए गए + %1$d अतिरिक्त ग्रुप %1$d अतिरिक्त ग्रुप्स @@ -1995,6 +1998,7 @@ कोई डिवाइस नहीं मिला नेटवर्क त्रुटि अवैध क्यूआर कोड + क्षमा करें, आपके पास पहले से जुड़े बहुत से डिवाइस हैं, कुछ को हटाने का प्रयास करें क्षमा करें, यह एक वैध डिवाइस लिंक क्यूआर कोड नहीं है। Signal डिवाइस को लिंक करें? @@ -2017,11 +2021,13 @@ पासफ्रेज जमा करें अमान्य पासफ्रेज Signal खोलो + Signal Android - लॉक स्क्रीन नक्शा + पीन दें पता स्वीकारें @@ -2525,6 +2531,7 @@ Signal मेसेज + अधिक @@ -2556,6 +2563,7 @@ कोई स्टीकर स्थापित नहीं है आने वाले मेसेजों के स्टिकर यहां दिखाई देंगे शीर्षकहीन + अनजान @@ -2777,6 +2785,7 @@ मीडिया अब उपलब्ध नहीं है। मीडिया चलाने में असमर्थ + संदेश ढूँढ़ने में त्रुटि हुई। इस मीडिया को शेयर करने के लिए कोई ऐप नहीं मिल रही। बंद करो @@ -2848,6 +2857,7 @@ मेसेज कॉल + विफलतायें बैकअप लॉक स्थिति @@ -2857,6 +2867,7 @@ अनजान ऑडियो नोट्स संपर्क Signal में शामिल हो गए + अधिसूचना चैनल सेटिंग्ज़ खोलने के लिए कोई गतिविधि उपलब्ध नहीं है। बैकग्राउंड कनेक्शन @@ -3641,10 +3652,12 @@ सभी संदेश इतिहास सभी डिवाइस से स्थायी रूप से हटा दिए जाएंगे। इसे फिर से पहले जैसा नहीं किया जा सकेगा। सभी कुछ अभी डिलीट करें + हमेशा के लिए 1 वर्ष 6 महीने 30 दिन + कुछ नहीं %1$s संदेश @@ -3669,6 +3682,7 @@ दिखाएं रिंगटोन मेसेज फ़ॉन्ट आकार + प्राथमिकता ट्रबलशूट नोटिफ़िकेशन @@ -3897,6 +3911,7 @@ भुगतान प्राप्तकर्ता के पते का QR कोड स्कैन करें + निवेदन भुगतान करें उपलब्ध बैलेंस: %1$s @@ -4028,6 +4043,7 @@ आप केवल %1$d तक चैट को पिन कर सकते हैं + संपर्क फोटो छवि संग्रहीत @@ -4036,6 +4052,10 @@ नई चैट कैमरा खोलें अभी तक कोई चैट नहीं हैं।\nकिसी मित्र को मेसेज करके शुरू करें। + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ बैकअप चैट करें खाता ट्रांसफ़र करें खाते को किसी नए Android डिवाइस पर ट्रांसफ़र करें + बैकअप पासफ्रेज दर्ज करें पुन:इंस्टॉल करें Signal के नये वर्ज़न से बैकअप लाना संभव नहीं है @@ -4475,6 +4496,7 @@ Wi-Fi सेटिंग्ज़ नहीं खोल पा रहे हैं। कृपया Wi-Fi को मन्युअल रूप से चालू करें। + लोकेशन अनुमति प्रदान करें लोकेशन सेवाएँ चालू करें Wi-Fi चालू करें @@ -4728,6 +4750,7 @@ साझा करें + भेजें , %1$s @@ -5031,6 +5054,119 @@ कीबोर्ड एंटर करके भेजें + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done मेसेज @@ -5115,6 +5251,7 @@ मीडिया क्वालिटी + मीडिया क्वालिटी भेजी गई हाई क्वालिटी मीडिया भेजने के लिए अधिक डेटा खर्च होगा। @@ -7235,11 +7372,11 @@ - Your backups subscription expired + आपके बैकअप का सब्सक्रिप्शन खत्म हो गया - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + आपका बैकअप प्लान खत्म हो गया है, क्योंकि आपके मौजूदा भुगतान प्लान से इसे रिन्यू नहीं किया जा सका। %1$d दिन के बाद, आपके बैकअप में मौजूद मीडिया डिलीट कर दिया जाएगा। + आपका बैकअप प्लान खत्म हो गया है, क्योंकि आपके मौजूदा भुगतान प्लान से इसे रिन्यू नहीं किया जा सका। %1$d दिनों के बाद, आपके बैकअप में मौजूद मीडिया डिलीट कर दिया जाएगा। आप अपने सभी मीडिया का बैकअप लेना जारी रखने के लिए किसी भी समय फिर से बैकअप के लिए भुगतान करना शुरू कर सकते हैं। @@ -7257,9 +7394,9 @@ यदि आप \"छोड़ें\" चुनते हैं तो आपके बैकअप में मौजूद मीडिया %1$d दिनों में डिलीट कर दिया जाएगा। - Your backups subscription failed to renew + आपके बैकअप का सब्सक्रिप्शन रिन्यू नहीं हो पाया - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + जाँच करके पक्का करें कि आपके भुगतान का तरीका अप-टू-डेट है। \'सब्सक्रिप्शन प्रबंधित करें\' पर टैप करें और भुगतान के तरीकों में \'अपडेट करें\' पर टैप करें। बैकअप पूरा नहीं कर सका @@ -7271,7 +7408,7 @@ सब्सक्रिप्शन मैनेज करें - Subscribe for %1$s/month + %1$s/महीने में सब्सक्राइब करें अभी मीडिया डाउनलोड करें @@ -7306,6 +7443,17 @@ %1$s का %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ स्टोरेज ऑप्टिमाइज़ेशन को सिर्फ़ Signal Backups के भुगतान वाले टियर के साथ इस्तेमाल किया जा सकता है। इस फ़ीचर को इस्तेमाल करना शुरू करने के लिए, अपना बैकअप प्लान अपग्रेड करें। - Subscribe for %1$s/month + %1$s/महीने में सब्सक्राइब करें - This media is no longer available + अब यह मीडिया उपलब्ध नहीं है - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + आपके मौजूदा Signal बैकअप प्लान में आपका पिछले %1$d दिन का मीडिया है। अपने पूरे मीडिया का बैकअप लेना शुरू करने के लिए, अभी अपग्रेड करें। + आपके मौजूदा Signal बैकअप प्लान में आपका पिछले %1$d दिनों का मीडिया है। अपने पूरे मीडिया का बैकअप लेना शुरू करने के लिए, अभी अपग्रेड करें। - Subscribe for %1$s/month + %1$s/महीने में सब्सक्राइब करें डिलीट करना अब आपकी सभी डिवाइस पर सिंक हो गया है @@ -7413,11 +7561,13 @@ बैकअप प्रकार बदला गया और सब्सक्रिप्शन रद्द कर दी गई - सब्सक्रिप्शन रद्द किया गया + Subscription canceled डाउनलोड पूरा हुआ बैकअप को रात के समय बनाया जाएगा। + + Subscription inactive बैकअप प्लान @@ -7426,8 +7576,12 @@ %1$s/महीना आपका बैकअप प्लान मुफ़्त है - + %1$s को नवीकृत होता है + + Expires on %1$s + + Expired on %1$s अपना संदेश इतिहास बैकअप करें, ताकि नया फ़ोन लेने या Signal को फिर से इंस्टॉल करने पर आपका डेटा न खोए। @@ -7472,6 +7626,10 @@ मैन्युअल रूप से बैकअप लें कृपया अपना डिवाइस पिन, पासवर्ड या पैटर्न डालें। + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 501ef777bd..db00352a5a 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -374,6 +374,8 @@ Razgovori Poruke + + Chat types Poruka %1$s @@ -856,7 +858,7 @@ - You\'re all set. Start your backup now. + Sve je spremno. Započnite sigurnosno kopiranje. Ovisno o veličini sigurnosne kopije, ovo bi moglo malo duže potrajati. Tijekom sigurnosnog kopiranja možete normalno koristiti svoj telefon. @@ -2091,6 +2093,7 @@ +%1$d pozvanih +%1$d pozvanih + %1$d dodatna grupa %1$d dodatne grupe @@ -2119,6 +2122,7 @@ Nema uređaja. Mrežna pogreška. Nevažeći QR kôd. + Nažalost, već imate previše povezanih uređaja. Pokušajte ukloniti neke. Nažalost, ovo nije valjani QR kôd za povezivanje uređaja. Poveži Signal uređaj? @@ -2143,11 +2147,13 @@ Pošaljite lozinku Nevažeća lozinka! Otključaj Signal + Signal Android - Zaključani zaslon Mapa + Ispusti značku Prihvati adresu @@ -2695,6 +2701,7 @@ Signal poruka + Više @@ -2726,6 +2733,7 @@ Nema instaliranih naljepnica Ovdje će se pojaviti naljepnice iz dolaznih poruka Bez naslova + Nepoznato @@ -2949,6 +2957,7 @@ Medijski zapis više nije dostupan. Nije moguće reproducirati medijske zapise. + Pogreška pri pronalaženju poruke. Nije moguće pronaći aplikaciju za dijeljenje ovog medijskog zapisa. Zatvori @@ -3024,6 +3033,7 @@ Poruke Pozivi + Neuspjesi Sigurnosne kopije Status zaključavanja @@ -3033,6 +3043,7 @@ Nepoznato Glasovne bilješke Kontakt se pridružio/la Signalu + Nema dostupnih aktivnosti za otvaranje postavki kanala za obavijesti. Pozadinska veza @@ -3843,10 +3854,12 @@ Sva povijest razgovora bit će trajno uklonjena sa svih uređaja. Ova se radnja ne može poništiti. Izbriši sve + Zauvijek 1 godina 6 mjeseci 30 dana + Nijedno %1$s poruka @@ -3873,6 +3886,7 @@ Prikaži Melodija zvona Veličina fonta poruka + Prioritet Rješavanje problema s obavijestima @@ -4101,6 +4115,7 @@ Skenirajte QR kôd adresu primatelja + Zahtjev Plati Dostupno stanje: %1$s @@ -4234,6 +4249,7 @@ Možete prikvačiti najviše %1$d razgovora + Slika kontakta Arhivirano @@ -4242,6 +4258,10 @@ Novi razgovor Otvori kameru Još nema razgovora.\nZapočnite slanjem poruke prijatelju. + + No chats to display + + Folder settings @@ -4490,6 +4510,7 @@ Sigurnosne kopije razgovora Prijenos računa Prijenos računa na novi Android uređaj + Unesi lozinku sigurnosne kopije Vrati Nije moguće uvesti backupove novijih verzija Signala @@ -4697,6 +4718,7 @@ Nije moguće otvoriti Wi-Fi postavke. Uključite Wi-Fi ručno. + Omogući dozvolu za lokaciju Uključi lokacijske usluge Uključi Wi-Fi @@ -4964,6 +4986,7 @@ Podijeli + Pošalji , %1$s @@ -5269,6 +5292,125 @@ Tipkovnica Pošaljite pritiskom na enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + %1$d chat types + %1$d chat types + + + + %1$d chat + %1$d chats + %1$d chats + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + %1$d chats excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Poruke @@ -5355,6 +5497,7 @@ Kvaliteta medija + Kvaliteta poslanih medija Slanje visokokvalitetnih medija zahtjeva veću potrošnju mobilnih podataka. @@ -7547,13 +7690,13 @@ - Your backups subscription expired + Vaša pretplata na sigurnosno kopiranje je istekla - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Vaša pretplata na sigurnosno kopiranje je istekla jer nije bilo moguće provesti plaćanje odabranim načinom plaćanja. Nakon %1$d dana medijski zapisi u vašoj sigurnosnoj kopiji bit će izbrisani. + Vaša pretplata na sigurnosno kopiranje je istekla jer nije bilo moguće provesti plaćanje odabranim načinom plaćanja. Nakon %1$d dana medijski zapisi u vašoj sigurnosnoj kopiji bit će izbrisani. + Vaša pretplata na sigurnosno kopiranje je istekla jer nije bilo moguće provesti plaćanje odabranim načinom plaćanja. Nakon %1$d dana medijski zapisi u vašoj sigurnosnoj kopiji bit će izbrisani. + Vaša pretplata na sigurnosno kopiranje je istekla jer nije bilo moguće provesti plaćanje odabranim načinom plaćanja. Nakon %1$d dana medijski zapisi u vašoj sigurnosnoj kopiji bit će izbrisani. U bilo kojem trenutku možete ponovno početi plaćati sigurnosno kopiranje kako biste sačuvali sve svoje medijske zapise. @@ -7573,9 +7716,9 @@ Ako preskočite ovaj korak, medijski zapisi spremljeni u sigurnosnoj kopiji bit će izbrisani za %1$d dana. - Your backups subscription failed to renew + Obnova vaše pretplate na sigurnosno kopiranje nije uspjela - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Provjerite je li vaš način plaćanja ažuran. Dodirnite Upravljanje pretplatom i pod Načini plaćanja dodirnite Ažuriraj. Nije moguće dovršiti sigurnosno kopiranje @@ -7587,7 +7730,7 @@ Upravljanje pretplatom - Subscribe for %1$s/month + Pretplati se za %1$s mjesečno Preuzmi medijske zapise @@ -7622,6 +7765,17 @@ %1$s od %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7675,20 +7829,20 @@ Optimizacija pohrane dostupna je samo uz plaćenu pretplatu na sigurnosno kopiranje Signala. Pretplatite se na sigurnosno kopiranje kako biste koristili ovu značajku. - Subscribe for %1$s/month + Pretplati se za %1$s mjesečno - This media is no longer available + Medijski zapis više nije dostupan - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Vaš trenutni plan za sigurnosno kopiranje Signala uključuje posljednji %1$d dan medijskih zapisa. Da biste započeli sigurnosno kopiranje svih svojih medijskih zapisa, nadogradite svoj plan sada. + Vaš trenutni plan za sigurnosno kopiranje Signala uključuje posljednja %1$d dana medijskih zapisa. Da biste započeli sigurnosno kopiranje svih svojih medijskih zapisa, nadogradite svoj plan sada. + Vaš trenutni plan za sigurnosno kopiranje Signala uključuje posljednjih %1$d dana medijskih zapisa. Da biste započeli sigurnosno kopiranje svih svojih medijskih zapisa, nadogradite svoj plan sada. + Vaš trenutni plan za sigurnosno kopiranje Signala uključuje posljednjih %1$d dana medijskih zapisa. Da biste započeli sigurnosno kopiranje svih svojih medijskih zapisa, nadogradite svoj plan sada. - Subscribe for %1$s/month + Pretplati se za %1$s mjesečno Brisanje je sada sinkronizirano na svim vašim uređajima @@ -7731,11 +7885,13 @@ Postavke sigurnosnog kopiranja su ažurirane i pretplata je otkazana - Pretplata je otkazana + Subscription canceled Preuzimanje je dovršeno Sigurnosna kopija bit će izrađena tijekom noćnih sati. + + Subscription inactive Plan za sigurnosno kopiranje @@ -7744,8 +7900,12 @@ %1$s mjesečno Vaš plan za sigurnosno kopiranje je besplatan - + Obnavlja se %1$s + + Expires on %1$s + + Expired on %1$s Stvorite sigurnosnu kopiju svojih razgovora kako ih ne biste izgubili prilikom zamjene telefona ili ponovne instalacije Signala. @@ -7790,6 +7950,10 @@ Ručno sigurnosno kopiranje Unesite PIN, lozinku ili uzorak svoga uređaja. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 5bff90317c..abf72af9ce 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -368,6 +368,8 @@ Csevegések Üzenetek + + Chat types Üzenet %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Kész is vagy! Kezdd el a biztonsági mentést most. A biztonsági másolat méretétől függően ez hosszú ideig tarthat. A biztonsági mentés közben a szokásos módon használhatod a telefonodat. @@ -1969,6 +1971,7 @@ +%1$d meghívott +%1$d meghívott + %1$d további csoport %1$d további csoport @@ -1995,6 +1998,7 @@ Nem található eszköz. Hálózati hiba. Érvénytelen QR kód. + Sajnáljuk, de jelenleg túl sok eszköz van társítva, próbálj meg eltávolítani néhányat Sajnáljuk, de ez nem egy érvényes eszköz-társítási QR kód. Signal eszköz társítása? @@ -2017,11 +2021,13 @@ Jelmondat küldése Érvénytelen jelmondat! Signal feloldása + Signal Android - Képernyőzár Térkép + Rajztű ledobása Cím elfogadása @@ -2525,6 +2531,7 @@ Signal üzenet + Továbbiak @@ -2556,6 +2563,7 @@ Nincsenek matricák telepítve A beérkezett üzenetekben szereplő matricák itt fognak megjelenni Névtelen + Ismeretlen @@ -2777,6 +2785,7 @@ A médiafájl már nem érhető el Nem lehet lejátszani a médiát. + Hiba az üzenet keresése során. Nem található alkalmazás ezen médiafájl megnyitásához. Bezárás @@ -2848,6 +2857,7 @@ Üzenetek Hívások + Hibák Biztonsági mentések Zár státusza @@ -2857,6 +2867,7 @@ Ismeretlen Hangjegyzetek Ismerős csatlakozott a Signalhoz + Nincs elérhető aktivitás, hogy megnyissuk az értesítési csatorna beállításokat. Háttérben futó kapcsolat @@ -3641,10 +3652,12 @@ A teljes üzenetelőzmény véglegesen törlésre kerül minden eszközről. Ez a művelet nem vonható vissza. Összes törlése most + örökké 1 év 6 hónap 30 nap + Egyik sem %1$s üzenet @@ -3669,6 +3682,7 @@ Megjelenítés Csengőhang Üzenetek betűmérete + Prioritás Értesítések hibaelhárítása @@ -3897,6 +3911,7 @@ Olvasd be a kedvezményezett QR kódját + Kérés Fizetés Elérhető egyenleg: %1$s @@ -4028,6 +4043,7 @@ Maximum %1$d csevegést rögzíthetsz + Kontakt fotó kép Archív @@ -4036,6 +4052,10 @@ Új csevegés Kamera megnyitása Még üres a csevegéslista.\nKezdésként üzenj egy barátodnak. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Csevegések biztonsági mentése Fiók átvitele Fiók átvitele egy másik Android eszközre + Biztonsági mentés jelmondatának megadása Visszaállítás Az újabb verziókból nincs biztonsági másolat import @@ -4475,6 +4496,7 @@ Sikertelen a Wi-Fi beállítások megnyitása. Kérjük kapcsold be a Wi-Fi-t kézzel! + Helymeghatározás jogosultságok megadása Helymeghatározás-szolgáltatások bekapcsolása Wi-Fi bekapcsolása @@ -4728,6 +4750,7 @@ Megosztás + Küldés , %1$s @@ -5031,6 +5054,119 @@ Billentyűzet Küldés Enterrel + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Üzenetek @@ -5115,6 +5251,7 @@ Médiafájl minősége + Elküldött médiafájl minősége A nagy felbontású médiafájl elküldése több adatforgalommal jár. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + A biztonsági mentésre vonatkozó előfizetésed lejárt - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + A biztonsági mentésre vonatkozó előfizetésed lejárt, mert a jelenlegi fizetési móddal nem lehetett megújítani. %1$d nap elteltével a biztonsági mentésben lévő médiafájlok törlődnek. + A biztonsági mentésre vonatkozó előfizetésed lejárt, mert a jelenlegi fizetési móddal nem lehetett megújítani. %1$d nap elteltével a biztonsági mentésben lévő médiafájlok törlődnek. Bármikor újra elkezdhetsz fizetni a biztonsági mentésekért, hogy folytathasd az összes médiafájl biztonsági mentését. @@ -7257,9 +7394,9 @@ Ha a „Kihagyás” lehetőséget választod, a biztonsági mentésben tárolt médiafájlok %1$d napon belül törlődnek. - Your backups subscription failed to renew + Nem sikerült megújítani a biztonsági mentésre vonatkozó előfizetésedet - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Ellenőrizd, hogy a megadott fizetési mód naprakész-e. Koppints az „Előfizetés kezelése” elemre, majd a Fizetési módok alatt koppints a Frissítés lehetőségre. Nem sikerült elvégezni a biztonsági mentést @@ -7271,7 +7408,7 @@ Előfizetés kezelése - Subscribe for %1$s/month + Fizess elő %1$s/hó áron Médiafájl letöltése most @@ -7306,6 +7443,17 @@ %1$s / %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ A tárhely-optimalizálás csak a díj ellenében igénybe vehető Signal biztonsági mentésekkel használható. A funkció használatának megkezdéséhez frissítsd a biztonsági csomagodat. - Subscribe for %1$s/month + Fizess elő %1$s/hó áron - This media is no longer available + Ez a médiafájl már nem érhető el - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + A jelenlegi Signal biztonsági mentési csomagod tartalmazza a legutóbbi %1$d nap médiafájljait. Az összes médiafájl biztonsági mentésének megkezdéséhez frissíts most. + A jelenlegi Signal biztonsági mentési csomagod tartalmazza a legutóbbi %1$d nap médiafájljait. Az összes médiafájl biztonsági mentésének megkezdéséhez frissíts most. - Subscribe for %1$s/month + Fizess elő %1$s/hó áron A törlés mostantól az összes eszközödön szinkronizálva van @@ -7413,11 +7561,13 @@ A biztonsági mentés típusa megváltozott, és az előfizetés törlésre került - Előfizetés törölve + Subscription canceled A letöltés kész A biztonsági mentés éjszaka kerül létrehozásra. + + Subscription inactive Biztonsági terv @@ -7426,8 +7576,12 @@ %1$s/hó A biztonsági terv ingyenes - + Megújul ekkor: %1$s + + Expires on %1$s + + Expired on %1$s Készíts biztonsági másolatot az üzenetelőzményeidről, hogy soha ne veszíts el adatot új telefon vásárlásakor vagy a Signal újratelepítésekor. @@ -7472,6 +7626,10 @@ Manuális biztonsági mentés Kérjük, add meg az eszköz PIN-kódját, jelszavát vagy mintáját. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index cea11a9fa6..09a00bebc7 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -365,6 +365,8 @@ Obrolan Pesan + + Chat types Pesan %1$s @@ -796,7 +798,7 @@ - You\'re all set. Start your backup now. + Semua sudah siap. Mulai pencadangan Anda sekarang. Tergantung ukuran data cadangan Anda, ini bisa memakan waktu lama. Anda dapat menggunakan ponsel seperti biasa saat pencadangan berlangsung. @@ -1908,6 +1910,7 @@ +%1$d diundang + %1$d grup tambahan @@ -1933,6 +1936,7 @@ Perangkat tidak ditemukan. Jaringan gagal. Kode QR tidak valid. + Maaf, Anda memiliki terlalu banyak perangkat yang terhubung, coba buang beberapa Maaf, ini bukan tautan perangkat kode QR yang valid. Hubungkan perangkat Signal? @@ -1954,11 +1958,13 @@ Kirim frasa sandi Frasa sandi tidak valid! Buka kunci Signal + Signal Android - Kunci Layar Peta + Pasang pointer tempat Terima alamat @@ -2440,6 +2446,7 @@ Pesan Signal + Selanjutnya @@ -2471,6 +2478,7 @@ Tidak ada stiker terpasang Stiker-stiker dari pesan masuk akan muncul di sini Tanpa judul + Tidak dikenal @@ -2691,6 +2699,7 @@ Media tidak tersedia. Tidak dapat memutar media. + Eror saat menemukan pesan. Tidak dapat menemukan aplikasi untuk berbagi media ini. Tutup @@ -2760,6 +2769,7 @@ Pesan Panggilan + Gagal Cadangan Status penguncian @@ -2769,6 +2779,7 @@ Tidak dikenal Pesan suara Kontak bergabung dengan Signal + Tidak ada aktivitas yang tersedia untuk membuka pengaturan notifikasi saluran. Koneksi belakang layar @@ -3540,10 +3551,12 @@ Semua riwayat pesan akan dihapus dari semua perangkat secara permanen. Tindakan ini tidak dapat dibatalkan. Hapus semua sekarang + Selamanya 1 tahun 6 bulan 30 hari + Kosong %1$s pesan @@ -3567,6 +3580,7 @@ Tampilkan Nada dering Ukuran huruf pesan + Prioritas Pemecahan masalah terkait notifikasi @@ -3795,6 +3809,7 @@ Pindai kode QR alamat untuk penerima pembayaran + Permintaan Bayar Saldo tersedia: %1$s @@ -3925,6 +3940,7 @@ Anda hanya dapat menyematkan hingga %1$d obrolan + Gambar Foto Kontak Diarsipkan @@ -3933,6 +3949,10 @@ Obrolan baru Buka Kamera Belum ada obrolan.\nMulailah dengan mengirim pesan ke seorang teman. + + No chats to display + + Folder settings @@ -4157,6 +4177,7 @@ Cadangan obrolan Transfer akun Transfer akun ke perangkat Android baru + Masukkan frasa sandi cadangan Pulihkan Tidak bisa impor cadangan dari versi lebih baru Signal @@ -4364,6 +4385,7 @@ Tidak dapat membuka Pengaturan Wi-Fi. Mohon nyalakan Wi-Fi secara manual. + Izinkan penggunaan lokasi Nyalakan layanan lokasi Nyalakan Wi-Fi @@ -4610,6 +4632,7 @@ Bagikan + Kirim , %1$s @@ -4912,6 +4935,116 @@ Papan ketik Kirim dengan enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat types + + + + %1$d chats + + + + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Pesan @@ -4995,6 +5128,7 @@ Kualitas media + Kualitas media terkirim Mengirimkan media dengan kualitas tinggi akan menggunakan lebih banyak data. @@ -7079,10 +7213,10 @@ - Your backups subscription expired + Langganan pencadangan Anda kedaluwarsa - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Paket pencadangan Anda telah kedaluwarsa karena tidak dapat diperpanjang dengan metode pembayaran Anda saat ini. Setelah %1$d hari, media di cadangan Anda akan dihapus. Anda dapat kembali membayar paket pencadangan data kapan saja agar bisa lanjut mencadangkan semua media Anda. @@ -7099,9 +7233,9 @@ Jika Anda memilih \"Lewati\", media di cadangan Anda akan dihapus dalam %1$d hari. - Your backups subscription failed to renew + Langganan pencadangan Anda gagal diperpanjang - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Cek dan pastikan metode pembayaran Anda sudah yang terbaru. Ketuk Kelola langganan, dan di bagian Metode pembayaran ketuk Perbarui. Tidak dapat menyelesaikan pencadangan @@ -7113,7 +7247,7 @@ Kelola langganan - Subscribe for %1$s/month + Langganan dengan %1$s/bulan Unduh media sekarang @@ -7148,6 +7282,17 @@ %1$s dari %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7201,17 +7346,17 @@ Pengoptimalan penyimpanan hanya dapat digunakan dengan Pencadangan Signal berbayar. Upgrade paket pencadangan Anda untuk mulai menggunakan fitur ini. - Subscribe for %1$s/month + Langganan dengan %1$s/bulan - This media is no longer available + Media ini sudah tidak tersedia - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Paket pencadangan Signal Anda saat ini mencakup media selama %1$d hari terakhir. Untuk mulai mencadangkan semua media, tingkatkan paket sekarang. - Subscribe for %1$s/month + Langganan dengan %1$s/bulan Penghapusan kini disinkronkan di semua perangkat Anda @@ -7254,11 +7399,13 @@ Tipe pencadangan diubah dan langganan dibatalkan - Langganan dibatalkan + Subscription canceled Unduhan selesai Pencadangan akan diproses dalam semalam. + + Subscription inactive Paket pencadangan @@ -7267,8 +7414,12 @@ %1$s/bulan Paket pencadangan Anda gratis - + Diperpanjang %1$s + + Expires on %1$s + + Expired on %1$s Cadangkan riwayat pesan sehingga data Anda tidak akan hilang saat Anda memakai ponsel baru atau menginstal ulang Signal. @@ -7313,6 +7464,10 @@ Cadangkan manual Masukkan pin, kata sandi, atau pola kunci perangkat Anda. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 6192cf5dd6..5766eb3253 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -368,6 +368,8 @@ Chat Messaggi + + Chat types Messaggio %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Non devi fare nient\'altro. Comincia subito il tuo backup. A seconda delle dimensioni del tuo backup, potrebbe essere necessario più tempo. Puoi usare il tuo telefono normalmente mentre il backup è in corso. @@ -1969,6 +1971,7 @@ +%1$d persona invitata +%1$d persone invitate + %1$d gruppo ulteriore %1$d gruppi ulteriori @@ -1995,6 +1998,7 @@ Nessun dispositivo trovato. Errore di rete. Codice QR non valido. + Siamo spiacenti, hai troppi dispositivi connessi, prova a scollegarne qualcuno Ci spiace, questo non è un codice QR valido per collegare il dispositivo. Collegare un dispositivo Signal? @@ -2017,11 +2021,13 @@ Inserisci password Password non valida! Sblocca Signal + Signal Android - Blocco schermo Mappa + Posiziona l\'indicatore Accetta indirizzo @@ -2525,6 +2531,7 @@ Messaggio Signal + Altro @@ -2556,6 +2563,7 @@ Nessun pacchetto di adesivi installato Gli adesivi dei messaggi in arrivo appariranno qui Senza titolo + Sconosciuto @@ -2777,6 +2785,7 @@ Media non più disponibile. Impossibile riprodurre il video. + Errore durante la ricerca del messaggio. Impossibile trovare un\'app per condividere questo media. Chiudi @@ -2848,6 +2857,7 @@ Messaggi Chiamate + Errori Backup In stato bloccato @@ -2857,6 +2867,7 @@ Sconosciuto Note vocali Quando un contatto si unisce a Signal + Nessuna attività disponibile per aprire le impostazioni del canale di notifica. Connessione in background @@ -3641,10 +3652,12 @@ Tutta la cronologia messaggi verrà rimossa definitivamente da tutti i dispositivi. Quest\'azione non può essere annullata. Elimina tutto ora + Per sempre 1 anno 6 mesi 30 giorni + Nessuno %1$s messaggio @@ -3669,6 +3682,7 @@ Mostra Suoneria Dimensione carattere messaggio + Priorità Risoluzione dei problemi relativi alle notifiche @@ -3897,6 +3911,7 @@ Scansiona il codice QR dell\'indirizzo del beneficiario + Richiedi Paga Saldo disponibile: %1$s @@ -4028,6 +4043,7 @@ Puoi fissare solo fino a %1$d chat + Foto del contatto Archiviate @@ -4036,6 +4052,10 @@ Nuova chat Apri Fotocamera Ancora nessuna chat.\nInizia inviando un messaggio a un amico. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Backup delle chat Trasferisci account Trasferisci l\'account su un nuovo dispositivo Android + Inserire passphrase del backup Ripristina Imposs. importare backup da versioni recenti di Signal @@ -4475,6 +4496,7 @@ Impossibile aprire le impostazioni Wi-Fi. Attiva il Wi-Fi manualmente. + Concedi l\'autorizzazione alla posizione Attiva i servizi di localizzazione Attiva il Wi-Fi @@ -4728,6 +4750,7 @@ Condividi + Invia , %1$s @@ -5031,6 +5054,119 @@ Tastiera Invia premendo invio + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Messaggi @@ -5115,6 +5251,7 @@ Qualità media + Qualità media inviati L\'invio di media in alta qualità utilizzerà più dati. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Il tuo piano per i backup è scaduto - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Il tuo abbonamento per i backup è terminato perché non siamo riusciti a rinnovarlo usando il tuo metodo di pagamento attuale. Tra %1$d giorno, tutti i media nel tuo backup verranno eliminati. + Il tuo abbonamento per i backup è terminato perché non siamo riusciti a rinnovarlo usando il tuo metodo di pagamento attuale. Tra %1$d giorni, tutti i media nel tuo backup verranno eliminati. Puoi tornare a pagare per il backup dei tuoi media in qualsiasi momento. @@ -7257,9 +7394,9 @@ Se scegli \"Salta\", i media presenti nel tuo backup verranno eliminati tra %1$d giorni. - Your backups subscription failed to renew + Il tuo piano per i backup non è stato rinnovato - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Assicurati che il tuo metodo di pagamento sia aggiornato. Vai su \"Gestisci abbonamento\" e sotto l\'opzione \"Metodi di pagamento\" seleziona \"Aggiorna\". Impossibile completare il backup @@ -7269,9 +7406,9 @@ Salta - Gestisci contributo + Gestisci abbonamento - Subscribe for %1$s/month + Abbonati a %1$s al mese Scarica ora i media @@ -7306,6 +7443,17 @@ %1$s di %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ L\'ottimizzazione dello spazio di archiviazione è una funzione disponibile solo con i piani a pagamento di Signal. Scegli il tuo piano di backup per poterla usare. - Subscribe for %1$s/month + Abbonati a %1$s al mese - This media is no longer available + Questo media non è più disponibile - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Il tuo piano per i backup su Signal include %1$d giorno di media (il più recente). Se desideri un backup completo di tutti i tuoi media, passa a un altro abbonamento. + Il tuo piano per i backup su Signal include gli ultimi %1$d giorni di media. Se desideri un backup completo di tutti i tuoi media, passa a un altro abbonamento. - Subscribe for %1$s/month + Abbonati a %1$s al mese Il processo di eliminazione è ora sincronizzato su tutti i tuoi dispositivi @@ -7413,11 +7561,13 @@ Tipo di backup cambiato e donazione annullata - Contributo annullato + Subscription canceled Download completato Il backup verrà creato stanotte. + + Subscription inactive Piano del backup @@ -7426,8 +7576,12 @@ %1$s al mese Piano gratuito per i backup - + Rinnovo %1$s + + Expires on %1$s + + Expired on %1$s Salva la cronologia dei tuoi messaggi con dei backup per non perdere neanche una virgola quando compri un nuovo telefono o reinstalli Signal. @@ -7472,6 +7626,10 @@ Backup manuale Inserisci PIN, password o pattern del dispositivo. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 2b7d2d6aeb..89269e97dc 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -374,6 +374,8 @@ צ׳אטים הודעות + + Chat types %1$s של הודעה @@ -856,7 +858,7 @@ - You\'re all set. Start your backup now. + הכל מוכן. אפשר להתחיל את הגיבוי. בהתאם לגודל הגיבוי שלך, זה עשוי להימשך זמן רב. אפשר להשתמש בטלפון שלך כרגיל בזמן שהגיבוי מתבצע. @@ -2091,6 +2093,7 @@ +%1$d הוזמנו +%1$d הוזמנו + קבוצה %1$d נוספת %1$d קבוצות נוספות @@ -2119,6 +2122,7 @@ לא נמצא מכשיר. שגיאת רשת. קוד QR בלתי תקף. + סליחה, יש לך יותר מדי מכשירים מקושרים, נסה להסיר כמה סליחה, זה לא קוד QR תקף של קישור מכשיר. לקשר מכשיר Signal? @@ -2143,11 +2147,13 @@ הגש משפט־סיסמה משפט־סיסמה בלתי תקף! שחרר נעילת Signal + Signal Android - מסך נעילה מפה + זרוק מצביע אשר כתובת @@ -2695,6 +2701,7 @@ הודעת Signal + עוד @@ -2726,6 +2733,7 @@ אין מדבקות מותקנות מדבקות מהודעות נכנסות יופיעו כאן ללא כותרת + בלתי ידוע @@ -2949,6 +2957,7 @@ מדיה אינה זמינה יותר. לא ניתן לנגן מדיה. + שגיאה במציאת הודעה. לא ניתן למצוא יישום שמסוגל לשתף מדיה זו. סגור @@ -3024,6 +3033,7 @@ הודעות שיחות + כישלונות גיבויים מעמד נעילה @@ -3033,6 +3043,7 @@ בלתי ידוע הערות קוליות איש קשר הצטרף אל Signal + אין פעילות זמינה כדי לפתוח הגדרות של ערוץ התראות. חיבור רקע @@ -3843,10 +3854,12 @@ כל היסטוריית ההודעות תוסר לצמיתות מכל המכשירים. פעולה זו לא ניתנת לביטול. למחוק הכל עכשיו + לנצח שנה 1 6 חודשים 30 ימים + אין הודעה %1$s @@ -3873,6 +3886,7 @@ הראה צלצול גודל גופן הודעה + עדיפות פתרון תקלות של התראות @@ -4101,6 +4115,7 @@ סרוק את קוד ה־QR של הכתובת של המשלם + בקשה שלם מאזן זמין: %1$s @@ -4234,6 +4249,7 @@ אפשר להצמיד רק עד %1$d צ׳אטים + תמונת איש קשר בארכיון @@ -4242,6 +4258,10 @@ צ\'אט חדש פתח מצלמה אין צ׳אטים עדיין.\nאפשר להתחיל באמצעות שליחת הודעה לחבר או חברה. + + No chats to display + + Folder settings @@ -4490,6 +4510,7 @@ גיבויי צ׳אטים העבר חשבון העבר חשבון אל מכשיר Android חדש + הכנס משפט־סיסמה של גיבוי שחזר לא ניתן לייבא גיבויים מגרסאות חדשות יותר של Signal @@ -4697,6 +4718,7 @@ לא היה ניתן לפתוח הגדרות Wi-Fi. אנא הפעל Wi-Fi באופן ידני. + הענק הרשאת מיקום הפעל שירותי מיקום הפעל Wi-Fi @@ -4964,6 +4986,7 @@ שתף + שלח , %1$s @@ -5269,6 +5292,125 @@ מקלדת שליחה עם enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + %1$d chat types + %1$d chat types + + + + %1$d chat + %1$d chats + %1$d chats + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + %1$d chats excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done הודעות @@ -5355,6 +5497,7 @@ איכות מדיה + הגדר איכות מדיה שליחת מדיה באיכות גבוהה תשתמש ביותר נתונים. @@ -7547,13 +7690,13 @@ - Your backups subscription expired + פג תוקף מנוי הגיבויים שלך - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + תכנית הגיבוי שלך פגה תוקף כי לא ניתן היה לחדש אותה באמצעות אמצעי התשלום הנוכחי שלך. לאחר יום %1$d, המדיה בגיבוי שלך תימחק. + תכנית הגיבוי שלך פגה תוקף כי לא ניתן היה לחדש אותה באמצעות אמצעי התשלום הנוכחי שלך. לאחר יומיים, המדיה בגיבוי שלך תימחק. + תכנית הגיבוי שלך פגה תוקף כי לא ניתן היה לחדש אותה באמצעות אמצעי התשלום הנוכחי שלך. לאחר %1$d ימים, המדיה בגיבוי שלך תימחק. + תכנית הגיבוי שלך פגה תוקף כי לא ניתן היה לחדש אותה באמצעות אמצעי התשלום הנוכחי שלך. לאחר %1$d ימים, המדיה בגיבוי שלך תימחק. אפשר לחזור לשלם על גיבויים בכל עת כדי להמשיך לגבות את כל המדיה שלך. @@ -7573,9 +7716,9 @@ בחירה ב״דילוג״ תגרום למחיקת המדיה בגיבוי שלך בעוד %1$d ימים. - Your backups subscription failed to renew + לא ניתן היה לחדש את מנוי הגיבויים שלך - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + כדאי לוודא שאמצעי התשלום שלך מעודכן. יש ללחוץ על ״ניהול מנוי,״ ותחת ״אמצעי תשלום״ ללחוץ על ״עדכון.״ לא היה ניתן להשלים את הגיבוי @@ -7587,7 +7730,7 @@ ניהול מנוי - Subscribe for %1$s/month + רכישת מנוי עבור %1$s/חודש הורדת מדיה כעת @@ -7622,6 +7765,17 @@ %1$s מתוך %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7675,20 +7829,20 @@ ניתן להשתמש באופטימיזציה של אחסון רק עם אפשרות הגיבוי בתשלום של Signal. אפשר לשדרג את תכנית הגיבוי שלך כדי להתחיל להשתמש בפיצ׳ר. - Subscribe for %1$s/month + רכישת מנוי עבור %1$s/חודש - This media is no longer available + המדיה הזו לא זמינה יותר - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + תכנית הגיבוי הנוכחית שלך ב–Signal כוללת את היום האחרון ביותר של מדיה. כדי להתחיל לגבות את כל המדיה שלך, אפשר לשדרג עכשיו. + תכנית הגיבוי הנוכחית שלך ב–Signal כוללת את %1$d ימי המדיה האחרונים ביותר. כדי להתחיל לגבות את כל המדיה שלך, אפשר לשדרג עכשיו. + תכנית הגיבוי הנוכחית שלך ב–Signal כוללת את %1$d ימי המדיה האחרונים ביותר. כדי להתחיל לגבות את כל המדיה שלך, אפשר לשדרג עכשיו. + תכנית הגיבוי הנוכחית שלך ב–Signal כוללת את %1$d ימי המדיה האחרונים ביותר. כדי להתחיל לגבות את כל המדיה שלך, אפשר לשדרג עכשיו. - Subscribe for %1$s/month + רכישת מנוי עבור %1$s/חודש המחיקה מסונכרנת כעת בכל המכשירים שלך @@ -7731,11 +7885,13 @@ סוג הגיבוי השתנה והמנוי בוטל - מינוי בוטל + Subscription canceled ההורדה הושלמה הגיבוי ייווצר במהלך הלילה. + + Subscription inactive תכנית גיבוי @@ -7744,8 +7900,12 @@ %1$s לחודש תכנית הגיבוי שלך היא חינמית - + מתחדש ב–%1$s + + Expires on %1$s + + Expired on %1$s אפשר לגבות את היסטוריית ההודעות כך שאף פעם לא מאבדים נתונים כשמחליפים טלפון או מתקינים מחדש את Signal. @@ -7790,6 +7950,10 @@ גיבוי ידני יש להכניס את קוד ה–PIN, הסיסמה, או התבנית של המכשיר שלך. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 9bbd005006..bec5955c64 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -365,6 +365,8 @@ チャット メッセージ + + Chat types %1$s にメッセージを送る @@ -796,7 +798,7 @@ - You\'re all set. Start your backup now. + すべての設定が完了しています。今すぐバックアップを開始しましょう。 バックアップのサイズによっては、時間がかかる場合があります。バックアップが実行されている間でも、通常どおり電話を使用できます。 @@ -1908,6 +1910,7 @@ +%1$d人招待中 + ほか%1$dグループ @@ -1933,6 +1936,7 @@ 端末がありません。 ネットワークエラー。 QR コードが無効です。 + リンクしている端末が多すぎます。いくつか削除してください。 この端末リンク用QRコードは正しくありません。 Signal端末をリンクしますか? @@ -1954,11 +1958,13 @@ パスフレーズを設定する 不正なパスフレーズです! Signalのロックを解除する + Signal Android - ロック画面 地図 + ピンを打つ アドレスを受け入れる @@ -2440,6 +2446,7 @@ Signalメッセージ + その他 @@ -2471,6 +2478,7 @@ ステッカーはインストールされていません 受信メッセージのステッカーはここに表示されます 無題 + 不明 @@ -2691,6 +2699,7 @@ メディアが存在しません。 メディアを再生できません。 + メッセージ検索中にエラーが発生しました。 このメディアを共有できるアプリが見つかりません。 閉じる @@ -2760,6 +2769,7 @@ メッセージ 通話 + 障害 バックアップ ロック状態 @@ -2769,6 +2779,7 @@ 不明 音声メモ 連絡先のSignal参加時 + 通知チャネルの設定を開くためのアクティビティがありません。 バックグラウンド接続 @@ -3540,10 +3551,12 @@ すべてのメッセージ履歴を、すべての端末から完全に削除します。削除すると復元することはできません。 すべて消去する + 無期限 1年 6ヶ月 30日 + なし %1$s件のメッセージ @@ -3567,6 +3580,7 @@ 表示 着信音 メッセージのフォントサイズ + 優先度 さまざまな通知のトラブルシューティング @@ -3795,6 +3809,7 @@ 受取人のアドレスQRコードをスキャンしてください + 請求する 送金 利用可能残高: %1$s @@ -3925,6 +3940,7 @@ ピン留めできるチャットは%1$d件までです + 連絡先の画像 アーカイブ済み @@ -3933,6 +3949,10 @@ 新しいチャット カメラを開く まだチャットがありません。\n友達にメッセージを送って始めましょう。 + + No chats to display + + Folder settings @@ -4157,6 +4177,7 @@ チャットのバックアップ アカウントの移行 新しいAndroid端末にアカウントを移行します。 + バックアップ用パスフレーズを入力してください 復元する 現在ご利用のものより新しいバージョンの Signal からはバックアップをインポートできません @@ -4364,6 +4385,7 @@ Wi-Fi設定を開けません。手動でWi-Fiを有効にしてください。 + 位置情報へのアクセスを許可する 位置情報サービスを有効にする Wi-Fiを有効にしてください @@ -4610,6 +4632,7 @@ 共有する + 送信する , %1$s @@ -4912,6 +4935,116 @@ キーボード Enterで送信 + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat types + + + + %1$d chats + + + + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done メッセージ @@ -4995,6 +5128,7 @@ メディアの画質 + 送信メディアの画質 高画質なメディアの送信には、より多くのデータを使用します。 @@ -7079,10 +7213,10 @@ - Your backups subscription expired + バックアップサブスクリプションの有効期限が切れています - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + 現在のお支払い方法で更新できなかったため、バックアッププランの有効期限が切れました。%1$d日後にバックアップ内のメディアは消去されます。 決済の再開はいつでも可能であり、すべてのメディアのバックアップは継続されます。 @@ -7099,9 +7233,9 @@ 「スキップ」を選択すると、バックアップ内のメディアは%1$d日後に消去されます。 - Your backups subscription failed to renew + バックアップサブスクリプションの更新ができませんでした - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + お支払い方法が現在も有効なものであるかをご確認ください。「サブスクリプションを管理する」をタップして、お支払い方法の下に表示される「アップデートする」をタップします。 バックアップが完了していません @@ -7113,7 +7247,7 @@ サブスクリプションを管理する - Subscribe for %1$s/month + %1$s /月で申し込む 今すぐメディアをダウンロードする @@ -7148,6 +7282,17 @@ %1$s/%2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7201,17 +7346,17 @@ ストレージの最適化は、Signalバックアップの有料版でのみご利用いただけます。この機能をご利用になるには、バックアッププランをアップグレードしてください。 - Subscribe for %1$s/month + %1$s /月で申し込む - This media is no longer available + このメディアはすでに消去されています - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + ご利用中のSignalバックアッププランには、直近%1$d日間のメディアのバックアップが含まれています。すべてのメディアのバックアップを開始するには、今すぐアップグレードしてください。 - Subscribe for %1$s/month + %1$s /月で申し込む 消去機能がすべての端末で同期されるようになりました @@ -7254,11 +7399,13 @@ バックアップの種類が変更され、サブスクリプションがキャンセルされました - サブスクリプションが解除されました + Subscription canceled ダウンロード完了 バックアップは夜間に作成されます。 + + Subscription inactive バックアッププラン @@ -7267,8 +7414,12 @@ %1$s/月プラン 現在のバックアッププランは無料プランです - + 更新 %1$s + + Expires on %1$s + + Expired on %1$s メッセージ履歴をバックアップしておくと、電話を買い替えたり、Signalを再インストールしたりしてもデータが失われることはありません。 @@ -7313,6 +7464,10 @@ 手動でバックアップ ご利用の端末のPIN、パスワード、またはパターンを入力してください。 + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml index 6fab249ce4..045b856832 100644 --- a/app/src/main/res/values-ka/strings.xml +++ b/app/src/main/res/values-ka/strings.xml @@ -368,6 +368,8 @@ ჩატები შეტყობინებები + + Chat types შეტყობინება %1$s @@ -1969,6 +1971,7 @@ +%1$d მოწვეული +%1$d მოწვეული + დამატებით %1$d ჯგუფი დამატებით %1$d ჯგუფი @@ -1995,6 +1998,7 @@ მოწყობილობის მოძებნა ვერ მოხერხდა. ქსელის ხარვეზი. არასწორი QR კოდი. + ვწუხვართ, უკვე ძალიან ბევრი მოწყობილობა გაქვს დაკავშირებული, ზოგიერთის წაშლა სცადე ვწუხვართ, ეს არ არის მოწყობილობის მიბმის მოქმედი QR კოდი. მივაბათ Signal-ს მოწყობილობა? @@ -2017,11 +2021,13 @@ პაროლ-ფრაზის დადასტურება არასწორი პაროლ-ფრაზა! Signal-ის გახსნა + Signal Android - დაბლოკილი ეკრანი რუკა + პინის დასმა მისამართის დადასტურება @@ -2525,6 +2531,7 @@ Signal-ის შეტყობინება + მეტი @@ -2556,6 +2563,7 @@ გადმოწერილი სტიკერები ვერ მოიძებნა სტიკერები შემომავალი შეტყობინებებიდან აქ გამოჩნდება უსათაურო + უცნობი @@ -2777,6 +2785,7 @@ მედია-ფაილი აღარაა ხელმისაწვდომი. მედია ფაილის ჩართვა ვერ მოხერხდა + წერილის მოძებნა ვერ მოხერხდა. ვერ მოიძებნა აპი, რომელსაც შეუძლია ამ მედია-ფაილის გაზიარება. Close @@ -2848,6 +2857,7 @@ შეტყობინებები ზარები + წარუმატებელი ცდები სარეზერვო კოპიები ბლოკირების სტატუსი @@ -2857,6 +2867,7 @@ უცნობი ხმოვანი ჩანიშვნები კონტაქტი Signal-ს შემოუერთდა + შეტყობინებების არხის პარამეტრების გასახსნელად აქტივობა მიუწვდომელია. ფონური კავშირი @@ -3641,10 +3652,12 @@ წერილების მთელი ისტორია სამუდამოდ წაიშლება ყველა მოწყობილობიდან. ეს მოქმედება ვეღარ გაუქმდება. ყველას წაშლა ახლავე + სამუდამოდ 1 წლით 6 თვით 30 დღით + არცერთი %1$s შეტყობინება @@ -3669,6 +3682,7 @@ ჩვენება მელოდია შეტყობინების ფონტის ზომა + პრიორიტეტი შეტყობინებების ხარვეზის გამოსწორება @@ -3897,6 +3911,7 @@ ტრანზაქციის მიმღების მისამართის QR კოდის სკანირება + მოთხოვნა გადახდა ხელმისაწვდომი ბალანსი: %1$s @@ -4028,6 +4043,7 @@ მაქსიმუმ %1$d ჩატის აპინვა შეგიძლია + კონტაქტის ფოტო სურათი დაარქივებული @@ -4036,6 +4052,10 @@ ახალი ჩატი კამერის გახსნა ჩატები ჯერ ვერ მოიძებნა.\nდაიწყე მეგობართან შეტყობინების გაგზავნით. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ ჩატის სარეზერვო კოპიები მონაცემების გადატანა გადაიტანე მონაცემები Android-ის ახალ მოწყობილობაში + შეიყვანე სარეზერვო კოპიების პაროლ-ფრაზა აღდგენა Signal-ის ახალი ვერსიიდან ასლების გადმოტანა შეუძლებელია @@ -4475,6 +4496,7 @@ Wi-Fi პარამეტრების გახსნა ვერ მოხერხდა. გთხოვთ, ხელით ჩართო Wi-Fi. + ადგილმდებარეობის ნებართვის გაცემა ადგილმდებარეობის სერვისების ჩართა Wi-Fi-ს ჩართვა @@ -4728,6 +4750,7 @@ გაზიარება + გაგზავნა , %1$s @@ -5031,6 +5054,119 @@ კლავიატურა Enter-ით გაგზავნა + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done შეტყობინებები @@ -5115,6 +5251,7 @@ მედია-ფაილების ხარისხი + გაგზავნილი მედია-ფაილების ხარისხი მაღალი ხარისხის მედია-ფაილის გაგზავნა უფრო მეტ მობილურ ინტერნეტს გამოიყენებს. @@ -7306,6 +7443,17 @@ %1$s %2$s-დან + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7413,11 +7561,13 @@ სარეზერვო კოპირების ტიპი შეცვლილია და გამოწერა გაუქმდა - გამოწერა გაუქმებულია + Subscription canceled ჩამოტვირთვა დასრულებულია სარეზერვო კოპიები ღამით შეიქმნება. + + Subscription inactive სათადარიგო ასლების არჩეული გამოწერა @@ -7426,8 +7576,12 @@ %1$s/თვეში შენი სათადარიგო ასლების გამოწერა უფასოა - + განახლდება %1$s-ში + + Expires on %1$s + + Expired on %1$s შექმენი შენი მიმოწერის ისტორიის სათადარიგო ასლები, რათა ახალი მობილურის შეძენისას ან Signal-ის თავიდან გადმოწერისას მონაცემები არ დაკარგო. @@ -7472,6 +7626,10 @@ შენით შექმენი სარეზერვო კოპია გთხოვთ, შენი მოწყობილობის პინ-კოდი, პაროლი ან პატერნი შეიყვანო. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-kk/strings.xml b/app/src/main/res/values-kk/strings.xml index 82fa0b8814..5735e21469 100644 --- a/app/src/main/res/values-kk/strings.xml +++ b/app/src/main/res/values-kk/strings.xml @@ -368,6 +368,8 @@ Чаттар Хаттар + + Chat types %1$s нөміріне хат жазу @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Барлығы дайын. Сақтық көшірме жасауды бастай берсеңіз болады. Резервтік көшірменің өлшеміне байланысты оған ұзақ уақыт керек болуы мүмкін. Резервтік көшірме жасалып жатып, телефоныңызды әдеттегідей пайдалана аласыз. @@ -1969,6 +1971,7 @@ +%1$d шақырылды +%1$d шақырылды + %1$d қосымша топ Қосымша %1$d топ @@ -1995,6 +1998,7 @@ Бірде-бір құрылғы табылмады. Желі қатесі. QR коды дұрыс емес. + Кешіріңіз, тым көп құрылғы байланыстырылған, бірнешеуін өшіріңіз Кешіріңіз, бұл құрылғы сілтемесінің QR коды дұрыс емес. Signal құрылғысын байланыстыру керек пе? @@ -2017,11 +2021,13 @@ Құпия сөйлемді жіберу Құпия сөйлем дұрыс емес! Signal қолданбасының құлпын ағыту + Signal Android - Құлыптау экраны Карта + Ине қадау Мекенжайды қабылдау @@ -2525,6 +2531,7 @@ Signal хаты + Толығырақ @@ -2556,6 +2563,7 @@ Орнатылған жапсырма жоқ Келетін хабарламалардың жапсырмалары осы жерде пайда болады Атауы жоқ + Белгісіз @@ -2777,6 +2785,7 @@ Мультимедиа қолжетімді емес. Мультимедианы ойнату мүмкін емес. + Хатты іздеу кезінде қате шықты. Бұл мультимедиа файлын бөлісе алатын қолданба табылмады. Close @@ -2848,6 +2857,7 @@ Хабарламалар Қоңыраулар + Ақаулар Резервтік көшірмелер Құлып күйі @@ -2857,6 +2867,7 @@ Белгісіз Дауыстық ескертпелер Контакт Signal-ға қосылды + Хабарландыру арнасының параметрлерін ашу үшін бірде-бір әрекет жоқ. Фондық режимде қосылу @@ -3641,10 +3652,12 @@ Хаттар тарихы барлық құрылғыдан түгелдей біржола өшіп қалады. Өшіріп тастасаңыз, оны қайтарып ала алмайсыз. Барлығын қазір жою + Біржола 1 жыл 6 ай 30 күн + Ешқайсы %1$s хат @@ -3669,6 +3682,7 @@ Көрсету Рингтон Хатта қолданылған қаріп өлшемі + Басымдық Ақауларды түзету хабарландырулары @@ -3897,6 +3911,7 @@ Төлем алушы мекенжайының QR кодын сканерлеңіз + Өтініш Төлеу Қолжетімді баланс: %1$s @@ -4028,6 +4043,7 @@ Бар-жоғы %1$d чатты бекіте аласыз + Контакт фотосуреті Мұрағатталды @@ -4036,6 +4052,10 @@ Жаңа чат Камераны ашу Әлі бірде-бір чат жоқ.\nДосыңызға хат жазып бастаңыз. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Чаттың резервтік көшірмелері Аккаунтты тасымалдау Аккаунтты жаңа Android құрылғысына тасымалдау + Сақтық көшірме құпия сөйлемін енгізу Қалпына келтіру Сақтық көшірмелер жаңа нұсқалардан импортталмайды @@ -4475,6 +4496,7 @@ Wi-Fi параметрлерін ашу мүмкін емес. Wi-Fi-ды қолмен қосыңыз. + Локация рұқсатын беру Локация қызметтерін қосу Wi-Fi қосу @@ -4728,6 +4750,7 @@ Бөлісу + Жіберу , %1$s @@ -5031,6 +5054,119 @@ Пернетақта Enter пернесімен жіберу + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Хабарламалар @@ -5115,6 +5251,7 @@ Мультимедиа сапасы + Жіберілген мультимедиа сапасы Жоғары сапалы мультимедианы жібергенде, трафик көбірек қолданылады. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Сақтық көшірме жасау бойынша жазылым мерзімі аяқталды - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Сақтық көшірме жоспарының мерзімі аяқталды, себебі оны қазіргі төлеу әдісімен ұзарту мүмкін болмады. %1$d күннен кейін сақтық көшірмеңізден мультимедиа жойылады. + Сақтық көшірме жоспарының мерзімі аяқталды, себебі оны қазіргі төлеу әдісімен ұзарту мүмкін болмады. %1$d күннен кейін сақтық көшірмеңізден мультимедиа жойылады. Барлық мультимедианың резервтік көшірмесін қайта жасай бастау үшін кез келген уақытта резервтік көшірмелер үшін төлей бастауыңызға болады. @@ -7257,9 +7394,9 @@ «Өткізіп жіберу» опциясын таңдасаңыз, резервтік көшірмедегі мультимедиа %1$d күннен кейін жойылады. - Your backups subscription failed to renew + Сақтық көшірме жазылымының мерзімі ұзартылмады - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Төлеу әдісіңіз жаңартылғанына көз жеткізіңіз. \"Жазылымды басқару\" опциясын түртіп, \"Төлеу әдістері\" бөлімінде \"Жаңарту\" түймесін түртіңіз. Резервтік көшірмелеуді аяқтау мүмкін болмады @@ -7271,7 +7408,7 @@ Жазылымды басқару - Subscribe for %1$s/month + Айына %1$s тұратын жоспарға жазылу Мультмедианы қазір жүктеп алыңыз @@ -7306,6 +7443,17 @@ %1$s / %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Жадты оңтайландыру үшін Signal резервтік көшірмелерінің ақылы деңгейі керек. Бұл функцияны пайдаланғыңыз келсе, резервтік көшірме жоспарын ауыстырыңыз. - Subscribe for %1$s/month + Айына %1$s тұратын жоспарға жазылу - This media is no longer available + Бұл мультимедиа енді жоқ - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Қазіргі Signal сақтық көшірме жоспарымен соңғы %1$d күндік мультимедианы сақтай аласыз. Барлық мультимедианың сақтық көшірмесін жасауды бастау үшін жоспарды қазір жаңартыңыз. + Қазіргі Signal сақтық көшірме жоспарымен соңғы %1$d күндік мультимедианы сақтай аласыз. Барлық мультимедианың сақтық көшірмесін жасауды бастау үшін жоспарды қазір жаңартыңыз. - Subscribe for %1$s/month + Айына %1$s тұратын жоспарға жазылу Жою процедурасы барлық құрылғыңызда синхрондалады. @@ -7413,11 +7561,13 @@ Резервтік көшірме түрі өзгерді де, жазылымнан бас тартылды - Жазылымнан бас тартылды + Subscription canceled Жүктеп алынды Резервтік көшірме түнде жасалады. + + Subscription inactive Сақтық көшірме жоспары @@ -7426,8 +7576,12 @@ айына %1$s Сақтық көшірме жоспарыңыз тегін - + %1$s жаңарады + + Expires on %1$s + + Expired on %1$s Хабарлар тарихының сақтық көшірмесін жасаңыз. Сонда жаңа телефон алсаңыз да, Signal-ды қайта орнатсаңыз да, деректеріңізді ешқашан жоғалтпайсыз. @@ -7472,6 +7626,10 @@ Резервтік көшірмесін қолмен жасау Құрылғыңыздың PIN кодын, құпиясөзін немесе өрнегін енгізіңіз. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-km/strings.xml b/app/src/main/res/values-km/strings.xml index 889063d9f2..596e77f846 100644 --- a/app/src/main/res/values-km/strings.xml +++ b/app/src/main/res/values-km/strings.xml @@ -365,6 +365,8 @@ ការជជែក សារ + + Chat types សារ %1$s @@ -796,7 +798,7 @@ - You\'re all set. Start your backup now. + រួចរាល់អស់ហើយ។ ចាប់ផ្តើមការបម្រុងទុករបស់អ្នកឥឡូវនេះ។ វាអាចចំណាយពេលយូរ អាស្រ័យលើទំហំនៃការបម្រុងទុករបស់អ្នក។ អ្នកអាចប្រើទូរសព្ទរបស់អ្នកបានធម្មតា ពេលកំពុងធ្វើការបម្រុងទុក។ @@ -1908,6 +1910,7 @@ +%1$d នាក់ត្រូវបានបបួល + %1$d ក្រុមបន្ថែម @@ -1933,6 +1936,7 @@ ឧបករណ៍រកមិនឃើញ។ បណ្តាញមានបញ្ហា។ កូដQRមិនត្រឹមត្រូវ។ + សុំទោស អ្នកបានភ្ជាប់ចំនួនឧបករណ៍ច្រើនពេក សូមលុបចោលខ្លះ សុំទោស តំណកូដQR ភ្ជាប់ទៅកាន់ឧបករណ៍ មិនត្រឹមត្រូវ។ ភ្ជាប់ឧបករណ៍ Signal ១? @@ -1954,11 +1958,13 @@ បញ្ជូនឃ្លាសម្ងាត់ ឃ្លាសម្ងាត់មិនត្រឹមត្រូវ! ដោះសោរSignal + Signal Android - អេក្រង់ចាក់សោ ផែនទី + ដាក់ចំណុច ទទួលយកអសយដ្ឋាន @@ -2440,6 +2446,7 @@ សារ Signal  + បន្ថែម @@ -2471,6 +2478,7 @@ ពុំមានស្ទីកគ័រដំឡើងទេ ស្ទីកគ័រពីសារដែលចូលមកនឹងបង្ហាញទីនេះ គ្មានចំណងជើង + មិនស្គាល់ @@ -2691,6 +2699,7 @@ ឯកសារមេឌៀលែងមានទៀតហើយ។ មិនអាចចាក់មេឌៀបានទេ។ + មានបញ្ហាក្នុងការស្វែងរកសារ។ មិនអាចស្វែងរកកម្មវិធីដែលអាចចែករំលែកឯកសារមេឌៀនេះ។ បិទ @@ -2760,6 +2769,7 @@ សារ ការហៅ + បរាជ័យ បម្រុងទុក ស្ថានភាពចាក់សោរ @@ -2769,6 +2779,7 @@ មិនស្គាល់ កំណត់ត្រាសំឡេង ចូលរួមទំនាក់ទំនងតាម Signal + មិនមានសកម្មភាព ដើម្បីបើកការកំណត់បណ្តាញជូនដំណឹង។ ការតភ្ជាប់ពីក្រោយ @@ -3540,10 +3551,12 @@ ប្រវត្តិសារទាំងអស់នឹងត្រូវបានលុបពីឧបករណ៍ទាំងអស់ជារៀងរហូត។ សកម្មភាពនេះមិនអាចត្រឡប់វិញបានទេ។ លុបទាំងអស់ឥឡូវនេះ + ជារៀងរហូត 1 ឆ្នាំ 6 ខែ 30 ថ្ងៃ + គ្មាន %1$s សារ @@ -3567,6 +3580,7 @@ បង្ហាញ សំឡេងរោទិ៍ ទំហំអក្សរសារ + អទិភាព ដោះស្រាយបញ្ហាការជូនដំណឹង @@ -3795,6 +3809,7 @@ ស្គែនអាសយដ្ឋាន QR Code របស់អ្នកទទួលប្រាក់ + ស្នើសុំ ទូទាត់ សមតុល្យនៅមាន៖ %1$s @@ -3925,6 +3940,7 @@ អ្នកអាចខ្ទាស់ការជជែករហូតដល់ %1$d + រូបថតទំនាក់ទំនង បានដាក់ទុកបណ្ណសារ @@ -3933,6 +3949,10 @@ ការជជែកថ្មី បើកកាមេរ៉ា មិនមានការជជែកទេ។\nចាប់ផ្តើមដោយការផ្ញើសារទៅមិត្តភក្តិ។ + + No chats to display + + Folder settings @@ -4157,6 +4177,7 @@ ការបម្រុងទុកការជជែក បញ្ជូនគណនី បញ្ជូនគណនី ទៅកាន់ឧបករណ៍ Android ថ្មីមួយ + បញ្ចូលឃ្លាសម្ងាត់បម្រុងទុក ស្តារឡើងវិញ មិនអាចនាំចូលឯកសារបម្រុងទុកពីកំណែ Signal ថ្មីៗទេ @@ -4364,6 +4385,7 @@ មិនអាចបើកការកំណត់ Wi-Fi ។ សូមបើក Wi-Fi ដោយខ្លួនឯង។ + បើកការអនុញ្ញាតទីតាំង បើកសេវាកម្មទីតាំង បើក Wi-Fi @@ -4610,6 +4632,7 @@ ចែករំលែក + ផ្ញើ , %1$s @@ -4912,6 +4935,116 @@ ក្ដារចុច ផ្ញើដោយចុច Enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat types + + + + %1$d chats + + + + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done សារ @@ -4995,6 +5128,7 @@ គុណភាពមេឌៀ + មេឌៀគុណភាពល្អត្រូវបានផ្ញើចេញ ការផ្ញើឯកសារមេឌៀដែលមានគុណភាពខ្ពស់នឹងអស់ទិន្នន័យអុីនធឺណិតច្រើន @@ -7079,10 +7213,10 @@ - Your backups subscription expired + ការជាវការបម្រុងទុករបស់អ្នកបានផុតកំណត់ហើយ - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + គម្រោងបម្រុងទុករបស់អ្នកបានផុតកំណត់ ដោយសារវាមិនអាចបន្តជាមួយវិធីបង់ប្រាក់បច្ចុប្បន្នរបស់អ្នកបាន។ បន្ទាប់ពីរយៈពេល %1$d ថ្ងៃ មេឌៀនៅក្នុងការបម្រុងទុករបស់អ្នកនឹងត្រូវបានលុបចោល។ អ្នកអាចចាប់ផ្តើមបង់ប្រាក់សម្រាប់ការបម្រុងទុកម្តងទៀតនៅពេលណាក៏បាន ដើម្បីបន្តការបម្រុងទុកមេឌៀរបស់អ្នកទាំងអស់។ @@ -7099,9 +7233,9 @@ ប្រសិនបើអ្នកជ្រើសរើស \"រំលង\" នោះមេឌៀនៅក្នុងការបម្រុងទុករបស់អ្នកនឹងត្រូវបានលុបក្នុងរយៈពេល %1$d ថ្ងៃ។ - Your backups subscription failed to renew + ការជាវការបម្រុងទុករបស់អ្នកមិនអាចបន្តបានទេ - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + ពិនិត្យមើលដើម្បីប្រាកដថាវិធីបង់ប្រាក់របស់អ្នកទាន់សម័យ។ ចុចគ្រប់គ្រងការជាវ ហើយនៅក្រោមវិធីបង់ប្រាក់ សូមចុចធ្វើបច្ចុប្បន្នភាព។ មិនអាចបញ្ចប់ការបម្រុងទុកបានទេ @@ -7113,7 +7247,7 @@ គ្រប់គ្រងការជាវ - Subscribe for %1$s/month + ជាវក្នុងតម្លៃ %1$s/ខែ ទាញយកមេឌៀឥឡូវនេះ @@ -7148,6 +7282,17 @@ %1$s នៃ %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7201,17 +7346,17 @@ ការបង្កើនប្រសិទ្ធភាពទំហំផ្ទុកអាចប្រើបានតែជាមួយការបម្រុងទុក Signal នៅក្នុងកម្រិតបង់ប្រាក់ប៉ុណ្ណោះ។ ដំឡើងកម្រិតនៃគម្រោងបម្រុងទុករបស់អ្នក ដើម្បីចាប់ផ្តើមប្រើមុខងារនេះ។ - Subscribe for %1$s/month + ជាវក្នុងតម្លៃ %1$s/ខែ - This media is no longer available + មេឌៀនេះលែងមានទៀតហើយ - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + គម្រោងបម្រុងទុក Signal បច្ចុប្បន្នរបស់អ្នករួមបញ្ចូលទាំងមេឌៀរបស់អ្នករយៈពេល %1$d ថ្ងៃចុងក្រោយ។ ដើម្បីចាប់ផ្តើមបម្រុងទុកមេឌៀទាំងអស់របស់អ្នក សូមដំឡើងកម្រិតឥឡូវនេះ។ - Subscribe for %1$s/month + ជាវក្នុងតម្លៃ %1$s/ខែ ឥឡូវនេះការលុបត្រូវបានធ្វើសមកាលកម្មនៅលើឧបករណ៍របស់អ្នកទាំងអស់ @@ -7254,11 +7399,13 @@ ប្រភេទបម្រុងទុកបានផ្លាស់ប្តូរ ហើយការជាវត្រូវបានបោះបង់ - ការជាវត្រូវបានបោះបង់ + Subscription canceled ការទាញយកបានបញ្ចប់ ការបម្រុងទុកនឹងត្រូវបានបង្កើតឡើងក្នុងពេលមួយយប់។ + + Subscription inactive គម្រោងបម្រុងទុក @@ -7267,8 +7414,12 @@ %1$s/ខែ គម្រោងបម្រុងទុករបស់អ្នកគឺឥតគិតថ្លៃ - + បន្ត %1$s + + Expires on %1$s + + Expired on %1$s បម្រុងទុកប្រវត្តិសាររបស់អ្នក ដើម្បីកុំឱ្យបាត់បង់ទិន្នន័យនៅពេលអ្នកមានទូរសព្ទថ្មី ឬដំឡើង Signal ឡើងវិញ។ @@ -7313,6 +7464,10 @@ បម្រុងទុកដោយដៃ សូមបញ្ចូលលេខកូដសម្ងាត់ ពាក្យសម្ងាត់ ឬលំនាំឧបករណ៍របស់អ្នក។ + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-kn/strings.xml b/app/src/main/res/values-kn/strings.xml index 717c562a7d..71718943df 100644 --- a/app/src/main/res/values-kn/strings.xml +++ b/app/src/main/res/values-kn/strings.xml @@ -368,6 +368,8 @@ ಚಾಟ್‌‌ ಗಳು ಮೆಸೇಜ್‌ಗಳು + + Chat types ಸಂದೇಶ %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + ನೀವು ಸಿದ್ಧರಾಗಿದ್ದೀರಿ. ನಿಮ್ಮ ಬ್ಯಾಕಪ್ ಆರಂಭಿಸಿ. ನಿಮ್ಮ ಬ್ಯಾಕಪ್‌ನ ಗಾತ್ರವನ್ನು ಆಧರಿಸಿ, ಇದು ಬಹಳ ಸಮಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ಬ್ಯಾಕಪ್ ನಡೆಯುವಾಗ ನೀವು ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸುವಂತೆಯೇ ನಿಮ್ಮ ಫೋನ್ ಅನ್ನು ನೀವು ಬಳಸಬಹುದು. @@ -1969,6 +1971,7 @@ +%1$d ಆಹ್ವಾನಿಸಿದ್ದಾರೆ +%1$d ಆಹ್ವಾನಿಸಿದ್ದಾರೆ + %1$d ಹೆಚ್ಚುವರಿ ಗ್ರೂಪ್ %1$d ಹೆಚ್ಚುವರಿ ಗ್ರೂಪ್‌ಗಳು @@ -1995,6 +1998,7 @@ ಯಾವುದೇ ಸಾಧನವನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗಿಲ್ಲ. ನೆಟ್ವರ್ಕ್ ದೋಷ. ಮಾನ್ಯವಲ್ಲದ ಕ್ಯುಆರ್‌ ಕೋಡ್. + ಕ್ಷಮಿಸಿ, ನೀವು ಈಗಾಗಲೇ ಬಹಳ ಹೆಚ್ಚು ಸಾಧನಗಳನ್ನು ಲಿಂಕ್ ಮಾಡಿದ್ದೀರಿ, ಕೆಲವನ್ನು ತೆಗೆದುಹಾಕಲು ಪ್ರಯತ್ನಿಸಿ ಕ್ಷಮಿಸಿ, ಇದು ಮಾನ್ಯವಾಗಿರುವ ಸಾಧನ ಲಿಂಕ್ ಮಾಡುವ ಕ್ಯುಆರ್‌ ಕೋಡ್ ಅಲ್ಲ. ಒಂದು Signal ಸಾಧನ ಲಿಂಕ್ ಮಾಡುವುದೇ? @@ -2017,11 +2021,13 @@ ಪಾಸ್‌ಫ್ರೇಸ್‌ ಸಲ್ಲಿಸಿ ಪಾಸ್‌ಫ್ರೇಸ್‌ ಮಾನ್ಯವಾದದ್ದಲ್ಲ! Signal ಅನ್ಲಾಕ್ ಮಾಡಿ + Signal ಆಂಡ್ರಾಯ್ಡ್‌ - ಲಾಕ್ ಸ್ಕ್ರೀನ್ ನಕ್ಷೆ + ಡ್ರಾಪ್ ಪಿನ್ ವಿಳಾಸವನ್ನು ಒಪ್ಪಿ @@ -2525,6 +2531,7 @@ Signal ಸಂದೇಶ + ಇನ್ನಷ್ಟು @@ -2556,6 +2563,7 @@ ಯಾವುದೇ ಸ್ಟಿಕ್ಕರ್‌ಗಳನ್ನು ಸ್ಥಾಪಿಸಲಾಗಿಲ್ಲ ಒಳಬರುವ ಸಂದೇಶಗಳಿಂದ ಸ್ಟಿಕ್ಕರ್‌ಗಳು ಇಲ್ಲಿ ಕಾಣಿಸುತ್ತದೆ ಶೀರ್ಷಿಕ ರಹಿತ + ತಿಳಿದಿಲ್ಲ @@ -2777,6 +2785,7 @@ ಮೀಡಿಯಾ ಇನ್ನು ಲಭ್ಯವಿಲ್ಲ. ಮೀಡಿಯಾ ಪ್ಲೇ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. + ಸಂದೇಶವನ್ನು ಹುಡುಕುವಲ್ಲಿ ದೋಷ. ಈ ಮೀಡಿಯಾ ಹಂಚಿಕೊಳ್ಳಲು ಒಂದು ಆಪ್ ಕಂಡುಕೊಳ್ಳಲಾಗುತ್ತಿಲ್ಲ. ಮುಚ್ಚಿ @@ -2848,6 +2857,7 @@ ಸಂದೇಶಗಳು ಕರೆಗಳು + ವೈಫಲ್ಯಗಳು ಬ್ಯಾಕಪ್‌ಗಳು ಲಾಕ್ ಸ್ಥಿತಿ @@ -2857,6 +2867,7 @@ ತಿಳಿದಿಲ್ಲ ವಾಯ್ಸ್ ನೋಟ್‌ಗಳು ಸಂಪರ್ಕ Signal ಗೆ ಸೇರಿದ್ದಾರೆ + ನೊಟಿಫಿಕೇಶನ್ ಚಾನೆಲ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಲು ಯಾವುದೇ ಚಟುವಟಿಕೆ ಲಭ್ಯವಿಲ್ಲ. ಹಿನ್ನೆಲೆ ಸಂಪರ್ಕ @@ -3641,10 +3652,12 @@ ಎಲ್ಲಾ ಸಾಧನಗಳಿಂದ ಎಲ್ಲಾ ಮೆಸೇಜ್ ಇತಿಹಾಸವನ್ನು ಶಾಶ್ವತವಾಗಿ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ. ಈ ಕ್ರಮವನ್ನು ರದ್ದುಪಡಿಸಲಾಗುವುದಿಲ್ಲ. ಎಲ್ಲವನ್ನೂ ಈಗಲೇ ಅಳಿಸಿ + ಎಂದೆಂದಿಗೂ 1 ವರ್ಷ 6 ತಿಂಗಳು 30 ದಿನಗಳು + ಯಾವುದೂ ಇಲ್ಲ %1$s ಮೆಸೇಜ್ @@ -3669,6 +3682,7 @@ ತೋರಿಸು ರಿಂಗ್ಟೋನ್ ಸಂದೇಶ ಫಾಂಟ್ ಗಾತ್ರ + ಆದ್ಯತೆ ಅಧಿಸೂಚನೆಗಳ ಸಮಸ್ಯೆ ಪರಿಹರಿಸಿ @@ -3897,6 +3911,7 @@ ಪಾವತಿಸುವವರ ವಿಳಾಸ ಕ್ಯುಆರ್‌ ಕೋಡ್ ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ + ಕೋರಿಕೆ ಪಾವತಿಸಿ ಲಭ್ಯ ಬ್ಯಾಲೆನ್ಸ್: %1$s @@ -4028,6 +4043,7 @@ ನೀವು %1$d ಚಾಟ್‌ಗಳನ್ನು ಮಾತ್ರ ಪಿನ್ ಮಾಡಬಹುದು + ಸಂಪರ್ಕದ ಫೋಟೊ ಇಮೇಜ್ ಆರ್ಕೈವ್ ಮಾಡಲಾಗಿದೆ @@ -4036,6 +4052,10 @@ ಹೊಸ ಚಾಟ್ ಕ್ಯಾಮರಾ ತೆರೆಯಿರಿ ಇನ್ನೂ ಯಾವುದೇ ಚಾಟ್‌ಗಳಿಲ್ಲ.\nಸ್ನೇಹಿತರಿಗೆ ಮೆಸೇಜ್ ಮಾಡುವ ಮೂಲಕ ಆರಂಭಿಸಿ. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ ಚಾಟ್ ಬ್ಯಾಕಪ್‌ಗಳು ಖಾತೆ ವರ್ಗಾಯಿಸಿ ಹೊಸ ಆಂಡ್ರಾಯ್ಡ್ ಸಾಧನಕ್ಕೆ ಖಾತೆ ವರ್ಗಾವಣೆ ಮಾಡಿ + ಬ್ಯಾಕಪ್ ಪಾಸ್‌ಫ್ರೇಸ್ ನಮೂದಿಸಿ ಪುನಃಸ್ಥಾಪಿಸಿ Signal ನ ಹೊಸ ಆವೃತ್ತಿಗಳಿಂದ ಬ್ಯಾಕಪ್ ಇಂಪೋರ್ಟ್ ಮಾಡಲು ಅಸಾಧ್ಯ @@ -4475,6 +4496,7 @@ ವೈಫೈ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಲು ಅಸಾಧ್ಯವಾಗಿದೆ. ದಯವಿಟ್ಟು ವೈಫೈ ಅನ್ನು ಮ್ಯಾನ್ಯುಅಲ್ ಆಗಿ ಆನ್ ಮಾಡಿ. + ಸ್ಥಳ ಅನುಮತಿಯನ್ನು ಮಂಜೂರು ಮಾಡಿ ಸ್ಥಳ ಸೇವೆಗಳನ್ನು ಆನ್ ಮಾಡಿ ವೈಫೈ ಆನ್ ಮಾಡಿ @@ -4728,6 +4750,7 @@ ಹಂಚಿಕೊಳ್ಳಿ + ಕಳುಹಿಸು , %1$s @@ -5031,6 +5054,119 @@ ಕೀಬೋರ್ಡ್‌ ಎಂಟರ್ ಮೂಲಕ ಕಳುಹಿಸಿ + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done ಸಂದೇಶಗಳು @@ -5115,6 +5251,7 @@ ಮಾಧ್ಯಮ ಗುಣಮಟ್ಟ + ಮಾಧ್ಯಮ ಗುಣಮಟ್ಟವನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ ಉನ್ನತ ಗುಣಮಟ್ಟದ ಮಾಧ್ಯಮವನ್ನು ಕಳುಹಿಸುವಿಕೆಯು ಹೆಚ್ಚು ಡೇಟಾವನ್ನು ಬಳಸಲಿದೆ. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + ನಿಮ್ಮ ಬ್ಯಾಕಪ್‍ಗಳ ಚಂದಾದಾರಿಕೆಯ ಅವಧಿ ಮುಗಿದಿದೆ - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + ನಿಮ್ಮ ಬ್ಯಾಕಪ್ ಪ್ಲಾನ್ ಅವಧಿ ಮುಗಿದಿದೆ. ಏಕೆಂದರೆ ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಪಾವತಿ ವಿಧಾನದ ಮೂಲಕ ಇದನ್ನು ನವೀಕರಿಸಲು ಸಾಧ್ಯವಿರಲಿಲ್ಲ. %1$d ದಿನದ ನಂತರ ನಿಮ್ಮ ಬ್ಯಾಕಪ್ ನಲ್ಲಿರುವ ಮೀಡಿಯಾವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ + ನಿಮ್ಮ ಬ್ಯಾಕಪ್ ಪ್ಲಾನ್ ಅವಧಿ ಮುಗಿದಿದೆ. ಏಕೆಂದರೆ ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಪಾವತಿ ವಿಧಾನದ ಮೂಲಕ ಇದನ್ನು ನವೀಕರಿಸಲು ಸಾಧ್ಯವಿರಲಿಲ್ಲ. %1$d ದಿನಗಳ ನಂತರ ಬ್ಯಾಕಪ್ ನಲ್ಲಿರುವ ಮೀಡಿಯಾವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ. ನಿಮ್ಮ ಎಲ್ಲಾ ಮೀಡಿಯಾವನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡುವುದನ್ನು ಮುಂದುವರಿಸಲು ನೀವು ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ಬ್ಯಾಕ್‌ಅಪ್‌ಗಳಿಗೆ ಪುನಃ ಪಾವತಿಸಲು ಪ್ರಾರಂಭಿಸಬಹುದು. @@ -7257,9 +7394,9 @@ ನೀವು \"ಸ್ಕಿಪ್\" ಅನ್ನು ಆರಿಸಿದರೆ, ನಿಮ್ಮ ಬ್ಯಾಕಪ್‌ನಲ್ಲಿರುವ ಮೀಡಿಯಾವನ್ನು %1$d ದಿನಗಳಲ್ಲಿ ಅಳಿಸಲಾಗುತ್ತದೆ. - Your backups subscription failed to renew + ನಿಮ್ಮ ಬ್ಯಾಕಪ್ ಚಂದಾದಾರಿಕೆ ನವೀಕರಣವಾಗಲು ವಿಫಲವಾಗಿದೆ - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + ನಿಮ್ಮ ಪಾವತಿ ವಿಧಾನ ಅಪ್ ಟು ಡೇಟ್ ಇದೆಯೇ ಎಂದು ಪರಿಶೀಲನೆ ಮಾಡಿಕೊಳ್ಳಿ. ಚಂದಾದಾರಿಕೆ ನಿರ್ವಹಿಸಿ ಟ್ಯಾಪ್ ಮಾಡಿ ಮತ್ತು ಪಾವತಿ ವಿಧಾನದ ಕೆಳಗೆ ಅಪ್‍ಡೇಟ್ ಮಾಡಿ ಟ್ಯಾಪ್ ಮಾಡಿ. ಬ್ಯಾಕಪ್ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ @@ -7271,7 +7408,7 @@ ಚಂದಾ ನಿರ್ವಹಿಸಿ - Subscribe for %1$s/month + ತಿಂಗಳಿಗೆ %1$sಕ್ಕೆ ಚಂದಾದಾರರಾಗಿ ಈಗ ಮೀಡಿಯಾವನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ @@ -7306,6 +7443,17 @@ %2$s ನಲ್ಲಿ %1$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Signal ಬ್ಯಾಕಪ್‌ಗಳ ಪಾವತಿಸಿದ ಶ್ರೇಣಿಯೊಂದಿಗೆ ಮಾತ್ರ ಸಂಗ್ರಹಣೆ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ಬಳಸಬಹುದು. ಈ ಫೀಚರ್ ಬಳಸುವುದನ್ನು ಪ್ರಾರಂಭಿಸಲು ನಿಮ್ಮ ಬ್ಯಾಕಪ್ ಪ್ಲಾನ್ ಅನ್ನು ಅಪ್‌ಗ್ರೇಡ್ ಮಾಡಿ. - Subscribe for %1$s/month + ತಿಂಗಳಿಗೆ %1$sಕ್ಕೆ ಚಂದಾದಾರರಾಗಿ - This media is no longer available + ಈ ಮೀಡಿಯಾ ಇನ್ನು ಮುಂದೆ ಲಭ್ಯ ಇರುವುದಿಲ್ಲ - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + ನಿಮ್ಮ ಪ್ರಸ್ತುತ Signal ಬ್ಯಾಕಪ್ ಪ್ಲಾನ್ ನಿಮ್ಮ ಇತ್ತೀಚಿನ %1$d ದಿನದ ಮೀಡಿಯಾವನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಿದೆ. ನಿಮ್ಮ ಎಲ್ಲ ಮೀಡಿಯಾವನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡಿಕೊಳ್ಳಲು ಈಗಲೇ ಅಪ್ ಗ್ರೇಡ್ ಮಾಡಿಕೊಳ್ಳಿ. + ನಿಮ್ಮ ಪ್ರಸ್ತುತ Signal ಬ್ಯಾಕಪ್ ಪ್ಲಾನ್ ನಿಮ್ಮ ಇತ್ತೀಚಿನ %1$d ದಿನಗಳ ಮೀಡಿಯಾವನ್ನು ಮಾತ್ರ ಒಳಗೊಂಡಿದೆ. ನಿಮ್ಮ ಎಲ್ಲ ಮೀಡಿಯಾವನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡಿಕೊಳ್ಳಲು ಈಗಲೇ ಅಪ್ ಗ್ರೇಡ್ ಮಾಡಿಕೊಳ್ಳಿ. - Subscribe for %1$s/month + ತಿಂಗಳಿಗೆ %1$sಕ್ಕೆ ಚಂದಾದಾರರಾಗಿ ಅಳಿಸುವಿಕೆಯನ್ನು ಇದೀಗ ನಿಮ್ಮ ಎಲ್ಲಾ ಸಾಧನಗಳಲ್ಲಿ ಸಿಂಕ್ ಮಾಡಲಾಗಿದೆ @@ -7413,11 +7561,13 @@ ಬ್ಯಾಕಪ್ ಪ್ರಕಾರವನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ ಮತ್ತು ಚಂದಾದಾರಿಕೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ - ಚಂದಾದಾರಿಕೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ + Subscription canceled ಡೌನ್‌ಲೋಡ್ ಪೂರ್ಣಗೊಂಡಿದೆ ರಾತ್ರಿಯಲ್ಲಿ ಬ್ಯಾಕಪ್ ಅನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ. + + Subscription inactive ಬ್ಯಾಕಪ್ ಪ್ಲಾನ್ @@ -7426,8 +7576,12 @@ %1$s/ತಿಂಗಳು ನಿಮ್ಮ ಬ್ಯಾಕಪ್ ಪ್ಲಾನ್ ಉಚಿತ - + ನವೀಕರಿಸುತ್ತದೆ %1$s + + Expires on %1$s + + Expired on %1$s ನಿಮ್ಮ ಮೆಸೇಜ್ ಇತಿಹಾಸವನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡಿ, ಇದರಿಂದ ನೀವು ಹೊಸ ಫೋನ್ ಪಡೆದಾಗ ಅಥವಾ Signal ರೀಇನ್‍ಸ್ಟಾಲ್ ಮಾಡಿದಾಗ ಡೇಟಾವನ್ನು ಕಳೆದುಕೊಳ್ಳುವುದಿಲ್ಲ. @@ -7472,6 +7626,10 @@ ಹಸ್ತಚಾಲಿತವಾಗಿ ಬ್ಯಾಕಪ್ ಮಾಡಿ ನಿಮ್ಮ ಸಾಧನದ PIN, ಪಾಸ್‌ವರ್ಡ್ ಅಥವಾ ಪ್ಯಾಟರ್ನ್ ಅನ್ನು ನಮೂದಿಸಿ. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index e251053af4..25107c70c5 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -365,6 +365,8 @@ 대화 메시지 + + Chat types %1$s에 메시지 보내기 @@ -796,7 +798,7 @@ - You\'re all set. Start your backup now. + 준비됐습니다. 지금 백업을 시작하세요. 백업 용량에 따라 시간이 더 오래 걸릴 수 있습니다. 백업하는 동안 평상시처럼 휴대폰을 사용하셔도 됩니다. @@ -1908,6 +1910,7 @@ +%1$d명 초대함 + %1$d개의 추가 그룹 @@ -1933,6 +1936,7 @@ 기기를 찾을 수 없습니다. 네트워크 오류가 발생했습니다. 잘못된 QR 코드입니다. + 죄송합니다. 이미 너무 많은 기기가 연결되어 있습니다. 일부를 제거하세요. 죄송합니다. 올바른 기기 연결 QR 코드가 아닙니다. Signal 기기를 연결하시겠습니까? @@ -1954,11 +1958,13 @@ 암호 제출 잘못된 암호입니다! Signal 잠금 해제 + Signal Android - 잠금 화면 지도 + 고정 주소 허용 @@ -2440,6 +2446,7 @@ Signal 메시지 + 더 보기 @@ -2471,6 +2478,7 @@ 설치된 스티커 없음 받은 메시지의 스티커가 여기에 표시됩니다. 제목 없음 + 알 수 없음 @@ -2691,6 +2699,7 @@ 미디어를 더 이상 이용할 수 없습니다. 미디어를 재생할 수 없습니다. + 메시지 검색 중 오류가 발생했습니다. 미디어를 공유할 수 있는 앱을 찾을 수 없습니다. 닫기 @@ -2760,6 +2769,7 @@ 메시지 전화 + 실패 백업 잠금 상태 @@ -2769,6 +2779,7 @@ 알 수 없음 음성 노트 연락처가 Signal에 등록함 + 알림 채널 설정을 열 수 있는 활동이 없습니다. 백그라운드 연결 @@ -3540,10 +3551,12 @@ 모든 기기에서 모든 메시지 기록을 영구적으로 제거합니다. 이 작업은 취소할 수 없습니다. 지금 모두 삭제 + 영원히 1년 6개월 30일 + 없음 메시지 %1$s개 @@ -3567,6 +3580,7 @@ 표시 알림 벨소리 메시지 글꼴 사이즈 + 우선순위 알림 문제 해결 @@ -3795,6 +3809,7 @@ 수취인의 주소 QR 코드를 스캔하세요. + 요청 지불 사용 가능한 잔액: %1$s @@ -3925,6 +3940,7 @@ 최대 %1$d개 대화만 고정할 수 있습니다. + 연락처 사진 보관됨 @@ -3933,6 +3949,10 @@ 새 대화 카메라 열기 아직 대화가 없습니다.\n친구에게 메시지를 보내 시작해 보세요. + + No chats to display + + Folder settings @@ -4157,6 +4177,7 @@ 대화 백업 계정 이전 새 Android 장치로 계정 이전 + 백업 암호 입력 복원 Signal 최신 버전에서 백업을 가져올 수 없습니다. @@ -4364,6 +4385,7 @@ Wi-Fi 설정을 열 수 없습니다. Wi-Fi를 수동으로 켜세요. + 위치 권한 부여 위치 서비스 켜기 Wi-Fi 켜기 @@ -4610,6 +4632,7 @@ 공유 + 보내기 , %1$s @@ -4912,6 +4935,116 @@ 키보드 Enter 키로 보내기 + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat types + + + + %1$d chats + + + + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done 메시지 @@ -4995,6 +5128,7 @@ 미디어 품질 + 미디어 전송 품질 고품질 미디어는 더 많은 모바일 데이터를 사용할 수 있습니다. @@ -7079,10 +7213,10 @@ - Your backups subscription expired + 백업 구독 만료 - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + 현재 결제 방법으로 갱신할 수 없어 백업 플랜이 만료되었습니다. %1$d일 후 백업의 미디어가 삭제됩니다. 언제든 백업 비용을 다시 결제하기 시작하여 모든 미디어를 계속 백업할 수 있습니다. @@ -7099,9 +7233,9 @@ \'건너 뛰기\'를 선택하면 %1$d일 후 백업의 미디어가 삭제됩니다. - Your backups subscription failed to renew + 백업 구독 갱신 실패 - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + 결제 방법이 최신 상태인지 확인하세요. 구독 관리를 탭한 다음 결제 방법에서 업데이트를 탭하세요. 백업을 완료할 수 없음 @@ -7113,7 +7247,7 @@ 구독 관리 - Subscribe for %1$s/month + 월 %1$s로 구독 지금 미디어 다운로드 @@ -7148,6 +7282,17 @@ %2$s 중 %1$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7201,17 +7346,17 @@ 저장 공간 최적화는 유료 Signal 백업으로만 사용할 수 있습니다. 이 기능을 사용하기 시작하려면 백업 플랜을 업그레이드하세요. - Subscribe for %1$s/month + 월 %1$s로 구독 - This media is no longer available + 이 미디어를 더 이상 사용할 수 없음 - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + 현재 Signal 백업 플랜은 최근 %1$d일 미디어를 포함합니다. 모든 미디어를 백업하려면 지금 업그레이드하세요. - Subscribe for %1$s/month + 월 %1$s로 구독 이제 모든 기기에서 삭제를 동기화합니다 @@ -7254,11 +7399,13 @@ 백업 종류를 변경하고 구독을 취소했습니다. - 구독 취소 완료 + Subscription canceled 다운로드 완료 밤사이 백업을 생성합니다. + + Subscription inactive 백업 플랜 @@ -7267,8 +7414,12 @@ %1$s/월 백업 플랜이 무료입니다. - + %1$s 갱신 + + Expires on %1$s + + Expired on %1$s 새 휴대폰을 사용하거나 Signal을 다시 설치할 때 데이터를 잃지 않도록 메시지 기록을 백업하세요. @@ -7313,6 +7464,10 @@ 수동 백업 기기 PIN, 암호 또는 패턴을 입력하세요. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-ky/strings.xml b/app/src/main/res/values-ky/strings.xml index 5aef26583c..179b8cfd59 100644 --- a/app/src/main/res/values-ky/strings.xml +++ b/app/src/main/res/values-ky/strings.xml @@ -365,6 +365,8 @@ Маектер Билдирүүлөр + + Chat types Билдирүү %1$s @@ -796,7 +798,7 @@ - You\'re all set. Start your backup now. + Бүттү. Камдык көчүрмөлөрүңүздү сактай баштаңыз. Камдык көчүрмөңүздүн көлөмүнө жараша бир топ убакытты алышы мүмкүн. Камдык көчүрмөлөр сакталып жатканда телефонуңузду кадимкидей колдоно бересиз. @@ -1908,6 +1910,7 @@ дагы %1$d чакырылды + дагы %1$d топ @@ -1933,6 +1936,7 @@ Түзмөк табылган жок. Тармакта ката кетти. QR коду туура эмес. + Өтө көп түзмөк байланып турат. Айрымдарын өчүрүп салыңыз Түзмөктү байланыштыруучу QR код туура эмес. Signal түзмөгүн байланыштырасызбы? @@ -1954,11 +1958,13 @@ Сыр сөз айкашын тапшыруу Сыр сөз айкашы туура эмес! Signal\'ды бөгөттөн чыгаруу + Signal Android - Кулпу экраны Карта + Белги коюу Даректи кабыл алуу @@ -2440,6 +2446,7 @@ Signal билдирүүсү + Дагы @@ -2471,6 +2478,7 @@ Бир да стикер орнотула элек Келген билдирүүлөрдөгү стикерлер ушул жерде көрүнөт Аталышы жок + Белгисиз @@ -2691,6 +2699,7 @@ Мындай медиафайл жок. Медиа ойнотулбай жатат. + Билдирүү табылган жок. Ушул медиафайлды бөлүшө турган колдонмо табылган жок. Жабуу @@ -2760,6 +2769,7 @@ Билдирүүлөр Чалуулар + Каталар Камдык көчүрмөлөр Кулпулоо абалы @@ -2769,6 +2779,7 @@ Белгисиз Аудио жазуулар Signal\'га байланыш кошулду + Билдирмелердин категорияларын тууралоо бөлүмүн ачуучу аракет жок. Фондук байланыш @@ -3540,10 +3551,12 @@ Бардык түзмөктөрдөгү бардык билдирүүлөр биротоло өчүп калат. Кайра калыбына келбейт. Бардыгын өчүрүү + Биротоло 1 жылга 6 айга 30 күнгө + Эч бир %1$s билдирүү @@ -3567,6 +3580,7 @@ Көрсөтүү Шыңгыр Билдирүүнүн шрифтинин өлчөмү + Биринчилик Мүчүлүштүктөрдү оңдоо билдирмелери @@ -3795,6 +3809,7 @@ Алуучунун дарек QR кодун скандаңыз + Өтүнүч Төлөө Жеткиликтүү баланс: %1$s @@ -3925,6 +3940,7 @@ Сиз болгону %1$d маекти кадап кое аласыз + Байланыш сүрөтү Архивделген @@ -3933,6 +3949,10 @@ Жаңы маек Камераны ачуу Азырынча маектер жок.\nДосуңузга жазуудан баштаңыз. + + No chats to display + + Folder settings @@ -4157,6 +4177,7 @@ Маектердин камдык көчүрмөсү Аккаунтту которуу Аккаунтту жаңы Android түзмөгүнө өткөрүү + Кошумча сыр сөз айкашы киргизиңиз Калыбына келтирүү Signal\'дын жаңы версияларынан көчүрмөлөрдү ала албайсыз @@ -4364,6 +4385,7 @@ Wi-Fi тууралоолорун ачуу мүмкүн эмес. Сураныч, Wi-Fi\'ды кол менен күйгүзүңүз. + Жүргөн жерди аныктоо уруксатын берүү Жүргөн жерди аныктоо кызматтарын күйгүзүү Wi-Fi күйгүзүү @@ -4610,6 +4632,7 @@ Бөлүшүү + Жөнөтүү , %1$s @@ -4912,6 +4935,116 @@ Баскычтоп Enter\'ди басып жөнөтүү + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat types + + + + %1$d chats + + + + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Билдирүүлөр @@ -4995,6 +5128,7 @@ Медиа сапаты + Жөнөтүлгөн медиа сапаты Жогорку сапаттагы медианы жөнөтүү көбүрөөк берилмелерди колдонот. @@ -7079,10 +7213,10 @@ - Your backups subscription expired + Жазылуунун мөөнөтү өтүп кетти - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Учурдагы төлөм ыкмаңыздан акы алынбагандыктан, камдык көчүрмөңүздүн тарифтик планынын мөөнөтү бүтүп калды. %1$d күндөн кийин медиа файлдарыңыздын камдык көчүрмөлөрү өчүрүлөт. Медиа файлдар сактала бериши үчүн алардын акысын төлөшүңүз керек. @@ -7099,9 +7233,9 @@ \"Өткөрүп жиберүү\" дегенди тандасаңыз, медиа файлдарыңызды көчүрмөлөрү %1$d күндөн кийин өчүп калат. - Your backups subscription failed to renew + Жазылууңуз узартылган жок - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Төлөм ыкмаңыз эскирип калган жокпу? Жазылууну тескөө дегенди ачып, Төлөм ыкмалары деген бөлүмдөн Жаңыртуу дегенди басыңыз. Камдык көчүрмөлөр сакталган жок @@ -7113,7 +7247,7 @@ Жазылууну башкаруу - Subscribe for %1$s/month + Айына %1$s төлөп жазылыңыз Медиа файлдарды жүктөп алуу @@ -7148,6 +7282,17 @@ %2$s ичинен %1$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7201,17 +7346,17 @@ Сактоо мейкиндигин кеңейтүү үчүн Signal\'дын камдык көчүрмөлөрдү сактоо кызматынын акы алынуучу деңгээлине көтөрүлүү керек. Бул функцияны пайдаланып баштоо үчүн тарифтик планыңызды өзгөртүңүз. - Subscribe for %1$s/month + Айына %1$s төлөп жазылыңыз - This media is no longer available + Бул медиа файлдар жок - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Signal\'дагы учурдагы камдык көчүрмөлөр планында акыркы %1$d күндөгү медиа файлдар бар. Алардын баарынын сактоо үчүн аны жаңыртыңыз. - Subscribe for %1$s/month + Айына %1$s төлөп жазылыңыз Бардык түзмөктөрүңүздө өчүрүлөт @@ -7254,11 +7399,13 @@ Камдык көчүрмөнүн түрү өзгөрүп, жазылуу токтотулду - Жазылуу токтотулду + Subscription canceled Жүктөлүп бүттү Камдык көчүрмөсү түндө түзүлөт. + + Subscription inactive Камдык көчүрүү планы @@ -7267,8 +7414,12 @@ Айына %1$s Камдык көчүрүү планыңыз акысыз - + %1$s жаңырат + + Expires on %1$s + + Expired on %1$s Жаңы телефон алганыңызда же Signal\'ды кайра орнотконуңузда эч качан дайындарыңызды жоготуп албашыңыз үчүн билдирүүлөр таржымалыңыздын камдык көчүрмөсүн сактаңыз. @@ -7313,6 +7464,10 @@ Камдык көчүрмөлөрдү кол менен сактоо Түзмөгүңүздүн pin кодун, сырсөзүн же графикалык ачкычын киргизиңиз. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index b360f40f02..60fe526335 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -374,6 +374,8 @@ Pokalbiai Žinutės + + Chat types Žinutė %1$s @@ -856,7 +858,7 @@ - You\'re all set. Start your backup now. + Viskas paruošta. Pradėkite atsarginę kopiją dabar. Priklausomai nuo atsarginės kopijos dydžio, tai gali ilgai užtrukti. Kol kuriama atsarginė kopija, telefoną naudoti galite kaip įprasta. @@ -2091,6 +2093,7 @@ +%1$d pakviestų +%1$d pakviestas + %1$d papildoma grupė %1$d papildomos grupės @@ -2119,6 +2122,7 @@ Įrenginys nerastas. Tinklo klaida. Neteisingas QR kodas. + Atleiskite, jūs jau turite per daug susietų įrenginių, pabandykite kai kuriuos pašalinti Atleiskite, tai nėra teisingas įrenginio nuorodos QR kodas. Susieti Signal įrenginį? @@ -2143,11 +2147,13 @@ Pateikti slaptafrazę Neteisinga slaptafrazė! Atrakinti Signal + Signal „Android“ - Ekrano užraktas Žemėlapis + Įsmeigti smeigtuką Priimti adresą @@ -2695,6 +2701,7 @@ Signal žinutė + Daugiau @@ -2726,6 +2733,7 @@ Nėra jokių įdiegtų lipdukų Čia bus rodomi lipdukai iš gaunamų žinučių Be pavadinimo + Nežinoma @@ -2949,6 +2957,7 @@ Medija daugiau nebeprieinama. Nepavyksta paleisti įrašo. + Klaida ieškant žinutės. Nepavyksta rasti programėlės, galinčios bendrinti šią mediją. Užverti @@ -3024,6 +3033,7 @@ Žinutės Skambučiai + Nesėkmės Atsarginės kopijos Užrakinimo būsena @@ -3033,6 +3043,7 @@ Nežinoma Balso pastabos Adresatas prisijungė prie Signal + Nėra prieinamos veiklos, kad būtų atverti pranešimų kanalo nustatymai. Foninis ryšys @@ -3843,10 +3854,12 @@ Iš visų įrenginių visam laikui bus pašalinta visa žinučių istorija. Šio veiksmo bus neįmanoma atšaukti. Ištrinti viską dabar + Amžinai 1 metus 6 mėnesius 30 dienų + Nėra %1$s žinutė @@ -3873,6 +3886,7 @@ Rodyti Skambučio melodija Žinučių šrifto dydis + Pirmenybė Šalinti pranešimų nesklandumus @@ -4101,6 +4115,7 @@ Skenuoti lėšų gavėjo adreso QR kodą + Prašyti Mokėti Prieinamas likutis: %1$s @@ -4234,6 +4249,7 @@ Galite prisegti daugiausiai %1$d pokalbių + Adresato nuotraukos paveikslas Archyvuota @@ -4242,6 +4258,10 @@ Naujas pokalbis Atverti kamerą Kol kas pokalbių nėra.\nPradėkite, bendraudami su draugais. + + No chats to display + + Folder settings @@ -4490,6 +4510,7 @@ Pokalbių atsarginės kopijos Perkelti paskyrą Perkelti paskyrą į naująjį „Android“ įrenginį + Įveskite atsarginės kopijos slaptafrazę Atkurti Negalima importuoti atsarg. kopijų iš naujesnių versijų @@ -4697,6 +4718,7 @@ Nepavyko atverti belaidžio (Wi-Fi) nustatymų. Įjunkite belaidį (Wi-Fi) ryšį rankiniu būdu. + Suteikti įrenginio vietos leidimą Įjungti vietos paslaugas Įjungti belaidį (Wi-Fi) @@ -4964,6 +4986,7 @@ Bendrinti + Siųsti , %1$s @@ -5269,6 +5292,125 @@ Klaviatūra Siųsti spustelėjus „Įvesti“ + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + %1$d chat types + %1$d chat types + + + + %1$d chat + %1$d chats + %1$d chats + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + %1$d chats excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Žinutės @@ -5355,6 +5497,7 @@ Medijos kokybė + Siunčiamos medijos kokybė Aukštos kokybės medijos siuntimas naudos daugiau tinklo duomenų. @@ -7547,13 +7690,13 @@ - Your backups subscription expired + Baigėsi atsarginių kopijų prenumeratos galiojimas - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Baigėsi atsarginės kopijos plano galiojimo laikas, nes jo nepavyko atnaujinti naudojant dabartinį mokėjimo būdą. Po %1$d d. įrašai iš atsarginių kopijų bus ištrinti. + Baigėsi atsarginės kopijos plano galiojimo laikas, nes jo nepavyko atnaujinti naudojant dabartinį mokėjimo būdą. Po %1$d d. įrašai iš atsarginių kopijų bus ištrinti. + Baigėsi atsarginės kopijos plano galiojimo laikas, nes jo nepavyko atnaujinti naudojant dabartinį mokėjimo būdą. Po %1$d d. įrašai iš atsarginių kopijų bus ištrinti. + Baigėsi atsarginės kopijos plano galiojimo laikas, nes jo nepavyko atnaujinti naudojant dabartinį mokėjimo būdą. Po %1$d d. įrašai iš atsarginių kopijų bus ištrinti. Bet kada galite vėl pradėti mokėti už atsargines kopijas ir toliau kopijuoti visus savo įrašus. @@ -7573,9 +7716,9 @@ Jei pasirinksite „Praleisti“, įrašai iš atsarginių kopijų bus ištrinti po %1$d d. - Your backups subscription failed to renew + Nepavyko atnaujinti atsarginių kopijų prenumeratos - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Įsitikinkite, kad jūsų mokėjimo būdas atnaujintas. Bakstelėkite „Tvarkyti prenumeratą“ ir skiltyje „Mokėjimo būdai“ bakstelėkite „Atnaujinti“. Nepavyko sukurti atsarginės kopijos @@ -7587,7 +7730,7 @@ Tvarkyti prenumeratą - Subscribe for %1$s/month + Prenumeruokite už %1$s/mėn. Atsisiųsti įrašus dabar @@ -7622,6 +7765,17 @@ %1$s iš %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7675,20 +7829,20 @@ Saugyklos optimizavimą galima naudoti tik įsigijus mokamą „Signal“ atsarginių kopijų planą. Norėdami pradėti naudotis šia funkcija, atnaujinkite atsarginių kopijų planą. - Subscribe for %1$s/month + Prenumeruokite už %1$s/mėn. - This media is no longer available + Šis įrašas nebeprieinamas - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Į jūsų dabartinį „Signal“ atsarginės kopijos planą įtraukti pastarosios %1$d d. įrašai. Norėdami pradėti kurti atsargines visų įrašų kopijas, atnaujinkite dabar. + Į jūsų dabartinį „Signal“ atsarginės kopijos planą įtraukti pastarųjų %1$d d. įrašai. Norėdami pradėti kurti atsargines visų įrašų kopijas, atnaujinkite dabar. + Į jūsų dabartinį „Signal“ atsarginės kopijos planą įtraukti pastarųjų %1$d d. įrašai. Norėdami pradėti kurti atsargines visų įrašų kopijas, atnaujinkite dabar. + Į jūsų dabartinį „Signal“ atsarginės kopijos planą įtraukti pastarųjų %1$d d. įrašai. Norėdami pradėti kurti atsargines visų įrašų kopijas, atnaujinkite dabar. - Subscribe for %1$s/month + Prenumeruokite už %1$s/mėn. Ištrynimas dabar sinchronizuojamas visuose jūsų įrenginiuose @@ -7731,11 +7885,13 @@ Pakeistas atsarginio kopijavimo tipas ir prenumerata atšaukta - Prenumerata nutraukta + Subscription canceled Atsisiuntimas baigtas Atsarginė kopija bus sukurta per naktį. + + Subscription inactive Atsarginės kopijos planas @@ -7744,8 +7900,12 @@ %1$s/mėnesį Jūsų atsarginės kopijos planas yra nemokamas - + Atnaujinama %1$s + + Expires on %1$s + + Expired on %1$s Sukurkite savo žinučių istorijos atsarginę kopiją, kad niekada neprarastumėte duomenų įsigiję naują telefoną arba iš naujo įdiegę „Signal“. @@ -7790,6 +7950,10 @@ Atsarginę kopiją sukurti rankiniu būdu Įveskite įrenginio PIN kodą, slaptažodį arba šabloną. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index 912c3e10c7..7fe02f69d3 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -371,6 +371,8 @@ Sarunas Ziņas + + Chat types Ziņa %1$s @@ -836,7 +838,7 @@ - You\'re all set. Start your backup now. + Viss gatavs. Tagad sāciet rezerves kopijas izveidi. Atkarībā no jūsu rezerves kopijas izmēra, process var aizņemt ilgu laiku. Kamēr notiek rezerves kopijas izveide, varat izmantot savu tālruni kā parasti. @@ -2030,6 +2032,7 @@ +%1$d ielūgts +%1$d ielūgti + %1$d cita grupa %1$d cita grupa @@ -2057,6 +2060,7 @@ Neviena ierīce netika atrasta. Tīkla kļūda. Nederīgs kvadrātkods. + Piedodiet, piesaistīts pārāk daudz ierīču, mēģiniet kādu no tām atsaistīt Piedodiet, šis nav derīgs ierīces sasaistes kvadrātkods. Piesaistīt Signal ierīci? @@ -2080,11 +2084,13 @@ Iesniegt paroles frāzi Nederīga paroles frāze! Atbloķēt Signal + Signal Android - bloķēt ekrānu Karte + Nomest atzīmi Pieņemt adresi @@ -2610,6 +2616,7 @@ Signal ziņa + Vēl @@ -2641,6 +2648,7 @@ Nav instalētu uzlīmju Šeit parādīsies uzlīmes no ienākošajām ziņām Nenosaukts + Nezināms @@ -2863,6 +2871,7 @@ Mediju fails vairs nav pieejams Nevar atskaņot multivides failu. + Meklējot ziņu, radās kļūda. Nevar atrast lietotni, kas varētu kopīgot šo multivides saturu. Aizvērt @@ -2936,6 +2945,7 @@ Ziņas Zvani + Kļūmes Rezerves kopijas Bloķēšanas (noslēgšanas) statuss @@ -2945,6 +2955,7 @@ Nezināms Balss piezīmes Kontakts pievienojās Signal + Paziņojumu kanāla iestatījumu atvēršanai nav pieejama neviena darbība. Fona savienojums @@ -3742,10 +3753,12 @@ No visām ierīcēm tiks neatgriezeniski dzēsta visa ziņu vēsture. Šo darbību nevar atsaukt. Izdzēst visas tagad + Uz visiem laikiem 1 gadu 6 mēnešiem 30 dienām + Nav %1$s ziņas @@ -3771,6 +3784,7 @@ Rādīt Zvana signāls Ziņu fonta lielums + Prioritāte Paziņojumu problēmu novēršana @@ -3999,6 +4013,7 @@ Skenēt maksājuma saņēmēja adreses kvadrātkodu + Pieprasīt Maksāt Pieejamais atlikums: %1$s @@ -4131,6 +4146,7 @@ Iespējams piespraust tikai līdz %1$d sarunām + Kontaktpersonas foto Arhivēts @@ -4139,6 +4155,10 @@ Jauna saruna Atvērt kameru Vēl nav sarunu.\nSāciet, nosūtot ziņu draugam. + + No chats to display + + Folder settings @@ -4379,6 +4399,7 @@ Sarunu rezerves kopijas Pārnest kontu Pārnest kontu uz citu Android ierīci + Rezerves kopijas paroles frāzi Atjaunot Nevar importēt dublējumus no jaunākām Signal versijām @@ -4586,6 +4607,7 @@ Nevar atvērt Wi-Fi iestatījumus. Ieslēdziet Wi-Fi manuāli. + Piešķirt atrašanās vietas atļauju Ieslēgt atrašanās vietas pakalpojumus Ieslēgt Wi-Fi @@ -4846,6 +4868,7 @@ Kopīgot + Sūtīt , %1$s @@ -5150,6 +5173,122 @@ Tastatūra Sūtīt, nospiežot \"Enter\" + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat types + %1$d chat type + %1$d chat types + + + + %1$d chats + %1$d chat + %1$d chats + + + + %1$d chats excluded + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Ziņas @@ -5235,6 +5374,7 @@ Multivides kvalitāte + Nosūtītās multivides kvalitāte Sūtot augstas kvalitātes multivides saturu, tiks izmantots vairāk datu. @@ -7391,12 +7531,12 @@ - Your backups subscription expired + Rezerves kopiju abonementa derīguma termiņš ir beidzies - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Rezerves kopiju plāna derīguma termiņš ir beidzies, jo to nevarēja atjaunot, izmantojot pašreizējo maksājuma veidu. Pēc %1$d dienām multivide jūsu rezerves kopijā tiks dzēsta. + Rezerves kopiju plāna derīguma termiņš ir beidzies, jo to nevarēja atjaunot, izmantojot pašreizējo maksājuma veidu. Pēc %1$d dienas multivide jūsu rezerves kopijā tiks dzēsta. + Rezerves kopiju plāna derīguma termiņš ir beidzies, jo to nevarēja atjaunot, izmantojot pašreizējo maksājuma veidu. Pēc %1$d dienām multivide jūsu rezerves kopijā tiks dzēsta. Lai turpinātu multivides rezerves kopiju izveidošanu, jebkurā brīdī varat atsākt maksājumu veikšanu. @@ -7415,9 +7555,9 @@ Izvēloties \"Izlaist\", multivides rezerves kopija tiks dzēsta pēc %1$d dienām. - Your backups subscription failed to renew + Rezerves kopiju abonementu neizdevās atjaunot - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Pārliecinieties, kā jūsu maksājuma veids ir derīgs. Pieskarieties pie \"Pārvaldīt abonementu\" un sadaļā \"Maksājumu veidi\" pieskarieties pie \"Atjaunināt\". Neizdevās izveidot rezerves kopiju @@ -7429,7 +7569,7 @@ Pārvaldīt abonementu - Subscribe for %1$s/month + Abonēt par %1$s mēnesī Lejupielādēt multividi tūlīt @@ -7464,6 +7604,17 @@ %1$s no %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7517,19 +7668,19 @@ Krātuves optimizāciju var izmantot tikai Signal rezerves kopiju maksas plāna īpašnieki. Iegādājieties rezerves kopiju plānu, lai sāktu izmantot šo funkciju. - Subscribe for %1$s/month + Abonēt par %1$s mēnesī - This media is no longer available + Šī multivide vairs nav pieejama - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Pašreizējais Signal rezerves kopiju plāns ietver pēdējo %1$d dienu multividi. Lai izveidotu visas multivides rezerves kopiju, iegādājieties citu plānu. + Pašreizējais Signal rezerves kopiju plāns ietver pēdējo %1$d dienas multividi. Lai izveidotu visas multivides rezerves kopiju, iegādājieties citu plānu. + Pašreizējais Signal rezerves kopiju plāns ietver pēdējo %1$d dienu multividi. Lai izveidotu visas multivides rezerves kopiju, iegādājieties citu plānu. - Subscribe for %1$s/month + Abonēt par %1$s mēnesī Dzēšana tagad ir sinhronizēta visās jūsu ierīcēs @@ -7572,11 +7723,13 @@ Rezerves kopijas veids mainīts, un abonements atcelts - Abonements atcelts + Subscription canceled Lejupielāde pabeigta Rezerves kopija tiks izveidota pa nakti. + + Subscription inactive Rezerves kopiju plāns @@ -7585,8 +7738,12 @@ %1$s/mēnesī Jums ir bezmaksas rezerves kopiju plāns - + Atjaunojas %1$s + + Expires on %1$s + + Expired on %1$s Izveidojiet ziņu vēstures rezerves kopiju, lai nezaudētu datus, nomainot tālruni vai pārinstalējot Signal. @@ -7631,6 +7788,10 @@ Pašrocīgi izveidot rezerves kopiju Ievadiet ierīces PIN kodu, paroli vai atbloķēšanas kombināciju. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml index 3708cb18c9..d4984cab5b 100644 --- a/app/src/main/res/values-mk/strings.xml +++ b/app/src/main/res/values-mk/strings.xml @@ -368,6 +368,8 @@ Разговори Пораки + + Chat types Порака %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Сè е подготвено. Започнете со правење резервна копија сега. Во зависност од големината на резервната копија, ова може да потрае. Можете најнормално да го користите телефонот додека се прави резервната копија. @@ -1969,6 +1971,7 @@ +%1$d поканет +%1$d поканети + %1$d дополнителна група %1$d дополнителни групи @@ -1995,6 +1998,7 @@ Уредот не е пронајден. Мрежна грешка. Погрешен QR код. + Извинете, имате премногу поврзани уреди, обидете се да отстраните некои од нив Извинете, ова не е валиден QR код за поврзување со уредот. Да поврзам уред со Signal? @@ -2017,11 +2021,13 @@ Испрати лозинка Погрешна лозинка! Отклучи го Signal + Signal Android - Заклучувен екран Мапа + Фрли покажувач Прифати адреса @@ -2525,6 +2531,7 @@ Signal порака + Повеќе @@ -2556,6 +2563,7 @@ Нема стикери инсталирано Стикерите од дојдовните пораки ќе се појават овде Без наслов + Непознато @@ -2777,6 +2785,7 @@ Медијата повеќе не е достапна. Не може да се пушти медиумската датотека. + Грешка при пронаоѓање на пораката. Не е пронајдена апликација која може да го сподели овој тип на медиумска датотека. Затвори @@ -2848,6 +2857,7 @@ Пораки Повици + Неуспеси Резервни копии Статус @@ -2857,6 +2867,7 @@ Непознато Гласовни белешки Кога контакт ќе се приклучи на Signal + Нема достапна активност за отворање на поставките на каналот за известувања. Врска во позадина @@ -3641,10 +3652,12 @@ Целата историја на пораки ќе биде трајно отстранета од сите уреди. Ова дејство е неповратно. Избриши сѐ веднаш + Засекогаш 1 година 6 месеци 30 дена + Нема %1$s порака @@ -3669,6 +3682,7 @@ Прикажи Звук за ѕвонење Големина на фонт за пораки + Приоритет Решете проблеми со известувањата @@ -3897,6 +3911,7 @@ Скенирајте го QR кодот на адресата на примачот + Барање Плати Расположливо салдо: %1$s @@ -4028,6 +4043,7 @@ Можете да закачите најмногу %1$d разговори + Слика на контакт Архивирано @@ -4036,6 +4052,10 @@ Нов разговор Отвори камера Немате разговори.\nЗапочнете со испраќање порака на пријател. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Резервни копии на разговори Префрли сметка Префрли сметка на друг Android уред + Внесете лозинка за резервна копија Врати Не може да се увезат резервни копии од понови верзии @@ -4475,6 +4496,7 @@ Не можам да ги отворам поставувањата за Wi-Fi. Ве молиме вклучете Wi-Fi рачно. + Додели дозвола за локација Вклучи локациски сервиси Вклучи Wi-Fi @@ -4728,6 +4750,7 @@ Сподели + Испрати , %1$s @@ -5031,6 +5054,119 @@ Тастатура Испраќај со копчето enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Пораки @@ -5115,6 +5251,7 @@ Квалитет на медиумски датотеки + Квалитет на испратена медиумска датотека Испраќањето на висококвалитетна медиумска датотека ќе користи повеќе податоци. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Вашата претплата на резервни копии истече - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Вашиот претплатен пакет на резервни копии истече зашто не можеше да се обнови со вашиот тековен начин на плаќање. По %1$d ден, медиумските датотеки од вашата резервна копија ќе бидат избришани. + Вашиот претплатен пакет на резервни копии истече зашто не можеше да се обнови со вашиот тековен начин на плаќање. По %1$d дена, медиумските датотеки од вашата резервна копија ќе бидат избришани. Можете во кое било време да почнете одново да плаќате за резервни копии за да продолжите да правите резервни копии од сите ваши медиумски датотеки. @@ -7257,9 +7394,9 @@ Ако изберете „Прескокни“, медиумските датотеки во вашата резервна копија ќе бидат избришани за %1$d дена. - Your backups subscription failed to renew + Вашата претплата на резервни копии не успеа да се обнови - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Проверете дали внесените податоци за начин на плаќање се ажурирани. Допрете на „Управување со претплатата“ и под „Начин на плаќање“ допрете на „Ажурирај“. Не можеше да се направи резервна копија @@ -7271,7 +7408,7 @@ Управување со претплатата - Subscribe for %1$s/month + Претплатете се за %1$s/месечно Преземете ги медиумските датотеки сега @@ -7306,6 +7443,17 @@ %1$s од %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Оптимизацијата на складирање може да се користи само со платена претплата на Signal резервни копии. Надградете го претплатничкиот пакет на резервни копии за да почнете да ја користите оваа функција. - Subscribe for %1$s/month + Претплатете се за %1$s/месечно - This media is no longer available + Оваа медиумска датотека повеќе не е достапна - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Вашиот тековен претплатен пакет на резервни копии ги вклучува медиумските датотеки од последниот %1$d ден. За да имате резервна копија од сите ваши медиумските датотеки, надоградете го пакетот сега. + Вашиот тековен претплатен пакет на резервни копии ги вклучува медиумските датотеки од последните %1$d дена. За да имате резервна копија од сите ваши медиумските датотеки, надоградете го пакетот сега. - Subscribe for %1$s/month + Претплатете се за %1$s/месечно Бришењето сега е синхронизирано на сите ваши уреди @@ -7413,11 +7561,13 @@ Видот на резервна копија е сменет и претплатата е откажана - Претплатата е откажана + Subscription canceled Преземањето е завршено Резервната копија ќе се прави во текот на ноќта. + + Subscription inactive Претплатен пакет на резервни копии @@ -7426,8 +7576,12 @@ %1$s/месец Вашиот претплатен пакет на резервни копии е бесплатен - + Се обновува на %1$s + + Expires on %1$s + + Expired on %1$s Направете резервна копија на вашата историја на пораки за да не губите податоци кога ќе земете нов телефон или ќе ја реинсталирате Signal апликацијата. @@ -7472,6 +7626,10 @@ Направете резервна копија рачно Ве молиме внесете го вашиот PIN, лозинка или шема за отклучување. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 17b7bdd3a2..49aca1d94f 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -368,6 +368,8 @@ ചാറ്റുകൾ സന്ദേശങ്ങൾ + + Chat types സന്ദേശ൦ %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + നിങ്ങൾ തയ്യാറായിക്കഴിഞ്ഞു. നിങ്ങളുടെ ബാക്കപ്പ് ഇപ്പോൾ ആരംഭിക്കുക. നിങ്ങളുടെ ബാക്കപ്പിൻ്റെ വലുപ്പത്തെ ആശ്രയിച്ച്, ഇതിന് വളരെയധികം സമയമെടുത്തേക്കാം. ബാക്കപ്പ് നടക്കുമ്പോൾ നിങ്ങൾക്ക് സാധാരണപോലെ നിങ്ങളുടെ ഫോൺ ഉപയോഗിക്കാം. @@ -1969,6 +1971,7 @@ +%1$d ആളെ ക്ഷണിച്ചു +%1$d പേരെ ക്ഷണിച്ചു + %1$d അധിക ഗ്രൂപ്പ് %1$d അധിക ഗ്രൂപ്പുകൾ @@ -1995,6 +1998,7 @@ ഉപകരണങ്ങളൊന്നും കണ്ടെത്തിയില്ല. നെറ്റ്‌വർക്ക് പിശക്. QR കോഡ് അസാധുവാണ്. + ക്ഷമിക്കണം, നിങ്ങൾക്ക് ഇതിനകം തന്നെ നിരവധി ഉപകരണങ്ങൾ ബന്ധിപ്പിച്ചിട്ടുണ്ട്, ചിലത് നീക്കംചെയ്യാൻ ശ്രമിക്കുക ക്ഷമിക്കണം, ഇത് സാധുവായ ഉപകരണ ലിങ്ക് QR കോഡല്ല. ഒരു Signal ഉപകരണം ബന്ധിപ്പിക്കണോ? @@ -2017,11 +2021,13 @@ രഹസ്യവാചകം സമർപ്പിക്കുക രഹസ്യവാചകം അസാധുവാണ്! Signal തുറക്കൂ + Signal Android - ലോക്ക് സ്‌ക്രീൻ ഭൂപടം + ഡ്രോപ്പ് പിൻ വിലാസം സ്വീകരിക്കുക @@ -2525,6 +2531,7 @@ Signal സന്ദേശം + കൂടുതൽ @@ -2556,6 +2563,7 @@ സ്റ്റിക്കറുകളൊന്നും ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ല വരുന്ന സന്ദേശങ്ങളിൽ നിന്നുള്ള സ്റ്റിക്കറുകൽ ഇവിടെ ദൃശ്യമാകും ശീർ‌ഷകമില്ലാത്തത് + അജ്ഞാതം @@ -2777,6 +2785,7 @@ മീഡിയ ഇനി ലഭ്യമല്ല. മീഡിയ പ്ലേ ചെയ്യാൻ കഴിയുന്നില്ല. + സന്ദേശം കണ്ടെത്തുന്നതിൽ പിശക്. ഈ മീഡിയ പങ്കിടാൻ കഴിയുന്ന ഒരു അപ്ലിക്കേഷൻ കണ്ടെത്താനായില്ല. അടയ്ക്കുക @@ -2848,6 +2857,7 @@ സന്ദേശങ്ങള്‍ കോളുകൾ + പരാജയങ്ങൾ ബാക്കപ്പുകൾ ലോക്ക് നില @@ -2857,6 +2867,7 @@ അജ്ഞാതം ശബ്ദ കുറിപ്പുകൾ കോൺ‌ടാക്റ്റ് Signal-ൽ ചേർന്നു + അറിയിപ്പ് ചാനൽ ക്രമീകരണങ്ങൾ തുറക്കാൻ ഒരു പ്രവർത്തനവും ലഭ്യമല്ല. പശ്ചാത്തല കണക്ഷൻ @@ -3641,10 +3652,12 @@ എല്ലാ സന്ദേശ ചരിത്രവും എല്ലാ ഉപകരണങ്ങളിൽ നിന്നും ശാശ്വതമായി നീക്കം ചെയ്യപ്പെടും. ഈ പ്രവൃത്തി പഴയപടിയാക്കാനാകില്ല. എല്ലാം ഇപ്പോൾ ഇല്ലാതാക്കുക + എന്നേക്കും 1 വർഷം 6 മാസം 30 ദിവസം + ഒന്നുമില്ല %1$s സന്ദേശം @@ -3669,6 +3682,7 @@ കാണിക്കുക റിംഗ്‌ടോൺ സന്ദേശ ഫോണ്ട് വലുപ്പം + മുൻഗണന അറിയിപ്പുകൾ ട്രബിൾഷൂട്ട് ചെയ്യുക @@ -3897,6 +3911,7 @@ പണമടയ്ക്കുന്നയാളുടെ വിലാസം ക്യുആർ കോഡ് സ്കാൻ ചെയ്യുക + അഭ്യർത്ഥിക്കുക പണമടയ്ക്കുക ലഭ്യമായ ബാലൻസ്: %1$s @@ -4028,6 +4043,7 @@ നിങ്ങൾക്ക് %1$d ചാറ്റുകൾ വരെ മാത്രമേ പിൻ ചെയ്യാൻ കഴിയൂ + കോൺ‌ടാക്റ്റിന്റെ ഫോട്ടോ തിരഞ്ഞെടുത്തത് അനാർക്കൈവ് ചെയ്യുക @@ -4036,6 +4052,10 @@ പുതിയ ചാറ്റ് ക്യാമറ തുറക്കുക ഇതുവരെ ചാറ്റുകളൊന്നുമില്ല.\nഒരു സുഹൃത്തിന് സന്ദേശമയച്ചുകൊണ്ട് ആരംഭിക്കുക. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ ചാറ്റ് ബാക്കപ്പുകൾ അക്കൗണ്ട് മാറ്റിസ്ഥാപിക്കുക അക്കൌണ്ട് ഒരു പുതിയ ആൻഡ്രോയിഡ് ഉപകരണത്തിലേക്ക് മാറ്റിസ്ഥാപിക്കുക + ബാക്കപ്പിന്റെ രഹസ്യവാചകം നൽകുക വീണ്ടെടുക്കൂ പുതിയ Signal പതിപ്പിൽ നിന്ന് ബാക്കപ്പ് ഇമ്പോർട്ട് ഇല്ല @@ -4475,6 +4496,7 @@ വൈഫൈ ക്രമീകരണങ്ങൾ തുറക്കാൻ സാധ്യമല്ല. ദയവായി വൈ-ഫൈ മാനുവലായി ഓണാക്കുക. + സ്ഥലം അനുമതി നൽകുക ലൊക്കേഷൻ സേവനങ്ങൾ ഓണാക്കുക വൈ-ഫൈ ഓണാക്കുക @@ -4728,6 +4750,7 @@ പങ്കിടുക + അയയ്‌ക്കുക , %1$s @@ -5031,6 +5054,119 @@ കീബോർഡ് എൻ്റർ ചെയ്ത് അയയ്ക്കുക + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done സന്ദേശങ്ങൾ @@ -5115,6 +5251,7 @@ മീഡിയ നിലവാരം + അയയ്ക്കുന്ന മീഡിയയുടെ നിലവാരം ഉയർന്ന നിലവാരമുള്ള മീഡിയ അയയ്ക്കുന്നത് കൂടുതൽ ഡാറ്റ ഉപയോഗിക്കും. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + നിങ്ങളുടെ ബാക്കപ്പ് സബ്‌സ്‌ക്രിപ്‌ഷൻ കാലഹരണപ്പെട്ടു - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + നിങ്ങളുടെ നിലവിലെ പേയ്‌മെൻ്റ് രീതി ഉപയോഗിച്ച് പുതുക്കാൻ കഴിയാത്തതിനാൽ നിങ്ങളുടെ ബാക്കപ്പ് പ്ലാൻ കാലഹരണപ്പെട്ടു. %1$d ദിവസത്തിന് ശേഷം, നിങ്ങളുടെ ബാക്കപ്പിലെ മീഡിയ ഇല്ലാതാക്കപ്പെടും. + നിങ്ങളുടെ നിലവിലെ പേയ്‌മെൻ്റ് രീതി ഉപയോഗിച്ച് പുതുക്കാൻ കഴിയാത്തതിനാൽ നിങ്ങളുടെ ബാക്കപ്പ് പ്ലാൻ കാലഹരണപ്പെട്ടു. %1$d ദിവസത്തിന് ശേഷം, നിങ്ങളുടെ ബാക്കപ്പിലെ മീഡിയ ഇല്ലാതാക്കപ്പെടും. നിങ്ങളുടെ എല്ലാ മീഡിയയും ബാക്കപ്പ് ചെയ്യുന്നത് തുടരാൻ നിങ്ങൾക്ക് എപ്പോൾ വേണമെങ്കിലും ബാക്കപ്പുകൾക്കായി വീണ്ടും പണമടച്ച് തുടങ്ങാം. @@ -7257,9 +7394,9 @@ നിങ്ങൾ \"ഒഴിവാക്കുക\" തിരഞ്ഞെടുത്താൽ, നിങ്ങളുടെ ബാക്കപ്പിലെ മീഡിയ %1$d ദിവസത്തിനുള്ളിൽ ഇല്ലാതാക്കപ്പെടും. - Your backups subscription failed to renew + നിങ്ങളുടെ ബാക്കപ്പ് സബ്‌സ്‌ക്രിപ്‌ഷൻ പുതുക്കാനായില്ല - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + നിങ്ങളുടെ പേയ്‌മെൻ്റ് രീതി അപ് ടു ഡേറ്റ് ആണെന്ന് ഉറപ്പാക്കാൻ പരിശോധിക്കുക. സബ്‌സ്‌ക്രിപ്‌ഷൻ മാനേജ് ചെയ്യുക ടാപ്പുചെയ്‌ത് പേയ്‌മെൻ്റ് രീതികൾക്ക് കീഴിൽ അപ്‌ഡേറ്റ് ടാപ്പ് ചെയ്യുക. ബാക്കപ്പ് പൂർത്തിയാക്കാൻ കഴിഞ്ഞില്ല @@ -7269,9 +7406,9 @@ ഒഴിവാക്കുക - സബ്‍സ്ക്രിപ്ഷൻ നിയന്ത്രിക്കുക + സബ്‍സ്ക്രിപ്ഷൻ മാനേജ് ചെയ്യുക - Subscribe for %1$s/month + പ്രതിമാസം %1$s/-ന് സബ്‌സ്‌ക്രൈബ് ചെയ്യുക മീഡിയ ഇപ്പോൾ ഡൗൺലോഡ് ചെയ്യുക @@ -7306,6 +7443,17 @@ %2$s ൽ %1$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ പണമടച്ചുള്ള Signal ബാക്കപ്പുകളിൽ മാത്രമേ സ്റ്റോറേജ് ഒപ്റ്റിമൈസേഷൻ ഉപയോഗിക്കാൻ കഴിയൂ. ഈ സവിശേഷത ഉപയോഗിച്ച് തുടങ്ങാൻ നിങ്ങളുടെ ബാക്കപ്പ് പ്ലാൻ അപ്‌ഗ്രേഡ് ചെയ്യുക. - Subscribe for %1$s/month + പ്രതിമാസം %1$s/-ന് സബ്‌സ്‌ക്രൈബ് ചെയ്യുക - This media is no longer available + ഈ മീഡിയ ഇനി ലഭ്യമല്ല - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + നിങ്ങളുടെ നിലവിലെ Signal ബാക്കപ്പ് പ്ലാനിൽ നിങ്ങളുടെ ഏറ്റവും പുതിയ %1$d ദിവസത്തെ മീഡിയ ഉൾപ്പെടുന്നു. നിങ്ങളുടെ എല്ലാ മീഡിയയും ബാക്കപ്പ് ചെയ്യാൻ തുടങ്ങാൻ, ഇപ്പോൾ അപ്‌ഗ്രേഡ് ചെയ്യുക. + നിങ്ങളുടെ നിലവിലെ Signal ബാക്കപ്പ് പ്ലാനിൽ നിങ്ങളുടെ ഏറ്റവും പുതിയ %1$d ദിവസത്തെ മീഡിയ ഉൾപ്പെടുന്നു. നിങ്ങളുടെ എല്ലാ മീഡിയയും ബാക്കപ്പ് ചെയ്യാൻ തുടങ്ങാൻ, ഇപ്പോൾ അപ്‌ഗ്രേഡ് ചെയ്യുക. - Subscribe for %1$s/month + പ്രതിമാസം %1$s/-ന് സബ്‌സ്‌ക്രൈബ് ചെയ്യുക ഇല്ലാതാക്കുന്നത് ഇപ്പോൾ നിങ്ങളുടെ എല്ലാ ഉപകരണങ്ങളിലും സമന്വയിപ്പിച്ചിരിക്കുന്നു @@ -7413,11 +7561,13 @@ ബാക്കപ്പ് തരം മാറ്റി, സബ്സ്ക്രിപ്ഷൻ റദ്ദാക്കി - സബ്‌സ്‌ക്രിപ്‌ഷൻ റദ്ദാക്കി + Subscription canceled ഡൗൺലോഡ് പൂർത്തിയായി ഒറ്റരാത്രികൊണ്ട് ബാക്കപ്പ് സൃഷ്ടിക്കപ്പെടും. + + Subscription inactive ബാക്കപ്പ് പ്ലാൻ @@ -7426,8 +7576,12 @@ %1$s/ മാസം നിങ്ങളുടെ ബാക്കപ്പ് പ്ലാൻ സൗജന്യമാണ് - + %1$s പുതുക്കുന്നു + + Expires on %1$s + + Expired on %1$s നിങ്ങളുടെ സന്ദേശ ചരിത്രം ബാക്കപ്പ് ചെയ്യുക, അതുവഴി നിങ്ങൾക്ക് ഒരു പുതിയ ഫോൺ ലഭിക്കുമ്പോഴോ Signal വീണ്ടും ഇൻസ്റ്റാൾ ചെയ്യുമ്പോഴോ ഒരിക്കലും ഡാറ്റ നഷ്‌ടപ്പെടില്ല. @@ -7472,6 +7626,10 @@ സ്വമേധയാ ബാക്കപ്പ് ചെയ്യുക നിങ്ങളുടെ ഉപകരണ PIN, പാസ്‌വേഡ് അല്ലെങ്കിൽ പാറ്റേൺ നൽകുക. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-mr/strings.xml b/app/src/main/res/values-mr/strings.xml index 93f20b3fc6..134a6780f1 100644 --- a/app/src/main/res/values-mr/strings.xml +++ b/app/src/main/res/values-mr/strings.xml @@ -368,6 +368,8 @@ चॅट्स संदेश + + Chat types संदेश %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + आपण तयार आहात. आपला बॅकअप आत्ता सुरू करा. आपल्या बॅकअपच्या आकारावर अवलंबून, याला बराच वेळ लागू शकतो. बॅकअप घेत असताना आपण आपला फोन नेहमीप्रमाणे वापरू शकता. @@ -1969,6 +1971,7 @@ +%1$d आमंत्रित +%1$d आमंत्रित + %1$d अतिरिक्त गट %1$d अतिरिक्त गट @@ -1995,6 +1998,7 @@ कुठलेही डिव्हाईस सापडले नाही. नेटवर्क त्रुटी. अवैध QR कोड. + क्षमस्व, आपल्याकडे आधीपासून खूप सारे डिव्हाईस लिंक केलेले आहेत, काही काढून प्रयत्न करा क्षमस्व, हा एक वैध डिव्हाईस लिंक QR कोड नाही. एक Signal डिव्हाईस लिंक करायचा? @@ -2017,11 +2021,13 @@ पासफ्रेझ प्रविष्ट करा अवैध पासफ्रेझ! Signal अनलॉक करा + Signal Android - लॉक स्क्रीन नकाशा + पिन ड्रॉप करा पत्ता स्वीकारा @@ -2525,6 +2531,7 @@ Signal संदेश + अधिक @@ -2556,6 +2563,7 @@ कुठलेही स्थापन केलेले स्टिकर नाहीत येणाऱ्या संदेशांवरील स्टिकर येथे दिसतील. अशीर्षकांकित + अज्ञात @@ -2777,6 +2785,7 @@ मिडिया आता उपलब्ध नाही. मिडीया प्ले करण्यास असमर्थ. + संदेश शोधण्यात त्रुटी. हे मिडिया शेअर करण्यासाठी सक्षम असे अॅप सापडू शकले नाही. बंद करा @@ -2848,6 +2857,7 @@ संदेश कॉल + अपयश बॅकअप लॉक स्थिती @@ -2857,6 +2867,7 @@ अज्ञात व्हॉईस टिपा संपर्क Signal मध्ये सामील झाला + सूचना चॅनल सेटिंग उघडण्यासाठी कुठलीही अॅक्टिव्हिटी उपलब्ध नाही. बॅकग्राऊंड कनेकशन @@ -3641,10 +3652,12 @@ सर्व संदेश इतिहास सर्व डिव्हाइसेसवरून कायमस्वरूपी हटवले जाईल. ही क्रिया पूर्ववत केली जाऊ शकत नाही. सर्व आता हटवा + नेहमीसाठी 1 वर्ष 6 महिने 30 दिवस + कुठलेही नाही %1$s संदेश @@ -3669,6 +3682,7 @@ दाखवा रिंगटोन संदेश फाँट आकार + प्राधान्यता अधिसूचना समस्यानिवारण करा @@ -3897,6 +3911,7 @@ देणाऱ्याचा पत्ता QR कोड स्कॅन करा + विनंती पे करा उपलब्ध बॅलंस: %1$s @@ -4028,6 +4043,7 @@ आपण फक्त %1$d पर्यंत चॅट्स पिन करू शकता + संपर्क फोटो चित्र आर्काईव्ह केले @@ -4036,6 +4052,10 @@ नवीन चॅट कॅमेरा उघडा आतापर्यंत कुठेलही चॅट्स नाहीत.\nमित्राला संदेश पाठवून सुरू करा. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ चॅट बॅकअप्स खाते स्थानांतरित करा नवीन Android डिव्हाइसवर खाते स्थानांतरित करा + बॅकअप पासफ्रेझ प्रविष्ट करा पुनर्स्थापना करा Signal च्या नवीन आवृत्त्यांवरून बॅकअप आयात करू शकत नाही @@ -4475,6 +4496,7 @@ Wi-Fi सेटिंग उघडण्यात अक्षम. कृपया Wi-Fi व्यक्तीचलितपणे चालू करा. + स्थान परवानगी मान्य करा स्थान सेवा चालू करा Wi-Fi चालू करा @@ -4728,6 +4750,7 @@ सामायिक करा + पाठवा , %1$s @@ -5031,6 +5054,119 @@ कीबोर्ड इंटर सह पाठवा + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done संदेश @@ -5115,6 +5251,7 @@ मिडिया दर्जा + मिडिया पाठवण्याचा दर्जा मिडिया पाठवताना उच्च दर्जा हा पर्याय निवडल्यास अधिक डेटा वापरला जाईल. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + आपली बॅकअप सदस्यता कालबाह्य झाली आहे - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + आपला बॅकअप प्लॅन कालबाह्य झाला आहे कारण आपल्या वर्तमान पेमेंट पद्धतीने त्याचे नूतनीकरण झालेले नाही. %1$d दिवसानंतर, आपल्या बॅकअप मधील मिडीया हटवण्यात येईल. + आपला बॅकअप प्लॅन कालबाह्य झाला आहे कारण आपल्या वर्तमान पेमेंट पद्धतीने त्याचे नूतनीकरण झालेले नाही. %1$d दिवसांनंतर, आपल्या बॅकअप मधील मिडीया हटवण्यात येईल. आपला सर्व मिडीयाचा बॅकअप घेणे सुरू ठेवण्यासाठी आपण कोणत्याही वेळी बॅकअपसाठी पुहा पैसे देणे सुरू करू शकता. @@ -7257,9 +7394,9 @@ आपण जर आपल्या बॅकअपमध्ये मिडीया \"वगळा\" निवडल्यास मिडीया %1$d दिवसांत हटवले जाईल. - Your backups subscription failed to renew + आपल्या बॅकअप सदस्यत्वाचे नूतनीकरण अयशस्वी झाले - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + खात्री करण्यासाठी आपली पेमेंट पद्धत अद्ययावत असल्याचे तपासा. सदस्यत्व व्यवस्थापित करा वर टॅप करा आणि पेमेंट पद्धतींमध्ये अद्यतनित करा वर टॅप करा. बॅकअप पूर्ण करू शकत नाही @@ -7271,7 +7408,7 @@ सदस्यत्व व्यवस्थापित करा - Subscribe for %1$s/month + %1$s/महिना सदस्यता आत्ता मिडीया डाउनलोड करा @@ -7306,6 +7443,17 @@ %1$s पैकी %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ संग्रहण सानुूलन फक्त Signal बॅकअपच्या सशुल्क टायरसह वापरले जाऊ शकते. हे वैशिष्ट्य वापरणे सुरू करण्यासाठी आपला बॅकअप प्लॅन अपग्रेड करा. - Subscribe for %1$s/month + %1$s/महिना सदस्यता - This media is no longer available + हा मिडीया यापुढे उपलब्ध नाही - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + आपल्या वर्तमान Signal बॅकअप प्लॅनमध्ये आपल्या सर्वात अलीकडील %1$d दिवसाच्या मिडीयाचा समावेश आहे. आपल्या सर्व मिडीयाचा बॅकअप घेणे सुरू करण्यासाठी, आत्ता अपग्रेड करा. + आपल्या वर्तमान Signal बॅकअप प्लॅनमध्ये आपल्या सर्वात अलीकडील %1$d दिवसांच्या मिडीयाचा समावेश आहे. आपल्या सर्व मिडीयाचा बॅकअप घेणे सुरू करण्यासाठी, आत्ता अपग्रेड करा. - Subscribe for %1$s/month + %1$s/महिना सदस्यता हटवणे आता आपल्या सर्व डिव्हाइसेसवरून संकालित केले आहे @@ -7413,11 +7561,13 @@ बॅकअप प्रकार बदलला आणि सदस्यत्व रद्द केले - सब्स्क्रिप्शन रद्द केले + Subscription canceled डाउनलोड पूर्ण झाले रात्रभर बॅकअप तयार केला जाईल. + + Subscription inactive बॅकअप प्लॅन @@ -7426,8 +7576,12 @@ %1$s/महिना आपला बॅकअप प्लॅन मोफत आहे - + %1$s नी नूतनीकरण केले + + Expires on %1$s + + Expired on %1$s आपल्या संदेश इतिहास चा बॅकअप घ्या ज्यामुळे आपण जेव्हा नवीन फोन घ्याल किंवा Signal पुन्हा इन्स्टॉल कराल तेव्हा आपण कधीही आपला डेटा गमावणार नाही. @@ -7472,6 +7626,10 @@ मॅन्युअली बॅक अप कृपया आपली डिव्हाइस पिन, पासवर्ड किंवा पॅटर्न प्रविष्ट करा. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml index 79a17b30db..909eb5fc53 100644 --- a/app/src/main/res/values-ms/strings.xml +++ b/app/src/main/res/values-ms/strings.xml @@ -365,6 +365,8 @@ Sembang Mesej + + Chat types Mesej %1$s @@ -796,7 +798,7 @@ - You\'re all set. Start your backup now. + Anda sudah bersedia. Mulakan sandaran anda sekarang. Bergantung pada saiz sandaran anda, ini mungkin mengambil masa yang lama. Anda boleh menggunakan telefon anda seperti biasa semasa sandaran dilakukan. @@ -1908,6 +1910,7 @@ +%1$d dijemput + %1$d kumpulan tambahan @@ -1933,6 +1936,7 @@ Tiada peranti dijumpai. Ralat rangkaian. Kod QR tidak sah. + Maaf, anda mempunyai terlalu banyak peranti dipautkan, cuba alih keluar beberapa Maaf, ini bukan kod QR pautan peranti yang sah. Memautkan satu peranti Signal? @@ -1954,11 +1958,13 @@ Hantar frasa laluan Frasa laluan tidak sah! Buka Signal + Signal Android - Kunci Skrin Peta + Letakkan pin Terima alamat @@ -2440,6 +2446,7 @@ Mesej Signal + Lagi @@ -2471,6 +2478,7 @@ Tiada pelekat dipasang Pelekat daripada mesej masuk akan muncul di sini Tiada tajuk + Tidak diketahui @@ -2691,6 +2699,7 @@ Media tidak lagi tersedia. Tidak dapat memainkan media. + Ralat mencari mesej. Tidak menemui aplikasi yang dapat kongsikan media ini. Tutup @@ -2760,6 +2769,7 @@ Mesej Panggilan + Kegagalan Sandaran Status kunci @@ -2769,6 +2779,7 @@ Tidak diketahui Nota Suara Kenalan menyertai Signal + Tidak ada aktiviti yang tersedia untuk membuka tetapan pemberitahuan. Sambungan latar belakang @@ -3540,10 +3551,12 @@ Semua sejarah mesej akan dialih keluar secara kekal daripada semua peranti. Tindakan ini tidak boleh dibatalkan. Padam semua sekarang + Selama-lamanya 1 tahun 6 bulan 30 hari + Tiada %1$s mesej @@ -3567,6 +3580,7 @@ Papar Nada dering Saiz huruf mesej + Keutamaan Pemberitahuan Menyelesaikan Masalah @@ -3795,6 +3809,7 @@ Imbas kod QR alamat penerima pembayaran + Permintaan Bayar Baki yang tersedia: %1$s @@ -3925,6 +3940,7 @@ Anda hanya boleh pin sebanyak %1$d sembang + Imej Foto Kenalan Diarkib @@ -3933,6 +3949,10 @@ Sembang baharu Buka Kamera Belum ada sembang.\nMulakan dengan menghantar mesej kepada rakan. + + No chats to display + + Folder settings @@ -4157,6 +4177,7 @@ Sandaran sembang Pindahkan akaun Pindahkan akaun ke peranti Android baharu + Masukkan frasa laluan sandaran Memulihkan Sandaran tak dapat diimport daripada versi Signal baru @@ -4364,6 +4385,7 @@ Tidak dapat membuka Tetapan Wi-Fi. Sila hidupkan Wi-Fi secara manual. + Berikan kebenaran lokasi Hidupkan perkhidmatan lokasi Hidupkan Wi-Fi @@ -4610,6 +4632,7 @@ Kongsi + Hantar , %1$s @@ -4912,6 +4935,116 @@ Papan Kekunci Hantar dengan masukkan + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat types + + + + %1$d chats + + + + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Mesej @@ -4995,6 +5128,7 @@ Kualiti media + Kualiti media yang dihantar Menghantar media berkualiti tinggi akan menggunakan lebih banyak data. @@ -7079,10 +7213,10 @@ - Your backups subscription expired + Langganan sandaran anda telah tamat tempoh - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Pelan sandaran anda telah tamat tempoh kerana ia tidak dapat diperbaharui dengan kaedah pembayaran semasa anda. Selepas %1$d hari, media dalam sandaran anda akan dipadam. Anda boleh mula membayar untuk sandaran semula pada bila-bila masa untuk terus membuat sandaran semua media anda. @@ -7099,9 +7233,9 @@ Jika anda pilih \"Langkau\", media dalam sandaran anda akan dipadamkan dalam masa %1$d hari. - Your backups subscription failed to renew + Langganan sandaran anda gagal diperbaharui - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Semak untuk pastikan kaedah pembayaran anda adalah terkini. Ketik Urus langganan dan di bawah Kaedah pembayaran, ketik Kemas Kini. Tidak dapat melengkapkan sandaran @@ -7113,7 +7247,7 @@ Urus langganan - Subscribe for %1$s/month + Langgan dengan %1$s/bulan Muat turun media sekarang @@ -7148,6 +7282,17 @@ %1$s daripada %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7201,17 +7346,17 @@ Pengoptimuman storan hanya boleh digunakan dengan Sandaran Signal berbayar. Naik taraf pelan sandaran anda untuk mula menggunakan ciri ini. - Subscribe for %1$s/month + Langgan dengan %1$s/bulan - This media is no longer available + Media ini tidak lagi tersedia - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Pelan sandaran Signal semasa anda termasuk %1$d hari media terkini anda. Untuk mula membuat sandaran semua media anda, naik taraf sekarang. - Subscribe for %1$s/month + Langgan dengan %1$s/bulan Pemadaman kini disegerakkan merentas semua peranti anda @@ -7254,11 +7399,13 @@ Jenis sandaran ditukar dan langganan dibatalkan - Langganan dibatalkan + Subscription canceled Muat turun selesai Sandaran akan dibuat semalaman. + + Subscription inactive Pelan sandaran @@ -7267,8 +7414,12 @@ %1$s/bulan Pelan sandaran anda adalah percuma - + Memperbaharui %1$s + + Expires on %1$s + + Expired on %1$s Sandarkan sejarah mesej anda supaya anda tidak kehilangan data apabila menggunakan telefon baharu atau memasang semula Signal. @@ -7313,6 +7464,10 @@ Buat sandaran secara manual Sila masukkan pin, kata laluan atau corak peranti anda. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-my/strings.xml b/app/src/main/res/values-my/strings.xml index 3a632749bd..cf8b0c1cd4 100644 --- a/app/src/main/res/values-my/strings.xml +++ b/app/src/main/res/values-my/strings.xml @@ -365,6 +365,8 @@ ချက်(တ်)များ မက်ဆေ့ချ်များ + + Chat types စာတို %1$s @@ -796,7 +798,7 @@ - You\'re all set. Start your backup now. + အားလုံး ပြင်ဆင်ပြီးပါပြီ။ ယခု စတင် ဘက်ခ်အပ်လုပ်ပါ။ သင်၏ ဘက်ခ်အပ်အရွယ်အစားပေါ် မူတည်၍ အချိန်ကြာမြင့်နိုင်သည်။ ဘက်ခ်အပ်လုပ်နေစဉ်တွင် သင်သည် ပုံမှန်အတိုင်း သင့်ဖုန်းကို အသုံးပြုနိုင်သည်။ @@ -1908,6 +1910,7 @@ +%1$d ဦး ဖိတ်ထားပြီး + %1$d နောက်ထပ်အဖွဲ့များ @@ -1933,6 +1936,7 @@ ဘာစက်မှမတွေ့ပါ ကွန်ယက်မှားနေသည် QR code မှားနေသည်။ + သင့်ဖုန်းဖြင့် ချိတ်ဆက်ထားသော ဖုန်းများ များနေသည်။ အချို့ချိတ်ဆက်မှုများအား ဖယ်လိုက်ပါ။ ဝမ်းနည်းပါတယ်။ QR ကုဒ်မှားနေသည်။ Signal အသုံးပြုသော ဖုန်းအားချိတ်မည်။ @@ -1954,11 +1958,13 @@ စကားဝှက် တင်သွင်းပါ စကားဝှက် မှားနေသည် Signal ကို ပြန်ဖွင့်ပါ + Signal Android - သော့ခတ် စကင်ရင် မြေပုံ + ပင်ချမယ် လိပ်စာလက်ခံပါ @@ -2440,6 +2446,7 @@ Signal မက်ဆေ့ချ် + နောက်ထပ် @@ -2471,6 +2478,7 @@ စတစ်ကာများ မတပ်ဆင်ထားပါ အဝင်မက်ဆေ့ခ်ျများမှ စတစ်ကာများသည် ၎င်းနေရာတွင် ပေါ်ပါမည် ခေါင်းစဉ်မဲ့ + မသိ @@ -2691,6 +2699,7 @@ မီဒီယာမရှိတော့ပါ မီဒီယာ ဖွင့်၍ မရနိုင်ပါ။ + မက်ဆေ့ချ် ရှာဖွေမှု ချို့ယွင်းချက်။ ဤမီဒီယာကို ဝေမျှနိုင်သော အပ္ပလီကေးရှင်း မတွေ့ရှိပါ။ ပိတ်မယ် @@ -2760,6 +2769,7 @@ မက်ဆေ့ချ်များ ဖုန်းခေါ်ဆိုမှုများ + ပျက်ကွက်မှုများ အရန်သိမ်းဆည်းမှုများ သော့ခတ် အခြေအနေ @@ -2769,6 +2779,7 @@ မသိ အသံမှတ်စုများ အဆက်အသွယ်သည် Signal ပေါ်တက်ရောက်လာပါပြီ + အသိပေးချက်လိုင်း၏ အပြင်အဆင်များကို ဖွင့်ရန် လှုပ်ရှားမှုမရှိပါ။ နောက်ကွယ်၌ ချိတ်ဆက်မှု @@ -3540,10 +3551,12 @@ မက်ဆေ့ချ်မှတ်တမ်းအားလုံးကို စက်အားလုံးမှ အပြီးတိုင် ဖယ်ရှားလိုက်ပါမည်။ ဤလုပ်ဆောင်ချက်ကို ပြန်ရုပ်သိမ်း၍ မရနိုင်ပါ။ အားလုံးကို ယခု ဖျက်ရန် + အမြဲတမ်း 1 နှစ် 6 လ ရက်ပေါင်း ၃၀ + ဘယ်ဟာမျှမဟုတ်သော မက်ဆေ့ချ် %1$s စောင် @@ -3567,6 +3580,7 @@ ပြပါ ဖုန်းသံစဉ်များ စာလုံးအရွယ်အစား + ဦးစားပေး အသိပေးချက်များအား ပြဿနာဖြေရှင်းရန် @@ -3795,6 +3809,7 @@ ငွေပေးရမည့်သူ၏ QR ကုဒ်လိပ်စာ ကို စကင်ဖတ်မယ် + တောင်းခံ ပေးဆောင်ပါ ရရှိနိုင်သော လက်ကျန်ငွေ - %1$s @@ -3925,6 +3940,7 @@ ချက်(တ်) %1$d ခုထိသာ ပင်တွဲ၍ရပါသည် + အဆက်အသွယ်၏ ရုပ်ပုံ မှတ်တမ်းသိမ်းပြီး @@ -3933,6 +3949,10 @@ ချက်(တ်)အသစ် ကင်မရာဖွင့်ပါ ချက်(တ်)မရှိသေးပါ။\nသူငယ်ချင်းတစ်ယောက်ထံ မက်ဆေ့ချ်ပို့ခြင်းဖြင့် စတင်လိုက်ပါ။ + + No chats to display + + Folder settings @@ -4157,6 +4177,7 @@ ချက်(တ်) အရန်သိမ်းဆည်းမှုများ အကောင့်လွှဲမယ် သင့် Android စက်အသစ်ပေါ်သို့ အကောင့်လွှဲပြောင်းမယ် + အရန်သိမ်းဆည်းမှုအတွက် စကားဝှက် ထည့်ပါ ပြန်ရယူမယ် Signal ဗားရှင်းအသစ်များမှ အရန်သိမ်းဆည်းမှုများထည့်၍မရပါ @@ -4364,6 +4385,7 @@ ဝိုင်ဖိုင်အပြင်အဆင်များ ဖွင့်ရန်မရပါ။ ကျေးဇူးပြု၍ ဝိုင်ဖိုင်အား ကိုယ်တိုင်ဖွင့်ပေးပါ။ + တည်နေရာဝန်ဆောင်မှုအသုံးပြုရန် ခွင့်ပေးပါ တည်နေရာဝန်ဆောင်မှုများ ဖွင့်မယ် ဝိုင်ဖိုင်ဖွင့်မယ် @@ -4610,6 +4632,7 @@ ဝေမျှမည် + ပေးပို့မည် ၊ %1$s @@ -4912,6 +4935,116 @@ ကီးဘုတ် Enter ဖြင့် ပို့ပါ + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat types + + + + %1$d chats + + + + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done မက်ဆေ့ချ်များ @@ -4995,6 +5128,7 @@ ဓာတ်ပုံ အရည်အသွေး + မီဒီယာ အရည်အသွေး ပို့ပြီး အရည်အသွေးမြင့်သည့် မီဒီယာဖိုင်ကို ပို့လျှင် ဒေတာ ပိုသုံးပါလိမ့်မည်။ @@ -7079,10 +7213,10 @@ - Your backups subscription expired + သင့်ပုံမှန်လှူဒါန်းမှု သက်တမ်းကုန်သွားပါပြီ - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + သင်၏ လက်ရှိငွေပေးချေမှုနည်းလမ်းဖြင့် သက်တမ်းတိုးမရနိုင်သောကြောင့် သင်၏ ဘက်ခ်အပ်အစီအစဉ် သက်တမ်းကုန်သွားပါပြီ။ %1$d ရက်အကြာတွင် သင် ဘက်ခ်အပ်လုပ်ထားသော မီဒီယာကို ဖျက်လိုက်ပါမည်။ သင်၏မီဒီယာအားလုံးကို ဆက်လက်ဘက်ခ်အပ်လုပ်ရန် ဘက်ခ်အပ်လုပ်ခြင်းများအတွက် အချိန်မရွေး ထပ်မံငွေပေးချေနိုင်ပါသည်။ @@ -7099,9 +7233,9 @@ \"ကျော်မည်\" ကို ရွေးချယ်ပါက သင်ဘက်ခ်အပ်လုပ်ထားသော မီဒီယာကို %1$d ရက်အတွင်း ဖျက်ပစ်ပါမည်။ - Your backups subscription failed to renew + သင်၏ ဘက်ခ်အပ် ပုံမှန်လှူဒါန်းငွေ သက်တမ်းတိုးမှု မအောင်မြင်ပါ - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + သင်၏ ငွေပေးချေမှုနည်းလမ်းသည် အပ်ဒိတ်ဖြစ်ကြောင်း သေချာပါစေ။ ပုံမှန်လှူဒါန်းငွေကို စီမံရန် နှိပ်ပြီး ငွေပေးချေမှုနည်းလမ်းများအောက်တွင် အပ်ဒိတ်လုပ်မည် ကိုနှိပ်ပါ။ ဘက်ခ်အပ်လုပ်ခြင်းကို အပြီးသတ်၍မရပါ။ @@ -7113,7 +7247,7 @@ ပုံမှန်လှူဒါန်းငွေကို စီမံရန် - Subscribe for %1$s/month + ၁ လ %1$s ပုံမှန်လှူဒါန်းပါ မီဒီယာကို ယခုဒေါင်းလုဒ်လုပ်ပါ @@ -7148,6 +7282,17 @@ %1$s ၏ %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7201,17 +7346,17 @@ သိုလှောင်မှု အကောင်းဆုံးချိန်ညှိခြင်းကို Signal Backups ၏ အခပေးအဆင့်ဖြင့်သာ အသုံးပြုနိုင်သည်။ ဤအင်္ဂါရပ်ကို စတင်အသုံးပြုရန် သင်၏ ဘက်ခ်အပ်အစီအစဉ်ကို အဆင့်မြှင့်တင်ပါ။ - Subscribe for %1$s/month + ၁ လ %1$s ပုံမှန်လှူဒါန်းရန် - This media is no longer available + ဤမီဒီယာမရှိတော့ပါ - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + သင်၏ လက်ရှိ Signal ဘက်ခ်အပ်အစီအစဉ်တွင် သင်၏ လတ်တလော မီဒီယာ %1$d ရက် ပါဝင်သည်။ သင့်မီဒီယာအားလုံးကို စတင်ဘက်ခ်အပ်လုပ်ရန် ယခု အဆင့်မြှင့်ပါ။ - Subscribe for %1$s/month + ၁ လ %1$s ပုံမှန်လှူဒါန်းရန် ယခုအခါ သင့်စက်များအားလုံးတွင် ချိန်ကိုက်ပြီး ဖျက်နေပါပြီ @@ -7254,11 +7399,13 @@ ဘက်ခ်အပ်အမျိုးအစားပြောင်းပြီး ပုံမှန်လှူဒါန်းငွေကို ပယ်ဖျက်လိုက်ပါပြီ - ပုံမှန်လှူဒါန်းငွေကို ပယ်ဖျက်လိုက်ပါပြီ + Subscription canceled ဒေါင်းလုဒ် ပြီးပါပြီ ဘက်ခ်အပ်ကို ညတွင်းချင်း ဖန်တီးပါမည်။ + + Subscription inactive ဘက်ခ်အပ်အစီအစဉ် @@ -7267,8 +7414,12 @@ တစ်လလျှင် %1$s သင်၏ ဘက်ခ်အပ်အစီအစဉ်သည် အခမဲ့ဖြစ်သည် - + %1$s တွင် သက်တမ်းတိုးသည် + + Expires on %1$s + + Expired on %1$s ဖုန်းအသစ်ရသောအခါ သို့မဟုတ် Signal ကို ပြန်လည်ထည့်သွင်းသည့်အခါ ဒေတာမဆုံးရှုံးစေရန် မက်ဆေ့ချ်မှတ်တမ်းကို ဘက်ခ်အပ်လုပ်ပါ။ @@ -7313,6 +7464,10 @@ လူကိုယ်တိုင် ဘက်ခ်အပ် သင့်စက်၏ ပင်နံပါတ်၊ စကားဝှက် သို့မဟုတ် ပုံစံကို ထည့်ပါ။ + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 709546bc61..a190b5b9a7 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -368,6 +368,8 @@ Samtaler Meldinger + + Chat types Melding %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Alt er klart. Du kan nå sikkerhetskopiere filene dine. Dette kan ta en stund, avhengig av størrelsen på sikkerhetskopien. Du kan bruke telefonen som normalt mens sikkerhetskopieringen pågår. @@ -1969,6 +1971,7 @@ +%1$d inviterte +%1$d inviterte + %1$d ytterlig gruppe %1$d ytterligere grupper @@ -1995,6 +1998,7 @@ Fant ingen enhet. Nettverksfeil. Ugyldig QR-kode. + Du har koblet sammen sammen for mange enheter allerede. Prøv å fjerne noen Dette er ikke en gyldig QR-kode for enhetstilkobling. Vil du koble til en Signal-enhet? @@ -2017,11 +2021,13 @@ Send inn passord Ugyldig passord! Lås opp Signal + Signal Android - Skjermlås Kart + Slipp nål Godta adresse @@ -2525,6 +2531,7 @@ Signal-melding + Mer @@ -2556,6 +2563,7 @@ Ingen klistremerker installert Klistremerker fra innkommende meldinger vises her Uten navn + Ukjent @@ -2777,6 +2785,7 @@ Media er ikke lenger tilgjengelig. Kan ikke spille av videoen. + Kunne ikke finne meldingen. Kan ikke finne app som er i stand til å dele dette mediet. Lukk @@ -2848,6 +2857,7 @@ Meldinger Samtaler + Feil Sikkerhetskopiering Lås status @@ -2857,6 +2867,7 @@ Ukjent Talenotater Når kontakt installerer Signal + No activity available to open notification channel settings. Bakgrunnstilkobling @@ -3641,10 +3652,12 @@ Alle meldingslogger slettes permanent fra alle enheter. Dette kan ikke angres. Slett alt nå + For alltid 1 år 6 Måneder 30 Dager + Ingen %1$s melding @@ -3669,6 +3682,7 @@ Vis Ringetone Skriftstørrelse i meldinger + Prioritet Kjør feilsøking av varsler @@ -3897,6 +3911,7 @@ Skann QR-koden for adressen til betaleren + Forespør Betal Tilgjengelig saldo: %1$s @@ -4028,6 +4043,7 @@ Du kan bare feste opp til %1$dsamtaler + Kontaktfoto Arkivert @@ -4036,6 +4052,10 @@ Ny samtale Åpne Kamera Ingen samtaler enda.\nKom i gang ved å sende en melding til en venn. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Sikkerhetskopi av samtaler Overfør konto Overfør konto til ny Android-enhet + Skriv inn passordfrase for sikkerhetskopi Gjenopprett Kan ikke importere backuper fra nyere Signal-versjoner @@ -4475,6 +4496,7 @@ Kunne ikke åpne Wi-Fi-innstillinger. Vennligst skru på Wi-Fi manuelt. + Gi posisjonstillatelsen Skru på lokasjonstjenester Skru på Wi-Fi @@ -4728,6 +4750,7 @@ Del + Send , %1$s @@ -5031,6 +5054,119 @@ Tastatur Send med Enter-knappen + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Meldinger @@ -5115,6 +5251,7 @@ Mediekvalitet + Sendt mediekvalitet Å sende høykvalitetsmedier vil bruke mer data. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Abonnementet på sikkerhetskopiering har utløpt - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Abonnementet ditt på sikkerhetskopiering kunne ikke fornyes med den valgte betalingsmåten. Mediefilene som er sikkerhetskopiert i appen, slettes om %1$d dag. + Abonnementet ditt på sikkerhetskopiering kunne ikke fornyes med den valgte betalingsmåten. Mediefilene som er sikkerhetskopiert i appen, slettes om %1$d dager. Du kan reaktivere abonnementet når som helst ved å betale abonnementsprisen. @@ -7257,9 +7394,9 @@ Hvis du velger å hoppe over mediefilene i sikkerhetskopien, slettes de om %1$d dager. - Your backups subscription failed to renew + Abonnementet på sikkerhetskopiering kunne ikke fornyes - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Sjekk om betalingsmåten din er oppdatert. Trykk på «Administrer abonnement» og velg «Oppdater» under «Betalingsmåter». Sikkerhetskopiering kunne ikke fullføres @@ -7271,7 +7408,7 @@ Administrer abonnement - Subscribe for %1$s/month + Bli abonnent for %1$s/måned Last ned mediefilene nå @@ -7306,6 +7443,17 @@ %1$s av %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Optimalisering av lagring kan kun brukes med betalingsabonnement på sikkerhetskopiering fra Signal. Du må oppgradere abonnementet ditt for å kunne bruke denne funksjonen. - Subscribe for %1$s/month + Bli abonnent for %1$s/måned - This media is no longer available + Mediefilen er ikke lenger tilgjengelig - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Abonnementet ditt inkluderer sikkerhetskopiering av mediefilene fra den siste (%1$d) dagen. Du må oppgradere abonnementet for å sikkerhetskopiere alle mediefilene dine. + Abonnementet ditt inkluderer sikkerhetskopiering av mediefilene fra de siste %1$d dagene. Du må oppgradere abonnementet for å sikkerhetskopiere alle mediefilene dine. - Subscribe for %1$s/month + Bli abonnent for %1$s/måned Sletting er nå synkronisert på alle enhetene dine @@ -7413,11 +7561,13 @@ Sikkerhetskopieringstypen ble endret og abonnementet ble sagt opp - Abonnementet er sagt opp + Subscription canceled Nedlasting fullført Sikkerhetskopiene opprettes på nattestid. + + Subscription inactive Abonnement for sikkerhetskopiering @@ -7426,8 +7576,12 @@ %1$s per måned Abonnementet er gratis - + Fornyes %1$s + + Expires on %1$s + + Expired on %1$s Ta en sikkerhetskopi av meldingsloggen din, slik at du ikke mister dataene dine når du bytter telefon eller installerer Signal på nytt. @@ -7472,6 +7626,10 @@ Manuell sikkerhetskopiering Angi PIN-koden, passordet eller mønsteret for å låse opp enheten. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index db7d975bf9..b6a3110163 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -368,6 +368,8 @@ Chats Berichten + + Chat types Bericht sturen naar %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Je bent er klaar voor. Start nu je back-up. Afhankelijk van de grootte van je back-up kan dit even duren. Tijdens het maken van de back-up kun je je telefoon gebruiken zoals je normaal doet. @@ -1969,6 +1971,7 @@ + %1$d uitgenodigd + %1$d uitgenodigd + %1$d andere groep %1$d andere groepen @@ -1995,6 +1998,7 @@ Geen apparaat gevonden. Netwerkfout. Ongeldige QR-code. + Sorry, je hebt het maximale aantal apparaten dat je aan je account kunt koppelen al bereikt. Verwijder een apparaat en probeer het opnieuw. Sorry, dit is geen geldige QR-code om een apparaat te koppelen. Een Signal-apparaat koppelen? @@ -2017,11 +2021,13 @@ Wachtwoord instellen Ongeldig wachtwoord! Signal ontgrendelen + Signal-Android - Vergrendelscherm Kaart + Aanwijzer Adres bevestigen @@ -2525,6 +2531,7 @@ Signal-chat openen + Meer opties @@ -2556,6 +2563,7 @@ Geen stickerpakketten geïnstalleerd Stickerpakketten uit binnengekomen berichten zullen hier verschijnen Zonder titel + Onbekend @@ -2777,6 +2785,7 @@ Media niet langer beschikbaar. Kan media niet afspelen. + Fout bij vinden van bericht. Geen app gevonden waarmee dit bestand met anderen gedeeld kan worden. Sluiten @@ -2848,6 +2857,7 @@ Berichten Oproepen + Mislukkingen Back-ups Vergrendelingstoestand @@ -2857,6 +2867,7 @@ Onbekend Spraakberichten Nieuw persoon bereikbaar via Signal + Geen ‘activiteit’ beschikbaar om instellingen voor meldingskanalen mee te openen. Achtergrondverbinding @@ -3641,10 +3652,12 @@ Alle chatgeschiedenis wordt permanent verwijderd van alle apparaten. Dit kan niet ongedaan worden gemaakt. Nu alles verwijderen + Voor altijd 1 jaar 6 maanden 30 dagen + Geen limiet %1$s bericht @@ -3669,6 +3682,7 @@ Laat zien Beltoon Tekstgrootte voor berichten + Dringendheid instellen Notificatieproblemen oplossen @@ -3897,6 +3911,7 @@ Scan de QR-code van de begunstigde naar wie je wilt overschrijven. + Verzoek Betalen Beschikbaar krediet: %1$s @@ -4028,6 +4043,7 @@ Je kunt niet meer dan %1$d chats vastzetten + Afbeelding van contact Gearchiveerd @@ -4036,6 +4052,10 @@ Nieuwe chat Camera openen Nog geen chats.\nBegin door een vriend of vriendin een bericht te sturen. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Back-up van chats Account overzetten Alle gegevens overzetten naar een nieuw Android-apparaat + Voer het back-upwachtwoord in Herstellen Kan geen back-ups van nieuwere versies importeren @@ -4475,6 +4496,7 @@ Kan de wifi-instellingen niet openen. Zet handmatig je wifi aan. + Machtigen om locatie te lezen Locatiegegevens inschakelen Schakel je wifi in @@ -4728,6 +4750,7 @@ Delen + Verzend , %1$s @@ -5031,6 +5054,119 @@ Toetsenbord Verzenden met enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Berichten @@ -5115,6 +5251,7 @@ Mediakwaliteit + Media-verzendkwaliteit Als je media in hoge kwaliteit verzendt, verbruik je meer data. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Je back-upabonnement is verlopen - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Je back-upabonnement is verlopen, omdat het niet kon worden verlengd via je huidige betaalmethode. Na %1$d dag worden de media in je back-up verwijderd. + Je back-upabonnement is verlopen, omdat het niet kon worden verlengd via je huidige betaalmethode. Na %1$d dagen worden de media in je back-up verwijderd. Je kunt op elk gewenst moment opnieuw betalen zodat back-ups van al je media worden gemaakt. @@ -7257,9 +7394,9 @@ Als je ‘Overslaan’ kiest, worden de media in je back-up over %1$d dagen verwijderd. - Your backups subscription failed to renew + Je back-upabonnement kon niet worden verlengd - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Controleer of je betalingsinformatie nog steeds klopt. Tik op Abonnement beheren en tik onder Betaalmethoden op Bijwerken. Back-up kon niet worden voltooid @@ -7269,9 +7406,9 @@ Overslaan - Maandelijkse donatie beheren + Abonnement beheren - Subscribe for %1$s/month + Abonneer voor %1$s/maand Nu media downloaden @@ -7306,6 +7443,17 @@ %1$s van %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Opslagoptimalisatie kan alleen worden gebruikt met een betaald abonnement op Signal Back-ups. Upgrade je back-upabonnement om deze functie te gebruiken. - Subscribe for %1$s/month + Abonneer voor %1$s/maand - This media is no longer available + Deze media zijn niet meer beschikbaar - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Je huidige Signal back-upabonnement bevat de media van de afgelopen dag. Als je een back-up wilt maken van al je media, voer dan nu een upgrade uit. + Je huidige Signal back-upabonnement bevat de media van de afgelopen %1$d dagen. Als je een back-up wilt maken van al je media, voer dan nu een upgrade uit. - Subscribe for %1$s/month + Abonneer voor %1$s/maand Verwijderen wordt vanaf nu gesynchroniseerd op al je apparaten @@ -7413,11 +7561,13 @@ Back-uptype gewijzigd en abonnement geannuleerd - Abonnement geannuleerd + Subscription canceled Download voltooid De back-up wordt vannacht gemaakt. + + Subscription inactive Back-upabonnement @@ -7426,8 +7576,12 @@ %1$s/maand Je back-upabonnement is gratis - + Wordt %1$s vernieuwd + + Expires on %1$s + + Expired on %1$s Maak een back-up van je chatgeschiedenis zodat je nooit meer gegevens kwijtraakt als je een andere telefoon in gebruik neemt of Signal opnieuw installeert. @@ -7472,6 +7626,10 @@ Handmatig back-ups maken Voer de pincode, het wachtwoord of het patroon van je apparaat in. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 90a8b6f7ed..663e8f6d88 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -368,6 +368,8 @@ ਚੈਟ ਸੁਨੇਹੇ + + Chat types ਸੁਨੇਹਾ %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + ਤੁਸੀਂ ਪੂਰੀ ਤਰ੍ਹਾਂ ਤਿਆਰ ਹੋ। ਹੁਣੇ ਆਪਣਾ ਬੈਕਅੱਪ ਸ਼ੁਰੂ ਕਰੋ। ਤੁਹਾਡੇ ਬੈਕਅੱਪ ਦੇ ਆਕਾਰ \'ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਹੋਏ, ਇਸ ਵਿੱਚ ਕਾਫੀ ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ। ਬੈਕਅੱਪ ਦੀ ਪ੍ਰਕਿਰਿਆ ਚੱਲਣ ਦੌਰਾਨ ਤੁਸੀਂ ਆਮ ਵਾਂਗ ਆਪਣੇ ਫ਼ੋਨ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ। @@ -1969,6 +1971,7 @@ +%1$d ਨੂੰ ਸੱਦਿਆ ਗਿਆ +%1$d ਨੂੰ ਸੱਦਿਆ ਗਿਆ + %1$d ਵਾਧੂ ਗਰੁੱਪ %1$d ਵਾਧੂ ਗਰੁੱਪ @@ -1995,6 +1998,7 @@ ਕੋਈ ਡਿਵਾਈਸ ਨਹੀਂ ਮਿਲੀ। ਨੈੱਟਵਰਕ ਤਰੁੱਟੀ! ਅਵੈਧ ​​QR ਕੋਡ। + ਅਫ਼ਸੋਸ, ਤੁਹਾਡੇ ਕੋਲ ਬਹੁਤ ਸਾਰੀਆਂ ਡਿਵਾਈਸਾਂ ਪਹਿਲਾਂ ਹੀ ਜੁੜੀਆਂ ਹੋਈਆਂ ਹਨ, ਕੁਝ ਨੂੰ ਹਟਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਅਫ਼ਸੋਸ, ਇਹ ਇੱਕ ਪ੍ਰਮਾਣਿਕ ​​ਡਿਵਾਈਸ ਲਿੰਕ QR ਕੋਡ ਨਹੀਂ ਹੈ। Signal ਡਿਵਾਈਸ ਨੂੰ ਲਿੰਕ ਕਰਨਾ ਹੈ? @@ -2017,11 +2021,13 @@ ਪਾਸਫ਼੍ਰੇਜ਼ ਦਰਜ ਕਰੋ ਅਵੈਧ ਪਾਸਫ਼੍ਰੇਜ਼! Signal ਨੂੰ ਅਨਲੌਕ ਕਰੋ + Signal Android - ਲਾਕ ਸਕਰੀਨ ਨਕਸ਼ਾ + ਪਿੰਨ ਲਾਹੋ ਪਤਾ ਮਨਜ਼ੂਰ ਕਰੋ @@ -2525,6 +2531,7 @@ Signal ਸੁਨੇਹਾ + ਹੋਰ @@ -2556,6 +2563,7 @@ ਕੋਈ ਸਟਿੱਕਰ ਸਥਾਪਤ ਨਹੀਂ ਕੀਤੇ ਗਏ ਆ ਰਹੇ ਸੁਨੇਹਿਆਂ ਤੋਂ ਸਟਿੱਕਰ ਇੱਥੇ ਦਿਖਾਈ ਦੇਣਗੇ ਬਿਨਾਂ ਸਿਰਲੇਖ + ਅਣਜਾਣ @@ -2777,6 +2785,7 @@ ਮੀਡੀਆ ਹੁਣ ਉਪਲਬਧ ਨਹੀਂ ਹੈ। ਮੀਡੀਆ ਚਲਾਉਣ ਵਿੱਚ ਅਸਮਰੱਥ ਰਹੇ। + ਸੁਨੇਹਾ ਲੱਭਣ ਵੇਲੇ ਕੋਈ ਵੇਲੇ ਕੋਈ ਗੜਬੜੀ ਪੇਸ਼ ਆਈ। ਇਸ ਮੀਡੀਆ ਨੂੰ ਸਾਂਝਾ ਕਰਨ ਦੇ ਯੋਗ ਕੋਈ ਐਪ ਨਹੀਂ ਹੈ। ਬੰਦ ਕਰੋ @@ -2848,6 +2857,7 @@ ਸੁਨੇਹੇ ਕਾਲਾਂ + ਅਸਫ਼ਲਤਾਵਾਂ ਬੈਕਅੱਪ ਸਥਿਤੀ ਨੂੰ ਲਾਕ ਕਰੋ @@ -2857,6 +2867,7 @@ ਅਣਜਾਣ ਅਵਾਜ਼ ਵਾਲੇ ਸੁਨੇਹੇ ਸੰਪਰਕ Signal ਦਾ ਹਿੱਸਾ ਬਣਿਆ + ਸੂਚਨਾ ਚੈਨਲ ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹਣ ਲਈ ਕੋਈ ਗਤੀਵਿਧੀ ਉਪਲਬਧ ਨਹੀਂ ਹੈ। ਬੈਕਗਰਾਊਂਡ ਕਨੈਕਸ਼ਨ @@ -3641,10 +3652,12 @@ ਸਾਰੇ ਪੁਰਾਣੇ ਸੁਨੇਹਿਆਂ ਨੂੰ ਸਾਰੇ ਡਿਵਾਈਸਾਂ ਵਿੱਚੋਂ ਸਥਾਈ ਤੌਰ \'ਤੇ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਇਸ ਕਾਰਵਾਈ ਨੂੰ ਤੁਸੀਂ ਅਣਕੀਤਾ ਨਹੀਂ ਕਰ ਸਕਦੇ। ਹੁਣੇ ਸਭ ਮਿਟਾਓ + ਹਮੇਸ਼ਾਂ 1 ਸਾਲ 6 ਮਹੀਨੇ 30 ਦਿਨ + ਕੋਈ ਨਹੀਂ %1$s ਸੁਨੇਹਾ @@ -3669,6 +3682,7 @@ ਦਿਖਾਉ ਰਿੰਗਟੋਨ ਸੁਨੇਹਾ ਫ਼ੌਂਟ ਦਾ ਆਕਾਰ + ਤਰਜੀਹ ਸੂਚਨਾਵਾਂ ਬਾਰੇ ਸਮੱਸਿਆ ਦਾ ਨਿਪਟਾਰਾ ਕਰੋ @@ -3897,6 +3911,7 @@ ਆਪਣੇ ਪ੍ਰਾਪਤਕਰਤਾ ਦਾ ਸਿਰਨਾਵਾਂ QR ਕੋਡ ਸਕੈਨ ਕਰੋ + ਬੇਨਤੀ ਭੁਗਤਾਨ ਕਰੋ ਮੌਜੂਦਾ ਬੈਲਨਸ: %1$s @@ -4028,6 +4043,7 @@ ਤੁਸੀਂ ਸਿਰਫ਼ %1$d ਚੈਟਾਂ ਹੀ ਟੰਗ ਸਕਦੇ ਹੋ + ਸੰਪਰਕ ਫੋਟੋ ਚਿੱਤਰ ਆਰਕਾਈਵ @@ -4036,6 +4052,10 @@ ਨਵੀਂ ਚੈਟ ਕੈਮਰਾ ਖੋਲ੍ਹੋ ਹਾਲੇ ਕੋਈ ਚੈਟ ਨਹੀਂ ਹੈ।\nਦੋਸਤ ਨੂੰ ਸੁਨੇਹਾ ਕਰਕੇ ਸ਼ੁਰੂਆਤ ਕਰੋ। + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ ਚੈਟ ਬੈਕਅਪ ਖਾਤਾ ਟ੍ਰਾਂਸਫਰ ਕਰੋ ਖਾਤੇ ਨੂੰ ਨਵੇਂ Android ਡਿਵਾਈਸ ਉੱਤੇ ਟ੍ਰਾਂਸਫਰ ਕਰੋ + ਬੈਕਅਪ ਪਾਸਫ਼੍ਰੇਜ਼ ਦਰਜ ਕਰੋ ਰੀਸਟੋਰ ਕਰੋ Signal ਦੇ ਨਵੇਂ ਵਰਜ਼ਨ ਤੋਂ ਬੈਕਅੱਪ ਇੰਮਪੋਰਟ ਨਹੀਂ ਕਰ ਸਕਦੇ @@ -4475,6 +4496,7 @@ Wi-Fi ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੀਆਂ ਨਹੀਂ ਜਾ ਸਕਦੀਆਂ। ਕਿਰਪਾ ਕਰਕੇ Wi-Fi ਨੂੰ ਆਪ ਚਾਲੂ ਕਰੋ। + ਟਿਕਾਣੇ ਲਈ ਇਜਾਜ਼ਤ ਦਿਓ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਚਾਲੂ ਕਰੋ ਵਾਈ-ਫਾਈ ਚਾਲੂ ਕਰੋ @@ -4728,6 +4750,7 @@ ਸਾਂਝਾ ਕਰੋ + ਭੇਜੋ , %1$s @@ -5031,6 +5054,119 @@ ਕੀਬੋਰਡ ਐਂਟਰ ਦਬਾ ਕੇ ਭੇਜੋ + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done ਸੁਨੇਹੇ @@ -5115,6 +5251,7 @@ ਮੀਡੀਆ ਕੁਆਲਟੀ + ਭੇਜੀ ਮੀਡੀਆ ਕੁਆਲਟੀ ਵਧੀਆ ਕੁਆਲਟੀ ਮੀਡੀਆ ਭੇਜਣ ਲਈ ਵੱਧ ਡਾਟਾ ਵਰਤਿਆ ਜਾਵੇਗਾ। @@ -7235,11 +7372,11 @@ - Your backups subscription expired + ਤੁਹਾਡੀ ਬੈਕਅੱਪ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਦੀ ਮਿਆਦ ਪੁੱਗ ਗਈ ਹੈ - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + ਤੁਹਾਡੇ ਬੈਕਅੱਪ ਪਲਾਨ ਦੀ ਮਿਆਦ ਪੁੱਗ ਗਈ ਹੈ ਕਿਉਂਕਿ ਇਸਨੂੰ ਤੁਹਾਡੀ ਮੌਜੂਦਾ ਭੁਗਤਾਨ ਵਿਧੀ ਨਾਲ ਰੀਨਿਊ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। %1$d ਦਿਨ ਬਾਅਦ, ਤੁਹਾਡੇ ਬੈਕਅੱਪ ਵਿੱਚੋਂ ਮੀਡੀਆ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। + ਤੁਹਾਡੇ ਬੈਕਅੱਪ ਪਲਾਨ ਦੀ ਮਿਆਦ ਪੁੱਗ ਗਈ ਹੈ ਕਿਉਂਕਿ ਇਸਨੂੰ ਤੁਹਾਡੀ ਮੌਜੂਦਾ ਭੁਗਤਾਨ ਵਿਧੀ ਨਾਲ ਰੀਨਿਊ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। %1$d ਦਿਨਾਂ ਤੋਂ ਬਾਅਦ, ਤੁਹਾਡੇ ਬੈਕਅੱਪ ਵਿੱਚੋਂ ਮੀਡੀਆ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਕਿਸੇ ਵੀ ਸਮੇਂ ਦੁਬਾਰਾ ਬੈਕਅੱਪ ਲਈ ਭੁਗਤਾਨ ਕਰਕੇ ਆਪਣੇ ਸਾਰੇ ਮੀਡੀਆ ਦਾ ਬੈਕਅੱਪ ਲੈਣਾ ਜਾਰੀ ਰੱਖ ਸਕਦੇ ਹੋ। @@ -7257,9 +7394,9 @@ ਜੇਕਰ ਤੁਸੀਂ \"ਛੱਡੋ\" ਬਟਨ ਚੁਣਦੇ ਹੋ ਤਾਂ ਤੁਹਾਡੇ ਬੈਕਅੱਪ ਵਿੱਚ ਮੌਜੂਦ ਮੀਡੀਆ %1$d ਦਿਨਾਂ ਬਾਅਦ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। - Your backups subscription failed to renew + ਤੁਹਾਡੀ ਬੈਕਅੱਪ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਨੂੰ ਰੀਨਿਊ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + ਜਾਂਚ ਕਰਕੇ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡੀ ਭੁਗਤਾਨ ਵਿਧੀ ਅੱਪ-ਟੂ-ਡੇਟ ਹੈ। ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਨੂੰ ਪ੍ਰਬੰਧਿਤ ਕਰੋ \'ਤੇ ਟੈਪ ਕਰੋ ਅਤੇ ਭੁਗਤਾਨ ਵਿਧੀਆਂ ਦੇ ਹੇਠਾਂ ਅੱਪਡੇਟ ਕਰੋ \'ਤੇ ਟੈਪ ਕਰੋ। ਬੈਕਅੱਪ ਪੂਰਾ ਨਹੀਂ ਕਰ ਸਕੇ @@ -7269,9 +7406,9 @@ ਛੱਡੋ - ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਪ੍ਰਬੰਧਿਤ ਕਰੋ + ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਨੂੰ ਪ੍ਰਬੰਧਿਤ ਕਰੋ - Subscribe for %1$s/month + %1$s/ਮਹੀਨੇ ਵਿੱਚ ਸਬਸਕ੍ਰਾਈਬ ਕਰੋ ਮੀਡੀਆ ਹੁਣੇ ਡਾਊਨਲੋਡ ਕਰੋ @@ -7306,6 +7443,17 @@ %2$s ਵਿੱਚੋਂ %1$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ ਸਟੋਰੇਜ ਅਨੁਕੂਲਤਾ ਦੀ ਵਰਤੋਂ ਸਿਰਫ਼ Signal ਬੈਕਅੱਪ ਦੇ ਭੁਗਤਾਨਸ਼ੁਦਾ ਟੀਅਰ ਨਾਲ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਇਸ ਫੀਚਰ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਆਪਣਾ ਬੈਕਅੱਪ ਪਲਾਨ ਅੱਪਗ੍ਰੇਡ ਕਰੋ। - Subscribe for %1$s/month + %1$s/ਮਹੀਨੇ ਵਿੱਚ ਸਬਸਕ੍ਰਾਈਬ ਕਰੋ - This media is no longer available + ਇਹ ਮੀਡੀਆ ਹੁਣ ਉਪਲਬਧ ਨਹੀਂ ਹੈ - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + ਤੁਹਾਡੇ ਮੌਜੂਦਾ Signal ਬੈਕਅੱਪ ਪਲਾਨ ਵਿੱਚ ਤੁਹਾਡੇ ਸਭ ਤੋਂ ਹਾਲੀਆ %1$d ਦਿਨ ਦਾ ਮੀਡੀਆ ਸ਼ਾਮਲ ਹੈ। ਆਪਣੇ ਸਾਰੇ ਮੀਡੀਆ ਦਾ ਬੈਕਅੱਪ ਲੈਣਾ ਸ਼ੁਰੂ ਕਰਨ ਲਈ, ਹੁਣੇ ਅੱਪਗ੍ਰੇਡ ਕਰੋ। + ਤੁਹਾਡੇ ਮੌਜੂਦਾ Signal ਬੈਕਅੱਪ ਪਲਾਨ ਵਿੱਚ ਤੁਹਾਡੇ ਸਭ ਤੋਂ ਹਾਲੀਆ %1$d ਦਿਨਾਂ ਦਾ ਮੀਡੀਆ ਸ਼ਾਮਲ ਹੈ। ਆਪਣੇ ਸਾਰੇ ਮੀਡੀਆ ਦਾ ਬੈਕਅੱਪ ਲੈਣਾ ਸ਼ੁਰੂ ਕਰਨ ਲਈ, ਹੁਣੇ ਅੱਪਗ੍ਰੇਡ ਕਰੋ। - Subscribe for %1$s/month + %1$s/ਮਹੀਨੇ ਵਿੱਚ ਸਬਸਕ੍ਰਾਈਬ ਕਰੋ ਮਿਟਾਉਣਾ ਦੀ ਪ੍ਰਕਿਰਿਆ ਹੁਣ ਤੁਹਾਡੇ ਸਾਰੇ ਡਿਵਾਈਸਾਂ \'ਤੇ ਸਿੰਕ ਹੋ ਜਾਵੇਗੀ @@ -7413,11 +7561,13 @@ ਬੈਕਅੱਪ ਦੀ ਕਿਸਮ ਬਦਲੀ ਗਈ ਅਤੇ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਰੱਦ ਕੀਤੀ ਗਈ - ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਰੱਦ ਕੀਤੀ ਗਈ + Subscription canceled ਡਾਊਨਲੋਡ ਪੂਰਾ ਹੋਇਆ ਬੈਕਅੱਪ ਰਾਤੋ-ਰਾਤ ਬਣਾਇਆ ਜਾਵੇਗਾ। + + Subscription inactive ਬੈਕਅੱਪ ਪਲਾਨ @@ -7426,8 +7576,12 @@ %1$s/ਮਹੀਨਾ ਤੁਹਾਡਾ ਬੈਕਅੱਪ ਪਲਾਨ ਮੁਫ਼ਤ ਹੈ - + ਰੀਨਿਊ ਹੋਣ ਦੀ ਮਿਤੀ: %1$s + + Expires on %1$s + + Expired on %1$s ਆਪਣੇ ਪੁਰਾਣੇ ਸੁਨੇਹਿਆਂ ਦਾ ਬੈਕਅੱਪ ਲਓ ਤਾਂ ਜੋ ਨਵਾਂ ਫ਼ੋਨ ਲੈਣ \'ਤੇ ਜਾਂ Signal ਨੂੰ ਦੁਬਾਰਾ ਇੰਸਟਾਲ ਕਰਨ \'ਤੇ ਵੀ ਤੁਹਾਡਾ ਡਾਟਾ ਸੁਰੱਖਿਅਤ ਰਹੇ। @@ -7472,6 +7626,10 @@ ਖੁਦ ਬੈਕਅੱਪ ਲਓ ਕਿਰਪਾ ਕਰਕੇ ਆਪਣਾ ਡਿਵਾਈਸ PIN, ਪਾਸਵਰਡ ਜਾਂ ਪੈਟਰਨ ਦਾਖਲ ਕਰੋ। + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index c375eda8c0..02844a7992 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -374,6 +374,8 @@ Czaty Wiadomości + + Chat types Wiadomość %1$s @@ -856,7 +858,7 @@ - You\'re all set. Start your backup now. + Wszystko gotowe. Możesz rozpocząć tworzenie kopii zapasowej. W przypadku dużej ilości danych proces tworzenia kopii zapasowej może zająć sporo czasu. Podczas tworzenia kopii zapasowej możesz normalnie korzystać z telefonu. @@ -2091,6 +2093,7 @@ +%1$d zaproszonych +%1$d zaproszonych + %1$d dodatkowa grupa %1$d dodatkowe grupy @@ -2119,6 +2122,7 @@ Nie znaleziono żadnych urządzeń. Błąd sieci. Niepoprawny kod QR. + Masz zbyt dużo powiązanych urządzeń, spróbuj usunąć któreś z nich zanim spróbujesz ponownie Przepraszamy, ale to nie jest prawidłowy link QR. Dodać nowe urządzenie Signal? @@ -2143,11 +2147,13 @@ Wprowadź hasło Nieprawidłowe hasło! Odblokuj Signal + Signal Android - Blokada ekranu Mapa + Umieść znacznik Zaakceptuj adres @@ -2695,6 +2701,7 @@ Wiadomość Signal + Więcej @@ -2726,6 +2733,7 @@ Brak zainstalowanych naklejek Tutaj pojawią się naklejki z wiadomości przychodzących Bez tytułu + Nieznany @@ -2949,6 +2957,7 @@ Multimedia nie są już dostępne. Nie można odtworzyć multimediów. + Błąd przy szukaniu wiadomości Nie można znaleźć aplikacji, aby udostępnić te multimedia. Zamknij @@ -3024,6 +3033,7 @@ Wiadomości Połączenia + Awarie Kopie zapasowe Status blokady @@ -3033,6 +3043,7 @@ Nieznany Wiadomości głosowe Kontakt dołączył do Signal + Brak dostępnej aktywności, aby otworzyć ustawienia kanału powiadomień. Połączenie w tle @@ -3843,10 +3854,12 @@ Cała historia wiadomości zostanie trwale usunięta ze wszystkich urządzeń. Tego działania nie można cofnąć. Usuń wszystko teraz + Zawsze 1 rok 6 miesięcy 30 dni + Brak %1$s wiadomość @@ -3873,6 +3886,7 @@ Pokaż Dzwonek Rozmiar czcionki dla wiadomości + Priorytet Rozwiązywanie problemów z powiadomieniami @@ -4101,6 +4115,7 @@ Zeskanuj kod QR odbiorcy płatności + Prośba Zapłać Dostępne środki: %1$s @@ -4234,6 +4249,7 @@ Możesz przypiąć maksymalnie %1$d czaty(ów) + Zdjęcie kontaktu Archiwum @@ -4242,6 +4258,10 @@ Nowy czat Otwórz aparat Nie masz jeszcze żadnych czatów.\nZacznij od wysłania wiadomości do znajomego. + + No chats to display + + Folder settings @@ -4490,6 +4510,7 @@ Kopia zapasowa czatów Przenieś konto Przenieś konto na nowe urządzenie z systemem Android + Wprowadź hasło kopii zapasowej Przywróć Import kopii zapasowej z nowszej wersji nie udał się @@ -4697,6 +4718,7 @@ Nie można otworzyć ustawień Wi-Fi. Włącz Wi-Fi ręcznie. + Udziel dostępu do lokalizacji Włącz usługi lokalizacji Włącz Wi-Fi @@ -4964,6 +4986,7 @@ Udostępnij + Wyślij , %1$s @@ -5269,6 +5292,125 @@ Klawiatura Wysyłaj za pomocą Enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + %1$d chat types + %1$d chat types + + + + %1$d chat + %1$d chats + %1$d chats + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + %1$d chats excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Wiadomości @@ -5355,6 +5497,7 @@ Jakość multimediów + Jakość wysyłanych multimediów Wysyłanie multimediów wysokiej jakości zużywa więcej danych. @@ -7547,13 +7690,13 @@ - Your backups subscription expired + Twoja usługa tworzenia kopii zapasowych wygasła - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Usługa tworzenia kopii zapasowych wygasła, ponieważ nie mogliśmy jej odnowić za pomocą Twojej bieżącej metody płatności. Po upływie %1$d dnia multimedia z kopii zapasowej zostaną usunięte. + Usługa tworzenia kopii zapasowych wygasła, ponieważ nie mogliśmy jej odnowić za pomocą Twojej bieżącej metody płatności. Po upływie %1$d dni multimedia z kopii zapasowej zostaną usunięte. + Usługa tworzenia kopii zapasowych wygasła, ponieważ nie mogliśmy jej odnowić za pomocą Twojej bieżącej metody płatności. Po upływie %1$d dni multimedia z kopii zapasowej zostaną usunięte. + Usługa tworzenia kopii zapasowych wygasła, ponieważ nie mogliśmy jej odnowić za pomocą Twojej bieżącej metody płatności. Po upływie %1$d dnia multimedia z kopii zapasowej zostaną usunięte. W dowolnym momencie możesz wznowić uiszczanie opłaty za dalsze tworzenie kopii zapasowych wszystkich multimediów. @@ -7573,9 +7716,9 @@ Jeśli wybierzesz opcję „Pomiń”, multimedia z kopii zapasowej zostaną usunięte w ciągu %1$d dnia. - Your backups subscription failed to renew + Nie udało się odnowić usługi kopii zapasowych - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Upewnij się, że dane dotyczące Twojej wybranej metody płatności są aktualne. Kliknij Zarządzaj subskrypcją, a w sekcji Metody płatności kliknij Aktualizuj. Nie udało się ukończyć tworzenia kopii zapasowej @@ -7587,7 +7730,7 @@ Zarządzaj subskrypcją - Subscribe for %1$s/month + Subskrybuj usługę za %1$s/mies. Pobierz multimedia teraz @@ -7622,6 +7765,17 @@ %1$s z %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7675,20 +7829,20 @@ Optymalizacja pamięci masowej dostępna jest tylko po wykupieniu płatnego trybu tworzenia kopii zapasowych Signal. Aby móc korzystać z tej funkcji, wykup płatny tryb tworzenia kopii zapasowej. - Subscribe for %1$s/month + Subskrybuj usługę za %1$s/mies. - This media is no longer available + Te multimedia nie są już dostępne. - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + W ramach Twojej bieżącej usługi masz utworzoną kopię zapasową Signal multimediów z ostatniego %1$d dnia. Aby rozpocząć tworzenie kopii zapasowych wszystkich multimediów, wykup usługę. + W ramach Twojej bieżącej usługi masz utworzoną kopię zapasową Signal multimediów z ostatnich %1$d dni. Aby rozpocząć tworzenie kopii zapasowych wszystkich multimediów, wykup usługę. + W ramach Twojej bieżącej usługi masz utworzoną kopię zapasową Signal multimediów z ostatnich %1$d dni. Aby rozpocząć tworzenie kopii zapasowych wszystkich multimediów, wykup usługę. + W ramach Twojej bieżącej usługi masz utworzoną kopię zapasową Signal multimediów z ostatnich %1$d dni. Aby rozpocząć tworzenie kopii zapasowych wszystkich multimediów, wykup usługę. - Subscribe for %1$s/month + Subskrybuj usługę za %1$s/mies. Usuwanie jest teraz synchronizowane na wszystkich Twoich urządzeniach @@ -7731,11 +7885,13 @@ Zmieniono typ kopii zapasowej i anulowano subskrypcję - Subskrypcja anulowana + Subscription canceled Pobieranie ukończone Kopia zapasowa będzie tworzona codziennie w nocy. + + Subscription inactive Tryb tworzenia kopii zapasowej @@ -7744,8 +7900,12 @@ %1$s/miesiąc Korzystasz z bezpłatnego trybu tworzenia kopii zapasowej - + Przedłużane %1$s + + Expires on %1$s + + Expired on %1$s Twórz kopie zapasowe swoich wiadomości, a nie stracisz ich nawet po zmianie telefonu czy ponownej instalacji Signal. @@ -7790,6 +7950,10 @@ Ręczne tworzenie kopii zapasowej Wprowadź kod PIN urządzenia, hasło lub wzór. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index b8e4c23aee..3828c0e62c 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -368,6 +368,8 @@ Chats Mensagens + + Chat types Mensagem %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Está tudo pronto. Inicie seu backup agora. Dependendo do tamanho do seu backup, o processo pode demorar bastante. Você pode usar seu telefone normalmente enquanto o backup é feito. @@ -1969,6 +1971,7 @@ +%1$d pessoa convidada +%1$d pessoas convidadas + %1$d grupo adicional %1$d grupos adicionais @@ -1995,6 +1998,7 @@ Nenhum dispositivo encontrado. Erro de rede. Código QR inválido. + Desculpe, você já possui muitos dispositivos vinculados. Tente remover alguns. Desculpe, este não é um código QR de dispositivo válido. Vincular um dispositivo Signal? @@ -2017,11 +2021,13 @@ Enviar frase-chave Frase-chave inválida! Destrancar Signal + Signal Android - Tela de bloqueio Mapa + Soltar pin Aceitar endereço @@ -2525,6 +2531,7 @@ Mensagem no Signal + Mais @@ -2556,6 +2563,7 @@ Nenhum pacote de figurinhas instalado Pacotes de figurinhas de mensagens recebidas aparecerão aqui Sem título + Desconhecida @@ -2777,6 +2785,7 @@ A mídia não está mais disponível. Não foi possível reproduzir a mídia. + Erro ao encontrar mensagem. Não foi possível encontrar um aplicativo capaz de compartilhar esta mídia. Fechar @@ -2848,6 +2857,7 @@ Mensagens Ligações + Falhas Backups Status de bloqueio @@ -2857,6 +2867,7 @@ Desconhecida Mensagens de voz O contato entrou no Signal + Nenhuma atividade está disponível para ser ajustada nas configurações das categorias de notificações. Conexão de dados em segundo plano @@ -3641,10 +3652,12 @@ Todo o histórico de mensagens será removido permanentemente de todos os dispositivos. Essa ação não pode ser desfeita. Apagar tudo agora + Para sempre 1 ano 6 meses 30 dias + Nenhum %1$s mensagem @@ -3669,6 +3682,7 @@ Exibir Toque Tamanho da fonte da mensagem + Prioridade Notificações de resolução de problemas @@ -3897,6 +3911,7 @@ Escaneie o código QR do endereço do destinatário + Pedido Pagar Saldo disponível: %1$s @@ -4028,6 +4043,7 @@ Você só pode fixar até %1$d chats + Imagem do contato Arquivado @@ -4036,6 +4052,10 @@ Novo chat Abrir câmera Nenhuma conversa ainda. \nPara começar, envie uma mensagem para alguém. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Backups de chat Transferir conta Transferir conta para um novo dispositivo Android + Digite a frase-chave de backup Restaurar Não é possível importar backups de versões recentes @@ -4475,6 +4496,7 @@ Não foi possível abrir as configurações do Wi-Fi. Ative o Wi-Fi manualmente. + Ativar o acesso à localização Ativar os serviços de localização Ativar o Wi-Fi @@ -4728,6 +4750,7 @@ Compartilhar + Enviar , %1$s @@ -5031,6 +5054,119 @@ Teclado Enviar com Enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Mensagens @@ -5115,6 +5251,7 @@ Qualidade das fotos + Qualidade da mídia enviada Enviar mídia com alta qualidade usará mais dados de internet. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Seu plano de assinatura de backups expirou - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Seu plano de backup expirou porque não pôde ser renovado com a forma de pagamento atual. Em %1$d dia, os arquivos de mídia em seu backup serão apagados. + Seu plano de backup expirou porque não pôde ser renovado com a forma de pagamento atual. Em %1$d dias, os arquivos de mídia em seu backup serão apagados. Você pode voltar a pagar pelos backups a qualquer momento para continuar salvando todos os seus arquivos de mídia. @@ -7257,9 +7394,9 @@ Se você selecionar \"Pular\", os arquivos de mídia do seu backup serão excluídos em %1$d dias. - Your backups subscription failed to renew + Não foi possível renovar seu plano de assinatura de backups. - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Verifique se seu método de pagamento está atualizado. Toque em Gerenciar assinatura e, em Métodos de pagamento, selecione Atualizar. Não foi possível concluir o backup @@ -7269,9 +7406,9 @@ Pular - Ajustar doação + Gerenciar plano - Subscribe for %1$s/month + Assine por %1$s/mês Baixar mídia agora @@ -7306,6 +7443,17 @@ %1$s de %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ A otimização de armazenamento só pode ser usada com o plano pago do Signal Backups. Atualize seu plano de backup para começar a usar esta função. - Subscribe for %1$s/month + Assine por %1$s/mês - This media is no longer available + Este arquivo de mídia não está mais disponível. - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Seu backup atual do Signal inclui apenas os arquivos de mídia do dia anterior. Atualize agora para começar a salvar todos os seus arquivos. + Seu backup atual do Signal inclui apenas os arquivos de mídia mais recentes, feitos nos últimos %1$d dias. Atualize agora para começar a salvar todos os seus arquivos. - Subscribe for %1$s/month + Assine por %1$s/mês Agora, quando você excluir algo, isso será apagado de todos os seus dispositivos. @@ -7413,11 +7561,13 @@ Tipo de backup alterado e assinatura cancelada - Assinatura cancelada + Subscription canceled Download concluído O backup será criado durante a noite. + + Subscription inactive Plano de backup @@ -7426,8 +7576,12 @@ %1$s/mês Seu plano de backup é gratuito - + Renova em %1$s + + Expires on %1$s + + Expired on %1$s Faça backup do seu histórico de mensagens para nunca perder dados ao comprar um novo telefone ou reinstalar o Signal. @@ -7472,6 +7626,10 @@ Fazer backup manual Digite o PIN, a senha ou o padrão de desbloqueio do seu dispositivo. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 9eebf45a54..f15e69c0a8 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -368,6 +368,8 @@ Chats Mensagens + + Chat types Mensagem %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Está tudo pronto. Inicie a sua cópia de segurança agora. Dependendo do tamanho da sua cópia de segurança, isto pode demorar algum tempo. Pode usar o seu telemóvel normalmente enquanto a cópia de segurança é efetuada. @@ -1969,6 +1971,7 @@ +%1$d convidado +%1$d convidados + %1$d grupo adicional %1$d grupos adicionais @@ -1995,6 +1998,7 @@ Não foi encontrado nenhum dispositivo. Erro de rede. Código QR inválido. + Lamentamos mas tem demasiados dispositivos associados, tente remover alguns Lamento mas este não é um código QR de associação ao dispositivo válido. Associar a um dispositivo Signal? @@ -2017,11 +2021,13 @@ Submeter frase-chave Frase-chave inválida! Desbloquear o Signal + Signal Android - Ecrã de bloqueio Mapa + Colocar pino Aceitar endereço @@ -2525,6 +2531,7 @@ Mensagem do Signal + Mais @@ -2556,6 +2563,7 @@ Sem autocolantes instalados Os autocolantes das mensagens recebidas irão aparecer aqui Sem título + Desconhecido @@ -2777,6 +2785,7 @@ Multimédia atualmente indisponível. Não foi possível reproduzir multimédia. + Erro ao encontrar mensagem. Não foi possível encontrar uma aplicação capaz de partilhar este média. Fechar @@ -2848,6 +2857,7 @@ Mensagens Chamadas + Falhas Cópias de segurança Estado do bloqueio @@ -2857,6 +2867,7 @@ Desconhecido(a) Notas de voz Um contacto juntou-se ao Signal + Sem atividade disponível para abrir as definições do canal de notificações. Ligação em segundo plano @@ -3641,10 +3652,12 @@ Todo o histórico de mensagens será eliminado permanentemente de todos os dispositivos. Esta ação não pode ser revertida. Eliminar tudo agora + Para sempre 1 ano 6 meses 30 dias + Ilimitado %1$s mensagem @@ -3669,6 +3682,7 @@ Exibir Toque Tamanho da letra da mensagem + Prioridade Solucionar problemas de notificações @@ -3897,6 +3911,7 @@ Digitalize o código QR do endereço do beneficiário + Pedido Pagar Saldo disponível: %1$s @@ -4028,6 +4043,7 @@ Apenas pode afixar até %1$d chats + Fotografia de contacto Arquivado @@ -4036,6 +4052,10 @@ Novo chat Abrir câmara Ainda não existem chats.\nComece por enviar uma mensagem a um amigo. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Cópias de segurança dos chats Transferir conta Transferir conta para um dispositivo Android novo + Introduza a frase-chave da cópia de segurança Restaurar Impossível importar backups de novas versões do Signal @@ -4475,6 +4496,7 @@ Não foi possível abrir as \'Definições Wi-Fi\'. Por favor, ative o Wi-Fi manualmente. + Conceder permissão de localização Ativar os serviços de localização Ativar o Wi-Fi @@ -4728,6 +4750,7 @@ Partilhar + Enviar , %1$s @@ -5031,6 +5054,119 @@ Teclado Enviar com enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Mensagens @@ -5115,6 +5251,7 @@ Qualidade média + Qualidade da multimédia enviada Enviar multimédia com alta qualidade utilizará mais dados de internet. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + A sua subscrição de cópias de segurança expirou - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + O seu plano de cópias de segurança expirou porque não pôde ser renovado através do seu atual método de pagamento. Após %1$d dia, os ficheiros multimédia na sua cópia de segurança serão eliminados. + O seu plano de cópias de segurança expirou porque não pôde ser renovado através do seu atual método de pagamento. Após %1$d dias, os ficheiros multimédia na sua cópia de segurança serão eliminados. Pode voltar a pagar a qualquer altura para continuar a fazer cópias de segurança dos seus ficheiros. @@ -7257,9 +7394,9 @@ Se escolher \"Ignorar\", os ficheiros na sua cópia de segurança serão eliminados dentro de %1$d dias. - Your backups subscription failed to renew + A renovação da sua subscrição de cópias de segurança falhou - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Certifique-se que o seu método de pagamento está atualizado. Toque em \"Gerir subscrição\" e em \"Métodos de pagamento\" toque em \"Atualizar\". Não foi possível concluir a cópia de segurança @@ -7271,7 +7408,7 @@ Gerir assinatura - Subscribe for %1$s/month + Subscreva por %1$s/mês Transferir ficheiros multimédia @@ -7306,6 +7443,17 @@ %1$s de %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ A otimização do armazenamento só pode ser usada com a categoria paga das Cópias de Segurança do Signal. Faça upgrade ao seu plano de cópias de segurança para começar a usar esta funcionalidade. - Subscribe for %1$s/month + Subscreva por %1$s/mês - This media is no longer available + Este ficheiro multimédia já não está disponível - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + O seu atual plano de cópias de segurança do Signal inclui o seu último dia de ficheiros multimédia. Para começar a fazer cópias de segurança de todos os seus ficheiros multimédia, atualize agora. + O seu atual plano de cópias de segurança do Signal inclui os seus últimos %1$d dias de ficheiros multimédia. Para começar a fazer cópias de segurança de todos os seus ficheiros multimédia, atualize agora. - Subscribe for %1$s/month + Subscreva por %1$s/mês A eliminação está agora sincronizada entre todos os seus dispositivos @@ -7413,11 +7561,13 @@ Tipo de cópia de segurança alterado e subscrição cancelada - Subscrição cancelada + Subscription canceled Download completo A cópia de segurança será criada durante a noite. + + Subscription inactive Plano de cópia de segurança @@ -7426,8 +7576,12 @@ %1$s/mês O seu plano de cópia de segurança é grátis - + Renovações %1$s + + Expires on %1$s + + Expired on %1$s Efetue cópias de segurança do seu histórico de mensagens para nunca perder dados ao mudar de telemóvel ou reinstalar o Signal. @@ -7472,6 +7626,10 @@ Cópia de segurança manual Insira o pin, palavra-passe ou padrão do seu dispositivo. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index acf0439e73..6056308fc3 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -371,6 +371,8 @@ Conversații Mesaje + + Chat types Mesaj %1$s @@ -836,7 +838,7 @@ - You\'re all set. Start your backup now. + Ești gata. Începe acum backup-ul. În funcție de dimensiunea copiei tale de rezervă, acest lucru poate dura mult timp. Poți utiliza telefonul așa cum o faci în mod normal în timp ce are loc backup-ul. @@ -2030,6 +2032,7 @@ +%1$d invitați %1$d de invitați + %1$d grup adițional %1$d grupuri adiționale @@ -2057,6 +2060,7 @@ Nu a fost găsit niciun dispozitiv. Eroare rețea. Cod QR invalid. + Ne pare rău, ai deja prea multe dispozitive asociate, încearcă să elimini câteva Ne pare rău, acest cod de asociere QR este invalid. Asociez un dispozitiv Signal? @@ -2080,11 +2084,13 @@ Trimite parola Parolă incorectă! Deblochează Signal + Signal Android - Ecran de Blocare Hartă + Alege marcaj Acceptă adresa @@ -2610,6 +2616,7 @@ Mesaj Signal + Mai multe @@ -2641,6 +2648,7 @@ Nici un autocolant instalat Autocolantele din mesajele primite se vor afișa aici Fără titlu + Necunoscut @@ -2863,6 +2871,7 @@ Media nu mai este disponibilă. Nu s-a putut porni fișierul media. + Eroare la găsirea mesajului. Nu pot găsi o aplicație pentru a distribui acest tip media. Închide @@ -2936,6 +2945,7 @@ Mesaje Apeluri + Erori Backup-uri Stare blocare @@ -2945,6 +2955,7 @@ Necunoscut Notițe vocale Un contact s-a alăturat pe Signal + Nu există activitate disponibilă pentru a deschide setările canalului de notificare. Conexiune de fundal @@ -3742,10 +3753,12 @@ Tot istoricul mesajelor va fi eliminat definitiv de pe toate dispozitivele. Această acțiune este ireversibilă. Șterge tot acum + Pentru totdeauna 1 an 6 luni 30 zile + Niciunul %1$s mesaj @@ -3771,6 +3784,7 @@ Afișează Ton de apel Mărimea textului + Prioritate Rezolvă notificările @@ -3999,6 +4013,7 @@ Scanează codul QR al adresei beneficiarului + Cerere Plătește Sold disponibil: %1$s @@ -4131,6 +4146,7 @@ Poți fixa până la %1$d conversații + Poză Contact Arhivat @@ -4139,6 +4155,10 @@ Conversație nouă Deschide Camera Nu există conversații. Începe prin a trimite unui prieten un mesaj. + + No chats to display + + Folder settings @@ -4379,6 +4399,7 @@ Backup-uri pt. conversații Transfer cont Transfer cont pe un nou dispozitiv Android + Introdu parola pentru backup Restaurează Nu se importă backup-uri din versiuni mai noi de Signal @@ -4586,6 +4607,7 @@ Nu se pot deschide setările Wi-Fi. Te rugăm să activezi manual Wi-Fi. + Acordă permisiunea pentru locație Activare servicii de localizare Activare Wi-Fi @@ -4846,6 +4868,7 @@ Distribuie + Trimite , %1$s @@ -5150,6 +5173,122 @@ Tastatură Trimite cu enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + %1$d chat types + + + + %1$d chat + %1$d chats + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Mesaje @@ -5235,6 +5374,7 @@ Calitate Media + Calitatea fișierelor media trimise Trimiterea fișierelor media la calitate înaltă va duce la un consum mai mare de date. @@ -7391,12 +7531,12 @@ - Your backups subscription expired + Abonamentul pentru backup-uri a expirat - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Planul tău de backup a expirat deoarece nu a putut fi reînnoit cu metoda ta de plată actuală. După %1$d zi, fișierele tale din backup vor fi eliminate. + Planul tău de backup a expirat deoarece nu a putut fi reînnoit cu metoda ta de plată actuală. După %1$d zile, fișierele tale din backup vor fi eliminate. + Planul tău de backup a expirat deoarece nu a putut fi reînnoit cu metoda ta de plată actuală. După %1$d de zile, fișierele tale din backup vor fi eliminate. Poți începe să plătești din nou pentru backup în orice moment, pentru a continua să îți salvezi toate fișierele media. @@ -7415,9 +7555,9 @@ Dacă alegi \"Sari peste\", fișierele din backup vor fi eliminate în %1$d de zile. - Your backups subscription failed to renew + Abonamentul tău pentru backup nu s-a reînnoit - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Asigură-te că metoda ta de plată este actualizată. Atinge Gestionează abonamentul și sub Metode de plată, atinge Actualizare. Nu s-a putut finaliza backup-ul @@ -7429,7 +7569,7 @@ Gestionare abonament - Subscribe for %1$s/month + Abonează-te pentru %1$s/lună Descarcă media acum @@ -7464,6 +7604,17 @@ %1$s din %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7517,19 +7668,19 @@ Optimizarea stocării poate fi utilizată numai cu nivelul plătit al Signal Backups. Actualizează-ți planul de backup pentru a începe să folosești această funcție. - Subscribe for %1$s/month + Abonează-te pentru %1$s/lună - This media is no longer available + Acest fișier nu mai este disponibil - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Planul tău actual de rezervă Signal include %1$d zi cu cele mai recente fișiere media. Ca să începi să faci backup pentru toate fișierele, realizează un upgrade acum. + Planul tău actual de rezervă Signal include %1$d zile cu cele mai recente fișiere media. Ca să începi să faci backup pentru toate fișierele, realizează un upgrade acum. + Planul tău actual de rezervă Signal include %1$d de zile cu cele mai recente fișiere media. Ca să începi să faci backup pentru toate fișierele, realizează un upgrade acum. - Subscribe for %1$s/month + Abonează-te pentru %1$s/lună Eliminarea este acum sincronizată pe toate dispozitivele tale @@ -7572,11 +7723,13 @@ Tipul de backup schimbat și abonamentul anulat - Abonament anulat + Subscription canceled Descărcare completă Backup-ul va fi creat peste noapte. + + Subscription inactive Plan de back-up @@ -7585,8 +7738,12 @@ %1$s/lună Planul tău de back-up este gratuit - + Se reînnoiește %1$s + + Expires on %1$s + + Expired on %1$s Fă back-up pentru istoricul mesajelor, astfel încât niciodată să nu pierzi date, atunci când îți iei un telefon nou sau reinstalezi Signal. @@ -7631,6 +7788,10 @@ Efectuează backup manual Introdu codul PIN, parola sau șablonul pentru dispozitivul tău. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index a231161fe4..ab5c6d6338 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -374,6 +374,8 @@ Чаты Сообщения + + Chat types Сообщение %1$s @@ -856,7 +858,7 @@ - You\'re all set. Start your backup now. + Всё готово. Начните резервное копирование. Из-за большого размера резервной копии это может занять много времени. Во время резервного копирования вы можете пользоваться своим телефоном как обычно. @@ -2091,6 +2093,7 @@ +%1$d приглашено +%1$d приглашено + ещё %1$d группы ещё %1$d групп @@ -2119,6 +2122,7 @@ Устройство не найдено. Ошибка сети. Неверный QR-код. + К сожалению, у вас уже привязано слишком много устройств, попробуйте отвязать некоторые из них К сожалению, это неправильный QR-код для привязки устройства. Привязать устройство Signal? @@ -2143,11 +2147,13 @@ Подтвердить парольную фразу Неверная парольная фраза! Разблокировать Signal + Signal Android - Экран блокировки Карта + Поставить метку Принять адрес @@ -2695,6 +2701,7 @@ Сообщение Signal + Больше @@ -2726,6 +2733,7 @@ Нет установленных стикеров Стикеры из входящих сообщений появятся здесь Безымянный + Неизвестно @@ -2949,6 +2957,7 @@ Медиафайл больше не доступен. Не удалось воспроизвести медиафайл. + Ошибка при поиске сообщения Не найдено приложение, в котором можно поделиться этим медиафайлом. Закрыть @@ -3024,6 +3033,7 @@ Сообщения Звонки + Сбои Резервные копии Статус блокировки @@ -3033,6 +3043,7 @@ Неизвестный Голосовые заметки Контакт присоединился к Signal + Нет доступной активности для открытия настроек категорий уведомлений. Фоновое соединение @@ -3843,10 +3854,12 @@ Вся история сообщений будет безвозвратно удалена со всех устройств. Это действие не может быть отменено. Удалить всё сейчас + Бессрочно 1 год 6 месяцев 30 дней + Нет %1$s сообщение @@ -3873,6 +3886,7 @@ Показывать Мелодия Размер шрифта сообщения + Приоритет Устранение неполадок с уведомлениями @@ -4101,6 +4115,7 @@ Просканируйте QR-код адреса получателя платежа. + Запросить Заплатить Доступный баланс: %1$s @@ -4234,6 +4249,7 @@ Вы можете прикрепить только до %1$d чатов + Фотография контакта В архиве @@ -4242,6 +4258,10 @@ Новый чат Открыть камеру Ещё нет чатов.\nОтправьте другу своё первое сообщение. + + No chats to display + + Folder settings @@ -4490,6 +4510,7 @@ Резервные копии чатов Перенести учётную запись Перенести учётную запись на новое Android-устройство + Введите парольную фразу резервной копии Восстановить Невозможно импортировать более новые резервные копии @@ -4697,6 +4718,7 @@ Не удалось открыть настройки Wi-Fi. Пожалуйста, включите Wi-Fi вручную. + Предоставьте разрешение на доступ к местоположению Включите службы геолокации Включите Wi-Fi @@ -4964,6 +4986,7 @@ Поделиться + Отправить , %1$s @@ -5269,6 +5292,125 @@ Клавиатура Отправка с помощью ввода + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + %1$d chat types + %1$d chat types + + + + %1$d chat + %1$d chats + %1$d chats + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + %1$d chats excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Сообщения @@ -5355,6 +5497,7 @@ Качество медиа + Качество отправляемого медиа Отправление медиа в высоком качестве использует больше данных. @@ -7547,13 +7690,13 @@ - Your backups subscription expired + Срок действия подписки на резервное копирование истёк - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Срок действия плана резервного копирования истек, так как его не удалось продлить с помощью текущего способа оплаты. По истечении %1$d дня медиафайлы из резервной копии будут удалены. + Срок действия плана резервного копирования истек, так как его не удалось продлить с помощью текущего способа оплаты. По истечении %1$d дней медиафайлы из резервной копии будут удалены. + Срок действия плана резервного копирования истек, так как его не удалось продлить с помощью текущего способа оплаты. По истечении %1$d дней медиафайлы из резервной копии будут удалены. + Срок действия плана резервного копирования истек, так как его не удалось продлить с помощью текущего способа оплаты. По истечении %1$d дня медиафайлы из резервной копии будут удалены. Вы можете снова начать оплату за резервное копирование в любое время, чтобы продолжить создавать резервные копии всех своих медиафайлов. @@ -7573,9 +7716,9 @@ Если вы выберете «Пропустить», медиафайлы из резервной копии будут удалены через %1$d дня. - Your backups subscription failed to renew + Не удалось продлить подписку на резервное копирование - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Проверьте актуальность вашего способа оплаты. Нажмите «Управлять подпиской» и в разделе «Способы оплаты» нажмите «Обновить». Не удалось выполнить резервное копирование @@ -7587,7 +7730,7 @@ Управлять подпиской - Subscribe for %1$s/month + Подписаться за %1$s/месяц Загрузить медиафайлы сейчас @@ -7622,6 +7765,17 @@ %1$s из %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7675,20 +7829,20 @@ Оптимизация хранилища доступна только с платным уровнем резервного копирования Signal. Обновите план резервного копирования, чтобы начать использовать эту функцию. - Subscribe for %1$s/month + Подписаться за %1$s/месяц - This media is no longer available + Эти медиафайлы больше не доступны - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Ваш текущий план резервного копирования Signal включает в себя медиафайлы за %1$d последний день. Чтобы начать резервное копирование всех медиафайлов, обновите план прямо сейчас. + Ваш текущий план резервного копирования Signal включает в себя медиафайлы за %1$d последних дня. Чтобы начать резервное копирование всех медиафайлов, обновите план прямо сейчас. + Ваш текущий план резервного копирования Signal включает в себя медиафайлы за %1$d последних дней. Чтобы начать резервное копирование всех медиафайлов, обновите план прямо сейчас. + Ваш текущий план резервного копирования Signal включает в себя медиафайлы за %1$d последнего дня. Чтобы начать резервное копирование всех медиафайлов, обновите план прямо сейчас. - Subscribe for %1$s/month + Подписаться за %1$s/месяц Удаление теперь происходит синхронно на всех ваших устройствах @@ -7731,11 +7885,13 @@ Изменен тип резервного копирования и отменена подписка - Подписка отменена + Subscription canceled Скачивание завершено Резервная копия будет создана за одну ночь. + + Subscription inactive План резервного копирования @@ -7744,8 +7900,12 @@ %1$s/месяц У вас бесплатный план резервного копирования - + Продлится %1$s + + Expires on %1$s + + Expired on %1$s Создайте резервную копию истории сообщений, и вы не потеряете ни одно сообщение при покупке нового телефона или переустановке Signal. @@ -7790,6 +7950,10 @@ Резервное копирование вручную Пожалуйста, введите Пин-код, пароль или графический ключ вашего устройства. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index e97631a813..c0a053221d 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -374,6 +374,8 @@ Čety Správy + + Chat types Správa %1$s @@ -856,7 +858,7 @@ - You\'re all set. Start your backup now. + Hotovo Môžete spustiť zálohovanie. V závislosti od veľkosti zálohy to môže trvať dlhšie. Počas zálohovania môžete telefón používať ako obvykle. @@ -2091,6 +2093,7 @@ +%1$d pozvaných +%1$d pozvaných + %1$d ďalšia skupina %1$d ďalšie skupiny @@ -2119,6 +2122,7 @@ Nebolo nájdené žiadne zariadenie. Chyba siete. Neplatný QR kód. + Máte príliš veľa pripojených zariadení, skúste niektoré odpojiť Tento QR kód neslúži na pridanie zariadenia. Pridať zariadenie so Signalom? @@ -2143,11 +2147,13 @@ Odoslať heslo Nesprávne heslo! Odomknúť Signal + Signal Android - Zámok obrazovky Mapa + Umiestniť značku Prijať adresu @@ -2695,6 +2701,7 @@ Signal správa + Viac @@ -2726,6 +2733,7 @@ Žiadne nainštalované nálepky Tu uvidíte nálepky z prichádzajúcich správ Nepomenovaná + Neznáme @@ -2949,6 +2957,7 @@ Médiá už nie sú dostupné. Nemožno prehrať médiá. + Chyba pri vyhľadávaní správy. Nepodarilo sa nájsť aplikáciu schopnú zdieľať tento typ súboru. Zatvoriť @@ -3024,6 +3033,7 @@ Správy Volania + Chyby Zálohy Stav zámku @@ -3033,6 +3043,7 @@ Neznáma Hlasové poznámky Váš kontakt začal používať Signal + Na otvorenie nastavení kanála upozornení nie je k dispozícii žiadna aktivita. Pripojenie na pozadí @@ -3843,10 +3854,12 @@ Celá história správ bude natrvalo odstránená zo všetkých zariadení. Túto akciu nie je možné vrátiť späť. Zmazať všetky teraz + Navždy 1 rok 6 mesiacov 30 dní + Žiadny %1$s správa @@ -3873,6 +3886,7 @@ Zobraziť Zvonenie Veľkosť písma správy + Priorita Riešiť problémy s upozorneniami @@ -4101,6 +4115,7 @@ Naskenujte QR kód adresu príjemcu platby + Žiadosť Zaplať Disponibilný zostatok: %1$s @@ -4234,6 +4249,7 @@ Môžete pripnúť maximálne %1$d čety + Fotka kontaktu Archivované @@ -4242,6 +4258,10 @@ Nový čet Otvoriť fotoaparát Zatiaľ tu nie sú žiadne čety.\nZačnite poslaním správy priateľovi. + + No chats to display + + Folder settings @@ -4490,6 +4510,7 @@ Zálohy četov Preniesť účet Preniesť účet do nového Android zariadenia + Zadajte heslo pre zálohy Obnovenie Zálohy z novších verzií Signalu nie je možné importovať @@ -4697,6 +4718,7 @@ Nie je možné otvoriť Wi-Fi nastavenia. Prosím, zapnite Wi-Fi. + Povoliť prístup k polohe Zapnúť služby polohy Zapnúť Wi-Fi @@ -4964,6 +4986,7 @@ Zdieľať + Poslať , %1$s @@ -5269,6 +5292,125 @@ Klávesnica Odoslať stlačením tlačidla „Enter“ + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + %1$d chat types + %1$d chat types + + + + %1$d chat + %1$d chats + %1$d chats + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + %1$d chats excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Správy @@ -5355,6 +5497,7 @@ Kvalita médií + Kvalita odoslaných médií Odosielanie médií vo vysokej kvalite využije viac dát. @@ -7547,13 +7690,13 @@ - Your backups subscription expired + Platnosť vášho predplatného záloh vypršala - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Platnosť vášho zálohovacieho plánu vypršala, pretože ho nebolo možné obnoviť pomocou vášho aktuálneho spôsobu platby. Za %1$d deň budú médiá vo vašej zálohe vymazané. + Platnosť vášho zálohovacieho plánu vypršala, pretože ho nebolo možné obnoviť pomocou vášho aktuálneho spôsobu platby. Po %1$d dňoch budú médiá vo vašej zálohe vymazané. + Platnosť vášho zálohovacieho plánu vypršala, pretože ho nebolo možné obnoviť pomocou vášho aktuálneho spôsobu platby. Po %1$d dňoch budú médiá vo vašej zálohe vymazané. + Platnosť vášho zálohovacieho plánu vypršala, pretože ho nebolo možné obnoviť pomocou vášho aktuálneho spôsobu platby. Po %1$d dňoch budú médiá vo vašej zálohe vymazané. Kedykoľvek môžete začať opäť platiť za zálohy. Budete tak môcť pokračovať v zálohovaní všetkých svojich médií. @@ -7573,9 +7716,9 @@ Ak vyberiete možnosť Preskočiť, médiá vo vašej zálohe sa vymažú o %1$d dní. - Your backups subscription failed to renew + Vaše predplatné záloh sa nepodarilo obnoviť - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Skontrolujte, či je váš spôsob platby aktuálny. Ťuknite na Spravovať predplatné a v časti Spôsoby platby ťuknite na Aktualizovať. Zálohovanie sa nepodarilo dokončiť @@ -7587,7 +7730,7 @@ Spravovať predplatné - Subscribe for %1$s/month + Predplatiť za %1$s mesačne Stiahnuť médiá teraz @@ -7622,6 +7765,17 @@ %1$s z %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7675,20 +7829,20 @@ Optimalizáciu úložiska je možné využiť iba v prípade, ak používate platenú verziu Signal záloh. Ak chcete používať túto funkciu, aktualizujte svoj plán zálohovania. - Subscribe for %1$s/month + Predplatiť za %1$s mesačne - This media is no longer available + Toto médium už nie je dostupné - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Váš aktuálny zálohovací plán Signal zahŕňa váš posledný %1$d deň médií. Ak chcete začať zálohovať všetky svoje médiá, upgradujte teraz. + Váš aktuálny zálohovací plán Signal zahŕňa vaše posledné %1$d dni médií. Ak chcete začať zálohovať všetky svoje médiá, upgradujte teraz. + Váš aktuálny zálohovací plán Signal zahŕňa vášho posledného %1$d dňa médií. Ak chcete začať zálohovať všetky svoje médiá, upgradujte teraz. + Váš aktuálny zálohovací plán Signal zahŕňa vašich posledných %1$d dní médií. Ak chcete začať zálohovať všetky svoje médiá, upgradujte teraz. - Subscribe for %1$s/month + Predplatiť za %1$s mesačne Vymazávanie je teraz synchronizované na všetkých vašich zariadeniach @@ -7731,11 +7885,13 @@ Typ zálohy sa zmenil a predplatné bolo zrušené - Predplatné bolo zrušené + Subscription canceled Sťahovanie dokončené Zálohovanie prebehne počas noci. + + Subscription inactive Plán zálohovania @@ -7744,8 +7900,12 @@ %1$s/mesiac Váš plán zálohovania je bezplatný - + Obnoví sa %1$s + + Expires on %1$s + + Expired on %1$s Zálohujte si históriu správ, aby ste pri výmene telefónu alebo opätovnom nainštalovaní Signalu už nikdy neprišli o dáta. @@ -7790,6 +7950,10 @@ Manuálne zálohovanie Zadajte PIN kód, heslo alebo vzor svojho zariadenia. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index d85ee3fdc4..9bf9d32ca1 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -374,6 +374,8 @@ Klepeti Sporočila + + Chat types Sporočilo %1$s @@ -856,7 +858,7 @@ - You\'re all set. Start your backup now. + Vse je pripravljeno. Začnite varnostno kopiranje. Glede na velikost varnostne kopije lahko to traja zelo dolgo. Med varnostnim kopiranjem lahko telefon uporabljate kot običajno. @@ -2091,6 +2093,7 @@ +%1$d povabljeni +%1$d povabljenih + %1$d dodatna skupina %1$d dodatni skupini @@ -2119,6 +2122,7 @@ Nobena naprava ni bila najdena. Napaka omrežja. Neveljavna koda QR. + Imate preveč registriranih naprav. Za povezavo nove najprej kakšno odstranite. Koda QR za povezavo naprav ni veljavna. Povežem z napravo Signal? @@ -2143,11 +2147,13 @@ Vnesite geslo Napačno geslo! Odkleni Signal + Signal Android - Zaklenjen zaslon Zemljevid + Izpusti Sprejmi naslov @@ -2695,6 +2701,7 @@ Sporočilo Signal + Več @@ -2726,6 +2733,7 @@ Brez nameščenih nalepk Tu bodo prikazane nalepke iz dohodnih sporočil. Brez naslova + Neznano @@ -2949,6 +2957,7 @@ Medijsko sporočilo ni več na voljo. Ni mogoče predvajati medijev. + Napaka pri iskanju sporočila. Ne najdem ustrezne aplikacije za delitev tega medija. Zapri @@ -3024,6 +3033,7 @@ Sporočila Klici + Napake Varnostne kopije Stanje zaklepa @@ -3033,6 +3043,7 @@ Neznano Glasovna sporočila Oseba iz imenika se je pridružila Signalu + Na voljo ni nobene aktivnosti povezane z obvestili. Povezava v ozadju @@ -3843,10 +3854,12 @@ Vsa zgodovina sporočil bo trajno odstranjena iz vseh naprav. Ta korak je nepovraten. Izbriši vse zdaj + Za vedno 1 leto 6 mesecev 30 dni + Brez %1$s sporočilo @@ -3873,6 +3886,7 @@ Prikaži Zvonjenje Velikost črk v sporočilu + Pomembnost Odpravljanje težav z obvestili @@ -4101,6 +4115,7 @@ Skeniraj kodo QR naslova prejemnika + Prošnja Plačaj Stanje: %1$s @@ -4234,6 +4249,7 @@ Pripnete lahko do %1$d klepetov + Slika stika Arhivirano @@ -4242,6 +4258,10 @@ Nov klepet Odpri kamero Zaenkrat brez klepetov.\nZačnite s sporočilom prijatelju_ici. + + No chats to display + + Folder settings @@ -4490,6 +4510,7 @@ Varnostno kopiranje klepetov Prenos računa Prenos računa na novo androidno napravo + Vnesite geslo varnostne kopije Obnovi Uvoz varnostnih kopij iz novejših različic ni mogoč @@ -4697,6 +4718,7 @@ Dostop do nastavitev Wi-Fi ni bil mogoč. Poskusite ročno vklopiti Wi-Fi. + Dovoli dostop do lokacije Vklopi lokacijske storitve Vklopi Wi-Fi @@ -4964,6 +4986,7 @@ Deli + Pošlji , %1$s @@ -5269,6 +5292,125 @@ Tipkovnica Pošlji z enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + %1$d chat types + %1$d chat types + + + + %1$d chat + %1$d chats + %1$d chats + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + %1$d chats excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Sporočila @@ -5355,6 +5497,7 @@ Kvaliteta medisjkih datotek + Kvaliteta poslanih medijskih datotek Pošiljanje medijskih datotek boljše kvalitete porabi več podatkov. @@ -6175,7 +6318,7 @@ Količina - Thank you for supporting Signal. Your contribution helps fuel the mission of developing open source privacy technology that protects free expression and enables secure global communication for millions around the world. If you’re a resident of the United States, please retain this receipt for your tax records. Signal Technology Foundation is a tax–exempt nonprofit organization in the United States under section 501c3 of the Internal Revenue Code. Our Federal Tax ID is 82–4506840. + Hvala, ker podpirate Signal. S svojim prispevkom pomagate pri uresničevanju poslanstva razvoja odprtokodne tehnologije zasebnosti, ki varuje svobodo izražanja in omogoča varno globalno komunikacijo za milijone ljudi po vsem svetu. Če ste prebivalec Združenih držav Amerike, hranite to potrdilo za svojo davčno evidenco. Tehnološka fundacija Signal je neprofitna organizacija, ki je v Združenih državah Amerike oproščena plačila davkov v skladu z oddelkom 501c3 zakonika o notranjih prihodkih. Naša zvezna davčna številka je 82–4506840. %1$s - %2$s @@ -7547,13 +7690,13 @@ - Your backups subscription expired + Vaša naročnina na varnostne kopije je potekla - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Vaš načrt varnostne kopije je potekel, ker ga ni bilo mogoče podaljšati z vašim trenutnim načinom plačila. Po %1$d dnevu bodo mediji v vaši varnostni kopiji izbrisani. + Vaš načrt varnostne kopije je potekel, ker ga ni bilo mogoče podaljšati z vašim trenutnim načinom plačila. Po %1$d dneh bodo mediji v vaši varnostni kopiji izbrisani. + Vaš načrt varnostne kopije je potekel, ker ga ni bilo mogoče podaljšati z vašim trenutnim načinom plačila. Po %1$d dneh bodo mediji v vaši varnostni kopiji izbrisani. + Vaš načrt varnostne kopije je potekel, ker ga ni bilo mogoče podaljšati z vašim trenutnim načinom plačila. Po %1$d dneh bodo mediji v vaši varnostni kopiji izbrisani. Kadarkoli lahko ponovno začnete plačevati za varnostne kopije in tako nadaljujete z varnostnim kopiranjem vseh svojih medijev. @@ -7573,9 +7716,9 @@ Če izberete \"Preskoči\", bodo mediji v varnostni kopiji izbrisani v %1$d dneh. - Your backups subscription failed to renew + Vaša naročnina na varnostne kopije se ni obnovila - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Prepričajte se, da je vaš način plačila posodobljen. Tapnite Upravljanje naročnine in v razdelku Plačila tapnite Posodobitev. Varnostne kopije ni bilo mogoče dokončati @@ -7587,7 +7730,7 @@ Upravljanje naročnine - Subscribe for %1$s/month + Naročite se za %1$s/mesec Prenos medijev @@ -7622,6 +7765,17 @@ %1$s od %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7675,20 +7829,20 @@ Optimizacijo shranjevanja je mogoče uporabljati samo s plačljivo ravnjo Signal Backups. Za uporabo te funkcije nadgradite načrt varnostnega kopiranja. - Subscribe for %1$s/month + Naročite se za %1$s/mesec - This media is no longer available + Ta medij ni več na voljo - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Vaš trenutni načrt varnostne kopije Signal vključuje vaš zadnji %1$d dan medijev. Če želite začeti varnostno kopiranje vseh svojih medijev, nadgradite. + Vaš trenutni načrt varnostne kopije Signal vključuje vaša zadnja %1$d dneva medijev. Če želite začeti varnostno kopiranje vseh svojih medijev, nadgradite. + Vaš trenutni načrt varnostne kopije Signal vključuje vaša zadnje %1$d dni medijev. Če želite začeti varnostno kopiranje vseh svojih medijev, nadgradite. + Vaš trenutni načrt varnostne kopije Signal vključuje vaša zadnjih %1$d dni medijev. Če želite začeti varnostno kopiranje vseh svojih medijev, nadgradite. - Subscribe for %1$s/month + Naročite se za %1$s/mesec Brisanje je zdaj sinhronizirano v vseh napravah @@ -7731,11 +7885,13 @@ Spremenjena vrsta varnostne kopije in preklicana naročnina - Naročnina je prekinjena + Subscription canceled Prenos dokončan Varnostna kopija bo ustvarjena čez noč. + + Subscription inactive Načrt varnostne kopije @@ -7744,8 +7900,12 @@ %1$s/mesec Vaš načrt varnostne kopije je brezplačen - + Obnovitev naročnine: %1$s + + Expires on %1$s + + Expired on %1$s Ustvarite varnostno kopijo zgodovine sporočil, da ne izgubite podatkov, ko dobite nov telefon ali znova namestite Signal. @@ -7790,6 +7950,10 @@ Ročno varnostno kopiranje Vnesite pin, geslo ali vzorec naprave. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml index d58e0c26ba..bd4d1ba471 100644 --- a/app/src/main/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -368,6 +368,8 @@ Bisedat Mesazhe + + Chat types %1$s mesazhi @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Je gati. Nis kopjeruajtjen tani. Në varësi të madhësisë së kopjeruajtjes, kjo mund të zgjasë shumë. Mund ta përdorësh telefonin siç bën zakonisht ndërsa bëhet kopjeruajtja. @@ -1969,6 +1971,7 @@ +%1$d të ftuar +%1$d të ftuar + %1$d grup shtesë %1$d grupe shtesë @@ -1995,6 +1998,7 @@ S\\’u gjet pajisje. Gabim rrjeti. Kod QR i pavlefshëm. + Na ndjeni, keni tashmë shumë pajisje të lidhura, provoni të hiqni disa Na ndjeni, ky s\\’është kod QR lidhjeje pajisjeje i vlefshëm. Të lidhet një pajisje Signal? @@ -2017,11 +2021,13 @@ Parashtroje frazëkalimin Frazëkalim i pavlefshëm! Shkyçe Signal-in + Signal Android - Kyçje Ekrani Hartë + Lini pin Pranoje adresën @@ -2525,6 +2531,7 @@ Mesazhe Signal + Më tepër @@ -2556,6 +2563,7 @@ S\\’ka ngjitës të instaluar Këtu do të shfaqen ngjitësit prej mesazhesh të marrë Pa titull + I panjohur @@ -2777,6 +2785,7 @@ Media s\\’është më e passhme. Media nuk mund të luhet. + Gabim në gjetjen e mesazhit. S\\’gjendet dot një aplikacion për të ndarë me të tjerët këtë media. Mbylle @@ -2848,6 +2857,7 @@ Mesazhe Thirrje + Dështime Kopjeruajtje Gjendje kyçjeje @@ -2857,6 +2867,7 @@ I panjohur Shënime Zanore Kontakti zuri të përdorë Signal-in + Nuk ofrohet asnjë aktivitet për të hapur parametrat e kanalit të njoftimeve. Lidhje në prapaskenë @@ -3641,10 +3652,12 @@ I gjithë historiku i mesazheve do të fshihet përgjithmonë nga të gjitha pajisjet. Ky veprim nuk mund të zhbëhet. Fshije krejt tani + Përgjithmonë 1 vit 6 muaj 30 ditë + Asnjë %1$s mesazh @@ -3669,6 +3682,7 @@ Shfaq Zile Madhësi shkronjash mesazhi + Përparësi Diagnostikim i njoftimeve @@ -3897,6 +3911,7 @@ Skanoni adresën kod QR të të paguarit + Kërkesë Paguani Depozitë e përdorshme: %1$s @@ -4028,6 +4043,7 @@ Mund të fiksoni deri në %1$d biseda + Foto Kontakti Të arkivuar @@ -4036,6 +4052,10 @@ Bisedë e re Hape Kamerën Ende pa biseda.\nFillo duke i dërguar një mesazh një shoku. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Kopjeruajtje bisedash Shpërngulni llogari Shpërngulni llogari te një pajisje Android e re + Jepni frazëkalim kopjeruajtjeje Riktheje Kopjet rezervë s\'importohen nga versionet e reja Signal @@ -4475,6 +4496,7 @@ S’arrihet të hapen parametrat e Wi-Fi. Ju lutemi, hapeni dorazi Wi-Fi-n. + Akordoni leje vendndodhjesh Aktivizoni shërbime vendndodhjesh Hapni Wi-Fi @@ -4728,6 +4750,7 @@ Ndajeni Me të Tjerë + Dërgoje , %1$s @@ -5031,6 +5054,119 @@ Tastierë Dërgo me enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Mesazhe @@ -5115,6 +5251,7 @@ Cilësi media + Cilësi medie të dërguar Dërgimi i medias në cilësi të lartë do të përdorë më tepër të dhëna. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Abonimi për kopjeruajtjen ka skaduar - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Plani i kopjeruajtjes ka skaduar sepse nuk mund të rinovohej me mënyrën aktuale të pagesës. Pas %1$d ditë media në kopjeruajtjen tënde do të fshihet. + Plani i kopjeruajtjes ka skaduar sepse nuk mund të rinovohej me mënyrën aktuale të pagesës. Pas %1$d ditësh media në kopjeruajtjen tënde do të fshihet. Mund të fillosh të paguash përsëri për kopjeruajtjet në çdo kohë për të vazhduar të kopjeruash të gjitha mediat. @@ -7257,9 +7394,9 @@ Nëse zgjedh \"Kapërce\", media e ruajtur në kopjeruajtje do të fshihet pas %1$d ditësh. - Your backups subscription failed to renew + Abonimi i kopjeruajtjeve nuk u rinovua - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Kontrollo për t\'u siguruar që mënyra jote e pagesës është e përditësuar. Kliko \"Menaxho abonimin\" dhe te \"Metodat e pagesës\" kliko \"Përditëso\". Kopjeruajtja nuk përfundoi @@ -7271,7 +7408,7 @@ Menaxho abonimin - Subscribe for %1$s/month + Abonohu për %1$s/muaj Shkarko media tani @@ -7306,6 +7443,17 @@ %1$s nga %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Optimizimi i hapësirës ruajtëse mund të përdoret vetëm me nivelin e paguar të kopjeruajtjeve të Signal. Përmirëso planin e kopjeruajtjeve për të nisur përdorimin e veçorisë. - Subscribe for %1$s/month + Abonohu për %1$s/muaj - This media is no longer available + Media nuk disponohet më - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Plani aktual i kopjeruajtjes në Signal përfshin median e %1$d dite më parë. Për të filluar kopjeruajtjen e të gjitha mediave, përmirësohu tani. + Plani aktual i kopjeruajtjes në Signal përfshin median e%1$d ditëve më parë. Për të filluar kopjeruajtjen e të gjitha mediave, përmirësohu tani. - Subscribe for %1$s/month + Abonohu për %1$s/muaj Fshirja u sinkronizua tashmë në të gjitha pajisjet @@ -7413,11 +7561,13 @@ Lloji i kopjeruajtjes u ndryshua dhe abonimi u anulua - Pajtimi u anulua + Subscription canceled Shkarkimi përfundoi Kopjeruajtja do të krijohet brenda natës. + + Subscription inactive Plani i kopjeruajtjes @@ -7426,8 +7576,12 @@ %1$s/muaj Plani i kopjeruajtjes është falas - + Rinovohet më %1$s + + Expires on %1$s + + Expired on %1$s Bëj kopjeruajtje të historikut të mesazheve në mënyrë që të mos i humbasësh kurrë të dhënat kur merr një telefon të ri ose kur e riinstalon sërish Signal. @@ -7472,6 +7626,10 @@ Kopjeruajtje manuale Të lutem, vendos pinin, fjalëkalimin ose vizimin e pajisjes. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 4b46e59381..cc85ce0e96 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -368,6 +368,8 @@ Ћаскања Поруке + + Chat types Порука: %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Све је спремно. Покрените креирање резервне копије. У зависности од величине ваше резервне копије, ово може дуже потрајати. Можете нормално да користите телефон док се прави резервна копија. @@ -1969,6 +1971,7 @@ Позвана је још %1$d особа Позвано је још њих %1$d + Додатних група: %1$d Додатних група: %1$d @@ -1995,6 +1998,7 @@ Није пронађен ниједан уређај. Дошло је до грешке са мрежом. QR код је неважећи. + Већ сте повезали превише уређаја. Пробајте да уклоните неке од њих Нажалост, ово није важећи QR код за повезивање уређаја. Желите ли да повежете уређај на ком је инсталиран Signal? @@ -2017,11 +2021,13 @@ Пошаљи приступну фразу Приступна фраза је неважећа! Откључај Signal + Signal Android – закључани екран Мапа + Спусти чиоду Прихвати адресу @@ -2525,6 +2531,7 @@ Signal порука + Више @@ -2556,6 +2563,7 @@ Нема инсталираних налепница Налепнице из долазних порука ће бити приказане овде Без наслова + Непознато @@ -2777,6 +2785,7 @@ Медиј више није доступан. Није могуће пустити медиј. + Грешка приликом тражења поруке. Није пронађена апликација која може да подели овај медиј. Затвори @@ -2848,6 +2857,7 @@ Поруке Позиви + Грешке Резервне копије Статус закључавања @@ -2857,6 +2867,7 @@ Непознато Гласовне белешке Контакт се придружио Signal-у + Није доступна активност за отварање подешавања канала за обавештења. Позадинска веза @@ -3641,10 +3652,12 @@ Целокупна историја порука биће трајно уклоњена са свих уређаја. Ова радња се не може опозвати. Избриши све сада + Заувек 1 годину 6 месеци 30 дана + Неограничен %1$s порука @@ -3669,6 +3682,7 @@ Прикажи Звоно Величина фонта поруке + Приоритет Решавање проблема у вези са обавештењима @@ -3897,6 +3911,7 @@ Скенирајте QR код за адресу примаоца уплате + Захтев Плати Доступан износ: %1$s @@ -4028,6 +4043,7 @@ Могуће је закачити највише %1$d ћаскања + Слика контакта Архивирано @@ -4036,6 +4052,10 @@ Ново ћаскање Отвори камеру Још нема ћаскања.\nЗапочните слањем поруке пријатељу. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Резерве ћаскања Пренесите налог Пренесите налог на нови Android уређај + Унесите приступну фразу за резервне копије Врати Није могуће увести резервну копију из новије верзије. @@ -4475,6 +4496,7 @@ Отварање подешавања Wi-Fi мреже није успело. Упалите Wi-Fi ручно. + Одобрите дозволу за приступ локацији Укључите локацију Укључите Wi-Fi @@ -4728,6 +4750,7 @@ Поделите + Пошаљи , %1$s @@ -5031,6 +5054,119 @@ Тастатура Шаљи помоћу тастера за нови ред + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Поруке @@ -5115,6 +5251,7 @@ Квалитет медија + Квалитет послатог медија Слање висококвалитетних медија ће користити више података. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Ваша претплата на резервне копије је истекла - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Ваш пакет за резервне копије је истекао јер се не може обновити са тренутним начином плаћања. Након %1$d дана, медији у резервној копији ће бити избрисани. + Ваш пакет за резервне копије је истекао јер се не може обновити са тренутним начином плаћања. Након %1$d дана, медији у резервној копији ће бити избрисани. Можете поново да почнете да плаћате резервне копије у било ком тренутку да бисте наставили са прављењем резервних копија свих својих медија. @@ -7257,9 +7394,9 @@ Ако изаберете „Прескочи“, медији у вашој резервној копији ће бити избрисани за %1$d дан(а). - Your backups subscription failed to renew + Ваша претплата на резервне копије није обновљена - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Проверите да ли је ваш начин плаћања ажуриран. Додирните „Управљање претплатом“ и под „Начини плаћања“ додирните „Ажурирај“. Прављење резервне копије није успело @@ -7271,7 +7408,7 @@ Управљање претплатом - Subscribe for %1$s/month + Претплатите се за %1$s месечно Преузми медије @@ -7306,6 +7443,17 @@ %1$s од %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Оптимизација меморијског простора се може користити само ако имате плаћени пакет резервних копија на Signal-у. Надоградите пакет резервних копија да бисте могли да користите ову функционалност. - Subscribe for %1$s/month + Претплатите се за %1$s месечно - This media is no longer available + Овај медиј више није доступан - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Ваш тренутни пакет за резервне копије на Signal-у обухвата најскорији период од %1$d дана медија. Да бисте започели креирање резервних копија свих медија, надоградите се сада. + Ваш тренутни пакет за резервне копије на Signal-у обухвата најскорији период од %1$d дана медија. Да бисте започели креирање резервних копија свих медија, надоградите се сада. - Subscribe for %1$s/month + Претплатите се за %1$s месечно Брисање је сада синхронизовано на свим вашим уређајима @@ -7413,11 +7561,13 @@ Врста резервне копије је промењена, а претплата је отказана - Претплата је отказана + Subscription canceled Преузимање је завршено Резервна копија ће бити направљена преко ноћи. + + Subscription inactive План за резервне копије @@ -7426,8 +7576,12 @@ %1$s месечно Овај план за резервне копије је бесплатан - + Обнавља се на дан %1$s + + Expires on %1$s + + Expired on %1$s Направите резервне копије историје порука да не бисте изгубили податке када набавите нови телефон или поново инсталирате Signal. @@ -7472,6 +7626,10 @@ Ручно прави резервне копије Унесите PIN, лозинку или шаблон за уређај. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 6a3451f57b..646603aff3 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -368,6 +368,8 @@ Chattar Meddelanden + + Chat types Meddelande %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Du är redo. Starta din säkerhetskopiering nu. Beroende på hur stor din säkerhetskopia är kan detta ta lång tid. Du kan använda din telefon som vanligt medan säkerhetskopieringen pågår. @@ -1969,6 +1971,7 @@ + %1$d inbjuden + %1$d inbjudna + %1$d ytterligare grupp %1$d ytterligare grupper @@ -1995,6 +1998,7 @@ Ingen enhet hittades. Nätverksfel. Ogiltig QR-kod. + Tyvärr har du för många enheter redan länkade, prova att ta bort en del Tyvärr, detta är ingen giltig QR-kod för enhetslänkning. Länka en Signal-enhet? @@ -2017,11 +2021,13 @@ Skicka lösenord Fel lösenord! Lås upp Signal + Signal Android - Låsskärm Karta + Släpp stift Acceptera adress @@ -2525,6 +2531,7 @@ Signal-meddelande + Mer @@ -2556,6 +2563,7 @@ Inga klistermärken installerade Klistermärken från inkommande meddelanden visas här Utan titel + Okänt @@ -2777,6 +2785,7 @@ Media är inte längre tillgängligt. Det gick inte att spela upp media. + Fel vid sökning av meddelande Det går inte att hitta en app som kan dela detta medium. Stäng @@ -2848,6 +2857,7 @@ Meddelanden Samtal + Misslyckanden Säkerhetskopior Låsstatus @@ -2857,6 +2867,7 @@ Okänd Röstanteckningar Kontakt anslöt sig till Signal + Ingen aktivitet tillgänglig för att öppna inställningar för aviseringskanaler. Bakgrundsanslutning @@ -3641,10 +3652,12 @@ All meddelandehistorik kommer att tas bort permanent från alla enheter. Denna åtgärd kan inte ångras. Ta bort allt nu + För alltid 1 år 6 månader 30 dagar + Ingen %1$s meddelande @@ -3669,6 +3682,7 @@ Visa Rington Teckenstorlek för meddelanden + Prioritet Felsök aviseringar @@ -3897,6 +3911,7 @@ Skanna betalningsmottagarens adress-QR-kod + Förfrågan Betala Tillgängligt saldo: %1$s @@ -4028,6 +4043,7 @@ Du kan bara nåla %1$d chattar + Kontaktfoto Arkiverad @@ -4036,6 +4052,10 @@ Ny chatt Öppna kameran Inga chattar ännu.\nKom igång genom att skriva till en vän. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Säkerhetskopior av chattar Överför konto Överför konto till en ny Android-enhet + Ange lösenord för säkerhetskopian Återställ Kan ej importera backuper från nyare Signal-versioner @@ -4475,6 +4496,7 @@ Det gick inte att öppna Wi-Fi-inställningar. Aktivera Wi-Fi manuellt. + Bevilja platsbehörighet Aktivera platstjänster Aktivera Wi-Fi @@ -4728,6 +4750,7 @@ Dela + Skicka , %1$s @@ -5031,6 +5054,119 @@ Tangentbord Skicka med Retur + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Meddelanden @@ -5115,6 +5251,7 @@ Mediekvalitet + Skickade mediekvalitet Om du skickar högkvalitativa medier kommer du att använda mera data. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Ditt abonnemang för säkerhetskopiering har upphört - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Din säkerhetskopieringsplan har upphört eftersom den inte kunde förnyas med din nuvarande betalningsmetod. Om %1$d dag kommer media i din säkerhetskopia att tas bort. + Din säkerhetskopieringsplan har upphört eftersom den inte kunde förnyas med din nuvarande betalningsmetod. Om %1$d dagar kommer media i din säkerhetskopia att tas bort. Du kan när som helst börja betala för säkerhetskopiering igen för att fortsätta säkerhetskopiera alla dina medier. @@ -7257,9 +7394,9 @@ Om du väljer Hoppa över kommer media i säkerhetskopian att tas bort om %1$d dagar. - Your backups subscription failed to renew + Ditt abonnemang för säkerhetskopiering kunde inte förnyas - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Kontrollera att din betalningsmetod är uppdaterad. Tryck på Hantera abonnemang och tryck på Uppdatera under Betalningsmetoder. Det gick inte slutföra säkerhetskopieringen @@ -7271,7 +7408,7 @@ Hantera abonnemang - Subscribe for %1$s/month + Prenumerera för %1$s/månad Ladda ner media nu @@ -7306,6 +7443,17 @@ %1$s av %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Lagringsoptimering kan endast användas med den betalda nivån av Säkerhetskopiering av Signal. Uppgradera din säkerhetskopieringsplan för att börja använda den här funktionen. - Subscribe for %1$s/month + Prenumerera för %1$s/månad - This media is no longer available + Den här mediafilen är inte längre tillgänglig. - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Din nuvarande plan för Signal-säkerhetskopiering inkluderar din senaste %1$d dags media. Uppgradera nu för att börja säkerhetskopiera alla dina media. + Din nuvarande plan för Signal-säkerhetskopiering inkluderar dina senaste %1$d dagars media. Uppgradera nu för att börja säkerhetskopiera alla dina media. - Subscribe for %1$s/month + Prenumerera för %1$s/månad Radering synkroniseras nu mellan alla dina enheter @@ -7413,11 +7561,13 @@ Typ av säkerhetskopia har ändrats och abonnemanget har sagts upp - Abonnemang uppsagt + Subscription canceled Nerladdning slutförd Säkerhetskopia kommer att skapas över natten. + + Subscription inactive Säkerhetskopieringsplan @@ -7426,8 +7576,12 @@ %1$s/månad Din säkerhetskopieringsplan är gratis - + Förnyas %1$s + + Expires on %1$s + + Expired on %1$s Säkerhetskopiera din meddelandehistorik så att du aldrig förlorar data när du skaffar en ny telefon eller installerar om Signal. @@ -7472,6 +7626,10 @@ Manuell säkerhetskopiering Ange din enhets pinkod, lösenord eller mönster. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-sw/strings.xml b/app/src/main/res/values-sw/strings.xml index 642bc31be8..4b0f58ad75 100644 --- a/app/src/main/res/values-sw/strings.xml +++ b/app/src/main/res/values-sw/strings.xml @@ -368,6 +368,8 @@ Gumzo Jumbe + + Chat types Ujumbe %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Umemaliza. Anza kuhifadhi nakala yako sasa. Kutegemeana na ukubwa wa hifadhi nakala yako, hii inaweza kuchukua muda mrefu. Unaweza kutumia simu yako kama kawaida wakati uhifadhi nakala unaendelea. @@ -1969,6 +1971,7 @@ +%1$d amekaribishwa +%1$d umealikwa + Kikundi %1$d cha ziada Vikundi %1$dvya ziada @@ -1995,6 +1998,7 @@ Hakuna kifaa kilichopatikana Hitilafu ya kimtandao Msimbo wa QR sio sahihi + Samahani, una vifaa vingi vilivyounganishwa tayari, jaribu kuondoa baadhi Samahani, hiki sio kiungo halali cha msimbo wa QR kwa kifaa Unganisha kifaa cha Signal @@ -2017,11 +2021,13 @@ Wasilisha nenosiri Nenosiri sio sahihi Fungua Signal + Signal Android - Kufunga Skrini Ramani + Weka nambari ya siri Kubali anwani @@ -2525,6 +2531,7 @@ Ujumbe wa Signal + Zaidi @@ -2556,6 +2563,7 @@ Hakuna vibandiko vilivyosakinishwa Vibandiko kutoka kwa jumbe zinazoingia zitaonekana hapa Haina kichwa + Isiyojulikana @@ -2777,6 +2785,7 @@ Media haipatikani tena. Imeshindikana kuchezesha video. + Hitilafu katika kutafuta Ujumbe. Hatujapata programu inayoweza kushiriki media hii. Funga @@ -2848,6 +2857,7 @@ Jumbe Simu + Zilizoshindwa Nakalahifadhi Funga hali @@ -2857,6 +2867,7 @@ Isiyojulikana Vidokezo vya Sauti Mwasiliani amejiunga na Signal + Hakuna shughuli inayopatikana ili kufungua mipangilio ya kituo cha arifa. Muunganisho wa Mandharinyuma @@ -3641,10 +3652,12 @@ Historia ya jumbe zote itaondolewa kwenye vifaa vyote. Kitendo hiki hakitenguliwi. Futa zote sasa + Daima Mwaka 1 Miezi 6 Siku 30 + Hakuna Ujumbe %1$s @@ -3669,6 +3682,7 @@ Onyesha Mlio wa simu ukubwa wa maandishi ya ujumbe + Kipaumbele Arifa za utatuzi @@ -3897,6 +3911,7 @@ Changanua msimbo wa QR ya anwani ya anayelipa + Omba Lipa Salio linalopatikana: %1$s @@ -4028,6 +4043,7 @@ Unaweza kubandika hadi gumzo %1$d tu + Picha ya mwasiliani Jalidiwa @@ -4036,6 +4052,10 @@ Gumzo mpya Fungua Kamera Bado hakuna gumzo.\nAnza kwa kumtumia rafiki ujumbe. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Nakalahifadhi ya Gumzo Hamisha akaunti Hamishia akaunti kwenye kifaa kipya cha Android + ingiza nenosiri la nakalahifadhi Rejesha Haihamishi hifadhi nakala toka matoleo mapya ya Signal @@ -4475,6 +4496,7 @@ Imeshindwa kufungua Mipangilio ya Wi-Fi. Tafadhali washa Wi-Fi mwenyewe. + Ruhusu ufikiaji maelezo ya eneo Washa huduma za eneo Washa Wi-Fi @@ -4728,6 +4750,7 @@ Shiriki + Tuma , %1$s @@ -5031,6 +5054,119 @@ Kibodi Tuma kwa kubofya enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Jumbe @@ -5115,6 +5251,7 @@ Ubora wa Media + Ubora wa media iliyotumwa Kutuma media za ubora wa juu kutatumia data zaidi. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Usajili wako wa kuhifadhi nakala umekwisha muda - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Mpango wako wa kuhifadhi nakala umeisha muda kwa sababu haukuweza kusasishwa kwa kutumia njia yako ya malipo ya sasa hivi. Baada ya siku %1$d, picha na video kwenye hifadhi yako zitafutwa. + Mpango wako wa kuhifadhi nakala umeisha muda kwa sababu haukuweza kusasishwa kwa kutumia njia yako ya malipo ya sasa hivi. Baada ya siku %1$d, picha na video kwenye hifadhi yako zitafutwa. Unaweza kuanza kulipia nakala muda wowote ule ili kuendelea kuhifadhi nakala ya video na picha zako. @@ -7257,9 +7394,9 @@ Ukichagua \"Ruka\" picha na video kwenye nakala yako itafutwa ndani ya siku %1$d. - Your backups subscription failed to renew + Usajili wako wa uhifadhi nakala umeshindwa kusasisha - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Angalia kuhakikisha njia yako ya malipo imesasishwa. Gusa Dhibiti usajili na chini ya Njia za malipo gusa Sasisha. Imeshindwa kumaliza nakala @@ -7271,7 +7408,7 @@ Ratibu usajili - Subscribe for %1$s/month + Sajili kwa %1$s/mwezi Pakua video na picha sasa @@ -7306,6 +7443,17 @@ %1$s kwa %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Uboreshaji wa nafasi ya hifadhi inaweza tu kutumiwa na walipaji wa huduma ya Uhifadhi Nakala kwa Signal. Sasisha mpango wako wa uhifadhi nakala ili uanze kutumia kipengele hiki. - Subscribe for %1$s/month + Sajili kwa %1$s/mwezi - This media is no longer available + Video hii haipatikani tena - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Mpango wako wa sasa wa kuhifadhi nakala wa Signal unajumuisha picha na video zako za hivi majuzi za siku %1$d. Ili kuanza kuhifadhi nakala za picha na video zako zote, sasisha sasa. + Mpango wako wa sasa wa kuhifadhi nakala wa Signal unajumuisha picha na video zako za hivi majuzi za siku %1$d. Ili kuanza kuhifadhi nakala za picha na video zako zote, sasisha sasa. - Subscribe for %1$s/month + Sajili kwa %1$s/mwezi Kufuta sasa kumeunganishwa kwenye vifaa vyao vyote @@ -7413,11 +7561,13 @@ Aina ya chelezo imebadilika na usajili umeghairishwa - Usajili umeghairishwa + Subscription canceled Upakuaji umekamilika Hifadhi nakala itaundwa usiku. + + Subscription inactive Mpango wa uhifadhi nakala @@ -7426,8 +7576,12 @@ %1$s/mwezi Mpango wako wa uhifadhi nakala ni bure - + Kuhuishwa %1$s + + Expires on %1$s + + Expired on %1$s Hifadhi nakala ya historia ya jumbe wako ili usiwahi kupoteza data unapopata simu mpya au kusakinisha upya Signal. @@ -7472,6 +7626,10 @@ Fanya chelezo mwenyewe Tafadhali ingiza nenosiri, pini au alama ya kifaa chako. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index 4b641a73b4..9ad30487e7 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -368,6 +368,8 @@ சாட்ஸ் மெசேஜ்கள் + + Chat types செய்தி %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + நீங்கள் தயாராக உள்ளீர்கள். உங்கள் காப்புப்பிரதியை இப்போதே துவங்குக. உங்கள் காப்புப்பிரதியின் அளவைப் பொறுத்து, இதற்கு நீண்ட நேரம் ஆகலாம். காப்புப்பிரதி எடுக்கப்படும்போது நீங்கள் வழக்கம் போல் உங்கள் தொலைபேசியைப் பயன்படுத்தலாம். @@ -1969,6 +1971,7 @@ +%1$dஅழைக்கப்பட்டிருக்கிறார்கள் +%1$d அழைக்கப்பட்டிருக்கிறார்கள்  + %1$d கூடுதல் குழு %1$d கூடுதல் குழு @@ -1995,6 +1998,7 @@ எந்த சாதனமும் காணப்படவில்லை. இணையத்தில் பிழை. QR குறியீடு செல்லாது. + மன்னிக்கவும், ஏற்கனவே பல சாதனங்கள் இணைக்கப்பட்டுள்ளது, சிலவற்றை வெளியேற்றவும் … மன்னிக்கவும், இது சரியான சாதன இணைப்பு QR குறியீடு அல்ல. Signal சாதனத்தை இணைக்கவா? @@ -2017,11 +2021,13 @@ கடவுச்சொல்லை சமர்ப்பிக்க தவறான கடவுச்சொல்! Signal லைத் திற + Signal ஆண்ட்ராய்டு - திரைப் பூட்டு வரைபடம் + கடவை கைவிடு முகவரியை ஒப்புக்கொள் @@ -2525,6 +2531,7 @@ Signal செய்தி + மேலும் @@ -2556,6 +2563,7 @@ ஸ்டிக்கர்கள் எதுவும் நிறுவப்படவில்லை உள்வரும் செய்திகளின் ஒட்டிகள் இங்கே தோன்றும் பெயரிடாத + முன் தெரிந்திராத @@ -2777,6 +2785,7 @@ இந்த ஊடகம் சேமிப்பகத்தில் இல்லை. மீடியாவை இயக்க முடியவில்லை. + செய்தியைக் கண்டறிவதில் பிழை. இந்த மீடியாவைப் பகிரக்கூடிய பயன்பாட்டைக் கண்டுபிடிக்க முடியவில்லை. நெருக்கமான @@ -2848,6 +2857,7 @@ செய்திகள் அழைப்புகள் + தோல்விகள் காப்புப் பிரதிகள் பூட்டு நிலை @@ -2857,6 +2867,7 @@ முன் தெரிந்திராத குரல் குறிப்புகள் தொடர்பு Signal இல் இணைந்தது  + இல்லை செயல்பாடு கிடைக்கிறது திறந்த அறிவிப்பு சேனல் அமைப்புகள். பின்னணி இணைப்பு @@ -3641,10 +3652,12 @@ எல்லா மெசேஜ் வரலாறும் அனைத்து சாதனங்களிலிருந்தும் நிரந்தரமாக அகற்றப்படும். இந்தச் செயலைச் செயல்தவிர்க்க முடியாது. அனைத்தையும் இப்போது நீக்கு + என்றென்றும் 1 வருடம் 6 மாதங்கள் 30 நாட்கள் + எதுவும் இல்லை %1$s மெசேஜ் @@ -3669,6 +3682,7 @@ காட்டு ரிங்டோன் செய்தி எழுத்துரு அளவு + முன்னுரிமை அறிவிப்புகளை சரிசெய்தல் @@ -3897,6 +3911,7 @@ ஊடுகதிர் முகவரி க்யு ஆர் குறியீடு செலுத்துபவரின் + கோரிக்கை செலுத்துங்கள் கிடைக்கிறது சமநிலை: %1$s @@ -4028,6 +4043,7 @@ நீங்கள் %1$d சாட்ஸ் வரை மட்டுமே பின் செய்ய முடியும் + தொடர்பின் புகைப்படம் பெட்டகப்படுத்தப்பட்டது @@ -4036,6 +4052,10 @@ புதிய சாட் புகைப்படக்கருவியை திறக்கவும் இதுவரை சாட்ஸ் எதுவும் இல்லை.\nநண்பருக்கு மெசேஜ் அனுப்புவதன் மூலம் தொடங்கவும். + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ சாட் காப்புப்பிரதிகள் Signal கணக்கை நகர்த்தவும் கணக்கை புதிய சாதனத்திற்கு நகர்த்தவும் + காப்புப்பதிவு பயனர் தரவு கடவுச்சொற்றொடரை உள்ளிடவும் மீட்க Signal இன் புதிய பதிப்புகளில் பேக்அப்களை இறக்க முடியாது @@ -4475,6 +4496,7 @@ வைஃபை அமைப்புகளைத் திறக்க முடியவில்லை. கைமுறையாக வைஃபை இயக்கவும். + இருப்பிடத்தை வழங்கவும் அனுமதி இயக்கவும் இருப்பிட சேவை இயக்கவும் வைஃபை @@ -4728,6 +4750,7 @@ பகிர் + அனுப்புக , %1$s @@ -5031,6 +5054,119 @@ விசைப்பலகை உள்ளிடுக மூலம் அனுப்புக + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done செய்திகள் @@ -5115,6 +5251,7 @@ மீடியா தரம் + அனுப்பிய மீடியா தரம் உயர்தரத்தை அனுப்புகிறது ஊடகம் அதிக தரவைப் பயன்படுத்தும். @@ -7235,11 +7372,11 @@ - Your backups subscription expired + உங்கள் காப்புப்பிரதிகளின் சந்தா காலாவதியாகிவிட்டது - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + உங்களின் தற்போதைய கட்டண முறையில் புதுப்பிக்க முடியாததால், எங்கள் காப்புப் பிரதி திட்டம் காலாவதியானது. %1$d நாள் கழித்து, உங்கள் காப்புப்பிரதியில் உள்ள மீடியா அழிக்கப்படும். + உங்களின் தற்போதைய கட்டண முறையில் புதுப்பிக்க முடியாததால், எங்கள் காப்புப் பிரதி திட்டம் காலாவதியானது. %1$d நாட்கள் கழித்து, உங்கள் காப்புப்பிரதியில் உள்ள மீடியா அழிக்கப்படும். உங்கள் எல்லா மீடியாவையும் தொடர்ந்து பேக்கப் எடுப்பதற்கு எந்த நேரத்திலும் பேக்கப்பிற்கு மீண்டும் பணம் செலுத்தத் தொடங்கலாம். @@ -7257,9 +7394,9 @@ \"தவிர்\" என்பதைத் தேர்வுசெய்தால், உங்கள் பேக்கப்பில் உள்ள ஊடகம் %1$d நாட்களில் அழிக்கப்படும். - Your backups subscription failed to renew + உங்கள் காப்புப் பிரதிகள் சந்தாவைப் புதுப்பிக்க முடியவில்லை - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + உங்கள் கட்டண முறை புதுப்பித்த நிலையில் உள்ளதா எனச் சரிபார்க்கவும். சந்தாவை நிர்வகி என்பதை அழுத்தவும் மற்றும் கட்டண முறைகளின் கீழ் புதுப்பி என்பதை அழுத்தவும். பேக்கப்பை நிறைவு செய்ய முடியவில்லை @@ -7271,7 +7408,7 @@ சந்தாவை நிர்வகி - Subscribe for %1$s/month + மாதத்திற்கு %1$s க்கு சப்ஸ்கிரைப் செய்க இப்போதே மீடியாவைப் பதிவிறக்கு @@ -7306,6 +7443,17 @@ %2$s இன் %1$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ சிக்னல் காப்புப்பிரதிகளின் கட்டண அடுக்குடன் மட்டுமே சேமிப்பக மேம்படுத்துதலைப் பயன்படுத்த முடியும். இந்த அம்சத்தைப் பயன்படுத்தத் தொடங்க, உங்கள் காப்புப்பிரதித் திட்டத்தை அப்கிரேட் செய்யவும். - Subscribe for %1$s/month + மாதத்திற்கு %1$s க்கு சப்ஸ்கிரைப் செய்க - This media is no longer available + இந்த மீடியா இனி கிடைக்கப்பெறாது - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + உங்களின் தற்போதைய சிக்னல் காப்புப் பிரதி திட்டத்தில் மிகச் சமீபத்திய %1$d நாள் மீடியா காணப்படும். உங்கள் எல்லா மீடியாவையும் காப்புப் பிரதி எடுக்கத் தொடங்க, இப்போதே மேம்படுத்தவும். + உங்களின் தற்போதைய சிக்னல் காப்புப் பிரதி திட்டத்தில் மிகச் சமீபத்திய %1$d நாட்கள் மீடியா காணப்படும். உங்கள் எல்லா மீடியாவையும் காப்புப் பிரதி எடுக்கத் தொடங்க, இப்போதே மேம்படுத்தவும். - Subscribe for %1$s/month + மாதத்திற்கு %1$s க்கு சப்ஸ்கிரைப் செய்க இப்போது உங்களின் அனைத்து சாதனங்களிலும் அழித்தல் அம்சம் ஒத்திசைக்கப்பட்டுள்ளது @@ -7413,11 +7561,13 @@ காப்புப்பிரதி வகை மற்றும் சந்தா ரத்து செய்யப்பட்டன - சந்தா ரத்துசெய்யப்பட்டது + Subscription canceled பதிவிறக்கம் முடிக்கப்பட்டது ஒரு இரவிற்குள் காப்புப்பிரதி உருவாக்கப்படும். + + Subscription inactive காப்புப்பிரதி திட்டம் @@ -7426,8 +7576,12 @@ %1$s/மாதம் உங்கக் காப்புப்பிரதி திட்டம் இலவசமாக உள்ளது - + %1$s அன்று புதுப்பிக்கப்படும் + + Expires on %1$s + + Expired on %1$s உங்கள் செய்தி வரலாற்றைக் காப்புப் பிரதி எடுக்கவும், எனவே நீங்கள் புதிய தொலைபேசியைப் பெறும்போது அல்லது சிக்னலை மீண்டும் நிறுவும்போது தரவை இழக்க மாட்டீர்கள். @@ -7472,6 +7626,10 @@ கைமுறையாகக் காப்புப்பிரதி எடுத்தல் உங்கள் சாதனத்தின் பின், கடவுச்சொல் அல்லது வடிவத்தை உள்ளிடவும். + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-te/strings.xml b/app/src/main/res/values-te/strings.xml index 15841107d7..5945f396be 100644 --- a/app/src/main/res/values-te/strings.xml +++ b/app/src/main/res/values-te/strings.xml @@ -368,6 +368,8 @@ చాట్‌లు సందేశాలు + + Chat types %1$sకి సందేశం పంపు @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + మీరు అంతా సిద్ధంగా ఉన్నారు. మీ బ్యాకప్‌ను ఇప్పుడే ప్రారంభించండి. మీ బ్యాకప్ పరిమాణంపై ఆధారపడి, దీనికి ఎక్కువ సమయం పట్టవచ్చు. బ్యాకప్ జరుగుతున్నప్పుడు మీరు మీ ఫోన్‌ను ఎప్పటిలానే మామూలుగా ఉపయోగించవచ్చు. @@ -1969,6 +1971,7 @@ +%1$d ఆహ్వానించారు +%1$d ఆహ్వానించారు + %1$d అదనపు సమూహం %1$d అదనపు సమూహాలు @@ -1995,6 +1998,7 @@ పరికరం కనుగొనబడలేదు. నెట్వర్క్ లోపం. చెల్లని QR కోడ్. + క్షమించండి,మీరు చాల పరికరాలను అనుసంధానం చేసారు, కొన్ని తొలగించడానికి ప్రయత్నించండి. క్షమించండి,ఇది ఒక చెల్లని అనుసంధానం చేసిన పరికరం యొక్క QR కోడ్. ఒక Signal పరికరం లింక్ చేయాలా? @@ -2017,11 +2021,13 @@ సంకేతపదమును సమర్పించండి చెల్లని సంకేతపదము! అన్లాక్ Signal + Signal Android - లాక్ స్క్రీన్ పటం + డ్రాప్ పిన్ చిరునామాను అంగీకరించండి @@ -2525,6 +2531,7 @@ Signal సందేశం + మరింత @@ -2556,6 +2563,7 @@ స్టిక్కర్లు వ్యవస్థాపించబడలేదు ఇన్కమింగ్ సందేశాల నుండి స్టిక్కర్లు ఇక్కడ కనిపిస్తాయి శీర్షికలేని + తెలియని @@ -2777,6 +2785,7 @@ మీడియా ఇకపై అందుబాటులో లేదు. మీడియాను ప్లే చేయలేకపోయింది. + సందేశాన్ని కనుగొనడంలో లోపం. ఈ మీడియాను భాగస్వామ్యం చేయగల అనువర్తనాన్ని కనుగొనలేకపోయాము. మూసివెయ్యి @@ -2848,6 +2857,7 @@ సందేశాలు కాల్స్ + వైఫల్యాలు ప్రత్యామ్నాయములు స్థితి లాక్ @@ -2857,6 +2867,7 @@ తెలియని స్వర గమనికలు పరిచయం Signal లొ చేరారు + నోటిఫికేషన్ ఛానల్ సెట్టింగ్‌లు ఓపెన్ చేయడానికి ఎలాంటి యాక్టివిటీ లభ్యం కావడం లేదు. బ్యాక్‌గ్రౌండ్ కనెక్షన్ @@ -3641,10 +3652,12 @@ అన్ని పరికరాల నుండి మొత్తం సందేశ చరిత్ర శాశ్వతంగా తొలగించబడుతుంది. ఈ చర్య రద్దు చేయబడదు. ఇప్పుడు అన్నీ తొలిగించండి + ఎప్పటికీ 1 సంవత్సరం 6 నెలలు 30 రోజులు + ఏదీ కాదు %1$s సందేశం @@ -3669,6 +3682,7 @@ కనబర్చు రింగ్టోన్ సందేశం ఫాంట్ పరిమాణం + ప్రాధాన్యత నోటిఫికేషన్‌లను పరిష్కరించండి @@ -3897,6 +3911,7 @@ పేయీ యొక్క చిరునామా QR కోడ్‌ని స్కాన్ చేయండి + అభ్యర్థన చెల్లించండి లభ్యమవుతున్న బ్యాలెన్స్: %1$s @@ -4028,6 +4043,7 @@ మీరు %1$d చాట్‌ల వరకు మాత్రమే పిన్ చేయవచ్చు + పరిచయ ఫొటొ చిత్రం భద్రపరచబడినది @@ -4036,6 +4052,10 @@ కొత్త చాట్ కెమెరా తెరువు ఇంకా చాట్‌లు లేవు.\nఒక స్నేహితుడికి సందేశం పంపడం ద్వారా ప్రారంభించండి. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ చాట్ బ్యాకప్‌లు ఖాతాను బదిలీ చేయడం ఖాతాను కొత్త Android పరికరానికి బదిలీ చేయండి + ప్రత్యామ్నాయ పాస్ఫ్రేజ్ని నమోదు చేయండి పునరుద్ధరించు Signal నూతన వెర్షన్ల నుండి బ్యాకప్స్ దిగుమతి చేయలేరు @@ -4475,6 +4496,7 @@ Wi-Fi సెట్టింగ్‌లు ఓపెన్ చేయలేకపోయింది. దయచేసి Wi-Fiని మాన్యువల్‌గా ఆన్ చేయండి. + లొకేషన్ పర్మిషన్‌ని మంజూరు చేయండి లొకేషన్ సర్వీస్‌లను ఆన్ చేయండి Wi-Fi టర్న్ ఆన్ చేయండి @@ -4728,6 +4750,7 @@ పంచుకోండి + పంపు , %1$s @@ -5031,6 +5054,119 @@ కీబోర్డ్ ఎంటర్‌తో పంపించండి + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done సందేశాలు @@ -5115,6 +5251,7 @@ మీడియా నాణ్యత + పంపిన మీడియా నాణ్యత అధిక నాణ్యత కలిగిన మీడియాను పంపడం వల్ల మరింత డేటా ఉపయోగించబడుతుంది. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + మీ బ్యాకప్‌ల సబ్స్క్రిప్షన్ గడువు ముగిసింది - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + మీ బ్యాకప్ ప్లాన్ గడువు ముగిసింది ఎందుకంటే అది మీ ప్రస్తుత చెల్లింపు విధానంతో పునరుద్ధరించడం సాధ్యం కాదు. %1$d రోజు తర్వాత, మీ బ్యాకప్‌లోని మీడియా తొలగించబడుతుంది. + మీ బ్యాకప్ ప్లాన్ గడువు ముగిసింది ఎందుకంటే అది మీ ప్రస్తుత చెల్లింపు విధానంతో పునరుద్ధరించడం సాధ్యం కాదు.%1$d రోజుల తర్వాత, మీ బ్యాకప్‌లోని మీడియా తొలగించబడుతుంది. మీ మీడియాను అంతా బ్యాకప్ చేయడం కొనసాగించడానికి మీరు ఏ సమయంలోనైనా బ్యాకప్‌ల కోసం మళ్ళీ చెల్లించడం ప్రారంభించవచ్చు. @@ -7257,9 +7394,9 @@ ఒక వేళ మీరు \"స్కిప్\" ను ఎంచుకుంటే మీ బ్యాకప్లో ఉన్న మీడియా %1$d రోజులలో తొలగించబడుతుంది. - Your backups subscription failed to renew + మీ బ్యాకప్‌ల సబ్స్క్రిప్షన్ పునరుద్ధరించబడడంలో విఫలమైంది - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + మీ చెల్లింపు విధానం అప్ టు డేట్ గా ఉందో లేదో తనిఖీ చేయండి. మేనేజ్ సబ్స్క్రిప్షన్ ను తట్టండి మరియు చెల్లింపు విధానాల కింద అప్‌డేట్ తట్టండి. బ్యాకప్‌ను పూర్తి చేయలేకపోయాము @@ -7271,7 +7408,7 @@ సబ్‌స్క్రిప్షన్‌ను నిర్వహించండి - Subscribe for %1$s/month + %1$s/నెలకు సబ్‌స్క్రైబ్ చేయండి ఇప్పుడే మీడియాను డౌన్‌లోడ్ చేయండి @@ -7306,6 +7443,17 @@ %1$s ఆఫ్ %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ నిల్వ అనుకూలత Signal బ్యాకప్‌ల చెల్లింపు శ్రేణితో మాత్రమే ఉపయోగించడానికి సాధ్యం అవుతుంది. ఈ విలక్షణత ఉపయోగించడం ప్రారంభించడానికి మీ బ్యాకప్ ప్లాన్ అప్‌గ్రేడ్ చేయండి. - Subscribe for %1$s/month + %1$s/నెలకు సబ్‌స్క్రైబ్ చేయండి - This media is no longer available + ఈ మీడియా ఇకపై అందుబాటులో లేదు - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + మీ ప్రస్తుత Signal బ్యాకప్ ప్లాన్ మీ ఇటీవలి %1$d రోజు మీడియా ను కలిగి ఉంది. మీ మొత్తం మీడియాను బ్యాకప్ చేయడం ప్రారంభించడానికి, ఇప్పుడే అప్‌గ్రేడ్ చేయండి. + మీ ప్రస్తుత సిగ్నల్ బ్యాకప్ ప్లాన్ మీ ఇటీవలి %1$d రోజుల మీడియాను కలిగి ఉంది. మీ మొత్తం మీడియాను బ్యాకప్ చేయడం ప్రారంభించడానికి, ఇప్పుడే అప్‌గ్రేడ్ చేయండి. - Subscribe for %1$s/month + %1$s/నెలకు సబ్‌స్క్రైబ్ చేయండి తొలగించడం ఇప్పుడు మీ అన్ని పరికరాలలో సింక్ చేయబడింది @@ -7413,11 +7561,13 @@ బ్యాకప్ రకం మారింది, సబ్స్క్రిప్షన్ రద్దు అయ్యింది - సబ్స్క్రిప్షన్ రద్దు చేయబడింది + Subscription canceled డౌన్‌లోడ్ పూర్తయింది బ్యాకప్ రాత్రికి రాత్రి సృష్టించబడుతుంది. + + Subscription inactive బ్యాకప్ ప్రణాళిక @@ -7426,8 +7576,12 @@ %1$s/నెల మీ బ్యాకప్ ప్రణాళిక ఉచితం - + %1$s ను పునరుద్ధరిస్తుంది + + Expires on %1$s + + Expired on %1$s మీ సందేశ చరిత్రను బ్యాకప్ చేసుకోండి దానివల్ల మీరు కొత్త ఫోన్ కొన్నప్పుడు గానీ లేదా Signal ను తిరిగి ఇన్‌స్టాల్ చేసినప్పుడు గానీ డేటాను ఎప్పటికీ కోల్పోరు. @@ -7472,6 +7626,10 @@ మాన్యువల్‌గా బ్యాకప్ చేయండి దయచేసి మీ పరికరం PIN, పాస్‌వర్డ్ లేదా ప్యాటర్న్ ఎంటర్ చేయండి. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index 74061b9a49..91451fd233 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -365,6 +365,8 @@ แชท ข้อความ + + Chat types ข้อความ %1$s @@ -796,7 +798,7 @@ - You\'re all set. Start your backup now. + ตั้งค่าเรียบร้อย เริ่มสำรองข้อมูลของคุณได้เลย ขั้นตอนนี้อาจใช้เวลาค่อนข้างนาน ขึ้นอยู่กับขนาดของข้อมูลสำรอง โดยคุณสามารถใช้โทรศัพท์ได้ตามปกติในระหว่างที่ระบบกำลังสำรองข้อมูล @@ -1908,6 +1910,7 @@ +%1$d ได้รับเชิญ + %1$d กลุ่มเพิ่มเติม @@ -1933,6 +1936,7 @@ ไม่พบอุปกรณ์ ข้อผิดพลาดจากเครือข่าย รหัส QR ไม่ถูกรูปแบบ + ขออภัย คุณมีอุปกรณ์ที่เชื่อมโยงมากเกินไป ลองถอนการเชื่อมโยงจากบางอุปกรณ์ ขออภัย นี่ไม่ใช่รหัส QR สำหรับเชื่อมโยงอุปกรณ์ที่ถูกต้อง เชื่อมโยงกับอุปกรณ์ Signal หรือไม่? @@ -1954,11 +1958,13 @@ ส่งวลีรหัสผ่าน วลีรหัสผ่านไม่ถูกต้อง! ปลดล็อก Signal + Signal Android - หน้าล็อก แผนที่ + ปักหมุด ยอมรับที่อยู่ @@ -2440,6 +2446,7 @@ ข้อความ Signal + ดูเพิ่ม @@ -2471,6 +2478,7 @@ ไม่มีการติดตั้งสติกเกอร์ สติกเกอร์จากข้อความเข้าจะปรากฏที่นี่ ไม่มีชื่อ + ไม่ทราบ @@ -2691,6 +2699,7 @@ สื่อตัวนี้ไม่มีอยู่แล้ว ไม่สามารถเล่นสื่อได้ + เกิดข้อผิดพลาดในการหาข้อความ ไม่พบแอปที่แบ่งปันสื่อนี้ได้ ปิด @@ -2760,6 +2769,7 @@ ข้อความ การโทร + ความล้มเหลว ข้อมูลสำรอง สถานะล็อก @@ -2769,6 +2779,7 @@ ไม่ทราบ ข้อความเสียง มีผู้ติดต่อเริ่มใช้ Signal + ไม่มีกิจกรรมเพื่อเปิดการตั้งค่าเปิดการแจ้งเตือนช่อง การเชื่อมต่อพื้นหลัง @@ -3540,10 +3551,12 @@ ประวัติการส่งข้อความทั้งหมดจะถูกลบออกจากอุปกรณ์ทุกเครื่องอย่างถาวร การกระทำนี้ไม่สามารถยกเลิกได้ ลบทั้งหมดเดี๋ยวนี้ + ตลอดไป 1 ปี 6 เดือน 30 วัน + ไม่มี %1$s ข้อความ @@ -3567,6 +3580,7 @@ แสดง เสียงเรียกเข้า ขนาดอักษรของข้อความ + ความสำคัญ แก้ไขปัญหาเกี่ยวกับการแจ้งเตือน @@ -3795,6 +3809,7 @@ สแกนรหัส QR ที่อยู่ของผู้รับจ่าย + คำขอ จ่าย ยอดคงเหลือ: %1$s @@ -3925,6 +3940,7 @@ คุณปักหมุดแชทได้ %1$d รายการเท่านั้น + รูปภาพของผู้ติดต่อ ถูกเก็บเข้าที่เก็บถาวรแล้ว @@ -3933,6 +3949,10 @@ แชทใหม่ เปิดกล้อง ยังไม่มีแชท\nเริ่มต้นด้วยการส่งข้อความหาเพื่อนสักคน + + No chats to display + + Folder settings @@ -4157,6 +4177,7 @@ ข้อมูลสำรองของแชท ถ่ายโอนบัญชี ถ่ายโอนบัญชีไปยังอุปกรณ์ Android เครื่องใหม่ + ใส่วลีรหัสผ่านสำหรับข้อมูลสำรอง กู้คืน ไม่สามารถนำเข้าข้อมูลสำรองจาก Signal รุ่นที่ใหม่กว่า @@ -4364,6 +4385,7 @@ ไม่สามารถเปิดการตั้งค่า Wi-Fi ได้ กรุณาเปิดใช้งาน Wi-Fi ด้วยตนเอง + อนุญาตให้เข้าถึงตำแหน่ง เปิดการใช้งานการเข้าถึงตำแหน่ง เปิดใช้งาน Wi-Fi @@ -4610,6 +4632,7 @@ แบ่งปัน + ส่ง , %1$s @@ -4912,6 +4935,116 @@ แป้นพิมพ์ กด Enter เพื่อส่ง + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat types + + + + %1$d chats + + + + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done ข้อความ @@ -4995,6 +5128,7 @@ คุณภาพของสื่อ + ส่งคุณภาพสื่อแล้ว การส่งสื่อคุณภาพสูงจะใช้ข้อมูลมากขึ้น @@ -7079,10 +7213,10 @@ - Your backups subscription expired + แพ็กเกจสำรองข้อมูลของคุณหมดอายุแล้ว - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + แพ็กเกจสำรองข้อมูลของคุณหมดอายุเนื่องจากไม่สามารถใช้วิธีการชำระเงินที่คุณบันทึกไว้ในการต่ออายุได้ โดยไฟล์สื่อที่คุณสำรองข้อมูลไว้จะถูกลบภายใน %1$d วัน หากต้องการสำรองข้อมูลสื่อต่อ คุณสามารถเริ่มชำระเงินเพื่อสำรองข้อมูลอีกครั้งได้ทุกเมื่อ @@ -7099,9 +7233,9 @@ หากคุณเลือก \"ข้าม\" ไฟล์สื่อในข้อมูลสำรองของคุณจะถูกลบใน %1$d วัน - Your backups subscription failed to renew + ไม่สามารถต่ออายุแพ็กเกจสำรองข้อมูลของคุณ - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + โปรดตรวจสอบให้แน่ใจว่าคุณอัปเดตวิธีการชำระเงินแล้ว โดยแตะที่จัดการการเป็นสมาชิก แล้วแตะอัปเดตตรงหัวข้อวิธีการชำระเงิน การสำรองข้อมูลไม่เสร็จสมบูรณ์ @@ -7113,7 +7247,7 @@ จัดการการเป็นสมาชิก - Subscribe for %1$s/month + สมัครใช้งาน %1$s/เดือน ดาวน์โหลดสื่อเดี๋ยวนี้ @@ -7148,6 +7282,17 @@ %1$s จาก %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7201,17 +7346,17 @@ เริ่มใช้งานฟีเจอร์การเพิ่มประสิทธิภาพพื้นที่จัดเก็บ โดยอัปเกรดแพ็กเกจสำรองข้อมูลของคุณด้วยการชำระค่าสำรองข้อมูลของ Signal - Subscribe for %1$s/month + สมัครใช้งาน %1$s/เดือน - This media is no longer available + ไม่พบไฟล์สื่อนี้ - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + แพ็กเกจสำรองข้อมูล Signal ที่คุณใช้อยู่จะสำรองไฟล์สื่อจาก %1$d วันที่ผ่านมา โปรดอัปเกรดแพ็กเกจของคุณเพื่อเริ่มสำรองไฟล์สื่อทั้งหมด - Subscribe for %1$s/month + สมัครใช้งาน %1$s/เดือน การลบซิงค์เข้ากับอุปกรณ์ทุกเครื่องของคุณแล้ว @@ -7254,11 +7399,13 @@ เปลี่ยนประเภทของการสำรองข้อมูลและยกเลิกการสมัครแล้ว - ยกเลิกการสมัครแล้ว + Subscription canceled ดาวน์โหลดเสร็จสิ้น ระบบจะสำรองข้อมูลในช่วงกลางคืน + + Subscription inactive แพ็กเกจสำรองข้อมูล @@ -7267,8 +7414,12 @@ %1$s/เดือน แพ็กเกจสำรองข้อมูลที่คุณเลือกไม่มีค่าใช้จ่าย - + ต่ออายุ %1$s + + Expires on %1$s + + Expired on %1$s สำรองประวัติการส่งข้อความของคุณ ช่วยเก็บรักษาข้อมูลแม้ในกรณีที่คุณเปลี่ยนโทรศัพท์เครื่องใหม่หรือติดตั้ง Signal อีกครั้ง @@ -7313,6 +7464,10 @@ สำรองข้อมูลด้วยตัวเอง โปรดใส่ PIN, รหัสผ่าน หรือรูปแบบการวาดเส้นของอุปกรณ์คุณ + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-tl/strings.xml b/app/src/main/res/values-tl/strings.xml index b6a8a2ded5..f8f4f77f6f 100644 --- a/app/src/main/res/values-tl/strings.xml +++ b/app/src/main/res/values-tl/strings.xml @@ -368,6 +368,8 @@ Chats Messages + + Chat types Mensahe %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Ready ka na. Simulan na ang pag-backup. Depende sa size ng backup mo, maaari itong tumagal. Maaari mong gamitin ang iyong phone as usual habang isinasagawa ang backup. @@ -1969,6 +1971,7 @@ +%1$d invited +%1$d invited + %1$d additional group %1$d additional groups @@ -1995,6 +1998,7 @@ Walang device na nahanap. Nagka-error sa network. Hindi valid ang QR code. + Paumanhin, masyado ka nang maraming naka-link na device, subukang magtanggal ng ilan Paumanhin, hindi ito valid na QR code para sa pagli-link ng device. Mag-link ng Signal na device? @@ -2017,11 +2021,13 @@ Isumite ang passphrase Hindi valid ang passphrase! I-unlock ang Signal + Signal Andoid - Lock Screen Mapa + Maglagay ng pin Tanggapin ang address @@ -2525,6 +2531,7 @@ Mensahe sa Signal + More @@ -2556,6 +2563,7 @@ Walang naka-install na sticker Ang mga sticker mula sa mga paparating na mensahe ay lalabas dito Walang pamagat + Hindi alam @@ -2777,6 +2785,7 @@ Hindi na available ang media. Hindi ma-play ang media. + Nagka-error sa paghahanap ng message. Walang makitang app na pwedeng mag-share ng media na ito. Isara @@ -2848,6 +2857,7 @@ Mga Mensahe Mga Tawag + Mga kabiguan Mga backup Lock na status @@ -2857,6 +2867,7 @@ Hindi alam Voice Notes Sumali ang kontak sa Signal + Walang activity na available para i-open ang notification channel settings. Background connection @@ -3641,10 +3652,12 @@ Ang buong message history ay permanenteng tatanggalin. Hindi na pwedeng bawiin ang action na ito. Burahin na lahat + Forever 1 year 6 months 30 days + Wala %1$s message @@ -3669,6 +3682,7 @@ Ipakita Ringtone Laki ng font ng mensahe + Priyoridad I-troubleshoot ang notifications @@ -3897,6 +3911,7 @@ I-scan ang address QR code ng payee + Request Pay Available balance: %1$s @@ -4028,6 +4043,7 @@ Up to %1$d chats ang pwede mong i-pin + Larawang Imahe ng Kontak Nai-archive @@ -4036,6 +4052,10 @@ Bagong chat Buksan ang Camera Wala pang chats.\nMag-message ng friend para magsimula. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Chat backups Transfer account I-transfer ang account sa bagong Android device + Ilagay ang passphrase ng backup I-restore \'Di ma-import ang backups mula sa newer Signal versions @@ -4475,6 +4496,7 @@ Unable to open Wi-Fi Settings. I-turn on ang Wi-Fi manually. + Grant location permission I-turn on ang location services I-turn on ang Wi-Fi @@ -4728,6 +4750,7 @@ Ibahagi + Ipadala , %1$s @@ -5031,6 +5054,119 @@ Keyboard Mag-send gamit ang enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Mga Mensahe @@ -5115,6 +5251,7 @@ Media quality + Sent media quality Ang pag-send ng high quality media will use more data. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Expired na ang backups subscription mo - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Nag-expire na ang backup plan mo dahil hindi ito na-renew gamit ang current payment method mo. Mabubura ang media sa backup mo pagkatapos ng %1$d araw. + Nag-expire na ang backup plan mo dahil hindi ito na-renew gamit ang current payment method mo. Mabubura ang media sa backup mo pagkatapos ng %1$d araw. Maaari kang magbayad ulit para sa backups anumang oras para magpatuloy sa pag-back up ng lahat ng media mo. @@ -7257,9 +7394,9 @@ Kapag pinili mo ang \"Skip\", mabubura ang media sa backup mo pagkatapos ng %1$d na araw. - Your backups subscription failed to renew + Failed ang pag-renew ng backups subscription mo - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Siguraduhing updated ang payment method. I-tap ang Manage subscription at sa ilalim ng Payment methods, i-tap ang Update. Hindi makumpleto ang backup @@ -7271,7 +7408,7 @@ I-manage ang subscription - Subscribe for %1$s/month + Mag-subscribe. %1$s/month. I-download na ang media @@ -7306,6 +7443,17 @@ %1$s sa %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Ang storage optimization ay magagamit lamang sa paid tier ng Signal Backups. I-upgrade ang backup plan mo para masimulang gamitin ang feature na ito. - Subscribe for %1$s/month + Mag-subscribe. %1$s/month. - This media is no longer available + Hindi na available ang media na ito - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Kasama sa current Signal backup plan mo ang pinaka-recent na media noong nakaraang %1$d araw. Para simulan ang pag-back up ng lahat ng media mo, mag-upgrade na ngayon. + Kasama sa current Signal backup plan mo ang pinaka-recent na media noong nakaraang %1$d araw. Para simulan ang pag-back up ng lahat ng media mo, mag-upgrade na ngayon. - Subscribe for %1$s/month + Mag-subscribe. %1$s/month. Naka-sync na sa lahat ng devices mo ang pagbura ng messages @@ -7413,11 +7561,13 @@ Pinalitan ang uri ng backup at kinansela ang subscription - Cancelled ang subscription + Subscription canceled Tapos na ang pag-download Gagawin ang backup overnight. + + Subscription inactive Backup plan @@ -7426,8 +7576,12 @@ %1$s/buwan Free ang backup plan mo - + Mare-renew sa %1$s + + Expires on %1$s + + Expired on %1$s I-back up ang message history mo para hindi mawala ang data mo kapag nagpalit ka ng phone o ni-reinstall mo ang Signal. @@ -7472,6 +7626,10 @@ Manual na pag backup Ilagay ang iyong device pin, password o pattern. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 9a540bbb40..30cbac15b6 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -368,6 +368,8 @@ Sohbetler Mesajlar + + Chat types İleti %1$s @@ -816,7 +818,7 @@ - You\'re all set. Start your backup now. + Şimdi hazırsın. Yedeklemeni şimdi başlat. Yedeklemenin büyüklüğüne bağlı olarak bu işlem uzun sürebilir. Yedekleme gerçekleşirken telefonunu normal şekilde kullanabilirsin. @@ -1969,6 +1971,7 @@ +%1$d davetli +%1$d davetli + %1$d diğer grup %1$d diğer grup @@ -1995,6 +1998,7 @@ Hiç cihaz bulanamadı. Ağ hatası. Geçersiz karekod. + Üzgünüz, halihazırda bağlı olan çok fazla cihazınız var. Bazılarını kaldırmayı deneyin. Üzgünüz, bu geçerli bir cihaz bağlama karekodu değil. Bir Signal cihazı bağlansın mı? @@ -2017,11 +2021,13 @@ Parola gir Geçersiz parola! Signal\'in Kilidini Aç + Signal Android - Kilit Ekranı Harita + İşaretle Adresi onayla @@ -2525,6 +2531,7 @@ Signal İletisi + Daha fazla @@ -2556,6 +2563,7 @@ Yüklü çıkartma yok Gelen iletilerden aldığınız çıkartmalar burada gözükecektir İsimsiz + Bilinmeyen @@ -2777,6 +2785,7 @@ İçerik artık mevcut değil. Medya oynatılamıyor. + Mesaj bulma hatası. Bu içeriği paylaşabilen bir uygulama bulunamadı. Kapat @@ -2848,6 +2857,7 @@ İletiler Aramalar + Hatalar Yedekler Kilit durumu @@ -2857,6 +2867,7 @@ Bilinmeyen Sesli Notlar Kontaklarınızdan biri Signal\'e katıldı + Bildirim kanal ayarlarını açmak için mevcut bir faaliyet yok Arkaplan bağlantısı @@ -3641,10 +3652,12 @@ Tüm mesaj geçmişi cihazların hepsinden kalıcı olarak kaldırılacaktır. Bu eylem geri alınamaz. Tümünü hemen sil + Daima 1 yıl 6 ay 30 gün + Hiçbiri %1$s mesaj @@ -3669,6 +3682,7 @@ Göster Zil sesi İleti yazı tipi boyutu + Öncelik Bildirim sorunlarını giderme @@ -3897,6 +3911,7 @@ Alacaklının adres kare kodunu tara + İstek Öde Mevcut bakiye: %1$s @@ -4028,6 +4043,7 @@ Yalnızca %1$d sohbet sabitleyebilirsin + Kişi Fotoğrafı Arşivlendi @@ -4036,6 +4052,10 @@ Yeni sohbet Kamerayı Aç Henüz sohbet yok.\nBir arkadaşına mesaj göndererek başlayabilirsin. + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ Sohbet yedekleri Hesabı aktar Hesabı yeni bir Android cihaza aktar + Yedek parolasını giriniz Geri yükle Signal\'in daha yeni sürümlerinden yedek alınamaz @@ -4475,6 +4496,7 @@ Kablosuz ayarları açılamadı. Lütfen kablosuzu açın. + Konum izni ver Konum hizmetlerini aç Kablosuzu aç @@ -4728,6 +4750,7 @@ Paylaş + Gönder , %1$s @@ -5031,6 +5054,119 @@ Klavye Enter ile gönder + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done İletiler @@ -5115,6 +5251,7 @@ İçerik kalitesi + Gönderilen içerik kalitesi Yüksek kalitede içerik göndermek daha fazla veri kullanacaktır. @@ -7235,11 +7372,11 @@ - Your backups subscription expired + Yedekleme aboneliğinin süresi doldu - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Mevcut ödeme yönteminle yenilenemediği için yedekleme planının süresi doldu. %1$d gün sonra yedeklemendeki medyalar silinecek. + Mevcut ödeme yönteminle yenilenemediği için yedekleme planının süresi doldu. %1$d gün sonra yedeklemendeki medyalar silinecek. Medyanın tamamını yedeklemeye devam etmek için istediğin zaman yedeklemeler için yeniden ödeme yapmaya başlayabilirsin. @@ -7257,9 +7394,9 @@ \"Atla\" öğesini seçersen yedeklemendeki medya %1$d gün içinde silinecektir. - Your backups subscription failed to renew + Yedekleme aboneliğin yenilenemedi - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Ödeme yönteminin güncel olduğundan emin olmak için kontrol et. Aboneliği yönet\'e ve Ödeme yöntemleri altında Güncelle\'ye dokun. Yedekleme tamamlanamadı @@ -7271,7 +7408,7 @@ Aboneliği yönet - Subscribe for %1$s/month + %1$s/ay ile abone ol Medyayı şimdi indir @@ -7306,6 +7443,17 @@ %1$s / %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7359,18 +7507,18 @@ Depolama optimizasyonu yalnızca Signal Yedeklemelerin ücretli katmanı ile kullanılabilir. Bu özelliği kullanmaya başlamak için yedekleme planını yükselt. - Subscribe for %1$s/month + %1$s/ay ile abone ol - This media is no longer available + Bu medya artık kullanılamıyor - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Mevcut Signal yedekleme planın en son %1$d günlük medyanı içerir. Tüm medyanı yedeklemeye başlamak için şimdi yükselt. + Mevcut Signal yedekleme planın en son %1$d günlük medyanı içerir. Tüm medyanı yedeklemeye başlamak için şimdi yükselt. - Subscribe for %1$s/month + %1$s/ay ile abone ol Silme işlemi şu anda tüm cihazlarında senkronize ediliyor @@ -7413,11 +7561,13 @@ Yedekleme türü değiştirildi ve abonelik iptal edildi - Abonelik iptal edildi + Subscription canceled İndirme tamamlandı Yedekleme gece boyunca oluşturulur. + + Subscription inactive Yedekleme planı @@ -7426,8 +7576,12 @@ %1$s/ay Yedekleme planın ücretsizdir - + %1$s tarihinde yenilenir + + Expires on %1$s + + Expired on %1$s Mesaj geçmişini yedekle böylece yeni bir telefon aldığında veya Signal\'i yeniden yüklediğinde asla veri kaybetmezsin. @@ -7472,6 +7626,10 @@ Manüel yedekleme Lütfen cihaz pinini, parolanı veya desenini gir. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-ug/strings.xml b/app/src/main/res/values-ug/strings.xml index 60b9441996..ff52ebaf80 100644 --- a/app/src/main/res/values-ug/strings.xml +++ b/app/src/main/res/values-ug/strings.xml @@ -365,6 +365,8 @@ پاراڭلار ئۇچۇرلار + + Chat types %1$s گە ئۇچۇر قىلىش @@ -796,7 +798,7 @@ - You\'re all set. Start your backup now. + ھەممىسى تەييار بولدى. زاپاسلاشنى ھازىرلا باشلاڭ. زاپاسلايدىغان مەلۇماتلارنىڭ ھەجىمى سەۋەبىدىن ، بۇنىڭغا ئۇزۇن ۋاقىت كېتىشى مۇمكىن. زاپاسلاش ئېلىپ بېرىلۋاتقاندىمۇ تېلېفونىڭىزنى ئادەتتىكىدەكلا ئىشلىتەلەيسىز. @@ -1908,6 +1910,7 @@ +%1$d تەكلىپ قىلىندى + %1$d قوشۇمچە گۇرۇپپا @@ -1933,6 +1936,7 @@ ھېچقانداق ئۈسكۈنە تېپىلمىدى. تور خاتالىقى. ئىناۋەتسىز QR كودى. + كەچۈرۈڭ، ئۇلانغان ئۈسكۈنىلىرىڭىز بەك كۆپ بولۇپ كەتتى، بەزىلىرىنى چىقىرىۋېتىڭ كەچۈرۈڭ، بۇ ئىناۋەتلىك بولغان ئۈسكۈنە ئۇلانمىسى QR كودى ئەمەس. بىر Signal ئۈسكۈنىسى ئۇلامسىز؟ @@ -1954,11 +1958,13 @@ ئىم ئىبارىسىنى تاپشۇرۇڭ ئىناۋەتسىز ئىم ئىبارىسى! Signal نى ئاجرىتىڭ + Signal Android - قۇلۇپ ئېكرانى خەرىتە + ئەن قوبۇللاش ئادرېسى @@ -2440,6 +2446,7 @@ Signal ئۇچۇرى + تېخىمۇ كۆپ @@ -2471,6 +2478,7 @@ چىراي ئىپادىسى ئورنىتىلمىغان بۇ جايدا كەلگەن ئۇچۇرلاردىكى چىراي ئىپادىلىرى كۆرۈنىدۇ ماۋزۇسىز + نامەلۇم @@ -2691,6 +2699,7 @@ ۋاسىتەنى ئىشلەتكىلى بولمايدۇ. مېدىيانى قويالمىدى. + ئۇچۇرنى ئىزدەش خاتالىقى. بۇ ۋاسىتەنى ھەمبەھىرلەيدىغان ئەپ تېپىلمىدى. تاقا @@ -2760,6 +2769,7 @@ ئۇچۇرلار چاقىرىشلار + مەغلۇبىيەت زاپاسلار قۇلۇپ ھالىتى @@ -2769,6 +2779,7 @@ نامەلۇم ئاۋازلىق ئەسلەتمە ئالاقاداش Signal غا قېتىلدى + ئۇقتۇرۇش قانال تەڭشەكلىرىنى ئاچىدىغان پائالىيەت يوق. ئارقا سۇپا ئۇلىنىشى @@ -3540,10 +3551,12 @@ بارلىق ئۈسكۈنىلەردىكى بارلىق ئۇچۇر خاتىرىسى مەڭگۈلۈك ئۆچۈرۈلىدۇ. بۇ مەشغۇلاتنى ئەمەلدىن قالدۇرغىلى بولمايدۇ. ھازىرلا ھەممىنى ئۆچۈر + مەڭگۈ 1 يىل 6 ئاي 30 كۈن + ھېچنېمە %1$s ئۇچۇرلار @@ -3567,6 +3580,7 @@ كۆرسەت قوڭغۇراق ئاۋازى ئۇچۇر خەت چوڭلۇقى + مۇھىملىقى كاشىلا ئوڭشاش ئۇقتۇرۇشلىرى @@ -3795,6 +3809,7 @@ پۇل ئالغۇچىنىڭ ئادرېس QR كودىنى سايىلەڭ + ئىلتىماس تۆلە ئىشلىتىشكە بولىدىغان قالدۇق: %1$s @@ -3925,6 +3940,7 @@ كۆپ بولغاندا %1$d پاراڭنى مىخلىيالايسىز + ئالاقەداش فوتو رەسىمى ئارخىپلاشتۇرۇلدى @@ -3933,6 +3949,10 @@ يېڭى پاراڭ كامېرا ئاچ تېخى پاراڭ يوق.\nدوستىڭىزغا ئۇچۇر يوللاپ پاراڭلىشىشنى باشلاڭ. + + No chats to display + + Folder settings @@ -4157,6 +4177,7 @@ پاراڭ زاپاسلانمىسى ھېساباتنى يۆتكە يېڭى بىر Android ئۈسكىنىسگە ھېساباتنى يۆتكە + زاپاسلاش ئىم ئىبارىسىنى كىرگۈزۈڭ ئەسلىگە كەلتۈرۈش Signal نىڭ يېڭى نەشرىدىكى زاپاسلارنى ئەكىرگىلى بولمايدۇ @@ -4364,6 +4385,7 @@ Wi-Fi تەڭشەكلەرنى ئاچالمىدى. Wi-Fi ئېچىڭ. + ئورۇن ھوقۇقى بەر ئورۇن مۇلازىمىتىنى قوزغات Wi-Fi نى قوزغات @@ -4610,6 +4632,7 @@ ھەمبەھىرلە + ئەۋەت , %1$s @@ -4912,6 +4935,116 @@ ھەرپتاختا Enter بىلەن ئەۋەتىڭ + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat types + + + + %1$d chats + + + + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done ئۇچۇرلار @@ -4995,6 +5128,7 @@ ۋاسىتە سۈپىتى + ۋاسىتە سۈپىتىنى ئەۋەت يۇقىرى سۈپەتلىك ۋاسىتە يوللىسىڭىز كۆپرەك مەلۇمات ئىشلىتىسىز @@ -7079,10 +7213,10 @@ - Your backups subscription expired + زاپاسلاش مۇشتەرىلىكىڭىزنىڭ ۋاقتى ئۆتۈپ كەتتى - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + زاپاسلاش پىلانىڭىزنىڭ ۋاقتى ئۆتۈپ كەتتى چۈنكى ئۇ ھازىرقى پۇل تۆلەش ئۇسۇلىڭىز بىلەن يېڭىلانمايدۇ. %1$d كۈندىن كېيىن ، زاپاسلىغان مېدىيا ئۆچۈرۈلىدۇ. سىز ھارقانداق ۋاقىتتا بارلىق مېدىيالىرىڭىزنى داۋاملىق زاپاسلاش ئۈچۈن پۇل تۆلەشكە باشلىسىڭىز بولىدۇ. @@ -7099,9 +7233,9 @@ زاپاسلاشتىكى مېدىيانى «ئاتلاش» نى تاللىسىڭىز %1$d كۈندە ئۆچۈرۈلىدۇ. - Your backups subscription failed to renew + زاپاسلاش مۇشتەرىلىكىڭىز يېڭىلىنىشنى تاماملىيالمىدى - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + پۇل تۆلەش ئۇسۇلىڭىزنىڭ ئەڭ يېڭى ئىكەنلىكىنى جەزملەشتۈرۈڭ. مۇشتەرىلىك باشقۇرۇشنى چېكىڭ ۋە پۇل تۆلەش ئۇسۇللىرى ئاستىدىكى «يېڭىلاش» نى چېكىڭ. زاپاسلاشنى تاماملىيالمىدى @@ -7113,7 +7247,7 @@ مۇشتەرىلىكنى باشقۇرۇش - Subscribe for %1$s/month + %1$s/ ئايلىقى مۇشتەرى بولۇڭ مېدىيانى ھازىر چۈشۈرۈڭ @@ -7148,6 +7282,17 @@ %1$s نىڭ%2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7201,17 +7346,17 @@ ساقلاشنى ئەلالاشتۇرۇش پەقەت سىگنال زاپاسلاشنىڭ ھەقلىق دەرىجىسى بىلەنلا ئىشلىتىلىدۇ. زاپاسلاش پىلانىڭىزنى يېڭىلاپ بۇ ئىقتىدارنى ئىشلىتىشنى باشلاڭ. - Subscribe for %1$s/month + %1$s/ ئايلىقى مۇشتەرى بولۇڭ - This media is no longer available + بۇ مېدىيا ئەمدى مەۋجۇت ئەمەس - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + نۆۋەتتىكى سىگنال زاپاسلاش پىلانىڭىز ئەڭ يېقىنقى %1$d كۈنلۈك مېدىيانى ئۆز ئىچىگە ئالىدۇ. بارلىق مېدىيالىرىڭىزنى زاپاسلاشنى باشلاش ئۈچۈن ، ھازىر يېڭىلاڭ. - Subscribe for %1$s/month + %1$s/ ئايلىقى مۇشتەرى بولۇڭ ئۆچۈرۈش ھازىر بارلىق ئۈسكۈنىلىرىڭىزدە ماسقەدەملىنىدۇ @@ -7254,11 +7399,13 @@ زاپاسلاش تىپى ئۆزگەرگەن، مۇشتەرىلىك بىكار قىلىندى - مۇشتەرىلىك بىكار قىلىندى + Subscription canceled چۈشۈرۈلدى زاپاسلاش بىر كېچىدىلا قۇرۇلىدۇ. + + Subscription inactive زاپاسلاش پىلانى @@ -7267,8 +7414,12 @@ %1$s/ئايلىقى زاپاسلاش پىلانىڭىز ھەقسىز - + يېڭىلىنىش ۋاقتى %1$s + + Expires on %1$s + + Expired on %1$s ئۇچۇرلىشىش تارىخىڭىزنى زاپاسلاڭ ، يېڭى تېلېفون ئالغاندا ياكى سىگنالنى قايتا قاچىلىغاندا سانلىق مەلۇماتنى ھەرگىز يوقىتىپ قويمايسىز. @@ -7313,6 +7464,10 @@ قولدا زاپاسلاش ئۈسكۈنىڭىزگە PIN نومۇر، مەخپىي نۇمۇر ياكى نەقىشنى كىرگۈزۈڭ. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 03dbd3f6bb..433fe8cca3 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -374,6 +374,8 @@ Чати Повідомлення + + Chat types Написати користувачу %1$s @@ -856,7 +858,7 @@ - You\'re all set. Start your backup now. + Усе готово. Тепер можна створити резервну копію. Що більший розмір резервної копії, то довше триватиме її створення. Поки копія створюється, ви можете користуватися телефоном як зазвичай. @@ -2091,6 +2093,7 @@ +%1$d запрошено +%1$d запрошено + %1$d додаткова група %1$d додаткові групи @@ -2119,6 +2122,7 @@ Пристрою не знайдено. Помилка мережі. Недійсний QR-код. + На жаль, у вас забагато зв\'язаних пристроїв. Спробуйте відв\'язати якісь із них Це не QR-код для зв\'язування пристрою. Зв\'язати пристрій Signal? @@ -2143,11 +2147,13 @@ Завершити введення Неправильний пароль! Розблокувати Signal + Signal Android - Екран блокування Мапа + Поставити мітку Підтвердити адресу @@ -2561,7 +2567,7 @@ Це могло статися через те, що користувач не позначив ваш змінений код безпеки як перевірений, має проблему з пристроєм або заблокував вас. - Свайпніть, щоб побачити демонстрацію екрана + Потягніть вгору для демонстрації екрана Проксі-сервер @@ -2695,6 +2701,7 @@ Повідомлення Signal + Більше @@ -2726,6 +2733,7 @@ Немає встановлених стікерів Тут будуть стікери зі вхідних повідомлень Без назви + Невідомо @@ -2949,6 +2957,7 @@ Медіафайл більше не доступний. Не вдається відтворити медіа. + Під час пошуку повідомлення сталася помилка. Немає застосунку, через який можна було б поділитися цим медіафайлом. Закрити @@ -3024,6 +3033,7 @@ Повідомлення Виклики + Відмови Резервні копії Статус блокування @@ -3033,6 +3043,7 @@ Невідомо Голосові нотатки Контакт приєднався до Signal + Немає доступної активності для відкриття налаштувань категорій повідомлень. Фонове з\'єднання @@ -3730,7 +3741,7 @@ Тричі П\'ять разів Десять разів - Вібрувати + Вібрація Зелений Червоний Синій @@ -3811,7 +3822,7 @@ Індикатор набору тексту Якщо індикатор набору тексту вимкнено, його не буде видно, коли інший користувач набиратиме повідомлення. Вимкнути персоналізоване навчання клавіатури. - Це налаштування спрацьовує не у всіх випадках. Ваша клавіатура може його ігнорувати. + Це налаштування спрацьовує не в усіх випадках. Ваша клавіатура може його ігнорувати. Через мобільний інтернет Через Wi-Fi @@ -3843,10 +3854,12 @@ Усю історію повідомлень буде остаточно видалено з усіх пристроїв. Ви не зможете її відновити. Видалити усе негайно + Назавжди 1 рік 6 місяців 30 днів + Без обмежень %1$s повідомлення @@ -3873,6 +3886,7 @@ Показувати Мелодія дзвінка Розмір шрифту повідомлень + Пріоритет Усунення неполадок зі сповіщеннями @@ -3893,7 +3907,7 @@ Дозволити від будь-кого Отримувати повідомлення від захищених відправників, які не з вашого списку контактів, або з якими ви не поділилися профілем. Проксі-сервер - Використовувати проксі-сервер + Проксі-сервер Вимк. Увімк. Адреса проксі-сервера @@ -4101,6 +4115,7 @@ Скануйте QR-код адреси одержувача платежу. + Запит Переказати Доступний баланс: %1$s @@ -4234,6 +4249,7 @@ Ви можете прикріпити тільки до %1$d чатів + Зображення контакту Архівовано @@ -4242,6 +4258,10 @@ Новий чат Відкрити Камеру Чатів поки що немає.\n Напишіть щось друзям. + + No chats to display + + Folder settings @@ -4490,6 +4510,7 @@ Резервні копії чатів Перенести акаунт Перенесіть акаунт на новий пристрій з ОС Android + Введіть фразу-пароль Відновити Імпорт резервних копій з нових версій Signal неможливий @@ -4697,6 +4718,7 @@ Не вдалося відкрити настройки Wi-Fi. Будь-ласка, включіть Wi-Fi вручну. + Надати доступ до місцеположення Увімкнути геодані Увімкнути Wi-Fi @@ -4964,6 +4986,7 @@ Поділитися + Відправити , %1$s @@ -5269,6 +5292,125 @@ Клавіатура Надсилати кнопкою Enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + %1$d chat types + %1$d chat types + + + + %1$d chat + %1$d chats + %1$d chats + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + %1$d chats excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Повідомлення @@ -5318,7 +5460,7 @@ - Показати значок статусу + Показувати значок статусу Показувати піктограму в деталях повідомлення, доставлених за допомогою захищеного відправника. @@ -5355,6 +5497,7 @@ Якість медіафайлів + Якість медіафайлів, які ви надсилаєте Надсилання медіафайлів високої якості споживатиме більше трафіку. @@ -5726,7 +5869,7 @@ - Вибрати значок + Оберіть значок Ви маєте обрати значок Не вдалось оновити профіль @@ -7547,13 +7690,13 @@ - Your backups subscription expired + Скінчилася передплата на резервне копіювання - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d day, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Ваша передплата на резервне копіювання скінчилася, тому що її не вдалося продовжити з використанням поточного платіжного засобу. Медіафайли з вашої резервної копії буде видалено через %1$d день. + Ваша передплата на резервне копіювання скінчилася, тому що її не вдалося продовжити з використанням поточного платіжного засобу. Медіафайли з вашої резервної копії буде видалено через %1$d дні. + Ваша передплата на резервне копіювання скінчилася, тому що її не вдалося продовжити з використанням поточного платіжного засобу. Медіафайли з вашої резервної копії буде видалено через %1$d днів. + Ваша передплата на резервне копіювання скінчилася, тому що її не вдалося продовжити з використанням поточного платіжного засобу. Медіафайли з вашої резервної копії буде видалено через %1$d дня. Ви можете поновити оплату в будь-який момент, щоб знову здійснювати резервне копіювання медіафайлів. @@ -7573,9 +7716,9 @@ Якщо вибрати «Пропустити», медіафайли з резервної копії буде видалено через %1$d дня. - Your backups subscription failed to renew + Не вдалося продовжити передплату на резервне копіювання - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Перевірте дійсність вашого платіжного засобу. Натисніть «Керувати передплатою» і виберіть «Оновити» у «Платіжних засобах». Резервне копіювання не завершено @@ -7585,9 +7728,9 @@ Пропустити - Керувати підпискою + Керувати передплатою - Subscribe for %1$s/month + Передплатити за %1$s/місяць Завантажити медіафайли @@ -7622,6 +7765,17 @@ %1$s з %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7675,20 +7829,20 @@ Оптимізація пам\'яті доступна тим, хто користується платним резервним копіюванням Signal. Оформте передплату, щоб використовувати цю функцію. - Subscribe for %1$s/month + Передплатити за %1$s/місяць - This media is no longer available + Цей медіафайл більше не доступний - Your current Signal backup plan includes your most recent %1$d day of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Згідно з поточним планом, резервна копія включає медіафайли за минулий %1$d день. Щоб створювати резервну копію всіх медіафайлів, змініть передплату. + Згідно з поточним планом, резервна копія включає медіафайли за минулі %1$d дні. Щоб створювати резервну копію всіх медіафайлів, змініть передплату. + Згідно з поточним планом, резервна копія включає медіафайли за минулі %1$d днів. Щоб створювати резервну копію всіх медіафайлів, змініть передплату. + Згідно з поточним планом, резервна копія включає медіафайли за минулі %1$d дня. Щоб створювати резервну копію всіх медіафайлів, змініть передплату. - Subscribe for %1$s/month + Передплатити за %1$s/місяць Тепер видалення синхронізується на всіх ваших пристроях @@ -7731,11 +7885,13 @@ Тип резервного копіювання змінено, а передплату скасовано - Передплату скасовано + Subscription canceled Завантаження завершено Резервну копію буде створено вночі. + + Subscription inactive План резервного копіювання @@ -7744,8 +7900,12 @@ %1$s/місяць Безплатно - + Наступний платіж %1$s + + Expires on %1$s + + Expired on %1$s Зберігайте історію повідомлень і не втрачайте дані в разі зміни телефона або перевстановлення Signal. @@ -7790,6 +7950,10 @@ Створювати вручну Уведіть PIN-код пристрою, пароль або графічний ключ. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml index a66c6dce15..041316002b 100644 --- a/app/src/main/res/values-ur/strings.xml +++ b/app/src/main/res/values-ur/strings.xml @@ -368,6 +368,8 @@ چیٹس میسجز + + Chat types پیغام %1$s @@ -1969,6 +1971,7 @@ +%1$d کو مدعو کیا گیا +%1$d کو مدعو کیا گیا + %1$dاضافی گروپ %1$dاضافی گروپس @@ -1995,6 +1998,7 @@ کوئی ڈیوائس نہیں ملی۔ نیٹ ورک کی خرابی۔ QR کوڈ غلط ہے۔ + معذرت سے، پہلے سے بہت زیادہ ڈیوائسز منسلک ہیں، کچھ ختم کرنے کی کوشش کریں معذرت سے، ڈیوائس لنک QR کوڈ غلط ہے۔ Signal ڈیوائس منسلک کریں؟ @@ -2017,11 +2021,13 @@ پاسفریز جمع کریں غلط پاسفریز! Signal ان لاک کریں + Signal Android - لاک اسکرین نقشہ + ڈراپ پن ایڈریس قبول کریں @@ -2525,6 +2531,7 @@ Signal پیغام + مزید @@ -2556,6 +2563,7 @@ اسٹیکر نصب نہیں ہوئے آنے والے پیغامات سے اسٹیکرز یہاں ظاہر ہونگے عنوان کے بغیر + نامعلوم @@ -2777,6 +2785,7 @@ میڈیا اب دستیاب نہیں ہے۔ میڈیا پلے کرنے سے قاصر ہے۔ + میسج تلاش کرنے میں نقص پیش آیا۔ کوئی ایپ اس میڈیا کو شیئر کرنے کے قابل نہیں پاسکتی ہے۔ بند کریں @@ -2848,6 +2857,7 @@ پیغامات کالز + ناکامیاں بیک اپس اسٹیٹس لاک کریں @@ -2857,6 +2867,7 @@ نامعلوم آڈیو نوٹز رابطہ Signal میں شامل ہو گیا + نوٹیفکیشن چینل کی ترتیبات کو کھولنے کے لئے کوئی سرگرمی دستیاب نہیں ہے۔ پس منظر کا کنکشن @@ -3641,10 +3652,12 @@ میسج کی تمام ہسٹری تمام ڈیوائسز سے مستقل طور پر ہٹا دی جائے گی۔ یہ ایکشن کالعدم نہیں کیا جا سکتا۔ اب سب کو حذف کریں + ہمیشہ کے لئے 1 سال 6 ماہ 30 دن + کوئی نہیں %1$s پيغام @@ -3669,6 +3682,7 @@ دکھائیں رنگ ٹون پیغام فونٹ سائز + ترجیح دینا اطلاعات کی نقص ازالہ کاری کریں @@ -3897,6 +3911,7 @@ وصول کنندہ کا پتہ QR کوڈ اسکین کریں + درخواست ادا کرنا دستیاب بیلنس: %1$s @@ -4028,6 +4043,7 @@ آپ صرف %1$d چیٹس تک پِن کر سکتے ہیں + رابطہ تصویر امیج محفوظ شدہ دستاویزات @@ -4036,6 +4052,10 @@ نئی چیٹ کیمرہ کھولیں ابھی کوئی چیٹس نہیں ہیں۔\nکسی دوست کو میسج کر کے آغاز کریں۔ + + No chats to display + + Folder settings @@ -4268,6 +4288,7 @@ چیٹ کے بیک اپس اکاؤنٹ منتقل کریں اکاؤنٹ کو کسی نئے Android ڈیوائس میں منتقل کریں + بیک اپ فاسفریز داخل کریں بحال کریں Signal کے تازہ ترین ورژنز سے بیک اپس درآمد کرنے سے قاصر @@ -4475,6 +4496,7 @@ Wi-Fi ترتیبات کو کھولنے سے قاصر ہے۔ براہ کرم دستی طور پر Wi-Fi آن کریں۔ + \'Location\' تک رسائی فراہم کریں مقام کی خدمات کو آن کریں Wi-Fi آن کریں @@ -4728,6 +4750,7 @@ اشتراک کریں + بھیجیں , %1$s @@ -5031,6 +5054,119 @@ کی بورڈ انٹر دبا کر بھیجیں + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat type + %1$d chat types + + + + %1$d chat + %1$d chats + + + + %1$d chat excluded + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done پیغامات @@ -5115,6 +5251,7 @@ میڈیا کوالٹی + بھیجے گئے میڈیا کی کوالٹی اعلیٰ کوالٹی کے میڈیا کو بھیجنے میں مزید ڈیٹا استعمال ہو گا۔ @@ -7306,6 +7443,17 @@ %1$sکا%2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7413,11 +7561,13 @@ بیک اپ کی قسم تبدیل کر دی گئی اور سبسکرپشن منسوخ کر دی گئی - سبسکرپشن منسوخ کر دی گئی + Subscription canceled ڈاؤن لوڈ مکمل ہو گئی بیک اپ رات تیار کیا جائے گا۔ + + Subscription inactive بیک اپ پلان @@ -7426,8 +7576,12 @@ %1$s/ماہ آپ کا بیک اپ پلان مفت ہے - + %1$s کی تجدید کرتا ہے + + Expires on %1$s + + Expired on %1$s اپنی میسج ہسٹری کا بیک اپ کریں تاکہ جب بھی آپ کوئی نیا فون لیں یا Signal کو دوبارہ انسٹال کریں تو اس صورت میں آپ کا ڈیٹا کبھی بھی ضائع نہ ہو۔ @@ -7472,6 +7626,10 @@ دستی طور پر بیک اپ کریں براہ کرم اپنی ڈیوائس کی پِن، پاس ورڈ یا پیٹرن درج کریں۔ + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index dedffa743a..3bb92a346a 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -365,6 +365,8 @@ Trò chuyện Tin nhắn + + Chat types Tin nhắn %1$s @@ -796,7 +798,7 @@ - You\'re all set. Start your backup now. + Mọi thứ đã sẵn sàng. Bắt đầu sao lưu ngay. Tùy thuộc vào kích thước của bản sao lưu, quá trình này có thể mất một khoảng thời gian dài. Bạn có thể sử dụng điện thoại như bình thường khi quá trình sao lưu đang diễn ra. @@ -1908,6 +1910,7 @@ +%1$d được mời + %1$d nhóm khác @@ -1933,6 +1936,7 @@ Không tìm thấy thiết bị nào. Lỗi mạng. Mã QR không đúng. + Xin lỗi, bạn có quá nhiều thiết bị liên kết, hãy thử gỡ một vài thiết bị Xin lỗi, đây không phải mã QR liên kết thiết bị chính xác. Liên kết một thiết bị dùng Signal? @@ -1954,11 +1958,13 @@ Gửi mật khẩu Mật khẩu không đúng! Mở khóa Signal + Signal Android - Màn hình Khoá Bản đồ + Thả ghim Chấp nhận địa chỉ @@ -2440,6 +2446,7 @@ Tin nhắn Signal + Thêm @@ -2471,6 +2478,7 @@ Chưa có nhãn dán nào được cài Nhãn dán từ tin nhắn sẽ được hiển thị ở đây Chưa đặt tên + Không rõ @@ -2691,6 +2699,7 @@ Tệp đa phương tiện không còn khả dụng. Không thể phát tập tin đa phương tiện. + Có lỗi khi tìm tin nhắn. Không thể tìm được ứng dụng có thể chia sẻ tệp đa phương tiện này. Đóng @@ -2760,6 +2769,7 @@ Tin nhắn Cuộc gọi + Thất bại Sao lưu Tình trạng khoá @@ -2769,6 +2779,7 @@ Vô danh Ghi chú Âm thanh Liên hệ bắt đầu dùng Signal + Không có hoạt động này để mở cài đặt kênh thông báo. Kết nối chạy nền @@ -3540,10 +3551,12 @@ Tất cả lịch sử tin nhắn sẽ được xóa vĩnh viễn trên tất cả thiết bị. Hành động này không thể hoàn tác. Xóa tất cả + Vĩnh viễn 1 năm 6 tháng 30 ngày + Không %1$s tin nhắn @@ -3567,6 +3580,7 @@ Hiện Nhạc chuông Cỡ chữ tin nhắn + Mức ưu tiên Khắc phục sự cố thông báo @@ -3795,6 +3809,7 @@ Quét mã QR địa chỉ của người được thanh toán + Yêu cầu Thanh toán Số dư có sẵn: %1$s @@ -3925,6 +3940,7 @@ Bạn chỉ có thể ghim tối đa %1$d cuộc trò chuyện + Ảnh Chân Dung Liên Hệ Đã lưu trữ @@ -3933,6 +3949,10 @@ Cuộc trò chuyện mới Mở Camera Chưa có tin nhắn.\nBắt đầu bằng việc nhắn tin cho một người bạn. + + No chats to display + + Folder settings @@ -4157,6 +4177,7 @@ Sao lưu tin nhắn Chuyển tài khoản Chuyển tài khoản sang một thiết bị Android mới + Điền mật khẩu sao lưu Khôi phục Không thể nhập bản sao lưu tạo từ bản Signal mới hơn @@ -4364,6 +4385,7 @@ Không thể mở Cài đặt Wi-Fi. Vui lòng bật Wi-Fi thủ công. + Cấp quyền truy cập vị trí Bật dịch vụ Vị trí Bật Wi-Fi @@ -4610,6 +4632,7 @@ Chia sẻ + Gửi , %1$s @@ -4912,6 +4935,116 @@ Bàn phím Gửi với nút enter + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat types + + + + %1$d chats + + + + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done Tin nhắn @@ -4995,6 +5128,7 @@ Chất lượng tập tin đa phương tiện + Chất lượng tập tin đa phương tiện đã gửi Việc gửi tập tin đa phương tiện chất lượng cao sẽ tốn nhiều lưu lượng hơn. @@ -7079,10 +7213,10 @@ - Your backups subscription expired + Gói đăng ký sao lưu của bạn đã hết hạn - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + Gói đăng ký sao lưu của bạn đã hết hạn vì gói không thể được gia hạn với phương thức thanh toán hiện tại của bạn. Sau %1$d ngày, tập tin đa phương tiện trong bản sao lưu của bạn sẽ bị xóa. Bạn có thể thanh toán cho gói sao lưu bất kỳ lúc nào để tiếp tục sao lưu tất cả tập tin đa phương tiện của mình. @@ -7099,9 +7233,9 @@ Nếu chọn \"Bỏ qua\", tập tin đa phương tiện trong bản sao lưu của bạn sẽ được xóa trong %1$d ngày. - Your backups subscription failed to renew + Gia hạn không thành công gói đăng ký sao lưu của bạn - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + Kiểm tra để đảm bảo rằng phương thức thanh toán của bạn đã được cập nhật thông tin mới nhất. Nhấn Quản lý gói đăng ký, tìm mục Phương thức thanh toán và nhấn Cập nhật. Không thể hoàn tất sao lưu @@ -7113,7 +7247,7 @@ Quản lý Gói Ủng hộ - Subscribe for %1$s/month + Đăng ký gói với giá %1$s/tháng Tải tập tin đa phương tiện ngay @@ -7148,6 +7282,17 @@ %1$s trên tổng số %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7201,17 +7346,17 @@ Tối ưu hóa lưu trữ là tính năng của gói trả phí Sao lưu Signal. Nâng cấp gói sao lưu để bắt đầu sử dụng tính năng này. - Subscribe for %1$s/month + Đăng ký gói với giá %1$s/tháng - This media is no longer available + Tập tin đa phương tiện không còn khả dụng - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + Gói sao lưu Signal hiện tại của bạn bao gồm tập tin đa phương tiện trong %1$d ngày gần nhất. Để bắt đầu sao lưu tất cả tập tin đa phương tiện, nâng cấp ngay. - Subscribe for %1$s/month + Đăng ký gói với giá %1$s/tháng Việc xóa nay được đồng bộ trên tất cả thiết bị của bạn @@ -7254,11 +7399,13 @@ Loại bản sao lưu đã thay đổi và gói đăng ký đã được hủy - Quyên góp đã bị hủy bỏ + Subscription canceled Tải xuống hoàn tất Bản sao lưu sẽ được tạo trong đêm. + + Subscription inactive Gói sao lưu @@ -7267,8 +7414,12 @@ %1$s/tháng Bạn đang sử dụng gói miễn phí - + Gia hạn %1$s + + Expires on %1$s + + Expired on %1$s Sao lưu lịch sử tin nhắn để không bao giờ mất dữ liệu khi bạn có điện thoại mới hoặc cài lại Signal. @@ -7313,6 +7464,10 @@ Sao lưu thủ công Vui lòng nhập mã PIN, mật khẩu hoặc mã khóa dạng vẽ hình của thiết bị. + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-yue/strings.xml b/app/src/main/res/values-yue/strings.xml index ba98ddf0fe..888c543944 100644 --- a/app/src/main/res/values-yue/strings.xml +++ b/app/src/main/res/values-yue/strings.xml @@ -365,6 +365,8 @@ 聊天 訊息 + + Chat types 寫個訊息畀 %1$s @@ -796,7 +798,7 @@ - You\'re all set. Start your backup now. + 搞掂晒。你可以即刻開始備份喇。 視乎備份嘅大細而定,成個過程可能要好耐。備份嗰陣,你可以好似平時咁用手機。 @@ -1908,6 +1910,7 @@ +%1$d 位獲邀 + 其餘 %1$d 個谷 @@ -1933,6 +1936,7 @@ 乜嘢機都搵唔到。 網絡問題。 二維碼無效。 + 抱歉,您已經連結咗太多部機喇,您剷咁啲先啦 抱歉,呢個唔係有效嘅裝置連結二維碼。 係咪要連結一部 Signal 嘅機? @@ -1954,11 +1958,13 @@ 提交密碼 密碼無效! 解鎖 Signal + Signal Android - 鎖定畫面 地圖 + 指出位置 係呢個地址嘞 @@ -2440,6 +2446,7 @@ Signal 訊息 + 更多 @@ -2471,6 +2478,7 @@ 未裝任何貼圖 人哋畀您嘅訊息入面嘅貼圖會擺喺呢度 無題 + 未知 @@ -2691,6 +2699,7 @@ 多媒體檔案已經冇咗。 播放唔到媒體。 + 尋找訊息嗰陣發生錯誤。 搵唔到一個可以分享呢個媒體檔案嘅 app。 關閉 @@ -2760,6 +2769,7 @@ 訊息 通話 + 唔掂檔 備份 上鎖狀態 @@ -2769,6 +2779,7 @@ 未知 語音筆記 聯絡人開咗 Signal + 無可用嘅活動去開啟通知類別設定。 背景連線 @@ -3540,10 +3551,12 @@ 所有訊息紀錄就會喺所有裝置上面永久刪除㗎喇。剷走咗就冇得返轉頭㗎喇。 立即全部刪除 + 永久 1 年 6 個月 30 日 + %1$s 個訊息 @@ -3567,6 +3580,7 @@ 顯示 鈴聲 訊息字體大細 + 優次 通知疑難排解 @@ -3795,6 +3809,7 @@ 掃描收款人嘅位址二維碼 + 請求 支付 可用餘額:%1$s @@ -3925,6 +3940,7 @@ 您淨係可以將最多 %1$d 個傾偈置頂 + 聯絡人張相嘅樣 已封印 @@ -3933,6 +3949,10 @@ 新聊天 開啟相機 身在獨家村。\n發個訊息畀好友撩下佢傾偈啦。 + + No chats to display + + Folder settings @@ -4157,6 +4177,7 @@ 傾偈備份 過帳戶落新機 將帳戶轉移去一部新嘅 Android 機度 + 輸入備份密碼 還原 冇辦法由較新嘅 Signal 版本匯入備份 @@ -4364,6 +4385,7 @@ 開啟唔到 Wi-Fi 設定。麻煩您自己開啟 Wi-Fi。 + 畀「位置」權限 開啟定位服務 開啟 Wi-Fi @@ -4610,6 +4632,7 @@ 分享 + 傳送 、%1$s @@ -4912,6 +4935,116 @@ 鍵盤 㩒「Enter」掣傳送 + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat types + + + + %1$d chats + + + + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done 訊息 @@ -4995,6 +5128,7 @@ 多媒體檔案嘅畫質 + 發送多媒體檔案嘅畫質 發送高畫質嘅多媒體檔案會用多啲數據。 @@ -7079,10 +7213,10 @@ - Your backups subscription expired + 你嘅備份課金計劃已經過咗期 - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + 你嘅備份計劃用唔到而家嘅付款方式續期,所以已經過咗期。%1$d 日之後,系統就會刪除備份入面嘅媒體。 你可以隨時再開始支付備份費用,咁就可以繼續備份所有媒體。 @@ -7099,9 +7233,9 @@ 如果你選擇「跳過」,備份入面嘅媒體會喺 %1$d 日之後刪除。 - Your backups subscription failed to renew + 你嘅備份課金計劃續唔到期 - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + 請確定你嘅付款方式仍然有效。㩒一吓「管理課金計劃」,然後喺付款方式下面㩒「更新」。 完成唔到備份 @@ -7113,7 +7247,7 @@ 管理課金計劃 - Subscribe for %1$s/month + 每月課金 %1$s 即刻下載媒體 @@ -7148,6 +7282,17 @@ %1$s / %2$s + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7201,17 +7346,17 @@ 淨係得有課金用 Signal 備份嘅帳戶先用到「優化儲存空間」功能。如果想用呢個功能,就升級備份計劃啦。 - Subscribe for %1$s/month + 每月課金 %1$s - This media is no longer available + 呢個媒體已經冇咗 - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + 你而家嘅 Signal 備份計劃包括最近 %1$d 日嘅媒體。如果要開始備份所有媒體,請即刻升級。 - Subscribe for %1$s/month + 每月課金 %1$s 你所有裝置會同步進行刪除 @@ -7254,11 +7399,13 @@ 備份類型已經改咗,仲取消埋課金計劃 - 取消咗課金計劃 + Subscription canceled 下載完成 備份將會通宵建立。 + + Subscription inactive 備份計劃 @@ -7267,8 +7414,12 @@ 每月 %1$s 你嘅備份計劃係免費嘅 - + %1$s 續期 + + Expires on %1$s + + Expired on %1$s 備份你嘅訊息紀錄,當你換新手機或者重新安裝 Signal 嗰陣,就唔會冇咗啲資料啦。 @@ -7313,6 +7464,10 @@ 手動備份 請輸入你嘅裝置 PIN 碼、密碼或者圖案。 + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index b0a05152e0..24e1087d6a 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -365,6 +365,8 @@ 聊天 消息 + + Chat types 消息 %1$s @@ -796,7 +798,7 @@ - You\'re all set. Start your backup now. + 您已完成操作。现在开始备份吧。 根据备份的大小,这可能需要很长时间。在备份过程中,您可以正常使用手机。 @@ -1908,6 +1910,7 @@ 已邀请 %1$d 人 + 更多%1$d个群组 @@ -1933,6 +1936,7 @@ 未找到设备。 网络错误。 无效二维码。 + 很抱歉,关联设备过多,请先移除一些。 抱歉,设备关联二维码无效。 关联 Signal 设备? @@ -1954,11 +1958,13 @@ 提交密码 无效密码! 解锁 Signal + Signal Android - 锁定屏幕 地图 + 标注 接受地址 @@ -2440,6 +2446,7 @@ Signal 消息 + 更多 @@ -2471,6 +2478,7 @@ 未安装表情 此处将显示传入消息中的表情 未命名 + 未知 @@ -2691,6 +2699,7 @@ 媒体已失效。 无法播放媒体。 + 查找消息时出错。 未找到可分享此媒体的应用。 关闭 @@ -2760,6 +2769,7 @@ 消息 通话 + 失败 备份 锁定状态 @@ -2769,6 +2779,7 @@ 未知 语音笔记 联系人加入 Signal + 无可用活动以打开通知渠道设置。 后台连接 @@ -3540,10 +3551,12 @@ 所有设备上的所有消息历史记录将会被永久删除。此操作无法撤销。 马上删除所有 + 永久 1 年 6 个月 30 天 + %1$s 条消息 @@ -3567,6 +3580,7 @@ 显示 铃声 消息字体大小 + 优先级 针对通知延迟的疑难解答 @@ -3795,6 +3809,7 @@ 扫描收款人的地址二维码 + 入群请求 付款 可用余额:%1$s @@ -3925,6 +3940,7 @@ 您最多只能置顶%1$d个对话。 + 联系人图片 已存档 @@ -3933,6 +3949,10 @@ 新聊天 打开相机 还没有聊天记录。\n开始使用,给朋友发个消息吧。 + + No chats to display + + Folder settings @@ -4157,6 +4177,7 @@ 聊天备份 转移帐户 转移帐户至新的 Android 设备 + 输入备份密码 还原 无法从较新版本的 Signal 导入备份 @@ -4364,6 +4385,7 @@ 无法打开 Wi-Fi 设置,请手动开启 Wi-Fi。 + 授予位置权限 开启位置服务 开启 Wi-Fi @@ -4610,6 +4632,7 @@ 分享 + 发送 ,%1$s @@ -4912,6 +4935,116 @@ 键盘 按输入键发送 + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat types + + + + %1$d chats + + + + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done 消息 @@ -4995,6 +5128,7 @@ 媒体质量 + 已发送媒体质量 发送高质量媒体将会使用更多数据。 @@ -7079,10 +7213,10 @@ - Your backups subscription expired + 您的备份套餐已过期 - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + 您的备份套餐已过期,因为套餐无法通过您当前的付款方式续期。%1$d 天后,您的备份中的媒体将会被删除。 您可以随时重新开始支付备份费用,以继续备份您的所有媒体。 @@ -7099,9 +7233,9 @@ 如果您选择“跳过”,备份中的媒体将会在 %1$d 天后删除。 - Your backups subscription failed to renew + 您的备份套餐无法续期 - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + 请确保您使用的是最新的付款方式。您可以点击“管理套餐”,在“付款方式”下方点击“更新”。 无法完成备份 @@ -7113,7 +7247,7 @@ 管理定期捐款 - Subscribe for %1$s/month + 按 %1$s/月订阅 立即下载媒体 @@ -7148,6 +7282,17 @@ %1$s / %2$s 匹配 + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7201,17 +7346,17 @@ 储存优化功能仅在 Signal 备份付费套餐中可用。欢迎升级您的备份套餐以开始使用该功能。 - Subscribe for %1$s/month + 按 %1$s/月订阅 - This media is no longer available + 此媒体已不可用 - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + 您当前的 Signal 备份套餐包含最近 %1$d 天的媒体。如要开始备份所有媒体,请立即更新套餐。 - Subscribe for %1$s/month + 按 %1$s/月订阅 删除操作现可在所有设备上同步进行 @@ -7254,11 +7399,13 @@ 备份类型已更改并已取消备份套餐 - 备份套餐已取消 + Subscription canceled 下载完成 备份将在夜间创建。 + + Subscription inactive 备份套餐 @@ -7267,8 +7414,12 @@ %1$s/月 您使用的是免费备份套餐 - + 到 %1$s 续期 + + Expires on %1$s + + Expired on %1$s 备份消息记录可以确保您在更换手机或重装 Signal 时不会丢失数据。 @@ -7313,6 +7464,10 @@ 手动备份 请输入您的设备 Pin 码、密码或解锁图案。 + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index fe1a18b461..bd26d299e9 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -365,6 +365,8 @@ 聊天 訊息 + + Chat types 傳送訊息給 %1$s @@ -796,7 +798,7 @@ - You\'re all set. Start your backup now. + 一切準備就緒。立即開始你的備份。 視備份的大小而定,這可能需要一段較長的時間。備份期間,你可以如常使用手機。 @@ -1908,6 +1910,7 @@ +%1$d 個邀請 + 另 %1$d 個群組 @@ -1933,6 +1936,7 @@ 找不到裝置。 網絡錯誤。 二維碼無效。 + 抱歉,您已連結太多裝置,請試試先移除部分 抱歉,這並非有效的裝置連結二維碼。 要連結 Signal 裝置嗎? @@ -1954,11 +1958,13 @@ 提交密碼 密碼無效! 解除鎖定 Signal + Signal Android - 鎖定畫面 地圖 + 放置圖釘 接受地址 @@ -2440,6 +2446,7 @@ Signal 訊息 + 更多 @@ -2471,6 +2478,7 @@ 無已安裝的貼圖 來自傳入訊息的貼圖將在此出現 無題 + 未知 @@ -2691,6 +2699,7 @@ 媒體不再可用。 無法播放多媒體。 + 查找訊息時發生錯誤。 找不到能夠分享此媒體的應用程式。 關閉 @@ -2760,6 +2769,7 @@ 訊息 通話 + 失敗狀況 備份 鎖定狀態 @@ -2769,6 +2779,7 @@ 未知 語音備忘 聯絡人已加入 Signal + 無可用的活動以開啟通知通道設定。 背景連線 @@ -3540,10 +3551,12 @@ 所有訊息紀錄將會從所有裝置中永久移除。此動作無法復原。 立即全部刪除 + 永久 1 年 6 個月 30 天 + %1$s 則訊息 @@ -3567,6 +3580,7 @@ 顯示 鈴聲 訊息字型大小 + 優先順序 疑難排解通知 @@ -3795,6 +3809,7 @@ 掃描收款人的位址二維碼 + 請求 支付 可用餘額:%1$s @@ -3925,6 +3940,7 @@ 您僅可釘選最多 %1$d 個聊天 + 聯絡人照片影像 已封存 @@ -3933,6 +3949,10 @@ 新聊天 開啟相機 未有任何聊天。\n找個好友傳訊以開始使用。 + + No chats to display + + Folder settings @@ -4157,6 +4177,7 @@ 聊天備份 轉移帳戶 轉移帳戶至新的 Android 裝置 + 輸入備份密碼 還原 未能從 Signal 較新版本匯入備份 @@ -4364,6 +4385,7 @@ 無法開啟 Wi-Fi 設定。請手動開啟 Wi-Fi。 + 授予位置權限 開啟定位服務 開啟 Wi-Fi @@ -4610,6 +4632,7 @@ 分享 + 傳送 、%1$s @@ -4912,6 +4935,116 @@ 鍵盤 按輸入發送 + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat types + + + + %1$d chats + + + + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done 訊息 @@ -4995,6 +5128,7 @@ 媒體的品質 + 送出媒體的品質 傳送高品質的媒體將會使用較多數據。 @@ -7079,10 +7213,10 @@ - Your backups subscription expired + 你的備份定期贊助已過期 - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + 因為無法使用你目前的付款方式續訂,你的備份計畫現已過期。%1$d 天後,你備份中的媒體將被刪除。 你可以隨時重新開始支付備份費用,以繼續備份所有媒體。 @@ -7099,9 +7233,9 @@ 如果你選擇「跳過」,備份內的媒體將在 %1$d 天後刪除。 - Your backups subscription failed to renew + 你的備份定期贊助無法續訂 - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + 請檢查以確定你的付款方式仍然有效。點按管理定期贊助,然後在付款方式下點按更新。 無法完成備份 @@ -7113,7 +7247,7 @@ 管理定期贊助 - Subscribe for %1$s/month + 以每月 %1$s 定期贊助 立即下載媒體 @@ -7148,6 +7282,17 @@ 第 %1$s 個,共 %2$s 個 + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7201,17 +7346,17 @@ 儲存最佳化只可供 Signal Backups 付費級別使用。升級你的備份計畫以開始使用此功能。 - Subscribe for %1$s/month + 以每月 %1$s 定期贊助 - This media is no longer available + 此媒體不再適用 - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + 你目前的 Signal 備份計畫包括最近 %1$d 天的媒體。若要開始備份所有媒體,請立即升級。 - Subscribe for %1$s/month + 以每月 %1$s 定期贊助 現已在你所有裝置上同步刪除 @@ -7254,11 +7399,13 @@ 備份類型已變更且定期贊助已取消 - 訂閱已取消 + Subscription canceled 下載完成 備份將會通宵建立。 + + Subscription inactive 備份計畫 @@ -7267,8 +7414,12 @@ %1$s/月 你的備份計畫是免費的 - + %1$s 續期 + + Expires on %1$s + + Expired on %1$s 備份你的訊息紀錄,讓你在使用新手機或重新安裝 Signal 時,絕不會遺失資料。 @@ -7313,6 +7464,10 @@ 手動備份 請輸入你的裝置 PIN 碼、密碼或圖案。 + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 5fa320dfda..3b15021a76 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -365,6 +365,8 @@ 聊天 訊息 + + Chat types 傳送訊息給 %1$s @@ -796,7 +798,7 @@ - You\'re all set. Start your backup now. + 一切準備就緒。立即開始你的備份。 視備份的大小而定,這可能需要一段較長的時間。備份期間,你可以如常使用手機。 @@ -1908,6 +1910,7 @@ +%1$d 已邀請 + 另外 %1$d 個群組 @@ -1933,6 +1936,7 @@ 未找到裝置。 網路錯誤。 QR 碼無效。 + 抱歉,您已連結太多裝置,請試試先移除部分 抱歉,這不是有效的裝置連結 QR 碼。 連結 Signal 裝置? @@ -1954,11 +1958,13 @@ 送出密碼 無效的密碼! 解鎖 Signal + Signal Android-螢幕鎖定 地圖 + 標註地圖 接受地址 @@ -2440,6 +2446,7 @@ Signal 訊息 + 更多 @@ -2471,6 +2478,7 @@ 沒有貼圖被安裝 你收到的貼圖訊息將顯示在這裡 無標題 + 未知 @@ -2691,6 +2699,7 @@ 媒體已不存在。 無法播放多媒體。 + 查找訊息時發生錯誤。 找不到能夠分享此媒體檔案的應用程式。 關閉 @@ -2760,6 +2769,7 @@ 訊息 通話 + 失敗 備份 鎖定狀態 @@ -2769,6 +2779,7 @@ 未知 語音筆記 聯絡人上線 Signal 通知 + 無可用的活動以開啟通知類別設定。 背景連線 @@ -3540,10 +3551,12 @@ 所有訊息紀錄將會從所有裝置中永久移除。此動作無法復原。 立即刪除全部 + 永久 1年 6個月 30天 + %1$s 則訊息 @@ -3567,6 +3580,7 @@ 顯示 鈴聲 訊息字體大小 + 優先順序 疑難排解通知 @@ -3795,6 +3809,7 @@ 掃描收款人的位址的QR碼 + 要求 支付 可用餘額:%1$s @@ -3925,6 +3940,7 @@ 你最多只能釘選 %1$d 個聊天 + 聯絡人相片 存檔 @@ -3933,6 +3949,10 @@ 新聊天 開啟相機 尚無聊天。\n透過與朋友聊天開始。 + + No chats to display + + Folder settings @@ -4157,6 +4177,7 @@ 聊天備份 轉移帳號 將帳號轉移到新的Android裝置 + 輸入備份密碼 還原 無法從較新版本的 Signal 匯入備份檔 @@ -4364,6 +4385,7 @@ 無法開啟“ Wifi設定”。 請手動開啟Wifi。 + 給予位置權限 開啟定位服務 開啟Wifi @@ -4610,6 +4632,7 @@ 分享 + 傳送 、%1$s @@ -4912,6 +4935,116 @@ 鍵盤 按輸入發送 + + Chat folders + + Add a chat folder + + + + Organize your chats into folders and quickly switch between them on your chat list. + + Folders + + Create a folder + + All chats + + Suggested folders + + Unreads + + Unread messages from all chats + + 1:1 chats + + Only messages from direct chats + + Groups + + Only message from group chats + + Add + + %1$s folder added. + + Edit folder + + Delete folder + + Add new folder + + Mute all + + Reorder folders + + Mark all read + + + %1$d chat types + + + + %1$d chats + + + + %1$d chats excluded + + + + + Create a folder + + Folder name (required) + + Included chats + + Add chats + + Choose chats that you want to appear in this folder. + + Exceptions + + Exclude chats + + Choose chats that you do not want to appear in this folder. + + Only show unread chats + + When enabled, only chats with unread messages will be shown in this folder. + + Include muted chats + + Create + + Create folder? + + Do you want to create the chat folder \"%1$s\"? + + Create folder + + Edit folder + + Save + + Save changes? + + Do you want to save the changes you\'ve made to this chat folder? + + Save changes + + Discard + + Delete folder + + Delete this chat folder? + + + + Chat types + + Done 訊息 @@ -4995,6 +5128,7 @@ 媒體檔品質 + 已傳送媒體檔品質 傳送高畫質的媒體檔將會使用較多數據。 @@ -7079,10 +7213,10 @@ - Your backups subscription expired + 你的備份定期贊助已過期 - Your backup plan has expired because it couldn\'t be renewed with your current payment method. After %1$d days, the media in your backup will be deleted. + 因為無法使用你目前的付款方式續訂,你的備份計畫現已過期。%1$d 天後,你備份中的媒體將被刪除。 你可以隨時重新開始支付備份費用,以繼續備份所有媒體。 @@ -7099,9 +7233,9 @@ 如果你選擇「跳過」,備份內的媒體將在 %1$d 天後刪除。 - Your backups subscription failed to renew + 你的備份定期贊助無法續訂 - Check to make sure your payment method is up to date. Tap Manage subscription and under Payment methods tap Update. + 請檢查以確定你的付款方式仍然有效。點按管理定期贊助,然後在付款方式下點按更新。 無法完成備份 @@ -7113,7 +7247,7 @@ 管理定期贊助 - Subscribe for %1$s/month + 以每月 %1$s 定期贊助 立即下載媒體 @@ -7148,6 +7282,17 @@ 第 %1$s 個,共 %2$s 個 + + + Cancel download + + Downloading: %1$s of %2$s (%3$s%%) + + Not enough space to download your Backup. To continue free up %1$s of space. + + Skip download + + "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." @@ -7201,17 +7346,17 @@ 儲存最佳化只可供 Signal Backups 付費級別使用。升級你的備份計畫以開始使用此功能。 - Subscribe for %1$s/month + 以每月 %1$s 定期贊助 - This media is no longer available + 此媒體不再適用 - Your current Signal backup plan includes your most recent %1$d days of media. To start backing up all your media, upgrade now. + 你目前的 Signal 備份計畫包括最近 %1$d 天的媒體。若要開始備份所有媒體,請立即升級。 - Subscribe for %1$s/month + 以每月 %1$s 定期贊助 現已在你所有裝置上同步刪除 @@ -7254,11 +7399,13 @@ 備份類型已變更且定期贊助已取消 - 定期贊助已取消 + Subscription canceled 下載完成 備份將會通宵建立。 + + Subscription inactive 備份計畫 @@ -7267,8 +7414,12 @@ %1$s/月 你的備份計畫是免費的 - + 續約 %1$s + + Expires on %1$s + + Expired on %1$s 備份你的訊息紀錄,讓你在使用新手機或重新安裝 Signal 時,絕不會遺失資料。 @@ -7313,6 +7464,10 @@ 手動備份 請輸入你的裝置 PIN 碼、密碼或圖案。 + + Re-enable backups + + Backups have been turned off and your data has been deleted from Signal\'s secure storage service. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4622184735..c07ff8ddd1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5086,7 +5086,7 @@ Groups Only message from group chats - + Add %1$s folder added. diff --git a/app/static-ips.gradle.kts b/app/static-ips.gradle.kts index 56c0935ecf..251aebd192 100644 --- a/app/static-ips.gradle.kts +++ b/app/static-ips.gradle.kts @@ -1,5 +1,5 @@ rootProject.extra["service_ips"] = """new String[]{"13.248.212.111","76.223.92.165"}""" -rootProject.extra["storage_ips"] = """new String[]{"142.251.40.147"}""" +rootProject.extra["storage_ips"] = """new String[]{"142.251.40.211"}""" rootProject.extra["cdn_ips"] = """new String[]{"18.161.21.122","18.161.21.4","18.161.21.66","18.161.21.70"}""" rootProject.extra["cdn2_ips"] = """new String[]{"104.18.37.148","172.64.150.108"}""" rootProject.extra["cdn3_ips"] = """new String[]{"104.18.37.148","172.64.150.108"}""" From a1774dcd254826ec14904ac67f4ae0e6eea258fa Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 16 Oct 2024 15:33:20 -0400 Subject: [PATCH 22/51] Update baseline profile. --- app/src/main/baseline-prof.txt | 1879 +++++++++++++++++++------------- 1 file changed, 1097 insertions(+), 782 deletions(-) diff --git a/app/src/main/baseline-prof.txt b/app/src/main/baseline-prof.txt index 3973606d08..c5dd4334a3 100644 --- a/app/src/main/baseline-prof.txt +++ b/app/src/main/baseline-prof.txt @@ -13,61 +13,24 @@ HPLandroidx/appcompat/view/menu/MenuItemImpl;->applyIconTintIfNecessary(Landroid HPLandroidx/appcompat/view/menu/MenuItemImpl;->getActionView()Landroid/view/View; HPLandroidx/appcompat/view/menu/MenuItemImpl;->getIcon()Landroid/graphics/drawable/Drawable; HPLandroidx/appcompat/view/menu/MenuItemImpl;->getTitleCondensed()Ljava/lang/CharSequence; +HPLandroidx/appcompat/view/menu/MenuItemImpl;->getTitleForItemView(Landroidx/appcompat/view/menu/MenuView$ItemView;)Ljava/lang/CharSequence; HPLandroidx/appcompat/widget/ActionMenuPresenter;->bindItemView(Landroidx/appcompat/view/menu/MenuItemImpl;Landroidx/appcompat/view/menu/MenuView$ItemView;)V HPLandroidx/appcompat/widget/ActionMenuPresenter;->filterLeftoverView(Landroid/view/ViewGroup;I)Z HPLandroidx/appcompat/widget/ActionMenuPresenter;->getItemView(Landroidx/appcompat/view/menu/MenuItemImpl;Landroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View; +HPLandroidx/appcompat/widget/ActionMenuView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroidx/appcompat/widget/ActionMenuView$LayoutParams; HPLandroidx/appcompat/widget/AppCompatTextView;->setCompoundDrawablesWithIntrinsicBounds(IIII)V HPLandroidx/appcompat/widget/LinearLayoutCompat;->layoutVertical(IIII)V HPLandroidx/appcompat/widget/LinearLayoutCompat;->measureVertical(II)V HPLandroidx/appcompat/widget/SearchView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HPLandroidx/compose/ui/geometry/MutableRect;->intersect(FFFF)V -HPLandroidx/compose/ui/geometry/MutableRect;->setBottom(F)V -HPLandroidx/compose/ui/geometry/MutableRect;->setLeft(F)V -HPLandroidx/compose/ui/graphics/Matrix;->map-MK-Hz9U([FJ)J -HPLandroidx/compose/ui/graphics/Matrix;->map-impl([FLandroidx/compose/ui/geometry/MutableRect;)V -HPLandroidx/compose/ui/graphics/Matrix;->timesAssign-58bKbWc([F[F)V -HPLandroidx/compose/ui/node/LayoutNode$collapsedSemantics$1$1;->invoke()V HPLandroidx/compose/ui/node/LayoutNode;->detach$ui_release()V -HPLandroidx/compose/ui/node/LayoutNode;->getCollapsedSemantics$ui_release()Landroidx/compose/ui/semantics/SemanticsConfiguration; -HPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->onCoordinatesUsed()V -HPLandroidx/compose/ui/node/NodeCoordinator;->localBoundingBoxOf(Landroidx/compose/ui/layout/LayoutCoordinates;Z)Landroidx/compose/ui/geometry/Rect; -HPLandroidx/compose/ui/node/NodeCoordinator;->rectInParent$ui_release(Landroidx/compose/ui/geometry/MutableRect;ZZ)V -HPLandroidx/compose/ui/platform/AndroidComposeView;->localToScreen-MK-Hz9U(J)J -HPLandroidx/compose/ui/platform/AndroidComposeView;->recalculateWindowPosition()V -HPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api29Impl;->addPageActions(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;Landroidx/compose/ui/semantics/SemanticsNode;)V -HPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->boundsInScreen(Landroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds;)Landroid/graphics/Rect; -HPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->createNodeInfo(I)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; -HPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getInfoIsCheckable(Landroidx/compose/ui/semantics/SemanticsNode;)Z -HPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getInfoStateDescriptionOrNull(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/String; -HPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getInfoText(Landroidx/compose/ui/semantics/SemanticsNode;)Landroidx/compose/ui/text/AnnotatedString; -HPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getIterableTextForAccessibility(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/String; -HPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->isScreenReaderFocusable(Landroidx/compose/ui/semantics/SemanticsNode;)Z -HPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->populateAccessibilityNodeInfoProperties(ILandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;Landroidx/compose/ui/semantics/SemanticsNode;)V -HPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->enabled(Landroidx/compose/ui/semantics/SemanticsNode;)Z -HPLandroidx/compose/ui/platform/CalculateMatrixToWindowApi29;->calculateMatrixToWindow-EL8BTi8(Landroid/view/View;[F)V -HPLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->updateMatrix()V -HPLandroidx/compose/ui/platform/SemanticsUtils_androidKt;->getAllUncoveredSemanticsNodesToIntObjectMap$findAllSemanticNodesRecursive(Landroid/graphics/Region;Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/collection/MutableIntObjectMap;Landroidx/compose/ui/semantics/SemanticsNode;Landroid/graphics/Region;)V -HPLandroidx/compose/ui/platform/accessibility/CollectionInfo_androidKt;->setCollectionInfo(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V -HPLandroidx/compose/ui/semantics/SemanticsConfiguration;->containsImportantForAccessibility$ui_release()Z -HPLandroidx/compose/ui/semantics/SemanticsNode;->fakeSemanticsNode-ypyhhiA(Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/semantics/SemanticsNode; -HPLandroidx/compose/ui/semantics/SemanticsNode;->getParent()Landroidx/compose/ui/semantics/SemanticsNode; -HPLandroidx/compose/ui/semantics/SemanticsNodeKt;->SemanticsNode(Landroidx/compose/ui/node/LayoutNode;Z)Landroidx/compose/ui/semantics/SemanticsNode; -HPLandroidx/compose/ui/semantics/SemanticsNodeKt;->getOuterMergingSemantics(Landroidx/compose/ui/node/LayoutNode;)Landroidx/compose/ui/node/SemanticsModifierNode; +HPLandroidx/constraintlayout/core/ArrayRow;->(Landroidx/constraintlayout/core/Cache;)V HPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->hasResolvedTargets(II)Z -HPLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->addHorizontalWrapMaxVariable(Landroidx/constraintlayout/core/widgets/ConstraintAnchor;)V -HPLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->addHorizontalWrapMinVariable(Landroidx/constraintlayout/core/widgets/ConstraintAnchor;)V HPLandroidx/constraintlayout/core/widgets/Guideline;->addToSolver(Landroidx/constraintlayout/core/LinearSystem;Z)V HPLandroidx/constraintlayout/core/widgets/Guideline;->getAnchor(Landroidx/constraintlayout/core/widgets/ConstraintAnchor$Type;)Landroidx/constraintlayout/core/widgets/ConstraintAnchor; HPLandroidx/constraintlayout/core/widgets/Guideline;->updateFromSolver(Landroidx/constraintlayout/core/LinearSystem;Z)V HPLandroidx/constraintlayout/widget/ConstraintLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->onInitializeAccessibilityNodeInfo(Landroid/view/View;Landroid/view/accessibility/AccessibilityNodeInfo;)V -HPLandroidx/core/view/AccessibilityDelegateCompat;->getAccessibilityNodeProvider(Landroid/view/View;)Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat; -HPLandroidx/core/view/AccessibilityDelegateCompat;->getActionList(Landroid/view/View;)Ljava/util/List; HPLandroidx/core/view/TreeIterator;->hasNext()Z -HPLandroidx/core/view/ViewCompat;->getStateDescription(Landroid/view/View;)Ljava/lang/CharSequence; -HPLandroidx/core/view/ViewCompat;->isAccessibilityHeading(Landroid/view/View;)Z -HPLandroidx/core/view/ViewCompat;->screenReaderFocusableProperty()Landroidx/core/view/ViewCompat$AccessibilityViewProperty; -HPLandroidx/core/view/ViewCompat;->stateDescriptionProperty()Landroidx/core/view/ViewCompat$AccessibilityViewProperty; +HPLandroidx/core/view/TreeIterator;->next()Ljava/lang/Object; HPLandroidx/core/view/ViewGroupKt$children$1;->(Landroid/view/ViewGroup;)V HPLandroidx/core/view/ViewGroupKt$children$1;->iterator()Ljava/util/Iterator; HPLandroidx/core/view/ViewGroupKt$descendants$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; @@ -77,17 +40,12 @@ HPLandroidx/core/view/ViewGroupKt$iterator$1;->next()Landroid/view/View; HPLandroidx/core/view/ViewGroupKt$iterator$1;->next()Ljava/lang/Object; HPLandroidx/core/view/ViewGroupKt;->getChildren(Landroid/view/ViewGroup;)Lkotlin/sequences/Sequence; HPLandroidx/core/view/ViewGroupKt;->iterator(Landroid/view/ViewGroup;)Ljava/util/Iterator; -HPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->(Landroid/view/accessibility/AccessibilityNodeInfo;)V -HPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setPaneTitle(Ljava/lang/CharSequence;)V -HPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setScreenReaderFocusable(Z)V -HPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setStateDescription(Ljava/lang/CharSequence;)V HPLandroidx/customview/poolingcontainer/PoolingContainer;->callPoolingContainerOnRelease(Landroid/view/View;)V HPLandroidx/fragment/app/FragmentManager;->saveAllStateInternal()Landroid/os/Bundle; -HPLandroidx/fragment/app/FragmentState;->(Landroidx/fragment/app/Fragment;)V HPLandroidx/fragment/app/FragmentStateManager;->destroy()V +HPLandroidx/fragment/app/FragmentStateManager;->saveState()Landroid/os/Bundle; HPLandroidx/media3/ui/PlayerView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V HPLandroidx/recyclerview/widget/AdapterHelper;->applyPendingUpdatesToPosition(I)I -HPLandroidx/recyclerview/widget/BatchingListUpdateCallback;->onChanged(IILjava/lang/Object;)V HPLandroidx/recyclerview/widget/ConcatAdapter;->findRelativeAdapterPositionIn(Landroidx/recyclerview/widget/RecyclerView$Adapter;Landroidx/recyclerview/widget/RecyclerView$ViewHolder;I)I HPLandroidx/recyclerview/widget/ConcatAdapter;->getAdapters()Ljava/util/List; HPLandroidx/recyclerview/widget/ConcatAdapter;->getItemCount()I @@ -99,39 +57,31 @@ HPLandroidx/recyclerview/widget/ConcatAdapterController;->getLocalAdapterPositio HPLandroidx/recyclerview/widget/ConcatAdapterController;->getTotalCount()I HPLandroidx/recyclerview/widget/ConcatAdapterController;->onBindViewHolder(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;I)V HPLandroidx/recyclerview/widget/ConcatAdapterController;->releaseWrapperAndLocalPosition(Landroidx/recyclerview/widget/ConcatAdapterController$WrapperAndLocalPosition;)V -HPLandroidx/recyclerview/widget/DiffUtil;->forward(Landroidx/recyclerview/widget/DiffUtil$Range;Landroidx/recyclerview/widget/DiffUtil$Callback;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;I)Landroidx/recyclerview/widget/DiffUtil$Snake; +HPLandroidx/recyclerview/widget/DiffUtil;->backward(Landroidx/recyclerview/widget/DiffUtil$Range;Landroidx/recyclerview/widget/DiffUtil$Callback;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;I)Landroidx/recyclerview/widget/DiffUtil$Snake; HPLandroidx/recyclerview/widget/ListAdapter;->getCurrentList()Ljava/util/List; HPLandroidx/recyclerview/widget/NestedAdapterWrapper;->getCachedItemCount()I HPLandroidx/recyclerview/widget/NestedAdapterWrapper;->getItemViewType(I)I HPLandroidx/recyclerview/widget/RecyclerView$ItemDecoration;->onDraw(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$State;)V -HPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onInitializeAccessibilityNodeInfoForItem(Landroid/view/View;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V HPLandroidx/recyclerview/widget/RecyclerView$ViewHolder;->getAdapterPosition()I HPLandroidx/recyclerview/widget/RecyclerView$ViewHolder;->getBindingAdapterPosition()I HPLandroidx/recyclerview/widget/RecyclerView;->getAdapterPositionInRecyclerView(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)I HPLandroidx/recyclerview/widget/RecyclerView;->getChildViewHolder(Landroid/view/View;)Landroidx/recyclerview/widget/RecyclerView$ViewHolder; -HPLandroidx/recyclerview/widget/RecyclerView;->viewRangeUpdate(IILjava/lang/Object;)V -HPLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->getAccessibilityNodeProvider(Landroid/view/View;)Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat; -HPLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->onInitializeAccessibilityNodeInfo(Landroid/view/View;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V HPLandroidx/recyclerview/widget/ViewInfoStore;->addToPreLayout(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo;)V -HPLandroidx/recyclerview/widget/ViewInfoStore;->isDisappearing(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Z HPLandroidx/recyclerview/widget/ViewInfoStore;->popFromLayoutStep(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;I)Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo; HPLandroidx/recyclerview/widget/ViewTypeStorage$IsolatedViewTypeStorage$WrapperViewTypeLookup;->localToGlobal(I)I HPLandroidx/savedstate/SavedStateRegistry;->performSave(Landroid/os/Bundle;)V -HPLcom/fasterxml/jackson/databind/node/ArrayNode;->(Lcom/fasterxml/jackson/databind/node/JsonNodeFactory;)V -HPLcom/fasterxml/jackson/databind/node/ArrayNode;->_add(Lcom/fasterxml/jackson/databind/JsonNode;)Lcom/fasterxml/jackson/databind/node/ArrayNode; HPLcom/google/android/material/animation/ArgbEvaluatorCompat;->evaluate(FLjava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Integer; HPLcom/google/android/material/imageview/ShapeableImageView$OutlineProvider;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V HPLcom/google/common/collect/Sets;->intersection(Ljava/util/Set;Ljava/util/Set;)Lcom/google/common/collect/Sets$SetView; HPLcom/pnikosis/materialishprogress/ProgressWheel;->parseAttributes(Landroid/content/res/TypedArray;)V +HPLcom/squareup/wire/internal/Internal;->checkElementsNotNull(Ljava/util/List;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableCombineLatest$CombinerObserver;->onNext(Ljava/lang/Object;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableCombineLatest$LatestCoordinator;->drain()V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableCombineLatest$LatestCoordinator;->innerNext(ILjava/lang/Object;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableDoOnEach$DoOnEachObserver;->onNext(Ljava/lang/Object;)V -HPLio/reactivex/rxjava3/internal/operators/observable/ObservableFilter$FilterObserver;->onNext(Ljava/lang/Object;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle$FlatMapSingleObserver;->innerSuccess(Lio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle$FlatMapSingleObserver$InnerObserver;Ljava/lang/Object;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle$FlatMapSingleObserver;->onNext(Ljava/lang/Object;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableMap$MapObserver;->onNext(Ljava/lang/Object;)V -HPLio/reactivex/rxjava3/internal/operators/observable/ObservableObserveOn$ObserveOnObserver;->drainFused()V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableRefCount;->subscribeActual(Lio/reactivex/rxjava3/core/Observer;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableReplay$BoundedReplayBuffer;->replay(Lio/reactivex/rxjava3/internal/operators/observable/ObservableReplay$InnerDisposable;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableReplay$InnerDisposable;->isDisposed()Z @@ -140,6 +90,7 @@ HPLio/reactivex/rxjava3/internal/operators/observable/ObservableReplay$ReplayObs HPLio/reactivex/rxjava3/internal/operators/observable/ObservableReplay$ReplaySource;->subscribe(Lio/reactivex/rxjava3/core/Observer;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableSwitchMap$SwitchMapObserver;->drain()V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableSwitchMap$SwitchMapObserver;->onNext(Ljava/lang/Object;)V +HPLio/reactivex/rxjava3/internal/schedulers/ScheduledRunnable;->dispose()V HPLio/reactivex/rxjava3/kotlin/SubscribersKt;->subscribeBy(Lio/reactivex/rxjava3/core/Observable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)Lio/reactivex/rxjava3/disposables/Disposable; HPLj$/time/Instant;->atZone(Lj$/time/ZoneId;)Lj$/time/ZonedDateTime; HPLj$/time/LocalDateTime;->U()Lj$/time/LocalDate; @@ -147,29 +98,31 @@ HPLj$/time/ZonedDateTime;->(Lj$/time/LocalDateTime;Lj$/time/ZoneId;Lj$/tim HPLj$/time/ZonedDateTime;->M(JILj$/time/ZoneId;)Lj$/time/ZonedDateTime; HPLj$/time/ZonedDateTime;->O(Lj$/time/Instant;Lj$/time/ZoneId;)Lj$/time/ZonedDateTime; HPLj$/time/ZonedDateTime;->toLocalDate()Lj$/time/LocalDate; +HPLkotlin/sequences/SequencesKt;->filterIsInstance(Lkotlin/sequences/Sequence;Ljava/lang/Class;)Lkotlin/sequences/Sequence; HPLkotlin/sequences/SequencesKt___SequencesJvmKt$filterIsInstance$1;->(Ljava/lang/Class;)V HPLkotlin/sequences/SequencesKt___SequencesJvmKt$filterIsInstance$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean; HPLkotlin/sequences/SequencesKt___SequencesJvmKt$filterIsInstance$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HPLkotlin/sequences/SequencesKt___SequencesJvmKt;->filterIsInstance(Lkotlin/sequences/Sequence;Ljava/lang/Class;)Lkotlin/sequences/Sequence; -HPLnet/zetetic/database/sqlcipher/SQLiteConnection;->finalizePreparedStatement(Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;)V +HPLkotlinx/coroutines/channels/BufferedChannel;->cancelSuspendedReceiveRequests(Lkotlinx/coroutines/channels/ChannelSegment;J)V +HPLkotlinx/coroutines/internal/Segment;->onSlotCleaned()V +HPLorg/signal/core/util/Bitmask;->read(JII)J HPLorg/signal/core/util/SqlUtil;->buildSingleCollectionQuery(Ljava/lang/String;Ljava/util/Collection;Ljava/lang/String;Lorg/signal/core/util/SqlUtil$CollectionOperator;)Lorg/signal/core/util/SqlUtil$Query; HPLorg/signal/core/util/concurrent/DeadlockDetector;->hasPotentialLock([Ljava/lang/StackTraceElement;)Z HPLorg/signal/core/util/concurrent/SettableFuture;->(Ljava/lang/Object;)V HPLorg/signal/core/util/concurrent/SignalExecutors$$ExternalSyntheticLambda0;->rejectedExecution(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V -HPLorg/signal/core/util/concurrent/SignalExecutors;->$r8$lambda$PuKeoHyTOgRHxCNNBi9u3dUls_w(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V HPLorg/signal/core/util/concurrent/SignalExecutors;->lambda$newCachedBoundedExecutor$1(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V +HPLorg/signal/core/util/tracing/DebugAnnotation;->(Ljava/lang/Long;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/Double;Ljava/lang/String;Ljava/lang/Long;Lorg/signal/core/util/tracing/DebugAnnotation$NestedValue;Lokio/ByteString;)V HPLorg/signal/libsignal/protocol/ecc/ECPublicKey;->equals(Ljava/lang/Object;)Z HPLorg/signal/paging/FixedSizePagingController;->lambda$onDataItemChanged$2(Ljava/lang/Object;)V -HPLorg/thoughtcrime/securesms/attachments/DatabaseAttachment;->hashCode()I HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$2;->(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)V HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$2;->invoke(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGift;)Ljava/lang/Boolean; HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$4;->(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)V +HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$4;->invoke(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGift;)Ljava/lang/Boolean; HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$notAnimated$1;->(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)V HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$notAnimated$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$notAnimated$1;->invoke(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGift;)Ljava/lang/Boolean; -HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->access$getAnimationState$p(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)Ljava/util/Map; HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->onDrawOver(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$State;)V HPLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->applyCornersForSizeClass2()V HPLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->getCells()[Lorg/thoughtcrime/securesms/components/ThumbnailView; @@ -180,7 +133,6 @@ HPLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->setSlide(Lcom/bump HPLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->setSlides(Lcom/bumptech/glide/RequestManager;Ljava/util/List;Z)V HPLorg/thoughtcrime/securesms/components/AvatarImageView;->disableQuickContact()V HPLorg/thoughtcrime/securesms/components/ComposeText;->onDraw(Landroid/graphics/Canvas;)V -HPLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentDate(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Ljava/util/Locale;Lorg/thoughtcrime/securesms/conversation/ConversationItemDisplayMode;)V HPLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentDeliveryStatus(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)V HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnail;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnail;->setCancelTransferClickListener(Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;)V @@ -214,16 +166,16 @@ HPLorg/thoughtcrime/securesms/components/CornerMask;->mask(Landroid/graphics/Can HPLorg/thoughtcrime/securesms/components/Outliner;->draw(Landroid/graphics/Canvas;IIII)V HPLorg/thoughtcrime/securesms/components/QuoteView;->applyColorTheme()V HPLorg/thoughtcrime/securesms/components/QuoteView;->dismiss()V -HPLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->isListCommitted()Z HPLorg/thoughtcrime/securesms/components/ThumbnailView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HPLorg/thoughtcrime/securesms/components/ThumbnailView;->hasSameContents(Lorg/thoughtcrime/securesms/mms/Slide;Lorg/thoughtcrime/securesms/mms/Slide;)Z HPLorg/thoughtcrime/securesms/components/ThumbnailView;->onMeasure(II)V HPLorg/thoughtcrime/securesms/components/ThumbnailView;->setBounds(IIII)V +HPLorg/thoughtcrime/securesms/components/ThumbnailView;->setCancelTransferClickListener(Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;)V HPLorg/thoughtcrime/securesms/components/ThumbnailView;->setClickable(Z)V HPLorg/thoughtcrime/securesms/components/ThumbnailView;->setFocusable(Z)V HPLorg/thoughtcrime/securesms/components/ThumbnailView;->setImageResource(Lcom/bumptech/glide/RequestManager;Lorg/thoughtcrime/securesms/mms/Slide;ZZII)Lorg/signal/core/util/concurrent/ListenableFuture; -HPLorg/thoughtcrime/securesms/components/ThumbnailView;->setPlayVideoClickListener(Lorg/thoughtcrime/securesms/mms/SlideClickListener;)V HPLorg/thoughtcrime/securesms/components/ThumbnailView;->setRadii(IIII)V +HPLorg/thoughtcrime/securesms/components/ThumbnailView;->setStartTransferClickListener(Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;)V +HPLorg/thoughtcrime/securesms/components/ThumbnailView;->setThumbnailClickListener(Lorg/thoughtcrime/securesms/mms/SlideClickListener;)V HPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->getLongestLineWidth(Ljava/lang/CharSequence;)F HPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->setOverflowText(Ljava/lang/CharSequence;)V HPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->setTextColor(I)V @@ -241,12 +193,10 @@ HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView$se HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->deriveMode(Lorg/thoughtcrime/securesms/components/transfercontrols/TransferControlViewState;)Lorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView$Mode; HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->isUpdateToExistingSet(Lorg/thoughtcrime/securesms/components/transfercontrols/TransferControlViewState;Ljava/util/List;)Z -HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setCancelClickListener(Landroid/view/View$OnClickListener;)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setClickable(Z)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setFocusable(Z)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setShowSecondaryText(Z)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setSlides(Ljava/util/List;)V -HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setTransferClickListener(Landroid/view/View$OnClickListener;)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setVisible(Z)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->updateState(Lkotlin/jvm/functions/Function1;)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlViewState;->(ZZZLjava/util/List;Landroid/view/View$OnClickListener;Landroid/view/View$OnClickListener;Landroid/view/View$OnClickListener;ZLjava/util/Map;Ljava/util/Map;ZZ)V @@ -255,12 +205,10 @@ HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlViewSta HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlViewState;->equals(Ljava/lang/Object;)Z HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlViewState;->toString()Ljava/lang/String; HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferProgressView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V -HPLorg/thoughtcrime/securesms/conversation/ClipProjectionDrawable;->draw(Landroid/graphics/Canvas;)V HPLorg/thoughtcrime/securesms/conversation/ConversationHeaderView;->setTitle(Lorg/thoughtcrime/securesms/recipients/Recipient;Ljava/lang/Runnable;)Ljava/lang/String; HPLorg/thoughtcrime/securesms/conversation/ConversationHeaderView;->updateOutlineVisibility()V HPLorg/thoughtcrime/securesms/conversation/ConversationItem;->bind(Landroidx/lifecycle/LifecycleOwner;Lorg/thoughtcrime/securesms/conversation/ConversationMessage;Lj$/util/Optional;Lj$/util/Optional;Lcom/bumptech/glide/RequestManager;Ljava/util/Locale;Ljava/util/Set;Lorg/thoughtcrime/securesms/recipients/Recipient;Ljava/lang/String;ZZZZLorg/thoughtcrime/securesms/conversation/colors/Colorizer;Lorg/thoughtcrime/securesms/conversation/ConversationItemDisplayMode;)V HPLorg/thoughtcrime/securesms/conversation/ConversationItem;->getActiveFooter(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Lorg/thoughtcrime/securesms/components/ConversationItemFooter; -HPLorg/thoughtcrime/securesms/conversation/ConversationItem;->getColorizerProjections(Landroid/view/ViewGroup;)Lorg/thoughtcrime/securesms/util/ProjectionList; HPLorg/thoughtcrime/securesms/conversation/ConversationItem;->getGiftId()J HPLorg/thoughtcrime/securesms/conversation/ConversationItem;->getOpenableGiftProjection(Z)Lorg/thoughtcrime/securesms/util/Projection; HPLorg/thoughtcrime/securesms/conversation/ConversationItem;->getSnapshotProjections(Landroid/view/ViewGroup;ZZ)Lorg/thoughtcrime/securesms/util/ProjectionList; @@ -301,6 +249,7 @@ HPLorg/thoughtcrime/securesms/conversation/ConversationMessage;->hashCode()I HPLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu$Provider;->onCreateMenu(Landroid/view/Menu;Landroid/view/MenuInflater;)V HPLorg/thoughtcrime/securesms/conversation/MarkReadHelper;->getLatestTimestamp(Lorg/thoughtcrime/securesms/conversation/ConversationAdapterBridge;Landroidx/recyclerview/widget/LinearLayoutManager;)Lj$/util/Optional; HPLorg/thoughtcrime/securesms/conversation/colors/ChatColors;->asSingleColor()I +HPLorg/thoughtcrime/securesms/conversation/colors/ChatColors;->isGradient()Z HPLorg/thoughtcrime/securesms/conversation/colors/Colorizer;->getIncomingBodyTextColor(Landroid/content/Context;Z)I HPLorg/thoughtcrime/securesms/conversation/colors/Colorizer;->getIncomingGroupSenderColor(Landroid/content/Context;Lorg/thoughtcrime/securesms/recipients/Recipient;)I HPLorg/thoughtcrime/securesms/conversation/colors/RecyclerViewColorizer$itemDecoration$1;->drawShaderMask(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;Lorg/thoughtcrime/securesms/conversation/colors/ChatColors;)V @@ -311,7 +260,6 @@ HPLorg/thoughtcrime/securesms/conversation/mutiselect/ConversationItemAnimator;- HPLorg/thoughtcrime/securesms/conversation/mutiselect/ConversationItemAnimator;->animateSlide(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo;Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo;)Z HPLorg/thoughtcrime/securesms/conversation/mutiselect/ConversationItemAnimator;->isRunning()Z HPLorg/thoughtcrime/securesms/conversation/mutiselect/ConversationItemAnimator;->onAnimationFinished(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)V -HPLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectCollection$Single;->toSet()Ljava/util/Set; HPLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->cleanPulseAnimators()V HPLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->findAdapterBridge(Landroidx/recyclerview/widget/RecyclerView;)Lorg/thoughtcrime/securesms/conversation/ConversationAdapterBridge; HPLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->getDifferenceForPart(Ljava/util/Set;Lorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectPart;)Lorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration$Difference; @@ -327,7 +275,6 @@ HPLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectPart$Attachment HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->bindPayloadsIfAvailable()Z HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getBindable()Lorg/thoughtcrime/securesms/BindableConversationItem; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getColorizerProjections(Landroid/view/ViewGroup;)Lorg/thoughtcrime/securesms/util/ProjectionList; -HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getNextMessage()Lj$/util/Optional; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getPreviousMessage()Lj$/util/Optional; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$IncomingMediaViewHolder;->bind(Lorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;)V HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ThreadHeaderViewHolder;->bind(Lorg/thoughtcrime/securesms/conversation/v2/data/ThreadHeader;)V @@ -341,7 +288,6 @@ HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeCon HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$7;->invoke()Ljava/lang/Boolean; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$8;->invoke()Ljava/lang/Boolean; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->()V -HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->access$getBinding(Lorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;)Lorg/thoughtcrime/securesms/databinding/V2ConversationFragmentBinding; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->doAfterFirstRender()V HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->getBinding()Lorg/thoughtcrime/securesms/databinding/V2ConversationFragmentBinding; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->getViewModel()Lorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel; @@ -356,7 +302,6 @@ HPLorg/thoughtcrime/securesms/conversation/v2/ConversationItemDecorations;->time HPLorg/thoughtcrime/securesms/conversation/v2/ConversationItemDecorations;->toEpochDay(Lorg/thoughtcrime/securesms/conversation/v2/data/ConversationMessageElement;)J HPLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getIdentityRecords$lambda$12(Lorg/thoughtcrime/securesms/database/model/GroupRecord;Lorg/thoughtcrime/securesms/recipients/Recipient;)Lorg/thoughtcrime/securesms/conversation/v2/IdentityRecordsState; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getIdentityRecords(Lorg/thoughtcrime/securesms/recipients/Recipient;Lorg/thoughtcrime/securesms/database/model/GroupRecord;)Lio/reactivex/rxjava3/core/Single; -HPLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getRequestReviewState$lambda$16(Lorg/thoughtcrime/securesms/database/model/GroupRecord;Lorg/thoughtcrime/securesms/messagerequests/MessageRequestState;Lorg/thoughtcrime/securesms/recipients/Recipient;)Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getRequestReviewState(Lorg/thoughtcrime/securesms/recipients/Recipient;Lorg/thoughtcrime/securesms/database/model/GroupRecord;Lorg/thoughtcrime/securesms/messagerequests/MessageRequestState;)Lio/reactivex/rxjava3/core/Single; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$10;->apply(Lorg/thoughtcrime/securesms/recipients/Recipient;Lj$/util/Optional;)Lorg/thoughtcrime/securesms/conversation/v2/InputReadyState; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$11;->accept(Lorg/thoughtcrime/securesms/conversation/v2/InputReadyState;)V @@ -372,7 +317,6 @@ HPLorg/thoughtcrime/securesms/conversation/v2/IdentityRecordsState;->(Lorg HPLorg/thoughtcrime/securesms/conversation/v2/IdentityRecordsState;->equals(Ljava/lang/Object;)Z HPLorg/thoughtcrime/securesms/conversation/v2/InputReadyState;->(Lorg/thoughtcrime/securesms/recipients/Recipient;Lorg/thoughtcrime/securesms/messagerequests/MessageRequestState;Lorg/thoughtcrime/securesms/database/model/GroupRecord;ZZZ)V HPLorg/thoughtcrime/securesms/conversation/v2/InputReadyState;->equals(Ljava/lang/Object;)Z -HPLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->equals(Ljava/lang/Object;)Z HPLorg/thoughtcrime/securesms/conversation/v2/data/ConversationDataSource;->load(IIILorg/signal/paging/PagedDataSource$CancellationSignal;)Ljava/util/List; HPLorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;->getConversationMessage()Lorg/thoughtcrime/securesms/conversation/ConversationMessage; HPLorg/thoughtcrime/securesms/conversation/v2/data/IncomingTextOnly;->getConversationMessage()Lorg/thoughtcrime/securesms/conversation/ConversationMessage; @@ -388,7 +332,6 @@ HPLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->getOutl HPLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->isSolidColor()Z HPLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->setCorners([F)V HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemLayout;->onMeasure(II)V -HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->isEndOfMessageCluster(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->setMessageShape(Lorg/thoughtcrime/securesms/database/model/MessageRecord;ZI)Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape$MessageShape; HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder$footerDrawable$1;->invoke()Lorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable$ChatColorsData; HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->(Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyBindingBridge;Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationContext;Lorg/thoughtcrime/securesms/conversation/v2/items/V2FooterPositionDelegate;)V @@ -396,16 +339,12 @@ HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyVi HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->getColorizerProjections(Landroid/view/ViewGroup;)Lorg/thoughtcrime/securesms/util/ProjectionList; HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->invalidateBodyBubbleDrawable(Landroid/view/ViewGroup;)V HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->invalidateChatColorsDrawable(Landroid/view/ViewGroup;)V -HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->invalidateFooterDrawable(Landroid/view/ViewGroup;)V HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->linkifyMessageBody(Landroid/text/Spannable;)V HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->presentBody()V HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->presentSender()V -HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getBodyTextColor(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;)I -HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getColor(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)I HPLorg/thoughtcrime/securesms/conversation/v2/items/V2FooterPositionDelegate;->onPostMeasure()Z -HPLorg/thoughtcrime/securesms/conversationlist/model/Conversation;->equals(Ljava/lang/Object;)Z HPLorg/thoughtcrime/securesms/crypto/storage/SignalBaseIdentityKeyStore;->getIdentityRecords(Ljava/util/List;)Lorg/thoughtcrime/securesms/database/identity/IdentityRecordList; -HPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$unregisterObserver$19(Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V +HPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$unregisterObserver$20(Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V HPLorg/thoughtcrime/securesms/database/GroupTable;->getGroupsContainingMember(Lorg/thoughtcrime/securesms/recipients/RecipientId;ZZ)Ljava/util/List; HPLorg/thoughtcrime/securesms/database/identity/IdentityRecordList;->(Ljava/util/Collection;)V HPLorg/thoughtcrime/securesms/database/model/DisplayRecord;->isChangeNumber()Z @@ -442,43 +381,33 @@ HPLorg/thoughtcrime/securesms/database/model/MessageRecord;->isSessionSwitchover HPLorg/thoughtcrime/securesms/database/model/MessageRecord;->isSmsExportType()Z HPLorg/thoughtcrime/securesms/database/model/MessageRecord;->isThreadMergeEventType()Z HPLorg/thoughtcrime/securesms/database/model/MessageRecord;->isUpdate()Z -HPLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getLinkPreviews()Ljava/util/List; HPLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getQuote()Lorg/thoughtcrime/securesms/database/model/Quote; HPLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getUpdateDisplayBody(Landroid/content/Context;Lj$/util/function/Consumer;)Lorg/thoughtcrime/securesms/database/model/UpdateDescription; HPLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->isMediaPending()Z HPLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->withAttachments(Ljava/util/List;)Lorg/thoughtcrime/securesms/database/model/MmsMessageRecord; -HPLorg/thoughtcrime/securesms/database/model/ThreadRecord;->equals(Ljava/lang/Object;)Z -HPLorg/thoughtcrime/securesms/fonts/SignalSymbols$CustomTypefaceSpan;->update(Landroid/text/TextPaint;)V HPLorg/thoughtcrime/securesms/fonts/SignalSymbols;->getSpannedString(Landroid/content/Context;Lorg/thoughtcrime/securesms/fonts/SignalSymbols$Weight;Lorg/thoughtcrime/securesms/fonts/SignalSymbols$Glyph;)Ljava/lang/CharSequence; HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration$onDraw$1;->(Landroidx/recyclerview/widget/RecyclerView;)V HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration$onDraw$1;->invoke(Landroid/view/View;)Landroidx/recyclerview/widget/RecyclerView$ViewHolder; HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration$onDraw$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration;->onDraw(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$State;)V HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration;->setParentRecyclerTranslationY(Landroidx/recyclerview/widget/RecyclerView;)V -HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$RangeComparator;->compare(Ljava/lang/Integer;Ljava/lang/Integer;)I HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController;->getPlaybackSet(Ljava/util/Set;II)Ljava/util/Set; HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController;->performPlaybackUpdate(Landroidx/recyclerview/widget/RecyclerView;)V -HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionPlayerHolder;->injectVideoViews(Landroid/content/Context;Landroidx/lifecycle/Lifecycle;Landroid/view/ViewGroup;I)Ljava/util/List; HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionRecycler;->getCurrentHolder(I)Lorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionPlayerHolder; HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionRecycler;->stopAndReleaseAssignedVideos(Ljava/util/Set;)V HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionRecycler;->update(Landroidx/recyclerview/widget/RecyclerView;Ljava/util/List;Ljava/util/Set;)V HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionRecycler;->updateVideoDisplayPositionAndSize(Landroidx/recyclerview/widget/RecyclerView;Lorg/thoughtcrime/securesms/giph/mp4/GiphyMp4Playable;)V -HPLorg/thoughtcrime/securesms/keyvalue/SettingsValues;->getMessageFontSize()I -HPLorg/thoughtcrime/securesms/keyvalue/WallpaperValues;->hasWallpaperSet()Z HPLorg/thoughtcrime/securesms/messagerequests/MessageRequestRepository;->getMessageRequestState(Lorg/thoughtcrime/securesms/recipients/Recipient;J)Lorg/thoughtcrime/securesms/messagerequests/MessageRequestState; -HPLorg/thoughtcrime/securesms/mms/Slide;->asAttachment()Lorg/thoughtcrime/securesms/attachments/Attachment; +HPLorg/thoughtcrime/securesms/mms/ImageSlide;->isBorderless()Z HPLorg/thoughtcrime/securesms/mms/Slide;->equals(Ljava/lang/Object;)Z HPLorg/thoughtcrime/securesms/mms/Slide;->getTransferState()I HPLorg/thoughtcrime/securesms/mms/Slide;->hashCode()I -HPLorg/thoughtcrime/securesms/mms/Slide;->isInProgress()Z HPLorg/thoughtcrime/securesms/mms/Slide;->isPendingDownload()Z HPLorg/thoughtcrime/securesms/mms/SlideDeck;->getTextSlide()Lorg/thoughtcrime/securesms/mms/TextSlide; HPLorg/thoughtcrime/securesms/mms/SlideDeck;->getThumbnailSlides()Ljava/util/List; -HPLorg/thoughtcrime/securesms/profiles/ProfileName;->equals(Ljava/lang/Object;)Z HPLorg/thoughtcrime/securesms/reactions/ReactionsConversationView;->clear()V HPLorg/thoughtcrime/securesms/recipients/Recipient$combinedAboutAndEmoji$2;->invoke()Ljava/lang/String; HPLorg/thoughtcrime/securesms/recipients/Recipient;->getHasWallpaper()Z -HPLorg/thoughtcrime/securesms/recipients/Recipient;->hasSameContent(Lorg/thoughtcrime/securesms/recipients/Recipient;)Z HPLorg/thoughtcrime/securesms/recipients/RecipientUtil;->isMessageRequestAccepted(Landroid/content/Context;J)Z HPLorg/thoughtcrime/securesms/util/BubbleUtil;->canBubble(Landroid/content/Context;Lorg/thoughtcrime/securesms/recipients/Recipient;Ljava/lang/Long;)Z HPLorg/thoughtcrime/securesms/util/DateUtils;->getDatelessRelativeTimeSpanFormattedDate(Landroid/content/Context;Ljava/util/Locale;J)Lorg/thoughtcrime/securesms/conversation/v2/computed/FormattedDate; @@ -487,9 +416,7 @@ HPLorg/thoughtcrime/securesms/util/DateUtils;->isSameDay(JJ)Z HPLorg/thoughtcrime/securesms/util/JavaTimeExtensionsKt;->toLocalDate$default(JLj$/time/ZoneId;ILjava/lang/Object;)Lj$/time/LocalDate; HPLorg/thoughtcrime/securesms/util/JavaTimeExtensionsKt;->toLocalDate(JLj$/time/ZoneId;)Lj$/time/LocalDate; HPLorg/thoughtcrime/securesms/util/Material3OnScrollHelper;->updateActiveState$lambda$7$lambda$6(Lorg/thoughtcrime/securesms/util/Material3OnScrollHelper;IIIILandroid/animation/ValueAnimator;)V -HPLorg/thoughtcrime/securesms/util/MediaUtil;->isInstantVideoSupported(Lorg/thoughtcrime/securesms/mms/Slide;)Z HPLorg/thoughtcrime/securesms/util/MediaUtil;->isLongTextType(Ljava/lang/String;)Z -HPLorg/thoughtcrime/securesms/util/MediaUtil;->isVideoType(Ljava/lang/String;)Z HPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->hasAudio(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z HPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->hasDocument(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z HPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->hasExtraText(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z @@ -507,13 +434,11 @@ HPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->isViewOnceMessage(Lorg/th HPLorg/thoughtcrime/securesms/util/Projection$Corners;->(FFFF)V HPLorg/thoughtcrime/securesms/util/Projection$Corners;->toRadii()[F HPLorg/thoughtcrime/securesms/util/ProjectionList;->close()V -HPLorg/thoughtcrime/securesms/util/TextSecurePreferences;->getMessageBodyTextSize(Landroid/content/Context;)I HPLorg/thoughtcrime/securesms/util/ViewExtensionsKt;->drawAsTopItemDecoration(Landroid/view/View;Landroid/graphics/Canvas;Landroid/view/View;Landroid/view/View;I)V HPLorg/thoughtcrime/securesms/util/ViewExtensionsKt;->layoutIn(Landroid/view/View;Landroid/view/View;)V HPLorg/thoughtcrime/securesms/util/ViewUtil;->isLtr(Landroid/content/Context;)Z HPLorg/thoughtcrime/securesms/util/ViewUtil;->isLtr(Landroid/view/View;)Z HPLorg/thoughtcrime/securesms/util/ViewUtil;->isRtl(Landroid/content/Context;)Z -HPLorg/thoughtcrime/securesms/util/ViewUtil;->isRtl(Landroid/view/View;)Z HPLorg/thoughtcrime/securesms/util/ViewUtil;->setPaddingEnd(Landroid/view/View;I)V HPLorg/thoughtcrime/securesms/util/ViewUtil;->setPaddingStart(Landroid/view/View;I)V HPLorg/thoughtcrime/securesms/util/ViewUtil;->setTopMargin(Landroid/view/View;IZ)V @@ -1036,6 +961,7 @@ HSPLandroidx/appcompat/widget/AppCompatImageHelper;->(Landroid/widget/Imag HSPLandroidx/appcompat/widget/AppCompatImageHelper;->applyImageLevel()V HSPLandroidx/appcompat/widget/AppCompatImageHelper;->applySupportImageTint()V HSPLandroidx/appcompat/widget/AppCompatImageHelper;->hasOverlappingRendering()Z +HSPLandroidx/appcompat/widget/AppCompatImageHelper;->loadFromAttributes(Landroid/util/AttributeSet;I)V HSPLandroidx/appcompat/widget/AppCompatImageHelper;->obtainLevelFromDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroidx/appcompat/widget/AppCompatImageHelper;->setImageResource(I)V HSPLandroidx/appcompat/widget/AppCompatImageHelper;->shouldApplyFrameworkTintUsingColorFilter()Z @@ -1055,6 +981,7 @@ HSPLandroidx/appcompat/widget/AppCompatTextHelper;->onLayout(ZIIII)V HSPLandroidx/appcompat/widget/AppCompatTextHelper;->onSetCompoundDrawables()V HSPLandroidx/appcompat/widget/AppCompatTextHelper;->onSetTextAppearance(Landroid/content/Context;I)V HSPLandroidx/appcompat/widget/AppCompatTextHelper;->setCompoundDrawables(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V +HSPLandroidx/appcompat/widget/AppCompatTextHelper;->updateTypefaceAndStyle(Landroid/content/Context;Landroidx/appcompat/widget/TintTypedArray;)V HSPLandroidx/appcompat/widget/AppCompatTextView;->(Landroid/content/Context;)V HSPLandroidx/appcompat/widget/AppCompatTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroidx/appcompat/widget/AppCompatTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V @@ -1082,7 +1009,6 @@ HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper$Impl23;->()V HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper$Impl29;->()V HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper$Impl;->()V HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper;->()V -HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper;->(Landroid/widget/TextView;)V HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper;->getAutoSizeTextType()I HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper;->loadFromAttributes(Landroid/util/AttributeSet;I)V HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper;->supportsAutoSizeText()Z @@ -1119,6 +1045,7 @@ HSPLandroidx/appcompat/widget/LinearLayoutCompat;->layoutHorizontal(IIII)V HSPLandroidx/appcompat/widget/LinearLayoutCompat;->measureChildBeforeLayout(Landroid/view/View;IIIII)V HSPLandroidx/appcompat/widget/LinearLayoutCompat;->measureHorizontal(II)V HSPLandroidx/appcompat/widget/LinearLayoutCompat;->onDraw(Landroid/graphics/Canvas;)V +HSPLandroidx/appcompat/widget/LinearLayoutCompat;->onInitializeAccessibilityNodeInfo(Landroid/view/accessibility/AccessibilityNodeInfo;)V HSPLandroidx/appcompat/widget/LinearLayoutCompat;->onLayout(ZIIII)V HSPLandroidx/appcompat/widget/LinearLayoutCompat;->onMeasure(II)V HSPLandroidx/appcompat/widget/LinearLayoutCompat;->setBaselineAligned(Z)V @@ -1426,7 +1353,9 @@ HSPLandroidx/collection/IndexBasedArrayIterator;->next()Ljava/lang/Object; HSPLandroidx/collection/IndexBasedArrayIterator;->remove()V HSPLandroidx/collection/IntIntMap;->()V HSPLandroidx/collection/IntIntMap;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/collection/IntIntMap;->findKeyIndex(I)I HSPLandroidx/collection/IntIntMap;->getCapacity()I +HSPLandroidx/collection/IntIntMap;->getOrDefault(II)I HSPLandroidx/collection/IntList;->(I)V HSPLandroidx/collection/IntList;->(ILkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLandroidx/collection/IntList;->get(I)I @@ -1435,6 +1364,7 @@ HSPLandroidx/collection/IntListKt;->()V HSPLandroidx/collection/IntListKt;->intListOf([I)Landroidx/collection/IntList; HSPLandroidx/collection/IntObjectMap;->()V HSPLandroidx/collection/IntObjectMap;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/collection/IntObjectMap;->contains(I)Z HSPLandroidx/collection/IntObjectMap;->get(I)Ljava/lang/Object; HSPLandroidx/collection/IntObjectMap;->getCapacity()I HSPLandroidx/collection/IntObjectMapKt;->()V @@ -1490,12 +1420,14 @@ HSPLandroidx/collection/MutableIntList;->plusAssign([I)V HSPLandroidx/collection/MutableIntList;->removeAt(I)I HSPLandroidx/collection/MutableIntObjectMap;->(I)V HSPLandroidx/collection/MutableIntObjectMap;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/collection/MutableIntObjectMap;->adjustStorage()V HSPLandroidx/collection/MutableIntObjectMap;->findAbsoluteInsertIndex(I)I HSPLandroidx/collection/MutableIntObjectMap;->findFirstAvailableSlot(I)I HSPLandroidx/collection/MutableIntObjectMap;->initializeGrowth()V HSPLandroidx/collection/MutableIntObjectMap;->initializeMetadata(I)V HSPLandroidx/collection/MutableIntObjectMap;->initializeStorage(I)V HSPLandroidx/collection/MutableIntObjectMap;->put(ILjava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/collection/MutableIntObjectMap;->resizeStorage(I)V HSPLandroidx/collection/MutableIntObjectMap;->set(ILjava/lang/Object;)V HSPLandroidx/collection/MutableIntSet;->(I)V HSPLandroidx/collection/MutableIntSet;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -1640,9 +1572,14 @@ HSPLandroidx/compose/animation/core/TweenSpec;->(IILandroidx/compose/anima HSPLandroidx/compose/animation/core/TweenSpec;->(IILandroidx/compose/animation/core/Easing;ILkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLandroidx/compose/foundation/AbstractClickableNode$TraverseKey;->()V HSPLandroidx/compose/foundation/AbstractClickableNode$TraverseKey;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/AbstractClickableNode$applySemantics$1;->(Landroidx/compose/foundation/AbstractClickableNode;)V HSPLandroidx/compose/foundation/AbstractClickableNode;->()V HSPLandroidx/compose/foundation/AbstractClickableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/IndicationNodeFactory;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)V HSPLandroidx/compose/foundation/AbstractClickableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/IndicationNodeFactory;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/AbstractClickableNode;->applyAdditionalSemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/AbstractClickableNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/foundation/AbstractClickableNode;->getShouldClearDescendantSemantics()Z +HSPLandroidx/compose/foundation/AbstractClickableNode;->getShouldMergeDescendantSemantics()Z HSPLandroidx/compose/foundation/AbstractClickableNode;->initializeIndicationAndInteractionSourceIfNeeded()V HSPLandroidx/compose/foundation/AbstractClickableNode;->onAttach()V HSPLandroidx/compose/foundation/AbstractClickableNode;->onFocusEvent(Landroidx/compose/ui/focus/FocusState;)V @@ -1709,8 +1646,10 @@ HSPLandroidx/compose/foundation/FocusableInNonTouchMode;->getInputModeManager()L HSPLandroidx/compose/foundation/FocusableInteractionNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;)V HSPLandroidx/compose/foundation/FocusableInteractionNode;->setFocus(Z)V HSPLandroidx/compose/foundation/FocusableInteractionNode;->update(Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/FocusableNode$applySemantics$1;->(Landroidx/compose/foundation/FocusableNode;)V HSPLandroidx/compose/foundation/FocusableNode;->()V HSPLandroidx/compose/foundation/FocusableNode;->(Landroidx/compose/foundation/interaction/MutableInteractionSource;)V +HSPLandroidx/compose/foundation/FocusableNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V HSPLandroidx/compose/foundation/FocusableNode;->onFocusEvent(Landroidx/compose/ui/focus/FocusState;)V HSPLandroidx/compose/foundation/FocusableNode;->onGloballyPositioned(Landroidx/compose/ui/layout/LayoutCoordinates;)V HSPLandroidx/compose/foundation/FocusableNode;->update(Landroidx/compose/foundation/interaction/MutableInteractionSource;)V @@ -1997,15 +1936,22 @@ HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleElement;->( HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleElement;->(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily$Resolver;IZIILandroidx/compose/ui/graphics/ColorProducer;Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleElement;->create()Landroidx/compose/foundation/text/modifiers/TextStringSimpleNode; HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleElement;->create()Landroidx/compose/ui/Modifier$Node; +HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode$applySemantics$1;->(Landroidx/compose/foundation/text/modifiers/TextStringSimpleNode;)V +HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode$applySemantics$2;->(Landroidx/compose/foundation/text/modifiers/TextStringSimpleNode;)V +HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode$applySemantics$3;->(Landroidx/compose/foundation/text/modifiers/TextStringSimpleNode;)V +HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode$applySemantics$4;->(Landroidx/compose/foundation/text/modifiers/TextStringSimpleNode;)V HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode$measure$1;->(Landroidx/compose/ui/layout/Placeable;)V HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode;->()V HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode;->(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily$Resolver;IZIILandroidx/compose/ui/graphics/ColorProducer;)V HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode;->(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/font/FontFamily$Resolver;IZIILandroidx/compose/ui/graphics/ColorProducer;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode;->getLayoutCache()Landroidx/compose/foundation/text/modifiers/ParagraphLayoutCache; HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode;->getLayoutCache(Landroidx/compose/ui/unit/Density;)Landroidx/compose/foundation/text/modifiers/ParagraphLayoutCache; +HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode;->getShouldClearDescendantSemantics()Z +HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode;->getShouldMergeDescendantSemantics()Z HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult; HSPLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode;->onMeasureResultChanged()V HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt$LocalSelectionRegistrar$1;->()V @@ -2065,6 +2011,8 @@ HSPLandroidx/compose/material3/ButtonDefaults;->getTextShape(Landroidx/compose/r HSPLandroidx/compose/material3/ButtonDefaults;->textButtonColors(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material3/ButtonColors; HSPLandroidx/compose/material3/ButtonKt$Button$1;->()V HSPLandroidx/compose/material3/ButtonKt$Button$1;->()V +HSPLandroidx/compose/material3/ButtonKt$Button$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/material3/ButtonKt$Button$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroidx/compose/material3/ButtonKt$Button$2$1;->(Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function3;)V HSPLandroidx/compose/material3/ButtonKt$Button$2$1;->invoke(Landroidx/compose/runtime/Composer;I)V HSPLandroidx/compose/material3/ButtonKt$Button$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; @@ -2133,6 +2081,8 @@ HSPLandroidx/compose/material3/IconButtonDefaults;->iconButtonColors(Landroidx/c HSPLandroidx/compose/material3/IconButtonKt;->IconButton(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/material3/IconButtonColors;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V HSPLandroidx/compose/material3/IconKt$Icon$3;->(Landroidx/compose/ui/graphics/painter/Painter;Ljava/lang/String;Landroidx/compose/ui/Modifier;JII)V HSPLandroidx/compose/material3/IconKt$Icon$semantics$1$1;->(Ljava/lang/String;)V +HSPLandroidx/compose/material3/IconKt$Icon$semantics$1$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/material3/IconKt$Icon$semantics$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroidx/compose/material3/IconKt;->()V HSPLandroidx/compose/material3/IconKt;->Icon-ww6aTOc(Landroidx/compose/ui/graphics/painter/Painter;Ljava/lang/String;Landroidx/compose/ui/Modifier;JLandroidx/compose/runtime/Composer;II)V HSPLandroidx/compose/material3/IconKt;->defaultSizeFor(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/painter/Painter;)Landroidx/compose/ui/Modifier; @@ -4051,6 +4001,19 @@ HSPLandroidx/compose/ui/geometry/CornerRadius;->getX-impl(J)F HSPLandroidx/compose/ui/geometry/CornerRadius;->getY-impl(J)F HSPLandroidx/compose/ui/geometry/CornerRadiusKt;->CornerRadius$default(FFILjava/lang/Object;)J HSPLandroidx/compose/ui/geometry/CornerRadiusKt;->CornerRadius(FF)J +HSPLandroidx/compose/ui/geometry/MutableRect;->()V +HSPLandroidx/compose/ui/geometry/MutableRect;->(FFFF)V +HSPLandroidx/compose/ui/geometry/MutableRect;->getBottom()F +HSPLandroidx/compose/ui/geometry/MutableRect;->getLeft()F +HSPLandroidx/compose/ui/geometry/MutableRect;->getRight()F +HSPLandroidx/compose/ui/geometry/MutableRect;->getTop()F +HSPLandroidx/compose/ui/geometry/MutableRect;->intersect(FFFF)V +HSPLandroidx/compose/ui/geometry/MutableRect;->isEmpty()Z +HSPLandroidx/compose/ui/geometry/MutableRect;->setBottom(F)V +HSPLandroidx/compose/ui/geometry/MutableRect;->setLeft(F)V +HSPLandroidx/compose/ui/geometry/MutableRect;->setRight(F)V +HSPLandroidx/compose/ui/geometry/MutableRect;->setTop(F)V +HSPLandroidx/compose/ui/geometry/MutableRectKt;->toRect(Landroidx/compose/ui/geometry/MutableRect;)Landroidx/compose/ui/geometry/Rect; HSPLandroidx/compose/ui/geometry/Offset$Companion;->()V HSPLandroidx/compose/ui/geometry/Offset$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLandroidx/compose/ui/geometry/Offset$Companion;->getInfinite-F1C5BW0()J @@ -4066,6 +4029,7 @@ HSPLandroidx/compose/ui/geometry/Offset;->getDistance-impl(J)F HSPLandroidx/compose/ui/geometry/Offset;->getX-impl(J)F HSPLandroidx/compose/ui/geometry/Offset;->getY-impl(J)F HSPLandroidx/compose/ui/geometry/OffsetKt;->Offset(FF)J +HSPLandroidx/compose/ui/geometry/OffsetKt;->isUnspecified-k-4lQ0M(J)Z HSPLandroidx/compose/ui/geometry/Rect$Companion;->()V HSPLandroidx/compose/ui/geometry/Rect$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLandroidx/compose/ui/geometry/Rect$Companion;->getZero()Landroidx/compose/ui/geometry/Rect; @@ -4114,6 +4078,7 @@ HSPLandroidx/compose/ui/geometry/Size;->getMinDimension-impl(J)F HSPLandroidx/compose/ui/geometry/Size;->getWidth-impl(J)F HSPLandroidx/compose/ui/geometry/Size;->unbox-impl()J HSPLandroidx/compose/ui/geometry/SizeKt;->Size(FF)J +HSPLandroidx/compose/ui/geometry/SizeKt;->getCenter-uvyYCjk(J)J HSPLandroidx/compose/ui/geometry/SizeKt;->toRect-uvyYCjk(J)Landroidx/compose/ui/geometry/Rect; HSPLandroidx/compose/ui/graphics/AndroidBlendMode_androidKt$$ExternalSyntheticApiModelOutline0;->m()Landroid/graphics/BlendMode; HSPLandroidx/compose/ui/graphics/AndroidBlendMode_androidKt$$ExternalSyntheticApiModelOutline21;->m()Landroid/graphics/BlendMode; @@ -4157,6 +4122,7 @@ HSPLandroidx/compose/ui/graphics/AndroidImageBitmap_androidKt$$ExternalSynthetic HSPLandroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;->ActualImageBitmap-x__-hDU(IIIZLandroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroidx/compose/ui/graphics/ImageBitmap; HSPLandroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;->asAndroidBitmap(Landroidx/compose/ui/graphics/ImageBitmap;)Landroid/graphics/Bitmap; HSPLandroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;->toBitmapConfig-1JJdX4A(I)Landroid/graphics/Bitmap$Config; +HSPLandroidx/compose/ui/graphics/AndroidMatrixConversions_androidKt;->setFrom-tU-YjHk([FLandroid/graphics/Matrix;)V HSPLandroidx/compose/ui/graphics/AndroidPaint;->()V HSPLandroidx/compose/ui/graphics/AndroidPaint;->(Landroid/graphics/Paint;)V HSPLandroidx/compose/ui/graphics/AndroidPaint;->asFrameworkPaint()Landroid/graphics/Paint; @@ -4335,11 +4301,20 @@ HSPLandroidx/compose/ui/graphics/Matrix;->([F)V HSPLandroidx/compose/ui/graphics/Matrix;->box-impl([F)Landroidx/compose/ui/graphics/Matrix; HSPLandroidx/compose/ui/graphics/Matrix;->constructor-impl$default([FILkotlin/jvm/internal/DefaultConstructorMarker;)[F HSPLandroidx/compose/ui/graphics/Matrix;->constructor-impl([F)[F +HSPLandroidx/compose/ui/graphics/Matrix;->map-MK-Hz9U([FJ)J +HSPLandroidx/compose/ui/graphics/Matrix;->map-impl([FLandroidx/compose/ui/geometry/MutableRect;)V +HSPLandroidx/compose/ui/graphics/Matrix;->reset-impl([F)V +HSPLandroidx/compose/ui/graphics/Matrix;->rotateX-impl([FF)V +HSPLandroidx/compose/ui/graphics/Matrix;->rotateY-impl([FF)V HSPLandroidx/compose/ui/graphics/Matrix;->rotateZ-impl([FF)V +HSPLandroidx/compose/ui/graphics/Matrix;->scale-impl$default([FFFFILjava/lang/Object;)V HSPLandroidx/compose/ui/graphics/Matrix;->scale-impl([FFFF)V +HSPLandroidx/compose/ui/graphics/Matrix;->timesAssign-58bKbWc([F[F)V HSPLandroidx/compose/ui/graphics/Matrix;->translate-impl$default([FFFFILjava/lang/Object;)V HSPLandroidx/compose/ui/graphics/Matrix;->translate-impl([FFFF)V HSPLandroidx/compose/ui/graphics/Matrix;->unbox-impl()[F +HSPLandroidx/compose/ui/graphics/MatrixKt;->access$dot-p89u6pk([FI[FI)F +HSPLandroidx/compose/ui/graphics/MatrixKt;->dot-p89u6pk([FI[FI)F HSPLandroidx/compose/ui/graphics/MatrixKt;->isIdentity-58bKbWc([F)Z HSPLandroidx/compose/ui/graphics/Outline$Rectangle;->(Landroidx/compose/ui/geometry/Rect;)V HSPLandroidx/compose/ui/graphics/Outline$Rectangle;->getRect()Landroidx/compose/ui/geometry/Rect; @@ -4753,7 +4728,15 @@ HSPLandroidx/compose/ui/graphics/layer/GraphicsLayer;->configureOutline()V HSPLandroidx/compose/ui/graphics/layer/GraphicsLayer;->draw$ui_graphics_release(Landroidx/compose/ui/graphics/Canvas;Landroidx/compose/ui/graphics/layer/GraphicsLayer;)V HSPLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getAlpha()F HSPLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getClip()Z +HSPLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getPivotOffset-F1C5BW0()J +HSPLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getRotationX()F +HSPLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getRotationY()F +HSPLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getRotationZ()F +HSPLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getScaleX()F +HSPLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getScaleY()F HSPLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getShadowElevation()F +HSPLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getTranslationX()F +HSPLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getTranslationY()F HSPLandroidx/compose/ui/graphics/layer/GraphicsLayer;->obtainAndroidOutline()Landroid/graphics/Outline; HSPLandroidx/compose/ui/graphics/layer/GraphicsLayer;->onAddedToParentLayer()V HSPLandroidx/compose/ui/graphics/layer/GraphicsLayer;->record-mL-hObY(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;JLkotlin/jvm/functions/Function1;)V @@ -4782,7 +4765,14 @@ HSPLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->draw(Landroidx/compose HSPLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getAlpha()F HSPLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getClip()Z HSPLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getHasDisplayList()Z +HSPLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getRotationX()F +HSPLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getRotationY()F +HSPLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getRotationZ()F +HSPLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getScaleX()F +HSPLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getScaleY()F HSPLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getShadowElevation()F +HSPLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getTranslationX()F +HSPLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getTranslationY()F HSPLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->record(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/graphics/layer/GraphicsLayer;Lkotlin/jvm/functions/Function1;)V HSPLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->setClip(Z)V HSPLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->setInvalidated(Z)V @@ -5133,6 +5123,9 @@ HSPLandroidx/compose/ui/layout/FixedScale;->()V HSPLandroidx/compose/ui/layout/FixedScale;->(F)V HSPLandroidx/compose/ui/layout/HorizontalAlignmentLine;->()V HSPLandroidx/compose/ui/layout/HorizontalAlignmentLine;->(Lkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/layout/LayoutCoordinates$-CC;->localBoundingBoxOf$default(Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/layout/LayoutCoordinates;ZILjava/lang/Object;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/layout/LayoutCoordinatesKt;->boundsInRoot(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/layout/LayoutCoordinatesKt;->findRootCoordinates(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/layout/LayoutCoordinates; HSPLandroidx/compose/ui/layout/LookaheadCapablePlacementScope;->(Landroidx/compose/ui/node/LookaheadCapablePlaceable;)V HSPLandroidx/compose/ui/layout/LookaheadCapablePlacementScope;->getParentLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; HSPLandroidx/compose/ui/layout/MeasureScope$-CC;->$default$layout(Landroidx/compose/ui/layout/MeasureScope;IILjava/util/Map;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/layout/MeasureResult; @@ -5160,7 +5153,9 @@ HSPLandroidx/compose/ui/layout/Placeable;->()V HSPLandroidx/compose/ui/layout/Placeable;->access$getApparentToRealOffset-nOcc-ac(Landroidx/compose/ui/layout/Placeable;)J HSPLandroidx/compose/ui/layout/Placeable;->access$placeAt-f8xVGno(Landroidx/compose/ui/layout/Placeable;JFLkotlin/jvm/functions/Function1;)V HSPLandroidx/compose/ui/layout/Placeable;->getHeight()I +HSPLandroidx/compose/ui/layout/Placeable;->getMeasuredHeight()I HSPLandroidx/compose/ui/layout/Placeable;->getMeasuredSize-YbymL2g()J +HSPLandroidx/compose/ui/layout/Placeable;->getMeasuredWidth()I HSPLandroidx/compose/ui/layout/Placeable;->getMeasurementConstraints-msEJaDk()J HSPLandroidx/compose/ui/layout/Placeable;->getWidth()I HSPLandroidx/compose/ui/layout/Placeable;->onMeasuredSizeChanged()V @@ -5345,6 +5340,9 @@ HSPLandroidx/compose/ui/node/LayoutNode$UsageByParent;->values()[Landroidx/compo HSPLandroidx/compose/ui/node/LayoutNode$_foldedChildren$1;->(Landroidx/compose/ui/node/LayoutNode;)V HSPLandroidx/compose/ui/node/LayoutNode$_foldedChildren$1;->invoke()Ljava/lang/Object; HSPLandroidx/compose/ui/node/LayoutNode$_foldedChildren$1;->invoke()V +HSPLandroidx/compose/ui/node/LayoutNode$collapsedSemantics$1$1;->(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/internal/Ref$ObjectRef;)V +HSPLandroidx/compose/ui/node/LayoutNode$collapsedSemantics$1$1;->invoke()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/LayoutNode$collapsedSemantics$1$1;->invoke()V HSPLandroidx/compose/ui/node/LayoutNode;->$r8$lambda$kGNqy0QTItq0x6QPwXgEjPtPG3w(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutNode;)I HSPLandroidx/compose/ui/node/LayoutNode;->()V HSPLandroidx/compose/ui/node/LayoutNode;->(ZI)V @@ -5361,6 +5359,7 @@ HSPLandroidx/compose/ui/node/LayoutNode;->getApplyingModifierOnAttach$ui_release HSPLandroidx/compose/ui/node/LayoutNode;->getCanMultiMeasure$ui_release()Z HSPLandroidx/compose/ui/node/LayoutNode;->getChildMeasurables$ui_release()Ljava/util/List; HSPLandroidx/compose/ui/node/LayoutNode;->getChildren$ui_release()Ljava/util/List; +HSPLandroidx/compose/ui/node/LayoutNode;->getCollapsedSemantics$ui_release()Landroidx/compose/ui/semantics/SemanticsConfiguration; HSPLandroidx/compose/ui/node/LayoutNode;->getCompositionLocalMap()Landroidx/compose/runtime/CompositionLocalMap; HSPLandroidx/compose/ui/node/LayoutNode;->getCoordinates()Landroidx/compose/ui/layout/LayoutCoordinates; HSPLandroidx/compose/ui/node/LayoutNode;->getDensity()Landroidx/compose/ui/unit/Density; @@ -5388,6 +5387,7 @@ HSPLandroidx/compose/ui/node/LayoutNode;->getOwner$ui_release()Landroidx/compose HSPLandroidx/compose/ui/node/LayoutNode;->getParent$ui_release()Landroidx/compose/ui/node/LayoutNode; HSPLandroidx/compose/ui/node/LayoutNode;->getPlaceOrder$ui_release()I HSPLandroidx/compose/ui/node/LayoutNode;->getSemanticsId()I +HSPLandroidx/compose/ui/node/LayoutNode;->getViewConfiguration()Landroidx/compose/ui/platform/ViewConfiguration; HSPLandroidx/compose/ui/node/LayoutNode;->getWidth()I HSPLandroidx/compose/ui/node/LayoutNode;->getZIndex()F HSPLandroidx/compose/ui/node/LayoutNode;->getZSortedChildren()Landroidx/compose/runtime/collection/MutableVector; @@ -5534,6 +5534,7 @@ HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->invalidateParentData()V HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->markChildrenDirty()V HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->markLayoutPending$ui_release()V HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->markMeasurePending$ui_release()V +HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->onCoordinatesUsed()V HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->performMeasure-BRTryo0(J)V HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->setCoordinatesAccessedDuringModifierPlacement(Z)V HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->setCoordinatesAccessedDuringPlacement(Z)V @@ -5651,8 +5652,11 @@ HSPLandroidx/compose/ui/node/NodeCoordinator;->access$getSnapshotObserver(Landro HSPLandroidx/compose/ui/node/NodeCoordinator;->access$headNode(Landroidx/compose/ui/node/NodeCoordinator;Z)Landroidx/compose/ui/Modifier$Node; HSPLandroidx/compose/ui/node/NodeCoordinator;->access$setLastLayerDrawingWasSkipped$p(Landroidx/compose/ui/node/NodeCoordinator;Z)V HSPLandroidx/compose/ui/node/NodeCoordinator;->access$setMeasurementConstraints-BRTryo0(Landroidx/compose/ui/node/NodeCoordinator;J)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->ancestorToLocal(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/geometry/MutableRect;Z)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->calculateMinimumTouchTargetPadding-E7KxVPU(J)J HSPLandroidx/compose/ui/node/NodeCoordinator;->draw(Landroidx/compose/ui/graphics/Canvas;Landroidx/compose/ui/graphics/layer/GraphicsLayer;)V HSPLandroidx/compose/ui/node/NodeCoordinator;->drawContainedDrawModifiers(Landroidx/compose/ui/graphics/Canvas;Landroidx/compose/ui/graphics/layer/GraphicsLayer;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->findCommonAncestor$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)Landroidx/compose/ui/node/NodeCoordinator; HSPLandroidx/compose/ui/node/NodeCoordinator;->getAlignmentLinesOwner()Landroidx/compose/ui/node/AlignmentLinesOwner; HSPLandroidx/compose/ui/node/NodeCoordinator;->getDensity()F HSPLandroidx/compose/ui/node/NodeCoordinator;->getFontScale()F @@ -5662,8 +5666,11 @@ HSPLandroidx/compose/ui/node/NodeCoordinator;->getLayer()Landroidx/compose/ui/no HSPLandroidx/compose/ui/node/NodeCoordinator;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection; HSPLandroidx/compose/ui/node/NodeCoordinator;->getLayoutNode()Landroidx/compose/ui/node/LayoutNode; HSPLandroidx/compose/ui/node/NodeCoordinator;->getMeasureResult$ui_release()Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getMinimumTouchTargetSize-NH-jbRc()J HSPLandroidx/compose/ui/node/NodeCoordinator;->getParentData()Ljava/lang/Object; +HSPLandroidx/compose/ui/node/NodeCoordinator;->getParentLayoutCoordinates()Landroidx/compose/ui/layout/LayoutCoordinates; HSPLandroidx/compose/ui/node/NodeCoordinator;->getPosition-nOcc-ac()J +HSPLandroidx/compose/ui/node/NodeCoordinator;->getRectCache()Landroidx/compose/ui/geometry/MutableRect; HSPLandroidx/compose/ui/node/NodeCoordinator;->getSize-YbymL2g()J HSPLandroidx/compose/ui/node/NodeCoordinator;->getSnapshotObserver()Landroidx/compose/ui/node/OwnerSnapshotObserver; HSPLandroidx/compose/ui/node/NodeCoordinator;->getWrapped$ui_release()Landroidx/compose/ui/node/NodeCoordinator; @@ -5673,17 +5680,25 @@ HSPLandroidx/compose/ui/node/NodeCoordinator;->hasNode-H91voCI(I)Z HSPLandroidx/compose/ui/node/NodeCoordinator;->head-H91voCI(I)Landroidx/compose/ui/Modifier$Node; HSPLandroidx/compose/ui/node/NodeCoordinator;->headNode(Z)Landroidx/compose/ui/Modifier$Node; HSPLandroidx/compose/ui/node/NodeCoordinator;->invalidateLayer()V +HSPLandroidx/compose/ui/node/NodeCoordinator;->isAttached()Z +HSPLandroidx/compose/ui/node/NodeCoordinator;->isTransparent()Z +HSPLandroidx/compose/ui/node/NodeCoordinator;->localBoundingBoxOf(Landroidx/compose/ui/layout/LayoutCoordinates;Z)Landroidx/compose/ui/geometry/Rect; +HSPLandroidx/compose/ui/node/NodeCoordinator;->onCoordinatesUsed$ui_release()V HSPLandroidx/compose/ui/node/NodeCoordinator;->onLayoutNodeAttach()V HSPLandroidx/compose/ui/node/NodeCoordinator;->onMeasureResultChanged(II)V HSPLandroidx/compose/ui/node/NodeCoordinator;->onMeasured()V HSPLandroidx/compose/ui/node/NodeCoordinator;->onPlaced()V HSPLandroidx/compose/ui/node/NodeCoordinator;->placeAt-f8xVGno(JFLkotlin/jvm/functions/Function1;)V HSPLandroidx/compose/ui/node/NodeCoordinator;->placeSelf-MLgxB_4(JFLkotlin/jvm/functions/Function1;Landroidx/compose/ui/graphics/layer/GraphicsLayer;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->rectInParent$ui_release$default(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/geometry/MutableRect;ZZILjava/lang/Object;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->rectInParent$ui_release(Landroidx/compose/ui/geometry/MutableRect;ZZ)V HSPLandroidx/compose/ui/node/NodeCoordinator;->setForcePlaceWithLookaheadOffset$ui_release(Z)V HSPLandroidx/compose/ui/node/NodeCoordinator;->setMeasureResult$ui_release(Landroidx/compose/ui/layout/MeasureResult;)V HSPLandroidx/compose/ui/node/NodeCoordinator;->setPosition--gyyYBs(J)V HSPLandroidx/compose/ui/node/NodeCoordinator;->setWrapped$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)V HSPLandroidx/compose/ui/node/NodeCoordinator;->setWrappedBy$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)V +HSPLandroidx/compose/ui/node/NodeCoordinator;->toCoordinator(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/node/NodeCoordinator;->touchBoundsInRoot()Landroidx/compose/ui/geometry/Rect; HSPLandroidx/compose/ui/node/NodeCoordinator;->updateLayerBlock$default(Landroidx/compose/ui/node/NodeCoordinator;Lkotlin/jvm/functions/Function1;ZILjava/lang/Object;)V HSPLandroidx/compose/ui/node/NodeCoordinator;->updateLayerBlock(Lkotlin/jvm/functions/Function1;Z)V HSPLandroidx/compose/ui/node/NodeCoordinator;->updateLayerParameters$default(Landroidx/compose/ui/node/NodeCoordinator;ZILjava/lang/Object;)V @@ -5745,11 +5760,16 @@ HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeLayoutModifierSnapsh HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeLayoutSnapshotReads$ui_release(Landroidx/compose/ui/node/LayoutNode;ZLkotlin/jvm/functions/Function0;)V HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeMeasureSnapshotReads$ui_release(Landroidx/compose/ui/node/LayoutNode;ZLkotlin/jvm/functions/Function0;)V HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeReads$ui_release(Landroidx/compose/ui/node/OwnerScope;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeSemanticsReads$ui_release(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/functions/Function0;)V HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->startObserving$ui_release()V HSPLandroidx/compose/ui/node/ParentDataModifierNodeKt;->invalidateParentData(Landroidx/compose/ui/node/ParentDataModifierNode;)V HSPLandroidx/compose/ui/node/PlaceableResult;->(Landroidx/compose/ui/layout/MeasureResult;Landroidx/compose/ui/node/LookaheadCapablePlaceable;)V HSPLandroidx/compose/ui/node/PlaceableResult;->getResult()Landroidx/compose/ui/layout/MeasureResult; +HSPLandroidx/compose/ui/node/SemanticsModifierNode$-CC;->$default$getShouldClearDescendantSemantics(Landroidx/compose/ui/node/SemanticsModifierNode;)Z +HSPLandroidx/compose/ui/node/SemanticsModifierNode$-CC;->$default$getShouldMergeDescendantSemantics(Landroidx/compose/ui/node/SemanticsModifierNode;)Z +HSPLandroidx/compose/ui/node/SemanticsModifierNodeKt;->getUseMinimumTouchTarget(Landroidx/compose/ui/semantics/SemanticsConfiguration;)Z HSPLandroidx/compose/ui/node/SemanticsModifierNodeKt;->invalidateSemantics(Landroidx/compose/ui/node/SemanticsModifierNode;)V +HSPLandroidx/compose/ui/node/SemanticsModifierNodeKt;->touchBoundsInRoot(Landroidx/compose/ui/Modifier$Node;Z)Landroidx/compose/ui/geometry/Rect; HSPLandroidx/compose/ui/node/TailModifierNode;->()V HSPLandroidx/compose/ui/node/TailModifierNode;->()V HSPLandroidx/compose/ui/node/TailModifierNode;->onAttach()V @@ -5846,6 +5866,9 @@ HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$get_viewTreeOwners( HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$onClearFocusForOwner(Landroidx/compose/ui/platform/AndroidComposeView;)V HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$setGetBooleanMethod$cp(Ljava/lang/reflect/Method;)V HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$setSystemPropertiesClass$cp(Ljava/lang/Class;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->addView(Landroid/view/View;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->addView(Landroid/view/View;I)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V HSPLandroidx/compose/ui/platform/AndroidComposeView;->autofillSupported()Z HSPLandroidx/compose/ui/platform/AndroidComposeView;->boundsUpdatesAccessibilityEventLoop(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; HSPLandroidx/compose/ui/platform/AndroidComposeView;->boundsUpdatesContentCaptureEventLoop(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -5855,6 +5878,7 @@ HSPLandroidx/compose/ui/platform/AndroidComposeView;->dispatchDraw(Landroid/grap HSPLandroidx/compose/ui/platform/AndroidComposeView;->forceMeasureTheSubtree(Landroidx/compose/ui/node/LayoutNode;Z)V HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAccessibilityManager()Landroidx/compose/ui/platform/AccessibilityManager; HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAccessibilityManager()Landroidx/compose/ui/platform/AndroidAccessibilityManager; +HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAndroidViewsHandler$ui_release()Landroidx/compose/ui/platform/AndroidViewsHandler; HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAutofill()Landroidx/compose/ui/autofill/Autofill; HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAutofillTree()Landroidx/compose/ui/autofill/AutofillTree; HSPLandroidx/compose/ui/platform/AndroidComposeView;->getClipboardManager()Landroidx/compose/ui/platform/AndroidClipboardManager; @@ -5888,6 +5912,7 @@ HSPLandroidx/compose/ui/platform/AndroidComposeView;->get_viewTreeOwners()Landro HSPLandroidx/compose/ui/platform/AndroidComposeView;->globalLayoutListener$lambda$4(Landroidx/compose/ui/platform/AndroidComposeView;)V HSPLandroidx/compose/ui/platform/AndroidComposeView;->invalidateLayers(Landroidx/compose/ui/node/LayoutNode;)V HSPLandroidx/compose/ui/platform/AndroidComposeView;->invalidateLayoutNodeMeasurement(Landroidx/compose/ui/node/LayoutNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->localToScreen-MK-Hz9U(J)J HSPLandroidx/compose/ui/platform/AndroidComposeView;->measureAndLayout(Z)V HSPLandroidx/compose/ui/platform/AndroidComposeView;->notifyLayerIsDirty$ui_release(Landroidx/compose/ui/node/OwnedLayer;Z)V HSPLandroidx/compose/ui/platform/AndroidComposeView;->onAttach(Landroidx/compose/ui/node/LayoutNode;)V @@ -5906,6 +5931,8 @@ HSPLandroidx/compose/ui/platform/AndroidComposeView;->onSemanticsChange()V HSPLandroidx/compose/ui/platform/AndroidComposeView;->onStart(Landroidx/lifecycle/LifecycleOwner;)V HSPLandroidx/compose/ui/platform/AndroidComposeView;->onWindowFocusChanged(Z)V HSPLandroidx/compose/ui/platform/AndroidComposeView;->pack-ZIaKswc(II)J +HSPLandroidx/compose/ui/platform/AndroidComposeView;->recalculateWindowPosition()V +HSPLandroidx/compose/ui/platform/AndroidComposeView;->recalculateWindowViewTransforms()V HSPLandroidx/compose/ui/platform/AndroidComposeView;->registerOnEndApplyChangesListener(Lkotlin/jvm/functions/Function0;)V HSPLandroidx/compose/ui/platform/AndroidComposeView;->scheduleMeasureAndLayout(Landroidx/compose/ui/node/LayoutNode;)V HSPLandroidx/compose/ui/platform/AndroidComposeView;->scrollChangedListener$lambda$5(Landroidx/compose/ui/platform/AndroidComposeView;)V @@ -5921,21 +5948,59 @@ HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda3;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$1;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$1;->onViewAttachedToWindow(Landroid/view/View;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api24Impl;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api24Impl;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api24Impl;->addSetProgressAction(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;Landroidx/compose/ui/semantics/SemanticsNode;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api29Impl;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api29Impl;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api29Impl;->addPageActions(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;Landroidx/compose/ui/semantics/SemanticsNode;)V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Companion;->()V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$ComposeAccessibilityNodeProvider;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$ComposeAccessibilityNodeProvider;->createAccessibilityNodeInfo(I)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$boundsUpdatesEventLoop$1;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;Lkotlin/coroutines/Continuation;)V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$onSendAccessibilityEvent$1;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$scheduleScrollEventIfNeededLambda$1;->(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->()V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->(Landroidx/compose/ui/platform/AndroidComposeView;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->access$createNodeInfo(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;I)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->access$getAccessibilityManager$p(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)Landroid/view/accessibility/AccessibilityManager; HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->access$getEnabledStateListener$p(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->access$getSendingFocusAffectingEvent$p(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)Z HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->access$getTouchExplorationStateListener$p(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->boundsInScreen(Landroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds;)Landroid/graphics/Rect; HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->boundsUpdatesEventLoop$ui_release(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->createNodeInfo(I)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getAccessibilityNodeProvider(Landroid/view/View;)Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getAccessibilitySelectionEnd(Landroidx/compose/ui/semantics/SemanticsNode;)I +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getAccessibilitySelectionStart(Landroidx/compose/ui/semantics/SemanticsNode;)I +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getCurrentSemanticsNodes()Landroidx/collection/IntObjectMap; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getInfoIsCheckable(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getInfoStateDescriptionOrNull(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/String; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getInfoText(Landroidx/compose/ui/semantics/SemanticsNode;)Landroidx/compose/ui/text/AnnotatedString; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getIterableTextForAccessibility(Landroidx/compose/ui/semantics/SemanticsNode;)Ljava/lang/String; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getTextForTextField(Landroidx/compose/ui/semantics/SemanticsConfiguration;)Landroidx/compose/ui/text/AnnotatedString; HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->isEnabled$ui_release()Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->isScreenReaderFocusable(Landroidx/compose/ui/semantics/SemanticsNode;)Z HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->onLayoutChange$ui_release(Landroidx/compose/ui/node/LayoutNode;)V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->onSemanticsChange$ui_release()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setContentInvalid(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setIsCheckable(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setStateDescription(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setText(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->toSpannableString(Landroidx/compose/ui/text/AnnotatedString;)Landroid/text/SpannableString; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->trimToSize(Ljava/lang/CharSequence;I)Ljava/lang/CharSequence; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1;->()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$enabled(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$excludeLineAndPageGranularities(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$isVisible(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->enabled(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->excludeLineAndPageGranularities(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->findClosestParentNode(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->isVisible(Landroidx/compose/ui/semantics/SemanticsNode;)Z HSPLandroidx/compose/ui/platform/AndroidComposeViewForceDarkModeQ$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/View;Z)V HSPLandroidx/compose/ui/platform/AndroidComposeViewForceDarkModeQ;->()V HSPLandroidx/compose/ui/platform/AndroidComposeViewForceDarkModeQ;->()V @@ -6027,6 +6092,7 @@ HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getMain$delegate$c HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getToRunOnFrame$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;)Ljava/util/List; HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$performFrameDispatch(Landroidx/compose/ui/platform/AndroidUiDispatcher;J)V HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$performTrampolineDispatch(Landroidx/compose/ui/platform/AndroidUiDispatcher;)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$setScheduledFrameDispatch$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;Z)V HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->getChoreographer()Landroid/view/Choreographer; HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->getFrameClock()Landroidx/compose/runtime/MonotonicFrameClock; @@ -6051,7 +6117,16 @@ HSPLandroidx/compose/ui/platform/AndroidUriHandler;->()V HSPLandroidx/compose/ui/platform/AndroidUriHandler;->(Landroid/content/Context;)V HSPLandroidx/compose/ui/platform/AndroidViewConfiguration;->()V HSPLandroidx/compose/ui/platform/AndroidViewConfiguration;->(Landroid/view/ViewConfiguration;)V +HSPLandroidx/compose/ui/platform/AndroidViewConfiguration;->getMinimumTouchTargetSize-MYxV2XQ()J +HSPLandroidx/compose/ui/platform/AndroidViewsHandler;->()V +HSPLandroidx/compose/ui/platform/AndroidViewsHandler;->(Landroid/content/Context;)V +HSPLandroidx/compose/ui/platform/AndroidViewsHandler;->getLayoutNodeToHolder()Ljava/util/HashMap; +HSPLandroidx/compose/ui/platform/AndroidViewsHandler;->onLayout(ZIIII)V +HSPLandroidx/compose/ui/platform/AndroidViewsHandler;->onMeasure(II)V +HSPLandroidx/compose/ui/platform/AndroidViewsHandler;->requestLayout()V +HSPLandroidx/compose/ui/platform/CalculateMatrixToWindowApi29$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/View;Landroid/graphics/Matrix;)V HSPLandroidx/compose/ui/platform/CalculateMatrixToWindowApi29;->()V +HSPLandroidx/compose/ui/platform/CalculateMatrixToWindowApi29;->calculateMatrixToWindow-EL8BTi8(Landroid/view/View;[F)V HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt$lambda-1$1;->()V HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt$lambda-1$1;->()V HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt;->()V @@ -6063,6 +6138,7 @@ HSPLandroidx/compose/ui/platform/ComposeView;->(Landroid/content/Context;L HSPLandroidx/compose/ui/platform/ComposeView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V HSPLandroidx/compose/ui/platform/ComposeView;->(Landroid/content/Context;Landroid/util/AttributeSet;IILkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLandroidx/compose/ui/platform/ComposeView;->Content(Landroidx/compose/runtime/Composer;I)V +HSPLandroidx/compose/ui/platform/ComposeView;->getAccessibilityClassName()Ljava/lang/CharSequence; HSPLandroidx/compose/ui/platform/ComposeView;->getShouldCreateCompositionOnAttachedToWindow()Z HSPLandroidx/compose/ui/platform/ComposeView;->setContent(Lkotlin/jvm/functions/Function2;)V HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAccessibilityManager$1;->()V @@ -6153,19 +6229,23 @@ HSPLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->()V HSPLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->(Landroidx/compose/ui/graphics/layer/GraphicsLayer;Landroidx/compose/ui/graphics/GraphicsContext;Landroidx/compose/ui/platform/AndroidComposeView;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function0;)V HSPLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->access$getDrawBlock$p(Landroidx/compose/ui/platform/GraphicsLayerOwnerLayer;)Lkotlin/jvm/functions/Function2; HSPLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->drawLayer(Landroidx/compose/ui/graphics/Canvas;Landroidx/compose/ui/graphics/layer/GraphicsLayer;)V +HSPLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->getMatrix-sQKQjiQ()[F HSPLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->invalidate()V +HSPLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->mapBounds(Landroidx/compose/ui/geometry/MutableRect;Z)V HSPLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->move--gyyYBs(J)V HSPLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->resize-ozmzZPI(J)V HSPLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->setDirty(Z)V HSPLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->triggerRepaint()V HSPLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->updateDisplayList()V HSPLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->updateLayerProperties(Landroidx/compose/ui/graphics/ReusableGraphicsLayerScope;)V +HSPLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->updateMatrix()V HSPLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->updateOutline()V HSPLandroidx/compose/ui/platform/InspectableValueKt$NoInspectorInfo$1;->()V HSPLandroidx/compose/ui/platform/InspectableValueKt$NoInspectorInfo$1;->()V HSPLandroidx/compose/ui/platform/InspectableValueKt;->()V HSPLandroidx/compose/ui/platform/InspectableValueKt;->getNoInspectorInfo()Lkotlin/jvm/functions/Function1; HSPLandroidx/compose/ui/platform/InspectableValueKt;->isDebugInspectorInfoEnabled()Z +HSPLandroidx/compose/ui/platform/InvertMatrixKt;->invertTo-JiSxe2E([F[F)Z HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->()V HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element; @@ -6174,6 +6254,15 @@ HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->minusKey(Lkotlin/coro HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->setScaleFactor(F)V HSPLandroidx/compose/ui/platform/SemanticsNodeCopy;->()V HSPLandroidx/compose/ui/platform/SemanticsNodeCopy;->(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/collection/IntObjectMap;)V +HSPLandroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds;->()V +HSPLandroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds;->(Landroidx/compose/ui/semantics/SemanticsNode;Landroid/graphics/Rect;)V +HSPLandroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds;->getAdjustedBounds()Landroid/graphics/Rect; +HSPLandroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds;->getSemanticsNode()Landroidx/compose/ui/semantics/SemanticsNode; +HSPLandroidx/compose/ui/platform/SemanticsUtils_androidKt;->()V +HSPLandroidx/compose/ui/platform/SemanticsUtils_androidKt;->getAllUncoveredSemanticsNodesToIntObjectMap$findAllSemanticNodesRecursive(Landroid/graphics/Region;Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/collection/MutableIntObjectMap;Landroidx/compose/ui/semantics/SemanticsNode;Landroid/graphics/Region;)V +HSPLandroidx/compose/ui/platform/SemanticsUtils_androidKt;->getAllUncoveredSemanticsNodesToIntObjectMap(Landroidx/compose/ui/semantics/SemanticsOwner;)Landroidx/collection/IntObjectMap; +HSPLandroidx/compose/ui/platform/SemanticsUtils_androidKt;->isImportantForAccessibility(Landroidx/compose/ui/semantics/SemanticsNode;)Z +HSPLandroidx/compose/ui/platform/SemanticsUtils_androidKt;->toLegacyClassName-V4PA4sw(I)Ljava/lang/String; HSPLandroidx/compose/ui/platform/TextToolbarStatus;->$values()[Landroidx/compose/ui/platform/TextToolbarStatus; HSPLandroidx/compose/ui/platform/TextToolbarStatus;->()V HSPLandroidx/compose/ui/platform/TextToolbarStatus;->(Ljava/lang/String;I)V @@ -6207,6 +6296,7 @@ HSPLandroidx/compose/ui/platform/ViewCompositionStrategy_androidKt;->$r8$lambda$ HSPLandroidx/compose/ui/platform/ViewCompositionStrategy_androidKt;->access$installForLifecycle(Landroidx/compose/ui/platform/AbstractComposeView;Landroidx/lifecycle/Lifecycle;)Lkotlin/jvm/functions/Function0; HSPLandroidx/compose/ui/platform/ViewCompositionStrategy_androidKt;->installForLifecycle$lambda$1(Landroidx/compose/ui/platform/AbstractComposeView;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V HSPLandroidx/compose/ui/platform/ViewCompositionStrategy_androidKt;->installForLifecycle(Landroidx/compose/ui/platform/AbstractComposeView;Landroidx/lifecycle/Lifecycle;)Lkotlin/jvm/functions/Function0; +HSPLandroidx/compose/ui/platform/ViewConfiguration$-CC;->$default$getMinimumTouchTargetSize-MYxV2XQ(Landroidx/compose/ui/platform/ViewConfiguration;)J HSPLandroidx/compose/ui/platform/ViewLayer$Companion$OutlineProvider$1;->()V HSPLandroidx/compose/ui/platform/ViewLayer$Companion$getMatrix$1;->()V HSPLandroidx/compose/ui/platform/ViewLayer$Companion$getMatrix$1;->()V @@ -6305,6 +6395,8 @@ HSPLandroidx/compose/ui/platform/WrapperRenderNodeLayerHelperMethods;->onDescend HSPLandroidx/compose/ui/platform/Wrapper_androidKt;->()V HSPLandroidx/compose/ui/platform/Wrapper_androidKt;->doSetContent(Landroidx/compose/ui/platform/AndroidComposeView;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;)Landroidx/compose/runtime/Composition; HSPLandroidx/compose/ui/platform/Wrapper_androidKt;->setContent(Landroidx/compose/ui/platform/AbstractComposeView;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;)Landroidx/compose/runtime/Composition; +HSPLandroidx/compose/ui/platform/accessibility/CollectionInfo_androidKt;->setCollectionInfo(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/compose/ui/platform/accessibility/CollectionInfo_androidKt;->setCollectionItemInfo(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V HSPLandroidx/compose/ui/platform/actionmodecallback/TextActionModeCallback;->()V HSPLandroidx/compose/ui/platform/actionmodecallback/TextActionModeCallback;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/geometry/Rect;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V HSPLandroidx/compose/ui/platform/actionmodecallback/TextActionModeCallback;->(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/geometry/Rect;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;ILkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -6338,34 +6430,83 @@ HSPLandroidx/compose/ui/res/VectorResources_androidKt;->loadVectorResourceInner( HSPLandroidx/compose/ui/scrollcapture/ScrollCapture;->()V HSPLandroidx/compose/ui/scrollcapture/ScrollCapture;->()V HSPLandroidx/compose/ui/scrollcapture/ScrollCapture;->getScrollCaptureInProgress()Z +HSPLandroidx/compose/ui/semantics/AccessibilityAction;->()V +HSPLandroidx/compose/ui/semantics/AccessibilityAction;->(Ljava/lang/String;Lkotlin/Function;)V +HSPLandroidx/compose/ui/semantics/AccessibilityAction;->getLabel()Ljava/lang/String; HSPLandroidx/compose/ui/semantics/AppendedSemanticsElement;->()V HSPLandroidx/compose/ui/semantics/AppendedSemanticsElement;->(ZLkotlin/jvm/functions/Function1;)V HSPLandroidx/compose/ui/semantics/AppendedSemanticsElement;->create()Landroidx/compose/ui/Modifier$Node; HSPLandroidx/compose/ui/semantics/AppendedSemanticsElement;->create()Landroidx/compose/ui/semantics/CoreSemanticsModifierNode; HSPLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->()V HSPLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->(ZZLkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->getShouldClearDescendantSemantics()Z +HSPLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->getShouldMergeDescendantSemantics()Z HSPLandroidx/compose/ui/semantics/EmptySemanticsElement;->()V HSPLandroidx/compose/ui/semantics/EmptySemanticsElement;->(Landroidx/compose/ui/semantics/EmptySemanticsModifier;)V HSPLandroidx/compose/ui/semantics/EmptySemanticsElement;->create()Landroidx/compose/ui/Modifier$Node; HSPLandroidx/compose/ui/semantics/EmptySemanticsElement;->create()Landroidx/compose/ui/semantics/EmptySemanticsModifier; HSPLandroidx/compose/ui/semantics/EmptySemanticsModifier;->()V HSPLandroidx/compose/ui/semantics/EmptySemanticsModifier;->()V +HSPLandroidx/compose/ui/semantics/EmptySemanticsModifier;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/ui/semantics/EmptySemanticsModifier;->getShouldClearDescendantSemantics()Z +HSPLandroidx/compose/ui/semantics/EmptySemanticsModifier;->getShouldMergeDescendantSemantics()Z HSPLandroidx/compose/ui/semantics/Role$Companion;->()V HSPLandroidx/compose/ui/semantics/Role$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLandroidx/compose/ui/semantics/Role$Companion;->getButton-o7Vup1c()I +HSPLandroidx/compose/ui/semantics/Role$Companion;->getCheckbox-o7Vup1c()I +HSPLandroidx/compose/ui/semantics/Role$Companion;->getImage-o7Vup1c()I +HSPLandroidx/compose/ui/semantics/Role$Companion;->getRadioButton-o7Vup1c()I +HSPLandroidx/compose/ui/semantics/Role$Companion;->getSwitch-o7Vup1c()I +HSPLandroidx/compose/ui/semantics/Role$Companion;->getTab-o7Vup1c()I HSPLandroidx/compose/ui/semantics/Role;->()V HSPLandroidx/compose/ui/semantics/Role;->(I)V HSPLandroidx/compose/ui/semantics/Role;->access$getButton$cp()I +HSPLandroidx/compose/ui/semantics/Role;->access$getCheckbox$cp()I +HSPLandroidx/compose/ui/semantics/Role;->access$getImage$cp()I +HSPLandroidx/compose/ui/semantics/Role;->access$getRadioButton$cp()I +HSPLandroidx/compose/ui/semantics/Role;->access$getSwitch$cp()I +HSPLandroidx/compose/ui/semantics/Role;->access$getTab$cp()I HSPLandroidx/compose/ui/semantics/Role;->box-impl(I)Landroidx/compose/ui/semantics/Role; HSPLandroidx/compose/ui/semantics/Role;->constructor-impl(I)I +HSPLandroidx/compose/ui/semantics/Role;->equals-impl0(II)Z +HSPLandroidx/compose/ui/semantics/Role;->unbox-impl()I HSPLandroidx/compose/ui/semantics/SemanticsActions;->()V HSPLandroidx/compose/ui/semantics/SemanticsActions;->()V +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getClearTextSubstitution()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getCollapse()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getCopyText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsActions;->getCustomActions()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getCutText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getDismiss()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getExpand()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getGetTextLayoutResult()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getOnClick()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getOnImeAction()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getOnLongClick()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getPageDown()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getPageLeft()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getPageRight()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getPageUp()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getPasteText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getRequestFocus()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getScrollBy()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getSetProgress()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getSetSelection()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getSetText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getSetTextSubstitution()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsActions;->getShowTextSubstitution()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->()V HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->()V HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->contains(Landroidx/compose/ui/semantics/SemanticsPropertyKey;)Z +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->containsImportantForAccessibility$ui_release()Z +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->get(Landroidx/compose/ui/semantics/SemanticsPropertyKey;)Ljava/lang/Object; HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->getOrElseNullable(Landroidx/compose/ui/semantics/SemanticsPropertyKey;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object; HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->isClearingSemantics()Z +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->isMergingSemanticsOfDescendants()Z +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->set(Landroidx/compose/ui/semantics/SemanticsPropertyKey;Ljava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->setClearingSemantics(Z)V +HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->setMergingSemanticsOfDescendants(Z)V HSPLandroidx/compose/ui/semantics/SemanticsConfigurationKt$getOrNull$1;->()V HSPLandroidx/compose/ui/semantics/SemanticsConfigurationKt$getOrNull$1;->()V HSPLandroidx/compose/ui/semantics/SemanticsConfigurationKt$getOrNull$1;->invoke()Ljava/lang/Object; @@ -6374,18 +6515,47 @@ HSPLandroidx/compose/ui/semantics/SemanticsModifierKt;->()V HSPLandroidx/compose/ui/semantics/SemanticsModifierKt;->generateSemanticsId()I HSPLandroidx/compose/ui/semantics/SemanticsModifierKt;->semantics$default(Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; HSPLandroidx/compose/ui/semantics/SemanticsModifierKt;->semantics(Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier; +HSPLandroidx/compose/ui/semantics/SemanticsNode$emitFakeNodes$fakeNode$1;->(Landroidx/compose/ui/semantics/Role;)V +HSPLandroidx/compose/ui/semantics/SemanticsNode$emitFakeNodes$fakeNode$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V +HSPLandroidx/compose/ui/semantics/SemanticsNode$emitFakeNodes$fakeNode$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/semantics/SemanticsNode$fakeSemanticsNode$fakeNode$1;->(Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1;->()V +HSPLandroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/compose/ui/semantics/SemanticsNode$parent$2;->()V +HSPLandroidx/compose/ui/semantics/SemanticsNode$parent$2;->()V +HSPLandroidx/compose/ui/semantics/SemanticsNode$parent$2;->invoke(Landroidx/compose/ui/node/LayoutNode;)Ljava/lang/Boolean; +HSPLandroidx/compose/ui/semantics/SemanticsNode$parent$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroidx/compose/ui/semantics/SemanticsNode;->()V HSPLandroidx/compose/ui/semantics/SemanticsNode;->(Landroidx/compose/ui/Modifier$Node;ZLandroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/semantics/SemanticsConfiguration;)V HSPLandroidx/compose/ui/semantics/SemanticsNode;->emitFakeNodes(Ljava/util/List;)V +HSPLandroidx/compose/ui/semantics/SemanticsNode;->fakeSemanticsNode-ypyhhiA(Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/semantics/SemanticsNode; HSPLandroidx/compose/ui/semantics/SemanticsNode;->fillOneLayerOfSemanticsWrappers(Landroidx/compose/ui/node/LayoutNode;Ljava/util/List;Z)V +HSPLandroidx/compose/ui/semantics/SemanticsNode;->findCoordinatorToGetBounds$ui_release()Landroidx/compose/ui/node/NodeCoordinator; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getBoundsInRoot()Landroidx/compose/ui/geometry/Rect; HSPLandroidx/compose/ui/semantics/SemanticsNode;->getChildren$ui_release$default(Landroidx/compose/ui/semantics/SemanticsNode;ZZZILjava/lang/Object;)Ljava/util/List; HSPLandroidx/compose/ui/semantics/SemanticsNode;->getChildren$ui_release(ZZZ)Ljava/util/List; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getConfig()Landroidx/compose/ui/semantics/SemanticsConfiguration; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getId()I +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getLayoutInfo()Landroidx/compose/ui/layout/LayoutInfo; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getLayoutNode$ui_release()Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getParent()Landroidx/compose/ui/semantics/SemanticsNode; HSPLandroidx/compose/ui/semantics/SemanticsNode;->getReplacedChildren$ui_release()Ljava/util/List; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->getTouchBoundsInRoot()Landroidx/compose/ui/geometry/Rect; HSPLandroidx/compose/ui/semantics/SemanticsNode;->getUnmergedConfig$ui_release()Landroidx/compose/ui/semantics/SemanticsConfiguration; +HSPLandroidx/compose/ui/semantics/SemanticsNode;->isFake$ui_release()Z HSPLandroidx/compose/ui/semantics/SemanticsNode;->isMergingSemanticsOfDescendants()Z +HSPLandroidx/compose/ui/semantics/SemanticsNode;->isTransparent$ui_release()Z +HSPLandroidx/compose/ui/semantics/SemanticsNode;->isUnmergedLeafNode$ui_release()Z HSPLandroidx/compose/ui/semantics/SemanticsNode;->unmergedChildren$ui_release(ZZ)Ljava/util/List; +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->SemanticsNode(Landroidx/compose/ui/node/LayoutNode;Z)Landroidx/compose/ui/semantics/SemanticsNode; HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->access$getRole(Landroidx/compose/ui/semantics/SemanticsNode;)Landroidx/compose/ui/semantics/Role; +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->access$roleFakeNodeId(Landroidx/compose/ui/semantics/SemanticsNode;)I +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->findClosestParentNode(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/node/LayoutNode; +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->getOuterMergingSemantics(Landroidx/compose/ui/node/LayoutNode;)Landroidx/compose/ui/node/SemanticsModifierNode; HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->getRole(Landroidx/compose/ui/semantics/SemanticsNode;)Landroidx/compose/ui/semantics/Role; +HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->roleFakeNodeId(Landroidx/compose/ui/semantics/SemanticsNode;)I HSPLandroidx/compose/ui/semantics/SemanticsOwner;->()V HSPLandroidx/compose/ui/semantics/SemanticsOwner;->(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/semantics/EmptySemanticsModifier;)V HSPLandroidx/compose/ui/semantics/SemanticsOwner;->getUnmergedRootSemanticsNode()Landroidx/compose/ui/semantics/SemanticsNode; @@ -6418,21 +6588,28 @@ HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getCollectionItemInfo()L HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getContentDataType$ui_release()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getContentDescription()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getContentType$ui_release()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getDisabled()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getEditableText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getError()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getFocused()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getHeading()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getHorizontalScrollAxisRange()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getImeAction()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getInvisibleToUser()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getIsEditable()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getIsShowingTextSubstitution()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getIsTraversalGroup()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getLiveRegion()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getMaxTextLength()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getPaneTitle()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getPassword()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getProgressBarRangeInfo()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getRole()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getSelectableGroup()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getSelected()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getStateDescription()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getTestTag()Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getTextSelectionRange()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getTextSubstitution()Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getToggleableState()Landroidx/compose/ui/semantics/SemanticsPropertyKey; @@ -6443,6 +6620,21 @@ HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt$ActionPropertyKey$1;->()V HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->AccessibilityKey(Ljava/lang/String;)Landroidx/compose/ui/semantics/SemanticsPropertyKey; HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->AccessibilityKey(Ljava/lang/String;Lkotlin/jvm/functions/Function2;)Landroidx/compose/ui/semantics/SemanticsPropertyKey; +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->clearTextSubstitution$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->clearTextSubstitution(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->getTextLayoutResult$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->getTextLayoutResult(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->onClick(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->requestFocus$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->requestFocus(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setContentDescription(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setFocused(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Z)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setRole-kuIjeqM(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;I)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setText(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Landroidx/compose/ui/text/AnnotatedString;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setTextSubstitution$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setTextSubstitution(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->showTextSubstitution$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->showTextSubstitution(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey$1;->()V HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey$1;->()V HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;->()V @@ -6450,6 +6642,8 @@ HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;->(Ljava/lang/Strin HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;->(Ljava/lang/String;Lkotlin/jvm/functions/Function2;ILkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;->(Ljava/lang/String;Z)V HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;->(Ljava/lang/String;ZLkotlin/jvm/functions/Function2;)V +HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;->isImportantForAccessibility$ui_release()Z +HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;->setValue(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Lkotlin/reflect/KProperty;Ljava/lang/Object;)V HSPLandroidx/compose/ui/text/AndroidParagraph;->()V HSPLandroidx/compose/ui/text/AndroidParagraph;->(Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;IZJ)V HSPLandroidx/compose/ui/text/AndroidParagraph;->(Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;IZJLkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -6485,7 +6679,13 @@ HSPLandroidx/compose/ui/text/AnnotatedString;->()V HSPLandroidx/compose/ui/text/AnnotatedString;->(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V HSPLandroidx/compose/ui/text/AnnotatedString;->(Ljava/lang/String;Ljava/util/List;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLandroidx/compose/ui/text/AnnotatedString;->(Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;)V +HSPLandroidx/compose/ui/text/AnnotatedString;->getLength()I +HSPLandroidx/compose/ui/text/AnnotatedString;->getLinkAnnotations(II)Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedString;->getSpanStylesOrNull$ui_text_release()Ljava/util/List; HSPLandroidx/compose/ui/text/AnnotatedString;->getText()Ljava/lang/String; +HSPLandroidx/compose/ui/text/AnnotatedString;->getTtsAnnotations(II)Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedString;->getUrlAnnotations(II)Ljava/util/List; +HSPLandroidx/compose/ui/text/AnnotatedString;->length()I HSPLandroidx/compose/ui/text/EmojiSupportMatch$Companion;->()V HSPLandroidx/compose/ui/text/EmojiSupportMatch$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLandroidx/compose/ui/text/EmojiSupportMatch$Companion;->getDefault-_3YsG6Y()I @@ -7055,6 +7255,7 @@ HSPLandroidx/compose/ui/text/intl/LocaleList;->access$getEmpty$cp()Landroidx/com HSPLandroidx/compose/ui/text/intl/LocaleList;->equals(Ljava/lang/Object;)Z HSPLandroidx/compose/ui/text/intl/PlatformLocaleKt;->()V HSPLandroidx/compose/ui/text/intl/PlatformLocaleKt;->getPlatformLocaleDelegate()Landroidx/compose/ui/text/intl/PlatformLocaleDelegate; +HSPLandroidx/compose/ui/text/platform/AndroidAccessibilitySpannableString_androidKt;->toAccessibilitySpannableString(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Landroidx/compose/ui/text/platform/URLSpanCache;)Landroid/text/SpannableString; HSPLandroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt$NoopSpan$1;->()V HSPLandroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt;->()V HSPLandroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt;->createCharSequence(Ljava/lang/String;FLandroidx/compose/ui/text/TextStyle;Ljava/util/List;Ljava/util/List;Landroidx/compose/ui/unit/Density;Lkotlin/jvm/functions/Function4;Z)Ljava/lang/CharSequence; @@ -7366,6 +7567,7 @@ HSPLandroidx/compose/ui/unit/ConstraintsKt;->offset-NN6Ew-U(JII)J HSPLandroidx/compose/ui/unit/Density$-CC;->$default$roundToPx-0680j_4(Landroidx/compose/ui/unit/Density;F)I HSPLandroidx/compose/ui/unit/Density$-CC;->$default$toPx--R2X_6o(Landroidx/compose/ui/unit/Density;J)F HSPLandroidx/compose/ui/unit/Density$-CC;->$default$toPx-0680j_4(Landroidx/compose/ui/unit/Density;F)F +HSPLandroidx/compose/ui/unit/Density$-CC;->$default$toSize-XkaWNTQ(Landroidx/compose/ui/unit/Density;J)J HSPLandroidx/compose/ui/unit/DensityImpl;->(FF)V HSPLandroidx/compose/ui/unit/DensityImpl;->equals(Ljava/lang/Object;)Z HSPLandroidx/compose/ui/unit/DensityKt;->Density$default(FFILjava/lang/Object;)Landroidx/compose/ui/unit/Density; @@ -7375,6 +7577,7 @@ HSPLandroidx/compose/ui/unit/DensityWithConverter;->equals(Ljava/lang/Object;)Z HSPLandroidx/compose/ui/unit/DensityWithConverter;->getDensity()F HSPLandroidx/compose/ui/unit/DensityWithConverter;->getFontScale()F HSPLandroidx/compose/ui/unit/DensityWithConverter;->toPx-0680j_4(F)F +HSPLandroidx/compose/ui/unit/DensityWithConverter;->toSize-XkaWNTQ(J)J HSPLandroidx/compose/ui/unit/Dp$Companion;->()V HSPLandroidx/compose/ui/unit/Dp$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLandroidx/compose/ui/unit/Dp$Companion;->getHairline-D9Ej5fM()F @@ -7388,6 +7591,13 @@ HSPLandroidx/compose/ui/unit/Dp;->compareTo-0680j_4(FF)I HSPLandroidx/compose/ui/unit/Dp;->constructor-impl(F)F HSPLandroidx/compose/ui/unit/Dp;->equals-impl0(FF)Z HSPLandroidx/compose/ui/unit/Dp;->unbox-impl()F +HSPLandroidx/compose/ui/unit/DpKt;->DpSize-YgX7TsA(FF)J +HSPLandroidx/compose/ui/unit/DpSize$Companion;->()V +HSPLandroidx/compose/ui/unit/DpSize$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLandroidx/compose/ui/unit/DpSize;->()V +HSPLandroidx/compose/ui/unit/DpSize;->constructor-impl(J)J +HSPLandroidx/compose/ui/unit/DpSize;->getHeight-D9Ej5fM(J)F +HSPLandroidx/compose/ui/unit/DpSize;->getWidth-D9Ej5fM(J)F HSPLandroidx/compose/ui/unit/FontScaling$-CC;->$default$toDp-GaN1DYA(Landroidx/compose/ui/unit/FontScaling;J)F HSPLandroidx/compose/ui/unit/IntOffset$Companion;->()V HSPLandroidx/compose/ui/unit/IntOffset$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -7456,6 +7666,10 @@ HSPLandroidx/compose/ui/unit/fontscaling/FontScaleConverterTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLandroidx/compose/ui/unit/fontscaling/FontScaleConverterTable;->()V HSPLandroidx/compose/ui/unit/fontscaling/FontScaleConverterTable;->([F[F)V +HSPLandroidx/compose/ui/util/ListUtilsKt;->appendElement(Ljava/lang/Appendable;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V +HSPLandroidx/compose/ui/util/ListUtilsKt;->fastJoinTo(Ljava/util/List;Ljava/lang/Appendable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;)Ljava/lang/Appendable; +HSPLandroidx/compose/ui/util/ListUtilsKt;->fastJoinToString$default(Ljava/util/List;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String; +HSPLandroidx/compose/ui/util/ListUtilsKt;->fastJoinToString(Ljava/util/List;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;)Ljava/lang/String; HSPLandroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0;->m(Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z HSPLandroidx/constraintlayout/core/ArrayLinkedVariables;->()V HSPLandroidx/constraintlayout/core/ArrayLinkedVariables;->(Landroidx/constraintlayout/core/ArrayRow;Landroidx/constraintlayout/core/Cache;)V @@ -7468,7 +7682,6 @@ HSPLandroidx/constraintlayout/core/ArrayLinkedVariables;->getVariable(I)Landroid HSPLandroidx/constraintlayout/core/ArrayLinkedVariables;->getVariableValue(I)F HSPLandroidx/constraintlayout/core/ArrayLinkedVariables;->invert()V HSPLandroidx/constraintlayout/core/ArrayLinkedVariables;->use(Landroidx/constraintlayout/core/ArrayRow;Z)F -HSPLandroidx/constraintlayout/core/ArrayRow;->(Landroidx/constraintlayout/core/Cache;)V HSPLandroidx/constraintlayout/core/ArrayRow;->addError(Landroidx/constraintlayout/core/LinearSystem;I)Landroidx/constraintlayout/core/ArrayRow; HSPLandroidx/constraintlayout/core/ArrayRow;->addSingleError(Landroidx/constraintlayout/core/SolverVariable;I)Landroidx/constraintlayout/core/ArrayRow; HSPLandroidx/constraintlayout/core/ArrayRow;->chooseSubject(Landroidx/constraintlayout/core/LinearSystem;)Z @@ -7583,7 +7796,6 @@ HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->()V HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->()V HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->addAnchors()V HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->addFirst()Z -HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->addToSolver(Landroidx/constraintlayout/core/LinearSystem;Z)V HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->applyConstraints(Landroidx/constraintlayout/core/LinearSystem;ZZZZLandroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/widgets/ConstraintWidget$DimensionBehaviour;ZLandroidx/constraintlayout/core/widgets/ConstraintAnchor;Landroidx/constraintlayout/core/widgets/ConstraintAnchor;IIIIFZZZZZIIIIFZ)V HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->createObjectVariables(Landroidx/constraintlayout/core/LinearSystem;)V HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->getAnchor(Landroidx/constraintlayout/core/widgets/ConstraintAnchor$Type;)Landroidx/constraintlayout/core/widgets/ConstraintAnchor; @@ -7679,6 +7891,7 @@ HSPLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->invalidat HSPLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->isHeightMeasuredTooSmall()Z HSPLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->isRtl()Z HSPLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->isWidthMeasuredTooSmall()Z +HSPLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->layout()V HSPLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->measure(IIIIIIIII)J HSPLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->measure(ILandroidx/constraintlayout/core/widgets/ConstraintWidget;Landroidx/constraintlayout/core/widgets/analyzer/BasicMeasure$Measurer;Landroidx/constraintlayout/core/widgets/analyzer/BasicMeasure$Measure;I)Z HSPLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->optimizeFor(I)Z @@ -7747,14 +7960,17 @@ HSPLandroidx/constraintlayout/widget/ConstraintHelper;->validateParams()V HSPLandroidx/constraintlayout/widget/ConstraintLayout$1;->()V HSPLandroidx/constraintlayout/widget/ConstraintLayout$LayoutParams$Table;->()V HSPLandroidx/constraintlayout/widget/ConstraintLayout$LayoutParams;->resolveLayoutDirection(I)V +HSPLandroidx/constraintlayout/widget/ConstraintLayout$LayoutParams;->validate()V HSPLandroidx/constraintlayout/widget/ConstraintLayout$Measurer;->(Landroidx/constraintlayout/widget/ConstraintLayout;Landroidx/constraintlayout/widget/ConstraintLayout;)V HSPLandroidx/constraintlayout/widget/ConstraintLayout$Measurer;->captureLayoutInfo(IIIIII)V HSPLandroidx/constraintlayout/widget/ConstraintLayout$Measurer;->didMeasures()V HSPLandroidx/constraintlayout/widget/ConstraintLayout$Measurer;->isSimilarSpec(III)Z +HSPLandroidx/constraintlayout/widget/ConstraintLayout$Measurer;->measure(Landroidx/constraintlayout/core/widgets/ConstraintWidget;Landroidx/constraintlayout/core/widgets/analyzer/BasicMeasure$Measure;)V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->()V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->access$000(Landroidx/constraintlayout/widget/ConstraintLayout;)I HSPLandroidx/constraintlayout/widget/ConstraintLayout;->access$100(Landroidx/constraintlayout/widget/ConstraintLayout;)Ljava/util/ArrayList; +HSPLandroidx/constraintlayout/widget/ConstraintLayout;->applyConstraintsFromLayoutParams(ZLandroid/view/View;Landroidx/constraintlayout/core/widgets/ConstraintWidget;Landroidx/constraintlayout/widget/ConstraintLayout$LayoutParams;Landroid/util/SparseArray;)V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z HSPLandroidx/constraintlayout/widget/ConstraintLayout;->dispatchDraw(Landroid/graphics/Canvas;)V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; @@ -7765,7 +7981,6 @@ HSPLandroidx/constraintlayout/widget/ConstraintLayout;->getViewWidget(Landroid/v HSPLandroidx/constraintlayout/widget/ConstraintLayout;->init(Landroid/util/AttributeSet;II)V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->isRtl()Z HSPLandroidx/constraintlayout/widget/ConstraintLayout;->markHierarchyDirty()V -HSPLandroidx/constraintlayout/widget/ConstraintLayout;->onLayout(ZIIII)V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->onMeasure(II)V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->onViewAdded(Landroid/view/View;)V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->onViewRemoved(Landroid/view/View;)V @@ -7922,7 +8137,6 @@ HSPLandroidx/core/app/NotificationManagerCompat;->(Landroid/content/Contex HSPLandroidx/core/app/NotificationManagerCompat;->cancel(I)V HSPLandroidx/core/app/NotificationManagerCompat;->cancel(Ljava/lang/String;I)V HSPLandroidx/core/app/NotificationManagerCompat;->from(Landroid/content/Context;)Landroidx/core/app/NotificationManagerCompat; -HSPLandroidx/core/content/ContentValuesKt;->contentValuesOf([Lkotlin/Pair;)Landroid/content/ContentValues; HSPLandroidx/core/content/ContextCompat$Api21Impl;->getDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; HSPLandroidx/core/content/ContextCompat$Api23Impl;->getColor(Landroid/content/Context;I)I HSPLandroidx/core/content/ContextCompat$Api23Impl;->getSystemService(Landroid/content/Context;Ljava/lang/Class;)Ljava/lang/Object; @@ -8065,14 +8279,19 @@ HSPLandroidx/core/util/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lan HSPLandroidx/core/util/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroidx/core/util/Preconditions;->checkState(ZLjava/lang/String;)V HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->(Landroidx/core/view/AccessibilityDelegateCompat;)V +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->getAccessibilityNodeProvider(Landroid/view/View;)Landroid/view/accessibility/AccessibilityNodeProvider; HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->onInitializeAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->onInitializeAccessibilityNodeInfo(Landroid/view/View;Landroid/view/accessibility/AccessibilityNodeInfo;)V HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->onRequestSendAccessibilityEvent(Landroid/view/ViewGroup;Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->sendAccessibilityEventUnchecked(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V HSPLandroidx/core/view/AccessibilityDelegateCompat;->()V HSPLandroidx/core/view/AccessibilityDelegateCompat;->()V HSPLandroidx/core/view/AccessibilityDelegateCompat;->(Landroid/view/View$AccessibilityDelegate;)V +HSPLandroidx/core/view/AccessibilityDelegateCompat;->getAccessibilityNodeProvider(Landroid/view/View;)Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat; +HSPLandroidx/core/view/AccessibilityDelegateCompat;->getActionList(Landroid/view/View;)Ljava/util/List; HSPLandroidx/core/view/AccessibilityDelegateCompat;->getBridge()Landroid/view/View$AccessibilityDelegate; HSPLandroidx/core/view/AccessibilityDelegateCompat;->onInitializeAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroidx/core/view/AccessibilityDelegateCompat;->onInitializeAccessibilityNodeInfo(Landroid/view/View;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V HSPLandroidx/core/view/AccessibilityDelegateCompat;->onRequestSendAccessibilityEvent(Landroid/view/ViewGroup;Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z HSPLandroidx/core/view/AccessibilityDelegateCompat;->sendAccessibilityEventUnchecked(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V HSPLandroidx/core/view/GestureDetectorCompat;->(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;)V @@ -8104,10 +8323,20 @@ HSPLandroidx/core/view/SoftwareKeyboardControllerCompat$Impl30;->(Landroid HSPLandroidx/core/view/SoftwareKeyboardControllerCompat$Impl;->()V HSPLandroidx/core/view/SoftwareKeyboardControllerCompat;->(Landroid/view/View;)V HSPLandroidx/core/view/ViewCompat$$ExternalSyntheticLambda1;->()V +HSPLandroidx/core/view/ViewCompat$1;->(ILjava/lang/Class;I)V +HSPLandroidx/core/view/ViewCompat$1;->frameworkGet(Landroid/view/View;)Ljava/lang/Boolean; +HSPLandroidx/core/view/ViewCompat$1;->frameworkGet(Landroid/view/View;)Ljava/lang/Object; HSPLandroidx/core/view/ViewCompat$2;->(ILjava/lang/Class;II)V HSPLandroidx/core/view/ViewCompat$2;->frameworkGet(Landroid/view/View;)Ljava/lang/CharSequence; HSPLandroidx/core/view/ViewCompat$2;->frameworkGet(Landroid/view/View;)Ljava/lang/Object; +HSPLandroidx/core/view/ViewCompat$3;->(ILjava/lang/Class;II)V +HSPLandroidx/core/view/ViewCompat$3;->frameworkGet(Landroid/view/View;)Ljava/lang/CharSequence; +HSPLandroidx/core/view/ViewCompat$3;->frameworkGet(Landroid/view/View;)Ljava/lang/Object; +HSPLandroidx/core/view/ViewCompat$4;->(ILjava/lang/Class;I)V +HSPLandroidx/core/view/ViewCompat$4;->frameworkGet(Landroid/view/View;)Ljava/lang/Boolean; +HSPLandroidx/core/view/ViewCompat$4;->frameworkGet(Landroid/view/View;)Ljava/lang/Object; HSPLandroidx/core/view/ViewCompat$AccessibilityPaneVisibilityManager;->()V +HSPLandroidx/core/view/ViewCompat$AccessibilityViewProperty;->(ILjava/lang/Class;I)V HSPLandroidx/core/view/ViewCompat$AccessibilityViewProperty;->(ILjava/lang/Class;II)V HSPLandroidx/core/view/ViewCompat$AccessibilityViewProperty;->frameworkAvailable()Z HSPLandroidx/core/view/ViewCompat$AccessibilityViewProperty;->get(Landroid/view/View;)Ljava/lang/Object; @@ -8119,9 +8348,13 @@ HSPLandroidx/core/view/ViewCompat$Api21Impl;->setOnApplyWindowInsetsListener(Lan HSPLandroidx/core/view/ViewCompat$Api26Impl;->getImportantForAutofill(Landroid/view/View;)I HSPLandroidx/core/view/ViewCompat$Api26Impl;->setImportantForAutofill(Landroid/view/View;I)V HSPLandroidx/core/view/ViewCompat$Api28Impl;->getAccessibilityPaneTitle(Landroid/view/View;)Ljava/lang/CharSequence; +HSPLandroidx/core/view/ViewCompat$Api28Impl;->isAccessibilityHeading(Landroid/view/View;)Z +HSPLandroidx/core/view/ViewCompat$Api28Impl;->isScreenReaderFocusable(Landroid/view/View;)Z HSPLandroidx/core/view/ViewCompat$Api29Impl;->getAccessibilityDelegate(Landroid/view/View;)Landroid/view/View$AccessibilityDelegate; HSPLandroidx/core/view/ViewCompat$Api29Impl;->saveAttributeDataForStyleable(Landroid/view/View;Landroid/content/Context;[ILandroid/util/AttributeSet;Landroid/content/res/TypedArray;II)V +HSPLandroidx/core/view/ViewCompat$Api30Impl;->getStateDescription(Landroid/view/View;)Ljava/lang/CharSequence; HSPLandroidx/core/view/ViewCompat;->()V +HSPLandroidx/core/view/ViewCompat;->accessibilityHeadingProperty()Landroidx/core/view/ViewCompat$AccessibilityViewProperty; HSPLandroidx/core/view/ViewCompat;->addAccessibilityAction(Landroid/view/View;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;)V HSPLandroidx/core/view/ViewCompat;->ensureAccessibilityDelegateCompat(Landroid/view/View;)V HSPLandroidx/core/view/ViewCompat;->getAccessibilityDelegate(Landroid/view/View;)Landroidx/core/view/AccessibilityDelegateCompat; @@ -8138,9 +8371,12 @@ HSPLandroidx/core/view/ViewCompat;->getMinimumHeight(Landroid/view/View;)I HSPLandroidx/core/view/ViewCompat;->getMinimumWidth(Landroid/view/View;)I HSPLandroidx/core/view/ViewCompat;->getPaddingEnd(Landroid/view/View;)I HSPLandroidx/core/view/ViewCompat;->getPaddingStart(Landroid/view/View;)I +HSPLandroidx/core/view/ViewCompat;->getStateDescription(Landroid/view/View;)Ljava/lang/CharSequence; HSPLandroidx/core/view/ViewCompat;->hasAccessibilityDelegate(Landroid/view/View;)Z HSPLandroidx/core/view/ViewCompat;->hasOnClickListeners(Landroid/view/View;)Z +HSPLandroidx/core/view/ViewCompat;->isAccessibilityHeading(Landroid/view/View;)Z HSPLandroidx/core/view/ViewCompat;->isLaidOut(Landroid/view/View;)Z +HSPLandroidx/core/view/ViewCompat;->isScreenReaderFocusable(Landroid/view/View;)Z HSPLandroidx/core/view/ViewCompat;->notifyViewAccessibilityStateChangedIfNeeded(Landroid/view/View;I)V HSPLandroidx/core/view/ViewCompat;->offsetLeftAndRight(Landroid/view/View;I)V HSPLandroidx/core/view/ViewCompat;->offsetTopAndBottom(Landroid/view/View;I)V @@ -8152,6 +8388,7 @@ HSPLandroidx/core/view/ViewCompat;->removeActionWithId(ILandroid/view/View;)V HSPLandroidx/core/view/ViewCompat;->replaceAccessibilityAction(Landroid/view/View;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;Ljava/lang/CharSequence;Landroidx/core/view/accessibility/AccessibilityViewCommand;)V HSPLandroidx/core/view/ViewCompat;->requestApplyInsets(Landroid/view/View;)V HSPLandroidx/core/view/ViewCompat;->saveAttributeDataForStyleable(Landroid/view/View;Landroid/content/Context;[ILandroid/util/AttributeSet;Landroid/content/res/TypedArray;II)V +HSPLandroidx/core/view/ViewCompat;->screenReaderFocusableProperty()Landroidx/core/view/ViewCompat$AccessibilityViewProperty; HSPLandroidx/core/view/ViewCompat;->setAccessibilityDelegate(Landroid/view/View;Landroidx/core/view/AccessibilityDelegateCompat;)V HSPLandroidx/core/view/ViewCompat;->setBackground(Landroid/view/View;Landroid/graphics/drawable/Drawable;)V HSPLandroidx/core/view/ViewCompat;->setBackgroundTintList(Landroid/view/View;Landroid/content/res/ColorStateList;)V @@ -8161,6 +8398,7 @@ HSPLandroidx/core/view/ViewCompat;->setImportantForAccessibilityIfNeeded(Landroi HSPLandroidx/core/view/ViewCompat;->setImportantForAutofill(Landroid/view/View;I)V HSPLandroidx/core/view/ViewCompat;->setOnApplyWindowInsetsListener(Landroid/view/View;Landroidx/core/view/OnApplyWindowInsetsListener;)V HSPLandroidx/core/view/ViewCompat;->setPaddingRelative(Landroid/view/View;IIII)V +HSPLandroidx/core/view/ViewCompat;->stateDescriptionProperty()Landroidx/core/view/ViewCompat$AccessibilityViewProperty; HSPLandroidx/core/view/ViewConfigurationCompat$Api26Impl;->getScaledHorizontalScrollFactor(Landroid/view/ViewConfiguration;)F HSPLandroidx/core/view/ViewConfigurationCompat$Api26Impl;->getScaledVerticalScrollFactor(Landroid/view/ViewConfiguration;)F HSPLandroidx/core/view/ViewConfigurationCompat$Api28Impl;->shouldShowMenuShortcutsWhenKeyboardPresent(Landroid/view/ViewConfiguration;)Z @@ -8171,6 +8409,11 @@ HSPLandroidx/core/view/ViewConfigurationCompat;->shouldShowMenuShortcutsWhenKeyb HSPLandroidx/core/view/ViewKt$doOnPreDraw$1;->(Lkotlin/jvm/functions/Function1;Landroid/view/View;)V HSPLandroidx/core/view/ViewKt$doOnPreDraw$1;->run()V HSPLandroidx/core/view/ViewKt;->doOnPreDraw(Landroid/view/View;Lkotlin/jvm/functions/Function1;)Landroidx/core/view/OneShotPreDrawListener; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline13;->m(Landroid/view/accessibility/AccessibilityNodeInfo;Ljava/util/List;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline14;->m(Landroid/view/accessibility/AccessibilityNodeInfo;Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline3;->m(Landroid/view/accessibility/AccessibilityNodeInfo;Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline4;->m(Landroid/view/accessibility/AccessibilityNodeInfo;Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline5;->m(Landroid/view/accessibility/AccessibilityNodeInfo;Z)V HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat$$ExternalSyntheticApiModelOutline0;->m()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat$$ExternalSyntheticApiModelOutline11;->m()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat$$ExternalSyntheticApiModelOutline13;->m()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; @@ -8194,9 +8437,59 @@ HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityAc HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;->(Ljava/lang/Object;ILjava/lang/CharSequence;Landroidx/core/view/accessibility/AccessibilityViewCommand;Ljava/lang/Class;)V HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;->createReplacementAction(Ljava/lang/CharSequence;Landroidx/core/view/accessibility/AccessibilityViewCommand;)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat; HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;->getId()I +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$Api30Impl;->setStateDescription(Landroid/view/accessibility/AccessibilityNodeInfo;Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionInfoCompat;->(Ljava/lang/Object;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionInfoCompat;->obtain(IIZI)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionInfoCompat; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->()V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->addAction(I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->addAction(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->addChild(Landroid/view/View;I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->addSpansToExtras(Ljava/lang/CharSequence;Landroid/view/View;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->extrasIntList(Ljava/lang/String;)Ljava/util/List; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->getMovementGranularities()I +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->getText()Ljava/lang/CharSequence; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->hasSpans()Z +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->isClickable()Z +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->isFocusable()Z +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->isFocused()Z +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->obtain()Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setAccessibilityFocused(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setAvailableExtraData(Ljava/util/List;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setBoundsInScreen(Landroid/graphics/Rect;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setCheckable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setClassName(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setClickable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setCollectionInfo(Ljava/lang/Object;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setContentDescription(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setEditable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setEnabled(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setFocusable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setFocused(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setHeading(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setImportantForAccessibility(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setLongClickable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setMaxTextLength(I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setMovementGranularities(I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setPackageName(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setPaneTitle(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setParent(Landroid/view/View;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setParent(Landroid/view/View;I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setPassword(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setScreenReaderFocusable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setScrollable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setSource(Landroid/view/View;I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setStateDescription(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setText(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setTextSelection(II)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setVisibleToUser(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->unwrap()Landroid/view/accessibility/AccessibilityNodeInfo; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->wrap(Landroid/view/accessibility/AccessibilityNodeInfo;)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; HSPLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat$AccessibilityNodeProviderApi19;->(Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat$AccessibilityNodeProviderApi19;->createAccessibilityNodeInfo(I)Landroid/view/accessibility/AccessibilityNodeInfo; HSPLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat$AccessibilityNodeProviderApi26;->(Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat;)V HSPLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat;->()V +HSPLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat;->getProvider()Ljava/lang/Object; HSPLandroidx/core/view/animation/PathInterpolatorCompat$Api21Impl;->createPathInterpolator(FFFF)Landroid/view/animation/Interpolator; HSPLandroidx/core/view/animation/PathInterpolatorCompat;->create(FFFF)Landroid/view/animation/Interpolator; HSPLandroidx/core/widget/ImageViewCompat$Api21Impl;->setImageTintList(Landroid/widget/ImageView;Landroid/content/res/ColorStateList;)V @@ -9031,9 +9324,12 @@ HSPLandroidx/lifecycle/Transformations$switchMap$1;->invoke(Ljava/lang/Object;)V HSPLandroidx/lifecycle/Transformations;->map(Landroidx/lifecycle/LiveData;Lkotlin/jvm/functions/Function1;)Landroidx/lifecycle/LiveData; HSPLandroidx/lifecycle/Transformations;->switchMap(Landroidx/lifecycle/LiveData;Lkotlin/jvm/functions/Function1;)Landroidx/lifecycle/LiveData; HSPLandroidx/lifecycle/ViewModel;->()V +HSPLandroidx/lifecycle/ViewModel;->addCloseable(Ljava/lang/String;Ljava/lang/AutoCloseable;)V HSPLandroidx/lifecycle/ViewModel;->clear$lifecycle_viewmodel_release()V HSPLandroidx/lifecycle/ViewModel;->getCloseable(Ljava/lang/String;)Ljava/lang/AutoCloseable; HSPLandroidx/lifecycle/ViewModel;->onCleared()V +HSPLandroidx/lifecycle/ViewModelKt;->()V +HSPLandroidx/lifecycle/ViewModelKt;->getViewModelScope(Landroidx/lifecycle/ViewModel;)Lkotlinx/coroutines/CoroutineScope; HSPLandroidx/lifecycle/ViewModelLazy;->(Lkotlin/reflect/KClass;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V HSPLandroidx/lifecycle/ViewModelLazy;->getValue()Landroidx/lifecycle/ViewModel; HSPLandroidx/lifecycle/ViewModelLazy;->getValue()Ljava/lang/Object; @@ -9128,11 +9424,16 @@ HSPLandroidx/lifecycle/viewmodel/ViewModelProviderImpl;->(Landroidx/lifecy HSPLandroidx/lifecycle/viewmodel/ViewModelProviderImpl;->getViewModel$lifecycle_viewmodel_release$default(Landroidx/lifecycle/viewmodel/ViewModelProviderImpl;Lkotlin/reflect/KClass;Ljava/lang/String;ILjava/lang/Object;)Landroidx/lifecycle/ViewModel; HSPLandroidx/lifecycle/viewmodel/ViewModelProviderImpl;->getViewModel$lifecycle_viewmodel_release(Lkotlin/reflect/KClass;Ljava/lang/String;)Landroidx/lifecycle/ViewModel; HSPLandroidx/lifecycle/viewmodel/ViewModelProviderImpl_androidKt;->createViewModel(Landroidx/lifecycle/ViewModelProvider$Factory;Lkotlin/reflect/KClass;Landroidx/lifecycle/viewmodel/CreationExtras;)Landroidx/lifecycle/ViewModel; +HSPLandroidx/lifecycle/viewmodel/internal/CloseableCoroutineScope;->(Lkotlin/coroutines/CoroutineContext;)V +HSPLandroidx/lifecycle/viewmodel/internal/CloseableCoroutineScope;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext; +HSPLandroidx/lifecycle/viewmodel/internal/CloseableCoroutineScopeKt;->createViewModelScope()Landroidx/lifecycle/viewmodel/internal/CloseableCoroutineScope; HSPLandroidx/lifecycle/viewmodel/internal/SynchronizedObject;->()V HSPLandroidx/lifecycle/viewmodel/internal/ViewModelImpl;->()V HSPLandroidx/lifecycle/viewmodel/internal/ViewModelImpl;->access$getCloseables$p(Landroidx/lifecycle/viewmodel/internal/ViewModelImpl;)Ljava/util/Set; HSPLandroidx/lifecycle/viewmodel/internal/ViewModelImpl;->access$getKeyToCloseables$p(Landroidx/lifecycle/viewmodel/internal/ViewModelImpl;)Ljava/util/Map; +HSPLandroidx/lifecycle/viewmodel/internal/ViewModelImpl;->addCloseable(Ljava/lang/String;Ljava/lang/AutoCloseable;)V HSPLandroidx/lifecycle/viewmodel/internal/ViewModelImpl;->clear()V +HSPLandroidx/lifecycle/viewmodel/internal/ViewModelImpl;->closeWithRuntimeException(Ljava/lang/AutoCloseable;)V HSPLandroidx/lifecycle/viewmodel/internal/ViewModelImpl;->getCloseable(Ljava/lang/String;)Ljava/lang/AutoCloseable; HSPLandroidx/lifecycle/viewmodel/internal/ViewModelProviders$ViewModelKey;->()V HSPLandroidx/lifecycle/viewmodel/internal/ViewModelProviders$ViewModelKey;->()V @@ -11058,6 +11359,7 @@ HSPLandroidx/recyclerview/widget/AsyncListDiffer;->addListListener(Landroidx/rec HSPLandroidx/recyclerview/widget/AsyncListDiffer;->getCurrentList()Ljava/util/List; HSPLandroidx/recyclerview/widget/AsyncListDiffer;->latchList(Ljava/util/List;Landroidx/recyclerview/widget/DiffUtil$DiffResult;Ljava/lang/Runnable;)V HSPLandroidx/recyclerview/widget/AsyncListDiffer;->onCurrentListChanged(Ljava/util/List;Ljava/lang/Runnable;)V +HSPLandroidx/recyclerview/widget/AsyncListDiffer;->submitList(Ljava/util/List;)V HSPLandroidx/recyclerview/widget/AsyncListDiffer;->submitList(Ljava/util/List;Ljava/lang/Runnable;)V HSPLandroidx/recyclerview/widget/BatchingListUpdateCallback;->(Landroidx/recyclerview/widget/ListUpdateCallback;)V HSPLandroidx/recyclerview/widget/BatchingListUpdateCallback;->dispatchLastEvent()V @@ -11079,6 +11381,7 @@ HSPLandroidx/recyclerview/widget/ChildHelper;->getChildCount()I HSPLandroidx/recyclerview/widget/ChildHelper;->getOffset(I)I HSPLandroidx/recyclerview/widget/ChildHelper;->getUnfilteredChildAt(I)Landroid/view/View; HSPLandroidx/recyclerview/widget/ChildHelper;->getUnfilteredChildCount()I +HSPLandroidx/recyclerview/widget/ChildHelper;->isHidden(Landroid/view/View;)Z HSPLandroidx/recyclerview/widget/ChildHelper;->removeAllViewsUnfiltered()V HSPLandroidx/recyclerview/widget/ChildHelper;->removeViewIfHidden(Landroid/view/View;)Z HSPLandroidx/recyclerview/widget/DefaultItemAnimator$3;->(Landroidx/recyclerview/widget/DefaultItemAnimator;Ljava/util/ArrayList;)V @@ -11203,6 +11506,7 @@ HSPLandroidx/recyclerview/widget/ListAdapter;->(Landroidx/recyclerview/wid HSPLandroidx/recyclerview/widget/ListAdapter;->getItem(I)Ljava/lang/Object; HSPLandroidx/recyclerview/widget/ListAdapter;->getItemCount()I HSPLandroidx/recyclerview/widget/ListAdapter;->onCurrentListChanged(Ljava/util/List;Ljava/util/List;)V +HSPLandroidx/recyclerview/widget/ListAdapter;->submitList(Ljava/util/List;)V HSPLandroidx/recyclerview/widget/ListAdapter;->submitList(Ljava/util/List;Ljava/lang/Runnable;)V HSPLandroidx/recyclerview/widget/OpReorderer;->(Landroidx/recyclerview/widget/OpReorderer$Callback;)V HSPLandroidx/recyclerview/widget/OpReorderer;->getLastMoveOutOfOrder(Ljava/util/List;)I @@ -11317,6 +11621,7 @@ HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getBottomDecoratio HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getChildAt(I)Landroid/view/View; HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getChildCount()I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getChildMeasureSpec(IIIIZ)I +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getColumnCountForAccessibility(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;)I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getDecoratedBottom(Landroid/view/View;)I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getDecoratedBoundsWithMargins(Landroid/view/View;Landroid/graphics/Rect;)V HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getDecoratedMeasuredHeight(Landroid/view/View;)I @@ -11334,9 +11639,12 @@ HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getPaddingRight()I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getPaddingTop()I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getPosition(Landroid/view/View;)I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getProperties(Landroid/content/Context;Landroid/util/AttributeSet;II)Landroidx/recyclerview/widget/RecyclerView$LayoutManager$Properties; +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getRowCountForAccessibility(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;)I +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getSelectionModeForAccessibility(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;)I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getTopDecorationHeight(Landroid/view/View;)I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getWidth()I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getWidthMode()I +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->isLayoutHierarchical(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;)Z HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->isMeasurementUpToDate(III)Z HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->layoutDecoratedWithMargins(Landroid/view/View;IIII)V HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->measureChildWithMargins(Landroid/view/View;II)V @@ -11344,6 +11652,10 @@ HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onAdapterChanged(L HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onAttachedToWindow(Landroidx/recyclerview/widget/RecyclerView;)V HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onInitializeAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onInitializeAccessibilityEvent(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onInitializeAccessibilityNodeInfo(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onInitializeAccessibilityNodeInfo(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onInitializeAccessibilityNodeInfoForItem(Landroid/view/View;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onInitializeAccessibilityNodeInfoForItem(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;Landroid/view/View;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onItemsAdded(Landroidx/recyclerview/widget/RecyclerView;II)V HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onLayoutCompleted(Landroidx/recyclerview/widget/RecyclerView$State;)V HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onMeasure(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;II)V @@ -11454,6 +11766,9 @@ HSPLandroidx/recyclerview/widget/RecyclerView;->animateAppearance(Landroidx/recy HSPLandroidx/recyclerview/widget/RecyclerView;->assertNotInLayoutOrScroll(Ljava/lang/String;)V HSPLandroidx/recyclerview/widget/RecyclerView;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z HSPLandroidx/recyclerview/widget/RecyclerView;->clearOldPositions()V +HSPLandroidx/recyclerview/widget/RecyclerView;->computeHorizontalScrollExtent()I +HSPLandroidx/recyclerview/widget/RecyclerView;->computeHorizontalScrollOffset()I +HSPLandroidx/recyclerview/widget/RecyclerView;->computeHorizontalScrollRange()I HSPLandroidx/recyclerview/widget/RecyclerView;->computeVerticalScrollExtent()I HSPLandroidx/recyclerview/widget/RecyclerView;->computeVerticalScrollOffset()I HSPLandroidx/recyclerview/widget/RecyclerView;->computeVerticalScrollRange()I @@ -11481,6 +11796,7 @@ HSPLandroidx/recyclerview/widget/RecyclerView;->getChangedHolderKey(Landroidx/re HSPLandroidx/recyclerview/widget/RecyclerView;->getChildViewHolderInt(Landroid/view/View;)Landroidx/recyclerview/widget/RecyclerView$ViewHolder; HSPLandroidx/recyclerview/widget/RecyclerView;->getDecoratedBoundsWithMarginsInt(Landroid/view/View;Landroid/graphics/Rect;)V HSPLandroidx/recyclerview/widget/RecyclerView;->getFullClassName(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String; +HSPLandroidx/recyclerview/widget/RecyclerView;->getItemAnimator()Landroidx/recyclerview/widget/RecyclerView$ItemAnimator; HSPLandroidx/recyclerview/widget/RecyclerView;->getItemDecorInsetsForChild(Landroid/view/View;)Landroid/graphics/Rect; HSPLandroidx/recyclerview/widget/RecyclerView;->getLayoutManager()Landroidx/recyclerview/widget/RecyclerView$LayoutManager; HSPLandroidx/recyclerview/widget/RecyclerView;->getNanoTime()J @@ -11535,10 +11851,13 @@ HSPLandroidx/recyclerview/widget/RecyclerView;->stopScroll()V HSPLandroidx/recyclerview/widget/RecyclerView;->stopScrollersInternal()V HSPLandroidx/recyclerview/widget/RecyclerView;->suppressLayout(Z)V HSPLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->(Landroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate;)V +HSPLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->getAccessibilityNodeProvider(Landroid/view/View;)Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat; +HSPLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->onInitializeAccessibilityNodeInfo(Landroid/view/View;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V HSPLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->saveOriginalDelegate(Landroid/view/View;)V HSPLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate;->(Landroidx/recyclerview/widget/RecyclerView;)V HSPLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate;->getItemDelegate()Landroidx/core/view/AccessibilityDelegateCompat; HSPLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate;->onInitializeAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate;->onInitializeAccessibilityNodeInfo(Landroid/view/View;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V HSPLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate;->shouldIgnore()Z HSPLandroidx/recyclerview/widget/ScrollbarHelper;->computeScrollExtent(Landroidx/recyclerview/widget/RecyclerView$State;Landroidx/recyclerview/widget/OrientationHelper;Landroid/view/View;Landroid/view/View;Landroidx/recyclerview/widget/RecyclerView$LayoutManager;Z)I HSPLandroidx/recyclerview/widget/ScrollbarHelper;->computeScrollOffset(Landroidx/recyclerview/widget/RecyclerView$State;Landroidx/recyclerview/widget/OrientationHelper;Landroid/view/View;Landroid/view/View;Landroidx/recyclerview/widget/RecyclerView$LayoutManager;ZZ)I @@ -11715,6 +12034,7 @@ HSPLcom/airbnb/lottie/LottieCompositionFactory;->matchesMagicBytes(Lokio/Buffere HSPLcom/airbnb/lottie/LottieCompositionFactory;->notifyTaskCacheIdleListeners(Z)V HSPLcom/airbnb/lottie/LottieCompositionFactory;->rawResCacheKey(Landroid/content/Context;I)Ljava/lang/String; HSPLcom/airbnb/lottie/LottieDrawable$$ExternalSyntheticLambda15;->(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/KeyPath;Ljava/lang/Object;Lcom/airbnb/lottie/value/LottieValueCallback;)V +HSPLcom/airbnb/lottie/LottieDrawable$$ExternalSyntheticLambda15;->run(Lcom/airbnb/lottie/LottieComposition;)V HSPLcom/airbnb/lottie/LottieDrawable$$ExternalSyntheticLambda5;->(Lcom/airbnb/lottie/LottieDrawable;)V HSPLcom/airbnb/lottie/LottieDrawable$$ExternalSyntheticLambda5;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V HSPLcom/airbnb/lottie/LottieDrawable$$ExternalSyntheticLambda6;->(Lcom/airbnb/lottie/LottieDrawable;)V @@ -11725,6 +12045,7 @@ HSPLcom/airbnb/lottie/LottieDrawable$OnVisibleAction;->()V HSPLcom/airbnb/lottie/LottieDrawable$OnVisibleAction;->(Ljava/lang/String;I)V HSPLcom/airbnb/lottie/LottieDrawable;->$r8$lambda$0fk9nqzO-YRr_DadS437kBHSLkk(Lcom/airbnb/lottie/LottieDrawable;FLcom/airbnb/lottie/LottieComposition;)V HSPLcom/airbnb/lottie/LottieDrawable;->$r8$lambda$FrCfuTMBgjEG3fdle3MNkWCjUJw(Lcom/airbnb/lottie/LottieDrawable;Landroid/animation/ValueAnimator;)V +HSPLcom/airbnb/lottie/LottieDrawable;->$r8$lambda$ggKGgUU7APaJ1sFO8LW45ujpVes(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/KeyPath;Ljava/lang/Object;Lcom/airbnb/lottie/value/LottieValueCallback;Lcom/airbnb/lottie/LottieComposition;)V HSPLcom/airbnb/lottie/LottieDrawable;->()V HSPLcom/airbnb/lottie/LottieDrawable;->()V HSPLcom/airbnb/lottie/LottieDrawable;->addValueCallback(Lcom/airbnb/lottie/model/KeyPath;Ljava/lang/Object;Lcom/airbnb/lottie/value/LottieValueCallback;)V @@ -11743,6 +12064,7 @@ HSPLcom/airbnb/lottie/LottieDrawable;->getOpacity()I HSPLcom/airbnb/lottie/LottieDrawable;->getRenderMode()Lcom/airbnb/lottie/RenderMode; HSPLcom/airbnb/lottie/LottieDrawable;->invalidateSelf()V HSPLcom/airbnb/lottie/LottieDrawable;->isApplyingOpacityToLayersEnabled()Z +HSPLcom/airbnb/lottie/LottieDrawable;->lambda$addValueCallback$17(Lcom/airbnb/lottie/model/KeyPath;Ljava/lang/Object;Lcom/airbnb/lottie/value/LottieValueCallback;Lcom/airbnb/lottie/LottieComposition;)V HSPLcom/airbnb/lottie/LottieDrawable;->lambda$new$0(Landroid/animation/ValueAnimator;)V HSPLcom/airbnb/lottie/LottieDrawable;->lambda$setProgress$16(FLcom/airbnb/lottie/LottieComposition;)V HSPLcom/airbnb/lottie/LottieDrawable;->pauseAnimation()V @@ -11988,6 +12310,7 @@ HSPLcom/airbnb/lottie/model/layer/BaseLayer$$ExternalSyntheticLambda0;->(L HSPLcom/airbnb/lottie/model/layer/BaseLayer$$ExternalSyntheticLambda0;->onValueChanged()V HSPLcom/airbnb/lottie/model/layer/BaseLayer$1;->()V HSPLcom/airbnb/lottie/model/layer/BaseLayer;->$r8$lambda$Sex8aFGiTOtvDrIkDy-hn-ODWJE(Lcom/airbnb/lottie/model/layer/BaseLayer;)V +HSPLcom/airbnb/lottie/model/layer/BaseLayer;->(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/Layer;)V HSPLcom/airbnb/lottie/model/layer/BaseLayer;->addAnimation(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;)V HSPLcom/airbnb/lottie/model/layer/BaseLayer;->addValueCallback(Ljava/lang/Object;Lcom/airbnb/lottie/value/LottieValueCallback;)V HSPLcom/airbnb/lottie/model/layer/BaseLayer;->buildParentLayerListIfNeeded()V @@ -12146,6 +12469,7 @@ HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->(Lokio/BufferedSource; HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->beginArray()V HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->beginObject()V HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->close()V +HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->doPeek()I HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->endArray()V HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->endObject()V HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->findName(Ljava/lang/String;Lcom/airbnb/lottie/parser/moshi/JsonReader$Options;)I @@ -12155,12 +12479,12 @@ HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->nextBoolean()Z HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->nextDouble()D HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->nextInt()I HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->nextName()Ljava/lang/String; -HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->nextNonWhitespace(Z)I HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->nextQuotedValue(Lokio/ByteString;)Ljava/lang/String; HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->nextString()Ljava/lang/String; HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->peek()Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->peekKeyword()I HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->peekNumber()I +HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->selectName(Lcom/airbnb/lottie/parser/moshi/JsonReader$Options;)I HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->skipName()V HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->skipQuotedValue(Lokio/ByteString;)V HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->skipValue()V @@ -13287,7 +13611,6 @@ HSPLcom/fasterxml/jackson/core/Base64Variant;->usesPadding()Z HSPLcom/fasterxml/jackson/core/Base64Variants;->()V HSPLcom/fasterxml/jackson/core/Base64Variants;->getDefaultVariant()Lcom/fasterxml/jackson/core/Base64Variant; HSPLcom/fasterxml/jackson/core/JacksonException;->(Ljava/lang/String;)V -HSPLcom/fasterxml/jackson/core/JacksonException;->(Ljava/lang/String;Ljava/lang/Throwable;)V HSPLcom/fasterxml/jackson/core/JsonEncoding;->()V HSPLcom/fasterxml/jackson/core/JsonEncoding;->(Ljava/lang/String;ILjava/lang/String;ZI)V HSPLcom/fasterxml/jackson/core/JsonFactory$Feature;->()V @@ -13332,8 +13655,6 @@ HSPLcom/fasterxml/jackson/core/JsonLocation;->(Ljava/lang/Object;JJII)V HSPLcom/fasterxml/jackson/core/JsonLocation;->_append(Ljava/lang/StringBuilder;Ljava/lang/String;)I HSPLcom/fasterxml/jackson/core/JsonLocation;->_appendSourceDesc(Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder; HSPLcom/fasterxml/jackson/core/JsonLocation;->toString()Ljava/lang/String; -HSPLcom/fasterxml/jackson/core/JsonParseException;->(Lcom/fasterxml/jackson/core/JsonParser;Ljava/lang/String;)V -HSPLcom/fasterxml/jackson/core/JsonParseException;->withRequestPayload(Lcom/fasterxml/jackson/core/util/RequestPayload;)Lcom/fasterxml/jackson/core/JsonParseException; HSPLcom/fasterxml/jackson/core/JsonParser$Feature;->()V HSPLcom/fasterxml/jackson/core/JsonParser$Feature;->(Ljava/lang/String;IZ)V HSPLcom/fasterxml/jackson/core/JsonParser$Feature;->collectDefaults()I @@ -13345,12 +13666,9 @@ HSPLcom/fasterxml/jackson/core/JsonParser$NumberType;->()V HSPLcom/fasterxml/jackson/core/JsonParser$NumberType;->(Ljava/lang/String;I)V HSPLcom/fasterxml/jackson/core/JsonParser;->()V HSPLcom/fasterxml/jackson/core/JsonParser;->(I)V -HSPLcom/fasterxml/jackson/core/JsonParser;->_constructError(Ljava/lang/String;)Lcom/fasterxml/jackson/core/JsonParseException; HSPLcom/fasterxml/jackson/core/JsonParser;->currentName()Ljava/lang/String; HSPLcom/fasterxml/jackson/core/JsonParser;->isEnabled(Lcom/fasterxml/jackson/core/JsonParser$Feature;)Z HSPLcom/fasterxml/jackson/core/JsonProcessingException;->(Ljava/lang/String;)V -HSPLcom/fasterxml/jackson/core/JsonProcessingException;->(Ljava/lang/String;Lcom/fasterxml/jackson/core/JsonLocation;)V -HSPLcom/fasterxml/jackson/core/JsonProcessingException;->(Ljava/lang/String;Lcom/fasterxml/jackson/core/JsonLocation;Ljava/lang/Throwable;)V HSPLcom/fasterxml/jackson/core/JsonProcessingException;->getLocation()Lcom/fasterxml/jackson/core/JsonLocation; HSPLcom/fasterxml/jackson/core/JsonProcessingException;->getMessage()Ljava/lang/String; HSPLcom/fasterxml/jackson/core/JsonProcessingException;->getMessageSuffix()Ljava/lang/String; @@ -13394,8 +13712,6 @@ HSPLcom/fasterxml/jackson/core/base/ParserBase;->_handleEOF()V HSPLcom/fasterxml/jackson/core/base/ParserBase;->_parseIntValue()I HSPLcom/fasterxml/jackson/core/base/ParserBase;->_parseNumericValue(I)V HSPLcom/fasterxml/jackson/core/base/ParserBase;->_releaseBuffers()V -HSPLcom/fasterxml/jackson/core/base/ParserBase;->_validJsonTokenList()Ljava/lang/String; -HSPLcom/fasterxml/jackson/core/base/ParserBase;->_validJsonValueList()Ljava/lang/String; HSPLcom/fasterxml/jackson/core/base/ParserBase;->close()V HSPLcom/fasterxml/jackson/core/base/ParserBase;->convertNumberToLong()V HSPLcom/fasterxml/jackson/core/base/ParserBase;->getCurrentName()Ljava/lang/String; @@ -13407,7 +13723,6 @@ HSPLcom/fasterxml/jackson/core/base/ParserBase;->resetInt(ZI)Lcom/fasterxml/jack HSPLcom/fasterxml/jackson/core/base/ParserBase;->setCurrentValue(Ljava/lang/Object;)V HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->()V HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->(I)V -HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->_reportError(Ljava/lang/String;)V HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->currentToken()Lcom/fasterxml/jackson/core/JsonToken; HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->currentTokenId()I HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->getValueAsString()Ljava/lang/String; @@ -13418,7 +13733,6 @@ HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->isExpectedNumberIntToken HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->isExpectedStartArrayToken()Z HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->isExpectedStartObjectToken()Z HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->skipChildren()Lcom/fasterxml/jackson/core/JsonParser; -HSPLcom/fasterxml/jackson/core/exc/StreamReadException;->(Lcom/fasterxml/jackson/core/JsonParser;Ljava/lang/String;)V HSPLcom/fasterxml/jackson/core/io/CharTypes;->()V HSPLcom/fasterxml/jackson/core/io/CharTypes;->copyHexBytes()[B HSPLcom/fasterxml/jackson/core/io/CharTypes;->copyHexChars()[C @@ -13505,7 +13819,6 @@ HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_matchFalse()V HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_matchNull()V HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_matchTrue()V HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_nextAfterName()Lcom/fasterxml/jackson/core/JsonToken; -HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_parseName()Ljava/lang/String; HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_parseName2(III)Ljava/lang/String; HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_parseNumber2(ZI)Lcom/fasterxml/jackson/core/JsonToken; HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_parsePosNumber(I)Lcom/fasterxml/jackson/core/JsonToken; @@ -13548,10 +13861,8 @@ HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->(Lcom/fasterxml HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_closeArrayScope()V HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_closeInput()V HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_closeObjectScope()V -HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_decodeCharForError(I)I HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_finishAndReturnString()Ljava/lang/String; HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_finishString2([CI)V -HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_handleUnexpectedValue(I)Lcom/fasterxml/jackson/core/JsonToken; HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_loadMore()Z HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_loadMoreGuaranteed()V HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_nextAfterName()Lcom/fasterxml/jackson/core/JsonToken; @@ -13560,8 +13871,6 @@ HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_padLastQuad(II)I HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_parseName(I)Ljava/lang/String; HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_parsePosNumber(I)Lcom/fasterxml/jackson/core/JsonToken; HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_releaseBuffers()V -HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_reportInvalidOther(I)V -HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_reportInvalidToken(Ljava/lang/String;Ljava/lang/String;)V HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_skipColon()I HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_skipWS()I HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_skipWS2()I @@ -13573,12 +13882,9 @@ HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->findName(II)Ljava/lan HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->findName(III)Ljava/lang/String; HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->findName(IIII)Ljava/lang/String; HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->findName([IIII)Ljava/lang/String; -HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->getCurrentLocation()Lcom/fasterxml/jackson/core/JsonLocation; HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->getReadCapabilities()Lcom/fasterxml/jackson/core/util/JacksonFeatureSet; HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->getText()Ljava/lang/String; -HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->nextByte()I HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->nextFieldName()Ljava/lang/String; -HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->nextToken()Lcom/fasterxml/jackson/core/JsonToken; HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->parseEscapedName([IIIII)Ljava/lang/String; HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->parseLongName(III)Ljava/lang/String; HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->parseMediumName(I)Ljava/lang/String; @@ -13590,6 +13896,7 @@ HSPLcom/fasterxml/jackson/core/json/WriterBasedJsonGenerator;->_flushBuffer()V HSPLcom/fasterxml/jackson/core/json/WriterBasedJsonGenerator;->_releaseBuffers()V HSPLcom/fasterxml/jackson/core/json/WriterBasedJsonGenerator;->_verifyValueWrite(Ljava/lang/String;)V HSPLcom/fasterxml/jackson/core/json/WriterBasedJsonGenerator;->_writeBinary(Lcom/fasterxml/jackson/core/Base64Variant;[BII)V +HSPLcom/fasterxml/jackson/core/json/WriterBasedJsonGenerator;->_writeFieldName(Lcom/fasterxml/jackson/core/SerializableString;Z)V HSPLcom/fasterxml/jackson/core/json/WriterBasedJsonGenerator;->_writeFieldName(Ljava/lang/String;Z)V HSPLcom/fasterxml/jackson/core/json/WriterBasedJsonGenerator;->_writeNull()V HSPLcom/fasterxml/jackson/core/json/WriterBasedJsonGenerator;->_writeString(Ljava/lang/String;)V @@ -13616,7 +13923,7 @@ HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_calcTertiaryShift(I HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_checkNeedForRehash()Z HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_findOffsetForAdd(I)I HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_findSecondary(III)Ljava/lang/String; -HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_findSecondary(IIII)Ljava/lang/String; +HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_findSecondary(II[II)Ljava/lang/String; HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_resizeAndFindOffsetForAdd(I)I HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_spilloverStart()I HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_verifyLongName([III)Z @@ -13646,7 +13953,6 @@ HSPLcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer$TableInfo;->createIn HSPLcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer;->(I)V HSPLcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer;->(Lcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer;IILcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer$TableInfo;)V HSPLcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer;->_addSymbol([CIIII)Ljava/lang/String; -HSPLcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer;->_findSymbol2([CIILcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer$Bucket;)Ljava/lang/String; HSPLcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer;->_hashToIndex(I)I HSPLcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer;->_thresholdSize(I)I HSPLcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer;->copyArrays()V @@ -14177,6 +14483,7 @@ HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->_deserializeWithErro HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->deserialize(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/lang/Object; HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->deserialize(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;Ljava/lang/Object;)Ljava/lang/Object; HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->deserializeFromObject(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/lang/Object; +HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->vanillaDeserialize(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;Lcom/fasterxml/jackson/core/JsonToken;)Ljava/lang/Object; HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializerBase;->()V HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializerBase;->(Lcom/fasterxml/jackson/databind/deser/BeanDeserializerBuilder;Lcom/fasterxml/jackson/databind/BeanDescription;Lcom/fasterxml/jackson/databind/deser/impl/BeanPropertyMap;Ljava/util/Map;Ljava/util/Set;ZLjava/util/Set;Z)V HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializerBase;->_delegateDeserializer()Lcom/fasterxml/jackson/databind/JsonDeserializer; @@ -14484,6 +14791,7 @@ HSPLcom/fasterxml/jackson/databind/deser/std/StringCollectionDeserializer;->createContextual(Lcom/fasterxml/jackson/databind/DeserializationContext;Lcom/fasterxml/jackson/databind/BeanProperty;)Lcom/fasterxml/jackson/databind/JsonDeserializer; HSPLcom/fasterxml/jackson/databind/deser/std/StringCollectionDeserializer;->deserialize(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/lang/Object; HSPLcom/fasterxml/jackson/databind/deser/std/StringCollectionDeserializer;->deserialize(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/util/Collection; +HSPLcom/fasterxml/jackson/databind/deser/std/StringCollectionDeserializer;->deserialize(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;Ljava/util/Collection;)Ljava/util/Collection; HSPLcom/fasterxml/jackson/databind/deser/std/StringCollectionDeserializer;->isCachable()Z HSPLcom/fasterxml/jackson/databind/deser/std/StringCollectionDeserializer;->withResolved(Lcom/fasterxml/jackson/databind/JsonDeserializer;Lcom/fasterxml/jackson/databind/JsonDeserializer;Lcom/fasterxml/jackson/databind/deser/NullValueProvider;Ljava/lang/Boolean;)Lcom/fasterxml/jackson/databind/deser/std/StringCollectionDeserializer; HSPLcom/fasterxml/jackson/databind/deser/std/StringDeserializer;->()V @@ -15024,7 +15332,8 @@ HSPLcom/fasterxml/jackson/databind/module/SimpleModule;->getModuleName()Ljava/la HSPLcom/fasterxml/jackson/databind/module/SimpleModule;->getTypeId()Ljava/lang/Object; HSPLcom/fasterxml/jackson/databind/module/SimpleModule;->setupModule(Lcom/fasterxml/jackson/databind/Module$SetupContext;)V HSPLcom/fasterxml/jackson/databind/module/SimpleModule;->version()Lcom/fasterxml/jackson/core/Version; -HSPLcom/fasterxml/jackson/databind/node/ArrayNode;->add(Lcom/fasterxml/jackson/databind/JsonNode;)Lcom/fasterxml/jackson/databind/node/ArrayNode; +HSPLcom/fasterxml/jackson/databind/node/ArrayNode;->(Lcom/fasterxml/jackson/databind/node/JsonNodeFactory;)V +HSPLcom/fasterxml/jackson/databind/node/ArrayNode;->_add(Lcom/fasterxml/jackson/databind/JsonNode;)Lcom/fasterxml/jackson/databind/node/ArrayNode; HSPLcom/fasterxml/jackson/databind/node/ArrayNode;->elements()Ljava/util/Iterator; HSPLcom/fasterxml/jackson/databind/node/ArrayNode;->size()I HSPLcom/fasterxml/jackson/databind/node/BaseJsonNode;->()V @@ -15168,12 +15477,14 @@ HSPLcom/fasterxml/jackson/databind/ser/impl/IndexedListSerializer;->serializeCon HSPLcom/fasterxml/jackson/databind/ser/impl/IndexedListSerializer;->serializeContentsUsing(Ljava/util/List;Lcom/fasterxml/jackson/core/JsonGenerator;Lcom/fasterxml/jackson/databind/SerializerProvider;Lcom/fasterxml/jackson/databind/JsonSerializer;)V HSPLcom/fasterxml/jackson/databind/ser/impl/IndexedListSerializer;->withResolved(Lcom/fasterxml/jackson/databind/BeanProperty;Lcom/fasterxml/jackson/databind/jsontype/TypeSerializer;Lcom/fasterxml/jackson/databind/JsonSerializer;Ljava/lang/Boolean;)Lcom/fasterxml/jackson/databind/ser/impl/IndexedListSerializer; HSPLcom/fasterxml/jackson/databind/ser/impl/IndexedListSerializer;->withResolved(Lcom/fasterxml/jackson/databind/BeanProperty;Lcom/fasterxml/jackson/databind/jsontype/TypeSerializer;Lcom/fasterxml/jackson/databind/JsonSerializer;Ljava/lang/Boolean;)Lcom/fasterxml/jackson/databind/ser/std/AsArraySerializerBase; +HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Double;->(Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap;Ljava/lang/Class;Lcom/fasterxml/jackson/databind/JsonSerializer;Ljava/lang/Class;Lcom/fasterxml/jackson/databind/JsonSerializer;)V HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Empty;->()V HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Empty;->(Z)V HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Empty;->newWith(Ljava/lang/Class;Lcom/fasterxml/jackson/databind/JsonSerializer;)Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap; HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Empty;->serializerFor(Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/JsonSerializer; HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$SerializerAndMapResult;->(Lcom/fasterxml/jackson/databind/JsonSerializer;Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap;)V HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Single;->(Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap;Ljava/lang/Class;Lcom/fasterxml/jackson/databind/JsonSerializer;)V +HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Single;->newWith(Ljava/lang/Class;Lcom/fasterxml/jackson/databind/JsonSerializer;)Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap; HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Single;->serializerFor(Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/JsonSerializer; HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap;->(Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap;)V HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap;->(Z)V @@ -15930,8 +16241,10 @@ HSPLcom/google/android/material/appbar/AppBarLayout$1;->(Lcom/google/andro HSPLcom/google/android/material/appbar/AppBarLayout$BaseBehavior$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/View;Landroid/view/View$OnUnhandledKeyEventListener;)V HSPLcom/google/android/material/appbar/AppBarLayout$BaseBehavior$$ExternalSyntheticLambda1;->(Lcom/google/android/material/appbar/AppBarLayout$BaseBehavior;Landroid/view/View;Lcom/google/android/material/appbar/AppBarLayout;)V HSPLcom/google/android/material/appbar/AppBarLayout$BaseBehavior$2;->(Lcom/google/android/material/appbar/AppBarLayout$BaseBehavior;)V +HSPLcom/google/android/material/appbar/AppBarLayout$BaseBehavior$2;->onInitializeAccessibilityNodeInfo(Landroid/view/View;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V HSPLcom/google/android/material/appbar/AppBarLayout$BaseBehavior$4;->(Lcom/google/android/material/appbar/AppBarLayout$BaseBehavior;Lcom/google/android/material/appbar/AppBarLayout;Z)V HSPLcom/google/android/material/appbar/AppBarLayout$BaseBehavior;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLcom/google/android/material/appbar/AppBarLayout$BaseBehavior;->access$000(Lcom/google/android/material/appbar/AppBarLayout$BaseBehavior;)Z HSPLcom/google/android/material/appbar/AppBarLayout$BaseBehavior;->access$100(Lcom/google/android/material/appbar/AppBarLayout$BaseBehavior;)I HSPLcom/google/android/material/appbar/AppBarLayout$BaseBehavior;->addAccessibilityScrollActions(Landroidx/coordinatorlayout/widget/CoordinatorLayout;Lcom/google/android/material/appbar/AppBarLayout;Landroid/view/View;)Z HSPLcom/google/android/material/appbar/AppBarLayout$BaseBehavior;->addActionToExpand(Landroidx/coordinatorlayout/widget/CoordinatorLayout;Lcom/google/android/material/appbar/AppBarLayout;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;Z)V @@ -16489,6 +16802,7 @@ HSPLcom/google/android/material/shape/MaterialShapeDrawable$MaterialShapeDrawabl HSPLcom/google/android/material/shape/MaterialShapeDrawable;->()V HSPLcom/google/android/material/shape/MaterialShapeDrawable;->()V HSPLcom/google/android/material/shape/MaterialShapeDrawable;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLcom/google/android/material/shape/MaterialShapeDrawable;->(Lcom/google/android/material/shape/MaterialShapeDrawable$MaterialShapeDrawableState;)V HSPLcom/google/android/material/shape/MaterialShapeDrawable;->(Lcom/google/android/material/shape/MaterialShapeDrawable$MaterialShapeDrawableState;Lcom/google/android/material/shape/MaterialShapeDrawable$1;)V HSPLcom/google/android/material/shape/MaterialShapeDrawable;->(Lcom/google/android/material/shape/ShapeAppearanceModel;)V HSPLcom/google/android/material/shape/MaterialShapeDrawable;->access$000(Lcom/google/android/material/shape/MaterialShapeDrawable;)Ljava/util/BitSet; @@ -17537,7 +17851,6 @@ HSPLcom/squareup/wire/Syntax;->(Ljava/lang/String;ILjava/lang/String;)V HSPLcom/squareup/wire/internal/ImmutableList;->(Ljava/util/List;)V HSPLcom/squareup/wire/internal/ImmutableList;->get(I)Ljava/lang/Object; HSPLcom/squareup/wire/internal/ImmutableList;->getSize()I -HSPLcom/squareup/wire/internal/Internal;->checkElementsNotNull(Ljava/util/List;)V HSPLcom/squareup/wire/internal/Internal;->countNonNull(Ljava/lang/Object;Ljava/lang/Object;)I HSPLcom/squareup/wire/internal/Internal;->countNonNull(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)I HSPLcom/squareup/wire/internal/Internal;->countNonNull(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)I @@ -17546,6 +17859,7 @@ HSPLcom/squareup/wire/internal/Internal__InternalKt;->checkElementsNotNull(Ljava HSPLcom/squareup/wire/internal/Internal__InternalKt;->countNonNull(Ljava/lang/Object;Ljava/lang/Object;)I HSPLcom/squareup/wire/internal/Internal__InternalKt;->countNonNull(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)I HSPLcom/squareup/wire/internal/Internal__InternalKt;->countNonNull(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)I +HSPLcom/squareup/wire/internal/Internal__InternalKt;->immutableCopyOf(Ljava/lang/String;Ljava/util/List;)Ljava/util/List; HSPLio/reactivex/rxjava3/android/plugins/RxAndroidPlugins;->callRequireNonNull(Ljava/util/concurrent/Callable;)Lio/reactivex/rxjava3/core/Scheduler; HSPLio/reactivex/rxjava3/android/plugins/RxAndroidPlugins;->initMainThreadScheduler(Ljava/util/concurrent/Callable;)Lio/reactivex/rxjava3/core/Scheduler; HSPLio/reactivex/rxjava3/android/plugins/RxAndroidPlugins;->onMainThreadScheduler(Lio/reactivex/rxjava3/core/Scheduler;)Lio/reactivex/rxjava3/core/Scheduler; @@ -17573,6 +17887,8 @@ HSPLio/reactivex/rxjava3/core/Flowable;->bufferSize()I HSPLio/reactivex/rxjava3/core/Flowable;->combineLatest(Lorg/reactivestreams/Publisher;Lorg/reactivestreams/Publisher;Lio/reactivex/rxjava3/functions/BiFunction;)Lio/reactivex/rxjava3/core/Flowable; HSPLio/reactivex/rxjava3/core/Flowable;->combineLatestArray([Lorg/reactivestreams/Publisher;Lio/reactivex/rxjava3/functions/Function;I)Lio/reactivex/rxjava3/core/Flowable; HSPLio/reactivex/rxjava3/core/Flowable;->create(Lio/reactivex/rxjava3/core/FlowableOnSubscribe;Lio/reactivex/rxjava3/core/BackpressureStrategy;)Lio/reactivex/rxjava3/core/Flowable; +HSPLio/reactivex/rxjava3/core/Flowable;->debounce(JLjava/util/concurrent/TimeUnit;)Lio/reactivex/rxjava3/core/Flowable; +HSPLio/reactivex/rxjava3/core/Flowable;->debounce(JLjava/util/concurrent/TimeUnit;Lio/reactivex/rxjava3/core/Scheduler;)Lio/reactivex/rxjava3/core/Flowable; HSPLio/reactivex/rxjava3/core/Flowable;->distinctUntilChanged()Lio/reactivex/rxjava3/core/Flowable; HSPLio/reactivex/rxjava3/core/Flowable;->distinctUntilChanged(Lio/reactivex/rxjava3/functions/Function;)Lio/reactivex/rxjava3/core/Flowable; HSPLio/reactivex/rxjava3/core/Flowable;->doOnEach(Lio/reactivex/rxjava3/functions/Consumer;Lio/reactivex/rxjava3/functions/Consumer;Lio/reactivex/rxjava3/functions/Action;Lio/reactivex/rxjava3/functions/Action;)Lio/reactivex/rxjava3/core/Flowable; @@ -17673,6 +17989,7 @@ HSPLio/reactivex/rxjava3/internal/disposables/EmptyDisposable;->(Ljava/lan HSPLio/reactivex/rxjava3/internal/disposables/EmptyDisposable;->error(Ljava/lang/Throwable;Lio/reactivex/rxjava3/core/SingleObserver;)V HSPLio/reactivex/rxjava3/internal/disposables/SequentialDisposable;->()V HSPLio/reactivex/rxjava3/internal/disposables/SequentialDisposable;->(Lio/reactivex/rxjava3/disposables/Disposable;)V +HSPLio/reactivex/rxjava3/internal/disposables/SequentialDisposable;->dispose()V HSPLio/reactivex/rxjava3/internal/disposables/SequentialDisposable;->isDisposed()Z HSPLio/reactivex/rxjava3/internal/disposables/SequentialDisposable;->replace(Lio/reactivex/rxjava3/disposables/Disposable;)Z HSPLio/reactivex/rxjava3/internal/disposables/SequentialDisposable;->update(Lio/reactivex/rxjava3/disposables/Disposable;)Z @@ -17730,8 +18047,8 @@ HSPLio/reactivex/rxjava3/internal/observers/ResumeSingleObserver;->(Ljava/ HSPLio/reactivex/rxjava3/internal/observers/ResumeSingleObserver;->onError(Ljava/lang/Throwable;)V HSPLio/reactivex/rxjava3/internal/observers/ResumeSingleObserver;->onSubscribe(Lio/reactivex/rxjava3/disposables/Disposable;)V HSPLio/reactivex/rxjava3/internal/operators/flowable/AbstractBackpressureThrottlingSubscriber;->(Lorg/reactivestreams/Subscriber;)V +HSPLio/reactivex/rxjava3/internal/operators/flowable/AbstractBackpressureThrottlingSubscriber;->cancel()V HSPLio/reactivex/rxjava3/internal/operators/flowable/AbstractBackpressureThrottlingSubscriber;->checkTerminated(ZZLorg/reactivestreams/Subscriber;Ljava/util/concurrent/atomic/AtomicReference;)Z -HSPLio/reactivex/rxjava3/internal/operators/flowable/AbstractBackpressureThrottlingSubscriber;->drain()V HSPLio/reactivex/rxjava3/internal/operators/flowable/AbstractBackpressureThrottlingSubscriber;->onSubscribe(Lorg/reactivestreams/Subscription;)V HSPLio/reactivex/rxjava3/internal/operators/flowable/AbstractBackpressureThrottlingSubscriber;->request(J)V HSPLio/reactivex/rxjava3/internal/operators/flowable/AbstractFlowableWithUpstream;->(Lio/reactivex/rxjava3/core/Flowable;)V @@ -17760,6 +18077,18 @@ HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableCreate$LatestAsyncE HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableCreate$LatestAsyncEmitter;->onRequested()V HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableCreate;->(Lio/reactivex/rxjava3/core/FlowableOnSubscribe;Lio/reactivex/rxjava3/core/BackpressureStrategy;)V HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableCreate;->subscribeActual(Lorg/reactivestreams/Subscriber;)V +HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed$DebounceEmitter;->(Ljava/lang/Object;JLio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed$DebounceTimedSubscriber;)V +HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed$DebounceEmitter;->dispose()V +HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed$DebounceEmitter;->emit()V +HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed$DebounceEmitter;->run()V +HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed$DebounceEmitter;->setResource(Lio/reactivex/rxjava3/disposables/Disposable;)V +HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed$DebounceTimedSubscriber;->(Lorg/reactivestreams/Subscriber;JLjava/util/concurrent/TimeUnit;Lio/reactivex/rxjava3/core/Scheduler$Worker;)V +HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed$DebounceTimedSubscriber;->emit(JLjava/lang/Object;Lio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed$DebounceEmitter;)V +HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed$DebounceTimedSubscriber;->onNext(Ljava/lang/Object;)V +HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed$DebounceTimedSubscriber;->onSubscribe(Lorg/reactivestreams/Subscription;)V +HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed$DebounceTimedSubscriber;->request(J)V +HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed;->(Lio/reactivex/rxjava3/core/Flowable;JLjava/util/concurrent/TimeUnit;Lio/reactivex/rxjava3/core/Scheduler;)V +HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed;->subscribeActual(Lorg/reactivestreams/Subscriber;)V HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableDistinctUntilChanged$DistinctUntilChangedSubscriber;->(Lorg/reactivestreams/Subscriber;Lio/reactivex/rxjava3/functions/Function;Lio/reactivex/rxjava3/functions/BiPredicate;)V HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableDistinctUntilChanged$DistinctUntilChangedSubscriber;->onNext(Ljava/lang/Object;)V HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableDistinctUntilChanged$DistinctUntilChangedSubscriber;->requestFusion(I)I @@ -17773,6 +18102,7 @@ HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableDoOnEach;->subscrib HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableFromFuture;->(Ljava/util/concurrent/Future;JLjava/util/concurrent/TimeUnit;)V HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableFromFuture;->subscribeActual(Lorg/reactivestreams/Subscriber;)V HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableFromObservable$SubscriberObserver;->(Lorg/reactivestreams/Subscriber;)V +HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableFromObservable$SubscriberObserver;->cancel()V HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableFromObservable$SubscriberObserver;->onNext(Ljava/lang/Object;)V HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableFromObservable$SubscriberObserver;->onSubscribe(Lio/reactivex/rxjava3/disposables/Disposable;)V HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableFromObservable$SubscriberObserver;->request(J)V @@ -17830,7 +18160,9 @@ HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$BoundedRepla HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$BoundedReplayBuffer;->getHead()Lio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$Node; HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$BoundedReplayBuffer;->leaveTransform(Ljava/lang/Object;)Ljava/lang/Object; HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$BoundedReplayBuffer;->next(Ljava/lang/Object;)V +HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$BoundedReplayBuffer;->removeFirst()V HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$BoundedReplayBuffer;->replay(Lio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$InnerSubscription;)V +HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$BoundedReplayBuffer;->setFirst(Lio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$Node;)V HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$DefaultUnboundedFactory;->()V HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$InnerSubscription;->(Lio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$ReplaySubscriber;Lorg/reactivestreams/Subscriber;)V HSPLio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$InnerSubscription;->index()Ljava/lang/Object; @@ -17993,7 +18325,9 @@ HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode;->soNext HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode;->spValue(Ljava/lang/Object;)V HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->()V HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->clear()V +HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->isEmpty()Z HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->lpConsumerNode()Lio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode; +HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->lvConsumerNode()Lio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode; HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->lvProducerNode()Lio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode; HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->offer(Ljava/lang/Object;)Z HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->poll()Ljava/lang/Object; @@ -18030,6 +18364,7 @@ HSPLio/reactivex/rxjava3/internal/queue/SpscLinkedArrayQueue;->soProducerIndex(J HSPLio/reactivex/rxjava3/internal/queue/SpscLinkedArrayQueue;->writeToQueue(Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/lang/Object;JI)Z HSPLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->()V HSPLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->(Ljava/lang/Runnable;Z)V +HSPLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->cancelFuture(Ljava/util/concurrent/Future;)V HSPLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->dispose()V HSPLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->setFuture(Ljava/util/concurrent/Future;)V HSPLio/reactivex/rxjava3/internal/schedulers/DisposeOnCancel;->(Lio/reactivex/rxjava3/disposables/Disposable;)V @@ -18141,6 +18476,13 @@ HSPLio/reactivex/rxjava3/internal/util/OpenHashSet;->removeEntry(I[Ljava/lang/Ob HSPLio/reactivex/rxjava3/internal/util/Pow2;->roundToPowerOfTwo(I)I HSPLio/reactivex/rxjava3/kotlin/DisposableKt;->addTo(Lio/reactivex/rxjava3/disposables/Disposable;Lio/reactivex/rxjava3/disposables/CompositeDisposable;)Lio/reactivex/rxjava3/disposables/Disposable; HSPLio/reactivex/rxjava3/kotlin/DisposableKt;->plusAssign(Lio/reactivex/rxjava3/disposables/CompositeDisposable;Lio/reactivex/rxjava3/disposables/Disposable;)V +HSPLio/reactivex/rxjava3/kotlin/Flowables$combineLatest$2;->()V +HSPLio/reactivex/rxjava3/kotlin/Flowables$combineLatest$2;->()V +HSPLio/reactivex/rxjava3/kotlin/Flowables$combineLatest$2;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLio/reactivex/rxjava3/kotlin/Flowables$combineLatest$2;->apply(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair; +HSPLio/reactivex/rxjava3/kotlin/Flowables;->()V +HSPLio/reactivex/rxjava3/kotlin/Flowables;->()V +HSPLio/reactivex/rxjava3/kotlin/Flowables;->combineLatest(Lio/reactivex/rxjava3/core/Flowable;Lio/reactivex/rxjava3/core/Flowable;)Lio/reactivex/rxjava3/core/Flowable; HSPLio/reactivex/rxjava3/kotlin/SubscribersKt$onCompleteStub$1;->()V HSPLio/reactivex/rxjava3/kotlin/SubscribersKt$onCompleteStub$1;->()V HSPLio/reactivex/rxjava3/kotlin/SubscribersKt$onErrorStub$1;->()V @@ -18249,6 +18591,12 @@ HSPLio/reactivex/rxjava3/subjects/SerializedSubject;->onNext(Ljava/lang/Object;) HSPLio/reactivex/rxjava3/subjects/SerializedSubject;->subscribeActual(Lio/reactivex/rxjava3/core/Observer;)V HSPLio/reactivex/rxjava3/subjects/Subject;->()V HSPLio/reactivex/rxjava3/subjects/Subject;->toSerialized()Lio/reactivex/rxjava3/subjects/Subject; +HSPLio/reactivex/rxjava3/subscribers/SerializedSubscriber;->(Lorg/reactivestreams/Subscriber;)V +HSPLio/reactivex/rxjava3/subscribers/SerializedSubscriber;->(Lorg/reactivestreams/Subscriber;Z)V +HSPLio/reactivex/rxjava3/subscribers/SerializedSubscriber;->emitLoop()V +HSPLio/reactivex/rxjava3/subscribers/SerializedSubscriber;->onNext(Ljava/lang/Object;)V +HSPLio/reactivex/rxjava3/subscribers/SerializedSubscriber;->onSubscribe(Lorg/reactivestreams/Subscription;)V +HSPLio/reactivex/rxjava3/subscribers/SerializedSubscriber;->request(J)V HSPLj$/com/android/tools/r8/a;->e(JJ)J HSPLj$/com/android/tools/r8/a;->f(Lsun/misc/Unsafe;Ljava/lang/Object;JLjava/lang/Object;)Z HSPLj$/com/android/tools/r8/a;->g(JJ)J @@ -18509,12 +18857,14 @@ HSPLj$/util/c;->()V HSPLj$/util/concurrent/ConcurrentHashMap;->()V HSPLj$/util/concurrent/ConcurrentHashMap;->()V HSPLj$/util/concurrent/ConcurrentHashMap;->(IFI)V +HSPLj$/util/concurrent/ConcurrentHashMap;->a(JI)V HSPLj$/util/concurrent/ConcurrentHashMap;->b([Lj$/util/concurrent/l;ILj$/util/concurrent/l;)Z HSPLj$/util/concurrent/ConcurrentHashMap;->c(Ljava/lang/Object;)Ljava/lang/Class; HSPLj$/util/concurrent/ConcurrentHashMap;->clear()V -HSPLj$/util/concurrent/ConcurrentHashMap;->e([Lj$/util/concurrent/l;Lj$/util/concurrent/l;)[Lj$/util/concurrent/l; +HSPLj$/util/concurrent/ConcurrentHashMap;->containsKey(Ljava/lang/Object;)Z HSPLj$/util/concurrent/ConcurrentHashMap;->entrySet()Ljava/util/Set; HSPLj$/util/concurrent/ConcurrentHashMap;->f()[Lj$/util/concurrent/l; +HSPLj$/util/concurrent/ConcurrentHashMap;->g(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object; HSPLj$/util/concurrent/ConcurrentHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; HSPLj$/util/concurrent/ConcurrentHashMap;->i([Lj$/util/concurrent/l;ILj$/util/concurrent/l;)V HSPLj$/util/concurrent/ConcurrentHashMap;->isEmpty()Z @@ -18534,7 +18884,6 @@ HSPLj$/util/concurrent/b;->(Lj$/util/concurrent/ConcurrentHashMap;)V HSPLj$/util/concurrent/b;->toArray()[Ljava/lang/Object; HSPLj$/util/concurrent/e;->iterator()Ljava/util/Iterator; HSPLj$/util/concurrent/g;->([Lj$/util/concurrent/l;)V -HSPLj$/util/concurrent/g;->a(Ljava/lang/Object;I)Lj$/util/concurrent/l; HSPLj$/util/concurrent/h;->([Lj$/util/concurrent/l;IILj$/util/concurrent/ConcurrentHashMap;I)V HSPLj$/util/concurrent/h;->next()Ljava/lang/Object; HSPLj$/util/concurrent/i;->iterator()Ljava/util/Iterator; @@ -18703,7 +19052,7 @@ HSPLkotlin/SafePublicationLazyImpl;->(Lkotlin/jvm/functions/Function0;)V HSPLkotlin/SafePublicationLazyImpl;->getValue()Ljava/lang/Object; HSPLkotlin/SynchronizedLazyImpl;->(Lkotlin/jvm/functions/Function0;Ljava/lang/Object;)V HSPLkotlin/SynchronizedLazyImpl;->(Lkotlin/jvm/functions/Function0;Ljava/lang/Object;ILkotlin/jvm/internal/DefaultConstructorMarker;)V -HSPLkotlin/SynchronizedLazyImpl;->getValue()Ljava/lang/Object; +HSPLkotlin/SynchronizedLazyImpl;->isInitialized()Z HSPLkotlin/Triple;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V HSPLkotlin/Triple;->component1()Ljava/lang/Object; HSPLkotlin/Triple;->component2()Ljava/lang/Object; @@ -18727,6 +19076,7 @@ HSPLkotlin/UnsafeLazyImpl;->getValue()Ljava/lang/Object; HSPLkotlin/UnsignedKt;->ulongToDouble(J)D HSPLkotlin/collections/AbstractCollection$toString$1;->(Lkotlin/collections/AbstractCollection;)V HSPLkotlin/collections/AbstractCollection;->()V +HSPLkotlin/collections/AbstractCollection;->isEmpty()Z HSPLkotlin/collections/AbstractCollection;->toString()Ljava/lang/String; HSPLkotlin/collections/AbstractList$Companion;->()V HSPLkotlin/collections/AbstractList$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -18963,7 +19313,6 @@ HSPLkotlin/collections/CollectionsKt___CollectionsKt;->sortedWith(Ljava/lang/Ite HSPLkotlin/collections/CollectionsKt___CollectionsKt;->sumOfFloat(Ljava/lang/Iterable;)F HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toCollection(Ljava/lang/Iterable;Ljava/util/Collection;)Ljava/util/Collection; HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toIntArray(Ljava/util/Collection;)[I -HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toList(Ljava/lang/Iterable;)Ljava/util/List; HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toMutableList(Ljava/lang/Iterable;)Ljava/util/List; HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toMutableList(Ljava/util/Collection;)Ljava/util/List; HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toSet(Ljava/lang/Iterable;)Ljava/util/Set; @@ -19022,6 +19371,7 @@ HSPLkotlin/collections/MapsKt;->mapCapacity(I)I HSPLkotlin/collections/MapsKt;->mapOf(Lkotlin/Pair;)Ljava/util/Map; HSPLkotlin/collections/MapsKt;->mapOf([Lkotlin/Pair;)Ljava/util/Map; HSPLkotlin/collections/MapsKt;->plus(Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map; +HSPLkotlin/collections/MapsKt;->plus(Ljava/util/Map;Lkotlin/Pair;)Ljava/util/Map; HSPLkotlin/collections/MapsKt;->putAll(Ljava/util/Map;[Lkotlin/Pair;)V HSPLkotlin/collections/MapsKt;->toMap(Ljava/lang/Iterable;)Ljava/util/Map; HSPLkotlin/collections/MapsKt;->toMap(Ljava/util/Map;)Ljava/util/Map; @@ -19034,6 +19384,7 @@ HSPLkotlin/collections/MapsKt__MapsKt;->emptyMap()Ljava/util/Map; HSPLkotlin/collections/MapsKt__MapsKt;->linkedMapOf([Lkotlin/Pair;)Ljava/util/LinkedHashMap; HSPLkotlin/collections/MapsKt__MapsKt;->mapOf([Lkotlin/Pair;)Ljava/util/Map; HSPLkotlin/collections/MapsKt__MapsKt;->plus(Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map; +HSPLkotlin/collections/MapsKt__MapsKt;->plus(Ljava/util/Map;Lkotlin/Pair;)Ljava/util/Map; HSPLkotlin/collections/MapsKt__MapsKt;->putAll(Ljava/util/Map;Ljava/lang/Iterable;)V HSPLkotlin/collections/MapsKt__MapsKt;->putAll(Ljava/util/Map;[Lkotlin/Pair;)V HSPLkotlin/collections/MapsKt__MapsKt;->toMap(Ljava/lang/Iterable;)Ljava/util/Map; @@ -19147,6 +19498,7 @@ HSPLkotlin/coroutines/jvm/internal/BaseContinuationImpl;->(Lkotlin/corouti HSPLkotlin/coroutines/jvm/internal/BaseContinuationImpl;->releaseIntercepted()V HSPLkotlin/coroutines/jvm/internal/BaseContinuationImpl;->resumeWith(Ljava/lang/Object;)V HSPLkotlin/coroutines/jvm/internal/Boxing;->boxBoolean(Z)Ljava/lang/Boolean; +HSPLkotlin/coroutines/jvm/internal/Boxing;->boxLong(J)Ljava/lang/Long; HSPLkotlin/coroutines/jvm/internal/CompletedContinuation;->()V HSPLkotlin/coroutines/jvm/internal/CompletedContinuation;->()V HSPLkotlin/coroutines/jvm/internal/ContinuationImpl;->(Lkotlin/coroutines/Continuation;)V @@ -19604,7 +19956,6 @@ HSPLkotlin/reflect/jvm/internal/KTypeImpl;->isMarkedNullable()Z HSPLkotlin/reflect/jvm/internal/ModuleByClassLoaderKt;->()V HSPLkotlin/reflect/jvm/internal/ModuleByClassLoaderKt;->getOrCreateModule(Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/impl/descriptors/runtime/components/RuntimeModuleData; HSPLkotlin/reflect/jvm/internal/ReflectProperties$LazySoftVal;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)V -HSPLkotlin/reflect/jvm/internal/ReflectProperties$LazySoftVal;->invoke()Ljava/lang/Object; HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val$1;->()V HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val;->()V HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val;->()V @@ -20817,7 +21168,6 @@ HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Class$Kind;->(Ljava HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Class$Kind;->getNumber()I HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Class$Kind;->values()[Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Class$Kind; HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Class;->()V -HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Class;->(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Class;->(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$1;)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Class;->(Z)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Class;->getConstructor(I)Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Constructor; @@ -20893,7 +21243,6 @@ HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function$1;->()V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function$1;->parsePartialFrom(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;)Ljava/lang/Object; HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function$1;->parsePartialFrom(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;)Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function; HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->()V -HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$1;)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->(Z)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->getContextReceiverTypeCount()I @@ -20926,7 +21275,6 @@ HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->hasReturnTypeI HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->hasTypeTable()Z HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->initFields()V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->isInitialized()Z -HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->writeTo(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedOutputStream;)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$MemberKind$1;->()V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$MemberKind;->()V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$MemberKind;->(Ljava/lang/String;III)V @@ -21113,7 +21461,6 @@ HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type$Argument;->initField HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type$Argument;->isInitialized()Z HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type$Argument;->writeTo(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedOutputStream;)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type;->()V -HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type;->(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type;->(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$1;)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type;->(Z)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type;->getArgument(I)Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type$Argument; @@ -21182,6 +21529,7 @@ HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter$1;-> HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter$1;->parsePartialFrom(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;)Ljava/lang/Object; HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter$1;->parsePartialFrom(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;)Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter; HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter;->()V +HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter;->(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter;->(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$1;)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter;->(Z)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter;->getDefaultInstance()Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter; @@ -21607,18 +21955,16 @@ HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readDouble()D HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readEnum()I HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readFloat()F HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readInt32()I -HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readMessage(Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite$Builder;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;)V -HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readMessage(Lkotlin/reflect/jvm/internal/impl/protobuf/Parser;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;)Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite; HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readRawByte()B HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readRawLittleEndian32()I HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readRawLittleEndian64()J +HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readRawVarint32()I HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readRawVarint32(ILjava/io/InputStream;)I HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readRawVarint64()J HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readRawVarint64SlowPath()J HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readSInt64()J HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->recomputeBufferSizeAfterLimit()V HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->refillBuffer(I)V -HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->tryRefillBuffer(I)Z HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedOutputStream;->(Ljava/io/OutputStream;[B)V HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedOutputStream;->computeBoolSize(IZ)I HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedOutputStream;->computeBoolSizeNoTag(Z)I @@ -21674,7 +22020,6 @@ HSPLkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;->hasField(Lkotlin/reflec HSPLkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;->isInitialized()Z HSPLkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;->isInitialized(Ljava/util/Map$Entry;)Z HSPLkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;->iterator()Ljava/util/Iterator; -HSPLkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;->makeImmutable()V HSPLkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;->mergeFrom(Lkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;)V HSPLkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;->newFieldSet()Lkotlin/reflect/jvm/internal/impl/protobuf/FieldSet; HSPLkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;->readPrimitiveField(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/WireFormat$FieldType;Z)Ljava/lang/Object; @@ -21727,7 +22072,6 @@ HSPLkotlin/reflect/jvm/internal/impl/protobuf/GeneratedMessageLite;->access$100( HSPLkotlin/reflect/jvm/internal/impl/protobuf/GeneratedMessageLite;->makeExtensionsImmutable()V HSPLkotlin/reflect/jvm/internal/impl/protobuf/GeneratedMessageLite;->newRepeatedGeneratedExtension(Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite;Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite;Lkotlin/reflect/jvm/internal/impl/protobuf/Internal$EnumLiteMap;ILkotlin/reflect/jvm/internal/impl/protobuf/WireFormat$FieldType;ZLjava/lang/Class;)Lkotlin/reflect/jvm/internal/impl/protobuf/GeneratedMessageLite$GeneratedExtension; HSPLkotlin/reflect/jvm/internal/impl/protobuf/GeneratedMessageLite;->newSingularGeneratedExtension(Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite;Ljava/lang/Object;Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite;Lkotlin/reflect/jvm/internal/impl/protobuf/Internal$EnumLiteMap;ILkotlin/reflect/jvm/internal/impl/protobuf/WireFormat$FieldType;Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/impl/protobuf/GeneratedMessageLite$GeneratedExtension; -HSPLkotlin/reflect/jvm/internal/impl/protobuf/GeneratedMessageLite;->parseUnknownField(Lkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite;Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/CodedOutputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;I)Z HSPLkotlin/reflect/jvm/internal/impl/protobuf/LazyStringArrayList;->()V HSPLkotlin/reflect/jvm/internal/impl/protobuf/LazyStringArrayList;->()V HSPLkotlin/reflect/jvm/internal/impl/protobuf/LazyStringArrayList;->add(Lkotlin/reflect/jvm/internal/impl/protobuf/ByteString;)V @@ -22212,7 +22556,6 @@ HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/Deserializati HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationConfiguration$Default;->getSkipMetadataVersionCheck()Z HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationConfiguration$Default;->getSkipPrereleaseCheck()Z HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationConfiguration$Default;->getTypeAliasesAllowed()Z -HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationContext;->(Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationComponents;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;Lkotlin/reflect/jvm/internal/impl/descriptors/DeclarationDescriptor;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/TypeTable;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/VersionRequirementTable;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/BinaryVersion;Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/descriptors/DeserializedContainerSource;Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;Ljava/util/List;)V HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationContext;->childContext$default(Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationContext;Lkotlin/reflect/jvm/internal/impl/descriptors/DeclarationDescriptor;Ljava/util/List;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/TypeTable;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/VersionRequirementTable;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/BinaryVersion;ILjava/lang/Object;)Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationContext; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationContext;->childContext(Lkotlin/reflect/jvm/internal/impl/descriptors/DeclarationDescriptor;Ljava/util/List;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/TypeTable;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/VersionRequirementTable;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/BinaryVersion;)Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationContext; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationContext;->getComponents()Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationComponents; @@ -22268,7 +22611,9 @@ HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeseria HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->getReceiverParameterAnnotations(Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite;Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/AnnotatedCallableKind;)Lkotlin/reflect/jvm/internal/impl/descriptors/annotations/Annotations; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->initializeWithCoroutinesExperimentalityStatus(Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/descriptors/DeserializedSimpleFunctionDescriptor;Lkotlin/reflect/jvm/internal/impl/descriptors/ReceiverParameterDescriptor;Lkotlin/reflect/jvm/internal/impl/descriptors/ReceiverParameterDescriptor;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lkotlin/reflect/jvm/internal/impl/types/KotlinType;Lkotlin/reflect/jvm/internal/impl/descriptors/Modality;Lkotlin/reflect/jvm/internal/impl/descriptors/DescriptorVisibility;Ljava/util/Map;)V HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->loadConstructor(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Constructor;Z)Lkotlin/reflect/jvm/internal/impl/descriptors/ClassConstructorDescriptor; +HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->loadFunction(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;)Lkotlin/reflect/jvm/internal/impl/descriptors/SimpleFunctionDescriptor; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->loadOldFlags(I)I +HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->loadProperty(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Property;)Lkotlin/reflect/jvm/internal/impl/descriptors/PropertyDescriptor; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->valueParameters(Ljava/util/List;Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite;Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/AnnotatedCallableKind;)Ljava/util/List; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/NameResolverUtilKt;->getClassId(Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;I)Lkotlin/reflect/jvm/internal/impl/name/ClassId; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/NameResolverUtilKt;->getName(Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;I)Lkotlin/reflect/jvm/internal/impl/name/Name; @@ -22306,6 +22651,7 @@ HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeseriali HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->computeLocalClassifierReplacementType(I)Lkotlin/reflect/jvm/internal/impl/types/SimpleType; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->getOwnTypeParameters()Ljava/util/List; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->simpleType$collectAllArguments(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type;Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;)Ljava/util/List; +HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->simpleType(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type;Z)Lkotlin/reflect/jvm/internal/impl/types/SimpleType; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->toAttributes(Ljava/util/List;Lkotlin/reflect/jvm/internal/impl/descriptors/annotations/Annotations;Lkotlin/reflect/jvm/internal/impl/types/TypeConstructor;Lkotlin/reflect/jvm/internal/impl/descriptors/DeclarationDescriptor;)Lkotlin/reflect/jvm/internal/impl/types/TypeAttributes; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->type(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type;)Lkotlin/reflect/jvm/internal/impl/types/KotlinType; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->typeArgument(Lkotlin/reflect/jvm/internal/impl/descriptors/TypeParameterDescriptor;Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type$Argument;)Lkotlin/reflect/jvm/internal/impl/types/TypeProjection; @@ -22921,10 +23267,10 @@ HSPLkotlin/sequences/SequencesKt___SequencesKt;->map(Lkotlin/sequences/Sequence; HSPLkotlin/sequences/SequencesKt___SequencesKt;->mapNotNull(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence; HSPLkotlin/sequences/SequencesKt___SequencesKt;->sortedWith(Lkotlin/sequences/Sequence;Ljava/util/Comparator;)Lkotlin/sequences/Sequence; HSPLkotlin/sequences/SequencesKt___SequencesKt;->toCollection(Lkotlin/sequences/Sequence;Ljava/util/Collection;)Ljava/util/Collection; -HSPLkotlin/sequences/SequencesKt___SequencesKt;->toList(Lkotlin/sequences/Sequence;)Ljava/util/List; HSPLkotlin/sequences/SequencesKt___SequencesKt;->toMutableList(Lkotlin/sequences/Sequence;)Ljava/util/List; HSPLkotlin/sequences/TransformingSequence$iterator$1;->(Lkotlin/sequences/TransformingSequence;)V HSPLkotlin/sequences/TransformingSequence$iterator$1;->hasNext()Z +HSPLkotlin/sequences/TransformingSequence$iterator$1;->next()Ljava/lang/Object; HSPLkotlin/sequences/TransformingSequence;->(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)V HSPLkotlin/sequences/TransformingSequence;->access$getSequence$p(Lkotlin/sequences/TransformingSequence;)Lkotlin/sequences/Sequence; HSPLkotlin/sequences/TransformingSequence;->access$getTransformer$p(Lkotlin/sequences/TransformingSequence;)Lkotlin/jvm/functions/Function1; @@ -23017,6 +23363,7 @@ HSPLkotlin/text/StringsKt__StringsJVMKt;->startsWith$default(Ljava/lang/String;L HSPLkotlin/text/StringsKt__StringsJVMKt;->startsWith(Ljava/lang/String;Ljava/lang/String;IZ)Z HSPLkotlin/text/StringsKt__StringsJVMKt;->startsWith(Ljava/lang/String;Ljava/lang/String;Z)Z HSPLkotlin/text/StringsKt__StringsKt$rangesDelimitedBy$2;->(Ljava/util/List;Z)V +HSPLkotlin/text/StringsKt__StringsKt$rangesDelimitedBy$2;->invoke(Ljava/lang/CharSequence;I)Lkotlin/Pair; HSPLkotlin/text/StringsKt__StringsKt$rangesDelimitedBy$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLkotlin/text/StringsKt__StringsKt$splitToSequence$1;->(Ljava/lang/CharSequence;)V HSPLkotlin/text/StringsKt__StringsKt$splitToSequence$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; @@ -24083,8 +24430,11 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->canonicalizeSyncMode(Ljava HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->detachCancellationSignal(Landroid/os/CancellationSignal;)V HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->execute(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)V HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForCursorWindow(Ljava/lang/String;[Ljava/lang/Object;Landroid/database/CursorWindow;IIZLandroid/os/CancellationSignal;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForLastInsertedRowId(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForString(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->finalizePreparedStatement(Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;)V HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->hasCodec()Z HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->isCacheable(I)Z HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->isPreparedStatementInCache(Ljava/lang/String;)Z @@ -24125,6 +24475,7 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->reconfigure(Lnet/zetet HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->reconfigureAllConnectionsLocked()V HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->recycleConnectionLocked(Lnet/zetetic/database/sqlcipher/SQLiteConnection;Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$AcquiredConnectionStatus;)Z HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->recycleConnectionWaiterLocked(Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$ConnectionWaiter;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->releaseConnection(Lnet/zetetic/database/sqlcipher/SQLiteConnection;)V HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->setMaxConnectionPoolSizeLocked()V HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->throwIfClosedLocked()V HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->tryAcquirePrimaryConnectionLocked(I)Lnet/zetetic/database/sqlcipher/SQLiteConnection; @@ -24136,7 +24487,6 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->()V HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->(Lnet/zetetic/database/sqlcipher/SQLiteCursorDriver;Ljava/lang/String;Lnet/zetetic/database/sqlcipher/SQLiteQuery;)V HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->awc_clearOrCreateWindow(Ljava/lang/String;)V HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->close()V -HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->fillWindow(I)V HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->finalize()V HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->getColumnIndex(Ljava/lang/String;)I HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->getColumnNames()[Ljava/lang/String; @@ -24165,9 +24515,9 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->getPath()Ljava/lang/String; HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->getThreadDefaultConnectionFlags(Z)I HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->getVersion()I HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->hasCodec()Z +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->inTransaction()Z HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->insert(Ljava/lang/String;ILandroid/content/ContentValues;)J HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J -HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->insertWithOnConflict(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;I)J HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isMainThread()Z HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isOpen()Z HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isReadOnly()Z @@ -24176,7 +24526,6 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->open()V HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->openDatabase(Ljava/lang/String;[BLnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory;ILnet/zetetic/database/DatabaseErrorHandler;Lnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;)Lnet/zetetic/database/sqlcipher/SQLiteDatabase; HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->openInner()V HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->query(Landroidx/sqlite/db/SupportSQLiteQuery;)Landroid/database/Cursor; -HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/Object;)Landroid/database/Cursor; HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->query(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->queryWithFactory(Lnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory;ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; @@ -24190,6 +24539,7 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->setVersion(I)V HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->throwIfNotOpenLocked()V HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->update(Ljava/lang/String;ILandroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/Object;)I HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->updateWithOnConflict(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;I)I HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->()V HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->(Ljava/lang/String;I[BLnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;)V HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;)V @@ -24225,6 +24575,7 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getColumnNames()[Ljava/lang/S HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getSql()Ljava/lang/String; HSPLnet/zetetic/database/sqlcipher/SQLiteQuery;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;Ljava/lang/String;Landroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteQuery;->fillWindow(Landroid/database/CursorWindow;IIZ)I HSPLnet/zetetic/database/sqlcipher/SQLiteQueryBuilder;->()V HSPLnet/zetetic/database/sqlcipher/SQLiteQueryBuilder;->appendClause(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V HSPLnet/zetetic/database/sqlcipher/SQLiteQueryBuilder;->appendColumns(Ljava/lang/StringBuilder;[Ljava/lang/String;)V @@ -24233,6 +24584,7 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteSession$Transaction;->()V HSPLnet/zetetic/database/sqlcipher/SQLiteSession$Transaction;->(Lnet/zetetic/database/sqlcipher/SQLiteSession$1;)V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->()V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->(Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->acquireConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->beginTransaction(ILnet/zetetic/database/sqlcipher/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->endTransaction(Landroid/os/CancellationSignal;)V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->endTransactionUnchecked(Landroid/os/CancellationSignal;Z)V @@ -24243,6 +24595,7 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeSpecial(Ljava/lang/Str HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->hasTransaction()Z HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->obtainTransaction(ILnet/zetetic/database/sqlcipher/SQLiteTransactionListener;)Lnet/zetetic/database/sqlcipher/SQLiteSession$Transaction; HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->recycleTransaction(Lnet/zetetic/database/sqlcipher/SQLiteSession$Transaction;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->releaseConnection()V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->setTransactionSuccessful()V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->throwIfNoTransaction()V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->throwIfTransactionMarkedSuccessful()V @@ -24339,6 +24692,11 @@ HSPLokhttp3/CookieJar$Companion$NoCookies;->loadForRequest(Lokhttp3/HttpUrl;)Lja HSPLokhttp3/CookieJar$Companion;->()V HSPLokhttp3/CookieJar$Companion;->()V HSPLokhttp3/CookieJar;->()V +HSPLokhttp3/Credentials;->()V +HSPLokhttp3/Credentials;->()V +HSPLokhttp3/Credentials;->basic$default(Ljava/lang/String;Ljava/lang/String;Ljava/nio/charset/Charset;ILjava/lang/Object;)Ljava/lang/String; +HSPLokhttp3/Credentials;->basic(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLokhttp3/Credentials;->basic(Ljava/lang/String;Ljava/lang/String;Ljava/nio/charset/Charset;)Ljava/lang/String; HSPLokhttp3/Dispatcher;->()V HSPLokhttp3/Dispatcher;->enqueue$okhttp(Lokhttp3/internal/connection/RealCall$AsyncCall;)V HSPLokhttp3/Dispatcher;->executed$okhttp(Lokhttp3/internal/connection/RealCall;)V @@ -24455,8 +24813,6 @@ HSPLokhttp3/HttpUrl$Companion;->percentDecode$okhttp(Ljava/lang/String;IIZ)Ljava HSPLokhttp3/HttpUrl$Companion;->toPathString$okhttp(Ljava/util/List;Ljava/lang/StringBuilder;)V HSPLokhttp3/HttpUrl$Companion;->toQueryNamesAndValues$okhttp(Ljava/lang/String;)Ljava/util/List; HSPLokhttp3/HttpUrl$Companion;->toQueryString$okhttp(Ljava/util/List;Ljava/lang/StringBuilder;)V -HSPLokhttp3/HttpUrl$Companion;->writeCanonicalized(Lokio/Buffer;Ljava/lang/String;IILjava/lang/String;ZZZZLjava/nio/charset/Charset;)V -HSPLokhttp3/HttpUrl$Companion;->writePercentDecoded(Lokio/Buffer;Ljava/lang/String;IIZ)V HSPLokhttp3/HttpUrl;->()V HSPLokhttp3/HttpUrl;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/util/List;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)V HSPLokhttp3/HttpUrl;->encodedFragment()Ljava/lang/String; @@ -25080,7 +25436,6 @@ HSPLokhttp3/internal/http2/Http2Reader$ContinuationSource;->setStreamId(I)V HSPLokhttp3/internal/http2/Http2Reader;->()V HSPLokhttp3/internal/http2/Http2Reader;->(Lokio/BufferedSource;Z)V HSPLokhttp3/internal/http2/Http2Reader;->close()V -HSPLokhttp3/internal/http2/Http2Reader;->nextFrame(ZLokhttp3/internal/http2/Http2Reader$Handler;)Z HSPLokhttp3/internal/http2/Http2Reader;->readConnectionPreface(Lokhttp3/internal/http2/Http2Reader$Handler;)V HSPLokhttp3/internal/http2/Http2Reader;->readData(Lokhttp3/internal/http2/Http2Reader$Handler;III)V HSPLokhttp3/internal/http2/Http2Reader;->readHeaderBlock(IIII)Ljava/util/List; @@ -25096,8 +25451,6 @@ HSPLokhttp3/internal/http2/Http2Stream$FramingSource;->(Lokhttp3/internal/ HSPLokhttp3/internal/http2/Http2Stream$FramingSource;->close()V HSPLokhttp3/internal/http2/Http2Stream$FramingSource;->getClosed$okhttp()Z HSPLokhttp3/internal/http2/Http2Stream$FramingSource;->getFinished$okhttp()Z -HSPLokhttp3/internal/http2/Http2Stream$FramingSource;->read(Lokio/Buffer;J)J -HSPLokhttp3/internal/http2/Http2Stream$FramingSource;->receive$okhttp(Lokio/BufferedSource;J)V HSPLokhttp3/internal/http2/Http2Stream$FramingSource;->setFinished$okhttp(Z)V HSPLokhttp3/internal/http2/Http2Stream$FramingSource;->setTrailers(Lokhttp3/Headers;)V HSPLokhttp3/internal/http2/Http2Stream$FramingSource;->updateConnectionFlowControl(J)V @@ -25305,10 +25658,8 @@ HSPLokio/AsyncTimeout$Companion;->(Lkotlin/jvm/internal/DefaultConstructor HSPLokio/AsyncTimeout$Companion;->access$cancelScheduledTimeout(Lokio/AsyncTimeout$Companion;Lokio/AsyncTimeout;)Z HSPLokio/AsyncTimeout$Companion;->access$scheduleTimeout(Lokio/AsyncTimeout$Companion;Lokio/AsyncTimeout;JZ)V HSPLokio/AsyncTimeout$Companion;->awaitTimeout$okio()Lokio/AsyncTimeout; -HSPLokio/AsyncTimeout$Companion;->cancelScheduledTimeout(Lokio/AsyncTimeout;)Z HSPLokio/AsyncTimeout$Companion;->getCondition()Ljava/util/concurrent/locks/Condition; HSPLokio/AsyncTimeout$Companion;->getLock()Ljava/util/concurrent/locks/ReentrantLock; -HSPLokio/AsyncTimeout$Companion;->scheduleTimeout(Lokio/AsyncTimeout;JZ)V HSPLokio/AsyncTimeout$Watchdog;->()V HSPLokio/AsyncTimeout$Watchdog;->run()V HSPLokio/AsyncTimeout$sink$1;->(Lokio/AsyncTimeout;Lokio/Sink;)V @@ -25344,9 +25695,9 @@ HSPLokio/Buffer$UnsafeCursor;->()V HSPLokio/Buffer;->()V HSPLokio/Buffer;->clear()V HSPLokio/Buffer;->close()V +HSPLokio/Buffer;->completeSegmentByteCount()J HSPLokio/Buffer;->copyTo(Lokio/Buffer;JJ)Lokio/Buffer; HSPLokio/Buffer;->exhausted()Z -HSPLokio/Buffer;->getByte(J)B HSPLokio/Buffer;->indexOfElement(Lokio/ByteString;J)J HSPLokio/Buffer;->read(Lokio/Buffer;J)J HSPLokio/Buffer;->read([BII)I @@ -25359,8 +25710,8 @@ HSPLokio/Buffer;->readFully([B)V HSPLokio/Buffer;->readInt()I HSPLokio/Buffer;->readIntLe()I HSPLokio/Buffer;->readShort()S +HSPLokio/Buffer;->readString(JLjava/nio/charset/Charset;)Ljava/lang/String; HSPLokio/Buffer;->readString(Ljava/nio/charset/Charset;)Ljava/lang/String; -HSPLokio/Buffer;->readUtf8()Ljava/lang/String; HSPLokio/Buffer;->readUtf8(J)Ljava/lang/String; HSPLokio/Buffer;->setSize$okio(J)V HSPLokio/Buffer;->size()J @@ -25377,13 +25728,12 @@ HSPLokio/Buffer;->writeInt(I)Lokio/Buffer; HSPLokio/Buffer;->writeShort(I)Lokio/Buffer; HSPLokio/Buffer;->writeString(Ljava/lang/String;IILjava/nio/charset/Charset;)Lokio/Buffer; HSPLokio/Buffer;->writeString(Ljava/lang/String;Ljava/nio/charset/Charset;)Lokio/Buffer; -HSPLokio/Buffer;->writeUtf8(Ljava/lang/String;)Lokio/Buffer; HSPLokio/Buffer;->writeUtf8(Ljava/lang/String;II)Lokio/Buffer; HSPLokio/Buffer;->writeUtf8(Ljava/lang/String;II)Lokio/BufferedSink; -HSPLokio/Buffer;->writeUtf8CodePoint(I)Lokio/Buffer; HSPLokio/ByteString$Companion;->()V HSPLokio/ByteString$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLokio/ByteString$Companion;->decodeHex(Ljava/lang/String;)Lokio/ByteString; +HSPLokio/ByteString$Companion;->encodeString(Ljava/lang/String;Ljava/nio/charset/Charset;)Lokio/ByteString; HSPLokio/ByteString$Companion;->encodeUtf8(Ljava/lang/String;)Lokio/ByteString; HSPLokio/ByteString$Companion;->of$default(Lokio/ByteString$Companion;[BIIILjava/lang/Object;)Lokio/ByteString; HSPLokio/ByteString$Companion;->of([B)Lokio/ByteString; @@ -25473,7 +25823,6 @@ HSPLokio/Options;->of([Lokio/ByteString;)Lokio/Options; HSPLokio/OutputStreamSink;->(Ljava/io/OutputStream;Lokio/Timeout;)V HSPLokio/OutputStreamSink;->close()V HSPLokio/OutputStreamSink;->flush()V -HSPLokio/OutputStreamSink;->write(Lokio/Buffer;J)V HSPLokio/PeekSource;->(Lokio/BufferedSource;)V HSPLokio/PeekSource;->read(Lokio/Buffer;J)J HSPLokio/RealBufferedSink;->(Lokio/Sink;)V @@ -25497,7 +25846,6 @@ HSPLokio/RealBufferedSource;->indexOfElement(Lokio/ByteString;)J HSPLokio/RealBufferedSource;->indexOfElement(Lokio/ByteString;J)J HSPLokio/RealBufferedSource;->inputStream()Ljava/io/InputStream; HSPLokio/RealBufferedSource;->peek()Lokio/BufferedSource; -HSPLokio/RealBufferedSource;->read(Lokio/Buffer;J)J HSPLokio/RealBufferedSource;->readAll(Lokio/Sink;)J HSPLokio/RealBufferedSource;->readByte()B HSPLokio/RealBufferedSource;->readByteString(J)Lokio/ByteString; @@ -25506,14 +25854,12 @@ HSPLokio/RealBufferedSource;->readIntLe()I HSPLokio/RealBufferedSource;->readShort()S HSPLokio/RealBufferedSource;->readString(Ljava/nio/charset/Charset;)Ljava/lang/String; HSPLokio/RealBufferedSource;->require(J)V -HSPLokio/RealBufferedSource;->select(Lokio/Options;)I HSPLokio/RealBufferedSource;->skip(J)V HSPLokio/Segment$Companion;->()V HSPLokio/Segment$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLokio/Segment;->()V HSPLokio/Segment;->()V HSPLokio/Segment;->([BIIZZ)V -HSPLokio/Segment;->compact()V HSPLokio/Segment;->pop()Lokio/Segment; HSPLokio/Segment;->push(Lokio/Segment;)Lokio/Segment; HSPLokio/Segment;->sharedCopy()Lokio/Segment; @@ -25539,6 +25885,7 @@ HSPLokio/Utf8;->size(Ljava/lang/String;II)J HSPLokio/_JvmPlatformKt;->asUtf8ToByteArray(Ljava/lang/String;)[B HSPLokio/_JvmPlatformKt;->toUtf8String([B)Ljava/lang/String; HSPLokio/internal/-Buffer;->()V +HSPLokio/internal/-Buffer;->selectPrefix(Lokio/Buffer;Lokio/Options;Z)I HSPLokio/internal/-ByteString;->()V HSPLokio/internal/-ByteString;->access$decodeHexDigit(C)I HSPLokio/internal/-ByteString;->commonWrite(Lokio/ByteString;Lokio/Buffer;II)V @@ -25821,7 +26168,6 @@ HSPLorg/conscrypt/NativeSsl$BioWrapper;->(Lorg/conscrypt/NativeSsl;Lorg/co HSPLorg/conscrypt/NativeSsl$BioWrapper;->close()V HSPLorg/conscrypt/NativeSsl$BioWrapper;->getPendingWrittenBytes()I HSPLorg/conscrypt/NativeSsl$BioWrapper;->readDirectByteBuffer(JI)I -HSPLorg/conscrypt/NativeSsl$BioWrapper;->writeDirectByteBuffer(JI)I HSPLorg/conscrypt/NativeSsl;->(JLorg/conscrypt/SSLParametersImpl;Lorg/conscrypt/NativeCrypto$SSLHandshakeCallbacks;Lorg/conscrypt/SSLParametersImpl$AliasChooser;Lorg/conscrypt/SSLParametersImpl$PSKCallbacks;)V HSPLorg/conscrypt/NativeSsl;->access$100(Lorg/conscrypt/NativeSsl;)J HSPLorg/conscrypt/NativeSsl;->access$200(Lorg/conscrypt/NativeSsl;)Ljava/util/concurrent/locks/ReadWriteLock; @@ -25836,7 +26182,6 @@ HSPLorg/conscrypt/NativeSsl;->getLocalCertificates()[Ljava/security/cert/X509Cer HSPLorg/conscrypt/NativeSsl;->getMaxSealOverhead()I HSPLorg/conscrypt/NativeSsl;->getPeerCertificateOcspData()[B HSPLorg/conscrypt/NativeSsl;->getPeerTlsSctData()[B -HSPLorg/conscrypt/NativeSsl;->getPendingReadableBytes()I HSPLorg/conscrypt/NativeSsl;->getRequestedServerName()Ljava/lang/String; HSPLorg/conscrypt/NativeSsl;->getSessionId()[B HSPLorg/conscrypt/NativeSsl;->getTime()J @@ -25895,7 +26240,6 @@ HSPLorg/conscrypt/OpenSSLCipher;->checkAndSetEncodedKey(ILjava/security/Key;)[B HSPLorg/conscrypt/OpenSSLCipher;->engineDoFinal([BII)[B HSPLorg/conscrypt/OpenSSLCipher;->engineDoFinal([BII[BI)I HSPLorg/conscrypt/OpenSSLCipher;->engineGetIV()[B -HSPLorg/conscrypt/OpenSSLCipher;->engineGetOutputSize(I)I HSPLorg/conscrypt/OpenSSLCipher;->engineInit(ILjava/security/Key;Ljava/security/SecureRandom;)V HSPLorg/conscrypt/OpenSSLCipher;->engineInit(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V HSPLorg/conscrypt/OpenSSLCipher;->engineUpdate([BII)[B @@ -26203,7 +26547,6 @@ HSPLorg/signal/core/util/Base64Tools;->encodeBytesToBytes([BIII)[B HSPLorg/signal/core/util/Base64Tools;->getAlphabet(I)[B HSPLorg/signal/core/util/Base64Tools;->getDecodabet(I)[B HSPLorg/signal/core/util/Bitmask;->checkArgument(ZLjava/lang/String;)V -HSPLorg/signal/core/util/Bitmask;->read(JII)J HSPLorg/signal/core/util/Bitmask;->twoToThe(J)J HSPLorg/signal/core/util/Bitmask;->update(JIIJ)J HSPLorg/signal/core/util/BreakIteratorCompat$AndroidIcuBreakIterator$$ExternalSyntheticApiModelOutline0;->m()Landroid/icu/text/BreakIterator; @@ -26257,6 +26600,7 @@ HSPLorg/signal/core/util/CursorUtil;->requireBlob(Landroid/database/Cursor;Ljava HSPLorg/signal/core/util/CursorUtil;->requireBoolean(Landroid/database/Cursor;Ljava/lang/String;)Z HSPLorg/signal/core/util/CursorUtil;->requireInt(Landroid/database/Cursor;Ljava/lang/String;)I HSPLorg/signal/core/util/CursorUtil;->requireLong(Landroid/database/Cursor;Ljava/lang/String;)J +HSPLorg/signal/core/util/CursorUtil;->requireString(Landroid/database/Cursor;Ljava/lang/String;)Ljava/lang/String; HSPLorg/signal/core/util/DeleteBuilderPart1;->(Landroidx/sqlite/db/SupportSQLiteDatabase;Ljava/lang/String;)V HSPLorg/signal/core/util/DeleteBuilderPart1;->where(Ljava/lang/String;[Ljava/lang/Object;)Lorg/signal/core/util/DeleteBuilderPart2; HSPLorg/signal/core/util/DeleteBuilderPart2;->(Landroidx/sqlite/db/SupportSQLiteDatabase;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V @@ -26314,6 +26658,7 @@ HSPLorg/signal/core/util/ResettableLazy;->getValue(Ljava/lang/Object;Lkotlin/ref HSPLorg/signal/core/util/ResettableLazy;->isInitialized()Z HSPLorg/signal/core/util/ResettableLazy;->reset()V HSPLorg/signal/core/util/ResettableLazyKt;->resettableLazy(Lkotlin/jvm/functions/Function0;)Lorg/signal/core/util/ResettableLazy; +HSPLorg/signal/core/util/SQLiteDatabaseExtensionsKt;->()V HSPLorg/signal/core/util/SQLiteDatabaseExtensionsKt;->count(Landroidx/sqlite/db/SupportSQLiteDatabase;)Lorg/signal/core/util/SelectBuilderPart1; HSPLorg/signal/core/util/SQLiteDatabaseExtensionsKt;->delete(Landroidx/sqlite/db/SupportSQLiteDatabase;Ljava/lang/String;)Lorg/signal/core/util/DeleteBuilderPart1; HSPLorg/signal/core/util/SQLiteDatabaseExtensionsKt;->deleteAll(Landroidx/sqlite/db/SupportSQLiteDatabase;Ljava/lang/String;)I @@ -26352,12 +26697,10 @@ HSPLorg/signal/core/util/SqlUtil$Query;->getWhereArgs()[Ljava/lang/String; HSPLorg/signal/core/util/SqlUtil;->()V HSPLorg/signal/core/util/SqlUtil;->()V HSPLorg/signal/core/util/SqlUtil;->buildArgs(J)[Ljava/lang/String; -HSPLorg/signal/core/util/SqlUtil;->buildArgs([Ljava/lang/Object;)[Ljava/lang/String; HSPLorg/signal/core/util/SqlUtil;->buildCollectionQuery$default(Ljava/lang/String;Ljava/util/Collection;Ljava/lang/String;ILorg/signal/core/util/SqlUtil$CollectionOperator;ILjava/lang/Object;)Ljava/util/List; HSPLorg/signal/core/util/SqlUtil;->buildCollectionQuery(Ljava/lang/String;Ljava/util/Collection;Ljava/lang/String;ILorg/signal/core/util/SqlUtil$CollectionOperator;)Ljava/util/List; HSPLorg/signal/core/util/SqlUtil;->buildQuery(Ljava/lang/String;[Ljava/lang/Object;)Lorg/signal/core/util/SqlUtil$Query; HSPLorg/signal/core/util/SqlUtil;->buildTrueUpdateQuery(Ljava/lang/String;[Ljava/lang/String;Landroid/content/ContentValues;)Lorg/signal/core/util/SqlUtil$Query; -HSPLorg/signal/core/util/SqlUtil;->tableExists(Landroidx/sqlite/db/SupportSQLiteDatabase;Ljava/lang/String;)Z HSPLorg/signal/core/util/Stopwatch$Split;->(JJLjava/lang/String;)V HSPLorg/signal/core/util/Stopwatch$Split;->displayString(I)Ljava/lang/String; HSPLorg/signal/core/util/Stopwatch$Split;->getNanoTime()J @@ -26378,8 +26721,6 @@ HSPLorg/signal/core/util/StreamUtil;->copy(Ljava/io/InputStream;Ljava/io/OutputS HSPLorg/signal/core/util/StringExtensionsKt;->isNotNullOrBlank(Ljava/lang/CharSequence;)Z HSPLorg/signal/core/util/StringExtensionsKt;->nullIfBlank(Ljava/lang/String;)Ljava/lang/String; HSPLorg/signal/core/util/StringExtensionsKt;->toSingleLine(Ljava/lang/String;)Ljava/lang/String; -HSPLorg/signal/core/util/StringUtil$$ExternalSyntheticBackport0;->m(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List; -HSPLorg/signal/core/util/StringUtil$$ExternalSyntheticBackport1;->m([Ljava/lang/Object;)Ljava/util/List; HSPLorg/signal/core/util/StringUtil;->()V HSPLorg/signal/core/util/StringUtil;->isEmpty(Ljava/lang/String;)Z HSPLorg/signal/core/util/StringUtil;->isolateBidi(Ljava/lang/String;)Ljava/lang/String; @@ -26576,15 +26917,16 @@ HSPLorg/signal/core/util/logging/Scrubber;->scrubUuids(Ljava/lang/CharSequence;) HSPLorg/signal/core/util/logging/Scrubber;->setIdentifierHmacKeyProvider(Lkotlin/jvm/functions/Function0;)V HSPLorg/signal/core/util/stream/LimitedInputStream$$ExternalSyntheticBackport0;->m(J)I HSPLorg/signal/core/util/tracing/DebugAnnotation$Builder;->()V +HSPLorg/signal/core/util/tracing/DebugAnnotation$Builder;->build()Lorg/signal/core/util/tracing/DebugAnnotation; HSPLorg/signal/core/util/tracing/DebugAnnotation$Builder;->name(Ljava/lang/String;)Lorg/signal/core/util/tracing/DebugAnnotation$Builder; HSPLorg/signal/core/util/tracing/DebugAnnotation$Builder;->string_value(Ljava/lang/String;)Lorg/signal/core/util/tracing/DebugAnnotation$Builder; HSPLorg/signal/core/util/tracing/DebugAnnotation$Companion$ADAPTER$1;->(Lcom/squareup/wire/FieldEncoding;Lkotlin/reflect/KClass;Lcom/squareup/wire/Syntax;)V HSPLorg/signal/core/util/tracing/DebugAnnotation$Companion;->()V HSPLorg/signal/core/util/tracing/DebugAnnotation$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/signal/core/util/tracing/DebugAnnotation;->()V -HSPLorg/signal/core/util/tracing/DebugAnnotation;->(Ljava/lang/Long;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/Double;Ljava/lang/String;Ljava/lang/Long;Lorg/signal/core/util/tracing/DebugAnnotation$NestedValue;Lokio/ByteString;)V HSPLorg/signal/core/util/tracing/DebugAnnotation;->equals(Ljava/lang/Object;)Z HSPLorg/signal/core/util/tracing/TracePacket$Builder;->()V +HSPLorg/signal/core/util/tracing/TracePacket$Builder;->build()Lorg/signal/core/util/tracing/TracePacket; HSPLorg/signal/core/util/tracing/TracePacket$Builder;->synchronization_marker(Lokio/ByteString;)Lorg/signal/core/util/tracing/TracePacket$Builder; HSPLorg/signal/core/util/tracing/TracePacket$Builder;->timestamp(Ljava/lang/Long;)Lorg/signal/core/util/tracing/TracePacket$Builder; HSPLorg/signal/core/util/tracing/TracePacket$Builder;->track_descriptor(Lorg/signal/core/util/tracing/TrackDescriptor;)Lorg/signal/core/util/tracing/TracePacket$Builder; @@ -26600,13 +26942,17 @@ HSPLorg/signal/core/util/tracing/Tracer$$ExternalSyntheticLambda0;->getTimeNanos HSPLorg/signal/core/util/tracing/Tracer;->()V HSPLorg/signal/core/util/tracing/Tracer;->()V HSPLorg/signal/core/util/tracing/Tracer;->addPacket(Lorg/signal/core/util/tracing/TracePacket;)V +HSPLorg/signal/core/util/tracing/Tracer;->end(Ljava/lang/String;)V +HSPLorg/signal/core/util/tracing/Tracer;->forMethodEnd(Ljava/lang/String;JJ)Lorg/signal/core/util/tracing/TracePacket; +HSPLorg/signal/core/util/tracing/Tracer;->forMethodStart(Ljava/lang/String;JJLjava/util/Map;)Lorg/signal/core/util/tracing/TracePacket; HSPLorg/signal/core/util/tracing/Tracer;->forSynchronization(J)Lorg/signal/core/util/tracing/TracePacket; HSPLorg/signal/core/util/tracing/Tracer;->forTrack(JLjava/lang/String;)Lorg/signal/core/util/tracing/TracePacket; HSPLorg/signal/core/util/tracing/Tracer;->forTrackId(J)Lorg/signal/core/util/tracing/TracePacket; HSPLorg/signal/core/util/tracing/Tracer;->getInstance()Lorg/signal/core/util/tracing/Tracer; HSPLorg/signal/core/util/tracing/Tracer;->start(Ljava/lang/String;)V -HSPLorg/signal/core/util/tracing/Tracer;->start(Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;)V +HSPLorg/signal/core/util/tracing/Tracer;->start(Ljava/lang/String;JLjava/util/Map;)V HSPLorg/signal/core/util/tracing/Tracer;->start(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/signal/core/util/tracing/Tracer;->start(Ljava/lang/String;Ljava/util/Map;)V HSPLorg/signal/core/util/tracing/Tracer;->toByteArray(Ljava/util/UUID;)[B HSPLorg/signal/core/util/tracing/TrackDescriptor$Builder;->()V HSPLorg/signal/core/util/tracing/TrackDescriptor$Builder;->build()Lorg/signal/core/util/tracing/TrackDescriptor; @@ -27057,28 +27403,30 @@ HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda59;->< HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda59;->run()V HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda5;->(Lorg/thoughtcrime/securesms/ApplicationContext;)V HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda5;->run()V -HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda60;->(Lorg/thoughtcrime/securesms/ApplicationContext;)V +HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda60;->()V HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda60;->run()V HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda61;->(Lorg/thoughtcrime/securesms/ApplicationContext;)V HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda61;->run()V -HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda62;->()V +HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda62;->(Lorg/thoughtcrime/securesms/ApplicationContext;)V HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda62;->run()V HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda63;->()V HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda63;->run()V HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda64;->()V -HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda64;->apply(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda64;->run()V HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda65;->()V HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda65;->apply(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda66;->()V +HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda66;->apply(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda67;->()V -HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda68;->(Lorg/thoughtcrime/securesms/ApplicationContext;)V -HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda69;->()V +HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda68;->()V +HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda69;->(Lorg/thoughtcrime/securesms/ApplicationContext;)V HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda6;->(Lorg/thoughtcrime/securesms/ApplicationContext;)V HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda6;->run()V -HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda70;->(Lorg/thoughtcrime/securesms/ApplicationContext;)V -HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda70;->run()V -HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda71;->()V -HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda71;->invoke()Ljava/lang/Object; +HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda70;->()V +HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda71;->(Lorg/thoughtcrime/securesms/ApplicationContext;)V +HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda71;->run()V +HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda72;->()V +HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda72;->invoke()Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda7;->()V HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda7;->run()V HSPLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda8;->(Lorg/thoughtcrime/securesms/ApplicationContext;)V @@ -27471,8 +27819,9 @@ HSPLorg/thoughtcrime/securesms/banner/banners/DozeBannerKt$Banner$3$1;->(L HSPLorg/thoughtcrime/securesms/banner/banners/DozeBannerKt$Banner$4;->(Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;II)V HSPLorg/thoughtcrime/securesms/banner/banners/DozeBannerKt;->Banner(Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V HSPLorg/thoughtcrime/securesms/banner/banners/DozeBannerKt;->access$Banner(Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V +HSPLorg/thoughtcrime/securesms/banner/banners/MediaRestoreProgressBanner$dataFlow$2;->(Lorg/thoughtcrime/securesms/banner/banners/MediaRestoreProgressBanner;)V HSPLorg/thoughtcrime/securesms/banner/banners/MediaRestoreProgressBanner;->()V -HSPLorg/thoughtcrime/securesms/banner/banners/MediaRestoreProgressBanner;->()V +HSPLorg/thoughtcrime/securesms/banner/banners/MediaRestoreProgressBanner;->(Lorg/thoughtcrime/securesms/banner/banners/MediaRestoreProgressBanner$RestoreProgressBannerListener;)V HSPLorg/thoughtcrime/securesms/banner/banners/OutdatedBuildBanner$Companion;->()V HSPLorg/thoughtcrime/securesms/banner/banners/OutdatedBuildBanner$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/banner/banners/OutdatedBuildBanner;->()V @@ -27508,7 +27857,6 @@ HSPLorg/thoughtcrime/securesms/banner/ui/compose/DefaultBannerKt$DefaultBanner$1 HSPLorg/thoughtcrime/securesms/banner/ui/compose/DefaultBannerKt$DefaultBanner$1$1$1$2$1;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V HSPLorg/thoughtcrime/securesms/banner/ui/compose/DefaultBannerKt$DefaultBanner$1$1$1$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/banner/ui/compose/DefaultBannerKt$WhenMappings;->()V -HSPLorg/thoughtcrime/securesms/banner/ui/compose/DefaultBannerKt;->DefaultBanner(Ljava/lang/String;Ljava/lang/String;Lorg/thoughtcrime/securesms/banner/ui/compose/Importance;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Ljava/util/List;ZLjava/lang/String;ILandroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/runtime/Composer;II)V HSPLorg/thoughtcrime/securesms/banner/ui/compose/Importance;->$values()[Lorg/thoughtcrime/securesms/banner/ui/compose/Importance; HSPLorg/thoughtcrime/securesms/banner/ui/compose/Importance;->()V HSPLorg/thoughtcrime/securesms/banner/ui/compose/Importance;->(Ljava/lang/String;I)V @@ -27574,11 +27922,7 @@ HSPLorg/thoughtcrime/securesms/components/DeliveryStatusView;->setTint(I)V HSPLorg/thoughtcrime/securesms/components/DeliveryStatusView;->updateContentDescription()V HSPLorg/thoughtcrime/securesms/components/ExpirationTimerView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLorg/thoughtcrime/securesms/components/FromTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V -HSPLorg/thoughtcrime/securesms/components/FromTextView;->setText(Lorg/thoughtcrime/securesms/recipients/Recipient;)V -HSPLorg/thoughtcrime/securesms/components/FromTextView;->setText(Lorg/thoughtcrime/securesms/recipients/Recipient;Ljava/lang/CharSequence;)V -HSPLorg/thoughtcrime/securesms/components/FromTextView;->setText(Lorg/thoughtcrime/securesms/recipients/Recipient;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V -HSPLorg/thoughtcrime/securesms/components/FromTextView;->setText(Lorg/thoughtcrime/securesms/recipients/Recipient;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Z)V -HSPLorg/thoughtcrime/securesms/components/FromTextView;->setText(Lorg/thoughtcrime/securesms/recipients/Recipient;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZZ)V +HSPLorg/thoughtcrime/securesms/components/FromTextView;->setText(Lorg/thoughtcrime/securesms/recipients/Recipient;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZZZ)V HSPLorg/thoughtcrime/securesms/components/Material3SearchToolbar$$ExternalSyntheticLambda0;->(Lorg/thoughtcrime/securesms/components/Material3SearchToolbar;)V HSPLorg/thoughtcrime/securesms/components/Material3SearchToolbar$$ExternalSyntheticLambda1;->(Lorg/thoughtcrime/securesms/components/Material3SearchToolbar;)V HSPLorg/thoughtcrime/securesms/components/Material3SearchToolbar$special$$inlined$addTextChangedListener$default$1;->(Landroid/view/View;Lorg/thoughtcrime/securesms/components/Material3SearchToolbar;)V @@ -27604,6 +27948,7 @@ HSPLorg/thoughtcrime/securesms/components/QuoteView;->isStoryReply()Z HSPLorg/thoughtcrime/securesms/components/QuoteView;->setMessageType(Lorg/thoughtcrime/securesms/components/QuoteView$MessageType;)V HSPLorg/thoughtcrime/securesms/components/RatingManager;->()V HSPLorg/thoughtcrime/securesms/components/RatingManager;->showRatingDialogIfNecessary(Landroid/content/Context;)V +HSPLorg/thoughtcrime/securesms/components/ThumbnailView$$ExternalSyntheticBackport2;->m([Ljava/lang/Object;)Ljava/util/List; HSPLorg/thoughtcrime/securesms/components/TypingIndicatorView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLorg/thoughtcrime/securesms/components/TypingIndicatorView;->initialize(Landroid/util/AttributeSet;)V HSPLorg/thoughtcrime/securesms/components/TypingIndicatorView;->setDotTint(I)V @@ -27656,7 +28001,6 @@ HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView$$ExternalSynthetic HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->$r8$lambda$Wu3CFKvJwFFWN-o0X8m-zsbIJpA(Ljava/lang/Runnable;Landroid/view/View;)Lkotlin/Unit; HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->$r8$lambda$_XmAzJ07P5yhLgrWLOrmxQntA7M(Lorg/thoughtcrime/securesms/components/emoji/EmojiTextView;)V HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V -HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->applyWidthMeasureRoundingFix(I)I HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->drawSpecialRenderers(Landroid/graphics/Canvas;Lorg/thoughtcrime/securesms/components/mention/MentionRendererDelegate;Lorg/thoughtcrime/securesms/components/spoiler/SpoilerRendererDelegate;)V HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->ellipsizeEmojiTextForMaxLines()V @@ -27668,6 +28012,7 @@ HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->lambda$ellipsize HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->onDraw(Landroid/graphics/Canvas;)V HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->onMeasure(II)V HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->onSizeChanged(IIII)V +HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)V HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->unchanged(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)Z HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->useSystemEmoji()Z HSPLorg/thoughtcrime/securesms/components/emoji/SimpleEmojiTextView$$ExternalSyntheticLambda0;->(IILorg/thoughtcrime/securesms/components/emoji/SimpleEmojiTextView;)V @@ -27750,6 +28095,25 @@ HSPLorg/thoughtcrime/securesms/components/registration/PulsingFloatingActionButt HSPLorg/thoughtcrime/securesms/components/registration/PulsingFloatingActionButton;->pulse(J)V HSPLorg/thoughtcrime/securesms/components/registration/PulsingFloatingActionButton;->startPulse(J)V HSPLorg/thoughtcrime/securesms/components/registration/PulsingFloatingActionButton;->stopPulse()V +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord$FolderType$Companion;->()V +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord$FolderType$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord$FolderType$Companion;->deserialize(I)Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord$FolderType; +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord$FolderType;->$values()[Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord$FolderType; +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord$FolderType;->()V +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord$FolderType;->(Ljava/lang/String;II)V +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord$FolderType;->getEntries()Lkotlin/enums/EnumEntries; +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord$FolderType;->getValue()I +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;->()V +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;->(JLjava/lang/String;ILjava/util/List;Ljava/util/List;Ljava/util/Set;Ljava/util/Set;ZZZZZLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord$FolderType;I)V +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;->(JLjava/lang/String;ILjava/util/List;Ljava/util/List;Ljava/util/Set;Ljava/util/Set;ZZZZZLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord$FolderType;IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;->copy$default(Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;JLjava/lang/String;ILjava/util/List;Ljava/util/List;Ljava/util/Set;Ljava/util/Set;ZZZZZLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord$FolderType;IILjava/lang/Object;)Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord; +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;->copy(JLjava/lang/String;ILjava/util/List;Ljava/util/List;Ljava/util/Set;Ljava/util/Set;ZZZZZLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord$FolderType;I)Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord; +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;->equals(Ljava/lang/Object;)Z +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;->getFolderType()Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord$FolderType; +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;->getId()J +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersRepository;->()V +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersRepository;->()V +HSPLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersRepository;->getCurrentFolders(Z)Ljava/util/List; HSPLorg/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfilesRepository$getProfiles$1;->(Lorg/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfilesRepository;)V HSPLorg/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfilesRepository$getProfiles$1;->apply(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfilesRepository$getProfiles$1;->apply(Lkotlin/Unit;)Ljava/util/List; @@ -27920,12 +28284,15 @@ HSPLorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$1;->(Lo HSPLorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$2;->(Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$ClickCallbacks;)V HSPLorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$3;->(Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$LongClickCallbacks;)V HSPLorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$4;->(Ljava/lang/Object;)V +HSPLorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$5;->(Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$ClickCallbacks;)V HSPLorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$Companion$$ExternalSyntheticLambda0;->(Ljava/util/Set;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$DisplayOptions;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$OnClickedCallback;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$OnLongClickedCallback;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$CallButtonClickCallbacks;)V HSPLorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$Companion$$ExternalSyntheticLambda1;->(ZLorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$OnClickedCallback;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$StoryContextMenuCallbacks;Z)V HSPLorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$Companion$$ExternalSyntheticLambda2;->()V HSPLorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$Companion$$ExternalSyntheticLambda3;->(Lkotlin/jvm/functions/Function1;)V +HSPLorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$Companion$$ExternalSyntheticLambda4;->(Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$OnClickedCallback;)V HSPLorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$Companion;->()V HSPLorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$Companion;->registerChatTypeItems(Lorg/thoughtcrime/securesms/util/adapter/mapping/MappingAdapter;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$OnClickedCallback;)V HSPLorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$Companion;->registerExpands(Lorg/thoughtcrime/securesms/util/adapter/mapping/MappingAdapter;Lkotlin/jvm/functions/Function1;)V HSPLorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$Companion;->registerHeaders(Lorg/thoughtcrime/securesms/util/adapter/mapping/MappingAdapter;)V HSPLorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$Companion;->registerKnownRecipientItems(Lorg/thoughtcrime/securesms/util/adapter/mapping/MappingAdapter;Ljava/util/Set;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$DisplayOptions;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$OnClickedCallback;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$OnLongClickedCallback;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$CallButtonClickCallbacks;)V @@ -28173,6 +28540,11 @@ HSPLorg/thoughtcrime/securesms/conversation/v2/items/ShrinkWrapLinearLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemLayout;->()V HSPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ChatFolderAdapter$$ExternalSyntheticLambda0;->(Lorg/thoughtcrime/securesms/conversationlist/ChatFolderAdapter;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ChatFolderAdapter;->()V +HSPLorg/thoughtcrime/securesms/conversationlist/ChatFolderAdapter;->(Lorg/thoughtcrime/securesms/conversationlist/ChatFolderAdapter$Callbacks;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ChatFolderMappingModel;->()V +HSPLorg/thoughtcrime/securesms/conversationlist/ChatFolderMappingModel;->(Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;Z)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->onTouchEvent(Landroidx/coordinatorlayout/widget/CoordinatorLayout;Landroid/view/View;Landroid/view/MotionEvent;)Z @@ -28189,7 +28561,7 @@ HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$Payload; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$Payload;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$Payload;->(Ljava/lang/String;I)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$Payload;->values()[Lorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$Payload; -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter;->(Landroidx/lifecycle/LifecycleOwner;Lcom/bumptech/glide/RequestManager;Lorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$OnConversationClickListener;Lorg/thoughtcrime/securesms/conversationlist/ClearFilterViewHolder$OnClearFilterClickListener;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter;->(Landroidx/lifecycle/LifecycleOwner;Lcom/bumptech/glide/RequestManager;Lorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$OnConversationClickListener;Lorg/thoughtcrime/securesms/conversationlist/ClearFilterViewHolder$OnClearFilterClickListener;Lorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$EmptyFolderViewHolder$OnFolderSettingsClickListener;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter;->getItem(I)Lorg/thoughtcrime/securesms/conversationlist/model/Conversation; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter;->getItemViewType(I)I HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter;->notifyTimestampPayloadUpdate()V @@ -28201,84 +28573,85 @@ HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter;->setSel HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListArchiveItemDecoration;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListArchiveItemDecoration;->(Landroid/graphics/drawable/Drawable;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListArchiveItemDecoration;->onDraw(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$State;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource$UnarchivedConversationListDataSource;->(Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;Z)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource$UnarchivedConversationListDataSource;->(Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;Z)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource$UnarchivedConversationListDataSource;->getCursor(JJ)Landroid/database/Cursor; -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource$UnarchivedConversationListDataSource;->getHeaderOffset()I HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource$UnarchivedConversationListDataSource;->getKey(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource$UnarchivedConversationListDataSource;->getTotalCount()I -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource$UnarchivedConversationListDataSource;->hasPinnedHeader()Z -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource$UnarchivedConversationListDataSource;->hasUnpinnedHeader()Z HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource;->()V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource;->(Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;Z)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource;->create(Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;ZZ)Lorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource;->(Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;Z)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource;->create(Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;ZZ)Lorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource;->getKey(Lorg/thoughtcrime/securesms/conversationlist/model/Conversation;)Ljava/lang/Long; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource;->load(IIILorg/signal/paging/PagedDataSource$CancellationSignal;)Ljava/util/List; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource;->size()I HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticBackport0;->m(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List; -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda13;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda13;->invoke(Ljava/lang/Object;)Ljava/lang/Object; -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda14;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda14;->create(Landroid/content/Context;Ljava/util/Set;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$DisplayOptions;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$ClickCallbacks;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$LongClickCallbacks;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$StoryContextMenuCallbacks;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$CallButtonClickCallbacks;)Lorg/thoughtcrime/securesms/util/adapter/mapping/PagingMappingAdapter; -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda15;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Lcom/google/android/material/appbar/CollapsingToolbarLayout;I)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda15;->newState(Lorg/thoughtcrime/securesms/conversationlist/chatfilter/FilterPullState;Lorg/thoughtcrime/securesms/conversationlist/chatfilter/ConversationFilterSource;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda15;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda15;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda16;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda17;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda17;->onOffsetChanged(Lcom/google/android/material/appbar/AppBarLayout;I)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda16;->create(Landroid/content/Context;Ljava/util/Set;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$DisplayOptions;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$ClickCallbacks;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$LongClickCallbacks;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$StoryContextMenuCallbacks;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$CallButtonClickCallbacks;)Lorg/thoughtcrime/securesms/util/adapter/mapping/PagingMappingAdapter; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda17;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Lcom/google/android/material/appbar/CollapsingToolbarLayout;I)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda17;->newState(Lorg/thoughtcrime/securesms/conversationlist/chatfilter/FilterPullState;Lorg/thoughtcrime/securesms/conversationlist/chatfilter/ConversationFilterSource;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda18;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda19;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda19;->onOffsetChanged(Lcom/google/android/material/appbar/AppBarLayout;I)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda1;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda20;->()V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda20;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda21;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda22;->()V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda23;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda2;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda37;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;ILjava/util/List;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda37;->run()V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda38;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda38;->onChanged(Ljava/lang/Object;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda39;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;ILjava/util/List;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda39;->run()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda3;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda42;->()V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda43;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Ljava/util/Set;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda45;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda46;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda47;->()V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda48;->()V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda40;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda40;->onChanged(Ljava/lang/Object;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda44;->()V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda45;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Ljava/util/Set;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda47;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda48;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda49;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda4;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda51;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Ljava/util/Set;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda50;->()V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda51;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda53;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Ljava/util/Set;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda55;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Ljava/util/Set;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda57;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Ljava/util/Set;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda5;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda61;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda64;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda6;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda71;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda78;->()V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda78;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda74;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda7;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda7;->accept(Ljava/lang/Object;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda81;->()V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda81;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda8;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda9;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$10;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$1;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$2;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Z)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$4$1$$ExternalSyntheticLambda0;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$4$1$$ExternalSyntheticLambda0;->run()V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$4$1;->$r8$lambda$Y8JIyAbcQPA7qwtQh9qNmu7nmjo(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$4$1;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$4;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$4$1;->onLayoutChange(Landroid/view/View;IIIIIIII)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$4;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$4;->onItemRangeInserted(II)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$5$1$$ExternalSyntheticLambda0;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$5$1$$ExternalSyntheticLambda0;->run()V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$5$1;->$r8$lambda$Y8JIyAbcQPA7qwtQh9qNmu7nmjo(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$5$1;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$5;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$5$1;->onLayoutChange(Landroid/view/View;IIIIIIII)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$5;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$5;->onForeground()V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$9;->()V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$5;->onItemRangeInserted(II)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$6;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$6;->onForeground()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$ArchiveListenerCallback;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;II)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$ContactSearchClickCallbacks;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$ClickCallbacks;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$ContactSearchClickCallbacks;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$ClickCallbacks;Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$ContactSearchClickCallbacks-IA;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->$r8$lambda$BT005Zy9c3YGjY9-gIiJli9XBQo(Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchConfiguration$Builder;)Lkotlin/Unit; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->$r8$lambda$E2kQol4XezoS9z_wSx7q3Qsji9M(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Landroid/content/Context;Ljava/util/Set;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$DisplayOptions;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$ClickCallbacks;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$LongClickCallbacks;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$StoryContextMenuCallbacks;Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$CallButtonClickCallbacks;)Lorg/thoughtcrime/securesms/util/adapter/mapping/PagingMappingAdapter; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->$r8$lambda$KPzBA-7CvAirzeY08ZpxNtNW7Qk(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Lcom/google/android/material/appbar/AppBarLayout;I)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->$r8$lambda$MSB-TB9sARSMlNkTriXsqXhQrzA(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Ljava/util/List;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->$r8$lambda$NTWiRmHMeoz7xrMcVr1nMem4vIc(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Lorg/thoughtcrime/securesms/conversationlist/chatfilter/ConversationFilterRequest;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->$r8$lambda$O3EqPlBcOC1O0tswXr4bEQu4PnM(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Ljava/util/List;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->$r8$lambda$SH4kWaKbmAoY2aQQCW_tUIy87vg(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Lj$/util/Optional;)V @@ -28318,6 +28691,7 @@ HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->lambd HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->mapSearchStateToConfiguration(Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchState;)Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchConfiguration; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->maybeScheduleRefreshProfileJob()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->onAttach(Landroid/content/Context;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->onChatFoldersChanged(Ljava/util/List;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->onConversationListChanged(Ljava/util/List;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->onCreate(Landroid/os/Bundle;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->onCreateOptionsMenu(Landroid/view/Menu;Landroid/view/MenuInflater;)V @@ -28335,12 +28709,12 @@ HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->updat HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->updateMultiSelectState()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->updateSearchToolbarHint(Lorg/thoughtcrime/securesms/conversationlist/chatfilter/ConversationFilterRequest;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda13;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListItem;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda2;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListItem;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda2;->onChanged(Ljava/lang/Object;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda1;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListItem;Ljava/util/Locale;Lorg/thoughtcrime/securesms/database/model/ThreadRecord;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda1;->run()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda3;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListItem;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda3;->onChanged(Ljava/lang/Object;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda4;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListItem;Ljava/util/Locale;Lorg/thoughtcrime/securesms/database/model/ThreadRecord;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda4;->run()V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda4;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListItem;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda4;->onChanged(Ljava/lang/Object;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda7;->(Lorg/thoughtcrime/securesms/database/model/ThreadRecord;Landroid/content/Context;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda7;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem;->$r8$lambda$Ao_h4FypxhvytTG1WGaBgdSX7eg(Lorg/thoughtcrime/securesms/conversationlist/ConversationListItem;Landroid/text/SpannableString;)V @@ -28350,7 +28724,7 @@ HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem;->$r8$lambd HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem;->bind(Landroidx/lifecycle/LifecycleOwner;Lorg/thoughtcrime/securesms/database/model/ThreadRecord;Lcom/bumptech/glide/RequestManager;Ljava/util/Locale;Ljava/util/Set;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationSet;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem;->bindThread(Landroidx/lifecycle/LifecycleOwner;Lorg/thoughtcrime/securesms/database/model/ThreadRecord;Lcom/bumptech/glide/RequestManager;Ljava/util/Locale;Ljava/util/Set;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationSet;Ljava/lang/String;Z)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem;->bindThread(Landroidx/lifecycle/LifecycleOwner;Lorg/thoughtcrime/securesms/database/model/ThreadRecord;Lcom/bumptech/glide/RequestManager;Ljava/util/Locale;Ljava/util/Set;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationSet;Ljava/lang/String;ZZ)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem;->createFinalBodyWithMediaIcon(Landroid/content/Context;Ljava/lang/CharSequence;Lorg/thoughtcrime/securesms/database/model/ThreadRecord;Lcom/bumptech/glide/RequestManager;ILorg/thoughtcrime/securesms/glide/GlideLiveDataTarget;)Landroidx/lifecycle/LiveData; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem;->getThreadDisplayBody(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/model/ThreadRecord;Lcom/bumptech/glide/RequestManager;ILorg/thoughtcrime/securesms/glide/GlideLiveDataTarget;)Landroidx/lifecycle/LiveData; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListItem;->lambda$bindThread$1(Ljava/util/Locale;Lorg/thoughtcrime/securesms/database/model/ThreadRecord;)V @@ -28388,10 +28762,10 @@ HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$$Exter HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$1;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$1;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$1;->apply(Ljava/lang/Object;)Ljava/lang/Object; -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$1;->apply(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;)Lorg/thoughtcrime/securesms/conversationlist/chatfilter/ConversationFilterRequest; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$1;->apply(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;)Lkotlin/Pair; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$2;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$2;->apply(Ljava/lang/Object;)Ljava/lang/Object; -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$2;->apply(Lorg/thoughtcrime/securesms/conversationlist/chatfilter/ConversationFilterRequest;)Lorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$2;->apply(Lkotlin/Pair;)Lorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$3;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$3;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; @@ -28399,25 +28773,30 @@ HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$3;->in HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$4;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$4;->accept(Ljava/lang/Object;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$4;->accept(Lkotlin/Unit;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$5;->()V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$5;->()V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$5;->invoke(Ljava/lang/Integer;Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;)Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState; -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$5;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$5;->accept(Ljava/lang/Object;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$5;->accept(Lkotlin/Pair;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$6;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$6;->()V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$6;->apply(Ljava/lang/Object;)Ljava/lang/Object; -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$6;->apply(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;)Lkotlin/Pair; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$6;->invoke(Ljava/lang/Integer;Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;)Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$6;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$7;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$7;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$7;->apply(Ljava/lang/Object;)Ljava/lang/Object; -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$7;->apply(Lkotlin/Pair;)Ljava/lang/Boolean; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$7;->apply(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;)Lkotlin/Pair; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$8;->()V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$8;->()V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$8;->apply(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$8;->apply(Lkotlin/Pair;)Ljava/lang/Boolean; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$Companion;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;->(Ljava/util/List;Lorg/thoughtcrime/securesms/megaphone/Megaphone;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationSet;Ljava/util/Set;Lorg/thoughtcrime/securesms/conversationlist/chatfilter/ConversationFilterRequest;I)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;->(Ljava/util/List;Lorg/thoughtcrime/securesms/megaphone/Megaphone;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationSet;Ljava/util/Set;Lorg/thoughtcrime/securesms/conversationlist/chatfilter/ConversationFilterRequest;IILkotlin/jvm/internal/DefaultConstructorMarker;)V -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;->copy$default(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;Ljava/util/List;Lorg/thoughtcrime/securesms/megaphone/Megaphone;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationSet;Ljava/util/Set;Lorg/thoughtcrime/securesms/conversationlist/chatfilter/ConversationFilterRequest;IILjava/lang/Object;)Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState; -HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;->copy(Ljava/util/List;Lorg/thoughtcrime/securesms/megaphone/Megaphone;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationSet;Ljava/util/Set;Lorg/thoughtcrime/securesms/conversationlist/chatfilter/ConversationFilterRequest;I)Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;->(Ljava/util/List;Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;Ljava/util/List;Lorg/thoughtcrime/securesms/megaphone/Megaphone;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationSet;Ljava/util/Set;Lorg/thoughtcrime/securesms/conversationlist/chatfilter/ConversationFilterRequest;I)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;->(Ljava/util/List;Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;Ljava/util/List;Lorg/thoughtcrime/securesms/megaphone/Megaphone;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationSet;Ljava/util/Set;Lorg/thoughtcrime/securesms/conversationlist/chatfilter/ConversationFilterRequest;IILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;->copy$default(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;Ljava/util/List;Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;Ljava/util/List;Lorg/thoughtcrime/securesms/megaphone/Megaphone;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationSet;Ljava/util/Set;Lorg/thoughtcrime/securesms/conversationlist/chatfilter/ConversationFilterRequest;IILjava/lang/Object;)Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;->copy(Ljava/util/List;Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;Ljava/util/List;Lorg/thoughtcrime/securesms/megaphone/Megaphone;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationSet;Ljava/util/Set;Lorg/thoughtcrime/securesms/conversationlist/chatfilter/ConversationFilterRequest;I)Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;->getChatFolders()Ljava/util/List; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;->getConversations()Ljava/util/List; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;->getCurrentFolder()Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;->getFilterRequest()Lorg/thoughtcrime/securesms/conversationlist/chatfilter/ConversationFilterRequest; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;->getInternalSelection()Ljava/util/Set; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;->getMegaphone()Lorg/thoughtcrime/securesms/megaphone/Megaphone; @@ -28428,6 +28807,10 @@ HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$Factor HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$Factory;->create(Ljava/lang/Class;)Landroidx/lifecycle/ViewModel; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$Factory;->create(Ljava/lang/Class;Landroidx/lifecycle/viewmodel/CreationExtras;)Landroidx/lifecycle/ViewModel; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$Factory;->create(Lkotlin/reflect/KClass;Landroidx/lifecycle/viewmodel/CreationExtras;)Landroidx/lifecycle/ViewModel; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$chatFolderState$1;->()V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$chatFolderState$1;->()V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$chatFolderState$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$chatFolderState$1;->invoke(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;)Ljava/util/List; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$conversationsState$1;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$conversationsState$1;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$conversationsState$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; @@ -28436,6 +28819,12 @@ HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$filter HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$filterRequestState$1;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$filterRequestState$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$filterRequestState$1;->invoke(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;)Lorg/thoughtcrime/securesms/conversationlist/chatfilter/ConversationFilterRequest; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$loadCurrentFolders$1$1;->(Ljava/util/List;Ljava/util/List;Ljava/lang/Long;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$loadCurrentFolders$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$loadCurrentFolders$1$1;->invoke(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState;)Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$loadCurrentFolders$1;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;Lkotlin/coroutines/Continuation;)V +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$loadCurrentFolders$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$loadCurrentFolders$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$megaphoneState$1;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$megaphoneState$1;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$megaphoneState$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; @@ -28466,11 +28855,15 @@ HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->(ZLorg/thoughtcrime/securesms/megaphone/MegaphoneRepository;Lorg/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfilesRepository;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->(ZLorg/thoughtcrime/securesms/megaphone/MegaphoneRepository;Lorg/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfilesRepository;ILkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->access$getPagingConfig$p(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;)Lorg/signal/paging/PagingConfig; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->access$getStore$p(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;)Lorg/thoughtcrime/securesms/util/rx/RxStore; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->access$isArchived$p(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;)Z +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->access$loadCurrentFolders(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->currentSelectedConversations()Ljava/util/Set; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->getChatFolderState()Lio/reactivex/rxjava3/core/Flowable; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->getController()Lorg/signal/paging/ProxyPagingController; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->getConversationFilterRequest()Lorg/thoughtcrime/securesms/conversationlist/chatfilter/ConversationFilterRequest; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->getConversationsState()Lio/reactivex/rxjava3/core/Flowable; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->getCurrentFolder()Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->getFilterRequestState()Lio/reactivex/rxjava3/core/Flowable; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->getHasNoConversations()Lio/reactivex/rxjava3/core/Flowable; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->getMegaphoneState()Lio/reactivex/rxjava3/core/Flowable; @@ -28478,6 +28871,7 @@ HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->getN HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->getPinnedCount()I HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->getSelectedState()Lio/reactivex/rxjava3/core/Flowable; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->getWebSocketState()Lio/reactivex/rxjava3/core/Observable; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->loadCurrentFolders()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->onMegaphoneVisible(Lorg/thoughtcrime/securesms/megaphone/Megaphone;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->onVisible$lambda$0(Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;Lorg/thoughtcrime/securesms/megaphone/Megaphone;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel;->onVisible()V @@ -28552,6 +28946,7 @@ HSPLorg/thoughtcrime/securesms/conversationlist/model/Conversation$Type;->(Ljava/lang/String;I)V HSPLorg/thoughtcrime/securesms/conversationlist/model/Conversation$Type;->values()[Lorg/thoughtcrime/securesms/conversationlist/model/Conversation$Type; HSPLorg/thoughtcrime/securesms/conversationlist/model/Conversation;->(Lorg/thoughtcrime/securesms/database/model/ThreadRecord;)V +HSPLorg/thoughtcrime/securesms/conversationlist/model/Conversation;->equals(Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/conversationlist/model/Conversation;->getThreadRecord()Lorg/thoughtcrime/securesms/database/model/ThreadRecord; HSPLorg/thoughtcrime/securesms/conversationlist/model/Conversation;->getType()Lorg/thoughtcrime/securesms/conversationlist/model/Conversation$Type; HSPLorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;->$values()[Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter; @@ -28728,9 +29123,7 @@ HSPLorg/thoughtcrime/securesms/database/AttachmentTable$TransformProperties;->ac HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->()V HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;Lorg/thoughtcrime/securesms/crypto/AttachmentSecret;)V HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->deleteAbandonedPreuploadedAttachments()I -HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->getAttachment(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/attachments/DatabaseAttachment; HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->getAttachment(Lorg/thoughtcrime/securesms/attachments/AttachmentId;)Lorg/thoughtcrime/securesms/attachments/DatabaseAttachment; -HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->getAttachments(Landroid/database/Cursor;)Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->getAttachmentsForMessage(J)Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->insertAttachmentsForMessage(JLjava/util/List;Ljava/util/List;)Ljava/util/Map; HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->readAttachments(Landroid/database/Cursor;)Ljava/util/List; @@ -28745,6 +29138,7 @@ HSPLorg/thoughtcrime/securesms/database/CallLinkTable;->()V HSPLorg/thoughtcrime/securesms/database/CallLinkTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V HSPLorg/thoughtcrime/securesms/database/CallTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/CallTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/database/CallTable$Companion;->getCREATE_INDEXES()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/CallTable$Event$Serializer;->()V HSPLorg/thoughtcrime/securesms/database/CallTable$Event$Serializer;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/database/CallTable$Event$Serializer;->serialize(Lorg/thoughtcrime/securesms/database/CallTable$Event;)Ljava/lang/Integer; @@ -28761,6 +29155,7 @@ HSPLorg/thoughtcrime/securesms/database/CallTable$ReadState;->(Ljava/lang/ HSPLorg/thoughtcrime/securesms/database/CallTable$ReadState;->access$getCode$p(Lorg/thoughtcrime/securesms/database/CallTable$ReadState;)I HSPLorg/thoughtcrime/securesms/database/CallTable;->()V HSPLorg/thoughtcrime/securesms/database/CallTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V +HSPLorg/thoughtcrime/securesms/database/CallTable;->access$getCREATE_INDEXES$cp()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/CallTable;->getLatestRingingCalls()Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/CallTable;->getOldestDeletionTimestamp()J HSPLorg/thoughtcrime/securesms/database/CallTable;->getUnreadMissedCallCount()J @@ -28773,49 +29168,75 @@ HSPLorg/thoughtcrime/securesms/database/ChatColorsTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/ChatColorsTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/database/ChatColorsTable;->()V HSPLorg/thoughtcrime/securesms/database/ChatColorsTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables$ChatFolderMembershipTable;->()V +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables$ChatFolderMembershipTable;->()V +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables$ChatFolderMembershipTable;->getCREATE_INDEXES()[Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables$ChatFolderTable;->()V +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables$ChatFolderTable;->()V +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables$ChatFolderTable;->getCREATE_INDEX()[Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables$ChatFolderTable;->getCREATE_TABLE()Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables$Companion;->()V +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables$Companion;->getAllChatsFolderContentValues()Landroid/content/ContentValues; +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables$Companion;->insertInitialChatFoldersAtCreationTime(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;)V +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables$MembershipType;->$values()[Lorg/thoughtcrime/securesms/database/ChatFolderTables$MembershipType; +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables$MembershipType;->()V +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables$MembershipType;->(Ljava/lang/String;II)V +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables$MembershipType;->getValue()I +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables;->()V +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables;->getChatFolders(Z)Ljava/util/List; +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables;->getExcludedChats$default(Lorg/thoughtcrime/securesms/database/ChatFolderTables;Ljava/lang/Long;ILjava/lang/Object;)Ljava/util/Map; +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables;->getExcludedChats(Ljava/lang/Long;)Ljava/util/Map; +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables;->getIncludedChats$default(Lorg/thoughtcrime/securesms/database/ChatFolderTables;Ljava/lang/Long;ILjava/lang/Object;)Ljava/util/Map; +HSPLorg/thoughtcrime/securesms/database/ChatFolderTables;->getIncludedChats(Ljava/lang/Long;)Ljava/util/Map; HSPLorg/thoughtcrime/securesms/database/DatabaseMonitor;->()V HSPLorg/thoughtcrime/securesms/database/DatabaseMonitor;->()V HSPLorg/thoughtcrime/securesms/database/DatabaseMonitor;->onDelete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V HSPLorg/thoughtcrime/securesms/database/DatabaseMonitor;->onQuery(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V HSPLorg/thoughtcrime/securesms/database/DatabaseMonitor;->onSql(Ljava/lang/String;[Ljava/lang/Object;)V HSPLorg/thoughtcrime/securesms/database/DatabaseMonitor;->onUpdate(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/Object;)V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda13;->(Lorg/thoughtcrime/securesms/recipients/RecipientId;)V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda13;->run()V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda15;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda0;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda0;->run()V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda10;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Ljava/lang/Runnable;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda10;->run()V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda15;->(Lorg/thoughtcrime/securesms/recipients/RecipientId;)V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda15;->run()V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda16;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;)V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda16;->run()V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda19;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/recipients/RecipientId;)V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda19;->run()V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda28;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda28;->run()V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda17;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda17;->run()V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda18;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda18;->run()V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda21;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/recipients/RecipientId;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda21;->run()V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda30;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda30;->run()V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda31;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;J)V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda31;->run()V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda44;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;)V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda44;->run()V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda8;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Ljava/lang/Runnable;)V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda8;->run()V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$7Xzl-LD_QMlkhCUH8-6n3yFwhfs(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/recipients/RecipientId;)V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$9Gz7KbXzfAHwYopZ4SWig_CeXlM(Lorg/thoughtcrime/securesms/database/DatabaseObserver;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda32;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda32;->run()V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda33;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;J)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda33;->run()V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda47;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda47;->run()V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$0pqdC7SQgRD4htF6bzKtpUzNMhE(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/recipients/RecipientId;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$25SR2YoHKnlXZC8Q_64WRFqVRoo(Lorg/thoughtcrime/securesms/recipients/RecipientId;)V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$BYvmNAG1LzsHwZL4JjJlUjuDxGY(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$PgY6uGCio3bRZeR2yZEo_KM9Lks(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$jSYkDtgxIziOJXvPmEzKkP7NkVo(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Ljava/lang/Runnable;)V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$kX8EQqk_hZHCH4wY-uCeSzUmt-4(Lorg/thoughtcrime/securesms/recipients/RecipientId;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$X1kz1_0l2nN5cOA1-htohlR2uPg(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$Y_GN9qmXeweYvV0u4f_z4X8AFdY(Lorg/thoughtcrime/securesms/database/DatabaseObserver;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$ZEo94mfhB4uwHsxi8VHthh8HkCU(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Ljava/lang/Runnable;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$ciLh01Ubr0Hujb0IiKoBP8WdIIE(Lorg/thoughtcrime/securesms/database/DatabaseObserver;J)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$hhIbehX8n3T_6v4G-BW6zZ8yoO8(Lorg/thoughtcrime/securesms/database/DatabaseObserver;)V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$nWVZ0GtsJtiPq4Zsu0SH8XaISrk(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$sXYoVhvGUYp3RiQF3w2RSUNzg-c(Lorg/thoughtcrime/securesms/database/DatabaseObserver;J)V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$u53YUYuh0t4raIJcsUpMf2kqPH8(Lorg/thoughtcrime/securesms/database/DatabaseObserver;)V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->()V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$notifyAttachmentUpdatedObservers$31()V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$notifyConversationListListeners$25()V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$notifyConversationListeners$22(J)V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$notifyRecipientChanged$38(Lorg/thoughtcrime/securesms/recipients/RecipientId;)V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$notifyStoryObservers$39(Lorg/thoughtcrime/securesms/recipients/RecipientId;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$notifyAttachmentUpdatedObservers$32()V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$notifyConversationListListeners$26()V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$notifyConversationListeners$23(J)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$notifyRecipientChanged$39(Lorg/thoughtcrime/securesms/recipients/RecipientId;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$notifyStoryObservers$40(Lorg/thoughtcrime/securesms/recipients/RecipientId;)V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$registerAttachmentDeletedObserver$10(Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$registerChatFolderObserver$19(Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$registerConversationListObserver$0(Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$registerNotificationProfileObserver$13(Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V -HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$runPostSuccessfulTransaction$46(Ljava/lang/Runnable;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$runPostSuccessfulTransaction$48(Ljava/lang/Runnable;)V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->notifyAttachmentUpdatedObservers()V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->notifyConversationListListeners()V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->notifyConversationListeners(J)V @@ -28824,6 +29245,7 @@ HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->notifyRecipientChange HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->notifySet(Ljava/util/Set;)V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->notifyStoryObservers(Lorg/thoughtcrime/securesms/recipients/RecipientId;)V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->registerAttachmentDeletedObserver(Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V +HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->registerChatFolderObserver(Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->registerConversationListObserver(Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->registerNotificationProfileObserver(Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->runPostSuccessfulTransaction(Ljava/lang/String;Ljava/lang/Runnable;)V @@ -28835,6 +29257,7 @@ HSPLorg/thoughtcrime/securesms/database/DatabaseTable;->notifyConversationListLi HSPLorg/thoughtcrime/securesms/database/DatabaseTable;->notifyConversationListeners(J)V HSPLorg/thoughtcrime/securesms/database/DistributionListTables$Companion;->()V HSPLorg/thoughtcrime/securesms/database/DistributionListTables$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/database/DistributionListTables$Companion;->insertInitialDistributionListAtCreationTime(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;)V HSPLorg/thoughtcrime/securesms/database/DistributionListTables$ListTable;->()V HSPLorg/thoughtcrime/securesms/database/DistributionListTables$ListTable;->()V HSPLorg/thoughtcrime/securesms/database/DistributionListTables$ListTable;->getCREATE_TABLE()Ljava/lang/String; @@ -28845,8 +29268,10 @@ HSPLorg/thoughtcrime/securesms/database/DistributionListTables;->()V HSPLorg/thoughtcrime/securesms/database/DistributionListTables;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V HSPLorg/thoughtcrime/securesms/database/DonationReceiptTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/DonationReceiptTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/database/DonationReceiptTable$Companion;->getCREATE_INDEXS()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/DonationReceiptTable;->()V HSPLorg/thoughtcrime/securesms/database/DonationReceiptTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V +HSPLorg/thoughtcrime/securesms/database/DonationReceiptTable;->access$getCREATE_INDEXS$cp()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/DraftTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/DraftTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/database/DraftTable$Drafts;->()V @@ -28870,6 +29295,7 @@ HSPLorg/thoughtcrime/securesms/database/GroupReceiptTable;->()V HSPLorg/thoughtcrime/securesms/database/GroupReceiptTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V HSPLorg/thoughtcrime/securesms/database/GroupTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/GroupTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/database/GroupTable$Companion;->getCREATE_TABLES()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/GroupTable$Companion;->getTYPED_GROUP_PROJECTION()Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/GroupTable$MembershipTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/GroupTable$MembershipTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -28884,6 +29310,7 @@ HSPLorg/thoughtcrime/securesms/database/GroupTable$ShowAsStoryState;->(Lja HSPLorg/thoughtcrime/securesms/database/GroupTable$ShowAsStoryState;->getCode()I HSPLorg/thoughtcrime/securesms/database/GroupTable;->()V HSPLorg/thoughtcrime/securesms/database/GroupTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V +HSPLorg/thoughtcrime/securesms/database/GroupTable;->access$getCREATE_TABLES$cp()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/GroupTable;->access$getTYPED_GROUP_PROJECTION$cp()Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/GroupTable;->getAllGroupV2Ids()Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/GroupTable;->getGroup(Lorg/signal/core/util/SqlUtil$Query;)Lj$/util/Optional; @@ -28911,6 +29338,7 @@ HSPLorg/thoughtcrime/securesms/database/InAppPaymentSubscriberTable;->() HSPLorg/thoughtcrime/securesms/database/InAppPaymentSubscriberTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V HSPLorg/thoughtcrime/securesms/database/InAppPaymentTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/InAppPaymentTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/database/InAppPaymentTable$Companion;->getCREATE_TABLE()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/InAppPaymentTable$State$Companion;->()V HSPLorg/thoughtcrime/securesms/database/InAppPaymentTable$State$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/database/InAppPaymentTable$State$Companion;->serialize(Lorg/thoughtcrime/securesms/database/InAppPaymentTable$State;)Ljava/lang/Integer; @@ -28920,23 +29348,20 @@ HSPLorg/thoughtcrime/securesms/database/InAppPaymentTable$State;->(Ljava/l HSPLorg/thoughtcrime/securesms/database/InAppPaymentTable$State;->getCode()I HSPLorg/thoughtcrime/securesms/database/InAppPaymentTable;->()V HSPLorg/thoughtcrime/securesms/database/InAppPaymentTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V +HSPLorg/thoughtcrime/securesms/database/InAppPaymentTable;->access$getCREATE_TABLE$cp()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/InAppPaymentTable;->hasWaitingForAuth()Z -HSPLorg/thoughtcrime/securesms/database/JobDatabase$$ExternalSyntheticLambda0;->(Lorg/thoughtcrime/securesms/database/JobDatabase;)V -HSPLorg/thoughtcrime/securesms/database/JobDatabase$$ExternalSyntheticLambda0;->run()V HSPLorg/thoughtcrime/securesms/database/JobDatabase$Companion;->()V HSPLorg/thoughtcrime/securesms/database/JobDatabase$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/database/JobDatabase$Companion;->getInstance(Landroid/app/Application;)Lorg/thoughtcrime/securesms/database/JobDatabase; HSPLorg/thoughtcrime/securesms/database/JobDatabase$getMostEligibleJobInQueue$1;->(Lorg/thoughtcrime/securesms/database/JobDatabase;)V HSPLorg/thoughtcrime/securesms/database/JobDatabase$getMostEligibleJobInQueue$1;->invoke(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec; HSPLorg/thoughtcrime/securesms/database/JobDatabase$getMostEligibleJobInQueue$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; -HSPLorg/thoughtcrime/securesms/database/JobDatabase;->$r8$lambda$QG9gfPEt1nMVSr2ltzqu-cEwVes(Lorg/thoughtcrime/securesms/database/JobDatabase;)V HSPLorg/thoughtcrime/securesms/database/JobDatabase;->()V HSPLorg/thoughtcrime/securesms/database/JobDatabase;->(Landroid/app/Application;Lorg/thoughtcrime/securesms/crypto/DatabaseSecret;)V HSPLorg/thoughtcrime/securesms/database/JobDatabase;->access$getInstance$cp()Lorg/thoughtcrime/securesms/database/JobDatabase; HSPLorg/thoughtcrime/securesms/database/JobDatabase;->access$setInstance$cp(Lorg/thoughtcrime/securesms/database/JobDatabase;)V HSPLorg/thoughtcrime/securesms/database/JobDatabase;->access$toJobSpec(Lorg/thoughtcrime/securesms/database/JobDatabase;Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec; HSPLorg/thoughtcrime/securesms/database/JobDatabase;->deleteJobs(Ljava/util/List;)V -HSPLorg/thoughtcrime/securesms/database/JobDatabase;->dropTableIfPresent(Ljava/lang/String;)V HSPLorg/thoughtcrime/securesms/database/JobDatabase;->getAllDependencySpecs()Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/JobDatabase;->getAllMinimalJobSpecs()Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/JobDatabase;->getConstraintSpecsForJobs(Ljava/util/Collection;)Ljava/util/List; @@ -28948,14 +29373,11 @@ HSPLorg/thoughtcrime/securesms/database/JobDatabase;->insertDependencySpecs(Lnet HSPLorg/thoughtcrime/securesms/database/JobDatabase;->insertJobSpec(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;Lorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;)V HSPLorg/thoughtcrime/securesms/database/JobDatabase;->insertJobs(Ljava/util/List;)V HSPLorg/thoughtcrime/securesms/database/JobDatabase;->markJobAsRunning(Ljava/lang/String;J)V -HSPLorg/thoughtcrime/securesms/database/JobDatabase;->onOpen$lambda$0(Lorg/thoughtcrime/securesms/database/JobDatabase;)V HSPLorg/thoughtcrime/securesms/database/JobDatabase;->onOpen(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;)V HSPLorg/thoughtcrime/securesms/database/JobDatabase;->toContentValues(Lorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;)Landroid/content/ContentValues; HSPLorg/thoughtcrime/securesms/database/JobDatabase;->toJobSpec(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec; HSPLorg/thoughtcrime/securesms/database/JobDatabase;->updateAllJobsToBePending()V HSPLorg/thoughtcrime/securesms/database/JobDatabase;->updateJobAfterRetry(Ljava/lang/String;JIJ[B)V -HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase$$ExternalSyntheticLambda0;->()V -HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase$$ExternalSyntheticLambda0;->run()V HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase$1;->()V HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase$Type;->$values()[Lorg/thoughtcrime/securesms/database/KeyValueDatabase$Type; HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase$Type;->()V @@ -28963,19 +29385,19 @@ HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase$Type;->(Ljava/lan HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase$Type;->fromId(I)Lorg/thoughtcrime/securesms/database/KeyValueDatabase$Type; HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase$Type;->getId()I HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase$Type;->values()[Lorg/thoughtcrime/securesms/database/KeyValueDatabase$Type; -HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase;->$r8$lambda$G2dZI_gAXkqExOGYLgmndIoi47k()V HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase;->()V HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase;->(Landroid/app/Application;Lorg/thoughtcrime/securesms/crypto/DatabaseSecret;)V HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase;->(Landroid/app/Application;Lorg/thoughtcrime/securesms/crypto/DatabaseSecret;Ljava/lang/String;)V HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase;->getDataSet()Lorg/thoughtcrime/securesms/keyvalue/KeyValueDataSet; HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase;->getInstance(Landroid/app/Application;)Lorg/thoughtcrime/securesms/database/KeyValueDatabase; -HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase;->lambda$onOpen$0()V HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase;->onOpen(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;)V HSPLorg/thoughtcrime/securesms/database/KeyValueDatabase;->writeDataSet(Lorg/thoughtcrime/securesms/keyvalue/KeyValueDataSet;Ljava/util/Collection;)V HSPLorg/thoughtcrime/securesms/database/KyberPreKeyTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/KyberPreKeyTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/database/KyberPreKeyTable$Companion;->getCREATE_INDEXES()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/KyberPreKeyTable;->()V HSPLorg/thoughtcrime/securesms/database/KyberPreKeyTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V +HSPLorg/thoughtcrime/securesms/database/KyberPreKeyTable;->access$getCREATE_INDEXES$cp()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/KyberPreKeyTable;->insert(Lorg/whispersystems/signalservice/api/push/ServiceId;ILorg/signal/libsignal/protocol/state/KyberPreKeyRecord;Z)V HSPLorg/thoughtcrime/securesms/database/KyberPreKeyTable;->toAccountId(Lorg/whispersystems/signalservice/api/push/ServiceId;)Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/LocalMetricsDatabase$Companion;->()V @@ -29020,7 +29442,6 @@ HSPLorg/thoughtcrime/securesms/database/LogDatabase$LogTable;->(Lorg/thoug HSPLorg/thoughtcrime/securesms/database/LogDatabase$LogTable;->getReadableDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; HSPLorg/thoughtcrime/securesms/database/LogDatabase$LogTable;->getSize(Ljava/lang/String;[Ljava/lang/String;)J HSPLorg/thoughtcrime/securesms/database/LogDatabase$LogTable;->getWritableDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; -HSPLorg/thoughtcrime/securesms/database/LogDatabase$LogTable;->insert(Ljava/util/List;J)V HSPLorg/thoughtcrime/securesms/database/LogDatabase$LogTable;->trimToSize()V HSPLorg/thoughtcrime/securesms/database/LogDatabase$anrs$2;->(Lorg/thoughtcrime/securesms/database/LogDatabase;)V HSPLorg/thoughtcrime/securesms/database/LogDatabase$crashes$2;->(Lorg/thoughtcrime/securesms/database/LogDatabase;)V @@ -29043,22 +29464,20 @@ HSPLorg/thoughtcrime/securesms/database/MediaTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/MediaTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/database/MediaTable;->()V HSPLorg/thoughtcrime/securesms/database/MediaTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V -HSPLorg/thoughtcrime/securesms/database/MegaphoneDatabase$$ExternalSyntheticLambda0;->()V -HSPLorg/thoughtcrime/securesms/database/MegaphoneDatabase$$ExternalSyntheticLambda0;->run()V -HSPLorg/thoughtcrime/securesms/database/MegaphoneDatabase;->$r8$lambda$Hn6TX4rnCrZWpQUu_qk_FiE0W94()V HSPLorg/thoughtcrime/securesms/database/MegaphoneDatabase;->()V HSPLorg/thoughtcrime/securesms/database/MegaphoneDatabase;->(Landroid/app/Application;Lorg/thoughtcrime/securesms/crypto/DatabaseSecret;)V HSPLorg/thoughtcrime/securesms/database/MegaphoneDatabase;->getAllAndDeleteMissing()Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/MegaphoneDatabase;->getInstance(Landroid/app/Application;)Lorg/thoughtcrime/securesms/database/MegaphoneDatabase; HSPLorg/thoughtcrime/securesms/database/MegaphoneDatabase;->insert(Ljava/util/Collection;)V -HSPLorg/thoughtcrime/securesms/database/MegaphoneDatabase;->lambda$onOpen$0()V HSPLorg/thoughtcrime/securesms/database/MegaphoneDatabase;->markFinished(Lorg/thoughtcrime/securesms/megaphone/Megaphones$Event;)V HSPLorg/thoughtcrime/securesms/database/MegaphoneDatabase;->markFirstVisible(Lorg/thoughtcrime/securesms/megaphone/Megaphones$Event;J)V HSPLorg/thoughtcrime/securesms/database/MegaphoneDatabase;->onOpen(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;)V HSPLorg/thoughtcrime/securesms/database/MentionTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/MentionTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/database/MentionTable$Companion;->getCREATE_INDEXES()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/MentionTable;->()V HSPLorg/thoughtcrime/securesms/database/MentionTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V +HSPLorg/thoughtcrime/securesms/database/MentionTable;->access$getCREATE_INDEXES$cp()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/MentionTable;->getMentionsForMessage(J)Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/MentionTable;->insert(JJLjava/util/Collection;)V HSPLorg/thoughtcrime/securesms/database/MentionUtil$$ExternalSyntheticLambda3;->(Landroid/content/Context;)V @@ -29124,10 +29543,8 @@ HSPLorg/thoughtcrime/securesms/database/MessageTable$MmsReader;->close()V HSPLorg/thoughtcrime/securesms/database/MessageTable$MmsReader;->getCurrent()Lorg/thoughtcrime/securesms/database/model/MessageRecord; HSPLorg/thoughtcrime/securesms/database/MessageTable$MmsReader;->getCursor()Landroid/database/Cursor; HSPLorg/thoughtcrime/securesms/database/MessageTable$MmsReader;->getFailures(Ljava/lang/String;)Ljava/util/Set; -HSPLorg/thoughtcrime/securesms/database/MessageTable$MmsReader;->getMediaMmsMessageRecord(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/database/model/MmsMessageRecord; HSPLorg/thoughtcrime/securesms/database/MessageTable$MmsReader;->getMismatchedIdentities(Ljava/lang/String;)Ljava/util/Set; HSPLorg/thoughtcrime/securesms/database/MessageTable$MmsReader;->getNext()Lorg/thoughtcrime/securesms/database/model/MessageRecord; -HSPLorg/thoughtcrime/securesms/database/MessageTable$MmsReader;->getQuote(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/database/model/Quote; HSPLorg/thoughtcrime/securesms/database/MessageTable$MmsReader;->iterator()Ljava/util/Iterator; HSPLorg/thoughtcrime/securesms/database/MessageTable$SyncMessageId;->()V HSPLorg/thoughtcrime/securesms/database/MessageTable$SyncMessageId;->(Lorg/thoughtcrime/securesms/recipients/RecipientId;J)V @@ -29161,6 +29578,7 @@ HSPLorg/thoughtcrime/securesms/database/MessageTable;->getUnreadMentionCount(J)I HSPLorg/thoughtcrime/securesms/database/MessageTable;->getUnreadStoryThreadRecipientIds()Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/MessageTable;->hasFailedOutgoingStory()Z HSPLorg/thoughtcrime/securesms/database/MessageTable;->hasMeaningfulMessage(J)Z +HSPLorg/thoughtcrime/securesms/database/MessageTable;->insertMediaMessage(JLjava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lorg/thoughtcrime/securesms/database/model/databaseprotos/BodyRangeList;Landroid/content/ContentValues;Lorg/thoughtcrime/securesms/database/MessageTable$InsertListener;ZZ)Lkotlin/Pair; HSPLorg/thoughtcrime/securesms/database/MessageTable;->insertMessageInbox$default(Lorg/thoughtcrime/securesms/database/MessageTable;Lorg/thoughtcrime/securesms/mms/IncomingMessage;JLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;ZILjava/lang/Object;)Lj$/util/Optional; HSPLorg/thoughtcrime/securesms/database/MessageTable;->mmsReaderFor(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/database/MessageTable$MmsReader; HSPLorg/thoughtcrime/securesms/database/MessageTable;->rawQueryWithAttachments$default(Lorg/thoughtcrime/securesms/database/MessageTable;Ljava/lang/String;[Ljava/lang/String;ZJILjava/lang/Object;)Landroid/database/Cursor; @@ -29217,8 +29635,15 @@ HSPLorg/thoughtcrime/securesms/database/MessageTypes$-CC;->isUnsupportedMessageT HSPLorg/thoughtcrime/securesms/database/MessageTypes;->()V HSPLorg/thoughtcrime/securesms/database/NameCollisionTables$Companion;->()V HSPLorg/thoughtcrime/securesms/database/NameCollisionTables$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/database/NameCollisionTables$Companion;->getCREATE_INDEXES()[Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/database/NameCollisionTables$Companion;->getCREATE_TABLE()[Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/database/NameCollisionTables$NameCollisionMembershipTable;->()V +HSPLorg/thoughtcrime/securesms/database/NameCollisionTables$NameCollisionMembershipTable;->()V +HSPLorg/thoughtcrime/securesms/database/NameCollisionTables$NameCollisionMembershipTable;->getCREATE_INDEXES()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/NameCollisionTables;->()V HSPLorg/thoughtcrime/securesms/database/NameCollisionTables;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V +HSPLorg/thoughtcrime/securesms/database/NameCollisionTables;->access$getCREATE_INDEXES$cp()[Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/database/NameCollisionTables;->access$getCREATE_TABLE$cp()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/NotificationProfileDatabase$Companion;->()V HSPLorg/thoughtcrime/securesms/database/NotificationProfileDatabase$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/database/NotificationProfileDatabase$NotificationProfileAllowedMembersTable;->()V @@ -29250,8 +29675,10 @@ HSPLorg/thoughtcrime/securesms/database/PaymentTable;->()V HSPLorg/thoughtcrime/securesms/database/PaymentTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V HSPLorg/thoughtcrime/securesms/database/PendingPniSignatureMessageTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/PendingPniSignatureMessageTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/database/PendingPniSignatureMessageTable$Companion;->getCREATE_INDEXES()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/PendingPniSignatureMessageTable;->()V HSPLorg/thoughtcrime/securesms/database/PendingPniSignatureMessageTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V +HSPLorg/thoughtcrime/securesms/database/PendingPniSignatureMessageTable;->access$getCREATE_INDEXES$cp()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/PendingRetryReceiptCache;->()V HSPLorg/thoughtcrime/securesms/database/PendingRetryReceiptCache;->()V HSPLorg/thoughtcrime/securesms/database/PendingRetryReceiptCache;->(Lorg/thoughtcrime/securesms/database/PendingRetryReceiptTable;)V @@ -29295,6 +29722,7 @@ HSPLorg/thoughtcrime/securesms/database/RecipientTable$$ExternalSyntheticLambda6 HSPLorg/thoughtcrime/securesms/database/RecipientTable$$ExternalSyntheticLambda6;->run()V HSPLorg/thoughtcrime/securesms/database/RecipientTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/RecipientTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/database/RecipientTable$Companion;->getCREATE_INDEXS()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/RecipientTable$Companion;->maskCapabilitiesToLong(Lorg/whispersystems/signalservice/api/profiles/SignalServiceProfile$Capabilities;)J HSPLorg/thoughtcrime/securesms/database/RecipientTable$GetOrInsertResult;->(Lorg/thoughtcrime/securesms/recipients/RecipientId;Z)V HSPLorg/thoughtcrime/securesms/database/RecipientTable$GetOrInsertResult;->getRecipientId()Lorg/thoughtcrime/securesms/recipients/RecipientId; @@ -29368,6 +29796,7 @@ HSPLorg/thoughtcrime/securesms/database/RecipientTable;->$r8$lambda$JXfW5Mk9kGUC HSPLorg/thoughtcrime/securesms/database/RecipientTable;->$r8$lambda$mINFFJ-egVgJ9tzzcXjQIqnTUyw(Lkotlin/jvm/internal/Ref$ObjectRef;)V HSPLorg/thoughtcrime/securesms/database/RecipientTable;->()V HSPLorg/thoughtcrime/securesms/database/RecipientTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V +HSPLorg/thoughtcrime/securesms/database/RecipientTable;->access$getCREATE_INDEXS$cp()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/RecipientTable;->buildContentValuesForNewUser(Ljava/lang/String;Lorg/whispersystems/signalservice/api/push/ServiceId$PNI;Lorg/whispersystems/signalservice/api/push/ServiceId$ACI;Z)Landroid/content/ContentValues; HSPLorg/thoughtcrime/securesms/database/RecipientTable;->getAndPossiblyMerge$default(Lorg/thoughtcrime/securesms/database/RecipientTable;Lorg/whispersystems/signalservice/api/push/ServiceId;Ljava/lang/String;ZILjava/lang/Object;)Lorg/thoughtcrime/securesms/recipients/RecipientId; HSPLorg/thoughtcrime/securesms/database/RecipientTable;->getAndPossiblyMerge$lambda$5$lambda$4(Lkotlin/jvm/internal/Ref$ObjectRef;)V @@ -29427,22 +29856,36 @@ HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->()V HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->getExtras(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/recipients/Recipient$Extras; HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->getRecipientExtras(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/database/model/databaseprotos/RecipientExtras; HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->getRecord(Landroid/content/Context;Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/database/model/RecipientRecord; +HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->getRecord(Landroid/content/Context;Landroid/database/Cursor;Ljava/lang/String;)Lorg/thoughtcrime/securesms/database/model/RecipientRecord; HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->getSyncExtras$lambda$6(Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)Ljava/lang/Boolean; +HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->getSyncExtras(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/database/model/RecipientRecord$SyncExtras; HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->parseBadgeList([B)Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/RemappedRecordTables$Companion;->()V HSPLorg/thoughtcrime/securesms/database/RemappedRecordTables$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/database/RemappedRecordTables$Companion;->getCREATE_TABLE()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/RemappedRecordTables;->()V HSPLorg/thoughtcrime/securesms/database/RemappedRecordTables;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V +HSPLorg/thoughtcrime/securesms/database/RemappedRecordTables;->access$getCREATE_TABLE$cp()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/RemoteMegaphoneTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/RemoteMegaphoneTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/database/RemoteMegaphoneTable$Companion;->getCREATE_TABLE()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/RemoteMegaphoneTable;->()V HSPLorg/thoughtcrime/securesms/database/RemoteMegaphoneTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V +HSPLorg/thoughtcrime/securesms/database/RemoteMegaphoneTable;->access$getCREATE_TABLE$cp()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/RemoteMegaphoneTable;->getPotentialMegaphonesAndClearOld(J)Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$$ExternalSyntheticLambda0;->(Lorg/thoughtcrime/securesms/database/RxDatabaseObserver$RxObserver;)V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$$ExternalSyntheticLambda1;->(Lkotlin/jvm/functions/Function1;)V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$$ExternalSyntheticLambda1;->subscribe(Lio/reactivex/rxjava3/core/FlowableEmitter;)V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$RxObserver;->(Lio/reactivex/rxjava3/core/Emitter;)V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$RxObserver;->prime()V +HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$chatFolders$2;->()V +HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$chatFolders$2;->()V +HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$chatFolders$2;->invoke()Lio/reactivex/rxjava3/core/Flowable; +HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$chatFolders$2;->invoke()Ljava/lang/Object; +HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$chatFoldersFlowable$1;->()V +HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$chatFoldersFlowable$1;->()V +HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$chatFoldersFlowable$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$chatFoldersFlowable$1;->invoke(Lorg/thoughtcrime/securesms/database/RxDatabaseObserver$RxObserver;)V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$conversationList$2;->()V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$conversationList$2;->()V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$conversationList$2;->invoke()Lio/reactivex/rxjava3/core/Flowable; @@ -29466,11 +29909,14 @@ HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$notificationProfilesF HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver;->$r8$lambda$Q-MHO-3EVj6lQ5qvnI2O-7YevNQ(Lkotlin/jvm/functions/Function1;Lio/reactivex/rxjava3/core/FlowableEmitter;)V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver;->()V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver;->()V +HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver;->access$chatFoldersFlowable(Lorg/thoughtcrime/securesms/database/RxDatabaseObserver;)Lio/reactivex/rxjava3/core/Flowable; HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver;->access$conversationListFlowable(Lorg/thoughtcrime/securesms/database/RxDatabaseObserver;)Lio/reactivex/rxjava3/core/Flowable; HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver;->access$notificationProfilesFlowable(Lorg/thoughtcrime/securesms/database/RxDatabaseObserver;)Lio/reactivex/rxjava3/core/Flowable; +HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver;->chatFoldersFlowable()Lio/reactivex/rxjava3/core/Flowable; HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver;->conversationListFlowable()Lio/reactivex/rxjava3/core/Flowable; HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver;->databaseFlowable$lambda$1(Lkotlin/jvm/functions/Function1;Lio/reactivex/rxjava3/core/FlowableEmitter;)V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver;->databaseFlowable(Lkotlin/jvm/functions/Function1;)Lio/reactivex/rxjava3/core/Flowable; +HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver;->getChatFolders()Lio/reactivex/rxjava3/core/Flowable; HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver;->getConversationList()Lio/reactivex/rxjava3/core/Flowable; HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver;->getNotificationProfiles()Lio/reactivex/rxjava3/core/Flowable; HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver;->notificationProfilesFlowable()Lio/reactivex/rxjava3/core/Flowable; @@ -29545,7 +29991,6 @@ HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->lambda$rawQuery$6(Ljava HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->lambda$replace$11(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)Ljava/lang/Long; HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->lambda$update$15(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/Integer; HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->lambda$updateWithOnConflict$16(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;I)Ljava/lang/Integer; -HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->query(Landroidx/sqlite/db/SupportSQLiteQuery;)Landroid/database/Cursor; HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/Object;)Landroid/database/Cursor; HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->rawQuery(Ljava/lang/String;[Ljava/lang/Object;)Landroid/database/Cursor; @@ -29554,6 +29999,9 @@ HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->replace(Ljava/lang/Stri HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->runPostSuccessfulTransaction(Ljava/lang/Runnable;)V HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->runPostSuccessfulTransaction(Ljava/lang/String;Ljava/lang/Runnable;)V HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->setTransactionSuccessful()V +HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->traceLockEnd()V +HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->traceLockStart()V +HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->traceSql(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLorg/thoughtcrime/securesms/database/SQLiteDatabase$Returnable;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->traceSql(Ljava/lang/String;Ljava/lang/String;ZLjava/lang/Runnable;)V HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->traceSql(Ljava/lang/String;Ljava/lang/String;ZLorg/thoughtcrime/securesms/database/SQLiteDatabase$Returnable;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->update(Ljava/lang/String;ILandroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/Object;)I @@ -29561,8 +30009,12 @@ HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->update(Ljava/lang/Strin HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->updateWithOnConflict(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;I)I HSPLorg/thoughtcrime/securesms/database/SearchTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/SearchTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/database/SearchTable$Companion;->getCREATE_TABLE()[Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/database/SearchTable$Companion;->getCREATE_TRIGGERS()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/SearchTable;->()V HSPLorg/thoughtcrime/securesms/database/SearchTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V +HSPLorg/thoughtcrime/securesms/database/SearchTable;->access$getCREATE_TABLE$cp()[Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/database/SearchTable;->access$getCREATE_TRIGGERS$cp()[Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/SenderKeySharedTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/SenderKeySharedTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/database/SenderKeySharedTable;->()V @@ -29583,13 +30035,13 @@ HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->(Lkotli HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->attachments()Lorg/thoughtcrime/securesms/database/AttachmentTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->avatarPicker()Lorg/thoughtcrime/securesms/database/model/AvatarPickerDatabase; HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->calls()Lorg/thoughtcrime/securesms/database/CallTable; +HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->chatFolders()Lorg/thoughtcrime/securesms/database/ChatFolderTables; HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->distributionLists()Lorg/thoughtcrime/securesms/database/DistributionListTables; HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->drafts()Lorg/thoughtcrime/securesms/database/DraftTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->emojiSearch()Lorg/thoughtcrime/securesms/database/EmojiSearchTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->getInstance()Lorg/thoughtcrime/securesms/database/SignalDatabase; HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->getRawDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->groups()Lorg/thoughtcrime/securesms/database/GroupTable; -HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->hasTable(Ljava/lang/String;)Z HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->identities()Lorg/thoughtcrime/securesms/database/IdentityTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->inAppPayments()Lorg/thoughtcrime/securesms/database/InAppPaymentTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->inTransaction()Z @@ -29604,6 +30056,7 @@ HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->pendingRetryR HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->recipients()Lorg/thoughtcrime/securesms/database/RecipientTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->remoteMegaphones()Lorg/thoughtcrime/securesms/database/RemoteMegaphoneTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->runPostSuccessfulTransaction(Ljava/lang/Runnable;)V +HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->runPostSuccessfulTransaction(Ljava/lang/String;Ljava/lang/Runnable;)V HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->senderKeyShared()Lorg/thoughtcrime/securesms/database/SenderKeySharedTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->senderKeys()Lorg/thoughtcrime/securesms/database/SenderKeyTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase$Companion;->sessions()Lorg/thoughtcrime/securesms/database/SessionTable; @@ -29617,9 +30070,11 @@ HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->access$setInstance$cp(L HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->attachments()Lorg/thoughtcrime/securesms/database/AttachmentTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->distributionLists()Lorg/thoughtcrime/securesms/database/DistributionListTables; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->emojiSearch()Lorg/thoughtcrime/securesms/database/EmojiSearchTable; +HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->executeStatements(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;[Ljava/lang/String;)V HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getAttachmentTable()Lorg/thoughtcrime/securesms/database/AttachmentTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getAvatarPickerDatabase()Lorg/thoughtcrime/securesms/database/model/AvatarPickerDatabase; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getCallTable()Lorg/thoughtcrime/securesms/database/CallTable; +HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getChatFoldersTable()Lorg/thoughtcrime/securesms/database/ChatFolderTables; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getDistributionListTables()Lorg/thoughtcrime/securesms/database/DistributionListTables; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getDraftTable()Lorg/thoughtcrime/securesms/database/DraftTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getEmojiSearchTable()Lorg/thoughtcrime/securesms/database/EmojiSearchTable; @@ -29633,7 +30088,6 @@ HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getMessageTable()Lorg/t HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getNotificationProfileDatabase()Lorg/thoughtcrime/securesms/database/NotificationProfileDatabase; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getPendingRetryReceiptTable()Lorg/thoughtcrime/securesms/database/PendingRetryReceiptTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getRawDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; -HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getRawReadableDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getRawWritableDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getRecipientTable()Lorg/thoughtcrime/securesms/database/RecipientTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getRemoteMegaphoneTable()Lorg/thoughtcrime/securesms/database/RemoteMegaphoneTable; @@ -29646,7 +30100,6 @@ HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getSignalWritableDataba HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getSignedPreKeyTable()Lorg/thoughtcrime/securesms/database/SignedPreKeyTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->getThreadTable()Lorg/thoughtcrime/securesms/database/ThreadTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->groups()Lorg/thoughtcrime/securesms/database/GroupTable; -HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->hasTable(Ljava/lang/String;)Z HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->identities()Lorg/thoughtcrime/securesms/database/IdentityTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->inTransaction()Z HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->init(Landroid/app/Application;Lorg/thoughtcrime/securesms/crypto/DatabaseSecret;Lorg/thoughtcrime/securesms/crypto/AttachmentSecret;)V @@ -29654,6 +30107,7 @@ HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->mentions()Lorg/thoughtc HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->messageLog()Lorg/thoughtcrime/securesms/database/MessageSendLogTables; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->messageSearch()Lorg/thoughtcrime/securesms/database/SearchTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->messages()Lorg/thoughtcrime/securesms/database/MessageTable; +HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->onCreate(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;)V HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->onOpen(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;)V HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->recipients()Lorg/thoughtcrime/securesms/database/RecipientTable; HSPLorg/thoughtcrime/securesms/database/SignalDatabase;->runPostSuccessfulTransaction(Ljava/lang/String;Ljava/lang/Runnable;)V @@ -29684,8 +30138,12 @@ HSPLorg/thoughtcrime/securesms/database/StickerTable;->()V HSPLorg/thoughtcrime/securesms/database/StickerTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;Lorg/thoughtcrime/securesms/crypto/AttachmentSecret;)V HSPLorg/thoughtcrime/securesms/database/StorySendTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/StorySendTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/database/StorySendTable$Companion;->getCREATE_INDEXS()[Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/database/StorySendTable$Companion;->getCREATE_TABLE()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/StorySendTable;->()V HSPLorg/thoughtcrime/securesms/database/StorySendTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V +HSPLorg/thoughtcrime/securesms/database/StorySendTable;->access$getCREATE_INDEXS$cp()[Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/database/StorySendTable;->access$getCREATE_TABLE$cp()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/ThreadBodyUtil$ThreadBody;->(Ljava/lang/CharSequence;ILjava/util/List;)V HSPLorg/thoughtcrime/securesms/database/ThreadBodyUtil$ThreadBody;->(Ljava/lang/CharSequence;Ljava/util/List;)V HSPLorg/thoughtcrime/securesms/database/ThreadBodyUtil$ThreadBody;->getBody()Ljava/lang/CharSequence; @@ -29694,7 +30152,6 @@ HSPLorg/thoughtcrime/securesms/database/ThreadBodyUtil;->format(Landroid/content HSPLorg/thoughtcrime/securesms/database/ThreadBodyUtil;->format(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/util/List;)Lorg/thoughtcrime/securesms/database/ThreadBodyUtil$ThreadBody; HSPLorg/thoughtcrime/securesms/database/ThreadBodyUtil;->getBody(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Lorg/thoughtcrime/securesms/database/ThreadBodyUtil$ThreadBody; HSPLorg/thoughtcrime/securesms/database/ThreadBodyUtil;->getFormattedBodyFor(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Lorg/thoughtcrime/securesms/database/ThreadBodyUtil$ThreadBody; -HSPLorg/thoughtcrime/securesms/database/ThreadBodyUtil;->getFormattedBodyForMms(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/model/MmsMessageRecord;Ljava/lang/CharSequence;)Lorg/thoughtcrime/securesms/database/ThreadBodyUtil$ThreadBody; HSPLorg/thoughtcrime/securesms/database/ThreadTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/ThreadTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/database/ThreadTable$Extra$Companion;->()V @@ -29725,7 +30182,6 @@ HSPLorg/thoughtcrime/securesms/database/ThreadTable$Reader;->(Lorg/thought HSPLorg/thoughtcrime/securesms/database/ThreadTable$StaticReader;->()V HSPLorg/thoughtcrime/securesms/database/ThreadTable$StaticReader;->(Landroid/database/Cursor;Landroid/content/Context;)V HSPLorg/thoughtcrime/securesms/database/ThreadTable$StaticReader;->close()V -HSPLorg/thoughtcrime/securesms/database/ThreadTable$StaticReader;->getCurrent()Lorg/thoughtcrime/securesms/database/model/ThreadRecord; HSPLorg/thoughtcrime/securesms/database/ThreadTable$StaticReader;->getNext()Lorg/thoughtcrime/securesms/database/model/ThreadRecord; HSPLorg/thoughtcrime/securesms/database/ThreadTable$StaticReader;->getSnippetUri(Landroid/database/Cursor;)Landroid/net/Uri; HSPLorg/thoughtcrime/securesms/database/ThreadTable$ThreadIdResult;->()V @@ -29742,30 +30198,34 @@ HSPLorg/thoughtcrime/securesms/database/ThreadTable;->createQuery(Ljava/lang/Str HSPLorg/thoughtcrime/securesms/database/ThreadTable;->createQuery(Ljava/lang/String;Ljava/lang/String;JJ)Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/ThreadTable;->createThreadForRecipient(Lorg/thoughtcrime/securesms/recipients/RecipientId;ZI)J HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getArchivedConversationListCount(Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;)I +HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getAttachmentUriFor(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Landroid/net/Uri; HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getContentTypeFor(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Ljava/lang/String; -HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getExtrasFor(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/ThreadBodyUtil$ThreadBody;)Lorg/thoughtcrime/securesms/database/ThreadTable$Extra; HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getOrCreateThreadIdFor(Lorg/thoughtcrime/securesms/recipients/Recipient;)J HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getOrCreateThreadIdFor(Lorg/thoughtcrime/securesms/recipients/Recipient;I)J HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getOrCreateThreadIdFor(Lorg/thoughtcrime/securesms/recipients/RecipientId;ZI)J HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getOrCreateThreadIdResultFor(Lorg/thoughtcrime/securesms/recipients/RecipientId;ZI)Lorg/thoughtcrime/securesms/database/ThreadTable$ThreadIdResult; -HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getPinnedConversationListCount(Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;)I +HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getPinnedConversationListCount$default(Lorg/thoughtcrime/securesms/database/ThreadTable;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;ILjava/lang/Object;)I +HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getPinnedConversationListCount(Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;)I HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getRecentConversationList(IZZ)Landroid/database/Cursor; HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getRecentConversationList(IZZZZZZ)Landroid/database/Cursor; HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getRecipientForThreadId(J)Lorg/thoughtcrime/securesms/recipients/Recipient; HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getRecipientIdForThreadId(J)Lorg/thoughtcrime/securesms/recipients/RecipientId; HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getThreadIdFor(Lorg/thoughtcrime/securesms/recipients/RecipientId;)Ljava/lang/Long; HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getThreadIdIfExistsFor(Lorg/thoughtcrime/securesms/recipients/RecipientId;)J -HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getUnarchivedConversationList(Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;ZJJ)Landroid/database/Cursor; -HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getUnarchivedConversationListCount(Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;)I +HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getUnarchivedConversationList(Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;ZJJLorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;)Landroid/database/Cursor; +HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getUnarchivedConversationListCount(Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;)I +HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getUnreadCountByChatFolder(Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;)I HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getUnreadMessageCount()J HSPLorg/thoughtcrime/securesms/database/ThreadTable;->hasMoreRecentDraft(JJ)Z HSPLorg/thoughtcrime/securesms/database/ThreadTable;->incrementUnread(JII)V HSPLorg/thoughtcrime/securesms/database/ThreadTable;->markAsActiveEarly(J)V HSPLorg/thoughtcrime/securesms/database/ThreadTable;->readerFor(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/database/ThreadTable$Reader; HSPLorg/thoughtcrime/securesms/database/ThreadTable;->setLastScrolled(JJ)V +HSPLorg/thoughtcrime/securesms/database/ThreadTable;->toQuery(Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;)Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/ThreadTable;->toQuery(Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;)Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/ThreadTable;->update$default(Lorg/thoughtcrime/securesms/database/ThreadTable;JZZILjava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/database/ThreadTable;->update(JZZ)Z +HSPLorg/thoughtcrime/securesms/database/ThreadTable;->update(JZZZZ)Z HSPLorg/thoughtcrime/securesms/database/UnknownStorageIdTable;->()V HSPLorg/thoughtcrime/securesms/database/UnknownStorageIdTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V HSPLorg/thoughtcrime/securesms/database/helpers/migration/V149_LegacyMigrations$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/NotificationManager;)Ljava/util/List; @@ -29888,6 +30348,7 @@ HSPLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails$Companion HSPLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;->()V HSPLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;->(JJ)V +HSPLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;->equals(Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;->getDiskCacheKeyBytes()[B HSPLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;->hashCode()I HSPLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;->toString()Ljava/lang/String; @@ -30009,6 +30470,7 @@ HSPLorg/thoughtcrime/securesms/database/model/ThreadRecord$Builder;->setUnreadCo HSPLorg/thoughtcrime/securesms/database/model/ThreadRecord$Builder;->setUnreadSelfMentionsCount(I)Lorg/thoughtcrime/securesms/database/model/ThreadRecord$Builder; HSPLorg/thoughtcrime/securesms/database/model/ThreadRecord;->(Lorg/thoughtcrime/securesms/database/model/ThreadRecord$Builder;)V HSPLorg/thoughtcrime/securesms/database/model/ThreadRecord;->(Lorg/thoughtcrime/securesms/database/model/ThreadRecord$Builder;Lorg/thoughtcrime/securesms/database/model/ThreadRecord-IA;)V +HSPLorg/thoughtcrime/securesms/database/model/ThreadRecord;->equals(Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/database/model/ThreadRecord;->getBody()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/database/model/ThreadRecord;->getBodyRanges()Lorg/thoughtcrime/securesms/database/model/databaseprotos/BodyRangeList; HSPLorg/thoughtcrime/securesms/database/model/ThreadRecord;->getDate()J @@ -30024,6 +30486,7 @@ HSPLorg/thoughtcrime/securesms/database/model/ThreadRecord;->getUnreadCount()I HSPLorg/thoughtcrime/securesms/database/model/ThreadRecord;->isArchived()Z HSPLorg/thoughtcrime/securesms/database/model/ThreadRecord;->isMessageRequestAccepted()Z HSPLorg/thoughtcrime/securesms/database/model/ThreadRecord;->isOutgoing()Z +HSPLorg/thoughtcrime/securesms/database/model/ThreadRecord;->isPinned()Z HSPLorg/thoughtcrime/securesms/database/model/ThreadRecord;->isRead()Z HSPLorg/thoughtcrime/securesms/database/model/ThreadRecord;->isScheduledMessage()Z HSPLorg/thoughtcrime/securesms/database/model/databaseprotos/InAppPaymentData$Error$Type$Companion$ADAPTER$1;->(Lkotlin/reflect/KClass;Lcom/squareup/wire/Syntax;Lorg/thoughtcrime/securesms/database/model/databaseprotos/InAppPaymentData$Error$Type;)V @@ -30432,7 +30895,6 @@ HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->buildEmojiSourceFromNode( HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->createPage(Ljava/lang/String;Ljava/lang/String;Lcom/fasterxml/jackson/databind/JsonNode;Lkotlin/jvm/functions/Function2;)Lorg/thoughtcrime/securesms/components/emoji/EmojiPageModel; HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->getDataPages$lambda$0(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Ljava/lang/Object;)I HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->getDataPages(Ljava/lang/String;Lcom/fasterxml/jackson/databind/JsonNode;Lkotlin/jvm/functions/Function2;)Ljava/util/List; -HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->getJumboPages(Lcom/fasterxml/jackson/databind/JsonNode;)Ljava/util/Map; HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->mergeToDisplayPages(Ljava/util/List;)Ljava/util/List; HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->parse-gIAlu-s(Ljava/io/InputStream;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParserKt;->access$asCategoryKey(Ljava/lang/String;)Ljava/lang/String; @@ -30570,6 +31032,7 @@ HSPLorg/thoughtcrime/securesms/fonts/FontFileMap;->()V HSPLorg/thoughtcrime/securesms/fonts/FontFileMap;->(Ljava/util/Map;)V HSPLorg/thoughtcrime/securesms/fonts/FontFileMap;->access$getObjectMapper$cp()Lcom/fasterxml/jackson/databind/ObjectMapper; HSPLorg/thoughtcrime/securesms/fonts/FontFileMap;->access$getTAG$cp()Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/fonts/FontFileMap;->copy(Ljava/util/Map;)Lorg/thoughtcrime/securesms/fonts/FontFileMap; HSPLorg/thoughtcrime/securesms/fonts/FontFileMap;->getMap()Ljava/util/Map; HSPLorg/thoughtcrime/securesms/fonts/FontManifest$Companion;->()V HSPLorg/thoughtcrime/securesms/fonts/FontManifest$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -30723,6 +31186,7 @@ HSPLorg/thoughtcrime/securesms/jobmanager/CompositeScheduler;->schedule(JLjava/u HSPLorg/thoughtcrime/securesms/jobmanager/Constraint$-CC;->$default$getJobSchedulerKeyPart(Lorg/thoughtcrime/securesms/jobmanager/Constraint;)Ljava/lang/String; HSPLorg/thoughtcrime/securesms/jobmanager/ConstraintInstantiator;->(Ljava/util/Map;)V HSPLorg/thoughtcrime/securesms/jobmanager/ConstraintInstantiator;->instantiate(Ljava/lang/String;)Lorg/thoughtcrime/securesms/jobmanager/Constraint; +HSPLorg/thoughtcrime/securesms/jobmanager/CoroutineJob;->()V HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler$$ExternalSyntheticLambda0;->(Lorg/thoughtcrime/securesms/jobmanager/InAppScheduler;)V HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler$$ExternalSyntheticLambda0;->run()V HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler;->$r8$lambda$0KH5iNLdy2DvUxriNkEuWXyJtWM(Lorg/thoughtcrime/securesms/jobmanager/InAppScheduler;)V @@ -30733,7 +31197,7 @@ HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler;->schedule(JLjava/util/ HSPLorg/thoughtcrime/securesms/jobmanager/Job$1;->()V HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder;->()V HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder;->(Ljava/lang/String;)V -HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder;->(Ljava/lang/String;JJIIILjava/lang/String;Ljava/util/List;[BZI)V +HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder;->(Ljava/lang/String;JJIIILjava/lang/String;Ljava/util/List;[BZII)V HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder;->addConstraint(Ljava/lang/String;)Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder; HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder;->build()Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters; HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder;->setConstraints(Ljava/util/List;)Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder; @@ -30744,17 +31208,18 @@ HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder;->setMaxAttempt HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder;->setMaxInstancesForFactory(I)Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder; HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder;->setMaxInstancesForQueue(I)Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder; HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder;->setQueue(Ljava/lang/String;)Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder; -HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters;->(Ljava/lang/String;JJIIILjava/lang/String;Ljava/util/List;[BZI)V -HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters;->(Ljava/lang/String;JJIIILjava/lang/String;Ljava/util/List;[BZILorg/thoughtcrime/securesms/jobmanager/Job$Parameters-IA;)V +HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters;->(Ljava/lang/String;JJIIILjava/lang/String;Ljava/util/List;[BZII)V +HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters;->(Ljava/lang/String;JJIIILjava/lang/String;Ljava/util/List;[BZIILorg/thoughtcrime/securesms/jobmanager/Job$Parameters-IA;)V HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters;->getConstraintKeys()Ljava/util/List; HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters;->getCreateTime()J +HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters;->getGlobalPriority()I HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters;->getId()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters;->getLifespan()J HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters;->getMaxAttempts()I HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters;->getMaxInstancesForFactory()I HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters;->getMaxInstancesForQueue()I -HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters;->getPriority()I HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters;->getQueue()Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters;->getQueuePriority()I HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters;->isMemoryOnly()Z HSPLorg/thoughtcrime/securesms/jobmanager/Job$Result$ResultType;->$values()[Lorg/thoughtcrime/securesms/jobmanager/Job$Result$ResultType; HSPLorg/thoughtcrime/securesms/jobmanager/Job$Result$ResultType;->()V @@ -30791,6 +31256,8 @@ HSPLorg/thoughtcrime/securesms/jobmanager/JobController$$ExternalSyntheticLambda HSPLorg/thoughtcrime/securesms/jobmanager/JobController$$ExternalSyntheticLambda0;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/jobmanager/JobController$$ExternalSyntheticLambda11;->()V HSPLorg/thoughtcrime/securesms/jobmanager/JobController$$ExternalSyntheticLambda11;->accept(Ljava/lang/Object;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobController$$ExternalSyntheticLambda12;->(Lorg/thoughtcrime/securesms/jobmanager/JobController$Callback;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobController$$ExternalSyntheticLambda12;->run()V HSPLorg/thoughtcrime/securesms/jobmanager/JobController$$ExternalSyntheticLambda13;->()V HSPLorg/thoughtcrime/securesms/jobmanager/JobController$$ExternalSyntheticLambda13;->apply(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/jobmanager/JobController$$ExternalSyntheticLambda14;->(Lorg/thoughtcrime/securesms/jobmanager/JobController;)V @@ -30853,22 +31320,26 @@ HSPLorg/thoughtcrime/securesms/jobmanager/JobInstantiator;->instantiate(Ljava/la HSPLorg/thoughtcrime/securesms/jobmanager/JobLogger;->()V HSPLorg/thoughtcrime/securesms/jobmanager/JobLogger;->()V HSPLorg/thoughtcrime/securesms/jobmanager/JobLogger;->format(Lorg/thoughtcrime/securesms/jobmanager/Job;Ljava/lang/String;)Ljava/lang/String; -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda11;->(Lorg/thoughtcrime/securesms/jobmanager/JobController;)V -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda11;->run()V +HSPLorg/thoughtcrime/securesms/jobmanager/JobLogger;->format(Lorg/thoughtcrime/securesms/jobmanager/Job;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda10;->(Lorg/thoughtcrime/securesms/jobmanager/JobManager;Lorg/thoughtcrime/securesms/jobmanager/JobManager$Chain;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda10;->run()V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda12;->(Lorg/thoughtcrime/securesms/jobmanager/JobController;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda12;->run()V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda13;->(Lorg/thoughtcrime/securesms/jobmanager/JobManager;Lorg/thoughtcrime/securesms/jobmanager/JobManager$EmptyQueueListener;)V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda13;->run()V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda18;->(Lorg/thoughtcrime/securesms/jobmanager/JobManager;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda18;->run()V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda19;->(Lorg/thoughtcrime/securesms/jobmanager/JobManager;)V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda19;->run()V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda2;->()V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda4;->(Lorg/thoughtcrime/securesms/jobmanager/JobManager;Ljava/lang/Runnable;)V -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda4;->run()V -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda6;->()V -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda6;->shouldRunOnExecutor()Z -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda7;->(Lorg/thoughtcrime/securesms/jobmanager/JobManager;)V -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda8;->(Lorg/thoughtcrime/securesms/jobmanager/JobManager;Lorg/thoughtcrime/securesms/jobmanager/JobManager$Configuration;Landroid/app/Application;)V -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda8;->run()V -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda9;->(Lorg/thoughtcrime/securesms/jobmanager/JobManager;Lorg/thoughtcrime/securesms/jobmanager/JobManager$Chain;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda5;->(Lorg/thoughtcrime/securesms/jobmanager/JobManager;Ljava/lang/Runnable;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda5;->run()V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda7;->()V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda7;->shouldRunOnExecutor()Z +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda8;->(Lorg/thoughtcrime/securesms/jobmanager/JobManager;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda8;->onEmpty()V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda9;->(Lorg/thoughtcrime/securesms/jobmanager/JobManager;Lorg/thoughtcrime/securesms/jobmanager/JobManager$Configuration;Landroid/app/Application;)V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda9;->run()V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$Chain;->(Lorg/thoughtcrime/securesms/jobmanager/JobManager;Ljava/util/List;)V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$Chain;->enqueue()V @@ -30894,12 +31365,15 @@ HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$Configuration;->getJobStora HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$Configuration;->getJobThreadCount()I HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$Configuration;->getJobTracker()Lorg/thoughtcrime/securesms/jobmanager/JobTracker; HSPLorg/thoughtcrime/securesms/jobmanager/JobManager$Configuration;->getReservedJobRunners()Ljava/util/List; -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->$r8$lambda$4JJHrJTTxDi7E4hxKAg_02mqi-A(Lorg/thoughtcrime/securesms/jobmanager/JobManager;)V -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->$r8$lambda$dOaoyApbi-emSzM8ubj7rk8lick(Lorg/thoughtcrime/securesms/jobmanager/JobManager;Lorg/thoughtcrime/securesms/jobmanager/JobManager$EmptyQueueListener;)V -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->$r8$lambda$fs9mjzdPoak0N33jgbXldhjhsgo(Lorg/thoughtcrime/securesms/jobmanager/JobManager;Lorg/thoughtcrime/securesms/jobmanager/JobManager$Configuration;Landroid/app/Application;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->$r8$lambda$5MCytohoZMTu0amyU_AepCgWC58(Lorg/thoughtcrime/securesms/jobmanager/JobManager;Lorg/thoughtcrime/securesms/jobmanager/JobManager$Chain;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->$r8$lambda$85LmNexRgNyavzXKYnZRZzbo2OM(Lorg/thoughtcrime/securesms/jobmanager/JobManager;Ljava/lang/Runnable;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->$r8$lambda$I4fiEevNy45-v8vZWBFdV5Aed00(Lorg/thoughtcrime/securesms/jobmanager/JobManager;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->$r8$lambda$Nx92yx6XLq9eUfEY4_OOUhJGfxU(Lorg/thoughtcrime/securesms/jobmanager/JobManager;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->$r8$lambda$O7YLSgqZSskRHEMffz0g8GNHnmk(Lorg/thoughtcrime/securesms/jobmanager/JobManager;Lorg/thoughtcrime/securesms/jobmanager/JobManager$Configuration;Landroid/app/Application;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->$r8$lambda$SiKOmgTA1xzWr13KNtwvTJp-j1U(Lorg/thoughtcrime/securesms/jobmanager/JobManager;Lorg/thoughtcrime/securesms/jobmanager/JobManager$EmptyQueueListener;)V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->$r8$lambda$gVhLLB-m3Oyfo4j7A2GugXdBKLA(Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec;)Z -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->$r8$lambda$hjGGJSJxjousDNfIU6IzLFzivSk(Lorg/thoughtcrime/securesms/jobmanager/JobManager;Lorg/thoughtcrime/securesms/jobmanager/JobManager$Chain;)V -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->$r8$lambda$xUXumT2c8sBYgvbmLPreFpbEpV0(Lorg/thoughtcrime/securesms/jobmanager/JobManager;Ljava/lang/Runnable;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->$r8$lambda$rL6pC70vZRybajVNYxOy7VpjYEs()Z +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->$r8$lambda$zv5kjLTlYV8_FHBWN5R16rnvwBc(Lorg/thoughtcrime/securesms/jobmanager/JobManager;)V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->-$$Nest$menqueueChain(Lorg/thoughtcrime/securesms/jobmanager/JobManager;Lorg/thoughtcrime/securesms/jobmanager/JobManager$Chain;)V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->()V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->(Landroid/app/Application;Lorg/thoughtcrime/securesms/jobmanager/JobManager$Configuration;)V @@ -30907,13 +31381,16 @@ HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->add(Lorg/thoughtcrime/sec HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->addOnEmptyQueueListener(Lorg/thoughtcrime/securesms/jobmanager/JobManager$EmptyQueueListener;)V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->beginJobLoop()V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->enqueueChain(Lorg/thoughtcrime/securesms/jobmanager/JobManager$Chain;)V -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->lambda$addOnEmptyQueueListener$12(Lorg/thoughtcrime/securesms/jobmanager/JobManager$EmptyQueueListener;)V -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->lambda$beginJobLoop$2()V -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->lambda$enqueueChain$14(Lorg/thoughtcrime/securesms/jobmanager/JobManager$Chain;)V -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->lambda$new$1(Lorg/thoughtcrime/securesms/jobmanager/JobManager$Configuration;Landroid/app/Application;)V -HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->lambda$runOnExecutor$16(Ljava/lang/Runnable;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->lambda$addOnEmptyQueueListener$13(Lorg/thoughtcrime/securesms/jobmanager/JobManager$EmptyQueueListener;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->lambda$beginJobLoop$3()V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->lambda$enqueueChain$15(Lorg/thoughtcrime/securesms/jobmanager/JobManager$Chain;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->lambda$new$1()Z +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->lambda$new$2(Lorg/thoughtcrime/securesms/jobmanager/JobManager$Configuration;Landroid/app/Application;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->lambda$onEmptyQueue$16()V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->lambda$runOnExecutor$17(Ljava/lang/Runnable;)V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->lambda$static$0(Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec;)Z HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->onConstraintMet(Ljava/lang/String;)V +HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->onEmptyQueue()V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->runOnExecutor(Ljava/lang/Runnable;)V HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->startChain(Lorg/thoughtcrime/securesms/jobmanager/Job;)Lorg/thoughtcrime/securesms/jobmanager/JobManager$Chain; HSPLorg/thoughtcrime/securesms/jobmanager/JobManager;->waitUntilInitialized()V @@ -30989,13 +31466,14 @@ HSPLorg/thoughtcrime/securesms/jobmanager/impl/AutoDownloadEmojiConstraint;->get HSPLorg/thoughtcrime/securesms/jobmanager/impl/AutoDownloadEmojiConstraint;->getJobSchedulerKeyPart()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/jobmanager/impl/AutoDownloadEmojiConstraint;->isMet()Z HSPLorg/thoughtcrime/securesms/jobmanager/impl/BackoffUtil;->exponentialBackoff(IJ)J +HSPLorg/thoughtcrime/securesms/jobmanager/impl/BatteryNotLowConstraint$Factory;->()V +HSPLorg/thoughtcrime/securesms/jobmanager/impl/BatteryNotLowConstraint$Factory;->()V HSPLorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver$LegacyServiceStateListener;->(Lorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver;)V HSPLorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver$ServiceStateListenerApi31;->(Lorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver;)V HSPLorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver$ServiceStateListenerApi31;->(Lorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver;Lorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver$ServiceStateListenerApi31-IA;)V HSPLorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver$ServiceStateListenerApi31;->onServiceStateChanged(Landroid/telephony/ServiceState;)V HSPLorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver;->-$$Nest$fgetnotifier(Lorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver;)Lorg/thoughtcrime/securesms/jobmanager/ConstraintObserver$Notifier; HSPLorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver;->-$$Nest$fputlastKnownState(Lorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver;Landroid/telephony/ServiceState;)V -HSPLorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver;->-$$Nest$sfgetREASON()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver;->-$$Nest$sfgetTAG()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver;->()V HSPLorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver;->(Landroid/app/Application;)V @@ -31006,16 +31484,21 @@ HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChangeNumberConstraint$Factory;-> HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChangeNumberConstraintObserver;->()V HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChangeNumberConstraintObserver;->()V HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChangeNumberConstraintObserver;->register(Lorg/thoughtcrime/securesms/jobmanager/ConstraintObserver$Notifier;)V +HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingAndBatteryIsNotLowConstraintObserver$1;->(Lorg/thoughtcrime/securesms/jobmanager/impl/ChargingAndBatteryIsNotLowConstraintObserver;Lorg/thoughtcrime/securesms/jobmanager/ConstraintObserver$Notifier;)V +HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingAndBatteryIsNotLowConstraintObserver$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingAndBatteryIsNotLowConstraintObserver;->-$$Nest$sfgetREASON()Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingAndBatteryIsNotLowConstraintObserver;->-$$Nest$sfgetbatteryNotLow()Z +HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingAndBatteryIsNotLowConstraintObserver;->-$$Nest$sfgetcharging()Z +HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingAndBatteryIsNotLowConstraintObserver;->-$$Nest$sfputbatteryNotLow(Z)V +HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingAndBatteryIsNotLowConstraintObserver;->-$$Nest$sfputcharging(Z)V +HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingAndBatteryIsNotLowConstraintObserver;->-$$Nest$smisBatteryNotLow(Landroid/content/Intent;)Z +HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingAndBatteryIsNotLowConstraintObserver;->-$$Nest$smisCharging(Landroid/content/Intent;)Z +HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingAndBatteryIsNotLowConstraintObserver;->()V +HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingAndBatteryIsNotLowConstraintObserver;->(Landroid/app/Application;)V +HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingAndBatteryIsNotLowConstraintObserver;->isBatteryNotLow(Landroid/content/Intent;)Z +HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingAndBatteryIsNotLowConstraintObserver;->isCharging(Landroid/content/Intent;)Z +HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingAndBatteryIsNotLowConstraintObserver;->register(Lorg/thoughtcrime/securesms/jobmanager/ConstraintObserver$Notifier;)V HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingConstraint$Factory;->()V -HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingConstraintObserver$1;->(Lorg/thoughtcrime/securesms/jobmanager/impl/ChargingConstraintObserver;Lorg/thoughtcrime/securesms/jobmanager/ConstraintObserver$Notifier;)V -HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingConstraintObserver$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V -HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingConstraintObserver;->-$$Nest$sfgetcharging()Z -HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingConstraintObserver;->-$$Nest$sfputcharging(Z)V -HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingConstraintObserver;->-$$Nest$smisCharging(Landroid/content/Intent;)Z -HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingConstraintObserver;->()V -HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingConstraintObserver;->(Landroid/app/Application;)V -HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingConstraintObserver;->isCharging(Landroid/content/Intent;)Z -HSPLorg/thoughtcrime/securesms/jobmanager/impl/ChargingConstraintObserver;->register(Lorg/thoughtcrime/securesms/jobmanager/ConstraintObserver$Notifier;)V HSPLorg/thoughtcrime/securesms/jobmanager/impl/DataRestoreConstraint$Factory;->()V HSPLorg/thoughtcrime/securesms/jobmanager/impl/DataRestoreConstraint$Factory;->()V HSPLorg/thoughtcrime/securesms/jobmanager/impl/DataRestoreConstraintObserver;->()V @@ -31109,18 +31592,19 @@ HSPLorg/thoughtcrime/securesms/jobmanager/persistence/FullSpec;->getDependencySp HSPLorg/thoughtcrime/securesms/jobmanager/persistence/FullSpec;->getJobSpec()Lorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec; HSPLorg/thoughtcrime/securesms/jobmanager/persistence/FullSpec;->isMemoryOnly()Z HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->()V -HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJJIIJ[B[BZZI)V -HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->copy$default(Lorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJJIIJ[B[BZZIILjava/lang/Object;)Lorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec; -HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->copy(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJJIIJ[B[BZZI)Lorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec; +HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJJIIJ[B[BZZII)V +HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->copy$default(Lorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJJIIJ[B[BZZIIILjava/lang/Object;)Lorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec; +HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->copy(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJJIIJ[B[BZZII)Lorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec; HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->getCreateTime()J HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->getFactoryKey()Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->getGlobalPriority()I HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->getId()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->getLastRunAttemptTime()J HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->getLifespan()J HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->getMaxAttempts()I HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->getNextBackoffInterval()J -HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->getPriority()I HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->getQueueKey()Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->getQueuePriority()I HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->getRunAttempt()I HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->getSerializedData()[B HSPLorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec;->getSerializedInputData()[B @@ -31172,12 +31656,21 @@ HSPLorg/thoughtcrime/securesms/jobs/AvatarGroupsV1DownloadJob$Factory;->() HSPLorg/thoughtcrime/securesms/jobs/AvatarGroupsV2DownloadJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/BackfillDigestJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/BackfillDigestJob$Factory;->()V +HSPLorg/thoughtcrime/securesms/jobs/BackfillDigestsForDataFileJob$Factory;->()V +HSPLorg/thoughtcrime/securesms/jobs/BackfillDigestsForDataFileJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/BackupMessagesJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/BackupMessagesJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/BackupRestoreJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/BackupRestoreJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/BackupRestoreMediaJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/BackupRestoreMediaJob$Factory;->()V +HSPLorg/thoughtcrime/securesms/jobs/BackupSubscriptionCheckJob$Companion;->()V +HSPLorg/thoughtcrime/securesms/jobs/BackupSubscriptionCheckJob$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/jobs/BackupSubscriptionCheckJob$Companion;->enqueueIfAble()V +HSPLorg/thoughtcrime/securesms/jobs/BackupSubscriptionCheckJob$Factory;->()V +HSPLorg/thoughtcrime/securesms/jobs/BackupSubscriptionCheckJob$Factory;->()V +HSPLorg/thoughtcrime/securesms/jobs/BackupSubscriptionCheckJob;->()V +HSPLorg/thoughtcrime/securesms/jobs/BackupSubscriptionCheckJob;->enqueueIfAble()V HSPLorg/thoughtcrime/securesms/jobs/BaseJob;->()V HSPLorg/thoughtcrime/securesms/jobs/BaseJob;->(Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters;)V HSPLorg/thoughtcrime/securesms/jobs/BaseJob;->getNextRunAttemptBackoff(ILjava/lang/Exception;)J @@ -31230,6 +31723,8 @@ HSPLorg/thoughtcrime/securesms/jobs/CreateReleaseChannelJob;->getFactoryKey()Lja HSPLorg/thoughtcrime/securesms/jobs/CreateReleaseChannelJob;->onRun()V HSPLorg/thoughtcrime/securesms/jobs/CreateReleaseChannelJob;->serialize()[B HSPLorg/thoughtcrime/securesms/jobs/CreateReleaseChannelJob;->setAvatar(Lorg/thoughtcrime/securesms/recipients/RecipientId;)V +HSPLorg/thoughtcrime/securesms/jobs/DeleteAbandonedAttachmentsJob$Factory;->()V +HSPLorg/thoughtcrime/securesms/jobs/DeleteAbandonedAttachmentsJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/DirectoryRefreshJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/DirectoryRefreshJob$Factory;->create(Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters;[B)Lorg/thoughtcrime/securesms/jobmanager/Job; HSPLorg/thoughtcrime/securesms/jobs/DirectoryRefreshJob$Factory;->create(Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters;[B)Lorg/thoughtcrime/securesms/jobs/DirectoryRefreshJob; @@ -31312,6 +31807,8 @@ HSPLorg/thoughtcrime/securesms/jobs/ExternalLaunchDonationJob$Factory;->() HSPLorg/thoughtcrime/securesms/jobs/FailingJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$$ExternalSyntheticLambda1;->(Lkotlin/jvm/functions/Function1;)V HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z +HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$$ExternalSyntheticLambda2;->(Lkotlin/jvm/functions/Function1;)V +HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$$ExternalSyntheticLambda3;->(Lkotlin/jvm/functions/Function1;)V HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$$ExternalSyntheticLambda4;->(Lkotlin/jvm/functions/Function1;)V @@ -31346,6 +31843,9 @@ HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$markJobAsRunning$1;->invoke(L HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$markJobAsRunning$2;->(J)V HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$markJobAsRunning$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$markJobAsRunning$2;->invoke(Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec;)Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec; +HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$placeJobInEligibleList$1$1;->(Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec;)V +HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$placeJobInEligibleList$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$placeJobInEligibleList$1$1;->invoke(Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec;)Ljava/lang/Boolean; HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$replaceJobInEligibleList$2;->(Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec;)V HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$replaceJobInEligibleList$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$replaceJobInEligibleList$2;->invoke(Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec;)Ljava/lang/Boolean; @@ -31361,7 +31861,8 @@ HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$updateJobAfterRetry$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage$updateJobAfterRetry$2;->invoke(Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec;)Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec; HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->$r8$lambda$DnPsmD4KME6p-eCjMV1KYuzoJTU(Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)Z -HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->$r8$lambda$hFZUtsLVmB-60DjhFd86s3LIq2A(Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)Z +HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->$r8$lambda$KBIPyzUPCn5TYHPpIoGoyoEpv0s(Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)Z +HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->$r8$lambda$aG9BR_CjcvYUWWPD87qxudOl4Kg(Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->$r8$lambda$vnmFAlA-0szExhp1DFO8bQ9rr2U(Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->()V HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->(Lorg/thoughtcrime/securesms/database/JobDatabase;)V @@ -31382,8 +31883,9 @@ HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->hasEligibleRunTime(Lorg/tho HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->init()V HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->insertJobs(Ljava/util/List;)V HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->markJobAsRunning(Ljava/lang/String;J)V +HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->placeJobInEligibleList$lambda$31$lambda$30(Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->placeJobInEligibleList(Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec;)V -HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->replaceJobInEligibleList$lambda$32(Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)Z +HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->replaceJobInEligibleList$lambda$33(Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->replaceJobInEligibleList(Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec;Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec;)V HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->toJobSpec(Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec;)Lorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec; HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->updateAllJobsToBePending()V @@ -31497,17 +31999,18 @@ HSPLorg/thoughtcrime/securesms/jobs/MarkNoteToSelfAttachmentUploadedJob$Factory; HSPLorg/thoughtcrime/securesms/jobs/MarkerJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/MessageFetchJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->()V -HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJJIZZ)V -HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->copy$default(Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJJIZZILjava/lang/Object;)Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec; -HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->copy(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJJIZZ)Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec; +HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJJIIZZ)V +HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->copy$default(Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJJIIZZILjava/lang/Object;)Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec; +HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->copy(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJJIIZZ)Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec; HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->equals(Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->getCreateTime()J HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->getFactoryKey()Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->getGlobalPriority()I HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->getId()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->getLastRunAttemptTime()J HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->getNextBackoffInterval()J -HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->getPriority()I HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->getQueueKey()Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->getQueuePriority()I HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->hashCode()I HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->isMemoryOnly()Z HSPLorg/thoughtcrime/securesms/jobs/MinimalJobSpec;->isRunning()Z @@ -31653,8 +32156,13 @@ HSPLorg/thoughtcrime/securesms/jobs/RestoreAttachmentThumbnailJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/RestoreLocalAttachmentJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/RestoreLocalAttachmentJob$Factory;->()V +HSPLorg/thoughtcrime/securesms/jobs/RestoreOptimizedMediaJob$Companion;->()V +HSPLorg/thoughtcrime/securesms/jobs/RestoreOptimizedMediaJob$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/jobs/RestoreOptimizedMediaJob$Companion;->enqueueIfNecessary()V HSPLorg/thoughtcrime/securesms/jobs/RestoreOptimizedMediaJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/RestoreOptimizedMediaJob$Factory;->()V +HSPLorg/thoughtcrime/securesms/jobs/RestoreOptimizedMediaJob;->()V +HSPLorg/thoughtcrime/securesms/jobs/RestoreOptimizedMediaJob;->enqueueIfNecessary()V HSPLorg/thoughtcrime/securesms/jobs/ResumableUploadSpecJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/RetrieveProfileAvatarJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/RetrieveProfileJob$Companion;->()V @@ -31838,6 +32346,8 @@ HSPLorg/thoughtcrime/securesms/keyvalue/BackupValues$Companion;->()V HSPLorg/thoughtcrime/securesms/keyvalue/BackupValues$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/keyvalue/BackupValues;->()V HSPLorg/thoughtcrime/securesms/keyvalue/BackupValues;->(Lorg/thoughtcrime/securesms/keyvalue/KeyValueStore;)V +HSPLorg/thoughtcrime/securesms/keyvalue/BackupValues;->backsUpMedia()Z +HSPLorg/thoughtcrime/securesms/keyvalue/BackupValues;->getBackupTier()Lorg/thoughtcrime/securesms/backup/v2/MessageBackupTier; HSPLorg/thoughtcrime/securesms/keyvalue/BlobValue;->(Ljava/lang/String;[BLorg/thoughtcrime/securesms/keyvalue/KeyValueStore;)V HSPLorg/thoughtcrime/securesms/keyvalue/BooleanValue;->(Ljava/lang/String;ZLorg/thoughtcrime/securesms/keyvalue/KeyValueStore;)V HSPLorg/thoughtcrime/securesms/keyvalue/BooleanValue;->getValue$Signal_Android_playProdBenchmark(Lorg/thoughtcrime/securesms/keyvalue/KeyValueStore;)Ljava/lang/Boolean; @@ -31918,6 +32428,7 @@ HSPLorg/thoughtcrime/securesms/keyvalue/KeyValueDataSet;->putString(Ljava/lang/S HSPLorg/thoughtcrime/securesms/keyvalue/KeyValueDataSet;->readValueAsType(Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/keyvalue/KeyValueDataSet;->removeAll(Ljava/util/Collection;)V HSPLorg/thoughtcrime/securesms/keyvalue/KeyValueEnumValue;->(Ljava/lang/String;Ljava/lang/Object;Lorg/signal/core/util/LongSerializer;Lorg/thoughtcrime/securesms/keyvalue/KeyValueStore;)V +HSPLorg/thoughtcrime/securesms/keyvalue/KeyValueEnumValue;->getValue$Signal_Android_playProdBenchmark(Lorg/thoughtcrime/securesms/keyvalue/KeyValueStore;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/keyvalue/KeyValueProtoValue;->(Ljava/lang/String;Lcom/squareup/wire/ProtoAdapter;Lorg/thoughtcrime/securesms/keyvalue/KeyValueStore;)V HSPLorg/thoughtcrime/securesms/keyvalue/KeyValueProtoValue;->getValue$Signal_Android_playProdBenchmark(Lorg/thoughtcrime/securesms/keyvalue/KeyValueStore;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/keyvalue/KeyValueStore$$ExternalSyntheticLambda0;->(Lorg/thoughtcrime/securesms/keyvalue/KeyValueStore;Lorg/thoughtcrime/securesms/keyvalue/KeyValueDataSet;Ljava/util/Collection;)V @@ -32070,6 +32581,7 @@ HSPLorg/thoughtcrime/securesms/keyvalue/SettingsValues;->shouldKeepMutedChatsArc HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->()V HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->account()Lorg/thoughtcrime/securesms/keyvalue/AccountValues; +HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->backup()Lorg/thoughtcrime/securesms/keyvalue/BackupValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->chatColors()Lorg/thoughtcrime/securesms/keyvalue/ChatColorsValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->emoji()Lorg/thoughtcrime/securesms/keyvalue/EmojiValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->getNotificationProfile()Lorg/thoughtcrime/securesms/keyvalue/NotificationProfileValues; @@ -32097,6 +32609,7 @@ HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore;->access$setInstance$cp(Lorg HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore;->account()Lorg/thoughtcrime/securesms/keyvalue/AccountValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore;->emoji()Lorg/thoughtcrime/securesms/keyvalue/EmojiValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore;->getAccountValues()Lorg/thoughtcrime/securesms/keyvalue/AccountValues; +HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore;->getBackupValues()Lorg/thoughtcrime/securesms/keyvalue/BackupValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore;->getChatColorsValues()Lorg/thoughtcrime/securesms/keyvalue/ChatColorsValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore;->getEmojiValues()Lorg/thoughtcrime/securesms/keyvalue/EmojiValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore;->getInAppPaymentValues()Lorg/thoughtcrime/securesms/keyvalue/InAppPaymentValues; @@ -32129,6 +32642,7 @@ HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore;->settings()Lorg/thoughtcrim HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore;->storageService()Lorg/thoughtcrime/securesms/keyvalue/StorageServiceValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore;->svr()Lorg/thoughtcrime/securesms/keyvalue/SvrValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore;->uiHints()Lorg/thoughtcrime/securesms/keyvalue/UiHintValues; +HSPLorg/thoughtcrime/securesms/keyvalue/SignalStoreValueDelegate$flow$1;->(Lorg/thoughtcrime/securesms/keyvalue/SignalStoreValueDelegate;)V HSPLorg/thoughtcrime/securesms/keyvalue/SignalStoreValueDelegate;->()V HSPLorg/thoughtcrime/securesms/keyvalue/SignalStoreValueDelegate;->(Lorg/thoughtcrime/securesms/keyvalue/KeyValueStore;)V HSPLorg/thoughtcrime/securesms/keyvalue/SignalStoreValueDelegate;->(Lorg/thoughtcrime/securesms/keyvalue/KeyValueStore;Lkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -32219,7 +32733,6 @@ HSPLorg/thoughtcrime/securesms/logging/PersistentLogger$LogRequests;->blockForRe HSPLorg/thoughtcrime/securesms/logging/PersistentLogger$LogRequests;->notifyFlushed()V HSPLorg/thoughtcrime/securesms/logging/PersistentLogger$WriteThread;->(Lorg/thoughtcrime/securesms/logging/PersistentLogger$LogRequests;Lorg/thoughtcrime/securesms/database/LogDatabase;)V HSPLorg/thoughtcrime/securesms/logging/PersistentLogger$WriteThread;->formatBody(Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -HSPLorg/thoughtcrime/securesms/logging/PersistentLogger$WriteThread;->requestToEntries(Lorg/thoughtcrime/securesms/logging/PersistentLogger$LogRequest;)Ljava/util/List; HSPLorg/thoughtcrime/securesms/logging/PersistentLogger$WriteThread;->run()V HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->()V HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->(Landroid/app/Application;)V @@ -32570,6 +33083,8 @@ HSPLorg/thoughtcrime/securesms/migrations/AttachmentHashBackfillMigrationJob$Fac HSPLorg/thoughtcrime/securesms/migrations/AttributesMigrationJob$Factory;->()V HSPLorg/thoughtcrime/securesms/migrations/AvatarIdRemovalMigrationJob$Factory;->()V HSPLorg/thoughtcrime/securesms/migrations/AvatarMigrationJob$Factory;->()V +HSPLorg/thoughtcrime/securesms/migrations/BackfillDigestsForDuplicatesMigrationJob$Factory;->()V +HSPLorg/thoughtcrime/securesms/migrations/BackfillDigestsForDuplicatesMigrationJob$Factory;->()V HSPLorg/thoughtcrime/securesms/migrations/BackfillDigestsMigrationJob$Factory;->()V HSPLorg/thoughtcrime/securesms/migrations/BackfillDigestsMigrationJob$Factory;->()V HSPLorg/thoughtcrime/securesms/migrations/BackupJitterMigrationJob$Factory;->()V @@ -32637,6 +33152,8 @@ HSPLorg/thoughtcrime/securesms/migrations/UpdateSmsJobsMigrationJob$Factory;->()V HSPLorg/thoughtcrime/securesms/migrations/UserNotificationMigrationJob$Factory;->()V HSPLorg/thoughtcrime/securesms/migrations/UuidMigrationJob$Factory;->()V +HSPLorg/thoughtcrime/securesms/migrations/WallpaperCleanupMigrationJob$Factory;->()V +HSPLorg/thoughtcrime/securesms/migrations/WallpaperCleanupMigrationJob$Factory;->()V HSPLorg/thoughtcrime/securesms/migrations/WallpaperStorageMigrationJob$Factory;->()V HSPLorg/thoughtcrime/securesms/migrations/WallpaperStorageMigrationJob$Factory;->()V HSPLorg/thoughtcrime/securesms/mms/AttachmentStreamUriLoader$Factory;->()V @@ -32895,6 +33412,7 @@ HSPLorg/thoughtcrime/securesms/profiles/ProfileName;->$r8$lambda$89Je_6vi7AmVM-Z HSPLorg/thoughtcrime/securesms/profiles/ProfileName;->()V HSPLorg/thoughtcrime/securesms/profiles/ProfileName;->(Ljava/lang/String;Ljava/lang/String;)V HSPLorg/thoughtcrime/securesms/profiles/ProfileName;->asGiven(Ljava/lang/String;)Lorg/thoughtcrime/securesms/profiles/ProfileName; +HSPLorg/thoughtcrime/securesms/profiles/ProfileName;->equals(Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/profiles/ProfileName;->fromParts(Ljava/lang/String;Ljava/lang/String;)Lorg/thoughtcrime/securesms/profiles/ProfileName; HSPLorg/thoughtcrime/securesms/profiles/ProfileName;->getFamilyName()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/profiles/ProfileName;->getGivenName()Ljava/lang/String; @@ -33009,6 +33527,7 @@ HSPLorg/thoughtcrime/securesms/reactions/ReactionsConversationView;->(Land HSPLorg/thoughtcrime/securesms/reactions/ReactionsConversationView;->init(Landroid/util/AttributeSet;)V HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda0;->(Lorg/thoughtcrime/securesms/recipients/LiveRecipient;)V HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda1;->()V +HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda1;->contentsMatch(Ljava/lang/Object;Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda2;->()V HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda3;->()V @@ -33021,6 +33540,7 @@ HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient;->getId()Lorg/thoughtcri HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient;->getLiveData()Landroidx/lifecycle/LiveData; HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient;->lambda$new$2(Lorg/thoughtcrime/securesms/recipients/Recipient;Ljava/lang/Object;)Lorg/thoughtcrime/securesms/recipients/Recipient; HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient;->refresh()Lorg/thoughtcrime/securesms/recipients/LiveRecipient; +HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient;->refresh(Lorg/thoughtcrime/securesms/recipients/RecipientId;)V HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient;->resolve()Lorg/thoughtcrime/securesms/recipients/Recipient; HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient;->set(Lorg/thoughtcrime/securesms/recipients/Recipient;)V HSPLorg/thoughtcrime/securesms/recipients/LiveRecipientCache$$ExternalSyntheticLambda0;->(Lorg/thoughtcrime/securesms/recipients/LiveRecipientCache;)V @@ -33078,13 +33598,13 @@ HSPLorg/thoughtcrime/securesms/recipients/Recipient$HiddenState;->()V HSPLorg/thoughtcrime/securesms/recipients/Recipient$HiddenState;->(Ljava/lang/String;II)V HSPLorg/thoughtcrime/securesms/recipients/Recipient$callRingtone$2;->(Lorg/thoughtcrime/securesms/recipients/Recipient;)V HSPLorg/thoughtcrime/securesms/recipients/Recipient$combinedAboutAndEmoji$2;->(Lorg/thoughtcrime/securesms/recipients/Recipient;)V -HSPLorg/thoughtcrime/securesms/recipients/Recipient$filteredAbout$2;->(Lorg/thoughtcrime/securesms/recipients/Recipient;)V HSPLorg/thoughtcrime/securesms/recipients/Recipient$hasViewedStory$1;->()V HSPLorg/thoughtcrime/securesms/recipients/Recipient$hasViewedStory$1;->()V HSPLorg/thoughtcrime/securesms/recipients/Recipient$messageRingtone$2;->(Lorg/thoughtcrime/securesms/recipients/Recipient;)V HSPLorg/thoughtcrime/securesms/recipients/Recipient$shouldHideStory$1;->()V HSPLorg/thoughtcrime/securesms/recipients/Recipient$shouldHideStory$1;->()V HSPLorg/thoughtcrime/securesms/recipients/Recipient;->()V +HSPLorg/thoughtcrime/securesms/recipients/Recipient;->(Lorg/thoughtcrime/securesms/recipients/RecipientId;ZLorg/whispersystems/signalservice/api/push/ServiceId$ACI;Lorg/whispersystems/signalservice/api/push/ServiceId$PNI;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/thoughtcrime/securesms/groups/GroupId;Lorg/thoughtcrime/securesms/database/model/DistributionListId;Ljava/util/List;Lj$/util/Optional;ZZZJLorg/thoughtcrime/securesms/database/RecipientTable$VibrateState;Lorg/thoughtcrime/securesms/database/RecipientTable$VibrateState;Landroid/net/Uri;Landroid/net/Uri;IILorg/thoughtcrime/securesms/database/RecipientTable$RegisteredState;[BLorg/signal/libsignal/zkgroup/profiles/ExpiringProfileKeyCredential;Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/net/Uri;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;Lorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;ZLorg/thoughtcrime/securesms/recipients/Recipient$HiddenState;JLjava/lang/String;Lorg/thoughtcrime/securesms/database/RecipientTable$SealedSenderAccessMode;Lorg/thoughtcrime/securesms/database/model/RecipientRecord$Capabilities;[BLorg/thoughtcrime/securesms/database/RecipientTable$MentionSetting;Lorg/thoughtcrime/securesms/wallpaper/ChatWallpaper;Lorg/thoughtcrime/securesms/conversation/colors/ChatColors;Lorg/thoughtcrime/securesms/conversation/colors/AvatarColor;Ljava/lang/String;Ljava/lang/String;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;Lj$/util/Optional;ZLjava/util/List;ZZLorg/thoughtcrime/securesms/service/webrtc/links/CallLinkRoomId;Lj$/util/Optional;Lorg/thoughtcrime/securesms/database/RecipientTable$PhoneNumberSharingState;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;)V HSPLorg/thoughtcrime/securesms/recipients/Recipient;->(Lorg/thoughtcrime/securesms/recipients/RecipientId;ZLorg/whispersystems/signalservice/api/push/ServiceId$ACI;Lorg/whispersystems/signalservice/api/push/ServiceId$PNI;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/thoughtcrime/securesms/groups/GroupId;Lorg/thoughtcrime/securesms/database/model/DistributionListId;Ljava/util/List;Lj$/util/Optional;ZZZJLorg/thoughtcrime/securesms/database/RecipientTable$VibrateState;Lorg/thoughtcrime/securesms/database/RecipientTable$VibrateState;Landroid/net/Uri;Landroid/net/Uri;IILorg/thoughtcrime/securesms/database/RecipientTable$RegisteredState;[BLorg/signal/libsignal/zkgroup/profiles/ExpiringProfileKeyCredential;Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/net/Uri;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;Lorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;ZLorg/thoughtcrime/securesms/recipients/Recipient$HiddenState;JLjava/lang/String;Lorg/thoughtcrime/securesms/database/RecipientTable$SealedSenderAccessMode;Lorg/thoughtcrime/securesms/database/model/RecipientRecord$Capabilities;[BLorg/thoughtcrime/securesms/database/RecipientTable$MentionSetting;Lorg/thoughtcrime/securesms/wallpaper/ChatWallpaper;Lorg/thoughtcrime/securesms/conversation/colors/ChatColors;Lorg/thoughtcrime/securesms/conversation/colors/AvatarColor;Ljava/lang/String;Ljava/lang/String;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;Lj$/util/Optional;ZLjava/util/List;ZZLorg/thoughtcrime/securesms/service/webrtc/links/CallLinkRoomId;Lj$/util/Optional;Lorg/thoughtcrime/securesms/database/RecipientTable$PhoneNumberSharingState;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;IILkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/recipients/Recipient;->access$getTAG$cp()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/recipients/Recipient;->equals(Ljava/lang/Object;)Z @@ -33112,6 +33632,7 @@ HSPLorg/thoughtcrime/securesms/recipients/Recipient;->getShouldBlurAvatar()Z HSPLorg/thoughtcrime/securesms/recipients/Recipient;->getShouldHideStory()Z HSPLorg/thoughtcrime/securesms/recipients/Recipient;->getShowVerified()Z HSPLorg/thoughtcrime/securesms/recipients/Recipient;->getWallpaper()Lorg/thoughtcrime/securesms/wallpaper/ChatWallpaper; +HSPLorg/thoughtcrime/securesms/recipients/Recipient;->hasSameContent(Lorg/thoughtcrime/securesms/recipients/Recipient;)Z HSPLorg/thoughtcrime/securesms/recipients/Recipient;->hashCode()I HSPLorg/thoughtcrime/securesms/recipients/Recipient;->isBlocked()Z HSPLorg/thoughtcrime/securesms/recipients/Recipient;->isDistributionList()Z @@ -33140,17 +33661,16 @@ HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator$create$2;->() HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator$create$2;->()V HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->()V HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->()V +HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->create(ZLjava/lang/String;Ljava/lang/String;ZLorg/thoughtcrime/securesms/database/RecipientTable$RegisteredState;Lorg/thoughtcrime/securesms/database/model/RecipientRecord;Ljava/util/List;ZLorg/thoughtcrime/securesms/conversation/colors/AvatarColor;Lj$/util/Optional;)Lorg/thoughtcrime/securesms/recipients/Recipient; HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->forId$default(Lorg/thoughtcrime/securesms/recipients/RecipientId;ZILjava/lang/Object;)Lorg/thoughtcrime/securesms/recipients/Recipient; HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->forId(Lorg/thoughtcrime/securesms/recipients/RecipientId;)Lorg/thoughtcrime/securesms/recipients/Recipient; HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->forId(Lorg/thoughtcrime/securesms/recipients/RecipientId;Z)Lorg/thoughtcrime/securesms/recipients/Recipient; -HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->forIndividual(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/model/RecipientRecord;)Lorg/thoughtcrime/securesms/recipients/Recipient; HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->forRecord(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/model/RecipientRecord;)Lorg/thoughtcrime/securesms/recipients/Recipient; HSPLorg/thoughtcrime/securesms/recipients/RecipientId$1;->()V HSPLorg/thoughtcrime/securesms/recipients/RecipientId$Serializer;->()V HSPLorg/thoughtcrime/securesms/recipients/RecipientId$Serializer;->(Lorg/thoughtcrime/securesms/recipients/RecipientId$Serializer-IA;)V HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->()V HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->(J)V -HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->equals(Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->from(J)Lorg/thoughtcrime/securesms/recipients/RecipientId; HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->from(Ljava/lang/String;)Lorg/thoughtcrime/securesms/recipients/RecipientId; HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->from(Lorg/whispersystems/signalservice/api/push/ServiceId;)Lorg/thoughtcrime/securesms/recipients/RecipientId; @@ -33594,6 +34114,7 @@ HSPLorg/thoughtcrime/securesms/util/DateUtils;->isNow(J)Z HSPLorg/thoughtcrime/securesms/util/DateUtils;->isWithin-HG0u8IE(JJ)Z HSPLorg/thoughtcrime/securesms/util/Debouncer;->(J)V HSPLorg/thoughtcrime/securesms/util/Debouncer;->(JLjava/util/concurrent/TimeUnit;)V +HSPLorg/thoughtcrime/securesms/util/Debouncer;->publish(Ljava/lang/Runnable;)V HSPLorg/thoughtcrime/securesms/util/DefaultValueLiveData;->(Ljava/lang/Object;)V HSPLorg/thoughtcrime/securesms/util/DefaultValueLiveData;->getValue()Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/util/Deferred;->()V @@ -33743,6 +34264,7 @@ HSPLorg/thoughtcrime/securesms/util/NameUtil;->getAbbreviation(Ljava/lang/String HSPLorg/thoughtcrime/securesms/util/NetworkUtil;->getNetworkInfo(Landroid/content/Context;)Landroid/net/NetworkInfo; HSPLorg/thoughtcrime/securesms/util/NetworkUtil;->isConnected(Landroid/content/Context;)Z HSPLorg/thoughtcrime/securesms/util/NetworkUtil;->isConnectedWifi(Landroid/content/Context;)Z +HSPLorg/thoughtcrime/securesms/util/NoCrossfadeChangeDefaultAnimator;->()V HSPLorg/thoughtcrime/securesms/util/ProfileUtil$$ExternalSyntheticLambda0;->(Lorg/thoughtcrime/securesms/recipients/Recipient;)V HSPLorg/thoughtcrime/securesms/util/ProfileUtil$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/util/ProfileUtil$$ExternalSyntheticLambda1;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/recipients/Recipient;)V @@ -34033,6 +34555,7 @@ HSPLorg/thoughtcrime/securesms/util/WindowUtil;->setStatusBarColor(Landroid/view HSPLorg/thoughtcrime/securesms/util/adapter/mapping/LayoutFactory;->(Lj$/util/function/Function;I)V HSPLorg/thoughtcrime/securesms/util/adapter/mapping/MappingAdapter;->()V HSPLorg/thoughtcrime/securesms/util/adapter/mapping/MappingAdapter;->(Z)V +HSPLorg/thoughtcrime/securesms/util/adapter/mapping/MappingAdapter;->onAttachedToRecyclerView(Landroidx/recyclerview/widget/RecyclerView;)V HSPLorg/thoughtcrime/securesms/util/adapter/mapping/MappingAdapter;->registerFactory(Ljava/lang/Class;Lorg/thoughtcrime/securesms/util/adapter/mapping/Factory;)V HSPLorg/thoughtcrime/securesms/util/adapter/mapping/MappingDiffCallback;->()V HSPLorg/thoughtcrime/securesms/util/adapter/mapping/MappingModelList;->(Ljava/util/Collection;)V @@ -34307,6 +34830,10 @@ HSPLorg/whispersystems/signalservice/api/profiles/SignalServiceProfile$Capabilit HSPLorg/whispersystems/signalservice/api/profiles/SignalServiceProfile$RequestType;->$values()[Lorg/whispersystems/signalservice/api/profiles/SignalServiceProfile$RequestType; HSPLorg/whispersystems/signalservice/api/profiles/SignalServiceProfile$RequestType;->()V HSPLorg/whispersystems/signalservice/api/profiles/SignalServiceProfile$RequestType;->(Ljava/lang/String;I)V +HSPLorg/whispersystems/signalservice/api/push/DistributionId;->()V +HSPLorg/whispersystems/signalservice/api/push/DistributionId;->(Ljava/util/UUID;)V +HSPLorg/whispersystems/signalservice/api/push/DistributionId;->from(Ljava/lang/String;)Lorg/whispersystems/signalservice/api/push/DistributionId; +HSPLorg/whispersystems/signalservice/api/push/DistributionId;->toString()Ljava/lang/String; HSPLorg/whispersystems/signalservice/api/push/ServiceId$ACI$Companion;->()V HSPLorg/whispersystems/signalservice/api/push/ServiceId$ACI$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/whispersystems/signalservice/api/push/ServiceId$ACI$Companion;->from(Ljava/util/UUID;)Lorg/whispersystems/signalservice/api/push/ServiceId$ACI; @@ -34322,6 +34849,7 @@ HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->()V HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->fromLibSignal(Lorg/signal/libsignal/protocol/ServiceId;)Lorg/whispersystems/signalservice/api/push/ServiceId; HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->parseOrNull$default(Lorg/whispersystems/signalservice/api/push/ServiceId$Companion;Ljava/lang/String;ZILjava/lang/Object;)Lorg/whispersystems/signalservice/api/push/ServiceId; +HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->parseOrNull(Ljava/lang/String;Z)Lorg/whispersystems/signalservice/api/push/ServiceId; HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->parseOrThrow(Ljava/lang/String;)Lorg/whispersystems/signalservice/api/push/ServiceId; HSPLorg/whispersystems/signalservice/api/push/ServiceId$PNI$Companion;->()V HSPLorg/whispersystems/signalservice/api/push/ServiceId$PNI$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -34334,7 +34862,6 @@ HSPLorg/whispersystems/signalservice/api/push/ServiceId$PNI;->(Lorg/signal HSPLorg/whispersystems/signalservice/api/push/ServiceId$PNI;->equals(Ljava/lang/Object;)Z HSPLorg/whispersystems/signalservice/api/push/ServiceId$PNI;->toString()Ljava/lang/String; HSPLorg/whispersystems/signalservice/api/push/ServiceId;->()V -HSPLorg/whispersystems/signalservice/api/push/ServiceId;->(Lorg/signal/libsignal/protocol/ServiceId;)V HSPLorg/whispersystems/signalservice/api/push/ServiceId;->(Lorg/signal/libsignal/protocol/ServiceId;Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/whispersystems/signalservice/api/push/ServiceId;->fromLibSignal(Lorg/signal/libsignal/protocol/ServiceId;)Lorg/whispersystems/signalservice/api/push/ServiceId; HSPLorg/whispersystems/signalservice/api/push/ServiceId;->isUnknown()Z @@ -34897,6 +35424,7 @@ Landroidx/compose/animation/core/EasingKt; Landroidx/compose/animation/core/FiniteAnimationSpec; Landroidx/compose/animation/core/TweenSpec; Landroidx/compose/foundation/AbstractClickableNode$TraverseKey; +Landroidx/compose/foundation/AbstractClickableNode$applySemantics$1; Landroidx/compose/foundation/AbstractClickableNode; Landroidx/compose/foundation/BackgroundElement; Landroidx/compose/foundation/BackgroundKt; @@ -34917,6 +35445,7 @@ Landroidx/compose/foundation/DrawStretchOverscrollModifier$$ExternalSyntheticApi Landroidx/compose/foundation/DrawStretchOverscrollModifier$$ExternalSyntheticApiModelOutline4; Landroidx/compose/foundation/FocusableInNonTouchMode; Landroidx/compose/foundation/FocusableInteractionNode; +Landroidx/compose/foundation/FocusableNode$applySemantics$1; Landroidx/compose/foundation/FocusableNode; Landroidx/compose/foundation/FocusablePinnableContainerNode; Landroidx/compose/foundation/FocusedBoundsNode$TraverseKey; @@ -35015,6 +35544,10 @@ Landroidx/compose/foundation/text/modifiers/InlineDensity; Landroidx/compose/foundation/text/modifiers/LayoutUtilsKt; Landroidx/compose/foundation/text/modifiers/ParagraphLayoutCache; Landroidx/compose/foundation/text/modifiers/TextStringSimpleElement; +Landroidx/compose/foundation/text/modifiers/TextStringSimpleNode$applySemantics$1; +Landroidx/compose/foundation/text/modifiers/TextStringSimpleNode$applySemantics$2; +Landroidx/compose/foundation/text/modifiers/TextStringSimpleNode$applySemantics$3; +Landroidx/compose/foundation/text/modifiers/TextStringSimpleNode$applySemantics$4; Landroidx/compose/foundation/text/modifiers/TextStringSimpleNode$measure$1; Landroidx/compose/foundation/text/modifiers/TextStringSimpleNode; Landroidx/compose/foundation/text/selection/SelectionRegistrarKt$LocalSelectionRegistrar$1; @@ -35455,6 +35988,8 @@ Landroidx/compose/ui/focus/FocusTransactionManager; Landroidx/compose/ui/geometry/CornerRadius$Companion; Landroidx/compose/ui/geometry/CornerRadius; Landroidx/compose/ui/geometry/CornerRadiusKt; +Landroidx/compose/ui/geometry/MutableRect; +Landroidx/compose/ui/geometry/MutableRectKt; Landroidx/compose/ui/geometry/Offset$Companion; Landroidx/compose/ui/geometry/Offset; Landroidx/compose/ui/geometry/OffsetKt; @@ -35484,6 +36019,7 @@ Landroidx/compose/ui/graphics/AndroidImageBitmap; Landroidx/compose/ui/graphics/AndroidImageBitmap_androidKt$$ExternalSyntheticApiModelOutline0; Landroidx/compose/ui/graphics/AndroidImageBitmap_androidKt$$ExternalSyntheticApiModelOutline1; Landroidx/compose/ui/graphics/AndroidImageBitmap_androidKt; +Landroidx/compose/ui/graphics/AndroidMatrixConversions_androidKt; Landroidx/compose/ui/graphics/AndroidPaint; Landroidx/compose/ui/graphics/AndroidPaint_androidKt$WhenMappings; Landroidx/compose/ui/graphics/AndroidPaint_androidKt; @@ -35728,9 +36264,12 @@ Landroidx/compose/ui/layout/FixedScale; Landroidx/compose/ui/layout/HorizontalAlignmentLine; Landroidx/compose/ui/layout/IntrinsicMeasurable; Landroidx/compose/ui/layout/IntrinsicMeasureScope; +Landroidx/compose/ui/layout/LayoutCoordinates$-CC; Landroidx/compose/ui/layout/LayoutCoordinates; +Landroidx/compose/ui/layout/LayoutCoordinatesKt; Landroidx/compose/ui/layout/LayoutInfo; Landroidx/compose/ui/layout/LookaheadCapablePlacementScope; +Landroidx/compose/ui/layout/LookaheadLayoutCoordinates; Landroidx/compose/ui/layout/Measurable; Landroidx/compose/ui/layout/MeasurePolicy; Landroidx/compose/ui/layout/MeasureResult; @@ -35799,6 +36338,7 @@ Landroidx/compose/ui/node/LayoutNode$LayoutState; Landroidx/compose/ui/node/LayoutNode$NoIntrinsicsMeasurePolicy; Landroidx/compose/ui/node/LayoutNode$UsageByParent; Landroidx/compose/ui/node/LayoutNode$_foldedChildren$1; +Landroidx/compose/ui/node/LayoutNode$collapsedSemantics$1$1; Landroidx/compose/ui/node/LayoutNode; Landroidx/compose/ui/node/LayoutNodeAlignmentLines; Landroidx/compose/ui/node/LayoutNodeDrawScope; @@ -35869,6 +36409,7 @@ Landroidx/compose/ui/node/ParentDataModifierNodeKt; Landroidx/compose/ui/node/PlaceableResult; Landroidx/compose/ui/node/PointerInputModifierNode; Landroidx/compose/ui/node/RootForTest; +Landroidx/compose/ui/node/SemanticsModifierNode$-CC; Landroidx/compose/ui/node/SemanticsModifierNode; Landroidx/compose/ui/node/SemanticsModifierNodeKt; Landroidx/compose/ui/node/TailModifierNode; @@ -35910,12 +36451,16 @@ Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$Ext Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda2; Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda3; Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$1; +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api24Impl; +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api29Impl; Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Companion; Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$ComposeAccessibilityNodeProvider; Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$boundsUpdatesEventLoop$1; Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$onSendAccessibilityEvent$1; Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$scheduleScrollEventIfNeededLambda$1; Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat; +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1; +Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt; Landroidx/compose/ui/platform/AndroidComposeViewForceDarkModeQ$$ExternalSyntheticApiModelOutline0; Landroidx/compose/ui/platform/AndroidComposeViewForceDarkModeQ; Landroidx/compose/ui/platform/AndroidComposeViewTranslationCallback; @@ -35959,7 +36504,9 @@ Landroidx/compose/ui/platform/AndroidUiFrameClock$withFrameNanos$2$callback$1; Landroidx/compose/ui/platform/AndroidUiFrameClock; Landroidx/compose/ui/platform/AndroidUriHandler; Landroidx/compose/ui/platform/AndroidViewConfiguration; +Landroidx/compose/ui/platform/AndroidViewsHandler; Landroidx/compose/ui/platform/CalculateMatrixToWindow; +Landroidx/compose/ui/platform/CalculateMatrixToWindowApi29$$ExternalSyntheticApiModelOutline0; Landroidx/compose/ui/platform/CalculateMatrixToWindowApi29; Landroidx/compose/ui/platform/ClipboardManager; Landroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt$lambda-1$1; @@ -36005,8 +36552,11 @@ Landroidx/compose/ui/platform/GraphicsLayerOwnerLayer; Landroidx/compose/ui/platform/InspectableValueKt$NoInspectorInfo$1; Landroidx/compose/ui/platform/InspectableValueKt; Landroidx/compose/ui/platform/InspectorValueInfo; +Landroidx/compose/ui/platform/InvertMatrixKt; Landroidx/compose/ui/platform/MotionDurationScaleImpl; Landroidx/compose/ui/platform/SemanticsNodeCopy; +Landroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds; +Landroidx/compose/ui/platform/SemanticsUtils_androidKt; Landroidx/compose/ui/platform/SoftwareKeyboardController; Landroidx/compose/ui/platform/TextToolbar; Landroidx/compose/ui/platform/TextToolbarStatus; @@ -36024,6 +36574,7 @@ Landroidx/compose/ui/platform/ViewCompositionStrategy; Landroidx/compose/ui/platform/ViewCompositionStrategy_androidKt$$ExternalSyntheticLambda0; Landroidx/compose/ui/platform/ViewCompositionStrategy_androidKt$installForLifecycle$2; Landroidx/compose/ui/platform/ViewCompositionStrategy_androidKt; +Landroidx/compose/ui/platform/ViewConfiguration$-CC; Landroidx/compose/ui/platform/ViewConfiguration; Landroidx/compose/ui/platform/ViewLayer$Companion$OutlineProvider$1; Landroidx/compose/ui/platform/ViewLayer$Companion$getMatrix$1; @@ -36059,6 +36610,7 @@ Landroidx/compose/ui/platform/WrappedComposition; Landroidx/compose/ui/platform/WrapperRenderNodeLayerHelperMethods$$ExternalSyntheticApiModelOutline0; Landroidx/compose/ui/platform/WrapperRenderNodeLayerHelperMethods; Landroidx/compose/ui/platform/Wrapper_androidKt; +Landroidx/compose/ui/platform/accessibility/CollectionInfo_androidKt; Landroidx/compose/ui/platform/actionmodecallback/TextActionModeCallback; Landroidx/compose/ui/platform/coreshims/ContentCaptureSessionCompat; Landroidx/compose/ui/platform/coreshims/ViewCompatShims$Api29Impl; @@ -36077,18 +36629,27 @@ Landroidx/compose/ui/res/StringResources_androidKt; Landroidx/compose/ui/res/VectorResources_androidKt; Landroidx/compose/ui/scrollcapture/ComposeScrollCaptureCallback$ScrollCaptureSessionListener; Landroidx/compose/ui/scrollcapture/ScrollCapture; +Landroidx/compose/ui/semantics/AccessibilityAction; Landroidx/compose/ui/semantics/AppendedSemanticsElement; +Landroidx/compose/ui/semantics/CollectionInfo; Landroidx/compose/ui/semantics/CoreSemanticsModifierNode; Landroidx/compose/ui/semantics/EmptySemanticsElement; Landroidx/compose/ui/semantics/EmptySemanticsModifier; +Landroidx/compose/ui/semantics/LiveRegionMode; +Landroidx/compose/ui/semantics/ProgressBarRangeInfo; Landroidx/compose/ui/semantics/Role$Companion; Landroidx/compose/ui/semantics/Role; +Landroidx/compose/ui/semantics/ScrollAxisRange; Landroidx/compose/ui/semantics/SemanticsActions; Landroidx/compose/ui/semantics/SemanticsConfiguration; Landroidx/compose/ui/semantics/SemanticsConfigurationKt$getOrNull$1; Landroidx/compose/ui/semantics/SemanticsConfigurationKt; Landroidx/compose/ui/semantics/SemanticsModifier; Landroidx/compose/ui/semantics/SemanticsModifierKt; +Landroidx/compose/ui/semantics/SemanticsNode$emitFakeNodes$fakeNode$1; +Landroidx/compose/ui/semantics/SemanticsNode$fakeSemanticsNode$fakeNode$1; +Landroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1; +Landroidx/compose/ui/semantics/SemanticsNode$parent$2; Landroidx/compose/ui/semantics/SemanticsNode; Landroidx/compose/ui/semantics/SemanticsNodeKt; Landroidx/compose/ui/semantics/SemanticsOwner; @@ -36109,6 +36670,7 @@ Landroidx/compose/ui/semantics/SemanticsPropertiesKt; Landroidx/compose/ui/semantics/SemanticsPropertyKey$1; Landroidx/compose/ui/semantics/SemanticsPropertyKey; Landroidx/compose/ui/semantics/SemanticsPropertyReceiver; +Landroidx/compose/ui/state/ToggleableState; Landroidx/compose/ui/text/AndroidParagraph; Landroidx/compose/ui/text/AndroidParagraph_androidKt; Landroidx/compose/ui/text/AndroidTextStyle_androidKt; @@ -36304,6 +36866,7 @@ Landroidx/compose/ui/text/intl/LocaleList$Companion; Landroidx/compose/ui/text/intl/LocaleList; Landroidx/compose/ui/text/intl/PlatformLocaleDelegate; Landroidx/compose/ui/text/intl/PlatformLocaleKt; +Landroidx/compose/ui/text/platform/AndroidAccessibilitySpannableString_androidKt; Landroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt$NoopSpan$1; Landroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt; Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics$resolveTypeface$1; @@ -36379,6 +36942,9 @@ Landroidx/compose/ui/unit/DensityKt; Landroidx/compose/ui/unit/DensityWithConverter; Landroidx/compose/ui/unit/Dp$Companion; Landroidx/compose/ui/unit/Dp; +Landroidx/compose/ui/unit/DpKt; +Landroidx/compose/ui/unit/DpSize$Companion; +Landroidx/compose/ui/unit/DpSize; Landroidx/compose/ui/unit/FontScaling$-CC; Landroidx/compose/ui/unit/FontScaling; Landroidx/compose/ui/unit/IntOffset$Companion; @@ -36398,6 +36964,8 @@ Landroidx/compose/ui/unit/fontscaling/FontScaleConverter; Landroidx/compose/ui/unit/fontscaling/FontScaleConverterFactory; Landroidx/compose/ui/unit/fontscaling/FontScaleConverterTable$Companion; Landroidx/compose/ui/unit/fontscaling/FontScaleConverterTable; +Landroidx/compose/ui/util/ListUtilsKt; +Landroidx/compose/ui/viewinterop/AndroidViewHolder; Landroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0; Landroidx/constraintlayout/core/ArrayLinkedVariables; Landroidx/constraintlayout/core/ArrayRow$ArrayRowVariables; @@ -36581,7 +37149,10 @@ Landroidx/core/view/SoftwareKeyboardControllerCompat$Impl30; Landroidx/core/view/SoftwareKeyboardControllerCompat$Impl; Landroidx/core/view/SoftwareKeyboardControllerCompat; Landroidx/core/view/ViewCompat$$ExternalSyntheticLambda1; +Landroidx/core/view/ViewCompat$1; Landroidx/core/view/ViewCompat$2; +Landroidx/core/view/ViewCompat$3; +Landroidx/core/view/ViewCompat$4; Landroidx/core/view/ViewCompat$AccessibilityPaneVisibilityManager; Landroidx/core/view/ViewCompat$AccessibilityViewProperty; Landroidx/core/view/ViewCompat$Api20Impl; @@ -36590,12 +37161,18 @@ Landroidx/core/view/ViewCompat$Api21Impl; Landroidx/core/view/ViewCompat$Api26Impl; Landroidx/core/view/ViewCompat$Api28Impl; Landroidx/core/view/ViewCompat$Api29Impl; +Landroidx/core/view/ViewCompat$Api30Impl; Landroidx/core/view/ViewCompat; Landroidx/core/view/ViewConfigurationCompat$Api26Impl; Landroidx/core/view/ViewConfigurationCompat$Api28Impl; Landroidx/core/view/ViewConfigurationCompat; Landroidx/core/view/ViewKt$doOnPreDraw$1; Landroidx/core/view/ViewKt; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline13; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline14; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline3; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline4; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline5; Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat$$ExternalSyntheticApiModelOutline0; Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat$$ExternalSyntheticApiModelOutline11; Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat$$ExternalSyntheticApiModelOutline13; @@ -36614,6 +37191,9 @@ Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActio Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat$$ExternalSyntheticApiModelOutline6; Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat$$ExternalSyntheticApiModelOutline7; Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$Api30Impl; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionInfoCompat; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat$AccessibilityNodeProviderApi19; Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat$AccessibilityNodeProviderApi26; Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat; @@ -36847,6 +37427,7 @@ Landroidx/lifecycle/Transformations$switchMap$1$1; Landroidx/lifecycle/Transformations$switchMap$1; Landroidx/lifecycle/Transformations; Landroidx/lifecycle/ViewModel; +Landroidx/lifecycle/ViewModelKt; Landroidx/lifecycle/ViewModelLazy; Landroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion$APPLICATION_KEY$1; Landroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion; @@ -36882,6 +37463,8 @@ Landroidx/lifecycle/viewmodel/R$id; Landroidx/lifecycle/viewmodel/ViewModelInitializer; Landroidx/lifecycle/viewmodel/ViewModelProviderImpl; Landroidx/lifecycle/viewmodel/ViewModelProviderImpl_androidKt; +Landroidx/lifecycle/viewmodel/internal/CloseableCoroutineScope; +Landroidx/lifecycle/viewmodel/internal/CloseableCoroutineScopeKt; Landroidx/lifecycle/viewmodel/internal/SynchronizedObject; Landroidx/lifecycle/viewmodel/internal/ViewModelImpl; Landroidx/lifecycle/viewmodel/internal/ViewModelProviders$ViewModelKey; @@ -37724,6 +38307,8 @@ Lcom/airbnb/lottie/parser/ShapeFillParser; Lcom/airbnb/lottie/parser/ShapeGroupParser; Lcom/airbnb/lottie/parser/ShapePathParser; Lcom/airbnb/lottie/parser/ValueParser; +Lcom/airbnb/lottie/parser/moshi/JsonDataException; +Lcom/airbnb/lottie/parser/moshi/JsonEncodingException; Lcom/airbnb/lottie/parser/moshi/JsonReader$Options; Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; Lcom/airbnb/lottie/parser/moshi/JsonReader; @@ -38488,6 +39073,7 @@ Lcom/fasterxml/jackson/databind/ser/Serializers$Base; Lcom/fasterxml/jackson/databind/ser/Serializers; Lcom/fasterxml/jackson/databind/ser/impl/FailingSerializer; Lcom/fasterxml/jackson/databind/ser/impl/IndexedListSerializer; +Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Double; Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Empty; Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$SerializerAndMapResult; Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Single; @@ -39240,6 +39826,9 @@ Lio/reactivex/rxjava3/internal/operators/flowable/FlowableCreate$1; Lio/reactivex/rxjava3/internal/operators/flowable/FlowableCreate$BaseEmitter; Lio/reactivex/rxjava3/internal/operators/flowable/FlowableCreate$LatestAsyncEmitter; Lio/reactivex/rxjava3/internal/operators/flowable/FlowableCreate; +Lio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed$DebounceEmitter; +Lio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed$DebounceTimedSubscriber; +Lio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed; Lio/reactivex/rxjava3/internal/operators/flowable/FlowableDistinctUntilChanged$DistinctUntilChangedSubscriber; Lio/reactivex/rxjava3/internal/operators/flowable/FlowableDistinctUntilChanged; Lio/reactivex/rxjava3/internal/operators/flowable/FlowableDoOnEach$DoOnEachSubscriber; @@ -39352,6 +39941,8 @@ Lio/reactivex/rxjava3/internal/util/NotificationLite; Lio/reactivex/rxjava3/internal/util/OpenHashSet; Lio/reactivex/rxjava3/internal/util/Pow2; Lio/reactivex/rxjava3/kotlin/DisposableKt; +Lio/reactivex/rxjava3/kotlin/Flowables$combineLatest$2; +Lio/reactivex/rxjava3/kotlin/Flowables; Lio/reactivex/rxjava3/kotlin/SubscribersKt$onCompleteStub$1; Lio/reactivex/rxjava3/kotlin/SubscribersKt$onErrorStub$1; Lio/reactivex/rxjava3/kotlin/SubscribersKt$onNextStub$1; @@ -39376,6 +39967,7 @@ Lio/reactivex/rxjava3/subjects/PublishSubject$PublishDisposable; Lio/reactivex/rxjava3/subjects/PublishSubject; Lio/reactivex/rxjava3/subjects/SerializedSubject; Lio/reactivex/rxjava3/subjects/Subject; +Lio/reactivex/rxjava3/subscribers/SerializedSubscriber; Lj$/com/android/tools/r8/a; Lj$/lang/a; Lj$/time/DayOfWeek; @@ -39585,6 +40177,7 @@ Lkotlin/LazyKt__LazyKt; Lkotlin/LazyThreadSafetyMode; Lkotlin/Metadata; Lkotlin/NoWhenBranchMatchedException; +Lkotlin/NotImplementedError; Lkotlin/Pair; Lkotlin/Result$Companion; Lkotlin/Result$Failure; @@ -40915,8 +41508,6 @@ Lkotlin/time/DurationUnitKt__DurationUnitJvmKt; Lkotlinx/collections/immutable/ExtensionsKt; Lkotlinx/collections/immutable/ImmutableCollection; Lkotlinx/collections/immutable/ImmutableSet; -Lkotlinx/collections/immutable/PersistentMap$Builder; -Lkotlinx/collections/immutable/PersistentMap; Lkotlinx/collections/immutable/PersistentSet$Builder; Lkotlinx/collections/immutable/PersistentSet; Lkotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion; @@ -41240,6 +41831,7 @@ Lokhttp3/ConnectionSpec; Lokhttp3/CookieJar$Companion$NoCookies; Lokhttp3/CookieJar$Companion; Lokhttp3/CookieJar; +Lokhttp3/Credentials; Lokhttp3/Dispatcher; Lokhttp3/Dns$Companion$DnsSystem; Lokhttp3/Dns$Companion; @@ -41661,8 +42253,6 @@ Lorg/signal/core/util/Stopwatch; Lorg/signal/core/util/StreamUtil; Lorg/signal/core/util/StringExtensionsKt; Lorg/signal/core/util/StringSerializer; -Lorg/signal/core/util/StringUtil$$ExternalSyntheticBackport0; -Lorg/signal/core/util/StringUtil$$ExternalSyntheticBackport1; Lorg/signal/core/util/StringUtil; Lorg/signal/core/util/ThreadUtil; Lorg/signal/core/util/UpdateAllBuilderPart1; @@ -41934,6 +42524,7 @@ Lorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda69; Lorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda6; Lorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda70; Lorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda71; +Lorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda72; Lorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda7; Lorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda8; Lorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda9; @@ -42026,6 +42617,8 @@ Lorg/thoughtcrime/securesms/banner/banners/DozeBanner; Lorg/thoughtcrime/securesms/banner/banners/DozeBannerKt$Banner$3$1; Lorg/thoughtcrime/securesms/banner/banners/DozeBannerKt$Banner$4; Lorg/thoughtcrime/securesms/banner/banners/DozeBannerKt; +Lorg/thoughtcrime/securesms/banner/banners/MediaRestoreProgressBanner$RestoreProgressBannerListener; +Lorg/thoughtcrime/securesms/banner/banners/MediaRestoreProgressBanner$dataFlow$2; Lorg/thoughtcrime/securesms/banner/banners/MediaRestoreProgressBanner; Lorg/thoughtcrime/securesms/banner/banners/OutdatedBuildBanner$Companion; Lorg/thoughtcrime/securesms/banner/banners/OutdatedBuildBanner; @@ -42082,6 +42675,7 @@ Lorg/thoughtcrime/securesms/components/QuoteView; Lorg/thoughtcrime/securesms/components/RatingManager; Lorg/thoughtcrime/securesms/components/RecyclerViewFastScroller$FastScrollAdapter; Lorg/thoughtcrime/securesms/components/SharedContactView$EventListener; +Lorg/thoughtcrime/securesms/components/ThumbnailView$$ExternalSyntheticBackport2; Lorg/thoughtcrime/securesms/components/TypingIndicatorView; Lorg/thoughtcrime/securesms/components/TypingStatusRepository; Lorg/thoughtcrime/securesms/components/ViewBinderDelegate$1; @@ -42124,6 +42718,10 @@ Lorg/thoughtcrime/securesms/components/registration/PulsingFloatingActionButton$ Lorg/thoughtcrime/securesms/components/registration/PulsingFloatingActionButton$1$1; Lorg/thoughtcrime/securesms/components/registration/PulsingFloatingActionButton$1; Lorg/thoughtcrime/securesms/components/registration/PulsingFloatingActionButton; +Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord$FolderType$Companion; +Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord$FolderType; +Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord; +Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersRepository; Lorg/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfilesRepository$getProfiles$1; Lorg/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfilesRepository; Lorg/thoughtcrime/securesms/components/settings/app/subscription/completed/InAppPaymentsBottomSheetDelegate$Companion; @@ -42190,12 +42788,15 @@ Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$1; Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$2; Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$3; Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$4; +Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$5; Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$CallButtonClickCallbacks; +Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$ChatTypeModel; Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$ClickCallbacks; Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$Companion$$ExternalSyntheticLambda0; Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$Companion$$ExternalSyntheticLambda1; Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$Companion$$ExternalSyntheticLambda2; Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$Companion$$ExternalSyntheticLambda3; +Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$Companion$$ExternalSyntheticLambda4; Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$Companion; Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$DisplayOptions; Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter$DisplaySecondaryInformation; @@ -42246,6 +42847,7 @@ Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchViewModel$controller$1; Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchViewModel$data$1; Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchViewModel$safetyNumberRepository$2; Lorg/thoughtcrime/securesms/contacts/paged/ContactSearchViewModel; +Lorg/thoughtcrime/securesms/contacts/paged/collections/ContactSearchIterator; Lorg/thoughtcrime/securesms/contacts/sync/ContactDiscovery; Lorg/thoughtcrime/securesms/contactshare/Contact; Lorg/thoughtcrime/securesms/contactshare/ContactUtil; @@ -42311,6 +42913,10 @@ Lorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable$ChatColorsD Lorg/thoughtcrime/securesms/conversation/v2/items/InteractiveConversationElement; Lorg/thoughtcrime/securesms/conversation/v2/items/ShrinkWrapLinearLayout; Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemLayout; +Lorg/thoughtcrime/securesms/conversationlist/ChatFolderAdapter$$ExternalSyntheticLambda0; +Lorg/thoughtcrime/securesms/conversationlist/ChatFolderAdapter$Callbacks; +Lorg/thoughtcrime/securesms/conversationlist/ChatFolderAdapter; +Lorg/thoughtcrime/securesms/conversationlist/ChatFolderMappingModel; Lorg/thoughtcrime/securesms/conversationlist/ClearFilterViewHolder$OnClearFilterClickListener; Lorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior$Callback; Lorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior; @@ -42319,6 +42925,7 @@ Lorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$$ExternalSy Lorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$1; Lorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$ConversationDiffCallback; Lorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$ConversationViewHolder; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$EmptyFolderViewHolder$OnFolderSettingsClickListener; Lorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$OnConversationClickListener; Lorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$Payload; Lorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter; @@ -42326,8 +42933,6 @@ Lorg/thoughtcrime/securesms/conversationlist/ConversationListArchiveItemDecorati Lorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource$UnarchivedConversationListDataSource; Lorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticBackport0; -Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda13; -Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda14; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda15; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda16; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda17; @@ -42336,41 +42941,45 @@ Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalS Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda1; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda20; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda21; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda22; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda23; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda2; -Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda37; -Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda38; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda39; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda3; -Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda42; -Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda43; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda40; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda44; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda45; -Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda46; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda47; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda48; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda49; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda4; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda50; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda51; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda53; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda55; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda57; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda5; -Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda61; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda64; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda6; -Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda71; -Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda78; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda74; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda7; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda81; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda8; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda9; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$10; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$1; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$2; -Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$4$1$$ExternalSyntheticLambda0; -Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$4$1; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$4; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$5$1$$ExternalSyntheticLambda0; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$5$1; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$5; -Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$9; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$6; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$ArchiveListenerCallback; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$Callback; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$ContactSearchClickCallbacks; Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment; Lorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda13; -Lorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda2; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda1; Lorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda3; Lorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda4; Lorg/thoughtcrime/securesms/conversationlist/ConversationListItem$$ExternalSyntheticLambda7; @@ -42397,11 +43006,15 @@ Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$4; Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$5; Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$6; Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$7; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$8; Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$Companion; Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$ConversationListState; Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$Factory; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$chatFolderState$1; Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$conversationsState$1; Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$filterRequestState$1; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$loadCurrentFolders$1$1; +Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$loadCurrentFolders$1; Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$megaphoneState$1; Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$onVisible$1$1; Lorg/thoughtcrime/securesms/conversationlist/ConversationListViewModel$pagedData$1; @@ -42497,16 +43110,22 @@ Lorg/thoughtcrime/securesms/database/CdsTable$Companion; Lorg/thoughtcrime/securesms/database/CdsTable; Lorg/thoughtcrime/securesms/database/ChatColorsTable$Companion; Lorg/thoughtcrime/securesms/database/ChatColorsTable; +Lorg/thoughtcrime/securesms/database/ChatFolderTables$ChatFolderMembershipTable; +Lorg/thoughtcrime/securesms/database/ChatFolderTables$ChatFolderTable; +Lorg/thoughtcrime/securesms/database/ChatFolderTables$Companion; +Lorg/thoughtcrime/securesms/database/ChatFolderTables$MembershipType; +Lorg/thoughtcrime/securesms/database/ChatFolderTables; Lorg/thoughtcrime/securesms/database/DatabaseMonitor; -Lorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda13; +Lorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda0; +Lorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda10; Lorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda15; -Lorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda16; -Lorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda19; -Lorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda28; +Lorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda17; +Lorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda18; +Lorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda21; Lorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda30; -Lorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda31; -Lorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda44; -Lorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda8; +Lorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda32; +Lorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda33; +Lorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda47; Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer; Lorg/thoughtcrime/securesms/database/DatabaseObserver; Lorg/thoughtcrime/securesms/database/DatabaseTable; @@ -42528,6 +43147,7 @@ Lorg/thoughtcrime/securesms/database/GroupReceiptTable; Lorg/thoughtcrime/securesms/database/GroupTable$Companion; Lorg/thoughtcrime/securesms/database/GroupTable$MembershipTable$Companion; Lorg/thoughtcrime/securesms/database/GroupTable$MembershipTable; +Lorg/thoughtcrime/securesms/database/GroupTable$Reader; Lorg/thoughtcrime/securesms/database/GroupTable$ShowAsStoryState$Companion; Lorg/thoughtcrime/securesms/database/GroupTable$ShowAsStoryState; Lorg/thoughtcrime/securesms/database/GroupTable; @@ -42542,11 +43162,9 @@ Lorg/thoughtcrime/securesms/database/InAppPaymentTable$Companion; Lorg/thoughtcrime/securesms/database/InAppPaymentTable$State$Companion; Lorg/thoughtcrime/securesms/database/InAppPaymentTable$State; Lorg/thoughtcrime/securesms/database/InAppPaymentTable; -Lorg/thoughtcrime/securesms/database/JobDatabase$$ExternalSyntheticLambda0; Lorg/thoughtcrime/securesms/database/JobDatabase$Companion; Lorg/thoughtcrime/securesms/database/JobDatabase$getMostEligibleJobInQueue$1; Lorg/thoughtcrime/securesms/database/JobDatabase; -Lorg/thoughtcrime/securesms/database/KeyValueDatabase$$ExternalSyntheticLambda0; Lorg/thoughtcrime/securesms/database/KeyValueDatabase$1; Lorg/thoughtcrime/securesms/database/KeyValueDatabase$Type; Lorg/thoughtcrime/securesms/database/KeyValueDatabase; @@ -42568,7 +43186,6 @@ Lorg/thoughtcrime/securesms/database/LogDatabase$logs$2; Lorg/thoughtcrime/securesms/database/LogDatabase; Lorg/thoughtcrime/securesms/database/MediaTable$Companion; Lorg/thoughtcrime/securesms/database/MediaTable; -Lorg/thoughtcrime/securesms/database/MegaphoneDatabase$$ExternalSyntheticLambda0; Lorg/thoughtcrime/securesms/database/MegaphoneDatabase; Lorg/thoughtcrime/securesms/database/MentionTable$Companion; Lorg/thoughtcrime/securesms/database/MentionTable; @@ -42600,6 +43217,7 @@ Lorg/thoughtcrime/securesms/database/MessageType; Lorg/thoughtcrime/securesms/database/MessageTypes$-CC; Lorg/thoughtcrime/securesms/database/MessageTypes; Lorg/thoughtcrime/securesms/database/NameCollisionTables$Companion; +Lorg/thoughtcrime/securesms/database/NameCollisionTables$NameCollisionMembershipTable; Lorg/thoughtcrime/securesms/database/NameCollisionTables; Lorg/thoughtcrime/securesms/database/NoExternalStorageException; Lorg/thoughtcrime/securesms/database/NoSuchMessageException; @@ -42669,6 +43287,8 @@ Lorg/thoughtcrime/securesms/database/RemoteMegaphoneTable; Lorg/thoughtcrime/securesms/database/RxDatabaseObserver$$ExternalSyntheticLambda0; Lorg/thoughtcrime/securesms/database/RxDatabaseObserver$$ExternalSyntheticLambda1; Lorg/thoughtcrime/securesms/database/RxDatabaseObserver$RxObserver; +Lorg/thoughtcrime/securesms/database/RxDatabaseObserver$chatFolders$2; +Lorg/thoughtcrime/securesms/database/RxDatabaseObserver$chatFoldersFlowable$1; Lorg/thoughtcrime/securesms/database/RxDatabaseObserver$conversationList$2; Lorg/thoughtcrime/securesms/database/RxDatabaseObserver$conversationListFlowable$1; Lorg/thoughtcrime/securesms/database/RxDatabaseObserver$notificationProfiles$2; @@ -42919,6 +43539,7 @@ Lorg/thoughtcrime/securesms/emoji/EmojiSourceKt; Lorg/thoughtcrime/securesms/emoji/JumboEmoji$$ExternalSyntheticLambda0; Lorg/thoughtcrime/securesms/emoji/JumboEmoji$$ExternalSyntheticLambda4; Lorg/thoughtcrime/securesms/emoji/JumboEmoji; +Lorg/thoughtcrime/securesms/emoji/ObsoleteEmoji; Lorg/thoughtcrime/securesms/emoji/ParsedEmojiData; Lorg/thoughtcrime/securesms/events/WebRtcViewModel; Lorg/thoughtcrime/securesms/fonts/FontFileMap$Companion; @@ -42982,6 +43603,7 @@ Lorg/thoughtcrime/securesms/jobmanager/Constraint; Lorg/thoughtcrime/securesms/jobmanager/ConstraintInstantiator; Lorg/thoughtcrime/securesms/jobmanager/ConstraintObserver$Notifier; Lorg/thoughtcrime/securesms/jobmanager/ConstraintObserver; +Lorg/thoughtcrime/securesms/jobmanager/CoroutineJob; Lorg/thoughtcrime/securesms/jobmanager/ExecutorFactory; Lorg/thoughtcrime/securesms/jobmanager/InAppScheduler$$ExternalSyntheticLambda0; Lorg/thoughtcrime/securesms/jobmanager/InAppScheduler; @@ -42994,6 +43616,7 @@ Lorg/thoughtcrime/securesms/jobmanager/Job$Result; Lorg/thoughtcrime/securesms/jobmanager/Job; Lorg/thoughtcrime/securesms/jobmanager/JobController$$ExternalSyntheticLambda0; Lorg/thoughtcrime/securesms/jobmanager/JobController$$ExternalSyntheticLambda11; +Lorg/thoughtcrime/securesms/jobmanager/JobController$$ExternalSyntheticLambda12; Lorg/thoughtcrime/securesms/jobmanager/JobController$$ExternalSyntheticLambda13; Lorg/thoughtcrime/securesms/jobmanager/JobController$$ExternalSyntheticLambda14; Lorg/thoughtcrime/securesms/jobmanager/JobController$$ExternalSyntheticLambda15; @@ -43010,12 +43633,13 @@ Lorg/thoughtcrime/securesms/jobmanager/JobController$Callback; Lorg/thoughtcrime/securesms/jobmanager/JobController; Lorg/thoughtcrime/securesms/jobmanager/JobInstantiator; Lorg/thoughtcrime/securesms/jobmanager/JobLogger; -Lorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda11; +Lorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda10; +Lorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda12; Lorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda13; +Lorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda18; Lorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda19; Lorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda2; -Lorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda4; -Lorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda6; +Lorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda5; Lorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda7; Lorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda8; Lorg/thoughtcrime/securesms/jobmanager/JobManager$$ExternalSyntheticLambda9; @@ -43046,14 +43670,15 @@ Lorg/thoughtcrime/securesms/jobmanager/Scheduler; Lorg/thoughtcrime/securesms/jobmanager/impl/AutoDownloadEmojiConstraint$Factory; Lorg/thoughtcrime/securesms/jobmanager/impl/AutoDownloadEmojiConstraint; Lorg/thoughtcrime/securesms/jobmanager/impl/BackoffUtil; +Lorg/thoughtcrime/securesms/jobmanager/impl/BatteryNotLowConstraint$Factory; Lorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver$LegacyServiceStateListener; Lorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver$ServiceStateListenerApi31; Lorg/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver; Lorg/thoughtcrime/securesms/jobmanager/impl/ChangeNumberConstraint$Factory; Lorg/thoughtcrime/securesms/jobmanager/impl/ChangeNumberConstraintObserver; +Lorg/thoughtcrime/securesms/jobmanager/impl/ChargingAndBatteryIsNotLowConstraintObserver$1; +Lorg/thoughtcrime/securesms/jobmanager/impl/ChargingAndBatteryIsNotLowConstraintObserver; Lorg/thoughtcrime/securesms/jobmanager/impl/ChargingConstraint$Factory; -Lorg/thoughtcrime/securesms/jobmanager/impl/ChargingConstraintObserver$1; -Lorg/thoughtcrime/securesms/jobmanager/impl/ChargingConstraintObserver; Lorg/thoughtcrime/securesms/jobmanager/impl/DataRestoreConstraint$Factory; Lorg/thoughtcrime/securesms/jobmanager/impl/DataRestoreConstraintObserver; Lorg/thoughtcrime/securesms/jobmanager/impl/DecryptionsDrainedConstraint$Factory; @@ -43111,9 +43736,13 @@ Lorg/thoughtcrime/securesms/jobs/AutomaticSessionResetJob$Factory; Lorg/thoughtcrime/securesms/jobs/AvatarGroupsV1DownloadJob$Factory; Lorg/thoughtcrime/securesms/jobs/AvatarGroupsV2DownloadJob$Factory; Lorg/thoughtcrime/securesms/jobs/BackfillDigestJob$Factory; +Lorg/thoughtcrime/securesms/jobs/BackfillDigestsForDataFileJob$Factory; Lorg/thoughtcrime/securesms/jobs/BackupMessagesJob$Factory; Lorg/thoughtcrime/securesms/jobs/BackupRestoreJob$Factory; Lorg/thoughtcrime/securesms/jobs/BackupRestoreMediaJob$Factory; +Lorg/thoughtcrime/securesms/jobs/BackupSubscriptionCheckJob$Companion; +Lorg/thoughtcrime/securesms/jobs/BackupSubscriptionCheckJob$Factory; +Lorg/thoughtcrime/securesms/jobs/BackupSubscriptionCheckJob; Lorg/thoughtcrime/securesms/jobs/BaseJob; Lorg/thoughtcrime/securesms/jobs/BoostReceiptRequestResponseJob$Factory; Lorg/thoughtcrime/securesms/jobs/BuildExpirationConfirmationJob$Factory; @@ -43134,6 +43763,7 @@ Lorg/thoughtcrime/securesms/jobs/CreateReleaseChannelJob$Factory; Lorg/thoughtcrime/securesms/jobs/CreateReleaseChannelJob$setAvatar$1; Lorg/thoughtcrime/securesms/jobs/CreateReleaseChannelJob$setAvatar$2; Lorg/thoughtcrime/securesms/jobs/CreateReleaseChannelJob; +Lorg/thoughtcrime/securesms/jobs/DeleteAbandonedAttachmentsJob$Factory; Lorg/thoughtcrime/securesms/jobs/DirectoryRefreshJob$Factory; Lorg/thoughtcrime/securesms/jobs/DirectoryRefreshJob; Lorg/thoughtcrime/securesms/jobs/DonationReceiptRedemptionJob$Factory; @@ -43158,6 +43788,7 @@ Lorg/thoughtcrime/securesms/jobs/ExternalLaunchDonationJob$Factory$Companion; Lorg/thoughtcrime/securesms/jobs/ExternalLaunchDonationJob$Factory; Lorg/thoughtcrime/securesms/jobs/FailingJob$Factory; Lorg/thoughtcrime/securesms/jobs/FastJobStorage$$ExternalSyntheticLambda1; +Lorg/thoughtcrime/securesms/jobs/FastJobStorage$$ExternalSyntheticLambda2; Lorg/thoughtcrime/securesms/jobs/FastJobStorage$$ExternalSyntheticLambda3; Lorg/thoughtcrime/securesms/jobs/FastJobStorage$$ExternalSyntheticLambda4; Lorg/thoughtcrime/securesms/jobs/FastJobStorage$$ExternalSyntheticLambda5; @@ -43171,6 +43802,7 @@ Lorg/thoughtcrime/securesms/jobs/FastJobStorage$getNextEligibleJob$2; Lorg/thoughtcrime/securesms/jobs/FastJobStorage$getNextEligibleJob$3; Lorg/thoughtcrime/securesms/jobs/FastJobStorage$markJobAsRunning$1; Lorg/thoughtcrime/securesms/jobs/FastJobStorage$markJobAsRunning$2; +Lorg/thoughtcrime/securesms/jobs/FastJobStorage$placeJobInEligibleList$1$1; Lorg/thoughtcrime/securesms/jobs/FastJobStorage$replaceJobInEligibleList$2; Lorg/thoughtcrime/securesms/jobs/FastJobStorage$special$$inlined$compareBy$1; Lorg/thoughtcrime/securesms/jobs/FastJobStorage$updateAllJobsToBePending$1; @@ -43290,7 +43922,9 @@ Lorg/thoughtcrime/securesms/jobs/ResetSvrGuessCountJob$Factory; Lorg/thoughtcrime/securesms/jobs/RestoreAttachmentJob$Factory; Lorg/thoughtcrime/securesms/jobs/RestoreAttachmentThumbnailJob$Factory; Lorg/thoughtcrime/securesms/jobs/RestoreLocalAttachmentJob$Factory; +Lorg/thoughtcrime/securesms/jobs/RestoreOptimizedMediaJob$Companion; Lorg/thoughtcrime/securesms/jobs/RestoreOptimizedMediaJob$Factory; +Lorg/thoughtcrime/securesms/jobs/RestoreOptimizedMediaJob; Lorg/thoughtcrime/securesms/jobs/ResumableUploadSpecJob$Factory; Lorg/thoughtcrime/securesms/jobs/RetrieveProfileAvatarJob$Factory; Lorg/thoughtcrime/securesms/jobs/RetrieveProfileJob$Companion; @@ -43406,6 +44040,7 @@ Lorg/thoughtcrime/securesms/keyvalue/SettingsValues$Theme; Lorg/thoughtcrime/securesms/keyvalue/SettingsValues; Lorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion; Lorg/thoughtcrime/securesms/keyvalue/SignalStore; +Lorg/thoughtcrime/securesms/keyvalue/SignalStoreValueDelegate$flow$1; Lorg/thoughtcrime/securesms/keyvalue/SignalStoreValueDelegate; Lorg/thoughtcrime/securesms/keyvalue/SignalStoreValueDelegatesKt; Lorg/thoughtcrime/securesms/keyvalue/SignalStoreValues; @@ -43534,6 +44169,7 @@ Lorg/thoughtcrime/securesms/migrations/AttachmentHashBackfillMigrationJob$Factor Lorg/thoughtcrime/securesms/migrations/AttributesMigrationJob$Factory; Lorg/thoughtcrime/securesms/migrations/AvatarIdRemovalMigrationJob$Factory; Lorg/thoughtcrime/securesms/migrations/AvatarMigrationJob$Factory; +Lorg/thoughtcrime/securesms/migrations/BackfillDigestsForDuplicatesMigrationJob$Factory; Lorg/thoughtcrime/securesms/migrations/BackfillDigestsMigrationJob$Factory; Lorg/thoughtcrime/securesms/migrations/BackupJitterMigrationJob$Factory; Lorg/thoughtcrime/securesms/migrations/BackupNotificationMigrationJob$Factory; @@ -43582,6 +44218,7 @@ Lorg/thoughtcrime/securesms/migrations/TrimByLengthSettingsMigrationJob$Factory; Lorg/thoughtcrime/securesms/migrations/UpdateSmsJobsMigrationJob$Factory; Lorg/thoughtcrime/securesms/migrations/UserNotificationMigrationJob$Factory; Lorg/thoughtcrime/securesms/migrations/UuidMigrationJob$Factory; +Lorg/thoughtcrime/securesms/migrations/WallpaperCleanupMigrationJob$Factory; Lorg/thoughtcrime/securesms/migrations/WallpaperStorageMigrationJob$Factory; Lorg/thoughtcrime/securesms/mms/AttachmentStreamUriLoader$AttachmentModel; Lorg/thoughtcrime/securesms/mms/AttachmentStreamUriLoader$Factory; @@ -43717,7 +44354,6 @@ Lorg/thoughtcrime/securesms/recipients/Recipient$HiddenState$Companion; Lorg/thoughtcrime/securesms/recipients/Recipient$HiddenState; Lorg/thoughtcrime/securesms/recipients/Recipient$callRingtone$2; Lorg/thoughtcrime/securesms/recipients/Recipient$combinedAboutAndEmoji$2; -Lorg/thoughtcrime/securesms/recipients/Recipient$filteredAbout$2; Lorg/thoughtcrime/securesms/recipients/Recipient$hasViewedStory$1; Lorg/thoughtcrime/securesms/recipients/Recipient$messageRingtone$2; Lorg/thoughtcrime/securesms/recipients/Recipient$shouldHideStory$1; @@ -43901,6 +44537,7 @@ Lorg/thoughtcrime/securesms/util/MediaUtil; Lorg/thoughtcrime/securesms/util/MessageRecordUtil; Lorg/thoughtcrime/securesms/util/NameUtil; Lorg/thoughtcrime/securesms/util/NetworkUtil; +Lorg/thoughtcrime/securesms/util/NoCrossfadeChangeDefaultAnimator; Lorg/thoughtcrime/securesms/util/ProfileUtil$$ExternalSyntheticLambda0; Lorg/thoughtcrime/securesms/util/ProfileUtil$$ExternalSyntheticLambda1; Lorg/thoughtcrime/securesms/util/ProfileUtil$$ExternalSyntheticLambda2; @@ -44078,6 +44715,7 @@ Lorg/whispersystems/signalservice/api/payments/Money; Lorg/whispersystems/signalservice/api/profiles/ProfileAndCredential; Lorg/whispersystems/signalservice/api/profiles/SignalServiceProfile$Capabilities; Lorg/whispersystems/signalservice/api/profiles/SignalServiceProfile$RequestType; +Lorg/whispersystems/signalservice/api/push/DistributionId; Lorg/whispersystems/signalservice/api/push/ServiceId$ACI$Companion; Lorg/whispersystems/signalservice/api/push/ServiceId$ACI; Lorg/whispersystems/signalservice/api/push/ServiceId$Companion; @@ -44234,7 +44872,6 @@ PLandroidx/appcompat/view/menu/MenuItemImpl;->getGroupId()I PLandroidx/appcompat/view/menu/MenuItemImpl;->getSubMenu()Landroid/view/SubMenu; PLandroidx/appcompat/view/menu/MenuItemImpl;->getSupportActionProvider()Landroidx/core/view/ActionProvider; PLandroidx/appcompat/view/menu/MenuItemImpl;->getTitle()Ljava/lang/CharSequence; -PLandroidx/appcompat/view/menu/MenuItemImpl;->getTitleForItemView(Landroidx/appcompat/view/menu/MenuView$ItemView;)Ljava/lang/CharSequence; PLandroidx/appcompat/view/menu/MenuItemImpl;->getTooltipText()Ljava/lang/CharSequence; PLandroidx/appcompat/view/menu/MenuItemImpl;->isEnabled()Z PLandroidx/appcompat/view/menu/MenuItemImpl;->setActionView(Landroid/view/View;)Landroid/view/MenuItem; @@ -44256,7 +44893,6 @@ PLandroidx/appcompat/widget/ActionMenuPresenter;->isOverflowMenuShowing()Z PLandroidx/appcompat/widget/ActionMenuView$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V PLandroidx/appcompat/widget/ActionMenuView;->dismissPopupMenus()V PLandroidx/appcompat/widget/ActionMenuView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; -PLandroidx/appcompat/widget/ActionMenuView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroidx/appcompat/widget/ActionMenuView$LayoutParams; PLandroidx/appcompat/widget/ActionMenuView;->isOverflowMenuShowing()Z PLandroidx/appcompat/widget/ActionMenuView;->onDetachedFromWindow()V PLandroidx/appcompat/widget/AppCompatAutoCompleteTextView;->()V @@ -44302,7 +44938,6 @@ PLandroidx/appcompat/widget/DrawableUtils$$ExternalSyntheticApiModelOutline3;->m PLandroidx/appcompat/widget/FitWindowsFrameLayout;->fitSystemWindows(Landroid/graphics/Rect;)Z PLandroidx/appcompat/widget/ForwardingListener;->onViewDetachedFromWindow(Landroid/view/View;)V PLandroidx/appcompat/widget/LinearLayoutCompat;->getBaseline()I -PLandroidx/appcompat/widget/LinearLayoutCompat;->onInitializeAccessibilityNodeInfo(Landroid/view/accessibility/AccessibilityNodeInfo;)V PLandroidx/appcompat/widget/ResourceManagerInternal;->addTintListToCache(Landroid/content/Context;ILandroid/content/res/ColorStateList;)V PLandroidx/appcompat/widget/ResourceManagerInternal;->getTintMode(I)Landroid/graphics/PorterDuff$Mode; PLandroidx/appcompat/widget/SearchView$10;->(Landroidx/appcompat/widget/SearchView;)V @@ -44356,11 +44991,6 @@ PLandroidx/appcompat/widget/Toolbar;->setTitleTextColor(Landroid/content/res/Col PLandroidx/collection/ArraySet;->indexOf(Ljava/lang/Object;)I PLandroidx/collection/ArraySet;->remove(Ljava/lang/Object;)Z PLandroidx/collection/CircularArray;->popFirst()Ljava/lang/Object; -PLandroidx/collection/IntIntMap;->findKeyIndex(I)I -PLandroidx/collection/IntIntMap;->getOrDefault(II)I -PLandroidx/collection/IntObjectMap;->contains(I)Z -PLandroidx/collection/MutableIntObjectMap;->adjustStorage()V -PLandroidx/collection/MutableIntObjectMap;->resizeStorage(I)V PLandroidx/collection/MutableScatterSet;->adjustStorage()V PLandroidx/collection/MutableScatterSet;->plusAssign(Ljava/lang/Object;)V PLandroidx/collection/MutableScatterSet;->resizeStorage(I)V @@ -44368,27 +44998,9 @@ PLandroidx/collection/ScatterMap;->isNotEmpty()Z PLandroidx/collection/SimpleArrayMap;->equals(Ljava/lang/Object;)Z PLandroidx/collection/SparseArrayCompat;->append(ILjava/lang/Object;)V PLandroidx/collection/SparseArrayCompat;->clear()V -PLandroidx/compose/foundation/AbstractClickableNode$applySemantics$1;->(Landroidx/compose/foundation/AbstractClickableNode;)V -PLandroidx/compose/foundation/AbstractClickableNode;->applyAdditionalSemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V -PLandroidx/compose/foundation/AbstractClickableNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V PLandroidx/compose/foundation/AbstractClickableNode;->disposeInteractions()V -PLandroidx/compose/foundation/AbstractClickableNode;->getShouldClearDescendantSemantics()Z -PLandroidx/compose/foundation/AbstractClickableNode;->getShouldMergeDescendantSemantics()Z PLandroidx/compose/foundation/AbstractClickableNode;->onDetach()V -PLandroidx/compose/foundation/FocusableNode$applySemantics$1;->(Landroidx/compose/foundation/FocusableNode;)V -PLandroidx/compose/foundation/FocusableNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V -PLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode$applySemantics$1;->(Landroidx/compose/foundation/text/modifiers/TextStringSimpleNode;)V -PLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode$applySemantics$2;->(Landroidx/compose/foundation/text/modifiers/TextStringSimpleNode;)V -PLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode$applySemantics$3;->(Landroidx/compose/foundation/text/modifiers/TextStringSimpleNode;)V -PLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode$applySemantics$4;->(Landroidx/compose/foundation/text/modifiers/TextStringSimpleNode;)V -PLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V -PLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode;->getShouldClearDescendantSemantics()Z -PLandroidx/compose/foundation/text/modifiers/TextStringSimpleNode;->getShouldMergeDescendantSemantics()Z PLandroidx/compose/material/ripple/AndroidRippleNode;->onDetach()V -PLandroidx/compose/material3/ButtonKt$Button$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V -PLandroidx/compose/material3/ButtonKt$Button$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; -PLandroidx/compose/material3/IconKt$Icon$semantics$1$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V -PLandroidx/compose/material3/IconKt$Icon$semantics$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; PLandroidx/compose/runtime/AbstractApplier;->clear()V PLandroidx/compose/runtime/ComposableSingletons$CompositionKt;->getLambda-2$runtime_release()Lkotlin/jvm/functions/Function2; PLandroidx/compose/runtime/ComposerImpl;->deactivate$runtime_release()V @@ -44464,62 +45076,20 @@ PLandroidx/compose/ui/contentcapture/AndroidContentCaptureManager;->onViewDetach PLandroidx/compose/ui/contentcapture/AndroidContentCaptureManager;->updateBuffersOnDisappeared(Landroidx/compose/ui/semantics/SemanticsNode;)V PLandroidx/compose/ui/draw/CacheDrawModifierNodeImpl;->onDetach()V PLandroidx/compose/ui/focus/FocusTargetNode;->onDetach()V -PLandroidx/compose/ui/geometry/MutableRect;->()V -PLandroidx/compose/ui/geometry/MutableRect;->(FFFF)V -PLandroidx/compose/ui/geometry/MutableRect;->getBottom()F -PLandroidx/compose/ui/geometry/MutableRect;->getLeft()F -PLandroidx/compose/ui/geometry/MutableRect;->getRight()F -PLandroidx/compose/ui/geometry/MutableRect;->getTop()F -PLandroidx/compose/ui/geometry/MutableRect;->isEmpty()Z -PLandroidx/compose/ui/geometry/MutableRect;->setRight(F)V -PLandroidx/compose/ui/geometry/MutableRect;->setTop(F)V -PLandroidx/compose/ui/geometry/MutableRectKt;->toRect(Landroidx/compose/ui/geometry/MutableRect;)Landroidx/compose/ui/geometry/Rect; -PLandroidx/compose/ui/geometry/OffsetKt;->isUnspecified-k-4lQ0M(J)Z -PLandroidx/compose/ui/geometry/SizeKt;->getCenter-uvyYCjk(J)J PLandroidx/compose/ui/graphics/AndroidGraphicsContext;->releaseGraphicsLayer(Landroidx/compose/ui/graphics/layer/GraphicsLayer;)V -PLandroidx/compose/ui/graphics/AndroidMatrixConversions_androidKt;->setFrom-tU-YjHk([FLandroid/graphics/Matrix;)V -PLandroidx/compose/ui/graphics/Matrix;->reset-impl([F)V -PLandroidx/compose/ui/graphics/Matrix;->rotateX-impl([FF)V -PLandroidx/compose/ui/graphics/Matrix;->rotateY-impl([FF)V -PLandroidx/compose/ui/graphics/Matrix;->scale-impl$default([FFFFILjava/lang/Object;)V -PLandroidx/compose/ui/graphics/MatrixKt;->access$dot-p89u6pk([FI[FI)F -PLandroidx/compose/ui/graphics/MatrixKt;->dot-p89u6pk([FI[FI)F PLandroidx/compose/ui/graphics/layer/ChildLayerDependenciesTracker;->access$setDependency$p(Landroidx/compose/ui/graphics/layer/ChildLayerDependenciesTracker;Landroidx/compose/ui/graphics/layer/GraphicsLayer;)V PLandroidx/compose/ui/graphics/layer/GraphicsLayer;->discardContentIfReleasedAndHaveNoParentLayerUsages()V PLandroidx/compose/ui/graphics/layer/GraphicsLayer;->discardDisplayList$ui_graphics_release()V -PLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getPivotOffset-F1C5BW0()J -PLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getRotationX()F -PLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getRotationY()F -PLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getRotationZ()F -PLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getScaleX()F -PLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getScaleY()F -PLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getTranslationX()F -PLandroidx/compose/ui/graphics/layer/GraphicsLayer;->getTranslationY()F PLandroidx/compose/ui/graphics/layer/GraphicsLayer;->onRemovedFromParentLayer()V PLandroidx/compose/ui/graphics/layer/GraphicsLayer;->release$ui_graphics_release()V PLandroidx/compose/ui/graphics/layer/GraphicsLayerV29$$ExternalSyntheticApiModelOutline13;->m(Landroid/graphics/RenderNode;)V PLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->discardDisplayList()V -PLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getRotationX()F -PLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getRotationY()F -PLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getRotationZ()F -PLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getScaleX()F -PLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getScaleY()F -PLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getTranslationX()F -PLandroidx/compose/ui/graphics/layer/GraphicsLayerV29;->getTranslationY()F -PLandroidx/compose/ui/layout/LayoutCoordinates$-CC;->localBoundingBoxOf$default(Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/layout/LayoutCoordinates;ZILjava/lang/Object;)Landroidx/compose/ui/geometry/Rect; -PLandroidx/compose/ui/layout/LayoutCoordinatesKt;->boundsInRoot(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/geometry/Rect; -PLandroidx/compose/ui/layout/LayoutCoordinatesKt;->findRootCoordinates(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/layout/LayoutCoordinates; -PLandroidx/compose/ui/layout/Placeable;->getMeasuredHeight()I -PLandroidx/compose/ui/layout/Placeable;->getMeasuredWidth()I PLandroidx/compose/ui/node/AlignmentLines;->reset$ui_release()V PLandroidx/compose/ui/node/DelegatingNode;->markAsDetached$ui_release()V PLandroidx/compose/ui/node/DelegatingNode;->runDetachLifecycle$ui_release()V PLandroidx/compose/ui/node/DelegatingNode;->undelegate(Landroidx/compose/ui/node/DelegatableNode;)V PLandroidx/compose/ui/node/DepthSortedSetsForDifferentPasses;->remove(Landroidx/compose/ui/node/LayoutNode;)Z -PLandroidx/compose/ui/node/LayoutNode$collapsedSemantics$1$1;->(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/internal/Ref$ObjectRef;)V -PLandroidx/compose/ui/node/LayoutNode$collapsedSemantics$1$1;->invoke()Ljava/lang/Object; PLandroidx/compose/ui/node/LayoutNode;->access$setIgnoreRemeasureRequests$p(Landroidx/compose/ui/node/LayoutNode;Z)V -PLandroidx/compose/ui/node/LayoutNode;->getViewConfiguration()Landroidx/compose/ui/platform/ViewConfiguration; PLandroidx/compose/ui/node/LayoutNode;->onChildRemoved(Landroidx/compose/ui/node/LayoutNode;)V PLandroidx/compose/ui/node/LayoutNode;->onRelease()V PLandroidx/compose/ui/node/LayoutNode;->removeAll$ui_release()V @@ -44533,94 +45103,33 @@ PLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->get(I)Ljava/lang/ PLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->getSize()I PLandroidx/compose/ui/node/NodeChain;->markAsDetached$ui_release()V PLandroidx/compose/ui/node/NodeChain;->runDetachLifecycle$ui_release()V -PLandroidx/compose/ui/node/NodeCoordinator;->ancestorToLocal(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/geometry/MutableRect;Z)V -PLandroidx/compose/ui/node/NodeCoordinator;->calculateMinimumTouchTargetPadding-E7KxVPU(J)J -PLandroidx/compose/ui/node/NodeCoordinator;->findCommonAncestor$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)Landroidx/compose/ui/node/NodeCoordinator; -PLandroidx/compose/ui/node/NodeCoordinator;->getMinimumTouchTargetSize-NH-jbRc()J -PLandroidx/compose/ui/node/NodeCoordinator;->getParentLayoutCoordinates()Landroidx/compose/ui/layout/LayoutCoordinates; -PLandroidx/compose/ui/node/NodeCoordinator;->getRectCache()Landroidx/compose/ui/geometry/MutableRect; -PLandroidx/compose/ui/node/NodeCoordinator;->isAttached()Z -PLandroidx/compose/ui/node/NodeCoordinator;->isTransparent()Z -PLandroidx/compose/ui/node/NodeCoordinator;->onCoordinatesUsed$ui_release()V PLandroidx/compose/ui/node/NodeCoordinator;->onRelease()V -PLandroidx/compose/ui/node/NodeCoordinator;->rectInParent$ui_release$default(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/geometry/MutableRect;ZZILjava/lang/Object;)V PLandroidx/compose/ui/node/NodeCoordinator;->releaseLayer()V -PLandroidx/compose/ui/node/NodeCoordinator;->toCoordinator(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/node/NodeCoordinator; -PLandroidx/compose/ui/node/NodeCoordinator;->touchBoundsInRoot()Landroidx/compose/ui/geometry/Rect; PLandroidx/compose/ui/node/NodeKindKt;->autoInvalidateRemovedNode(Landroidx/compose/ui/Modifier$Node;)V PLandroidx/compose/ui/node/OnPositionedDispatcher;->remove(Landroidx/compose/ui/node/LayoutNode;)V PLandroidx/compose/ui/node/OwnerSnapshotObserver$clearInvalidObservations$1;->()V PLandroidx/compose/ui/node/OwnerSnapshotObserver$clearInvalidObservations$1;->()V PLandroidx/compose/ui/node/OwnerSnapshotObserver;->clearInvalidObservations$ui_release()V -PLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeSemanticsReads$ui_release(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/functions/Function0;)V PLandroidx/compose/ui/node/OwnerSnapshotObserver;->stopObserving$ui_release()V -PLandroidx/compose/ui/node/SemanticsModifierNode$-CC;->$default$getShouldClearDescendantSemantics(Landroidx/compose/ui/node/SemanticsModifierNode;)Z -PLandroidx/compose/ui/node/SemanticsModifierNode$-CC;->$default$getShouldMergeDescendantSemantics(Landroidx/compose/ui/node/SemanticsModifierNode;)Z -PLandroidx/compose/ui/node/SemanticsModifierNodeKt;->getUseMinimumTouchTarget(Landroidx/compose/ui/semantics/SemanticsConfiguration;)Z -PLandroidx/compose/ui/node/SemanticsModifierNodeKt;->touchBoundsInRoot(Landroidx/compose/ui/Modifier$Node;Z)Landroidx/compose/ui/geometry/Rect; PLandroidx/compose/ui/node/TailModifierNode;->onDetach()V PLandroidx/compose/ui/node/UiApplier;->onClear()V PLandroidx/compose/ui/platform/AbstractComposeView;->disposeComposition()V -PLandroidx/compose/ui/platform/AndroidComposeView;->addView(Landroid/view/View;)V -PLandroidx/compose/ui/platform/AndroidComposeView;->addView(Landroid/view/View;I)V -PLandroidx/compose/ui/platform/AndroidComposeView;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V PLandroidx/compose/ui/platform/AndroidComposeView;->clearChildInvalidObservations(Landroid/view/ViewGroup;)V -PLandroidx/compose/ui/platform/AndroidComposeView;->getAndroidViewsHandler$ui_release()Landroidx/compose/ui/platform/AndroidViewsHandler; PLandroidx/compose/ui/platform/AndroidComposeView;->onDetach(Landroidx/compose/ui/node/LayoutNode;)V PLandroidx/compose/ui/platform/AndroidComposeView;->onDetachedFromWindow()V PLandroidx/compose/ui/platform/AndroidComposeView;->onPause(Landroidx/lifecycle/LifecycleOwner;)V PLandroidx/compose/ui/platform/AndroidComposeView;->onStop(Landroidx/lifecycle/LifecycleOwner;)V -PLandroidx/compose/ui/platform/AndroidComposeView;->recalculateWindowViewTransforms()V PLandroidx/compose/ui/platform/AndroidComposeView;->recycle$ui_release(Landroidx/compose/ui/node/OwnedLayer;)Z PLandroidx/compose/ui/platform/AndroidComposeView;->requestClearInvalidObservations()V PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$1;->onViewDetachedFromWindow(Landroid/view/View;)V -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api24Impl;->()V -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api24Impl;->()V -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api24Impl;->addSetProgressAction(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;Landroidx/compose/ui/semantics/SemanticsNode;)V -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api29Impl;->()V -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api29Impl;->()V -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$ComposeAccessibilityNodeProvider;->createAccessibilityNodeInfo(I)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$boundsUpdatesEventLoop$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->access$createNodeInfo(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;I)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->access$getHandler$p(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)Landroid/os/Handler; PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->access$getSemanticsChangeChecker$p(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)Ljava/lang/Runnable; -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->access$getSendingFocusAffectingEvent$p(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)Z -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getAccessibilityNodeProvider(Landroid/view/View;)Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat; -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getAccessibilitySelectionEnd(Landroidx/compose/ui/semantics/SemanticsNode;)I -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getAccessibilitySelectionStart(Landroidx/compose/ui/semantics/SemanticsNode;)I -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getCurrentSemanticsNodes()Landroidx/collection/IntObjectMap; -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getTextForTextField(Landroidx/compose/ui/semantics/SemanticsConfiguration;)Landroidx/compose/ui/text/AnnotatedString; -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setContentInvalid(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setIsCheckable(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setStateDescription(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setText(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->toSpannableString(Landroidx/compose/ui/text/AnnotatedString;)Landroid/text/SpannableString; -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->trimToSize(Ljava/lang/CharSequence;I)Ljava/lang/CharSequence; -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1;->()V -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1;->()V -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)Ljava/lang/Boolean; -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt$excludeLineAndPageGranularities$ancestor$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$enabled(Landroidx/compose/ui/semantics/SemanticsNode;)Z -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$excludeLineAndPageGranularities(Landroidx/compose/ui/semantics/SemanticsNode;)Z -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->access$isVisible(Landroidx/compose/ui/semantics/SemanticsNode;)Z -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->excludeLineAndPageGranularities(Landroidx/compose/ui/semantics/SemanticsNode;)Z -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->findClosestParentNode(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/node/LayoutNode; -PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;->isVisible(Landroidx/compose/ui/semantics/SemanticsNode;)Z PLandroidx/compose/ui/platform/AndroidComposeViewTranslationCallbackS$$ExternalSyntheticApiModelOutline2;->m(Landroid/view/View;)V PLandroidx/compose/ui/platform/AndroidComposeViewTranslationCallbackS;->clearViewTranslationCallback(Landroid/view/View;)V PLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2$1$invoke$$inlined$onDispose$1;->dispose()V PLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1$1$invoke$$inlined$onDispose$1;->dispose()V PLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainResourceIdCache$1$1$invoke$$inlined$onDispose$1;->dispose()V -PLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$setScheduledFrameDispatch$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;Z)V -PLandroidx/compose/ui/platform/AndroidViewConfiguration;->getMinimumTouchTargetSize-MYxV2XQ()J -PLandroidx/compose/ui/platform/AndroidViewsHandler;->()V -PLandroidx/compose/ui/platform/AndroidViewsHandler;->(Landroid/content/Context;)V -PLandroidx/compose/ui/platform/AndroidViewsHandler;->getLayoutNodeToHolder()Ljava/util/HashMap; -PLandroidx/compose/ui/platform/AndroidViewsHandler;->onLayout(ZIIII)V -PLandroidx/compose/ui/platform/AndroidViewsHandler;->onMeasure(II)V -PLandroidx/compose/ui/platform/AndroidViewsHandler;->requestLayout()V -PLandroidx/compose/ui/platform/CalculateMatrixToWindowApi29$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/View;Landroid/graphics/Matrix;)V -PLandroidx/compose/ui/platform/ComposeView;->getAccessibilityClassName()Ljava/lang/CharSequence; PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry;->dispose()V PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$$ExternalSyntheticLambda0;->saveState()Landroid/os/Bundle; PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$1;->invoke()Ljava/lang/Object; @@ -44629,142 +45138,12 @@ PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->$r8$l PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->DisposableSaveableStateRegistry$lambda$0(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)Landroid/os/Bundle; PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->toBundle(Ljava/util/Map;)Landroid/os/Bundle; PLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->destroy()V -PLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->getMatrix-sQKQjiQ()[F -PLandroidx/compose/ui/platform/GraphicsLayerOwnerLayer;->mapBounds(Landroidx/compose/ui/geometry/MutableRect;Z)V -PLandroidx/compose/ui/platform/InvertMatrixKt;->invertTo-JiSxe2E([F[F)Z -PLandroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds;->()V -PLandroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds;->(Landroidx/compose/ui/semantics/SemanticsNode;Landroid/graphics/Rect;)V -PLandroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds;->getAdjustedBounds()Landroid/graphics/Rect; -PLandroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds;->getSemanticsNode()Landroidx/compose/ui/semantics/SemanticsNode; -PLandroidx/compose/ui/platform/SemanticsUtils_androidKt;->()V -PLandroidx/compose/ui/platform/SemanticsUtils_androidKt;->getAllUncoveredSemanticsNodesToIntObjectMap(Landroidx/compose/ui/semantics/SemanticsOwner;)Landroidx/collection/IntObjectMap; -PLandroidx/compose/ui/platform/SemanticsUtils_androidKt;->isImportantForAccessibility(Landroidx/compose/ui/semantics/SemanticsNode;)Z -PLandroidx/compose/ui/platform/SemanticsUtils_androidKt;->toLegacyClassName-V4PA4sw(I)Ljava/lang/String; -PLandroidx/compose/ui/platform/ViewConfiguration$-CC;->$default$getMinimumTouchTargetSize-MYxV2XQ(Landroidx/compose/ui/platform/ViewConfiguration;)J PLandroidx/compose/ui/platform/WeakCache;->push(Ljava/lang/Object;)V PLandroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$1;->onViewDetachedFromWindow(Landroid/view/View;)V PLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$1;->onViewDetachedFromWindow(Landroid/view/View;)V PLandroidx/compose/ui/platform/WrappedComposition;->dispose()V -PLandroidx/compose/ui/platform/accessibility/CollectionInfo_androidKt;->setCollectionItemInfo(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V -PLandroidx/compose/ui/semantics/AccessibilityAction;->()V -PLandroidx/compose/ui/semantics/AccessibilityAction;->(Ljava/lang/String;Lkotlin/Function;)V -PLandroidx/compose/ui/semantics/AccessibilityAction;->getLabel()Ljava/lang/String; -PLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V -PLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->getShouldClearDescendantSemantics()Z -PLandroidx/compose/ui/semantics/CoreSemanticsModifierNode;->getShouldMergeDescendantSemantics()Z -PLandroidx/compose/ui/semantics/EmptySemanticsModifier;->applySemantics(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V -PLandroidx/compose/ui/semantics/EmptySemanticsModifier;->getShouldClearDescendantSemantics()Z -PLandroidx/compose/ui/semantics/EmptySemanticsModifier;->getShouldMergeDescendantSemantics()Z -PLandroidx/compose/ui/semantics/Role$Companion;->getCheckbox-o7Vup1c()I -PLandroidx/compose/ui/semantics/Role$Companion;->getImage-o7Vup1c()I -PLandroidx/compose/ui/semantics/Role$Companion;->getRadioButton-o7Vup1c()I -PLandroidx/compose/ui/semantics/Role$Companion;->getSwitch-o7Vup1c()I -PLandroidx/compose/ui/semantics/Role$Companion;->getTab-o7Vup1c()I -PLandroidx/compose/ui/semantics/Role;->access$getCheckbox$cp()I -PLandroidx/compose/ui/semantics/Role;->access$getImage$cp()I -PLandroidx/compose/ui/semantics/Role;->access$getRadioButton$cp()I -PLandroidx/compose/ui/semantics/Role;->access$getSwitch$cp()I -PLandroidx/compose/ui/semantics/Role;->access$getTab$cp()I -PLandroidx/compose/ui/semantics/Role;->equals-impl0(II)Z -PLandroidx/compose/ui/semantics/Role;->unbox-impl()I -PLandroidx/compose/ui/semantics/SemanticsActions;->getClearTextSubstitution()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getCollapse()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getCopyText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getCutText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getDismiss()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getExpand()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getGetTextLayoutResult()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getOnClick()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getOnImeAction()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getOnLongClick()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getPageDown()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getPageLeft()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getPageRight()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getPageUp()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getPasteText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getRequestFocus()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getScrollBy()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getSetProgress()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getSetSelection()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getSetText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getSetTextSubstitution()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsActions;->getShowTextSubstitution()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsConfiguration;->get(Landroidx/compose/ui/semantics/SemanticsPropertyKey;)Ljava/lang/Object; -PLandroidx/compose/ui/semantics/SemanticsConfiguration;->isMergingSemanticsOfDescendants()Z -PLandroidx/compose/ui/semantics/SemanticsConfiguration;->set(Landroidx/compose/ui/semantics/SemanticsPropertyKey;Ljava/lang/Object;)V -PLandroidx/compose/ui/semantics/SemanticsConfiguration;->setClearingSemantics(Z)V -PLandroidx/compose/ui/semantics/SemanticsConfiguration;->setMergingSemanticsOfDescendants(Z)V -PLandroidx/compose/ui/semantics/SemanticsNode$emitFakeNodes$fakeNode$1;->(Landroidx/compose/ui/semantics/Role;)V -PLandroidx/compose/ui/semantics/SemanticsNode$emitFakeNodes$fakeNode$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V -PLandroidx/compose/ui/semantics/SemanticsNode$emitFakeNodes$fakeNode$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; -PLandroidx/compose/ui/semantics/SemanticsNode$fakeSemanticsNode$fakeNode$1;->(Lkotlin/jvm/functions/Function1;)V -PLandroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1;->()V -PLandroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1;->()V -PLandroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)Ljava/lang/Boolean; -PLandroidx/compose/ui/semantics/SemanticsNode$isUnmergedLeafNode$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; -PLandroidx/compose/ui/semantics/SemanticsNode$parent$2;->()V -PLandroidx/compose/ui/semantics/SemanticsNode$parent$2;->()V -PLandroidx/compose/ui/semantics/SemanticsNode$parent$2;->invoke(Landroidx/compose/ui/node/LayoutNode;)Ljava/lang/Boolean; -PLandroidx/compose/ui/semantics/SemanticsNode$parent$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; -PLandroidx/compose/ui/semantics/SemanticsNode;->findCoordinatorToGetBounds$ui_release()Landroidx/compose/ui/node/NodeCoordinator; -PLandroidx/compose/ui/semantics/SemanticsNode;->getBoundsInRoot()Landroidx/compose/ui/geometry/Rect; -PLandroidx/compose/ui/semantics/SemanticsNode;->getConfig()Landroidx/compose/ui/semantics/SemanticsConfiguration; -PLandroidx/compose/ui/semantics/SemanticsNode;->getId()I -PLandroidx/compose/ui/semantics/SemanticsNode;->getLayoutInfo()Landroidx/compose/ui/layout/LayoutInfo; -PLandroidx/compose/ui/semantics/SemanticsNode;->getLayoutNode$ui_release()Landroidx/compose/ui/node/LayoutNode; -PLandroidx/compose/ui/semantics/SemanticsNode;->getTouchBoundsInRoot()Landroidx/compose/ui/geometry/Rect; -PLandroidx/compose/ui/semantics/SemanticsNode;->isFake$ui_release()Z -PLandroidx/compose/ui/semantics/SemanticsNode;->isTransparent$ui_release()Z -PLandroidx/compose/ui/semantics/SemanticsNode;->isUnmergedLeafNode$ui_release()Z -PLandroidx/compose/ui/semantics/SemanticsNodeKt;->access$roleFakeNodeId(Landroidx/compose/ui/semantics/SemanticsNode;)I -PLandroidx/compose/ui/semantics/SemanticsNodeKt;->findClosestParentNode(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/node/LayoutNode; -PLandroidx/compose/ui/semantics/SemanticsNodeKt;->roleFakeNodeId(Landroidx/compose/ui/semantics/SemanticsNode;)I -PLandroidx/compose/ui/semantics/SemanticsProperties;->getDisabled()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsProperties;->getError()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsProperties;->getHeading()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsProperties;->getInvisibleToUser()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsProperties;->getPassword()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsProperties;->getSelectableGroup()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsProperties;->getText()Landroidx/compose/ui/semantics/SemanticsPropertyKey; -PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->clearTextSubstitution$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V -PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->clearTextSubstitution(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V -PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->getTextLayoutResult$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V -PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->getTextLayoutResult(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V -PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->onClick(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V -PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->requestFocus$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V -PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->requestFocus(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V -PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setContentDescription(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;)V -PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setFocused(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Z)V -PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setRole-kuIjeqM(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;I)V -PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setText(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Landroidx/compose/ui/text/AnnotatedString;)V -PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setTextSubstitution$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V -PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setTextSubstitution(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V -PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->showTextSubstitution$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V -PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->showTextSubstitution(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V -PLandroidx/compose/ui/semantics/SemanticsPropertyKey;->isImportantForAccessibility$ui_release()Z -PLandroidx/compose/ui/semantics/SemanticsPropertyKey;->setValue(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Lkotlin/reflect/KProperty;Ljava/lang/Object;)V -PLandroidx/compose/ui/text/AnnotatedString;->getLength()I -PLandroidx/compose/ui/text/AnnotatedString;->getLinkAnnotations(II)Ljava/util/List; -PLandroidx/compose/ui/text/AnnotatedString;->getSpanStylesOrNull$ui_text_release()Ljava/util/List; -PLandroidx/compose/ui/text/AnnotatedString;->getTtsAnnotations(II)Ljava/util/List; -PLandroidx/compose/ui/text/AnnotatedString;->getUrlAnnotations(II)Ljava/util/List; -PLandroidx/compose/ui/text/AnnotatedString;->length()I -PLandroidx/compose/ui/text/platform/AndroidAccessibilitySpannableString_androidKt;->toAccessibilitySpannableString(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Landroidx/compose/ui/text/platform/URLSpanCache;)Landroid/text/SpannableString; PLandroidx/compose/ui/text/platform/ImmutableBool;->getValue()Ljava/lang/Boolean; PLandroidx/compose/ui/text/platform/ImmutableBool;->getValue()Ljava/lang/Object; -PLandroidx/compose/ui/unit/Density$-CC;->$default$toSize-XkaWNTQ(Landroidx/compose/ui/unit/Density;J)J -PLandroidx/compose/ui/unit/DensityWithConverter;->toSize-XkaWNTQ(J)J -PLandroidx/compose/ui/unit/DpKt;->DpSize-YgX7TsA(FF)J -PLandroidx/compose/ui/unit/DpSize$Companion;->()V -PLandroidx/compose/ui/unit/DpSize$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V -PLandroidx/compose/ui/unit/DpSize;->()V -PLandroidx/compose/ui/unit/DpSize;->constructor-impl(J)J -PLandroidx/compose/ui/unit/DpSize;->getHeight-D9Ej5fM(J)F -PLandroidx/compose/ui/unit/DpSize;->getWidth-D9Ej5fM(J)F -PLandroidx/compose/ui/util/ListUtilsKt;->appendElement(Ljava/lang/Appendable;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V -PLandroidx/compose/ui/util/ListUtilsKt;->fastJoinTo(Ljava/util/List;Ljava/lang/Appendable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;)Ljava/lang/Appendable; -PLandroidx/compose/ui/util/ListUtilsKt;->fastJoinToString$default(Ljava/util/List;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String; -PLandroidx/compose/ui/util/ListUtilsKt;->fastJoinToString(Ljava/util/List;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;)Ljava/lang/String; PLandroidx/concurrent/futures/AbstractResolvableFuture$AtomicHelper;->()V PLandroidx/concurrent/futures/AbstractResolvableFuture$AtomicHelper;->(Landroidx/concurrent/futures/AbstractResolvableFuture$1;)V PLandroidx/concurrent/futures/AbstractResolvableFuture$Listener;->()V @@ -44794,6 +45173,8 @@ PLandroidx/constraintlayout/core/widgets/ConstraintAnchor;->hasCenteredDependent PLandroidx/constraintlayout/core/widgets/ConstraintWidget;->getVerticalMargin()I PLandroidx/constraintlayout/core/widgets/ConstraintWidget;->setFinalLeft(I)V PLandroidx/constraintlayout/core/widgets/ConstraintWidget;->setVerticalDimension(II)V +PLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->addHorizontalWrapMaxVariable(Landroidx/constraintlayout/core/widgets/ConstraintAnchor;)V +PLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->addHorizontalWrapMinVariable(Landroidx/constraintlayout/core/widgets/ConstraintAnchor;)V PLandroidx/constraintlayout/core/widgets/Guideline$1;->()V PLandroidx/constraintlayout/core/widgets/Guideline;->()V PLandroidx/constraintlayout/core/widgets/Guideline;->getOrientation()I @@ -44854,11 +45235,9 @@ PLandroidx/core/text/util/LinkifyCompat;->()V PLandroidx/core/text/util/LinkifyCompat;->addLinks(Landroid/text/Spannable;I)Z PLandroidx/core/text/util/LinkifyCompat;->shouldAddLinksFallbackToFramework()Z PLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->dispatchPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z -PLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->getAccessibilityNodeProvider(Landroid/view/View;)Landroid/view/accessibility/AccessibilityNodeProvider; PLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->onPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V PLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;->sendAccessibilityEvent(Landroid/view/View;I)V PLandroidx/core/view/AccessibilityDelegateCompat;->dispatchPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z -PLandroidx/core/view/AccessibilityDelegateCompat;->onInitializeAccessibilityNodeInfo(Landroid/view/View;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V PLandroidx/core/view/AccessibilityDelegateCompat;->onPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V PLandroidx/core/view/AccessibilityDelegateCompat;->sendAccessibilityEvent(Landroid/view/View;I)V PLandroidx/core/view/GestureDetectorCompat;->onTouchEvent(Landroid/view/MotionEvent;)Z @@ -44874,32 +45253,16 @@ PLandroidx/core/view/NestedScrollingParentHelper;->onNestedScrollAccepted(Landro PLandroidx/core/view/NestedScrollingParentHelper;->onStopNestedScroll(Landroid/view/View;I)V PLandroidx/core/view/SoftwareKeyboardControllerCompat$Impl30$$ExternalSyntheticApiModelOutline3;->m()I PLandroidx/core/view/TreeIterator;->(Ljava/util/Iterator;Lkotlin/jvm/functions/Function1;)V -PLandroidx/core/view/TreeIterator;->next()Ljava/lang/Object; PLandroidx/core/view/TreeIterator;->prepareNextIterator(Ljava/lang/Object;)V -PLandroidx/core/view/ViewCompat$1;->(ILjava/lang/Class;I)V -PLandroidx/core/view/ViewCompat$1;->frameworkGet(Landroid/view/View;)Ljava/lang/Boolean; -PLandroidx/core/view/ViewCompat$1;->frameworkGet(Landroid/view/View;)Ljava/lang/Object; -PLandroidx/core/view/ViewCompat$3;->(ILjava/lang/Class;II)V -PLandroidx/core/view/ViewCompat$3;->frameworkGet(Landroid/view/View;)Ljava/lang/CharSequence; -PLandroidx/core/view/ViewCompat$3;->frameworkGet(Landroid/view/View;)Ljava/lang/Object; -PLandroidx/core/view/ViewCompat$4;->(ILjava/lang/Class;I)V -PLandroidx/core/view/ViewCompat$4;->frameworkGet(Landroid/view/View;)Ljava/lang/Boolean; -PLandroidx/core/view/ViewCompat$4;->frameworkGet(Landroid/view/View;)Ljava/lang/Object; -PLandroidx/core/view/ViewCompat$AccessibilityViewProperty;->(ILjava/lang/Class;I)V PLandroidx/core/view/ViewCompat$Api20Impl;->dispatchApplyWindowInsets(Landroid/view/View;Landroid/view/WindowInsets;)Landroid/view/WindowInsets; PLandroidx/core/view/ViewCompat$Api20Impl;->onApplyWindowInsets(Landroid/view/View;Landroid/view/WindowInsets;)Landroid/view/WindowInsets; PLandroidx/core/view/ViewCompat$Api21Impl$1;->onApplyWindowInsets(Landroid/view/View;Landroid/view/WindowInsets;)Landroid/view/WindowInsets; PLandroidx/core/view/ViewCompat$Api21Impl;->getZ(Landroid/view/View;)F PLandroidx/core/view/ViewCompat$Api23Impl;->getRootWindowInsets(Landroid/view/View;)Landroidx/core/view/WindowInsetsCompat; -PLandroidx/core/view/ViewCompat$Api28Impl;->isAccessibilityHeading(Landroid/view/View;)Z -PLandroidx/core/view/ViewCompat$Api28Impl;->isScreenReaderFocusable(Landroid/view/View;)Z -PLandroidx/core/view/ViewCompat$Api30Impl;->getStateDescription(Landroid/view/View;)Ljava/lang/CharSequence; -PLandroidx/core/view/ViewCompat;->accessibilityHeadingProperty()Landroidx/core/view/ViewCompat$AccessibilityViewProperty; PLandroidx/core/view/ViewCompat;->dispatchApplyWindowInsets(Landroid/view/View;Landroidx/core/view/WindowInsetsCompat;)Landroidx/core/view/WindowInsetsCompat; PLandroidx/core/view/ViewCompat;->getRootWindowInsets(Landroid/view/View;)Landroidx/core/view/WindowInsetsCompat; PLandroidx/core/view/ViewCompat;->getZ(Landroid/view/View;)F PLandroidx/core/view/ViewCompat;->hasTransientState(Landroid/view/View;)Z -PLandroidx/core/view/ViewCompat;->isScreenReaderFocusable(Landroid/view/View;)Z PLandroidx/core/view/ViewCompat;->onApplyWindowInsets(Landroid/view/View;Landroidx/core/view/WindowInsetsCompat;)Landroidx/core/view/WindowInsetsCompat; PLandroidx/core/view/ViewCompat;->setWindowInsetsAnimationCallback(Landroid/view/View;Landroidx/core/view/WindowInsetsAnimationCompat$Callback;)V PLandroidx/core/view/ViewGroupKt$descendants$1$1;->()V @@ -44978,57 +45341,6 @@ PLandroidx/core/view/WindowInsetsCompat;->toWindowInsetsCompat(Landroid/view/Win PLandroidx/core/view/WindowInsetsCompat;->toWindowInsetsCompat(Landroid/view/WindowInsets;Landroid/view/View;)Landroidx/core/view/WindowInsetsCompat; PLandroidx/core/view/accessibility/AccessibilityEventCompat;->getContentChangeTypes(Landroid/view/accessibility/AccessibilityEvent;)I PLandroidx/core/view/accessibility/AccessibilityEventCompat;->setContentChangeTypes(Landroid/view/accessibility/AccessibilityEvent;I)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline13;->m(Landroid/view/accessibility/AccessibilityNodeInfo;Ljava/util/List;)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline14;->m(Landroid/view/accessibility/AccessibilityNodeInfo;Z)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline3;->m(Landroid/view/accessibility/AccessibilityNodeInfo;Z)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline4;->m(Landroid/view/accessibility/AccessibilityNodeInfo;Ljava/lang/CharSequence;)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline5;->m(Landroid/view/accessibility/AccessibilityNodeInfo;Z)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$Api30Impl;->setStateDescription(Landroid/view/accessibility/AccessibilityNodeInfo;Ljava/lang/CharSequence;)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionInfoCompat;->(Ljava/lang/Object;)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionInfoCompat;->obtain(IIZI)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$CollectionInfoCompat; -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->()V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->addAction(I)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->addAction(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->addChild(Landroid/view/View;I)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->addSpansToExtras(Ljava/lang/CharSequence;Landroid/view/View;)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->extrasIntList(Ljava/lang/String;)Ljava/util/List; -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->getMovementGranularities()I -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->getText()Ljava/lang/CharSequence; -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->hasSpans()Z -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->isClickable()Z -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->isFocusable()Z -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->isFocused()Z -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->obtain()Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setAccessibilityFocused(Z)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setAvailableExtraData(Ljava/util/List;)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setBoundsInScreen(Landroid/graphics/Rect;)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setCheckable(Z)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setClassName(Ljava/lang/CharSequence;)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setClickable(Z)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setCollectionInfo(Ljava/lang/Object;)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setContentDescription(Ljava/lang/CharSequence;)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setEditable(Z)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setEnabled(Z)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setFocusable(Z)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setFocused(Z)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setHeading(Z)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setImportantForAccessibility(Z)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setLongClickable(Z)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setMaxTextLength(I)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setMovementGranularities(I)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setPackageName(Ljava/lang/CharSequence;)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setParent(Landroid/view/View;)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setParent(Landroid/view/View;I)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setPassword(Z)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setScrollable(Z)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setSource(Landroid/view/View;I)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setText(Ljava/lang/CharSequence;)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setTextSelection(II)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setVisibleToUser(Z)V -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->unwrap()Landroid/view/accessibility/AccessibilityNodeInfo; -PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->wrap(Landroid/view/accessibility/AccessibilityNodeInfo;)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; -PLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat$AccessibilityNodeProviderApi19;->createAccessibilityNodeInfo(I)Landroid/view/accessibility/AccessibilityNodeInfo; -PLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat;->getProvider()Ljava/lang/Object; PLandroidx/core/view/inputmethod/EditorInfoCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/inputmethod/EditorInfo;[Ljava/lang/String;)V PLandroidx/core/view/inputmethod/EditorInfoCompat;->()V PLandroidx/core/view/inputmethod/EditorInfoCompat;->setContentMimeTypes(Landroid/view/inputmethod/EditorInfo;[Ljava/lang/String;)V @@ -45112,12 +45424,12 @@ PLandroidx/fragment/app/FragmentManagerViewModel;->clearNonConfigStateInternal(L PLandroidx/fragment/app/FragmentManagerViewModel;->shouldDestroy(Landroidx/fragment/app/Fragment;)Z PLandroidx/fragment/app/FragmentState$1;->()V PLandroidx/fragment/app/FragmentState;->()V +PLandroidx/fragment/app/FragmentState;->(Landroidx/fragment/app/Fragment;)V PLandroidx/fragment/app/FragmentState;->writeToParcel(Landroid/os/Parcel;I)V PLandroidx/fragment/app/FragmentStateManager;->destroyFragmentView()V PLandroidx/fragment/app/FragmentStateManager;->detach()V PLandroidx/fragment/app/FragmentStateManager;->isFragmentViewChild(Landroid/view/View;)Z PLandroidx/fragment/app/FragmentStateManager;->pause()V -PLandroidx/fragment/app/FragmentStateManager;->saveState()Landroid/os/Bundle; PLandroidx/fragment/app/FragmentStateManager;->saveViewState()V PLandroidx/fragment/app/FragmentStateManager;->stop()V PLandroidx/fragment/app/FragmentStore;->getAllSavedState()Ljava/util/HashMap; @@ -45174,14 +45486,12 @@ PLandroidx/lifecycle/SavedStateHandleController;->onStateChanged(Landroidx/lifec PLandroidx/lifecycle/SavedStateHandlesProvider;->saveState()Landroid/os/Bundle; PLandroidx/lifecycle/SavedStateHandlesVM;->getHandles()Ljava/util/Map; PLandroidx/lifecycle/SavedStateViewModelFactoryKt;->access$getVIEWMODEL_SIGNATURE$p()Ljava/util/List; -PLandroidx/lifecycle/ViewModel;->addCloseable(Ljava/lang/String;Ljava/lang/AutoCloseable;)V PLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory;->create(Ljava/lang/Class;)Landroidx/lifecycle/ViewModel; +PLandroidx/lifecycle/viewmodel/internal/CloseableCoroutineScope;->close()V PLandroidx/lifecycle/viewmodel/internal/JvmViewModelProviders;->()V PLandroidx/lifecycle/viewmodel/internal/JvmViewModelProviders;->()V PLandroidx/lifecycle/viewmodel/internal/JvmViewModelProviders;->createViewModel(Ljava/lang/Class;)Landroidx/lifecycle/ViewModel; PLandroidx/lifecycle/viewmodel/internal/ViewModelImpl;->access$closeWithRuntimeException(Landroidx/lifecycle/viewmodel/internal/ViewModelImpl;Ljava/lang/AutoCloseable;)V -PLandroidx/lifecycle/viewmodel/internal/ViewModelImpl;->addCloseable(Ljava/lang/String;Ljava/lang/AutoCloseable;)V -PLandroidx/lifecycle/viewmodel/internal/ViewModelImpl;->closeWithRuntimeException(Ljava/lang/AutoCloseable;)V PLandroidx/loader/app/LoaderManager;->()V PLandroidx/loader/app/LoaderManager;->getInstance(Landroidx/lifecycle/LifecycleOwner;)Landroidx/loader/app/LoaderManager; PLandroidx/loader/app/LoaderManagerImpl$LoaderViewModel$1;->()V @@ -45351,7 +45661,7 @@ PLandroidx/recyclerview/widget/AsyncDifferConfig;->getDiffCallback()Landroidx/re PLandroidx/recyclerview/widget/AsyncListDiffer$1$1;->areContentsTheSame(II)Z PLandroidx/recyclerview/widget/AsyncListDiffer$1$1;->areItemsTheSame(II)Z PLandroidx/recyclerview/widget/AsyncListDiffer$1$1;->getChangePayload(II)Ljava/lang/Object; -PLandroidx/recyclerview/widget/ChildHelper;->isHidden(Landroid/view/View;)Z +PLandroidx/recyclerview/widget/BatchingListUpdateCallback;->onChanged(IILjava/lang/Object;)V PLandroidx/recyclerview/widget/ChildHelper;->removeViewAt(I)V PLandroidx/recyclerview/widget/ConcatAdapter$Config$StableIdMode;->()V PLandroidx/recyclerview/widget/ConcatAdapter$Config$StableIdMode;->(Ljava/lang/String;I)V @@ -45403,7 +45713,7 @@ PLandroidx/recyclerview/widget/DiffUtil$Snake;->()V PLandroidx/recyclerview/widget/DiffUtil$Snake;->diagonalSize()I PLandroidx/recyclerview/widget/DiffUtil$Snake;->hasAdditionOrRemoval()Z PLandroidx/recyclerview/widget/DiffUtil$Snake;->toDiagonal()Landroidx/recyclerview/widget/DiffUtil$Diagonal; -PLandroidx/recyclerview/widget/DiffUtil;->backward(Landroidx/recyclerview/widget/DiffUtil$Range;Landroidx/recyclerview/widget/DiffUtil$Callback;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;I)Landroidx/recyclerview/widget/DiffUtil$Snake; +PLandroidx/recyclerview/widget/DiffUtil;->forward(Landroidx/recyclerview/widget/DiffUtil$Range;Landroidx/recyclerview/widget/DiffUtil$Callback;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;I)Landroidx/recyclerview/widget/DiffUtil$Snake; PLandroidx/recyclerview/widget/GapWorker$LayoutPrefetchRegistryImpl;->lastPrefetchIncludedPosition(I)Z PLandroidx/recyclerview/widget/GapWorker;->remove(Landroidx/recyclerview/widget/RecyclerView;)V PLandroidx/recyclerview/widget/ItemTouchHelper$2;->onInterceptTouchEvent(Landroidx/recyclerview/widget/RecyclerView;Landroid/view/MotionEvent;)Z @@ -45447,19 +45757,12 @@ PLandroidx/recyclerview/widget/RecyclerView$ItemAnimator;->recordPreLayoutInform PLandroidx/recyclerview/widget/RecyclerView$ItemDecoration;->onDraw(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;)V PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->dispatchDetachedFromWindow(Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$Recycler;)V PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroidx/recyclerview/widget/RecyclerView$LayoutParams; -PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getColumnCountForAccessibility(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;)I PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getDecoratedLeft(Landroid/view/View;)I PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getItemCount()I PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getLeftDecorationWidth(Landroid/view/View;)I -PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getRowCountForAccessibility(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;)I -PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getSelectionModeForAccessibility(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;)I -PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->isLayoutHierarchical(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;)Z PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onAddFocusables(Landroidx/recyclerview/widget/RecyclerView;Ljava/util/ArrayList;II)Z PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onDetachedFromWindow(Landroidx/recyclerview/widget/RecyclerView;)V PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onDetachedFromWindow(Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$Recycler;)V -PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onInitializeAccessibilityNodeInfo(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V -PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onInitializeAccessibilityNodeInfo(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V -PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onInitializeAccessibilityNodeInfoForItem(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;Landroid/view/View;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onItemsUpdated(Landroidx/recyclerview/widget/RecyclerView;II)V PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onItemsUpdated(Landroidx/recyclerview/widget/RecyclerView;IILjava/lang/Object;)V PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->removeAndRecycleViewAt(ILandroidx/recyclerview/widget/RecyclerView$Recycler;)V @@ -45497,14 +45800,10 @@ PLandroidx/recyclerview/widget/RecyclerView;->addFocusables(Ljava/util/ArrayList PLandroidx/recyclerview/widget/RecyclerView;->animateChange(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo;Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo;ZZ)V PLandroidx/recyclerview/widget/RecyclerView;->canReuseUpdatedViewHolder(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Z PLandroidx/recyclerview/widget/RecyclerView;->clearNestedRecyclerViewIfNotNested(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)V -PLandroidx/recyclerview/widget/RecyclerView;->computeHorizontalScrollExtent()I -PLandroidx/recyclerview/widget/RecyclerView;->computeHorizontalScrollOffset()I -PLandroidx/recyclerview/widget/RecyclerView;->computeHorizontalScrollRange()I PLandroidx/recyclerview/widget/RecyclerView;->dispatchChildDetached(Landroid/view/View;)V PLandroidx/recyclerview/widget/RecyclerView;->dispatchSaveInstanceState(Landroid/util/SparseArray;)V PLandroidx/recyclerview/widget/RecyclerView;->findInterceptingOnItemTouchListener(Landroid/view/MotionEvent;)Z PLandroidx/recyclerview/widget/RecyclerView;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/view/ViewGroup$LayoutParams; -PLandroidx/recyclerview/widget/RecyclerView;->getItemAnimator()Landroidx/recyclerview/widget/RecyclerView$ItemAnimator; PLandroidx/recyclerview/widget/RecyclerView;->getRecycledViewPool()Landroidx/recyclerview/widget/RecyclerView$RecycledViewPool; PLandroidx/recyclerview/widget/RecyclerView;->invalidateItemDecorations()V PLandroidx/recyclerview/widget/RecyclerView;->onChildDetachedFromWindow(Landroid/view/View;)V @@ -45518,18 +45817,19 @@ PLandroidx/recyclerview/widget/RecyclerView;->startNestedScroll(II)Z PLandroidx/recyclerview/widget/RecyclerView;->stopGlowAnimations(Landroid/view/MotionEvent;)Z PLandroidx/recyclerview/widget/RecyclerView;->stopNestedScroll()V PLandroidx/recyclerview/widget/RecyclerView;->stopNestedScroll(I)V +PLandroidx/recyclerview/widget/RecyclerView;->viewRangeUpdate(IILjava/lang/Object;)V PLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->dispatchPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z PLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->getAndRemoveOriginalDelegateForItem(Landroid/view/View;)Landroidx/core/view/AccessibilityDelegateCompat; PLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->onInitializeAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V PLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->onPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V PLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->sendAccessibilityEvent(Landroid/view/View;I)V PLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->sendAccessibilityEventUnchecked(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V -PLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate;->onInitializeAccessibilityNodeInfo(Landroid/view/View;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V PLandroidx/recyclerview/widget/StableIdStorage$NoStableIdStorage$1;->(Landroidx/recyclerview/widget/StableIdStorage$NoStableIdStorage;)V PLandroidx/recyclerview/widget/StableIdStorage$NoStableIdStorage;->()V PLandroidx/recyclerview/widget/StableIdStorage$NoStableIdStorage;->createStableIdLookup()Landroidx/recyclerview/widget/StableIdStorage$StableIdLookup; PLandroidx/recyclerview/widget/ViewInfoStore$InfoRecord;->drainCache()V PLandroidx/recyclerview/widget/ViewInfoStore;->addToOldChangeHolders(JLandroidx/recyclerview/widget/RecyclerView$ViewHolder;)V +PLandroidx/recyclerview/widget/ViewInfoStore;->isDisappearing(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Z PLandroidx/recyclerview/widget/ViewInfoStore;->onDetach()V PLandroidx/recyclerview/widget/ViewInfoStore;->popFromPostLayout(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo; PLandroidx/recyclerview/widget/ViewInfoStore;->popFromPreLayout(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo; @@ -45645,8 +45945,6 @@ PLcom/fasterxml/jackson/databind/type/TypeBindings;->createIfNeeded(Ljava/lang/C PLcom/fasterxml/jackson/databind/type/TypeFactory;->constructCollectionType(Ljava/lang/Class;Lcom/fasterxml/jackson/databind/JavaType;)Lcom/fasterxml/jackson/databind/type/CollectionType; PLcom/fasterxml/jackson/databind/type/TypeFactory;->constructCollectionType(Ljava/lang/Class;Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/type/CollectionType; PLcom/google/android/gms/common/api/internal/BackgroundDetector;->onActivitySaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V -PLcom/google/android/material/appbar/AppBarLayout$BaseBehavior$2;->onInitializeAccessibilityNodeInfo(Landroid/view/View;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V -PLcom/google/android/material/appbar/AppBarLayout$BaseBehavior;->access$000(Lcom/google/android/material/appbar/AppBarLayout$BaseBehavior;)Z PLcom/google/android/material/appbar/AppBarLayout$BaseBehavior;->animateOffsetTo(Landroidx/coordinatorlayout/widget/CoordinatorLayout;Lcom/google/android/material/appbar/AppBarLayout;IF)V PLcom/google/android/material/appbar/AppBarLayout$BaseBehavior;->animateOffsetWithDuration(Landroidx/coordinatorlayout/widget/CoordinatorLayout;Lcom/google/android/material/appbar/AppBarLayout;II)V PLcom/google/android/material/appbar/AppBarLayout$BaseBehavior;->canDragView(Landroid/view/View;)Z @@ -45787,7 +46085,6 @@ PLio/reactivex/rxjava3/disposables/Disposable$-CC;->disposed()Lio/reactivex/rxja PLio/reactivex/rxjava3/internal/disposables/CancellableDisposable;->dispose()V PLio/reactivex/rxjava3/internal/disposables/EmptyDisposable;->complete(Lio/reactivex/rxjava3/core/MaybeObserver;)V PLio/reactivex/rxjava3/internal/disposables/EmptyDisposable;->dispose()V -PLio/reactivex/rxjava3/internal/disposables/SequentialDisposable;->dispose()V PLio/reactivex/rxjava3/internal/functions/Functions$Array3Func;->(Lio/reactivex/rxjava3/functions/Function3;)V PLio/reactivex/rxjava3/internal/functions/Functions$Array3Func;->apply(Ljava/lang/Object;)Ljava/lang/Object; PLio/reactivex/rxjava3/internal/functions/Functions$Array3Func;->apply([Ljava/lang/Object;)Ljava/lang/Object; @@ -45808,18 +46105,17 @@ PLio/reactivex/rxjava3/internal/observers/QueueDrainObserver;->error()Ljava/lang PLio/reactivex/rxjava3/internal/observers/QueueDrainSubscriberPad0;->()V PLio/reactivex/rxjava3/internal/observers/QueueDrainSubscriberPad2;->()V PLio/reactivex/rxjava3/internal/observers/QueueDrainSubscriberWip;->()V -PLio/reactivex/rxjava3/internal/operators/flowable/AbstractBackpressureThrottlingSubscriber;->cancel()V PLio/reactivex/rxjava3/internal/operators/flowable/FlowableCombineLatest$CombineLatestCoordinator;->cancel()V PLio/reactivex/rxjava3/internal/operators/flowable/FlowableCombineLatest$CombineLatestCoordinator;->cancelAll()V PLio/reactivex/rxjava3/internal/operators/flowable/FlowableCombineLatest$CombineLatestInnerSubscriber;->cancel()V PLio/reactivex/rxjava3/internal/operators/flowable/FlowableCreate$BaseEmitter;->cancel()V PLio/reactivex/rxjava3/internal/operators/flowable/FlowableCreate$LatestAsyncEmitter;->onUnsubscribed()V +PLio/reactivex/rxjava3/internal/operators/flowable/FlowableDebounceTimed$DebounceTimedSubscriber;->cancel()V PLio/reactivex/rxjava3/internal/operators/flowable/FlowableFilter$FilterConditionalSubscriber;->(Lio/reactivex/rxjava3/internal/fuseable/ConditionalSubscriber;Lio/reactivex/rxjava3/functions/Predicate;)V PLio/reactivex/rxjava3/internal/operators/flowable/FlowableFilter$FilterConditionalSubscriber;->onNext(Ljava/lang/Object;)V PLio/reactivex/rxjava3/internal/operators/flowable/FlowableFilter$FilterConditionalSubscriber;->tryOnNext(Ljava/lang/Object;)Z PLio/reactivex/rxjava3/internal/operators/flowable/FlowableFilter;->(Lio/reactivex/rxjava3/core/Flowable;Lio/reactivex/rxjava3/functions/Predicate;)V PLio/reactivex/rxjava3/internal/operators/flowable/FlowableFilter;->subscribeActual(Lorg/reactivestreams/Subscriber;)V -PLio/reactivex/rxjava3/internal/operators/flowable/FlowableFromObservable$SubscriberObserver;->cancel()V PLio/reactivex/rxjava3/internal/operators/flowable/FlowableInterval$IntervalSubscriber;->cancel()V PLio/reactivex/rxjava3/internal/operators/flowable/FlowableObserveOn$BaseObserveOnSubscriber;->cancel()V PLio/reactivex/rxjava3/internal/operators/flowable/FlowableObserveOn$BaseObserveOnSubscriber;->clear()V @@ -45829,8 +46125,6 @@ PLio/reactivex/rxjava3/internal/operators/flowable/FlowableObserveOn$ObserveOnSu PLio/reactivex/rxjava3/internal/operators/flowable/FlowableRefCount$RefCountSubscriber;->cancel()V PLio/reactivex/rxjava3/internal/operators/flowable/FlowableRefCount;->cancel(Lio/reactivex/rxjava3/internal/operators/flowable/FlowableRefCount$RefConnection;)V PLio/reactivex/rxjava3/internal/operators/flowable/FlowableRefCount;->timeout(Lio/reactivex/rxjava3/internal/operators/flowable/FlowableRefCount$RefConnection;)V -PLio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$BoundedReplayBuffer;->removeFirst()V -PLio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$BoundedReplayBuffer;->setFirst(Lio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$Node;)V PLio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$InnerSubscription;->cancel()V PLio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$InnerSubscription;->dispose()V PLio/reactivex/rxjava3/internal/operators/flowable/FlowableReplay$ReplaySubscriber;->dispose()V @@ -45960,6 +46254,7 @@ PLio/reactivex/rxjava3/internal/operators/observable/ObservableElementAtSingle$E PLio/reactivex/rxjava3/internal/operators/observable/ObservableElementAtSingle$ElementAtObserver;->onSubscribe(Lio/reactivex/rxjava3/disposables/Disposable;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableElementAtSingle;->(Lio/reactivex/rxjava3/core/ObservableSource;JLjava/lang/Object;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableElementAtSingle;->subscribeActual(Lio/reactivex/rxjava3/core/SingleObserver;)V +PLio/reactivex/rxjava3/internal/operators/observable/ObservableFilter$FilterObserver;->onNext(Ljava/lang/Object;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapMaybe$FlatMapMaybeObserver$InnerObserver;->(Lio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapMaybe$FlatMapMaybeObserver;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapMaybe$FlatMapMaybeObserver$InnerObserver;->onComplete()V PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapMaybe$FlatMapMaybeObserver$InnerObserver;->onSubscribe(Lio/reactivex/rxjava3/disposables/Disposable;)V @@ -45977,6 +46272,8 @@ PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle$Fla PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle$FlatMapSingleObserver$InnerObserver;->onSuccess(Ljava/lang/Object;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle$FlatMapSingleObserver;->(Lio/reactivex/rxjava3/core/Observer;Lio/reactivex/rxjava3/functions/Function;Z)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle$FlatMapSingleObserver;->dispose()V +PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle$FlatMapSingleObserver;->drainLoop()V +PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle$FlatMapSingleObserver;->getOrCreateQueue()Lio/reactivex/rxjava3/internal/queue/SpscLinkedArrayQueue; PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle$FlatMapSingleObserver;->onSubscribe(Lio/reactivex/rxjava3/disposables/Disposable;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle;->(Lio/reactivex/rxjava3/core/ObservableSource;Lio/reactivex/rxjava3/functions/Function;Z)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle;->subscribeActual(Lio/reactivex/rxjava3/core/Observer;)V @@ -45999,6 +46296,7 @@ PLio/reactivex/rxjava3/internal/operators/observable/ObservableMap$MapObserver;- PLio/reactivex/rxjava3/internal/operators/observable/ObservableMap;->(Lio/reactivex/rxjava3/core/ObservableSource;Lio/reactivex/rxjava3/functions/Function;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableMap;->subscribeActual(Lio/reactivex/rxjava3/core/Observer;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableObserveOn$ObserveOnObserver;->clear()V +PLio/reactivex/rxjava3/internal/operators/observable/ObservableObserveOn$ObserveOnObserver;->drainFused()V PLio/reactivex/rxjava3/internal/operators/observable/ObservableObserveOn$ObserveOnObserver;->isEmpty()Z PLio/reactivex/rxjava3/internal/operators/observable/ObservableObserveOn$ObserveOnObserver;->poll()Ljava/lang/Object; PLio/reactivex/rxjava3/internal/operators/observable/ObservableObserveOn$ObserveOnObserver;->requestFusion(I)I @@ -46097,13 +46395,9 @@ PLio/reactivex/rxjava3/internal/operators/single/SingleObserveOn;->(Lio/re PLio/reactivex/rxjava3/internal/operators/single/SingleObserveOn;->subscribeActual(Lio/reactivex/rxjava3/core/SingleObserver;)V PLio/reactivex/rxjava3/internal/operators/single/SingleOnErrorComplete;->(Lio/reactivex/rxjava3/core/Single;Lio/reactivex/rxjava3/functions/Predicate;)V PLio/reactivex/rxjava3/internal/operators/single/SingleOnErrorComplete;->subscribeActual(Lio/reactivex/rxjava3/core/MaybeObserver;)V -PLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->isEmpty()Z -PLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->lvConsumerNode()Lio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode; PLio/reactivex/rxjava3/internal/queue/SpscArrayQueue;->clear()V PLio/reactivex/rxjava3/internal/queue/SpscArrayQueue;->isEmpty()Z -PLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->cancelFuture(Ljava/util/concurrent/Future;)V PLio/reactivex/rxjava3/internal/schedulers/DisposeOnCancel;->cancel(Z)Z -PLio/reactivex/rxjava3/internal/schedulers/ScheduledRunnable;->dispose()V PLio/reactivex/rxjava3/internal/subscribers/BasicFuseableConditionalSubscriber;->cancel()V PLio/reactivex/rxjava3/internal/subscribers/BasicFuseableSubscriber;->cancel()V PLio/reactivex/rxjava3/internal/subscribers/LambdaSubscriber;->cancel()V @@ -46162,6 +46456,7 @@ PLio/reactivex/rxjava3/subjects/BehaviorSubject;->terminate(Ljava/lang/Object;)[ PLio/reactivex/rxjava3/subjects/PublishSubject$PublishDisposable;->dispose()V PLio/reactivex/rxjava3/subjects/PublishSubject;->remove(Lio/reactivex/rxjava3/subjects/PublishSubject$PublishDisposable;)V PLio/reactivex/rxjava3/subjects/SerializedSubject;->test(Ljava/lang/Object;)Z +PLio/reactivex/rxjava3/subscribers/SerializedSubscriber;->cancel()V PLj$/util/DesugarCollections;->a()Ljava/lang/reflect/Constructor; PLj$/util/Optional;->ifPresent(Lj$/util/function/Consumer;)V PLj$/util/S;->r(Lj$/util/function/Consumer;)Z @@ -46218,7 +46513,6 @@ PLkotlin/coroutines/CombinedContext;->size()I PLkotlin/jvm/internal/PropertyReference0;->invoke()Ljava/lang/Object; PLkotlin/sequences/SequenceBuilderIterator;->yieldAll(Ljava/util/Iterator;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; PLkotlin/sequences/SequenceScope;->yieldAll(Lkotlin/sequences/Sequence;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -PLkotlin/sequences/SequencesKt;->filterIsInstance(Lkotlin/sequences/Sequence;Ljava/lang/Class;)Lkotlin/sequences/Sequence; PLkotlin/sequences/SequencesKt;->sequence(Lkotlin/jvm/functions/Function2;)Lkotlin/sequences/Sequence; PLkotlin/sequences/SequencesKt__SequenceBuilderKt$sequence$$inlined$Sequence$1;->(Lkotlin/jvm/functions/Function2;)V PLkotlin/sequences/SequencesKt__SequenceBuilderKt$sequence$$inlined$Sequence$1;->iterator()Ljava/util/Iterator; @@ -46268,7 +46562,6 @@ PLkotlinx/coroutines/channels/BufferedChannel$receiveCatching$1;->invokeSuspend( PLkotlinx/coroutines/channels/BufferedChannel$receiveCatchingOnNoWaiterSuspend$1;->(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlin/coroutines/Continuation;)V PLkotlinx/coroutines/channels/BufferedChannel$receiveCatchingOnNoWaiterSuspend$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; PLkotlinx/coroutines/channels/BufferedChannel;->access$receiveCatchingOnNoWaiterSuspend-GKJJFZk(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlinx/coroutines/channels/ChannelSegment;IJLkotlin/coroutines/Continuation;)Ljava/lang/Object; -PLkotlinx/coroutines/channels/BufferedChannel;->cancelSuspendedReceiveRequests(Lkotlinx/coroutines/channels/ChannelSegment;J)V PLkotlinx/coroutines/channels/BufferedChannel;->close(Ljava/lang/Throwable;)Z PLkotlinx/coroutines/channels/BufferedChannel;->closeLinkedList()Lkotlinx/coroutines/channels/ChannelSegment; PLkotlinx/coroutines/channels/BufferedChannel;->closeOrCancelImpl(Ljava/lang/Throwable;Z)Z @@ -46388,7 +46681,6 @@ PLkotlinx/coroutines/internal/LimitedDispatcher;->dispatchYield(Lkotlin/coroutin PLkotlinx/coroutines/internal/LockFreeLinkedListNode;->findPrevNonRemoved(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Lkotlinx/coroutines/internal/LockFreeLinkedListNode; PLkotlinx/coroutines/internal/ScopeCoroutine;->afterCompletion(Ljava/lang/Object;)V PLkotlinx/coroutines/internal/Segment;->getCleanedAndPointers$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; -PLkotlinx/coroutines/internal/Segment;->onSlotCleaned()V PLkotlinx/coroutines/rx3/RxConvertKt$asFlow$1$$ExternalSyntheticLambda0;->(Ljava/util/concurrent/atomic/AtomicReference;)V PLkotlinx/coroutines/rx3/RxConvertKt$asFlow$1$$ExternalSyntheticLambda0;->invoke()Ljava/lang/Object; PLkotlinx/coroutines/rx3/RxConvertKt$asFlow$1$observer$1;->(Lkotlinx/coroutines/channels/ProducerScope;Ljava/util/concurrent/atomic/AtomicReference;)V @@ -46403,6 +46695,7 @@ PLkotlinx/coroutines/rx3/RxConvertKt$asFlow$1;->invokeSuspend$lambda$0(Ljava/uti PLkotlinx/coroutines/rx3/RxConvertKt$asFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; PLkotlinx/coroutines/rx3/RxConvertKt;->asFlow(Lio/reactivex/rxjava3/core/ObservableSource;)Lkotlinx/coroutines/flow/Flow; PLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->access$getThis$0$p(Lkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;)Lkotlinx/coroutines/scheduling/CoroutineScheduler; +PLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->findBlockingTask()Lkotlinx/coroutines/scheduling/Task; PLkotlinx/coroutines/scheduling/DefaultIoScheduler;->dispatchYield(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V PLkotlinx/coroutines/scheduling/UnlimitedIoScheduler;->dispatchYield(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V PLkotlinx/coroutines/scheduling/WorkQueue;->add(Lkotlinx/coroutines/scheduling/Task;Z)Lkotlinx/coroutines/scheduling/Task; @@ -46411,6 +46704,9 @@ PLkotlinx/coroutines/scheduling/WorkQueue;->decrementIfBlocking(Lkotlinx/corouti PLkotlinx/coroutines/scheduling/WorkQueue;->getBlockingTasksInBuffer$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; PLkotlinx/coroutines/scheduling/WorkQueue;->getBufferSize()I PLkotlinx/coroutines/scheduling/WorkQueue;->poll()Lkotlinx/coroutines/scheduling/Task; +PLkotlinx/coroutines/scheduling/WorkQueue;->pollBlocking()Lkotlinx/coroutines/scheduling/Task; +PLkotlinx/coroutines/scheduling/WorkQueue;->pollWithExclusiveMode(Z)Lkotlinx/coroutines/scheduling/Task; +PLkotlinx/coroutines/scheduling/WorkQueue;->stealWithExclusiveMode(I)Lkotlinx/coroutines/scheduling/Task; PLme/leolin/shortcutbadger/ShortcutBadgeException;->(Ljava/lang/String;)V PLme/leolin/shortcutbadger/ShortcutBadgeException;->(Ljava/lang/String;Ljava/lang/Exception;)V PLme/leolin/shortcutbadger/ShortcutBadger;->()V @@ -46507,6 +46803,7 @@ PLorg/signal/core/util/concurrent/RxExtensions$subscribeWithSubject$2;->(L PLorg/signal/core/util/concurrent/RxExtensions$subscribeWithSubject$3;->(Ljava/lang/Object;)V PLorg/signal/core/util/concurrent/RxExtensions;->subscribeWithSubject(Lio/reactivex/rxjava3/core/Observable;Lio/reactivex/rxjava3/subjects/Subject;Lio/reactivex/rxjava3/disposables/CompositeDisposable;)Lio/reactivex/rxjava3/subjects/Subject; PLorg/signal/core/util/concurrent/SettableFuture;->set(Ljava/lang/Object;)Z +PLorg/signal/core/util/concurrent/SignalExecutors;->$r8$lambda$PuKeoHyTOgRHxCNNBi9u3dUls_w(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V PLorg/signal/core/util/logging/Log$Logger;->i(Ljava/lang/String;Ljava/lang/String;)V PLorg/signal/core/util/logging/Log$Logger;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V PLorg/signal/core/util/logging/Log;->internal()Lorg/signal/core/util/logging/Log$Logger; @@ -46522,7 +46819,7 @@ PLorg/signal/paging/FixedSizePagingController$$ExternalSyntheticLambda0;->run()V PLorg/signal/paging/FixedSizePagingController;->$r8$lambda$1LdP1wmyJub_fd25Xbr1Zuv0_Dw(Lorg/signal/paging/FixedSizePagingController;Ljava/lang/Object;)V PLorg/signal/paging/FixedSizePagingController;->onDataItemChanged(Ljava/lang/Object;)V PLorg/signal/paging/ProxyPagingController;->onDataItemChanged(Ljava/lang/Object;)V -PLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda69;->isInternal()Z +PLorg/thoughtcrime/securesms/ApplicationContext$$ExternalSyntheticLambda70;->isInternal()Z PLorg/thoughtcrime/securesms/LoggingFragment;->(I)V PLorg/thoughtcrime/securesms/LoggingFragment;->onDestroy()V PLorg/thoughtcrime/securesms/LoggingFragment;->onStop()V @@ -46550,6 +46847,7 @@ PLorg/thoughtcrime/securesms/attachments/Attachment;->isPermanentlyFailed()Z PLorg/thoughtcrime/securesms/attachments/AttachmentId;->hashCode()I PLorg/thoughtcrime/securesms/attachments/AttachmentId;->serialize()Ljava/lang/String; PLorg/thoughtcrime/securesms/attachments/DatabaseAttachment;->getThumbnailUri()Landroid/net/Uri; +PLorg/thoughtcrime/securesms/attachments/DatabaseAttachment;->hashCode()I PLorg/thoughtcrime/securesms/audio/AudioRecorder$$ExternalSyntheticLambda2;->(Lorg/thoughtcrime/securesms/audio/AudioRecorder;)V PLorg/thoughtcrime/securesms/audio/AudioRecorder;->()V PLorg/thoughtcrime/securesms/audio/AudioRecorder;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/audio/AudioRecordingHandler;)V @@ -46568,9 +46866,9 @@ PLorg/thoughtcrime/securesms/avatar/view/AvatarView;->hideStoryRing()V PLorg/thoughtcrime/securesms/avatar/view/AvatarView;->setStoryRingFromState(Lorg/thoughtcrime/securesms/database/model/StoryViewState;)V PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$Companion;->()V PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V -PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->()V PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->(Landroid/content/Context;)V +PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->access$getAnimationState$p(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)Ljava/util/Map; PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->access$getMessageIdsOpenedThisSession$p(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)Ljava/util/Set; PLorg/thoughtcrime/securesms/banner/banners/BubbleOptOutBanner;->()V PLorg/thoughtcrime/securesms/banner/banners/BubbleOptOutBanner;->(ZLkotlin/jvm/functions/Function1;)V @@ -46659,6 +46957,7 @@ PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->lambda$init$0(L PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->notifyTouchDelegateChanged(Landroid/graphics/Rect;Landroid/view/View;)V PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->onDetachedFromWindow()V PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentAudioDuration(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)V +PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentDate(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Ljava/util/Locale;Lorg/thoughtcrime/securesms/conversation/ConversationItemDisplayMode;)V PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentInsecureIndicator(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)V PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentSimInfo(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)V PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentTimer(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)V @@ -46831,6 +47130,7 @@ PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->()V PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->(Landroidx/recyclerview/widget/RecyclerView;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->(Landroidx/recyclerview/widget/RecyclerView;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->(Landroidx/recyclerview/widget/RecyclerView;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lio/reactivex/rxjava3/disposables/CompositeDisposable;)V +PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->isListCommitted()Z PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->notifyListCommitted()V PLorg/thoughtcrime/securesms/components/SearchView;->(Landroid/content/Context;)V PLorg/thoughtcrime/securesms/components/SearchView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V @@ -46854,11 +47154,10 @@ PLorg/thoughtcrime/securesms/components/ThumbnailView;->(Landroid/content/ PLorg/thoughtcrime/securesms/components/ThumbnailView;->dispatchDraw(Landroid/graphics/Canvas;)V PLorg/thoughtcrime/securesms/components/ThumbnailView;->fillTargetDimensions([I[I[I)V PLorg/thoughtcrime/securesms/components/ThumbnailView;->getNonZeroCount([I)I +PLorg/thoughtcrime/securesms/components/ThumbnailView;->hasSameContents(Lorg/thoughtcrime/securesms/mms/Slide;Lorg/thoughtcrime/securesms/mms/Slide;)Z PLorg/thoughtcrime/securesms/components/ThumbnailView;->onSizeChanged(IIII)V -PLorg/thoughtcrime/securesms/components/ThumbnailView;->setCancelTransferClickListener(Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;)V PLorg/thoughtcrime/securesms/components/ThumbnailView;->setImageResource(Lcom/bumptech/glide/RequestManager;Lorg/thoughtcrime/securesms/mms/Slide;ZZ)Lorg/signal/core/util/concurrent/ListenableFuture; -PLorg/thoughtcrime/securesms/components/ThumbnailView;->setStartTransferClickListener(Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;)V -PLorg/thoughtcrime/securesms/components/ThumbnailView;->setThumbnailClickListener(Lorg/thoughtcrime/securesms/mms/SlideClickListener;)V +PLorg/thoughtcrime/securesms/components/ThumbnailView;->setPlayVideoClickListener(Lorg/thoughtcrime/securesms/mms/SlideClickListener;)V PLorg/thoughtcrime/securesms/components/ThumbnailView;->showSecondaryText(Z)V PLorg/thoughtcrime/securesms/components/TypingStatusRepository;->getTypists(J)Landroidx/lifecycle/LiveData; PLorg/thoughtcrime/securesms/components/ViewBinderDelegate$1;->invoke(Landroidx/viewbinding/ViewBinding;)V @@ -46968,6 +47267,8 @@ PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->c PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->getTransferState(Ljava/util/List;)I PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->onAttachedToWindow()V PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->onDetachedFromWindow()V +PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setCancelClickListener(Landroid/view/View$OnClickListener;)V +PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setTransferClickListener(Landroid/view/View$OnClickListener;)V PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->slidesAsListOfTimestamps(Ljava/util/List;)Ljava/lang/String; PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->verboseLog(Ljava/lang/String;)V PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlViewState;->()V @@ -47011,6 +47312,7 @@ PLorg/thoughtcrime/securesms/contacts/avatars/ProfileContactPhoto;->equals(Ljava PLorg/thoughtcrime/securesms/contacts/paged/ContactSearchMediator$sam$androidx_lifecycle_Observer$0;->equals(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/contacts/paged/ContactSearchMediator$sam$androidx_lifecycle_Observer$0;->getFunctionDelegate()Lkotlin/Function; PLorg/thoughtcrime/securesms/contacts/paged/ContactSearchViewModel;->onCleared()V +PLorg/thoughtcrime/securesms/conversation/ClipProjectionDrawable;->draw(Landroid/graphics/Canvas;)V PLorg/thoughtcrime/securesms/conversation/ConversationData$MessageRequestData;->()V PLorg/thoughtcrime/securesms/conversation/ConversationData$MessageRequestData;->(ZZ)V PLorg/thoughtcrime/securesms/conversation/ConversationData$MessageRequestData;->(ZZZZ)V @@ -47087,6 +47389,7 @@ PLorg/thoughtcrime/securesms/conversation/ConversationItem;->forceFooter(Lorg/th PLorg/thoughtcrime/securesms/conversation/ConversationItem;->getBadgeImageView()Landroid/view/View; PLorg/thoughtcrime/securesms/conversation/ConversationItem;->getBodyBubbleCorners(IIII)Lorg/thoughtcrime/securesms/util/Projection$Corners; PLorg/thoughtcrime/securesms/conversation/ConversationItem;->getBubbleViews()Ljava/util/List; +PLorg/thoughtcrime/securesms/conversation/ConversationItem;->getColorizerProjections(Landroid/view/ViewGroup;)Lorg/thoughtcrime/securesms/util/ProjectionList; PLorg/thoughtcrime/securesms/conversation/ConversationItem;->getContactPhotoHolderView()Landroid/view/View; PLorg/thoughtcrime/securesms/conversation/ConversationItem;->getConversationMessage()Lorg/thoughtcrime/securesms/conversation/ConversationMessage; PLorg/thoughtcrime/securesms/conversation/ConversationItem;->getDefaultBubbleColor(Z)I @@ -47293,7 +47596,6 @@ PLorg/thoughtcrime/securesms/conversation/VoiceRecorderWakeLock;->release()V PLorg/thoughtcrime/securesms/conversation/colors/ChatColors$Id$NotSet;->()V PLorg/thoughtcrime/securesms/conversation/colors/ChatColors$Id$NotSet;->()V PLorg/thoughtcrime/securesms/conversation/colors/ChatColors;->getChatBubbleMask()Landroid/graphics/drawable/Drawable; -PLorg/thoughtcrime/securesms/conversation/colors/ChatColors;->isGradient()Z PLorg/thoughtcrime/securesms/conversation/colors/Colorizer$onGroupMembershipChanged$$inlined$sortedBy$1;->()V PLorg/thoughtcrime/securesms/conversation/colors/Colorizer;->()V PLorg/thoughtcrime/securesms/conversation/colors/Colorizer;->()V @@ -47378,6 +47680,7 @@ PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectCollection$Compa PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectCollection$Companion;->fromSet(Ljava/util/Set;)Lorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectCollection; PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectCollection$Single;->()V PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectCollection$Single;->(Lorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectPart;)V +PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectCollection$Single;->toSet()Ljava/util/Set; PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectCollection;->()V PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectCollection;->()V PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectCollection;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -47530,6 +47833,7 @@ PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationV PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->(Lorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2;Landroid/view/View;)V PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->canPlayContent()Z PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getDisplayMode()Lorg/thoughtcrime/securesms/conversation/ConversationItemDisplayMode; +PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getNextMessage()Lj$/util/Optional; PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->showProjectionArea()V PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$IncomingMediaViewHolder;->(Lorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2;Landroid/view/View;)V PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$IncomingMediaViewHolder;->bind(Ljava/lang/Object;)V @@ -47890,6 +48194,7 @@ PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->access$doAft PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->access$getAdapter$p(Lorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;)Lorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2; PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->access$getAnimationsAllowed$p(Lorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;)Z PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->access$getArgs(Lorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;)Lorg/thoughtcrime/securesms/conversation/ConversationIntents$Args; +PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->access$getBinding(Lorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;)Lorg/thoughtcrime/securesms/databinding/V2ConversationFragmentBinding; PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->access$getColorizer$p(Lorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;)Lorg/thoughtcrime/securesms/conversation/colors/Colorizer; PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->access$getComposeText(Lorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;)Lorg/thoughtcrime/securesms/components/ComposeText; PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->access$getComposeTextEventsListener$p(Lorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;)Lorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$ComposeTextEventsListener; @@ -48062,6 +48367,7 @@ PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->access$get PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getConversationThreadState$lambda$0(JLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;I)Lorg/thoughtcrime/securesms/conversation/v2/ConversationThreadState; PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getConversationThreadState(JI)Lio/reactivex/rxjava3/core/Single; PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getMessageCounts(J)Lio/reactivex/rxjava3/core/Flowable; +PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getRequestReviewState$lambda$16(Lorg/thoughtcrime/securesms/database/model/GroupRecord;Lorg/thoughtcrime/securesms/messagerequests/MessageRequestState;Lorg/thoughtcrime/securesms/recipients/Recipient;)Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState; PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getUnreadCount(J)I PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getUnreadMentionsCount(J)I PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->isInBubble()Z @@ -48273,6 +48579,7 @@ PLorg/thoughtcrime/securesms/conversation/v2/MotionEventRelay;->setDrain(Lorg/th PLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->()V PLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->(Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState$IndividualReviewState;Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState$GroupReviewState;)V PLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->(Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState$IndividualReviewState;Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState$GroupReviewState;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +PLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->equals(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->shouldShowReviewBanner()Z PLorg/thoughtcrime/securesms/conversation/v2/ShareDataTimestampViewModel;->()V PLorg/thoughtcrime/securesms/conversation/v2/ShareDataTimestampViewModel;->()V @@ -48488,6 +48795,7 @@ PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->access$getCollapsedSpacing$cp()F PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->access$getDefaultSpacing$cp()F PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->getCornersLTR()Lorg/thoughtcrime/securesms/util/Projection$Corners; +PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->isEndOfMessageCluster(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->isSingularMessage(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;Z)Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->isStartOfMessageCluster(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;Z)Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->isWithinClusteringTime(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z @@ -48539,6 +48847,7 @@ PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyVie PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->canPlayContent()Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->getConversationMessage()Lorg/thoughtcrime/securesms/conversation/ConversationMessage; PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->getShape()Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape$MessageShape; +PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->invalidateFooterDrawable(Landroid/view/ViewGroup;)V PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->isContentCondensed()Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->isForcedFooter()Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->presentAlert()V @@ -48560,6 +48869,8 @@ PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme$getBo PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->()V PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationContext;)V PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getBodyBubbleColor(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;)I +PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getBodyTextColor(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;)I +PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getColor(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)I PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getFooterBubbleColor(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;)I PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getReplyIconBackgroundColor()I PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemUtils;->()V @@ -48586,6 +48897,7 @@ PLorg/thoughtcrime/securesms/conversation/v2/items/V2OnDispatchTouchEventListene PLorg/thoughtcrime/securesms/conversation/v2/items/V2Payload;->$values()[Lorg/thoughtcrime/securesms/conversation/v2/items/V2Payload; PLorg/thoughtcrime/securesms/conversation/v2/items/V2Payload;->()V PLorg/thoughtcrime/securesms/conversation/v2/items/V2Payload;->(Ljava/lang/String;I)V +PLorg/thoughtcrime/securesms/conversationlist/ChatFolderMappingModel;->equals(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->onStartNestedScroll(Landroidx/coordinatorlayout/widget/CoordinatorLayout;Landroid/view/View;Landroid/view/View;Landroid/view/View;II)Z PLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->onStartNestedScroll(Landroidx/coordinatorlayout/widget/CoordinatorLayout;Lcom/google/android/material/appbar/AppBarLayout;Landroid/view/View;Landroid/view/View;II)Z PLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->onStopNestedScroll(Landroidx/coordinatorlayout/widget/CoordinatorLayout;Landroid/view/View;Landroid/view/View;I)V @@ -48593,10 +48905,10 @@ PLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->onSto PLorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$$ExternalSyntheticLambda1;->onClick(Landroid/view/View;)V PLorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter;->$r8$lambda$iJ3M5_PwpZ0_BVU0QPD67wRep54(Lorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter;Lorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$ConversationViewHolder;Landroid/view/View;)V PLorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter;->lambda$onCreateViewHolder$1(Lorg/thoughtcrime/securesms/conversationlist/ConversationListAdapter$ConversationViewHolder;Landroid/view/View;)V -PLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda76;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Lorg/thoughtcrime/securesms/recipients/Recipient;)V -PLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda76;->run()Ljava/lang/Object; -PLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda77;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Lorg/thoughtcrime/securesms/recipients/Recipient;JI)V -PLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda77;->run(Ljava/lang/Object;)V +PLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda79;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Lorg/thoughtcrime/securesms/recipients/Recipient;)V +PLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda79;->run()Ljava/lang/Object; +PLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda80;->(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Lorg/thoughtcrime/securesms/recipients/Recipient;JI)V +PLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$$ExternalSyntheticLambda80;->run(Ljava/lang/Object;)V PLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$1;->canStartNestedScroll()Z PLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment$1;->onStopNestedScroll()V PLorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;->$r8$lambda$Rp8Sxf-vLhFKh5li77bNlTYKO8c(Lorg/thoughtcrime/securesms/conversationlist/ConversationListFragment;Lorg/thoughtcrime/securesms/recipients/Recipient;)Ljava/lang/Object; @@ -48625,41 +48937,41 @@ PLorg/thoughtcrime/securesms/database/AttachmentTable;->hasStickerAttachments()Z PLorg/thoughtcrime/securesms/database/AttachmentTable;->readAttachment(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/attachments/DatabaseAttachment; PLorg/thoughtcrime/securesms/database/CallTable;->getCalls(Ljava/util/Collection;)Ljava/util/Map; PLorg/thoughtcrime/securesms/database/CallTable;->markAllCallEventsWithPeerBeforeTimestampRead(Lorg/thoughtcrime/securesms/recipients/RecipientId;J)Lorg/thoughtcrime/securesms/database/CallTable$Call; -PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda11;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;JLorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V -PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda11;->run()V -PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda18;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;JLorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V -PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda18;->run()V -PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda25;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;JLorg/thoughtcrime/securesms/database/DatabaseObserver$MessageObserver;)V -PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda25;->run()V -PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda27;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V +PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda13;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;JLorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V +PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda13;->run()V +PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda20;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;JLorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V +PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda20;->run()V +PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda27;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;JLorg/thoughtcrime/securesms/database/DatabaseObserver$MessageObserver;)V PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda27;->run()V -PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda34;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$MessageObserver;)V -PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda34;->run()V -PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda38;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/recipients/RecipientId;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V -PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda38;->run()V -PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda39;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$MessageObserver;)V -PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda39;->run()V -PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda4;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;JLorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V -PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda4;->run()V -PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda6;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;J)V +PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda29;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V +PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda29;->run()V +PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda36;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$MessageObserver;)V +PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda36;->run()V +PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda41;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/recipients/RecipientId;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V +PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda41;->run()V +PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda42;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$MessageObserver;)V +PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda42;->run()V +PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda6;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;JLorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda6;->run()V +PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda8;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver;J)V +PLorg/thoughtcrime/securesms/database/DatabaseObserver$$ExternalSyntheticLambda8;->run()V PLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$0jRCUTXTDVMpKepAkAg8DcY4jiA(Lorg/thoughtcrime/securesms/database/DatabaseObserver;JLorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V PLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$1LvvZD3MMJCs2UcAbh6iCceBfls(Lorg/thoughtcrime/securesms/database/DatabaseObserver;JLorg/thoughtcrime/securesms/database/DatabaseObserver$MessageObserver;)V PLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$4H5U_Q8BP_LdOaO31GRxD77lsIo(Lorg/thoughtcrime/securesms/database/DatabaseObserver;JLorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V PLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$9IpxPQWQK0m2gGsU2g1e3UFfD1M(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$MessageObserver;)V -PLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$GXdy8_Xam7GTEc-kpnGOYelemU4(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V -PLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$QuW_bMlLt-EJRMwq1DXrXJ3eYqU(Lorg/thoughtcrime/securesms/database/DatabaseObserver;J)V PLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$UWVdWgnoz8LIawa01OJjD-HT0WM(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/recipients/RecipientId;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V +PLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$frh4dntjBOhDTTzUuMic3POu1Zs(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V +PLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$gsdJEUeMbOhcbJJGmn65gA2qeb8(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$MessageObserver;)V PLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$hHYnudhLLDq3UpBEPX4iy6qChBo(Lorg/thoughtcrime/securesms/database/DatabaseObserver;JLorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V -PLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$keuyM8KxoDiwYDpQ2PUDD45qXMs(Lorg/thoughtcrime/securesms/database/DatabaseObserver;Lorg/thoughtcrime/securesms/database/DatabaseObserver$MessageObserver;)V -PLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$notifyVerboseConversationListeners$23(J)V +PLorg/thoughtcrime/securesms/database/DatabaseObserver;->$r8$lambda$v_w74W8sC2i7Khry97icHMYKfTw(Lorg/thoughtcrime/securesms/database/DatabaseObserver;J)V +PLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$notifyVerboseConversationListeners$24(J)V PLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$registerConversationObserver$1(JLorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V PLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$registerMessageInsertObserver$12(JLorg/thoughtcrime/securesms/database/DatabaseObserver$MessageObserver;)V PLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$registerMessageUpdateObserver$11(Lorg/thoughtcrime/securesms/database/DatabaseObserver$MessageObserver;)V PLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$registerScheduledMessageObserver$15(JLorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V PLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$registerStoryObserver$14(Lorg/thoughtcrime/securesms/recipients/RecipientId;Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V PLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$registerVerboseConversationObserver$2(JLorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V -PLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$unregisterObserver$20(Lorg/thoughtcrime/securesms/database/DatabaseObserver$MessageObserver;)V +PLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$unregisterObserver$21(Lorg/thoughtcrime/securesms/database/DatabaseObserver$MessageObserver;)V PLorg/thoughtcrime/securesms/database/DatabaseObserver;->notifyVerboseConversationListeners(Ljava/util/Set;)V PLorg/thoughtcrime/securesms/database/DatabaseObserver;->registerConversationObserver(JLorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V PLorg/thoughtcrime/securesms/database/DatabaseObserver;->registerMapped(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)V @@ -48791,6 +49103,7 @@ PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->$r8$lambda$bAahgo PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getCall()Lorg/thoughtcrime/securesms/database/CallTable$Call; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getDisplayBody(Landroid/content/Context;)Landroid/text/SpannableString; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getLatestRevisionId()Lorg/thoughtcrime/securesms/database/model/MessageId; +PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getLinkPreviews()Ljava/util/List; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getParentStoryId()Lorg/thoughtcrime/securesms/database/model/ParentStoryId; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getPayment()Lorg/thoughtcrime/securesms/payments/Payment; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getStoryType()Lorg/thoughtcrime/securesms/database/model/StoryType; @@ -48800,7 +49113,6 @@ PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->lambda$withAttach PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->updateContacts(Ljava/util/List;Ljava/util/Map;)Ljava/util/List; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->updateLinkPreviews(Ljava/util/List;Ljava/util/Map;)Ljava/util/List; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->updateQuote(Lorg/thoughtcrime/securesms/database/model/Quote;Ljava/util/List;)Lorg/thoughtcrime/securesms/database/model/Quote; -PLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;->equals(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/database/model/StoryViewState$Companion$$ExternalSyntheticLambda0;->(Lio/reactivex/rxjava3/core/ObservableEmitter;Lorg/thoughtcrime/securesms/recipients/RecipientId;)V PLorg/thoughtcrime/securesms/database/model/StoryViewState$Companion$$ExternalSyntheticLambda1;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V PLorg/thoughtcrime/securesms/database/model/StoryViewState$Companion$$ExternalSyntheticLambda1;->cancel()V @@ -48850,6 +49162,7 @@ PLorg/thoughtcrime/securesms/emoji/EmojiSource;->getMaxEmojiLength()I PLorg/thoughtcrime/securesms/emoji/EmojiSourceKt;->access$maxOrZero(Ljava/util/List;)I PLorg/thoughtcrime/securesms/emoji/EmojiSourceKt;->maxOrZero(Ljava/util/List;)I PLorg/thoughtcrime/securesms/fonts/SignalSymbols$CustomTypefaceSpan;->(Landroid/graphics/Typeface;)V +PLorg/thoughtcrime/securesms/fonts/SignalSymbols$CustomTypefaceSpan;->update(Landroid/text/TextPaint;)V PLorg/thoughtcrime/securesms/fonts/SignalSymbols$CustomTypefaceSpan;->updateDrawState(Landroid/text/TextPaint;)V PLorg/thoughtcrime/securesms/fonts/SignalSymbols$CustomTypefaceSpan;->updateMeasureState(Landroid/text/TextPaint;)V PLorg/thoughtcrime/securesms/fonts/SignalSymbols$Glyph;->$values()[Lorg/thoughtcrime/securesms/fonts/SignalSymbols$Glyph; @@ -48871,6 +49184,7 @@ PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration;->(Lorg/thoug PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$$ExternalSyntheticLambda0;->(Ljava/util/Set;)V PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$RangeComparator;->(II)V +PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$RangeComparator;->compare(Ljava/lang/Integer;Ljava/lang/Integer;)I PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$RangeComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController;->(Lorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$Callback;I)V PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController;->attach(Landroidx/recyclerview/widget/RecyclerView;Lorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$Callback;I)V @@ -48882,6 +49196,7 @@ PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController;->onScrolled(La PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackPolicy;->maxSimultaneousPlaybackInConversation()I PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionPlayerHolder;->()V PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionPlayerHolder;->(Landroid/widget/FrameLayout;Lorg/thoughtcrime/securesms/giph/mp4/GiphyMp4VideoPlayer;)V +PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionPlayerHolder;->injectVideoViews(Landroid/content/Context;Landroidx/lifecycle/Lifecycle;Landroid/view/ViewGroup;I)Ljava/util/List; PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionPlayerHolder;->onCreate(Landroidx/lifecycle/LifecycleOwner;)V PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionPlayerHolder;->onDestroy(Landroidx/lifecycle/LifecycleOwner;)V PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionPlayerHolder;->onPause(Landroidx/lifecycle/LifecycleOwner;)V @@ -48897,7 +49212,7 @@ PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4VideoPlayer;->setResizeMode(I)V PLorg/thoughtcrime/securesms/groups/v2/GroupManagementRepository;->()V PLorg/thoughtcrime/securesms/groups/v2/GroupManagementRepository;->(Landroid/content/Context;)V PLorg/thoughtcrime/securesms/groups/v2/GroupManagementRepository;->(Landroid/content/Context;ILkotlin/jvm/internal/DefaultConstructorMarker;)V -PLorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder;->setPriority(I)Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder; +PLorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder;->setGlobalPriority(I)Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder; PLorg/thoughtcrime/securesms/jobmanager/JsonJobData$Builder;->putStringListAsArray(Ljava/lang/String;Ljava/util/List;)Lorg/thoughtcrime/securesms/jobmanager/JsonJobData$Builder; PLorg/thoughtcrime/securesms/jobs/ConversationShortcutUpdateJob;->()V PLorg/thoughtcrime/securesms/jobs/ConversationShortcutUpdateJob;->()V @@ -48927,9 +49242,11 @@ PLorg/thoughtcrime/securesms/keyboard/emoji/search/EmojiSearchRepository;->(Landroid/content/Context;)V PLorg/thoughtcrime/securesms/keyvalue/InternalValues;->useConversationItemV2Media()Z PLorg/thoughtcrime/securesms/keyvalue/SettingsValues$Theme;->values()[Lorg/thoughtcrime/securesms/keyvalue/SettingsValues$Theme; +PLorg/thoughtcrime/securesms/keyvalue/SettingsValues;->getMessageFontSize()I PLorg/thoughtcrime/securesms/keyvalue/SettingsValues;->getUniversalExpireTimer()I PLorg/thoughtcrime/securesms/keyvalue/SettingsValues;->isEnterKeySends()Z PLorg/thoughtcrime/securesms/keyvalue/SettingsValues;->isLinkPreviewsEnabled()Z +PLorg/thoughtcrime/securesms/keyvalue/WallpaperValues;->hasWallpaperSet()Z PLorg/thoughtcrime/securesms/linkpreview/LinkPreviewRepository;->()V PLorg/thoughtcrime/securesms/linkpreview/LinkPreviewRepository;->()V PLorg/thoughtcrime/securesms/linkpreview/LinkPreviewState$Companion;->()V @@ -48991,13 +49308,14 @@ PLorg/thoughtcrime/securesms/mms/AttachmentManager;->()V PLorg/thoughtcrime/securesms/mms/AttachmentManager;->(Landroid/content/Context;Landroid/view/View;Lorg/thoughtcrime/securesms/mms/AttachmentManager$AttachmentListener;)V PLorg/thoughtcrime/securesms/mms/AttachmentManager;->isAttachmentPresent()Z PLorg/thoughtcrime/securesms/mms/ImageSlide;->hasPlaceholder()Z -PLorg/thoughtcrime/securesms/mms/ImageSlide;->isBorderless()Z +PLorg/thoughtcrime/securesms/mms/Slide;->asAttachment()Lorg/thoughtcrime/securesms/attachments/Attachment; PLorg/thoughtcrime/securesms/mms/Slide;->getBody()Lj$/util/Optional; PLorg/thoughtcrime/securesms/mms/Slide;->getCaption()Lj$/util/Optional; PLorg/thoughtcrime/securesms/mms/Slide;->getDisplayUri()Landroid/net/Uri; PLorg/thoughtcrime/securesms/mms/Slide;->getFileSize()J PLorg/thoughtcrime/securesms/mms/Slide;->getPlaceholderBlur()Lorg/thoughtcrime/securesms/blurhash/BlurHash; PLorg/thoughtcrime/securesms/mms/Slide;->hasThumbnail()Z +PLorg/thoughtcrime/securesms/mms/Slide;->isInProgress()Z PLorg/thoughtcrime/securesms/mms/SlideDeck$$ExternalSyntheticLambda0;->()V PLorg/thoughtcrime/securesms/mms/SlideDeck$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/mms/SlideDeck;->getBody()Ljava/lang/String; @@ -49069,7 +49387,6 @@ PLorg/thoughtcrime/securesms/notifications/v2/NotificationStateProvider;->constr PLorg/thoughtcrime/securesms/preferences/widgets/NotificationPrivacyPreference;->equals(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/preferences/widgets/NotificationPrivacyPreference;->isDisplayContact()Z PLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda0;->onChanged(Ljava/lang/Object;)V -PLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda1;->contentsMatch(Ljava/lang/Object;Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda5;->(Lorg/thoughtcrime/securesms/recipients/LiveRecipient;Lorg/thoughtcrime/securesms/recipients/RecipientForeverObserver;)V PLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda5;->run()V PLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda6;->(Lorg/thoughtcrime/securesms/recipients/LiveRecipient;Lorg/thoughtcrime/securesms/recipients/RecipientForeverObserver;)V @@ -49094,14 +49411,11 @@ PLorg/thoughtcrime/securesms/recipients/LiveRecipient;->removeForeverObserver(Lo PLorg/thoughtcrime/securesms/recipients/LiveRecipient;->removeObserver(Landroidx/lifecycle/Observer;)V PLorg/thoughtcrime/securesms/recipients/Recipient$Companion;->observable(Lorg/thoughtcrime/securesms/recipients/RecipientId;)Lio/reactivex/rxjava3/core/Observable; PLorg/thoughtcrime/securesms/recipients/Recipient$combinedAboutAndEmoji$2;->invoke()Ljava/lang/Object; -PLorg/thoughtcrime/securesms/recipients/Recipient$filteredAbout$2;->invoke()Ljava/lang/Object; -PLorg/thoughtcrime/securesms/recipients/Recipient$filteredAbout$2;->invoke()Ljava/lang/String; PLorg/thoughtcrime/securesms/recipients/Recipient;->getAbout()Ljava/lang/String; PLorg/thoughtcrime/securesms/recipients/Recipient;->getAboutEmoji()Ljava/lang/String; PLorg/thoughtcrime/securesms/recipients/Recipient;->getCombinedAboutAndEmoji()Ljava/lang/String; PLorg/thoughtcrime/securesms/recipients/Recipient;->getContactUri()Landroid/net/Uri; PLorg/thoughtcrime/securesms/recipients/Recipient;->getExpiresInSeconds()I -PLorg/thoughtcrime/securesms/recipients/Recipient;->getFilteredAbout()Ljava/lang/String; PLorg/thoughtcrime/securesms/recipients/Recipient;->getNotificationChannel()Ljava/lang/String; PLorg/thoughtcrime/securesms/recipients/Recipient;->getShouldShowE164()Z PLorg/thoughtcrime/securesms/recipients/Recipient;->isActiveGroup()Z @@ -49152,7 +49466,6 @@ PLorg/thoughtcrime/securesms/util/DateUtils$sameDayDateFormat$2;->invoke()Ljava/ PLorg/thoughtcrime/securesms/util/DateUtils;->getConversationDateHeaderString(Landroid/content/Context;Ljava/util/Locale;J)Ljava/lang/String; PLorg/thoughtcrime/securesms/util/DateUtils;->isSameExtendedRelativeTimestamp(JJ)Z PLorg/thoughtcrime/securesms/util/Debouncer;->clear()V -PLorg/thoughtcrime/securesms/util/Debouncer;->publish(Ljava/lang/Runnable;)V PLorg/thoughtcrime/securesms/util/DefaultSavedStateHandleDelegate$lazyDefault$2;->(Lkotlin/jvm/functions/Function0;)V PLorg/thoughtcrime/securesms/util/DefaultSavedStateHandleDelegate$lazyDefault$2;->invoke()Ljava/lang/Object; PLorg/thoughtcrime/securesms/util/DefaultSavedStateHandleDelegate;->(Landroidx/lifecycle/SavedStateHandle;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V @@ -49187,8 +49500,9 @@ PLorg/thoughtcrime/securesms/util/Material3OnScrollHelper;->(Landroid/app/ PLorg/thoughtcrime/securesms/util/Material3OnScrollHelper;->access$getAnimator$p(Lorg/thoughtcrime/securesms/util/Material3OnScrollHelper;)Landroid/animation/ValueAnimator; PLorg/thoughtcrime/securesms/util/Material3OnScrollHelper;->access$getSetStatusBarColor$p(Lorg/thoughtcrime/securesms/util/Material3OnScrollHelper;)Lkotlin/jvm/functions/Function1; PLorg/thoughtcrime/securesms/util/Material3OnScrollHelper;->getPreviousStatusBarColor()I +PLorg/thoughtcrime/securesms/util/MediaUtil;->isInstantVideoSupported(Lorg/thoughtcrime/securesms/mms/Slide;)Z +PLorg/thoughtcrime/securesms/util/MediaUtil;->isVideoType(Ljava/lang/String;)Z PLorg/thoughtcrime/securesms/util/MessageRecordUtil;->hasLocation(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z -PLorg/thoughtcrime/securesms/util/NoCrossfadeChangeDefaultAnimator;->()V PLorg/thoughtcrime/securesms/util/NullableSavedStateHandleDelegate;->(Landroidx/lifecycle/SavedStateHandle;Ljava/lang/String;)V PLorg/thoughtcrime/securesms/util/Projection$Corners;->()V PLorg/thoughtcrime/securesms/util/Projection$Corners;->(F)V @@ -49234,6 +49548,7 @@ PLorg/thoughtcrime/securesms/util/TextSecurePreferences$MediaKeyboardMode;->valueOf(Ljava/lang/String;)Lorg/thoughtcrime/securesms/util/TextSecurePreferences$MediaKeyboardMode; PLorg/thoughtcrime/securesms/util/TextSecurePreferences$MediaKeyboardMode;->values()[Lorg/thoughtcrime/securesms/util/TextSecurePreferences$MediaKeyboardMode; PLorg/thoughtcrime/securesms/util/TextSecurePreferences;->getMediaKeyboardMode(Landroid/content/Context;)Lorg/thoughtcrime/securesms/util/TextSecurePreferences$MediaKeyboardMode; +PLorg/thoughtcrime/securesms/util/TextSecurePreferences;->getMessageBodyTextSize(Landroid/content/Context;)I PLorg/thoughtcrime/securesms/util/TextSecurePreferences;->hasSeenStickerIntroTooltip(Landroid/content/Context;)Z PLorg/thoughtcrime/securesms/util/TextSecurePreferences;->isEnterSendsEnabled(Landroid/content/Context;)Z PLorg/thoughtcrime/securesms/util/ThemeUtil;->getAttribute(Landroid/content/Context;ILjava/lang/String;)Ljava/lang/String; @@ -49290,6 +49605,7 @@ PLorg/thoughtcrime/securesms/util/ViewUtil;->getAlphaAnimation(FFI)Landroid/view PLorg/thoughtcrime/securesms/util/ViewUtil;->getLeftMargin(Landroid/view/View;)I PLorg/thoughtcrime/securesms/util/ViewUtil;->getRightMargin(Landroid/view/View;)I PLorg/thoughtcrime/securesms/util/ViewUtil;->getTopMargin(Landroid/view/View;)I +PLorg/thoughtcrime/securesms/util/ViewUtil;->isRtl(Landroid/view/View;)Z PLorg/thoughtcrime/securesms/util/ViewUtil;->mirrorIfRtl(Landroid/view/View;Landroid/content/Context;)V PLorg/thoughtcrime/securesms/util/ViewUtil;->setPaddingBottom(Landroid/view/View;I)V PLorg/thoughtcrime/securesms/util/ViewUtil;->setPaddingTop(Landroid/view/View;I)V @@ -49304,7 +49620,6 @@ PLorg/thoughtcrime/securesms/util/WindowUtil;->setLightStatusBarFromTheme(Landro PLorg/thoughtcrime/securesms/util/WindowUtil;->setSystemUiFlags(Landroid/view/Window;I)V PLorg/thoughtcrime/securesms/util/adapter/mapping/LayoutFactory;->createViewHolder(Landroid/view/ViewGroup;)Lorg/thoughtcrime/securesms/util/adapter/mapping/MappingViewHolder; PLorg/thoughtcrime/securesms/util/adapter/mapping/MappingAdapter;->getItemTypes()Ljava/util/Map; -PLorg/thoughtcrime/securesms/util/adapter/mapping/MappingAdapter;->onAttachedToRecyclerView(Landroidx/recyclerview/widget/RecyclerView;)V PLorg/thoughtcrime/securesms/util/adapter/mapping/MappingAdapter;->onBindViewHolder(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;ILjava/util/List;)V PLorg/thoughtcrime/securesms/util/adapter/mapping/MappingAdapter;->onBindViewHolder(Lorg/thoughtcrime/securesms/util/adapter/mapping/MappingViewHolder;I)V PLorg/thoughtcrime/securesms/util/adapter/mapping/MappingAdapter;->onBindViewHolder(Lorg/thoughtcrime/securesms/util/adapter/mapping/MappingViewHolder;ILjava/util/List;)V From fac34f2aeb50cda58482581d41d7eb530476e035 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 16 Oct 2024 15:15:08 -0400 Subject: [PATCH 23/51] Bump version to 7.21.0 --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c2d2f14b58..37a2e58c0b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -21,8 +21,8 @@ plugins { apply(from = "static-ips.gradle.kts") -val canonicalVersionCode = 1470 -val canonicalVersionName = "7.20.1" +val canonicalVersionCode = 1471 +val canonicalVersionName = "7.21.0" val currentHotfixVersion = 0 val maxHotfixVersions = 100 From 232b84635fce011c2e96395716515218e288213a Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 17 Oct 2024 09:55:49 -0400 Subject: [PATCH 24/51] Fix SVR fallback list. --- .../java/org/thoughtcrime/securesms/pin/SvrRepository.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/pin/SvrRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/pin/SvrRepository.kt index 947bf4ad7e..51f72e76d5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/pin/SvrRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/pin/SvrRepository.kt @@ -100,8 +100,10 @@ object SvrRepository { svr2 to { restoreMasterKeyPreRegistrationFromV2(svr2, credentials.svr2, userPin) } ) } else { - listOf(svr2 to { restoreMasterKeyPreRegistrationFromV2(svr2, credentials.svr2, userPin) }) - listOf(svr2Legacy to { restoreMasterKeyPreRegistrationFromV2(svr2Legacy, credentials.svr2, userPin) }) + listOf( + svr2 to { restoreMasterKeyPreRegistrationFromV2(svr2, credentials.svr2, userPin) }, + svr2Legacy to { restoreMasterKeyPreRegistrationFromV2(svr2Legacy, credentials.svr2, userPin) } + ) } for ((implementation, operation) in operations) { From 4c9bdd16b081d8318ac4b82c41ab781ca51f44e7 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 17 Oct 2024 11:10:59 -0400 Subject: [PATCH 25/51] Add stopwatch for CallLog loading. --- .../calls/log/CallLogPagedDataSource.kt | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogPagedDataSource.kt b/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogPagedDataSource.kt index 8409cbe7ee..3da5392b5d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogPagedDataSource.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogPagedDataSource.kt @@ -1,5 +1,7 @@ package org.thoughtcrime.securesms.calls.log +import org.signal.core.util.Stopwatch +import org.signal.core.util.logging.Log import org.signal.paging.PagedDataSource class CallLogPagedDataSource( @@ -8,6 +10,10 @@ class CallLogPagedDataSource( private val repository: CallRepository ) : PagedDataSource { + companion object { + private val TAG = Log.tag(CallLogPagedDataSource::class) + } + private val hasFilter = filter == CallLogFilter.MISSED private val hasCallLinkRow = filter == CallLogFilter.ALL && query.isNullOrEmpty() @@ -15,12 +21,21 @@ class CallLogPagedDataSource( private var callLinksCount = 0 override fun size(): Int { + val stopwatch = Stopwatch("size") + callEventsCount = repository.getCallsCount(query, filter) + stopwatch.split("calls") + callLinksCount = repository.getCallLinksCount(query, filter) + stopwatch.split("call-links") + stopwatch.stop(TAG) + return callEventsCount + callLinksCount + hasFilter.toInt() + hasCallLinkRow.toInt() } override fun load(start: Int, length: Int, totalSize: Int, cancellationSignal: PagedDataSource.CancellationSignal): MutableList { + val stopwatch = Stopwatch("load($start, $length)") + val callLogRows = mutableListOf() if (length <= 0) { return callLogRows @@ -35,6 +50,7 @@ class CallLogPagedDataSource( callLogRows.add(CallLogRow.CreateCallLink) remaining -= 1 } + stopwatch.split("init") if (start < callEventStart && remaining > 0) { val callLinks = repository.getCallLinks( @@ -48,6 +64,7 @@ class CallLogPagedDataSource( remaining -= callLinks.size } + stopwatch.split("call-links") if (start < clearFilterStart && remaining > 0) { val callEvents = repository.getCalls( @@ -61,12 +78,16 @@ class CallLogPagedDataSource( remaining -= callEvents.size } + stopwatch.split("calls") if (hasFilter && start <= clearFilterStart && remaining > 0) { callLogRows.add(CallLogRow.ClearFilter) } repository.onCallTabPageLoaded(callLogRows) + stopwatch.split("callback") + stopwatch.stop(TAG) + return callLogRows } From 65996bca19a1e4368ac58dfb53bed61a407dd3c3 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 17 Oct 2024 11:18:21 -0400 Subject: [PATCH 26/51] Only notify call observer if read status changed. --- .../org/thoughtcrime/securesms/database/CallTable.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/CallTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/CallTable.kt index 6d34679eeb..13080ea176 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/CallTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/CallTable.kt @@ -112,12 +112,15 @@ class CallTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTabl } fun markAllCallEventsRead(timestamp: Long = Long.MAX_VALUE) { - writableDatabase.update(TABLE_NAME) + val updateCount = writableDatabase + .update(TABLE_NAME) .values(READ to ReadState.serialize(ReadState.READ)) - .where("$TIMESTAMP <= ?", timestamp) + .where("$TIMESTAMP <= ? AND $READ != ?", timestamp, ReadState.serialize(ReadState.READ)) .run() - notifyConversationListListeners() + if (updateCount > 0) { + notifyConversationListListeners() + } } fun markAllCallEventsWithPeerBeforeTimestampRead(peer: RecipientId, timestamp: Long): Call? { From 99c9ba0b70fb1e75e8a135b445f097ed95db44fc Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Thu, 17 Oct 2024 12:38:00 -0300 Subject: [PATCH 27/51] Utilize collect instead of toList. --- .../securesms/service/webrtc/SignalCallManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java index 21abe02856..bf349acc8e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java @@ -1060,7 +1060,7 @@ private static List mapToIceServers(@NonNull List Date: Thu, 17 Oct 2024 12:45:16 -0300 Subject: [PATCH 28/51] Utilize result type instead of error stream when attempting to create a call link. --- .../securesms/service/webrtc/links/SignalCallLinkManager.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/links/SignalCallLinkManager.kt b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/links/SignalCallLinkManager.kt index 5c6be075c8..16926e7fc4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/links/SignalCallLinkManager.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/links/SignalCallLinkManager.kt @@ -101,7 +101,7 @@ class SignalCallLinkManager( ) } catch (e: Exception) { Log.e(TAG, "Failed to create call link credential.", e) - emitter.onError(e) + emitter.onSuccess(CreateCallLinkResult.Failure(-1)) return@create } From fdeaf77fc04d21dcb848863f6f9f49087292b114 Mon Sep 17 00:00:00 2001 From: Michelle Tang Date: Thu, 17 Oct 2024 16:48:06 -0700 Subject: [PATCH 29/51] Use custom config for chat folders. --- .../database/ThreadTableTest_active.kt | 7 +++ .../database/ThreadTableTest_pinned.kt | 7 +++ .../securesms/components/FromTextView.java | 7 +-- .../app/chats/ChatsSettingsFragment.kt | 2 +- .../ConversationListDataSource.java | 46 ++++++++++++++++++- .../ConversationListFragment.java | 2 +- .../securesms/util/RemoteConfig.kt | 8 ++++ ...rchivedConversationListDataSourceTest.java | 5 ++ 8 files changed, 78 insertions(+), 6 deletions(-) diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/database/ThreadTableTest_active.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/database/ThreadTableTest_active.kt index d6f938adaa..e20da879a7 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/database/ThreadTableTest_active.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/database/ThreadTableTest_active.kt @@ -6,6 +6,8 @@ package org.thoughtcrime.securesms.database import androidx.test.platform.app.InstrumentationRegistry +import io.mockk.every +import io.mockk.mockkStatic import org.junit.Assert.assertEquals import org.junit.Assert.assertNotNull import org.junit.Before @@ -15,6 +17,7 @@ import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFold import org.thoughtcrime.securesms.conversationlist.model.ConversationFilter import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.testing.SignalDatabaseRule +import org.thoughtcrime.securesms.util.RemoteConfig import org.whispersystems.signalservice.api.push.ServiceId.ACI import java.util.UUID @@ -30,6 +33,10 @@ class ThreadTableTest_active { @Before fun setUp() { + mockkStatic(RemoteConfig::class) + + every { RemoteConfig.showChatFolders } returns true + recipient = Recipient.resolved(SignalDatabase.recipients.getOrInsertFromServiceId(ACI.from(UUID.randomUUID()))) } diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/database/ThreadTableTest_pinned.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/database/ThreadTableTest_pinned.kt index beee4b74ca..9a7cf2d356 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/database/ThreadTableTest_pinned.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/database/ThreadTableTest_pinned.kt @@ -1,5 +1,7 @@ package org.thoughtcrime.securesms.database +import io.mockk.every +import io.mockk.mockkStatic import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue import org.junit.Before @@ -10,6 +12,7 @@ import org.thoughtcrime.securesms.components.settings.app.chats.folders.ChatFold import org.thoughtcrime.securesms.conversationlist.model.ConversationFilter import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.testing.SignalDatabaseRule +import org.thoughtcrime.securesms.util.RemoteConfig import org.whispersystems.signalservice.api.push.ServiceId.ACI import java.util.UUID @@ -25,6 +28,10 @@ class ThreadTableTest_pinned { @Before fun setUp() { + mockkStatic(RemoteConfig::class) + + every { RemoteConfig.showChatFolders } returns true + recipient = Recipient.resolved(SignalDatabase.recipients.getOrInsertFromServiceId(ACI.from(UUID.randomUUID()))) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/FromTextView.java b/app/src/main/java/org/thoughtcrime/securesms/components/FromTextView.java index 63eefb8ee6..b1f4fdbed2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/FromTextView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/FromTextView.java @@ -14,6 +14,7 @@ import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.ContextUtil; import org.thoughtcrime.securesms.util.DrawableUtil; +import org.thoughtcrime.securesms.util.RemoteConfig; import org.thoughtcrime.securesms.util.SpanUtil; import org.thoughtcrime.securesms.util.ViewUtil; @@ -77,9 +78,9 @@ public void setText(Recipient recipient, @Nullable CharSequence fromString, @Nul setText(builder); - if (recipient.isBlocked()) setCompoundDrawablesRelativeWithIntrinsicBounds(getBlocked(), null, null, null); - else if (isPinned) setCompoundDrawablesRelativeWithIntrinsicBounds(getPinned(), null, null, null); - else setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, 0, 0); + if (recipient.isBlocked()) setCompoundDrawablesRelativeWithIntrinsicBounds(getBlocked(), null, null, null); + else if (RemoteConfig.getShowChatFolders() && isPinned) setCompoundDrawablesRelativeWithIntrinsicBounds(getPinned(), null, null, null); + else setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, 0, 0); } private Drawable getBlocked() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsFragment.kt index 889d7e0a15..1678d5fc89 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsFragment.kt @@ -60,7 +60,7 @@ class ChatsSettingsFragment : DSLSettingsFragment(R.string.preferences_chats__ch dividerPref() - if (RemoteConfig.internalUser) { + if (RemoteConfig.showChatFolders) { sectionHeaderPref(R.string.ChatsSettingsFragment__chat_folders) clickPref( diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListDataSource.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListDataSource.java index 05e5bb2a04..a1d69e9dbc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListDataSource.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListDataSource.java @@ -24,6 +24,7 @@ import org.thoughtcrime.securesms.dependencies.AppDependencies; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; +import org.thoughtcrime.securesms.util.RemoteConfig; import org.thoughtcrime.securesms.util.SignalTrace; import java.util.ArrayList; @@ -173,6 +174,7 @@ static class UnarchivedConversationListDataSource extends ConversationListDataSo private int totalCount; private int pinnedCount; private int archivedCount; + private int unpinnedCount; UnarchivedConversationListDataSource(@NonNull ChatFolderRecord chatFolder, @NonNull ConversationFilter conversationFilter, boolean showConversationFooterTip) { super(chatFolder, conversationFilter, showConversationFooterTip); @@ -184,12 +186,21 @@ protected int getTotalCount() { pinnedCount = threadTable.getPinnedConversationListCount(conversationFilter, chatFolder); archivedCount = threadTable.getArchivedConversationListCount(conversationFilter); + unpinnedCount = unarchivedCount - pinnedCount; totalCount = unarchivedCount; if (chatFolder.getFolderType() == ChatFolderRecord.FolderType.ALL && archivedCount != 0) { totalCount++; } + if (!RemoteConfig.getShowChatFolders() && pinnedCount != 0) { + if (unpinnedCount != 0) { + totalCount += 2; + } else { + totalCount += 1; + } + } + return totalCount; } @@ -198,11 +209,25 @@ protected Cursor getCursor(long offset, long limit) { List cursors = new ArrayList<>(5); long originalLimit = limit; + if (!RemoteConfig.getShowChatFolders() && offset == 0 && hasPinnedHeader()) { + MatrixCursor pinnedHeaderCursor = new MatrixCursor(ConversationReader.HEADER_COLUMN); + pinnedHeaderCursor.addRow(ConversationReader.PINNED_HEADER); + cursors.add(pinnedHeaderCursor); + limit--; + } + Cursor pinnedCursor = threadTable.getUnarchivedConversationList(conversationFilter, true, offset, limit, chatFolder); cursors.add(pinnedCursor); limit -= pinnedCursor.getCount(); - long unpinnedOffset = Math.max(0, offset - pinnedCount); + if (!RemoteConfig.getShowChatFolders() && offset == 0 && hasUnpinnedHeader()) { + MatrixCursor unpinnedHeaderCursor = new MatrixCursor(ConversationReader.HEADER_COLUMN); + unpinnedHeaderCursor.addRow(ConversationReader.UNPINNED_HEADER); + cursors.add(unpinnedHeaderCursor); + limit--; + } + + long unpinnedOffset = Math.max(0, offset - pinnedCount - getHeaderOffset()); Cursor unpinnedCursor = threadTable.getUnarchivedConversationList(conversationFilter, false, unpinnedOffset, limit, chatFolder); cursors.add(unpinnedCursor); @@ -223,6 +248,25 @@ protected Cursor getCursor(long offset, long limit) { return new MergeCursor(cursors.toArray(new Cursor[]{})); } + @VisibleForTesting + int getHeaderOffset() { + if (RemoteConfig.getShowChatFolders()) { + return 0; + } else { + return (hasPinnedHeader() ? 1 : 0) + (hasUnpinnedHeader() ? 1 : 0); + } + } + + @VisibleForTesting + boolean hasPinnedHeader() { + return pinnedCount != 0; + } + + @VisibleForTesting + boolean hasUnpinnedHeader() { + return hasPinnedHeader() && unpinnedCount != 0; + } + @VisibleForTesting boolean hasArchivedFooter() { return archivedCount != 0 && chatFolder.getFolderType() == ChatFolderRecord.FolderType.ALL; diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java index c38389c1e5..8bcdd683af 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java @@ -300,7 +300,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat fab.setVisibility(View.VISIBLE); cameraFab.setVisibility(View.VISIBLE); - chatFolderList.setVisibility(RemoteConfig.internalUser() ? View.VISIBLE : View.GONE); + chatFolderList.setVisibility(RemoteConfig.getShowChatFolders() ? View.VISIBLE : View.GONE); contactSearchMediator = new ContactSearchMediator(this, Collections.emptySet(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt b/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt index 2bfc9f6442..f2c2a70842 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt @@ -1103,6 +1103,14 @@ object RemoteConfig { hotSwappable = true ) + /** Whether or not to show chat folders. */ + @JvmStatic + val showChatFolders: Boolean by remoteBoolean( + key = "android.showChatFolders", + defaultValue = false, + hotSwappable = true + ) + @JvmStatic @get:JvmName("newCallUi") val newCallUi: Boolean by remoteBoolean( diff --git a/app/src/test/java/org/thoughtcrime/securesms/conversationlist/UnarchivedConversationListDataSourceTest.java b/app/src/test/java/org/thoughtcrime/securesms/conversationlist/UnarchivedConversationListDataSourceTest.java index 031122ce58..01cd1aa65f 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/conversationlist/UnarchivedConversationListDataSourceTest.java +++ b/app/src/test/java/org/thoughtcrime/securesms/conversationlist/UnarchivedConversationListDataSourceTest.java @@ -20,6 +20,7 @@ import org.thoughtcrime.securesms.database.SignalDatabase; import org.thoughtcrime.securesms.database.ThreadTable; import org.thoughtcrime.securesms.dependencies.AppDependencies; +import org.thoughtcrime.securesms.util.RemoteConfig; import java.util.ArrayList; import java.util.HashSet; @@ -46,6 +47,9 @@ public class UnarchivedConversationListDataSourceTest { @Mock private MockedStatic signalDatabaseMockedStatic; + @Mock + private MockedStatic remoteConfigMockedStatic; + private ConversationListDataSource.UnarchivedConversationListDataSource testSubject; private ChatFolderRecord allChatsFolder; @@ -58,6 +62,7 @@ public void setUp() { when(SignalDatabase.threads()).thenReturn(threadTable); when(AppDependencies.getDatabaseObserver()).thenReturn(mock(DatabaseObserver.class)); + when(RemoteConfig.getShowChatFolders()).thenReturn(true); allChatsFolder = setupAllChatsFolder(); testSubject = new ConversationListDataSource.UnarchivedConversationListDataSource(allChatsFolder, ConversationFilter.OFF, false); From c5bf88366c603659302b5fb4fafccf583da308d2 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Thu, 17 Oct 2024 19:49:33 -0400 Subject: [PATCH 30/51] Fix bug reusing already validated session during registration. --- .../registration/ui/RegistrationViewModel.kt | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt index dff1022ba7..60bed7ead7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt @@ -65,6 +65,7 @@ import org.thoughtcrime.securesms.util.Util import org.thoughtcrime.securesms.util.dualsim.MccMncProducer import org.whispersystems.signalservice.api.SvrNoDataException import org.whispersystems.signalservice.api.kbs.MasterKey +import org.whispersystems.signalservice.internal.push.RegistrationSessionMetadataJson import org.whispersystems.signalservice.internal.push.RegistrationSessionMetadataResponse import java.io.IOException import java.util.concurrent.TimeUnit @@ -743,21 +744,26 @@ class RegistrationViewModel : ViewModel() { var reglock = registrationLocked - val sessionId = getOrCreateValidSession(context)?.body?.id ?: return - val registrationData = getRegistrationData() + val session: RegistrationSessionMetadataJson? = getOrCreateValidSession(context)?.body + val sessionId: String = session?.id ?: return + val registrationData: RegistrationData = getRegistrationData() - Log.d(TAG, "Submitting verification code…") + if (session.verified) { + Log.i(TAG, "Session is already verified, registering account.") + } else { + Log.d(TAG, "Submitting verification code…") - val verificationResponse = RegistrationRepository.submitVerificationCode(context, sessionId, registrationData) + val verificationResponse = RegistrationRepository.submitVerificationCode(context, sessionId, registrationData) - val submissionSuccessful = verificationResponse is Success - val alreadyVerified = verificationResponse is AlreadyVerified + val submissionSuccessful = verificationResponse is Success + val alreadyVerified = verificationResponse is AlreadyVerified - Log.d(TAG, "Verification code submission network call completed. Submission successful? $submissionSuccessful Account already verified? $alreadyVerified") + Log.d(TAG, "Verification code submission network call completed. Submission successful? $submissionSuccessful Account already verified? $alreadyVerified") - if (!submissionSuccessful && !alreadyVerified) { - handleSessionStateResult(context, verificationResponse) - return + if (!submissionSuccessful && !alreadyVerified) { + handleSessionStateResult(context, verificationResponse) + return + } } Log.d(TAG, "Submitting registration…") From 493a39b9d41962ae9d96ef759e0d1ab1392d4770 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 17 Oct 2024 20:02:46 -0400 Subject: [PATCH 31/51] Update translations and other static files. --- app/src/main/res/values-af/strings.xml | 20 ++-- app/src/main/res/values-ar/strings.xml | 86 ++++++++-------- app/src/main/res/values-az/strings.xml | 20 ++-- app/src/main/res/values-bg/strings.xml | 20 ++-- app/src/main/res/values-bn/strings.xml | 22 ++-- app/src/main/res/values-bs/strings.xml | 22 ++-- app/src/main/res/values-ca/strings.xml | 22 ++-- app/src/main/res/values-cs/strings.xml | 24 ++--- app/src/main/res/values-da/strings.xml | 18 ++-- app/src/main/res/values-de/strings.xml | 22 ++-- app/src/main/res/values-el/strings.xml | 22 ++-- app/src/main/res/values-es/strings.xml | 50 ++++----- app/src/main/res/values-et/strings.xml | 20 ++-- app/src/main/res/values-eu/strings.xml | 20 ++-- app/src/main/res/values-fa/strings.xml | 22 ++-- app/src/main/res/values-fi/strings.xml | 22 ++-- app/src/main/res/values-fr/strings.xml | 20 ++-- app/src/main/res/values-ga/strings.xml | 28 ++--- app/src/main/res/values-gl/strings.xml | 20 ++-- app/src/main/res/values-gu/strings.xml | 22 ++-- app/src/main/res/values-hi/strings.xml | 22 ++-- app/src/main/res/values-hr/strings.xml | 28 ++--- app/src/main/res/values-hu/strings.xml | 22 ++-- app/src/main/res/values-in/strings.xml | 20 ++-- app/src/main/res/values-it/strings.xml | 20 ++-- app/src/main/res/values-iw/strings.xml | 26 ++--- app/src/main/res/values-ja/strings.xml | 20 ++-- app/src/main/res/values-ka/strings.xml | 20 ++-- app/src/main/res/values-kk/strings.xml | 20 ++-- app/src/main/res/values-km/strings.xml | 18 ++-- app/src/main/res/values-kn/strings.xml | 20 ++-- app/src/main/res/values-ko/strings.xml | 20 ++-- app/src/main/res/values-ky/strings.xml | 18 ++-- app/src/main/res/values-lt/strings.xml | 24 ++--- app/src/main/res/values-lv/strings.xml | 22 ++-- app/src/main/res/values-mk/strings.xml | 20 ++-- app/src/main/res/values-ml/strings.xml | 20 ++-- app/src/main/res/values-mr/strings.xml | 22 ++-- app/src/main/res/values-ms/strings.xml | 20 ++-- app/src/main/res/values-my/strings.xml | 18 ++-- app/src/main/res/values-nb/strings.xml | 22 ++-- app/src/main/res/values-nl/strings.xml | 22 ++-- app/src/main/res/values-pa/strings.xml | 20 ++-- app/src/main/res/values-pl/strings.xml | 26 ++--- app/src/main/res/values-pt-rBR/strings.xml | 18 ++-- app/src/main/res/values-pt/strings.xml | 18 ++-- app/src/main/res/values-ro/strings.xml | 24 ++--- app/src/main/res/values-ru/strings.xml | 26 ++--- app/src/main/res/values-sk/strings.xml | 26 ++--- app/src/main/res/values-sl/strings.xml | 24 ++--- app/src/main/res/values-sq/strings.xml | 20 ++-- app/src/main/res/values-sr/strings.xml | 22 ++-- app/src/main/res/values-sv/strings.xml | 22 ++-- app/src/main/res/values-sw/strings.xml | 20 ++-- app/src/main/res/values-ta/strings.xml | 20 ++-- app/src/main/res/values-te/strings.xml | 20 ++-- app/src/main/res/values-th/strings.xml | 20 ++-- app/src/main/res/values-tl/strings.xml | 12 +-- app/src/main/res/values-tr/strings.xml | 22 ++-- app/src/main/res/values-ug/strings.xml | 20 ++-- app/src/main/res/values-uk/strings.xml | 114 ++++++++++----------- app/src/main/res/values-ur/strings.xml | 22 ++-- app/src/main/res/values-vi/strings.xml | 20 ++-- app/src/main/res/values-yue/strings.xml | 20 ++-- app/src/main/res/values-zh-rCN/strings.xml | 20 ++-- app/src/main/res/values-zh-rHK/strings.xml | 20 ++-- app/src/main/res/values-zh-rTW/strings.xml | 20 ++-- app/static-ips.gradle.kts | 2 +- 68 files changed, 802 insertions(+), 802 deletions(-) diff --git a/app/src/main/res/values-af/strings.xml b/app/src/main/res/values-af/strings.xml index 5ed93221d7..49f9688898 100644 --- a/app/src/main/res/values-af/strings.xml +++ b/app/src/main/res/values-af/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Groepe Only message from group chats - Add + Voeg toe %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Merk alles as gelees %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d klets + %1$d kletse @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Uitsonderings Exclude chats @@ -5138,7 +5138,7 @@ Include muted chats - Create + Skep Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Stoor Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Wys af Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Klaar Boodskappe diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 488d5503a3..31bc0e2e1a 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -3058,7 +3058,7 @@ سيُؤدي تغيير اسم المُستخدم الخاص بك إلى إعادة تعيين الرابط وكود الـ QR الحاليين الخاصين بك. هل أنت متأكِّد؟ - مواصلة + متابعة %1$d جهة اتصال تستخدم سيجنال!‏ @@ -3237,13 +3237,13 @@ مشكلة في إرسال الرسائل! - تم حفظ الوسائط + تمَّ حفظ الوسائط بحث البحث في الدردشات غير المقروءة - البحث عن الدردشات، جهات الاتصال، والرسائل + البحث عن الدردشات، وجهات الاتصال، والرسائل إغلاق @@ -3303,16 +3303,16 @@ - هذا الجهاز لم يعد مسجلاً هذا على الأرجح بسبب قيامك بتسجيل رقم هاتفك على سيجنال في جهاز مختلف. + هذا الجهاز لم يَعُد مسجَّلًا.على الأغلب بسبب قيامك بتسجيل رقم هاتفك المُقترِن بسيجنال في جهازٍ مختلف. - أعد تسجيل الجهاز + أعِد تسجيل الجهاز تمَّ تسجيل خروجك من تطبيق سيجنال على هذا الجهاز. - حدِّث تطبيق سيجنال للاستمرار في استخدام عمليات الدفع. قد لا يكون رصيدك مُحدثًا. + حدِّث تطبيق سيجنال للاستمرار في استخدام عمليات الدفع. قد لا يكون رصيدك مُحدَّثًا. @@ -3367,7 +3367,7 @@ ادعُ إلى سيجنال مجموعة جديدة - تحديث قائمة الاتصال + تحديث جهات الاتصال هل تفتقد إلى جهة اتصال؟ حاول التحديث من جديد @@ -3396,16 +3396,16 @@ "\"%1$s\" ليس مُستخدم لِسيجنال. يُرجى التحقُّق من اسم المُستخدم والمحاولة مُجدَّدًا." لستَ بحاجة إلى إضافة نفسك إلى المجموعة وصلت المجموعة إلى الحد الأقصى. - أقصى حد للأعضاء في مجموعات سيجنال هو %1$d عضوا. - تم وصول الأعضاء إلى الحد المُوصى به - تعمل مجموعات سيجنال بشكل أفضل مع %1$d عضوا أو أقل. سيؤدي إضافة المزيد من الأعضاء إلى ظهور تأخر في إرسال الرسائل واستلامها. + أقصى حد للأعضاء في مجموعات سيجنال هو %1$d عضوًا. + تمَّ الوصول إلى حد الأعضاء المُوصى به + تعمل مجموعات سيجنال بشكلٍ أفضل مع %1$d عضو (أعضاء) أو أقل. ستؤدي إضافة المزيد من الأعضاء إلى تأخُّر في إرسال الرسائل واستلامها. %1$d عضو %1$d عضو - %1$d أعضاء + %1$d عضوين %1$d أعضاء - %1$d عضو - %1$d عضو + %1$d عضوًا + %1$d عضوٍ العثور عبر رقم الهاتف @@ -3430,10 +3430,10 @@ %1$d عضو %1$d عضو - %1$d أعضاء + %1$d عضوان %1$d أعضاء - %1$d عضوا - %1$d عضو + %1$d عضوًا + %1$d عضوٍ @@ -3447,19 +3447,19 @@ ‫رسالة سيجنال - رسائل SMS غير مؤمّنة + رسالة قصيرة غير مؤمَّنة رسالة متعدّدة الوسائط غير مؤمنة SIM %1$d - أرسل + إرسال تحرير الرسالة تبديل لوحة مفاتيح الرموز التعبيرية - صورة للمرفق مُصغَّرة - فتح دُرج مرفقات الكاميرا - تسجيل وإرسال مرفق صوتي + صورة مُصغَّرة للملف المُرفَق + فتح دُرج مُرفَقات الكاميرا + تسجيل وإرسال مُرفَق صوتي - قفل التسجيل الصوتي - لم تُرسَل الرسالة، علبك التأكد من اتصالك بالانترنت ثم المحاولة مجددا. + قفل تسجيل المُرفَق الصوتي + لم تُرسَل الرسالة. عليك التأكُّد من اتصالك بالانترنت ثم المحاولة مُجدَّدًا. مرِّر للإلغاء @@ -3470,18 +3470,18 @@ رسالة آمنة - الإرسال فشل + فشل الإرسال في انتظار الموافقة - تم تسليم الرسالة - تمّت قراءة الرسالة + تمَّ التسليم + تمَّت قراءة الرسالة صورة جهة الاتصال - قيد التحميل - لمعرفة المزيد + جارٍ التحميل + اعرف المزيد الانضمام للمكالمة إعادة الاتصال @@ -5555,11 +5555,11 @@ Only messages from direct chats - Groups + المجموعات Only message from group chats - Add + إضافة %1$s folder added. @@ -5573,7 +5573,7 @@ Reorder folders - Mark all read + اعتبارها رسائل مقروءة %1$d chat types @@ -5585,12 +5585,12 @@ - %1$d chats - %1$d chat - %1$d chats - %1$d chats - %1$d chats - %1$d chats + %1$d دردشات + %1$d دردشة + %1$d دردشتين + %1$d دردشات + %1$d دردشةً + %1$d دردشةٍ @@ -5614,7 +5614,7 @@ Choose chats that you want to appear in this folder. - Exceptions + الاستثناءات Exclude chats @@ -5624,9 +5624,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + تَضمين الدردشاتِ المَكتومة - Create + إنشاء Create folder? @@ -5636,7 +5636,7 @@ Edit folder - Save + حفظ Save changes? @@ -5644,7 +5644,7 @@ Save changes - Discard + تجاهل Delete folder @@ -5654,7 +5654,7 @@ Chat types - Done + تمّ الرسائل diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 90db16691c..a23df89c4f 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Qruplar Only message from group chats - Add + Əlavə et %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Hamısını oxundu olaraq işarələ %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d çat + %1$d çat @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + İstisnalar Exclude chats @@ -5138,7 +5138,7 @@ Include muted chats - Create + Yarat Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Saxla Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Sil Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Bitdi Mesajlar diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 3c0b5be00f..3389bcebc6 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Групи Only message from group chats - Add + Добави %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Маркиране на всички като прочетени %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d чат + %1$d чата @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Изключения Exclude chats @@ -5138,7 +5138,7 @@ Include muted chats - Create + Създаване Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Запази Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Отхвърляне Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Готово Съобщения diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index cb64e7e061..750bde21af 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + গ্রুপসমূহ Only message from group chats - Add + যোগ করুন %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + সমস্ত পড়া হয়েছে চিহ্নিত করুন %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$dটি চ্যাট + %1$dটি চ্যাট @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + প্রত্যাশা Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + মিউট করা চ্যাট অন্তর্ভুক্ত করুন - Create + তৈরি Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + সেভ করুন Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + বাতিল করুন Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + সম্পন্ন হয়েছে বার্তাসমূহ diff --git a/app/src/main/res/values-bs/strings.xml b/app/src/main/res/values-bs/strings.xml index 66ee59b06d..f561a843dc 100644 --- a/app/src/main/res/values-bs/strings.xml +++ b/app/src/main/res/values-bs/strings.xml @@ -5317,11 +5317,11 @@ Only messages from direct chats - Groups + Grupe Only message from group chats - Add + Dodaj %1$s folder added. @@ -5335,7 +5335,7 @@ Reorder folders - Mark all read + Sve označi kao pročitano %1$d chat type @@ -5346,9 +5346,9 @@ %1$d chat - %1$d chats - %1$d chats - %1$d chats + %1$d chata + %1$d chatova + %1$d chatova @@ -5370,7 +5370,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Izuzeci Exclude chats @@ -5382,7 +5382,7 @@ Include muted chats - Create + Kreiraj Create folder? @@ -5392,7 +5392,7 @@ Edit folder - Save + Pohrani Save changes? @@ -5400,7 +5400,7 @@ Save changes - Discard + Poništi Delete folder @@ -5410,7 +5410,7 @@ Chat types - Done + U redu Poruke diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 8364059637..1f450e12a8 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Grups Only message from group chats - Add + Afegeix %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Marca-ho tot com a llegit %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d xat + %1$d xats @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Excepcions Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Incloure els xats silenciats - Create + Crea Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Desar Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Descarta Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Fet Missatges diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 15a7270729..b9ed38b7b9 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -5317,11 +5317,11 @@ Only messages from direct chats - Groups + Skupiny Only message from group chats - Add + Přidat %1$s folder added. @@ -5335,7 +5335,7 @@ Reorder folders - Mark all read + Označit vše jako přečtené %1$d chat type @@ -5346,9 +5346,9 @@ %1$d chat - %1$d chats - %1$d chats - %1$d chats + %1$d chaty + %1$d chatů + %1$d chatů @@ -5370,7 +5370,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Výjimky Exclude chats @@ -5380,9 +5380,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Zahrnout ztlumené chaty - Create + Vytvořit Create folder? @@ -5392,7 +5392,7 @@ Edit folder - Save + Uložit Save changes? @@ -5400,7 +5400,7 @@ Save changes - Discard + Zahodit Delete folder @@ -5410,7 +5410,7 @@ Chat types - Done + Hotovo Zprávy diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 729eacfae9..b2ef2b1d23 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Grupper Only message from group chats - Add + Tilføj %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Markér alle som læst %1$d chat type @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Undtagelser Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Inkluder ignorerede chats - Create + Opret Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Gem Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Kassér Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Færdig Beskeder diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 5855d8f8ce..aee6f74d3c 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Gruppen Only message from group chats - Add + Hinzufügen %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Alle gelesen %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d Chat + %1$d Chats @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Ausnahmen Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Stummgeschaltete Chats einschließen - Create + Erstellen Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Speichern Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Verwerfen Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Fertig Nachrichten diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 941f2e1a3c..acd55a5f23 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Ομάδες Only message from group chats - Add + Προσθήκη %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Σημείωση όλων ως αναγνωσμένα %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d συνομιλία + %1$d συνομιλίες @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Εξαιρέσεις Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Προσμέτρηση συνομιλιών σε σίγαση - Create + Δημιουργία Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Αποθήκευση Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Απόρριψη Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Τέλος Μηνύματα diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 72528c2933..c9fb5412e8 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -2509,7 +2509,7 @@ Ver - No se han encontrado resultados para \"%1$s\" + No se ha encontrado ningún resultado para \"%1$s\" @@ -2891,7 +2891,7 @@ Buscar Buscar chats sin leer - Buscar chats, personas y mensajes + Buscar chats, contactos y mensajes Cerrar @@ -3436,13 +3436,13 @@ Describe el problema detalladamente para ayudarnos a entender la incidencia. Selecciona una opción - Algo no está funcionando - Solicitud de función + Hay algo que no funciona bien + Solicitar función Pregunta Feedback Otros Pagos (MobileCoin) - Donaciones; Insignias + Donaciones e insignias Envío de registro de depuración de Android Signal @@ -4718,7 +4718,7 @@ Eliminar %1$s en tu cuenta de pagos Código de país no especificado Número no especificado - El número de teléfono que has introducido no coincide con el de tu cuenta. + El número de teléfono que has introducido no coincide con el de tu cuenta de Signal. ¿Seguro que quieres eliminar tu cuenta? Esta acción elimina tu cuenta de Signal y reinicia la aplicación. Signal se cerrará después de completarse el proceso. Fallo al eliminar los datos locales. Puedes hacerlo manualmente desde los ajustes del sistema para la aplicación. @@ -5008,7 +5008,7 @@ Número de teléfono anterior Tu número nuevo Número de teléfono nuevo - El número introducido no coincide con el de tu cuenta de Signal. + El número de teléfono que has introducido no coincide con el de tu cuenta de Signal. Debes especificar el código de país de tu número anterior Debes especificar tu número de teléfono anterior Debes especificar el código de país de tu número nuevo @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Grupos Only message from group chats - Add + Añadir %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Marcar todos como leídos %1$d chat type @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Excepciones Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Considerar chats silenciados - Create + Crear Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Guardar Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Descartar Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Listo Mensajes @@ -5294,7 +5294,7 @@ Donar a Signal - Signal se mantiene gracias a gente como tú. Dona mensualmente y recibe una insignia. + Personas como tú hacen que Signal sea una realidad. Haz una donación mensual y recibe una insignia para lucir en tu perfil. Donar @@ -5317,7 +5317,7 @@ Apoya la misión de Signal - Signal se mantiene gracias a gente como tú. Dona y recibe una insignia para tu perfil. + Personas como tú hacen que Signal sea una realidad. Haz tu donación y recibe una insignia para lucir en tu perfil. Ahora no Donar @@ -5614,9 +5614,9 @@ %1$s apoya a Signal - %1$s apoya a Signal con una donación mensual. Signal es una asociación sin ánimo de lucro, sin anuncios ni fondos de inversión, sostenida por gente como tú. + %1$s apoya a Signal con una donación mensual. Signal es una organización sin ánimo de lucro, sin anuncios ni inversores. Nuestra misión se sostiene gracias al apoyo de personas como tú. - %1$s apoya a Signal con una donación. Signal es una asociación sin ánimo de lucro, sin anuncios ni fondos de inversión, sostenida por gente como tú. + %1$s apoya a Signal con una donación. Signal es una organización sin ánimo de lucro, sin anuncios ni inversores. Nuestra misión se sostiene gracias al apoyo de personas como tú. Insignia @@ -5657,7 +5657,7 @@ Si tienes más de una insignia, puedes seleccionar cuál quieres que otras personas vean en tu perfil. Consigue insignias para tu perfil al ayudar a Signal. - Signal es una organización sin ánimo de lucro, sin anuncios ni inversores. Nuestra misión se sostiene únicamente gracias al apoyo de personas como tú. + Signal es una organización sin ánimo de lucro, sin anuncios ni inversores. Nuestra misión se sostiene gracias al apoyo de personas como tú. Donar a Signal @@ -6818,7 +6818,7 @@ Más información - Hecho + Listo No se ha podido procesar la donación @@ -6834,7 +6834,7 @@ Hemos recibido tu transferencia bancaria. Puedes añadir esta insignia a tu perfil para mostrar que apoyas a Signal. - Hecho + Listo Cancelando… @@ -7112,7 +7112,7 @@ Compartir enlace - Hecho + Listo No se puede compartir el enlace de la llamada. @@ -7197,7 +7197,7 @@ Reiniciar - Hecho + Listo Código diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 59e256b384..5cdf87e996 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Grupid Only message from group chats - Add + Lisa %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Märgi kõik loetuks %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d vestlus + %1$d vestlust @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Erandid Exclude chats @@ -5138,7 +5138,7 @@ Include muted chats - Create + Loo Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Salvesta Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Loobu Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Tehtud Sõnumid diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index a59e8cf8c9..6344380d15 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Taldeak Only message from group chats - Add + Gehitu %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Irakurritako gisa markatu guztiak %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d txat + %1$d txat @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Salbuespenak Exclude chats @@ -5138,7 +5138,7 @@ Include muted chats - Create + Sortu Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Gorde Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Baztertu Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Eginda Mezuak diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index b6d34e7b90..13ef01aa80 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + گروه‌ها‌ Only message from group chats - Add + افزودن %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + علامت‌گذاری همه به صورت خوانده شده %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d گفتگو + %1$d گفتگو @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + موارد استثناء Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + گنجاندن گفتگوهای بی‌صداشده - Create + ایجاد Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + ذخیره Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + دور انداختن Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + انجام شد پیام‌ها diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index b5e5d505b5..259cab28fc 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Ryhmät Only message from group chats - Add + Lisää %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Merkitse kaikki luetuiksi %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d keskustelu + %1$d keskustelua @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Poikkeukset Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Sisällytä mykistetyt keskustelut - Create + Luo Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Tallenna Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Hylkää Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Valmis Viestit diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 58afed77cf..bc4354b3d3 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Groupes Only message from group chats - Add + Ajouter %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Tout marquer comme lu %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d conversation + %1$d conversations @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Inclure les messages en sourdine - Create + Créer Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Enregistrer Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Supprimer Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Terminé Messages diff --git a/app/src/main/res/values-ga/strings.xml b/app/src/main/res/values-ga/strings.xml index e7d282d6de..a893278d6a 100644 --- a/app/src/main/res/values-ga/strings.xml +++ b/app/src/main/res/values-ga/strings.xml @@ -5436,11 +5436,11 @@ Only messages from direct chats - Groups + Baiclí Only message from group chats - Add + Cuir leis %1$s folder added. @@ -5454,7 +5454,7 @@ Reorder folders - Mark all read + Rianaigh uile mar léite %1$d chat type @@ -5465,11 +5465,11 @@ - %1$d chat - %1$d chats - %1$d chats - %1$d chats - %1$d chats + %1$d chomhrá + %1$d chomhrá + %1$d chomhrá + %1$d gcomhrá + %1$d comhrá @@ -5492,7 +5492,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Eisceachtaí Exclude chats @@ -5502,9 +5502,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Cuir Comhráite Balbhaithe san Áireamh - Create + Cruthaigh Create folder? @@ -5514,7 +5514,7 @@ Edit folder - Save + Sábháil Save changes? @@ -5522,7 +5522,7 @@ Save changes - Discard + Cuileáil Delete folder @@ -5532,7 +5532,7 @@ Chat types - Done + Déanta Teachtaireachtaí diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index a1a92358d2..4e90c5c1eb 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Grupos Only message from group chats - Add + Engadir %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Marcar todas como lidas %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d conversa + %1$d conversas @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Agás Exclude chats @@ -5138,7 +5138,7 @@ Include muted chats - Create + Crear Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Gardar Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Descartar Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Feito Mensaxes diff --git a/app/src/main/res/values-gu/strings.xml b/app/src/main/res/values-gu/strings.xml index 4d1fb943d0..1e4128f1c2 100644 --- a/app/src/main/res/values-gu/strings.xml +++ b/app/src/main/res/values-gu/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + ગ્રુપ Only message from group chats - Add + ઉમેરો %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + બધાને વાંચેલા તરીકે માર્ક કરો %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d ચેટ + %1$d ચેટ @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + અપવાદો Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + મ્યૂટ કરેલી ચેટ સામેલ કરો - Create + બનાવો Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + સેવ કરો Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + કાઢી નાખો Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + થઈ ગયું મેસેજ diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 6aebcd9982..a92a63d2cf 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + समूह Only message from group chats - Add + जोड़ें %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + सभी को पढ़ा दिखाएं %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d चैट + %1$d चैट @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + अपवाद Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + म्यूट की गई चैट शामिल करें - Create + बनाएँ Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + सेव Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + रद्द करें Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + पूर्ण मेसेज diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index db00352a5a..cc143cfcf1 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -5317,11 +5317,11 @@ Only messages from direct chats - Groups + Grupe Only message from group chats - Add + Dodaj %1$s folder added. @@ -5335,7 +5335,7 @@ Reorder folders - Mark all read + Označi sve kao pročitano %1$d chat type @@ -5345,10 +5345,10 @@ - %1$d chat - %1$d chats - %1$d chats - %1$d chats + %1$d razgovor + %1$d razgovora + %1$d razgovora + %1$d razgovora @@ -5370,7 +5370,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Iznimke Exclude chats @@ -5380,9 +5380,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + U broj uključi i utišane razgovore - Create + Stvori Create folder? @@ -5392,7 +5392,7 @@ Edit folder - Save + Spremi Save changes? @@ -5400,7 +5400,7 @@ Save changes - Discard + Odbaci Delete folder @@ -5410,7 +5410,7 @@ Chat types - Done + Gotovo Poruke @@ -7836,7 +7836,7 @@ Medijski zapis više nije dostupan - Vaš trenutni plan za sigurnosno kopiranje Signala uključuje posljednji %1$d dan medijskih zapisa. Da biste započeli sigurnosno kopiranje svih svojih medijskih zapisa, nadogradite svoj plan sada. + Vaš trenutni plan za sigurnosno kopiranje Signala uključuje posljednji dan medijskih zapisa. Da biste započeli sigurnosno kopiranje svih svojih medijskih zapisa, nadogradite svoj plan sada. Vaš trenutni plan za sigurnosno kopiranje Signala uključuje posljednja %1$d dana medijskih zapisa. Da biste započeli sigurnosno kopiranje svih svojih medijskih zapisa, nadogradite svoj plan sada. Vaš trenutni plan za sigurnosno kopiranje Signala uključuje posljednjih %1$d dana medijskih zapisa. Da biste započeli sigurnosno kopiranje svih svojih medijskih zapisa, nadogradite svoj plan sada. Vaš trenutni plan za sigurnosno kopiranje Signala uključuje posljednjih %1$d dana medijskih zapisa. Da biste započeli sigurnosno kopiranje svih svojih medijskih zapisa, nadogradite svoj plan sada. diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index abf72af9ce..2f2482ef93 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Csoportok Only message from group chats - Add + Hozzáadás %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Összes megjelölése olvasottként %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d csevegés + %1$d csevegés @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Kivételek Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + A némított csevegéseket is tartalmazza - Create + Létrehozás Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Mentés Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Elvetés Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Kész Üzenetek diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 09a00bebc7..7ff80902f8 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -4960,11 +4960,11 @@ Only messages from direct chats - Groups + Grup Only message from group chats - Add + Tambahkan %1$s folder added. @@ -4978,14 +4978,14 @@ Reorder folders - Mark all read + Tandai semua sudah dibaca %1$d chat types - %1$d chats + %1$d obrolan @@ -5004,7 +5004,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Pengecualian Exclude chats @@ -5014,9 +5014,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Sertakan Obrolan yang Dibisukan - Create + Buat Create folder? @@ -5026,7 +5026,7 @@ Edit folder - Save + Simpan Save changes? @@ -5034,7 +5034,7 @@ Save changes - Discard + Hapus Delete folder @@ -5044,7 +5044,7 @@ Chat types - Done + Selesai Pesan diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 5766eb3253..887dd8e676 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Gruppi Only message from group chats - Add + Aggiungi %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Segna tutto come già letto %1$d chat type @@ -5106,7 +5106,7 @@ %1$d chat - %1$d chats + %1$d chat @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Eccezioni Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Includi chat silenziate - Create + Crea Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Salva Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Elimina Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Fatto Messaggi diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 89269e97dc..1c6aecea7b 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -5317,11 +5317,11 @@ Only messages from direct chats - Groups + קבוצות Only message from group chats - Add + הוסף %1$s folder added. @@ -5335,7 +5335,7 @@ Reorder folders - Mark all read + סמן הכול כנקרא %1$d chat type @@ -5345,10 +5345,10 @@ - %1$d chat - %1$d chats - %1$d chats - %1$d chats + צ׳אט %1$d + %1$d צ׳אטים + %1$d צ׳אטים + %1$d צ׳אטים @@ -5370,7 +5370,7 @@ Choose chats that you want to appear in this folder. - Exceptions + יוצאי דופן Exclude chats @@ -5380,9 +5380,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + כלילת צ׳אטים מושתקים - Create + צור Create folder? @@ -5392,7 +5392,7 @@ Edit folder - Save + שמירה Save changes? @@ -5400,7 +5400,7 @@ Save changes - Discard + השמט Delete folder @@ -5410,7 +5410,7 @@ Chat types - Done + סיום הודעות diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index bec5955c64..19d47a089e 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -4960,11 +4960,11 @@ Only messages from direct chats - Groups + グループ Only message from group chats - Add + 追加する %1$s folder added. @@ -4978,14 +4978,14 @@ Reorder folders - Mark all read + すべて既読にする %1$d chat types - %1$d chats + %1$d件のチャット @@ -5004,7 +5004,7 @@ Choose chats that you want to appear in this folder. - Exceptions + 例外 Exclude chats @@ -5014,9 +5014,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + ミュート中のチャットも含める - Create + 作成する Create folder? @@ -5026,7 +5026,7 @@ Edit folder - Save + 保存 Save changes? @@ -5034,7 +5034,7 @@ Save changes - Discard + 破棄する Delete folder @@ -5044,7 +5044,7 @@ Chat types - Done + 完了 メッセージ diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml index 045b856832..c91989c506 100644 --- a/app/src/main/res/values-ka/strings.xml +++ b/app/src/main/res/values-ka/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + ჯგუფები Only message from group chats - Add + დამატება %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + ყველას წაკითხულად მონიშვნა %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d ჩათი + %1$d ჩათი @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + გამონაკლისები Exclude chats @@ -5138,7 +5138,7 @@ Include muted chats - Create + შექმენი Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + შენახვა Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + გაუქმება Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + შესრულებულია შეტყობინებები diff --git a/app/src/main/res/values-kk/strings.xml b/app/src/main/res/values-kk/strings.xml index 5735e21469..9a39bacf4b 100644 --- a/app/src/main/res/values-kk/strings.xml +++ b/app/src/main/res/values-kk/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Топтар Only message from group chats - Add + Қосу %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Барлығын оқылды деп белгілеу %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d чат + %1$d чат @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Ерекше жағдайлар Exclude chats @@ -5138,7 +5138,7 @@ Include muted chats - Create + Жасау Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Сақтау Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Тастау Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Дайын Хабарламалар diff --git a/app/src/main/res/values-km/strings.xml b/app/src/main/res/values-km/strings.xml index 596e77f846..ac27c0662c 100644 --- a/app/src/main/res/values-km/strings.xml +++ b/app/src/main/res/values-km/strings.xml @@ -4960,11 +4960,11 @@ Only messages from direct chats - Groups + ក្រុម Only message from group chats - Add + បន្ថែម %1$s folder added. @@ -4978,14 +4978,14 @@ Reorder folders - Mark all read + សម្គាល់ការអានទាំងអស់ %1$d chat types - %1$d chats + ការជជែក %1$d @@ -5004,7 +5004,7 @@ Choose chats that you want to appear in this folder. - Exceptions + លើកលែង Exclude chats @@ -5016,7 +5016,7 @@ Include muted chats - Create + បង្កើត Create folder? @@ -5026,7 +5026,7 @@ Edit folder - Save + រក្សាទុក Save changes? @@ -5034,7 +5034,7 @@ Save changes - Discard + បោះបង់ Delete folder @@ -5044,7 +5044,7 @@ Chat types - Done + រួចរាល់ សារ diff --git a/app/src/main/res/values-kn/strings.xml b/app/src/main/res/values-kn/strings.xml index 71718943df..8bb2166430 100644 --- a/app/src/main/res/values-kn/strings.xml +++ b/app/src/main/res/values-kn/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + ಗುಂಪುಗಳು Only message from group chats - Add + ಸೇರಿಸಿ %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + ಎಲ್ಲವನ್ನು ಓದಿದೆ ಎಂದು ಗುರುತು ಮಾಡಿ %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d ಚಾಟ್‌ಗಳು + %1$d ಚಾಟ್‌ಗಳು @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + ವಿನಾಯಿತಿಗಳು Exclude chats @@ -5138,7 +5138,7 @@ Include muted chats - Create + ರಚಿಸಿ Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + ಉಳಿಸಿ Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + ತ್ಯಜಿಸಿ Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + ಮುಗಿದಿದೆ ಸಂದೇಶಗಳು diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 25107c70c5..7b79fc3419 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -4960,11 +4960,11 @@ Only messages from direct chats - Groups + 그룹 Only message from group chats - Add + 추가 %1$s folder added. @@ -4978,14 +4978,14 @@ Reorder folders - Mark all read + 모두 읽음으로 표시 %1$d chat types - %1$d chats + 대화 %1$d개 @@ -5004,7 +5004,7 @@ Choose chats that you want to appear in this folder. - Exceptions + 예외 Exclude chats @@ -5014,9 +5014,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + 알림을 끈 대화 포함 - Create + 만들기 Create folder? @@ -5026,7 +5026,7 @@ Edit folder - Save + 저장 Save changes? @@ -5034,7 +5034,7 @@ Save changes - Discard + 파기 Delete folder @@ -5044,7 +5044,7 @@ Chat types - Done + 확인 메시지 diff --git a/app/src/main/res/values-ky/strings.xml b/app/src/main/res/values-ky/strings.xml index 179b8cfd59..5020088feb 100644 --- a/app/src/main/res/values-ky/strings.xml +++ b/app/src/main/res/values-ky/strings.xml @@ -4960,11 +4960,11 @@ Only messages from direct chats - Groups + Топтор Only message from group chats - Add + Кошуу %1$s folder added. @@ -4978,14 +4978,14 @@ Reorder folders - Mark all read + Баарын окулду деп белгилөө %1$d chat types - %1$d chats + %1$d маек @@ -5004,7 +5004,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Өзгөчө учурлар Exclude chats @@ -5016,7 +5016,7 @@ Include muted chats - Create + Түзүү Create folder? @@ -5026,7 +5026,7 @@ Edit folder - Save + Сактоо Save changes? @@ -5034,7 +5034,7 @@ Save changes - Discard + Жокко чыгаруу Delete folder @@ -5044,7 +5044,7 @@ Chat types - Done + Бүттү Билдирүүлөр diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 60fe526335..7c873fd11b 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -5317,11 +5317,11 @@ Only messages from direct chats - Groups + Grupės Only message from group chats - Add + Pridėti %1$s folder added. @@ -5335,7 +5335,7 @@ Reorder folders - Mark all read + Žymėti visus skaitytais %1$d chat type @@ -5345,10 +5345,10 @@ - %1$d chat - %1$d chats - %1$d chats - %1$d chats + %1$d pokalbis + %1$d pokalbiai + %1$d pokalbio + %1$d pokalbių @@ -5370,7 +5370,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Išimtys Exclude chats @@ -5382,7 +5382,7 @@ Include muted chats - Create + Sukurti Create folder? @@ -5392,7 +5392,7 @@ Edit folder - Save + Įrašyti Save changes? @@ -5400,7 +5400,7 @@ Save changes - Discard + Atmesti Delete folder @@ -5410,7 +5410,7 @@ Chat types - Done + Atlikta Žinutės diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index 7fe02f69d3..9cf1a24b82 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -5198,11 +5198,11 @@ Only messages from direct chats - Groups + Grupas Only message from group chats - Add + Pievienot %1$s folder added. @@ -5216,7 +5216,7 @@ Reorder folders - Mark all read + Atzīmēt visus kā lasītus %1$d chat types @@ -5225,9 +5225,9 @@ - %1$d chats - %1$d chat - %1$d chats + %1$d sarunas + %1$d saruna + %1$d sarunas @@ -5248,7 +5248,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Izņēmumi Exclude chats @@ -5260,7 +5260,7 @@ Include muted chats - Create + Izveidot Create folder? @@ -5270,7 +5270,7 @@ Edit folder - Save + Saglabāt Save changes? @@ -5278,7 +5278,7 @@ Save changes - Discard + Atmest Delete folder @@ -5288,7 +5288,7 @@ Chat types - Done + Gatavs Ziņas diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml index d4984cab5b..9f6ace562f 100644 --- a/app/src/main/res/values-mk/strings.xml +++ b/app/src/main/res/values-mk/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Групи Only message from group chats - Add + Додај %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Обележи сѐ како прочитано %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d разговор + %1$d разговори @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Исклучоци Exclude chats @@ -5138,7 +5138,7 @@ Include muted chats - Create + Создај Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Зачувај Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Откажи Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Готово Пораки diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 49aca1d94f..18dd578df5 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + ഗ്രൂപ്പുകൾ Only message from group chats - Add + ചേർക്കുക %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + എല്ലാം വായിച്ചതായി കാണിക്കൂ %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d ചാറ്റ് + %1$d ചാറ്റുകൾ @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + ഉള്‍പ്പെടാത്തവ Exclude chats @@ -5138,7 +5138,7 @@ Include muted chats - Create + സൃഷ്ടിക്കൂ Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + സംരക്ഷിക്കൂ Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + കളയുക Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + പൂർത്തിയായി സന്ദേശങ്ങൾ diff --git a/app/src/main/res/values-mr/strings.xml b/app/src/main/res/values-mr/strings.xml index 134a6780f1..7222ff99b1 100644 --- a/app/src/main/res/values-mr/strings.xml +++ b/app/src/main/res/values-mr/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + गट Only message from group chats - Add + जोडा %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + सर्व वाचले म्हणून चिन्हांकित करा %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d चॅट्स + %1$d चॅट्स @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + अपवाद Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + मूक केलेल्या चॅटचा समावेश करा - Create + तयार करा Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + जतन करा Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + टाकून द्या Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + झाले संदेश diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml index 909eb5fc53..6789b2bc23 100644 --- a/app/src/main/res/values-ms/strings.xml +++ b/app/src/main/res/values-ms/strings.xml @@ -4960,11 +4960,11 @@ Only messages from direct chats - Groups + Kumpulan Only message from group chats - Add + Tambah %1$s folder added. @@ -4978,14 +4978,14 @@ Reorder folders - Mark all read + Tandakan semua dibaca %1$d chat types - %1$d chats + %1$d sembang @@ -5004,7 +5004,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Pengecualian Exclude chats @@ -5014,9 +5014,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Sertakan Sembang yang Diredam - Create + Cipta Create folder? @@ -5026,7 +5026,7 @@ Edit folder - Save + Simpan Save changes? @@ -5034,7 +5034,7 @@ Save changes - Discard + Buang Delete folder @@ -5044,7 +5044,7 @@ Chat types - Done + Selesai Mesej diff --git a/app/src/main/res/values-my/strings.xml b/app/src/main/res/values-my/strings.xml index cf8b0c1cd4..12b54f01bf 100644 --- a/app/src/main/res/values-my/strings.xml +++ b/app/src/main/res/values-my/strings.xml @@ -4960,11 +4960,11 @@ Only messages from direct chats - Groups + အဖွဲ့များ Only message from group chats - Add + ပေါင်းထည့်မယ် %1$s folder added. @@ -4978,14 +4978,14 @@ Reorder folders - Mark all read + အားလုံးကို ဖတ်ပြီးသားအဖြစ် မှတ်ပါ။ %1$d chat types - %1$d chats + ချက်(တ်) %1$d ခု @@ -5004,7 +5004,7 @@ Choose chats that you want to appear in this folder. - Exceptions + ခြွင်းချက်များ Exclude chats @@ -5016,7 +5016,7 @@ Include muted chats - Create + ဖန်တီးပါ Create folder? @@ -5026,7 +5026,7 @@ Edit folder - Save + သိမ်းရန် Save changes? @@ -5034,7 +5034,7 @@ Save changes - Discard + ပယ်ဖျက်မည် Delete folder @@ -5044,7 +5044,7 @@ Chat types - Done + ပြီးပါပြီ မက်ဆေ့ချ်များ diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index a190b5b9a7..552c722a24 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Grupper Only message from group chats - Add + Legg til %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Merk alle som lest %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d samtale + %1$d samtaler @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Unntak Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Inkluder dempede samtaler - Create + Opprett Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Lagre Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Forkast Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Ferdig Meldinger diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index b6a3110163..07ba8772bd 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -1418,7 +1418,7 @@ Groepslink Delen Link vernieuwen - Nieuwe deelnemers goedkeuren + Nieuwe leden goedkeuren Vereis voor iedere persoon die via de groepslink lid wil worden eerst goedkeuring van een beheerder. Weet je zeker dat je de groepslink wilt vernieuwen? Als je de link vernieuwt kunnen mensen niet langer lid worden via de huidige link. @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Groepen Only message from group chats - Add + Toevoegen %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Alles markeren als gelezen %1$d chat type @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Uitzonderingen Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Gedempte chats meetellen - Create + Aanmaken Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Opslaan Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Verwijderen Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Klaar Berichten @@ -7170,7 +7170,7 @@ Link verwijderen? - Deze link zal niet meer werken. + Deze link zal voor niemand meer werken. Link diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 663e8f6d88..1124abb331 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + ਗਰੁੱਪ Only message from group chats - Add + ਜੋੜੋ %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + ਸਾਰੇ ਪੜ੍ਹੇ ਹੋਏ ਮਾਰਕ ਕਰੋ %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d ਚੈਟ + %1$d ਚੈਟਾਂ @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + ਛੋਟ Exclude chats @@ -5138,7 +5138,7 @@ Include muted chats - Create + ਬਣਾਓ Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + ਸੇਵ ਕਰੋ Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + ਰੱਦ ਕਰੋ Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + ਮੁਕੰਮਲ ਸੁਨੇਹੇ diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 02844a7992..044bd9079b 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -5317,11 +5317,11 @@ Only messages from direct chats - Groups + Grupy Only message from group chats - Add + Dodaj %1$s folder added. @@ -5335,7 +5335,7 @@ Reorder folders - Mark all read + Oznacz wszystkie jako przeczytane %1$d chat type @@ -5345,10 +5345,10 @@ - %1$d chat - %1$d chats - %1$d chats - %1$d chats + %1$d czat + %1$d czaty + %1$d czatów + %1$d czatu @@ -5370,7 +5370,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Wyjątki Exclude chats @@ -5380,9 +5380,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Uwzględnij wyciszone czaty - Create + Utwórz Create folder? @@ -5392,7 +5392,7 @@ Edit folder - Save + Zapisz Save changes? @@ -5400,7 +5400,7 @@ Save changes - Discard + Odrzuć Delete folder @@ -5410,7 +5410,7 @@ Chat types - Done + Gotowe Wiadomości diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 3828c0e62c..448951bbf3 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Grupos Only message from group chats - Add + Adicionar %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Marcar todas como lidas %1$d chat type @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Exceções Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Incluir chats silenciados - Create + Criar Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Salvar Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Descartar Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Pronto Mensagens diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index f15e69c0a8..14b46289c0 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Grupos Only message from group chats - Add + Adicionar %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Marcar tudo como lido %1$d chat type @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Exceções Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Incluir chats silenciados - Create + Criar Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Guardar Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Descartar Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Concluído Mensagens diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 6056308fc3..ae14c89b99 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -5198,11 +5198,11 @@ Only messages from direct chats - Groups + Grupuri Only message from group chats - Add + Adaugă %1$s folder added. @@ -5216,7 +5216,7 @@ Reorder folders - Mark all read + Marchează tot ca citit %1$d chat type @@ -5225,9 +5225,9 @@ - %1$d chat - %1$d chats - %1$d chats + %1$d conversație + %1$d conversații + %1$d de conversații @@ -5248,7 +5248,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Excepții Exclude chats @@ -5258,9 +5258,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Include conversațiile silențioase - Create + Creează Create folder? @@ -5270,7 +5270,7 @@ Edit folder - Save + Salvează Save changes? @@ -5278,7 +5278,7 @@ Save changes - Discard + Renunță Delete folder @@ -5288,7 +5288,7 @@ Chat types - Done + Gata Mesaje diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index ab5c6d6338..917df3c207 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -5317,11 +5317,11 @@ Only messages from direct chats - Groups + Группы Only message from group chats - Add + Добавить %1$s folder added. @@ -5335,7 +5335,7 @@ Reorder folders - Mark all read + Отметить все как прочитанные %1$d chat type @@ -5345,10 +5345,10 @@ - %1$d chat - %1$d chats - %1$d chats - %1$d chats + %1$d чат + %1$d чата + %1$d чатов + %1$d чата @@ -5370,7 +5370,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Исключения Exclude chats @@ -5380,9 +5380,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Учитывать беззвучные чаты - Create + Создать Create folder? @@ -5392,7 +5392,7 @@ Edit folder - Save + Сохранить Save changes? @@ -5400,7 +5400,7 @@ Save changes - Discard + Сбросить Delete folder @@ -5410,7 +5410,7 @@ Chat types - Done + Готово Сообщения diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index c0a053221d..75b47c572c 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -5317,11 +5317,11 @@ Only messages from direct chats - Groups + Skupiny Only message from group chats - Add + Pridať %1$s folder added. @@ -5335,7 +5335,7 @@ Reorder folders - Mark all read + Označiť všetko ako prečítané %1$d chat type @@ -5345,10 +5345,10 @@ - %1$d chat - %1$d chats - %1$d chats - %1$d chats + %1$d čet + %1$d čety + %1$d četu + %1$d četov @@ -5370,7 +5370,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Výnimky Exclude chats @@ -5380,9 +5380,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Zahrnúť stlmené čety - Create + Vytvoriť Create folder? @@ -5392,7 +5392,7 @@ Edit folder - Save + Uložiť Save changes? @@ -5400,7 +5400,7 @@ Save changes - Discard + Zahodiť Delete folder @@ -5410,7 +5410,7 @@ Chat types - Done + Hotovo Správy diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 9bf9d32ca1..f6406efcbf 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -5317,11 +5317,11 @@ Only messages from direct chats - Groups + Skupine Only message from group chats - Add + Dodaj %1$s folder added. @@ -5335,7 +5335,7 @@ Reorder folders - Mark all read + Označi vse kot prebrano %1$d chat type @@ -5345,10 +5345,10 @@ - %1$d chat - %1$d chats - %1$d chats - %1$d chats + %1$d klepet + %1$d klepeta + %1$d klepeti + %1$d klepetov @@ -5370,7 +5370,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Izjeme Exclude chats @@ -5382,7 +5382,7 @@ Include muted chats - Create + Ustvari Create folder? @@ -5392,7 +5392,7 @@ Edit folder - Save + Shrani Save changes? @@ -5400,7 +5400,7 @@ Save changes - Discard + Zavrzi Delete folder @@ -5410,7 +5410,7 @@ Chat types - Done + OK Sporočila diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml index bd4d1ba471..47094f9cee 100644 --- a/app/src/main/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Grupet Only message from group chats - Add + Shtoje %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Shënoji krejt si të lexuar %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d bisedat + %1$d bisedë @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Përjashtime Exclude chats @@ -5138,7 +5138,7 @@ Include muted chats - Create + Krijoje Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Ruaj Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Hidhe tej Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + U bë Mesazhe diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index cc85ce0e96..0194c0a5cb 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Групе Only message from group chats - Add + Додај %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Означи све као прочитано %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + Ћаскања: %1$d + Ћаскања: %1$d @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Изузеци Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Укључи ћаскања са искљученим обавештењима - Create + Креирај Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Сачувај Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Одбаци Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Готово Поруке diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 646603aff3..f15b8057e1 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Grupper Only message from group chats - Add + Lägg till %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Markera alla som lästa %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d chatt + %1$d chattar @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Undantag Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Inkludera tystade chattar - Create + Skapa Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Spara Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Kassera Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Klar Meddelanden diff --git a/app/src/main/res/values-sw/strings.xml b/app/src/main/res/values-sw/strings.xml index 4b0f58ad75..404accffc8 100644 --- a/app/src/main/res/values-sw/strings.xml +++ b/app/src/main/res/values-sw/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Makundi Only message from group chats - Add + Ongeza %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Alamisha zote zilimesomwa %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + Gumzo %1$d + Magumzo %1$d @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Isipokuwa Exclude chats @@ -5138,7 +5138,7 @@ Include muted chats - Create + Tengeneza Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Hifadhi Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Tupa Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Imekamilika Jumbe diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index 9ad30487e7..d601d0e20a 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + குழுக்கள் Only message from group chats - Add + சேர்க்கவும் %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + அனைத்தையும் படித்தாக குறியிடு %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d சாட்ஸ் + %1$d சாட்ஸ் @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + விதிவிலக்குகள் Exclude chats @@ -5138,7 +5138,7 @@ Include muted chats - Create + உருவாக்கவும் Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + சேமி Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + புறந்தள்ளு Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + முடிந்தது செய்திகள் diff --git a/app/src/main/res/values-te/strings.xml b/app/src/main/res/values-te/strings.xml index 5945f396be..4ac3b71e9f 100644 --- a/app/src/main/res/values-te/strings.xml +++ b/app/src/main/res/values-te/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + సమూహాలు Only message from group chats - Add + చేర్చు %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + మార్క్ చేసినవన్నీ చదవండి %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d చాట్ + %1$d చాట్‌లు @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + మినహాయింపులు Exclude chats @@ -5138,7 +5138,7 @@ Include muted chats - Create + సృష్టించు Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + సేవ్ చేయండి Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + తీసివేయు Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + పూర్తయింది సందేశాలు diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index 91451fd233..6a31826084 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -4960,11 +4960,11 @@ Only messages from direct chats - Groups + กลุ่ม Only message from group chats - Add + เพิ่ม %1$s folder added. @@ -4978,14 +4978,14 @@ Reorder folders - Mark all read + ทำเครื่องหมายทั้งหมดว่าอ่านแล้ว %1$d chat types - %1$d chats + %1$d แชท @@ -5004,7 +5004,7 @@ Choose chats that you want to appear in this folder. - Exceptions + ข้อยกเว้น Exclude chats @@ -5014,9 +5014,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + รวมแชทที่ถูกปิดเสียงเข้าไว้ด้วย - Create + สร้าง Create folder? @@ -5026,7 +5026,7 @@ Edit folder - Save + บันทึก Save changes? @@ -5034,7 +5034,7 @@ Save changes - Discard + ยกเลิก Delete folder @@ -5044,7 +5044,7 @@ Chat types - Done + เสร็จสิ้น ข้อความ diff --git a/app/src/main/res/values-tl/strings.xml b/app/src/main/res/values-tl/strings.xml index f8f4f77f6f..23106ee8f6 100644 --- a/app/src/main/res/values-tl/strings.xml +++ b/app/src/main/res/values-tl/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Mga Grupo Only message from group chats - Add + Mag-add %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Markahan ang lahat na nabasa na %1$d chat type @@ -5138,7 +5138,7 @@ Include muted chats - Create + Lumikha Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + I-save Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + I-discard Delete folder diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 30cbac15b6..10d49bef35 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + Gruplar Only message from group chats - Add + Ekle %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + Tümünü okundu olarak işaretle %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d sohbet + %1$d sohbet @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + İstisnalar Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Sessize Alınan Sohbetler Sayılsın - Create + Oluştur Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + Kaydet Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + Vazgeç Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + Tamam İletiler diff --git a/app/src/main/res/values-ug/strings.xml b/app/src/main/res/values-ug/strings.xml index ff52ebaf80..6bee92f5cd 100644 --- a/app/src/main/res/values-ug/strings.xml +++ b/app/src/main/res/values-ug/strings.xml @@ -4960,11 +4960,11 @@ Only messages from direct chats - Groups + گۇرۇپپا Only message from group chats - Add + قوشۇش %1$s folder added. @@ -4978,14 +4978,14 @@ Reorder folders - Mark all read + ھەممىسى ئوقۇلدى %1$d chat types - %1$d chats + %1$d پاراڭ @@ -5004,7 +5004,7 @@ Choose chats that you want to appear in this folder. - Exceptions + ئايرىم ئەھۋاللار Exclude chats @@ -5014,9 +5014,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + ئۈنسىز پاراڭلارنى ئۆز ئىچىگە ئېلىش - Create + قۇر Create folder? @@ -5026,7 +5026,7 @@ Edit folder - Save + ساقلاش Save changes? @@ -5034,7 +5034,7 @@ Save changes - Discard + تاشلىۋەت Delete folder @@ -5044,7 +5044,7 @@ Chat types - Done + تامام ئۇچۇرلار diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 433fe8cca3..6261dadfe3 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -109,7 +109,7 @@ Не знайдено застосунок для вибору медіафайлів. Signal потребує доступу до пам\'яті, щоб прикріплювати фото, відео та аудіо, але його не надано. Перейдіть у налаштування застосунку, відкрийте «Дозволи» та виберіть «Пам\'ять». - Signal потребує доступу до «Контактів», щоб прикріплювати контактну інформацію, але його не надано. Перейдіть у налаштування застосунку, відкрийте «Дозволи», та виберіть «Пам\'ять». + Signal потребує доступу до «Контактів», щоб прикріплювати контактну інформацію, але його не надано. Перейдіть у налаштування застосунку, відкрийте «Дозволи», та виберіть «Контакти». Signal потребує доступу до місцеположення, щоб його прикріпити, але його не надано. Перейдіть у налаштування застосунку, відкрийте «Дозволи», та виберіть «Геодані». @@ -419,7 +419,7 @@ у %1$s   Читати далі   Завантажити ще -   Очікування +   Очікується Це повідомлення видалено. Ви видалили це повідомлення. @@ -1342,7 +1342,7 @@ Не вдалося створити групу. Спробуйте пізніше. Вилучити - SMS контакт + Надіслати контакту SMS Вилучити %1$s з цієї групи? Ви вибрали контакт, який не підтримує групи Signal, тому ця група буде MMS-групою. Настроювані назви і фото MMS-групи зможете бачити тільки ви. @@ -3034,17 +3034,17 @@ Повідомлення Виклики - Відмови + Помилки Резервні копії Статус блокування - Оновлення додатку - Інший + Оновлення застосунку + Інше Чати - Невідомо + Невідомий користувач Голосові нотатки Контакт приєднався до Signal - Немає доступної активності для відкриття налаштувань категорій повідомлень. + Немає доступних дій, щоб відкрити налаштування каналу сповіщень. Фонове з\'єднання @@ -3057,7 +3057,7 @@ - Швидка відповідь неможлива, коли Signal заблоковано! + Швидка відповідь недоступна, коли Signal заблоковано! Проблема під час надсилання повідомлення! @@ -3074,12 +3074,12 @@ Видалити - Неприпустимий ярлик + Неправильний ярлик Signal Нове повідомлення - Запит на листування + Запит на повідомлення Ви %1$s • Історія @@ -3110,10 +3110,10 @@ - %1$d Елемент - %1$d Елемент - %1$d Елементи - %1$d Елементи + %1$d файл + %1$d файли + %1$d файлів + %1$d файлу Обробка… @@ -3142,8 +3142,8 @@ Щоб прийняти відеовиклик, надайте Signal доступ до мікрофона і камери. Для здійснення та приймання викликів Signal потребує доступу до мікрофона й камери, але його не надано. Перейдіть у налаштування застосунку, відкрийте «Дозволи» та виберіть мікрофон і камеру. - Розмову прийнято на прив\'язаному пристрої. - Відхилений на прив\'язаному пристрої. + Ви відповіли на зв\'язаному пристрої. + Ви відхилили виклик на зв\'язаному пристрої. Зайнято на зв\'язаному пристрої. Тепер камера перемикається тут. Торкніться свого відео, щоб спробувати @@ -3163,9 +3163,9 @@ - Аудіо вивід + Виведення звуку - Телефонний динамік + Слухавка Динамік @@ -3181,9 +3181,9 @@ Відхилити виклик - Стара фраза-пароль - Нова фраза-пароль - Повторіть нову фразу-пароль + Старий пароль + Новий пароль + Введіть новий пароль ще раз Запросити в Signal @@ -3200,9 +3200,9 @@ Більше - Стерти введений текст + Видалити введений текст Показати клавіатуру - Показати клавіатуру набору номеру + Показати цифрову клавіатуру Контактів немає. @@ -3212,15 +3212,15 @@ Фото контакту - Signal потребує дозволів \"Контакти\", щоб показати контакти, але наразі доступу немає. Будь ласка, перейдіть до налаштувань додатку, оберіть \"Дозволи\", та увімкніть \"Контакти\". - Не вдалося отримати список контактів, перевірте з\'єднання + Signal потребує доступу до «Контактів», щоб показувати ваші контакти, але його не надано. Перейдіть у налаштування застосунку, відкрийте «Дозволи», та виберіть «Контакти». + Не вдалось отримати список контактів, перевірте з\'єднання з мережею Ім\'я користувача не знайдено "%1$s — не користувач Signal. Перевірте правильність імені користувача й повторіть пошук." Вам не потрібно додавати себе в групу Досягнуто максимального розміру групи - У групах Signal можуть перебувати максимум %1$d учасників. - Досягнуто ліміт на рекомендовану кількість користувачів у групі - Групи Signal працюють найкраще з %1$d учасників або менше. Додавання більшої кількості учасників призведе до затримок при відправці і отриманні повідомлень. + Кількість учасників групи в Signal не може перевищувати %1$d. + Досягнуто рекомендованої максимальної кількості учасників + Групи в Signal найкраще працюють, коли кількість їхніх учасників не перевищує %1$d. Якщо додати більше учасників, надсилання й отримання повідомлень займатиме більше часу. %1$d учасник %1$d учасники @@ -3243,7 +3243,7 @@ Надайте доступ до контактів. Ваші контакти зашифровано й приховано від служби Signal. - Signal потребує дозволів \"Контакти\", щоб показати контакти. + Signal потребує доступу до «Контактів», щоб їх показувати. Показати контакти @@ -3263,18 +3263,18 @@ Повідомлення Signal - Незахищене SMS - Незахищене MMS + Незахищене SMS-повідомлення + Незахищене MMS-повідомлення SIM %1$d Надіслати Написання повідомлення Відрити клавіатуру емоджі Мініатюра вкладення - Увімк/вимк скриньку вкладень камери - Записати та надіслати аудіо вкладення + Перемикач швидкого прикріплення з камери + Записати та надіслати голосове повідомлення - Заблокувати запис аудіо вкладення + Утримувати кнопку запису голосового повідомлення Не вдалося надіслати повідомлення. Перевірте з\'єднання з інтернетом і надішліть повідомлення ще раз. @@ -3286,7 +3286,7 @@ Захищене повідомлення - Не вдалося відправити + Не вдалося надіслати Очікує підтвердження Доставлено Повідомлення прочитано @@ -3297,7 +3297,7 @@ Завантаження - Дізнатися більше + Докладніше Приєднатися до виклику Передзвонити @@ -3310,7 +3310,7 @@ Заблокувати запит Спільних груп немає. Уважно перевіряйте, від кого надходять запити. У цій групі немає контактів. Уважно перевіряйте, від кого надходять запити. - Детальніше + Переглянути Таймер цього тимчасового повідомлення буде встановлено на %1$s, коли ви його відправите. Задонатити @@ -3334,10 +3334,10 @@ Відео Фото GIF - Одноразове медіа + Одноразовий медіафайл Стікер Ви - Оригінальне повідомлення не знайдено + Початкове повідомлення не знайдено %1$s · Історія @@ -3348,7 +3348,7 @@ Донат за друга - Прокрутить до самого низу + Гортайте униз @@ -3366,7 +3366,7 @@ Продовжити виклик Покинути виклик Можливо, ці люди перевстановили застосунок або замінили пристрої. Перевірте коди безпеки для чатів з ними, щоб упевнитись у конфіденційності спілкування. - Детальніше + Переглянути Раніше було позначено як перевірений @@ -3374,7 +3374,7 @@ Сповіщення про виклики ввімкнено. Увімкнути сповіщення про виклики Увімкніть фонову активність - Тепер все добре! + Тепер усе добре! Щоб отримувати сповіщення про виклики, натисніть тут і ввімкніть «Показувати сповіщення». Щоб отримувати сповіщення про виклики, натисніть тут і ввімкніть сповіщення, а також перевірте, чи ввімкнено звук і спливні сповіщення. @@ -5317,11 +5317,11 @@ Only messages from direct chats - Groups + Групи Only message from group chats - Add + Додати %1$s folder added. @@ -5335,7 +5335,7 @@ Reorder folders - Mark all read + Позначити усі як прочитані %1$d chat type @@ -5345,10 +5345,10 @@ - %1$d chat - %1$d chats - %1$d chats - %1$d chats + %1$d чаті + %1$d чатах + %1$d чатах + %1$d чату @@ -5370,7 +5370,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Винятки Exclude chats @@ -5380,9 +5380,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Враховувати чати з вимкненими сповіщеннями - Create + Створити Create folder? @@ -5392,7 +5392,7 @@ Edit folder - Save + Зберегти Save changes? @@ -5400,7 +5400,7 @@ Save changes - Discard + Відхилити Delete folder @@ -5410,7 +5410,7 @@ Chat types - Done + Готово Повідомлення @@ -5795,7 +5795,7 @@ Надіслати Одноразовий медіафайл Один або більше елементів були завеликими - Один або кілька елементів були недійсними + Принаймні один елемент був неприпустимий Обрано забагато елементів Відео буде показано один раз diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml index 041316002b..e55ead8e80 100644 --- a/app/src/main/res/values-ur/strings.xml +++ b/app/src/main/res/values-ur/strings.xml @@ -5079,11 +5079,11 @@ Only messages from direct chats - Groups + گروپس Only message from group chats - Add + شامل کریں %1$s folder added. @@ -5097,7 +5097,7 @@ Reorder folders - Mark all read + تمام پڑھنے پر نشان لگائیں %1$d chat type @@ -5105,8 +5105,8 @@ - %1$d chat - %1$d chats + %1$d چیٹس + %1$d چیٹس @@ -5126,7 +5126,7 @@ Choose chats that you want to appear in this folder. - Exceptions + استثنات Exclude chats @@ -5136,9 +5136,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + خاموش کردہ چیٹس شامل کریں - Create + بنائیں Create folder? @@ -5148,7 +5148,7 @@ Edit folder - Save + محفوظ کریں Save changes? @@ -5156,7 +5156,7 @@ Save changes - Discard + مسترد کیجئے Delete folder @@ -5166,7 +5166,7 @@ Chat types - Done + ہو گیا پیغامات diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 3bb92a346a..7c1697ccd1 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -4960,11 +4960,11 @@ Only messages from direct chats - Groups + Nhóm Only message from group chats - Add + Thêm %1$s folder added. @@ -4978,14 +4978,14 @@ Reorder folders - Mark all read + Đánh dấu tất cả đã đọc %1$d chat types - %1$d chats + %1$d cuộc trò chuyện @@ -5004,7 +5004,7 @@ Choose chats that you want to appear in this folder. - Exceptions + Ngoại trừ Exclude chats @@ -5014,9 +5014,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + Bao gồm cuộc trò chuyện đã tắt tiếng - Create + Tạo Create folder? @@ -5026,7 +5026,7 @@ Edit folder - Save + Lưu Save changes? @@ -5034,7 +5034,7 @@ Save changes - Discard + Bỏ Delete folder @@ -5044,7 +5044,7 @@ Chat types - Done + Xong Tin nhắn diff --git a/app/src/main/res/values-yue/strings.xml b/app/src/main/res/values-yue/strings.xml index 888c543944..11ac9c41a9 100644 --- a/app/src/main/res/values-yue/strings.xml +++ b/app/src/main/res/values-yue/strings.xml @@ -4960,11 +4960,11 @@ Only messages from direct chats - Groups + Only message from group chats - Add + 加入去 %1$s folder added. @@ -4978,14 +4978,14 @@ Reorder folders - Mark all read + 全部剔低話睇咗 %1$d chat types - %1$d chats + %1$d 聊天 @@ -5004,7 +5004,7 @@ Choose chats that you want to appear in this folder. - Exceptions + 例外情況 Exclude chats @@ -5014,9 +5014,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + 包埋靜音聊天 - Create + 建立 Create folder? @@ -5026,7 +5026,7 @@ Edit folder - Save + 儲存 Save changes? @@ -5034,7 +5034,7 @@ Save changes - Discard + 掉咗佢 Delete folder @@ -5044,7 +5044,7 @@ Chat types - Done + 完成 訊息 diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 24e1087d6a..15b824a93c 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -4960,11 +4960,11 @@ Only messages from direct chats - Groups + 群组 Only message from group chats - Add + 添加 %1$s folder added. @@ -4978,14 +4978,14 @@ Reorder folders - Mark all read + 全部已读 %1$d chat types - %1$d chats + %1$d 个聊天 @@ -5004,7 +5004,7 @@ Choose chats that you want to appear in this folder. - Exceptions + 例外情况 Exclude chats @@ -5014,9 +5014,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + 包含静音聊天 - Create + 创建 Create folder? @@ -5026,7 +5026,7 @@ Edit folder - Save + 保存 Save changes? @@ -5034,7 +5034,7 @@ Save changes - Discard + 放弃 Delete folder @@ -5044,7 +5044,7 @@ Chat types - Done + 完成 消息 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index bd26d299e9..ae254c7b30 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -4960,11 +4960,11 @@ Only messages from direct chats - Groups + 群組 Only message from group chats - Add + 新增 %1$s folder added. @@ -4978,14 +4978,14 @@ Reorder folders - Mark all read + 全部標記為已讀 %1$d chat types - %1$d chats + %1$d 個聊天 @@ -5004,7 +5004,7 @@ Choose chats that you want to appear in this folder. - Exceptions + 例外 Exclude chats @@ -5014,9 +5014,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + 包括靜音聊天 - Create + 建立 Create folder? @@ -5026,7 +5026,7 @@ Edit folder - Save + 儲存 Save changes? @@ -5034,7 +5034,7 @@ Save changes - Discard + 捨棄 Delete folder @@ -5044,7 +5044,7 @@ Chat types - Done + 完成 訊息 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 3b15021a76..979eab5a1a 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -4960,11 +4960,11 @@ Only messages from direct chats - Groups + 群組 Only message from group chats - Add + 新增 %1$s folder added. @@ -4978,14 +4978,14 @@ Reorder folders - Mark all read + 全部標示為已讀 %1$d chat types - %1$d chats + %1$d 個聊天 @@ -5004,7 +5004,7 @@ Choose chats that you want to appear in this folder. - Exceptions + 例外 Exclude chats @@ -5014,9 +5014,9 @@ When enabled, only chats with unread messages will be shown in this folder. - Include muted chats + 包括靜音聊天 - Create + 建立 Create folder? @@ -5026,7 +5026,7 @@ Edit folder - Save + 儲存 Save changes? @@ -5034,7 +5034,7 @@ Save changes - Discard + 放棄 Delete folder @@ -5044,7 +5044,7 @@ Chat types - Done + 完成 訊息 diff --git a/app/static-ips.gradle.kts b/app/static-ips.gradle.kts index 251aebd192..56c0935ecf 100644 --- a/app/static-ips.gradle.kts +++ b/app/static-ips.gradle.kts @@ -1,5 +1,5 @@ rootProject.extra["service_ips"] = """new String[]{"13.248.212.111","76.223.92.165"}""" -rootProject.extra["storage_ips"] = """new String[]{"142.251.40.211"}""" +rootProject.extra["storage_ips"] = """new String[]{"142.251.40.147"}""" rootProject.extra["cdn_ips"] = """new String[]{"18.161.21.122","18.161.21.4","18.161.21.66","18.161.21.70"}""" rootProject.extra["cdn2_ips"] = """new String[]{"104.18.37.148","172.64.150.108"}""" rootProject.extra["cdn3_ips"] = """new String[]{"104.18.37.148","172.64.150.108"}""" From 21a57298dc7cf9b8c3db3d6c5a65bd67c3c2a49d Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 17 Oct 2024 20:03:38 -0400 Subject: [PATCH 32/51] Bump version to 7.21.1 --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 37a2e58c0b..f56b3c570f 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -21,8 +21,8 @@ plugins { apply(from = "static-ips.gradle.kts") -val canonicalVersionCode = 1471 -val canonicalVersionName = "7.21.0" +val canonicalVersionCode = 1472 +val canonicalVersionName = "7.21.1" val currentHotfixVersion = 0 val maxHotfixVersions = 100 From 635df6ebd3fe236a55544611e2f0e1177a8cb906 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Fri, 18 Oct 2024 12:07:39 -0400 Subject: [PATCH 33/51] Fix parsing crash and creation of ice servers from turn server json. --- .../securesms/service/webrtc/SignalCallManager.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java index bf349acc8e..6ba3c7ba49 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java @@ -1050,7 +1050,7 @@ private static List mapToIceServers(@NonNull List iceServers = new ArrayList<>(); for (TurnServerInfo turnServerInfo: turnServerInfos) { - if (turnServerInfo.getUrls() != null) { + if (turnServerInfo.getUrlsWithIps() != null) { iceServers.addAll( turnServerInfo.getUrlsWithIps() .stream() @@ -1062,7 +1062,8 @@ private static List mapToIceServers(@NonNull List mapToIceServers(@NonNull List Date: Thu, 17 Oct 2024 12:35:31 -0300 Subject: [PATCH 34/51] Eliminate unnecessary observer and JOIN. --- .../thoughtcrime/securesms/calls/log/CallLogRepository.kt | 1 - .../java/org/thoughtcrime/securesms/database/CallTable.kt | 8 +++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogRepository.kt index 5a6003d76b..5c137d4205 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogRepository.kt @@ -66,7 +66,6 @@ class CallLogRepository( refresh() } - AppDependencies.databaseObserver.registerConversationListObserver(databaseObserver) AppDependencies.databaseObserver.registerCallUpdateObserver(databaseObserver) emitter.setCancellable { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/CallTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/CallTable.kt index 13080ea176..b0cac3e72f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/CallTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/CallTable.kt @@ -1274,6 +1274,12 @@ class CallTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTabl "p.$ID, p.$TIMESTAMP, $EVENT, $DIRECTION, $PEER, p.$TYPE, $CALL_ID, $MESSAGE_ID, $RINGER, $LOCAL_JOINED, $GROUP_CALL_ACTIVE, children, in_period, ${MessageTable.BODY}," } + val join = if (isCount) { + "" + } else { + "LEFT JOIN ${MessageTable.TABLE_NAME} ON ${MessageTable.TABLE_NAME}.${MessageTable.ID} = $MESSAGE_ID" + } + // Group call events by those we consider missed or not missed to build out our call log aggregation. val eventTypeSubQuery = """ ($TABLE_NAME.$EVENT = c.$EVENT AND ( @@ -1372,7 +1378,7 @@ class CallTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTabl cte ) p INNER JOIN ${RecipientTable.TABLE_NAME} ON ${RecipientTable.TABLE_NAME}.${RecipientTable.ID} = $PEER - LEFT JOIN ${MessageTable.TABLE_NAME} ON ${MessageTable.TABLE_NAME}.${MessageTable.ID} = $MESSAGE_ID + $join LEFT JOIN ${GroupTable.TABLE_NAME} ON ${GroupTable.TABLE_NAME}.${GroupTable.RECIPIENT_ID} = ${RecipientTable.TABLE_NAME}.${RecipientTable.ID} WHERE true_parent = p.$ID AND CASE From 780c7cfe5abf537c237b003a6aa1a8ae5c836a8e Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Fri, 18 Oct 2024 12:45:59 -0400 Subject: [PATCH 35/51] Update translations and other static files. --- app/src/main/res/values-es/strings.xml | 24 +++++------ app/src/main/res/values-uk/strings.xml | 58 +++++++++++++------------- app/static-ips.gradle.kts | 2 +- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index c9fb5412e8..0269a19e4c 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -1837,7 +1837,7 @@ Has marcado tu número de seguridad con %1$s como verificado desde otro dispositivo Has retirado la marca de verificación de tu número de seguridad con %1$s Has retirado la marca de verificación de tu número de seguridad con %1$s desde otro dispositivo - No se ha podido recibir un mensaje de %1$s + No se ha podido entregar un mensaje de %1$s %1$s ha cambiado su número de teléfono. ¿Te gusta esta nueva función? ¡Ayuda a Signal con una donación puntual! @@ -2166,8 +2166,8 @@ - %1$d persona no se añadirá a la llamada. - %1$d personas no se añadirán a la llamada. + No se añadirá a %1$d persona a la llamada. + No se añadirá a %1$d personas a la llamada. Denegar todas @@ -3060,7 +3060,7 @@ No, gracias - Permite el acceso a tus contactos. Tus contactos están cifrados y no son visibles para el servicio de Signal. + Permite el acceso a tus contactos. Tus contactos están protegidos mediante cifrado y no son visibles para Signal. Signal necesita acceso a tus contactos para poder mostrarlos. @@ -3309,8 +3309,8 @@ Fallo en la entrega - No se ha podido recibir un mensaje, sticker, reacción o confirmación de lectura que %1$s te ha enviado directamente o en un chat grupal en común. - No se ha podido recibir un mensaje, sticker, reacción o notificación de lectura de %1$s. + No se ha podido entregar un mensaje, sticker, reacción o confirmación de lectura que %1$s te ha enviado directamente o en un chat grupal en común. + No se ha podido entregar un mensaje, sticker, reacción o confirmación de lectura de %1$s. Nombre (obligatorio) @@ -3816,7 +3816,7 @@ Contactos - Encuentra a las personas que conoces. Tus contactos están cifrados y no son visibles para el servicio Signal. + Encuentra a personas que ya conoces. Tus contactos están protegidos mediante cifrado y no son visibles para Signal. Llamadas telefónicas @@ -4957,7 +4957,7 @@ Datos de tu cuenta - Exporta un informe de los datos de tu cuenta de Signal. Este informe no incluye ningún mensaje o archivo multimedia. %1$s + Exporta un informe de los datos de tu cuenta de Signal. Este informe no incluye ningún mensaje ni archivo multimedia. %1$s Más información @@ -5250,9 +5250,9 @@ Licencia GNU AGPLv3 - Calidad de fotos y vídeos + Calidad de archivos multimedia - Calidad de fotos y vídeos enviados + Calidad de fotos y vídeos Si seleccionas la opción de alta calidad, se usarán más datos. Alta @@ -7649,7 +7649,7 @@ La clave de tu copia de seguridad - La clave de tu copia de seguridad es un código de 64 dígitos que te permite restaurar tu copia de seguridad cuando vuelves a instalar Signal. + La clave de tu copia de seguridad es un código de 64 dígitos que te permite restaurar tu copia de seguridad cuando vuelves a instalar Signal. Si olvidas tu clave, no podrás restaurar tu copia de seguridad. Signal no puede ayudarte a recuperar tu copia de seguridad. @@ -7661,7 +7661,7 @@ Se necesita esta clave para recuperar tu cuenta y tus datos. Guárdala en un lugar seguro. Si la pierdes, no podrás recuperar tu cuenta. - Copiar en el portapapeles + Copiar al portapapeles Siguiente diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 6261dadfe3..1102454d0b 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -1436,12 +1436,12 @@ Не вдалося встановити зображення профілю Значки - QR-код чи посилання + QR-код або посилання Змінити фото - Поділіться своїм іменем користувача + Повідомте своє ім\'я користувача - Поділіться своїм унікальним QR-кодом чи посиланням з людиною, із якою хочете створити чат. + Інші користувачі зможуть з вами зв\'язатися, якщо ви надішлете їм свій унікальний QR-код або посилання. Ім’я користувача створено @@ -3385,9 +3385,9 @@ Щоб отримувати сповіщення про виклики, перейдіть у налаштування й дозвольте фонову активність в налаштуваннях акумулятора. - Завантаження країн… + Завантаження списку країн… Пошук - Немає відповідних країн + Таких країн не знайдено Зіскануйте QR-код на пристрої, щоб зв\'язати його @@ -3396,7 +3396,7 @@ Зв\'язати пристрій - Немає зв\'язаних пристроїв + Зв\'язаних пристроїв немає Зв\'язати новий пристрій @@ -3427,7 +3427,7 @@ %1$d  години - %1$d год + %1$dгод %1$d день @@ -3462,14 +3462,14 @@ Ваші коди безпеки для чатів з %1$s, %2$s і з %3$s щойно змінилися. - %1$d інший - %1$d інших - %1$d інших - %1$d інших + Ще %1$d + Ще %1$d + Ще %1$d + Ще %1$d - Пошук GIF-файлів + Пошук GIF-зображень Нічого не знайдено @@ -3491,12 +3491,12 @@ - %1$s приєднується до групи. - %1$s приєдналися до групи. - %1$s приєдналися до групи. - %1$s приєдналися до групи. + %1$s користувач приєднався до групи. + %1$s користувачі приєдналися до групи. + %1$s користувачів приєдналися до групи. + %1$s користувача приєдналися до групи. - Назва групи тепер «%1$s». + Тепер група називається «%1$s». Розблокувати @@ -3506,7 +3506,7 @@ Щоб мати можливість відправляти MMS-повідомлення, введіть інформацію про APN нижче. Потрібні значення для вашого оператора можна знайти в інтернеті за запитом \'оператор APN\' або в його службі підтримки. Це потрібно зробити тільки один раз. - Проблема з доставленням + Проблеми з доставлянням Не вдалося доставити вам повідомлення, стікер, реакцію або відмітку про читання від користувача %1$s. Користувач намагався надіслати це безпосередньо вам або в груповий чат. Не вдалося доставити вам повідомлення, стікер, реакцію або відмітку про читання від користувача %1$s. @@ -3514,8 +3514,8 @@ Ім\'я (обов\'язково) Прізвище (необов\'язково) Далі - Імена та фото MMS-груп будуть видні тільки вам. - Опис групи побачать учасники цієї групи та запрошені особи. + Власні назви й фото MMS-груп буде видно тільки вам. + Опис групи буде видно її учасникам і запрошеним користувачам. Про себе @@ -3530,7 +3530,7 @@ Працюю над чимось новим - Редагувати групу + Редагувати інформацію Назва групи Опис групи @@ -3552,7 +3552,7 @@ Ім\'я Прізвище (необов\'язково) Зберегти - Не вдалось зберегти через мережеву помилку. Спробуйте пізніше. + Не вдалося зберегти через мережеву помилку. Спробуйте пізніше. Надіслані медіафайли @@ -3562,7 +3562,7 @@ Щоб перевірити наявність наскрізного шифрування з користувачем %1$s, порівняйте наведені вище цифри із цифрами на пристрої цього співрозмовника. Також можна зісканувати код з пристрою користувача. - Натисніть, щоб сканувати + Торкніться, щоб сканувати Коди збігаються Не вдалося перевірити код безпеки Завантаження… @@ -3570,11 +3570,11 @@ Позначити як неперевірений - Відскануйте QR-код на пристрої вашого контакту. + Зіскануйте QR-код на пристрої іншого користувача. - Потягніть вгору для відповіді - Потягніть вниз для відхилення + Потягніть вгору, щоб відповісти + Потягніть вниз, щоб відхилити Є деякі проблеми, що потребують вашої уваги. @@ -5582,7 +5582,7 @@ Пошук емоджі Повернутися до емоджі Очистити пошук введених даних - Пошук GIF-файлів + Пошук на GIPHY Пошук стікерів @@ -7515,7 +7515,7 @@ Сканувати - Проскануйте QR-код на пристрої вашого контакту. + Зіскануйте QR-код на пристрої іншого користувача. Колір @@ -7535,7 +7535,7 @@ Ваші QR-код і посилання було скинуто. Натомість було створено нові. - Проскануйте цей QR-код телефоном, щоб написати мені в Signal. + Зіскануйте цей QR-код телефоном, щоб написати мені в Signal. QR-код не знайдено diff --git a/app/static-ips.gradle.kts b/app/static-ips.gradle.kts index 56c0935ecf..5a0642c5f9 100644 --- a/app/static-ips.gradle.kts +++ b/app/static-ips.gradle.kts @@ -1,6 +1,6 @@ rootProject.extra["service_ips"] = """new String[]{"13.248.212.111","76.223.92.165"}""" rootProject.extra["storage_ips"] = """new String[]{"142.251.40.147"}""" -rootProject.extra["cdn_ips"] = """new String[]{"18.161.21.122","18.161.21.4","18.161.21.66","18.161.21.70"}""" +rootProject.extra["cdn_ips"] = """new String[]{"18.238.49.106","18.238.49.6","18.238.49.66","18.238.49.90"}""" rootProject.extra["cdn2_ips"] = """new String[]{"104.18.37.148","172.64.150.108"}""" rootProject.extra["cdn3_ips"] = """new String[]{"104.18.37.148","172.64.150.108"}""" rootProject.extra["sfu_ips"] = """new String[]{"34.96.102.241"}""" From 69d312f5595dd664fca0a84218e6defaeca6b2c5 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Fri, 18 Oct 2024 12:52:42 -0400 Subject: [PATCH 36/51] Update baseline profile. --- app/src/main/baseline-prof.txt | 333 ++++++++++++++++++--------------- 1 file changed, 178 insertions(+), 155 deletions(-) diff --git a/app/src/main/baseline-prof.txt b/app/src/main/baseline-prof.txt index c5dd4334a3..ef135ad576 100644 --- a/app/src/main/baseline-prof.txt +++ b/app/src/main/baseline-prof.txt @@ -23,14 +23,15 @@ HPLandroidx/appcompat/widget/LinearLayoutCompat;->layoutVertical(IIII)V HPLandroidx/appcompat/widget/LinearLayoutCompat;->measureVertical(II)V HPLandroidx/appcompat/widget/SearchView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V HPLandroidx/compose/ui/node/LayoutNode;->detach$ui_release()V -HPLandroidx/constraintlayout/core/ArrayRow;->(Landroidx/constraintlayout/core/Cache;)V HPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->hasResolvedTargets(II)Z +HPLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->addHorizontalWrapMaxVariable(Landroidx/constraintlayout/core/widgets/ConstraintAnchor;)V +HPLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->addHorizontalWrapMinVariable(Landroidx/constraintlayout/core/widgets/ConstraintAnchor;)V HPLandroidx/constraintlayout/core/widgets/Guideline;->addToSolver(Landroidx/constraintlayout/core/LinearSystem;Z)V HPLandroidx/constraintlayout/core/widgets/Guideline;->getAnchor(Landroidx/constraintlayout/core/widgets/ConstraintAnchor$Type;)Landroidx/constraintlayout/core/widgets/ConstraintAnchor; HPLandroidx/constraintlayout/core/widgets/Guideline;->updateFromSolver(Landroidx/constraintlayout/core/LinearSystem;Z)V HPLandroidx/constraintlayout/widget/ConstraintLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V HPLandroidx/core/view/TreeIterator;->hasNext()Z -HPLandroidx/core/view/TreeIterator;->next()Ljava/lang/Object; +HPLandroidx/core/view/TreeIterator;->prepareNextIterator(Ljava/lang/Object;)V HPLandroidx/core/view/ViewGroupKt$children$1;->(Landroid/view/ViewGroup;)V HPLandroidx/core/view/ViewGroupKt$children$1;->iterator()Ljava/util/Iterator; HPLandroidx/core/view/ViewGroupKt$descendants$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; @@ -46,6 +47,7 @@ HPLandroidx/fragment/app/FragmentStateManager;->destroy()V HPLandroidx/fragment/app/FragmentStateManager;->saveState()Landroid/os/Bundle; HPLandroidx/media3/ui/PlayerView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V HPLandroidx/recyclerview/widget/AdapterHelper;->applyPendingUpdatesToPosition(I)I +HPLandroidx/recyclerview/widget/BatchingListUpdateCallback;->onChanged(IILjava/lang/Object;)V HPLandroidx/recyclerview/widget/ConcatAdapter;->findRelativeAdapterPositionIn(Landroidx/recyclerview/widget/RecyclerView$Adapter;Landroidx/recyclerview/widget/RecyclerView$ViewHolder;I)I HPLandroidx/recyclerview/widget/ConcatAdapter;->getAdapters()Ljava/util/List; HPLandroidx/recyclerview/widget/ConcatAdapter;->getItemCount()I @@ -57,16 +59,17 @@ HPLandroidx/recyclerview/widget/ConcatAdapterController;->getLocalAdapterPositio HPLandroidx/recyclerview/widget/ConcatAdapterController;->getTotalCount()I HPLandroidx/recyclerview/widget/ConcatAdapterController;->onBindViewHolder(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;I)V HPLandroidx/recyclerview/widget/ConcatAdapterController;->releaseWrapperAndLocalPosition(Landroidx/recyclerview/widget/ConcatAdapterController$WrapperAndLocalPosition;)V -HPLandroidx/recyclerview/widget/DiffUtil;->backward(Landroidx/recyclerview/widget/DiffUtil$Range;Landroidx/recyclerview/widget/DiffUtil$Callback;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;I)Landroidx/recyclerview/widget/DiffUtil$Snake; HPLandroidx/recyclerview/widget/ListAdapter;->getCurrentList()Ljava/util/List; HPLandroidx/recyclerview/widget/NestedAdapterWrapper;->getCachedItemCount()I HPLandroidx/recyclerview/widget/NestedAdapterWrapper;->getItemViewType(I)I HPLandroidx/recyclerview/widget/RecyclerView$ItemDecoration;->onDraw(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$State;)V -HPLandroidx/recyclerview/widget/RecyclerView$ViewHolder;->getAdapterPosition()I HPLandroidx/recyclerview/widget/RecyclerView$ViewHolder;->getBindingAdapterPosition()I +HPLandroidx/recyclerview/widget/RecyclerView;->animateChange(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo;Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo;ZZ)V HPLandroidx/recyclerview/widget/RecyclerView;->getAdapterPositionInRecyclerView(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)I HPLandroidx/recyclerview/widget/RecyclerView;->getChildViewHolder(Landroid/view/View;)Landroidx/recyclerview/widget/RecyclerView$ViewHolder; +HPLandroidx/recyclerview/widget/RecyclerView;->viewRangeUpdate(IILjava/lang/Object;)V HPLandroidx/recyclerview/widget/ViewInfoStore;->addToPreLayout(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo;)V +HPLandroidx/recyclerview/widget/ViewInfoStore;->isDisappearing(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Z HPLandroidx/recyclerview/widget/ViewInfoStore;->popFromLayoutStep(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;I)Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo; HPLandroidx/recyclerview/widget/ViewTypeStorage$IsolatedViewTypeStorage$WrapperViewTypeLookup;->localToGlobal(I)I HPLandroidx/savedstate/SavedStateRegistry;->performSave(Landroid/os/Bundle;)V @@ -74,14 +77,15 @@ HPLcom/google/android/material/animation/ArgbEvaluatorCompat;->evaluate(FLjava/l HPLcom/google/android/material/imageview/ShapeableImageView$OutlineProvider;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V HPLcom/google/common/collect/Sets;->intersection(Ljava/util/Set;Ljava/util/Set;)Lcom/google/common/collect/Sets$SetView; HPLcom/pnikosis/materialishprogress/ProgressWheel;->parseAttributes(Landroid/content/res/TypedArray;)V -HPLcom/squareup/wire/internal/Internal;->checkElementsNotNull(Ljava/util/List;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableCombineLatest$CombinerObserver;->onNext(Ljava/lang/Object;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableCombineLatest$LatestCoordinator;->drain()V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableCombineLatest$LatestCoordinator;->innerNext(ILjava/lang/Object;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableDoOnEach$DoOnEachObserver;->onNext(Ljava/lang/Object;)V +HPLio/reactivex/rxjava3/internal/operators/observable/ObservableFilter$FilterObserver;->onNext(Ljava/lang/Object;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle$FlatMapSingleObserver;->innerSuccess(Lio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle$FlatMapSingleObserver$InnerObserver;Ljava/lang/Object;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle$FlatMapSingleObserver;->onNext(Ljava/lang/Object;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableMap$MapObserver;->onNext(Ljava/lang/Object;)V +HPLio/reactivex/rxjava3/internal/operators/observable/ObservableObserveOn$ObserveOnObserver;->drainFused()V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableRefCount;->subscribeActual(Lio/reactivex/rxjava3/core/Observer;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableReplay$BoundedReplayBuffer;->replay(Lio/reactivex/rxjava3/internal/operators/observable/ObservableReplay$InnerDisposable;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableReplay$InnerDisposable;->isDisposed()Z @@ -90,7 +94,6 @@ HPLio/reactivex/rxjava3/internal/operators/observable/ObservableReplay$ReplayObs HPLio/reactivex/rxjava3/internal/operators/observable/ObservableReplay$ReplaySource;->subscribe(Lio/reactivex/rxjava3/core/Observer;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableSwitchMap$SwitchMapObserver;->drain()V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableSwitchMap$SwitchMapObserver;->onNext(Ljava/lang/Object;)V -HPLio/reactivex/rxjava3/internal/schedulers/ScheduledRunnable;->dispose()V HPLio/reactivex/rxjava3/kotlin/SubscribersKt;->subscribeBy(Lio/reactivex/rxjava3/core/Observable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)Lio/reactivex/rxjava3/disposables/Disposable; HPLj$/time/Instant;->atZone(Lj$/time/ZoneId;)Lj$/time/ZonedDateTime; HPLj$/time/LocalDateTime;->U()Lj$/time/LocalDate; @@ -98,23 +101,31 @@ HPLj$/time/ZonedDateTime;->(Lj$/time/LocalDateTime;Lj$/time/ZoneId;Lj$/tim HPLj$/time/ZonedDateTime;->M(JILj$/time/ZoneId;)Lj$/time/ZonedDateTime; HPLj$/time/ZonedDateTime;->O(Lj$/time/Instant;Lj$/time/ZoneId;)Lj$/time/ZonedDateTime; HPLj$/time/ZonedDateTime;->toLocalDate()Lj$/time/LocalDate; +HPLj$/util/Optional;->map(Lj$/util/function/Function;)Lj$/util/Optional; +HPLkotlin/Pair;->(Ljava/lang/Object;Ljava/lang/Object;)V +HPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([B[BIII)[B +HPLkotlin/jvm/internal/Lambda;->(I)V HPLkotlin/sequences/SequencesKt;->filterIsInstance(Lkotlin/sequences/Sequence;Ljava/lang/Class;)Lkotlin/sequences/Sequence; HPLkotlin/sequences/SequencesKt___SequencesJvmKt$filterIsInstance$1;->(Ljava/lang/Class;)V HPLkotlin/sequences/SequencesKt___SequencesJvmKt$filterIsInstance$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean; HPLkotlin/sequences/SequencesKt___SequencesJvmKt$filterIsInstance$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HPLkotlin/sequences/SequencesKt___SequencesJvmKt;->filterIsInstance(Lkotlin/sequences/Sequence;Ljava/lang/Class;)Lkotlin/sequences/Sequence; HPLkotlinx/coroutines/channels/BufferedChannel;->cancelSuspendedReceiveRequests(Lkotlinx/coroutines/channels/ChannelSegment;J)V +HPLkotlinx/coroutines/channels/BufferedChannel;->receiveCatchingOnNoWaiterSuspend-GKJJFZk(Lkotlinx/coroutines/channels/ChannelSegment;IJLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; HPLkotlinx/coroutines/internal/Segment;->onSlotCleaned()V HPLorg/signal/core/util/Bitmask;->read(JII)J -HPLorg/signal/core/util/SqlUtil;->buildSingleCollectionQuery(Ljava/lang/String;Ljava/util/Collection;Ljava/lang/String;Lorg/signal/core/util/SqlUtil$CollectionOperator;)Lorg/signal/core/util/SqlUtil$Query; +HPLorg/signal/core/util/SelectBuilderPart1;->(Landroidx/sqlite/db/SupportSQLiteDatabase;[Ljava/lang/String;)V +HPLorg/signal/core/util/ToolbarExtensionsKt;->setActionItemTint(Landroidx/appcompat/widget/Toolbar;I)V HPLorg/signal/core/util/concurrent/DeadlockDetector;->hasPotentialLock([Ljava/lang/StackTraceElement;)Z HPLorg/signal/core/util/concurrent/SettableFuture;->(Ljava/lang/Object;)V HPLorg/signal/core/util/concurrent/SignalExecutors$$ExternalSyntheticLambda0;->rejectedExecution(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V +HPLorg/signal/core/util/concurrent/SignalExecutors;->$r8$lambda$PuKeoHyTOgRHxCNNBi9u3dUls_w(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V HPLorg/signal/core/util/concurrent/SignalExecutors;->lambda$newCachedBoundedExecutor$1(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V -HPLorg/signal/core/util/tracing/DebugAnnotation;->(Ljava/lang/Long;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/Double;Ljava/lang/String;Ljava/lang/Long;Lorg/signal/core/util/tracing/DebugAnnotation$NestedValue;Lokio/ByteString;)V HPLorg/signal/libsignal/protocol/ecc/ECPublicKey;->equals(Ljava/lang/Object;)Z HPLorg/signal/paging/FixedSizePagingController;->lambda$onDataItemChanged$2(Ljava/lang/Object;)V -HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$2;->(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)V +HPLorg/thoughtcrime/securesms/attachments/DatabaseAttachment;->hashCode()I +HPLorg/thoughtcrime/securesms/attachments/PointerAttachment$Companion;->forPointers(Lj$/util/Optional;)Ljava/util/List; HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$2;->invoke(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGift;)Ljava/lang/Boolean; HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$4;->(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)V @@ -123,6 +134,7 @@ HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$notAnimated$1;->(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)V HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$notAnimated$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$notAnimated$1;->invoke(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGift;)Ljava/lang/Boolean; +HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->access$getAnimationState$p(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)Ljava/util/Map; HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->onDrawOver(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$State;)V HPLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->applyCornersForSizeClass2()V HPLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->getCells()[Lorg/thoughtcrime/securesms/components/ThumbnailView; @@ -133,6 +145,7 @@ HPLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->setSlide(Lcom/bump HPLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->setSlides(Lcom/bumptech/glide/RequestManager;Ljava/util/List;Z)V HPLorg/thoughtcrime/securesms/components/AvatarImageView;->disableQuickContact()V HPLorg/thoughtcrime/securesms/components/ComposeText;->onDraw(Landroid/graphics/Canvas;)V +HPLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentDate(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Ljava/util/Locale;Lorg/thoughtcrime/securesms/conversation/ConversationItemDisplayMode;)V HPLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentDeliveryStatus(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)V HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnail;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnail;->setCancelTransferClickListener(Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;)V @@ -151,7 +164,6 @@ HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnail;->setThumbnai HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnail;->showThumbnailView()V HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState;->(ZZLorg/thoughtcrime/securesms/mms/SlideClickListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlideClickListener;Landroid/view/View$OnLongClickListener;IIIIII)V HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState;->applyState(Lorg/thoughtcrime/securesms/util/views/Stub;)V -HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState;->copy$default(Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState;ZZLorg/thoughtcrime/securesms/mms/SlideClickListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlideClickListener;Landroid/view/View$OnLongClickListener;IIIIIIILjava/lang/Object;)Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState; HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState;->copy(ZZLorg/thoughtcrime/securesms/mms/SlideClickListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlideClickListener;Landroid/view/View$OnLongClickListener;IIIIII)Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState; HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$ThumbnailViewState;->(FZZLorg/thoughtcrime/securesms/mms/SlideClickListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlideClickListener;Landroid/view/View$OnLongClickListener;IIIIIIIII)V HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$ThumbnailViewState;->applyState(Lorg/thoughtcrime/securesms/util/views/Stub;)V @@ -161,12 +173,15 @@ HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState;-> HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState;->applyState(Lorg/thoughtcrime/securesms/util/views/Stub;Lorg/thoughtcrime/securesms/util/views/Stub;)V HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState;->copy$default(Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState;Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$ThumbnailViewState;Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState;ILjava/lang/Object;)Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState; HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState;->copy(Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$ThumbnailViewState;Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState;)Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState; +HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState;->getAlbumViewState()Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState; HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState;->getThumbnailViewState()Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$ThumbnailViewState; HPLorg/thoughtcrime/securesms/components/CornerMask;->mask(Landroid/graphics/Canvas;)V HPLorg/thoughtcrime/securesms/components/Outliner;->draw(Landroid/graphics/Canvas;IIII)V HPLorg/thoughtcrime/securesms/components/QuoteView;->applyColorTheme()V HPLorg/thoughtcrime/securesms/components/QuoteView;->dismiss()V +HPLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->isListCommitted()Z HPLorg/thoughtcrime/securesms/components/ThumbnailView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HPLorg/thoughtcrime/securesms/components/ThumbnailView;->dispatchDraw(Landroid/graphics/Canvas;)V HPLorg/thoughtcrime/securesms/components/ThumbnailView;->onMeasure(II)V HPLorg/thoughtcrime/securesms/components/ThumbnailView;->setBounds(IIII)V HPLorg/thoughtcrime/securesms/components/ThumbnailView;->setCancelTransferClickListener(Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;)V @@ -193,10 +208,12 @@ HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView$se HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->deriveMode(Lorg/thoughtcrime/securesms/components/transfercontrols/TransferControlViewState;)Lorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView$Mode; HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->isUpdateToExistingSet(Lorg/thoughtcrime/securesms/components/transfercontrols/TransferControlViewState;Ljava/util/List;)Z +HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setCancelClickListener(Landroid/view/View$OnClickListener;)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setClickable(Z)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setFocusable(Z)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setShowSecondaryText(Z)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setSlides(Ljava/util/List;)V +HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setTransferClickListener(Landroid/view/View$OnClickListener;)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setVisible(Z)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->updateState(Lkotlin/jvm/functions/Function1;)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlViewState;->(ZZZLjava/util/List;Landroid/view/View$OnClickListener;Landroid/view/View$OnClickListener;Landroid/view/View$OnClickListener;ZLjava/util/Map;Ljava/util/Map;ZZ)V @@ -249,7 +266,6 @@ HPLorg/thoughtcrime/securesms/conversation/ConversationMessage;->hashCode()I HPLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu$Provider;->onCreateMenu(Landroid/view/Menu;Landroid/view/MenuInflater;)V HPLorg/thoughtcrime/securesms/conversation/MarkReadHelper;->getLatestTimestamp(Lorg/thoughtcrime/securesms/conversation/ConversationAdapterBridge;Landroidx/recyclerview/widget/LinearLayoutManager;)Lj$/util/Optional; HPLorg/thoughtcrime/securesms/conversation/colors/ChatColors;->asSingleColor()I -HPLorg/thoughtcrime/securesms/conversation/colors/ChatColors;->isGradient()Z HPLorg/thoughtcrime/securesms/conversation/colors/Colorizer;->getIncomingBodyTextColor(Landroid/content/Context;Z)I HPLorg/thoughtcrime/securesms/conversation/colors/Colorizer;->getIncomingGroupSenderColor(Landroid/content/Context;Lorg/thoughtcrime/securesms/recipients/Recipient;)I HPLorg/thoughtcrime/securesms/conversation/colors/RecyclerViewColorizer$itemDecoration$1;->drawShaderMask(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;Lorg/thoughtcrime/securesms/conversation/colors/ChatColors;)V @@ -275,6 +291,7 @@ HPLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectPart$Attachment HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->bindPayloadsIfAvailable()Z HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getBindable()Lorg/thoughtcrime/securesms/BindableConversationItem; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getColorizerProjections(Landroid/view/ViewGroup;)Lorg/thoughtcrime/securesms/util/ProjectionList; +HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getNextMessage()Lj$/util/Optional; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getPreviousMessage()Lj$/util/Optional; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$IncomingMediaViewHolder;->bind(Lorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;)V HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ThreadHeaderViewHolder;->bind(Lorg/thoughtcrime/securesms/conversation/v2/data/ThreadHeader;)V @@ -287,6 +304,7 @@ HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeCon HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$6;->invoke()Ljava/lang/Boolean; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$7;->invoke()Ljava/lang/Boolean; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$8;->invoke()Ljava/lang/Boolean; +HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$9;->invoke(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Ljava/lang/Boolean; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->()V HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->doAfterFirstRender()V HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->getBinding()Lorg/thoughtcrime/securesms/databinding/V2ConversationFragmentBinding; @@ -302,6 +320,7 @@ HPLorg/thoughtcrime/securesms/conversation/v2/ConversationItemDecorations;->time HPLorg/thoughtcrime/securesms/conversation/v2/ConversationItemDecorations;->toEpochDay(Lorg/thoughtcrime/securesms/conversation/v2/data/ConversationMessageElement;)J HPLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getIdentityRecords$lambda$12(Lorg/thoughtcrime/securesms/database/model/GroupRecord;Lorg/thoughtcrime/securesms/recipients/Recipient;)Lorg/thoughtcrime/securesms/conversation/v2/IdentityRecordsState; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getIdentityRecords(Lorg/thoughtcrime/securesms/recipients/Recipient;Lorg/thoughtcrime/securesms/database/model/GroupRecord;)Lio/reactivex/rxjava3/core/Single; +HPLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getRequestReviewState$lambda$16(Lorg/thoughtcrime/securesms/database/model/GroupRecord;Lorg/thoughtcrime/securesms/messagerequests/MessageRequestState;Lorg/thoughtcrime/securesms/recipients/Recipient;)Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getRequestReviewState(Lorg/thoughtcrime/securesms/recipients/Recipient;Lorg/thoughtcrime/securesms/database/model/GroupRecord;Lorg/thoughtcrime/securesms/messagerequests/MessageRequestState;)Lio/reactivex/rxjava3/core/Single; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$10;->apply(Lorg/thoughtcrime/securesms/recipients/Recipient;Lj$/util/Optional;)Lorg/thoughtcrime/securesms/conversation/v2/InputReadyState; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$11;->accept(Lorg/thoughtcrime/securesms/conversation/v2/InputReadyState;)V @@ -317,7 +336,9 @@ HPLorg/thoughtcrime/securesms/conversation/v2/IdentityRecordsState;->(Lorg HPLorg/thoughtcrime/securesms/conversation/v2/IdentityRecordsState;->equals(Ljava/lang/Object;)Z HPLorg/thoughtcrime/securesms/conversation/v2/InputReadyState;->(Lorg/thoughtcrime/securesms/recipients/Recipient;Lorg/thoughtcrime/securesms/messagerequests/MessageRequestState;Lorg/thoughtcrime/securesms/database/model/GroupRecord;ZZZ)V HPLorg/thoughtcrime/securesms/conversation/v2/InputReadyState;->equals(Ljava/lang/Object;)Z +HPLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->equals(Ljava/lang/Object;)Z HPLorg/thoughtcrime/securesms/conversation/v2/data/ConversationDataSource;->load(IIILorg/signal/paging/PagedDataSource$CancellationSignal;)Ljava/util/List; +HPLorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;->areItemsTheSame(Lorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;)Z HPLorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;->getConversationMessage()Lorg/thoughtcrime/securesms/conversation/ConversationMessage; HPLorg/thoughtcrime/securesms/conversation/v2/data/IncomingTextOnly;->getConversationMessage()Lorg/thoughtcrime/securesms/conversation/ConversationMessage; HPLorg/thoughtcrime/securesms/conversation/v2/data/MessageDataFetcher;->fetch(Ljava/util/List;)Lorg/thoughtcrime/securesms/conversation/v2/data/MessageDataFetcher$ExtraMessageData; @@ -332,6 +353,7 @@ HPLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->getOutl HPLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->isSolidColor()Z HPLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->setCorners([F)V HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemLayout;->onMeasure(II)V +HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->isEndOfMessageCluster(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->setMessageShape(Lorg/thoughtcrime/securesms/database/model/MessageRecord;ZI)Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape$MessageShape; HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder$footerDrawable$1;->invoke()Lorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable$ChatColorsData; HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->(Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyBindingBridge;Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationContext;Lorg/thoughtcrime/securesms/conversation/v2/items/V2FooterPositionDelegate;)V @@ -339,12 +361,15 @@ HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyVi HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->getColorizerProjections(Landroid/view/ViewGroup;)Lorg/thoughtcrime/securesms/util/ProjectionList; HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->invalidateBodyBubbleDrawable(Landroid/view/ViewGroup;)V HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->invalidateChatColorsDrawable(Landroid/view/ViewGroup;)V +HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->invalidateFooterDrawable(Landroid/view/ViewGroup;)V HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->linkifyMessageBody(Landroid/text/Spannable;)V HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->presentBody()V HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->presentSender()V +HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getBodyTextColor(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;)I HPLorg/thoughtcrime/securesms/conversation/v2/items/V2FooterPositionDelegate;->onPostMeasure()Z HPLorg/thoughtcrime/securesms/crypto/storage/SignalBaseIdentityKeyStore;->getIdentityRecords(Ljava/util/List;)Lorg/thoughtcrime/securesms/database/identity/IdentityRecordList; HPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$unregisterObserver$20(Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V +HPLorg/thoughtcrime/securesms/database/DatabaseTable;->getWritableDatabase()Lorg/thoughtcrime/securesms/database/SQLiteDatabase; HPLorg/thoughtcrime/securesms/database/GroupTable;->getGroupsContainingMember(Lorg/thoughtcrime/securesms/recipients/RecipientId;ZZ)Ljava/util/List; HPLorg/thoughtcrime/securesms/database/identity/IdentityRecordList;->(Ljava/util/Collection;)V HPLorg/thoughtcrime/securesms/database/model/DisplayRecord;->isChangeNumber()Z @@ -381,27 +406,36 @@ HPLorg/thoughtcrime/securesms/database/model/MessageRecord;->isSessionSwitchover HPLorg/thoughtcrime/securesms/database/model/MessageRecord;->isSmsExportType()Z HPLorg/thoughtcrime/securesms/database/model/MessageRecord;->isThreadMergeEventType()Z HPLorg/thoughtcrime/securesms/database/model/MessageRecord;->isUpdate()Z +HPLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getLinkPreviews()Ljava/util/List; HPLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getQuote()Lorg/thoughtcrime/securesms/database/model/Quote; HPLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getUpdateDisplayBody(Landroid/content/Context;Lj$/util/function/Consumer;)Lorg/thoughtcrime/securesms/database/model/UpdateDescription; HPLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->isMediaPending()Z HPLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->withAttachments(Ljava/util/List;)Lorg/thoughtcrime/securesms/database/model/MmsMessageRecord; +HPLorg/thoughtcrime/securesms/fonts/SignalSymbols$CustomTypefaceSpan;->update(Landroid/text/TextPaint;)V HPLorg/thoughtcrime/securesms/fonts/SignalSymbols;->getSpannedString(Landroid/content/Context;Lorg/thoughtcrime/securesms/fonts/SignalSymbols$Weight;Lorg/thoughtcrime/securesms/fonts/SignalSymbols$Glyph;)Ljava/lang/CharSequence; HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration$onDraw$1;->(Landroidx/recyclerview/widget/RecyclerView;)V HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration$onDraw$1;->invoke(Landroid/view/View;)Landroidx/recyclerview/widget/RecyclerView$ViewHolder; HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration$onDraw$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration;->onDraw(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$State;)V HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration;->setParentRecyclerTranslationY(Landroidx/recyclerview/widget/RecyclerView;)V +HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z +HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$RangeComparator;->compare(Ljava/lang/Integer;Ljava/lang/Integer;)I HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController;->getPlaybackSet(Ljava/util/Set;II)Ljava/util/Set; HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController;->performPlaybackUpdate(Landroidx/recyclerview/widget/RecyclerView;)V +HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionPlayerHolder;->injectVideoViews(Landroid/content/Context;Landroidx/lifecycle/Lifecycle;Landroid/view/ViewGroup;I)Ljava/util/List; HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionRecycler;->getCurrentHolder(I)Lorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionPlayerHolder; HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionRecycler;->stopAndReleaseAssignedVideos(Ljava/util/Set;)V HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionRecycler;->update(Landroidx/recyclerview/widget/RecyclerView;Ljava/util/List;Ljava/util/Set;)V HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionRecycler;->updateVideoDisplayPositionAndSize(Landroidx/recyclerview/widget/RecyclerView;Lorg/thoughtcrime/securesms/giph/mp4/GiphyMp4Playable;)V +HPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->insertJobs(Ljava/util/List;)V +HPLorg/thoughtcrime/securesms/keyvalue/SettingsValues;->getMessageFontSize()I +HPLorg/thoughtcrime/securesms/keyvalue/WallpaperValues;->hasWallpaperSet()Z HPLorg/thoughtcrime/securesms/messagerequests/MessageRequestRepository;->getMessageRequestState(Lorg/thoughtcrime/securesms/recipients/Recipient;J)Lorg/thoughtcrime/securesms/messagerequests/MessageRequestState; HPLorg/thoughtcrime/securesms/mms/ImageSlide;->isBorderless()Z HPLorg/thoughtcrime/securesms/mms/Slide;->equals(Ljava/lang/Object;)Z HPLorg/thoughtcrime/securesms/mms/Slide;->getTransferState()I HPLorg/thoughtcrime/securesms/mms/Slide;->hashCode()I +HPLorg/thoughtcrime/securesms/mms/Slide;->isInProgress()Z HPLorg/thoughtcrime/securesms/mms/Slide;->isPendingDownload()Z HPLorg/thoughtcrime/securesms/mms/SlideDeck;->getTextSlide()Lorg/thoughtcrime/securesms/mms/TextSlide; HPLorg/thoughtcrime/securesms/mms/SlideDeck;->getThumbnailSlides()Ljava/util/List; @@ -416,6 +450,7 @@ HPLorg/thoughtcrime/securesms/util/DateUtils;->isSameDay(JJ)Z HPLorg/thoughtcrime/securesms/util/JavaTimeExtensionsKt;->toLocalDate$default(JLj$/time/ZoneId;ILjava/lang/Object;)Lj$/time/LocalDate; HPLorg/thoughtcrime/securesms/util/JavaTimeExtensionsKt;->toLocalDate(JLj$/time/ZoneId;)Lj$/time/LocalDate; HPLorg/thoughtcrime/securesms/util/Material3OnScrollHelper;->updateActiveState$lambda$7$lambda$6(Lorg/thoughtcrime/securesms/util/Material3OnScrollHelper;IIIILandroid/animation/ValueAnimator;)V +HPLorg/thoughtcrime/securesms/util/MediaUtil;->isInstantVideoSupported(Lorg/thoughtcrime/securesms/mms/Slide;)Z HPLorg/thoughtcrime/securesms/util/MediaUtil;->isLongTextType(Ljava/lang/String;)Z HPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->hasAudio(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z HPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->hasDocument(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z @@ -434,11 +469,14 @@ HPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->isViewOnceMessage(Lorg/th HPLorg/thoughtcrime/securesms/util/Projection$Corners;->(FFFF)V HPLorg/thoughtcrime/securesms/util/Projection$Corners;->toRadii()[F HPLorg/thoughtcrime/securesms/util/ProjectionList;->close()V +HPLorg/thoughtcrime/securesms/util/ProjectionList;->getSize()I +HPLorg/thoughtcrime/securesms/util/TextSecurePreferences;->getMessageBodyTextSize(Landroid/content/Context;)I HPLorg/thoughtcrime/securesms/util/ViewExtensionsKt;->drawAsTopItemDecoration(Landroid/view/View;Landroid/graphics/Canvas;Landroid/view/View;Landroid/view/View;I)V HPLorg/thoughtcrime/securesms/util/ViewExtensionsKt;->layoutIn(Landroid/view/View;Landroid/view/View;)V HPLorg/thoughtcrime/securesms/util/ViewUtil;->isLtr(Landroid/content/Context;)Z HPLorg/thoughtcrime/securesms/util/ViewUtil;->isLtr(Landroid/view/View;)Z HPLorg/thoughtcrime/securesms/util/ViewUtil;->isRtl(Landroid/content/Context;)Z +HPLorg/thoughtcrime/securesms/util/ViewUtil;->isRtl(Landroid/view/View;)Z HPLorg/thoughtcrime/securesms/util/ViewUtil;->setPaddingEnd(Landroid/view/View;I)V HPLorg/thoughtcrime/securesms/util/ViewUtil;->setPaddingStart(Landroid/view/View;I)V HPLorg/thoughtcrime/securesms/util/ViewUtil;->setTopMargin(Landroid/view/View;IZ)V @@ -448,6 +486,7 @@ HPLorg/thoughtcrime/securesms/util/adapter/mapping/PagingMappingAdapter;->getIte HPLorg/thoughtcrime/securesms/util/adapter/mapping/PagingMappingAdapter;->getItemViewType(I)I HPLorg/thoughtcrime/securesms/util/views/NullableStub;->get()Ljava/lang/Object; HPLorg/thoughtcrime/securesms/util/views/NullableStub;->require()Ljava/lang/Object; +HPLorg/thoughtcrime/securesms/util/views/NullableStub;->resolved()Z HSPLandroid/support/v4/media/MediaBrowserCompat$MediaBrowserImplApi21$$ExternalSyntheticThrowCCEIfNotNull0;->m(Ljava/lang/Object;)V HSPLandroid/support/v4/media/session/IMediaSession$Stub;->()V HSPLandroid/support/v4/media/session/MediaControllerCompat$MediaControllerImplApi21;->(Landroid/content/Context;Landroid/support/v4/media/session/MediaSessionCompat$Token;)V @@ -1009,6 +1048,7 @@ HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper$Impl23;->()V HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper$Impl29;->()V HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper$Impl;->()V HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper;->()V +HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper;->(Landroid/widget/TextView;)V HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper;->getAutoSizeTextType()I HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper;->loadFromAttributes(Landroid/util/AttributeSet;I)V HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper;->supportsAutoSizeText()Z @@ -5984,6 +6024,7 @@ HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;- HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->isScreenReaderFocusable(Landroidx/compose/ui/semantics/SemanticsNode;)Z HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->onLayoutChange$ui_release(Landroidx/compose/ui/node/LayoutNode;)V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->onSemanticsChange$ui_release()V +HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->populateAccessibilityNodeInfoProperties(ILandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;Landroidx/compose/ui/semantics/SemanticsNode;)V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setContentInvalid(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setIsCheckable(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setStateDescription(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V @@ -6092,7 +6133,6 @@ HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getMain$delegate$c HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getToRunOnFrame$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;)Ljava/util/List; HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$performFrameDispatch(Landroidx/compose/ui/platform/AndroidUiDispatcher;J)V HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$performTrampolineDispatch(Landroidx/compose/ui/platform/AndroidUiDispatcher;)V -HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$setScheduledFrameDispatch$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;Z)V HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->getChoreographer()Landroid/view/Choreographer; HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->getFrameClock()Landroidx/compose/runtime/MonotonicFrameClock; @@ -7681,11 +7721,10 @@ HSPLandroidx/constraintlayout/core/ArrayLinkedVariables;->getCurrentSize()I HSPLandroidx/constraintlayout/core/ArrayLinkedVariables;->getVariable(I)Landroidx/constraintlayout/core/SolverVariable; HSPLandroidx/constraintlayout/core/ArrayLinkedVariables;->getVariableValue(I)F HSPLandroidx/constraintlayout/core/ArrayLinkedVariables;->invert()V -HSPLandroidx/constraintlayout/core/ArrayLinkedVariables;->use(Landroidx/constraintlayout/core/ArrayRow;Z)F +HSPLandroidx/constraintlayout/core/ArrayRow;->(Landroidx/constraintlayout/core/Cache;)V HSPLandroidx/constraintlayout/core/ArrayRow;->addError(Landroidx/constraintlayout/core/LinearSystem;I)Landroidx/constraintlayout/core/ArrayRow; HSPLandroidx/constraintlayout/core/ArrayRow;->addSingleError(Landroidx/constraintlayout/core/SolverVariable;I)Landroidx/constraintlayout/core/ArrayRow; HSPLandroidx/constraintlayout/core/ArrayRow;->chooseSubject(Landroidx/constraintlayout/core/LinearSystem;)Z -HSPLandroidx/constraintlayout/core/ArrayRow;->chooseSubjectInVariables(Landroidx/constraintlayout/core/LinearSystem;)Landroidx/constraintlayout/core/SolverVariable; HSPLandroidx/constraintlayout/core/ArrayRow;->createRowCentering(Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;IFLandroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;I)Landroidx/constraintlayout/core/ArrayRow; HSPLandroidx/constraintlayout/core/ArrayRow;->createRowEqualMatchDimensions(FFFLandroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;)Landroidx/constraintlayout/core/ArrayRow; HSPLandroidx/constraintlayout/core/ArrayRow;->createRowEquals(Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;I)Landroidx/constraintlayout/core/ArrayRow; @@ -7704,18 +7743,13 @@ HSPLandroidx/constraintlayout/core/ArrayRow;->updateFromSystem(Landroidx/constra HSPLandroidx/constraintlayout/core/Cache;->()V HSPLandroidx/constraintlayout/core/LinearSystem;->()V HSPLandroidx/constraintlayout/core/LinearSystem;->()V -HSPLandroidx/constraintlayout/core/LinearSystem;->acquireSolverVariable(Landroidx/constraintlayout/core/SolverVariable$Type;Ljava/lang/String;)Landroidx/constraintlayout/core/SolverVariable; HSPLandroidx/constraintlayout/core/LinearSystem;->addCentering(Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;IFLandroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;II)V -HSPLandroidx/constraintlayout/core/LinearSystem;->addConstraint(Landroidx/constraintlayout/core/ArrayRow;)V -HSPLandroidx/constraintlayout/core/LinearSystem;->addEquality(Landroidx/constraintlayout/core/SolverVariable;I)V HSPLandroidx/constraintlayout/core/LinearSystem;->addEquality(Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;II)Landroidx/constraintlayout/core/ArrayRow; HSPLandroidx/constraintlayout/core/LinearSystem;->addGreaterThan(Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;II)V HSPLandroidx/constraintlayout/core/LinearSystem;->addLowerThan(Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;II)V -HSPLandroidx/constraintlayout/core/LinearSystem;->addRow(Landroidx/constraintlayout/core/ArrayRow;)V HSPLandroidx/constraintlayout/core/LinearSystem;->addSingleError(Landroidx/constraintlayout/core/ArrayRow;II)V HSPLandroidx/constraintlayout/core/LinearSystem;->computeValues()V HSPLandroidx/constraintlayout/core/LinearSystem;->createObjectVariable(Ljava/lang/Object;)Landroidx/constraintlayout/core/SolverVariable; -HSPLandroidx/constraintlayout/core/LinearSystem;->createRow()Landroidx/constraintlayout/core/ArrayRow; HSPLandroidx/constraintlayout/core/LinearSystem;->createSlackVariable()Landroidx/constraintlayout/core/SolverVariable; HSPLandroidx/constraintlayout/core/LinearSystem;->enforceBFS(Landroidx/constraintlayout/core/LinearSystem$Row;)I HSPLandroidx/constraintlayout/core/LinearSystem;->getCache()Landroidx/constraintlayout/core/Cache; @@ -7756,7 +7790,6 @@ HSPLandroidx/constraintlayout/core/SolverVariable;->removeFromRow(Landroidx/cons HSPLandroidx/constraintlayout/core/SolverVariable;->reset()V HSPLandroidx/constraintlayout/core/SolverVariable;->setFinalValue(Landroidx/constraintlayout/core/LinearSystem;F)V HSPLandroidx/constraintlayout/core/SolverVariable;->setType(Landroidx/constraintlayout/core/SolverVariable$Type;Ljava/lang/String;)V -HSPLandroidx/constraintlayout/core/SolverVariable;->updateReferencesWithNewDefinition(Landroidx/constraintlayout/core/LinearSystem;Landroidx/constraintlayout/core/ArrayRow;)V HSPLandroidx/constraintlayout/core/state/WidgetFrame;->()V HSPLandroidx/constraintlayout/core/state/WidgetFrame;->(Landroidx/constraintlayout/core/widgets/ConstraintWidget;)V HSPLandroidx/constraintlayout/core/widgets/Barrier;->()V @@ -7796,7 +7829,7 @@ HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->()V HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->()V HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->addAnchors()V HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->addFirst()Z -HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->applyConstraints(Landroidx/constraintlayout/core/LinearSystem;ZZZZLandroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/widgets/ConstraintWidget$DimensionBehaviour;ZLandroidx/constraintlayout/core/widgets/ConstraintAnchor;Landroidx/constraintlayout/core/widgets/ConstraintAnchor;IIIIFZZZZZIIIIFZ)V +HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->addToSolver(Landroidx/constraintlayout/core/LinearSystem;Z)V HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->createObjectVariables(Landroidx/constraintlayout/core/LinearSystem;)V HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->getAnchor(Landroidx/constraintlayout/core/widgets/ConstraintAnchor$Type;)Landroidx/constraintlayout/core/widgets/ConstraintAnchor; HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->getBaselineDistance()I @@ -7981,6 +8014,7 @@ HSPLandroidx/constraintlayout/widget/ConstraintLayout;->getViewWidget(Landroid/v HSPLandroidx/constraintlayout/widget/ConstraintLayout;->init(Landroid/util/AttributeSet;II)V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->isRtl()Z HSPLandroidx/constraintlayout/widget/ConstraintLayout;->markHierarchyDirty()V +HSPLandroidx/constraintlayout/widget/ConstraintLayout;->onLayout(ZIIII)V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->onMeasure(II)V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->onViewAdded(Landroid/view/View;)V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->onViewRemoved(Landroid/view/View;)V @@ -8137,6 +8171,7 @@ HSPLandroidx/core/app/NotificationManagerCompat;->(Landroid/content/Contex HSPLandroidx/core/app/NotificationManagerCompat;->cancel(I)V HSPLandroidx/core/app/NotificationManagerCompat;->cancel(Ljava/lang/String;I)V HSPLandroidx/core/app/NotificationManagerCompat;->from(Landroid/content/Context;)Landroidx/core/app/NotificationManagerCompat; +HSPLandroidx/core/content/ContentValuesKt;->contentValuesOf([Lkotlin/Pair;)Landroid/content/ContentValues; HSPLandroidx/core/content/ContextCompat$Api21Impl;->getDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; HSPLandroidx/core/content/ContextCompat$Api23Impl;->getColor(Landroid/content/Context;I)I HSPLandroidx/core/content/ContextCompat$Api23Impl;->getSystemService(Landroid/content/Context;Ljava/lang/Class;)Ljava/lang/Object; @@ -8945,7 +8980,6 @@ HSPLandroidx/fragment/app/FragmentStateManager;->(Landroidx/fragment/app/F HSPLandroidx/fragment/app/FragmentStateManager;->activityCreated()V HSPLandroidx/fragment/app/FragmentStateManager;->addViewToContainer()V HSPLandroidx/fragment/app/FragmentStateManager;->attach()V -HSPLandroidx/fragment/app/FragmentStateManager;->computeExpectedState()I HSPLandroidx/fragment/app/FragmentStateManager;->create()V HSPLandroidx/fragment/app/FragmentStateManager;->createView()V HSPLandroidx/fragment/app/FragmentStateManager;->ensureInflatedView()V @@ -11927,6 +11961,7 @@ HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRe HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner;->get(Landroid/view/View;)Landroidx/savedstate/SavedStateRegistryOwner; HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner;->set(Landroid/view/View;Landroidx/savedstate/SavedStateRegistryOwner;)V HSPLandroidx/sqlite/db/SimpleSQLiteQuery;->(Ljava/lang/String;[Ljava/lang/Object;)V +HSPLandroidx/sqlite/db/SimpleSQLiteQuery;->bind(Landroidx/sqlite/db/SupportSQLiteProgram;ILjava/lang/Object;)V HSPLandroidx/sqlite/db/SimpleSQLiteQuery;->bind(Landroidx/sqlite/db/SupportSQLiteProgram;[Ljava/lang/Object;)V HSPLandroidx/sqlite/db/SimpleSQLiteQuery;->bindTo(Landroidx/sqlite/db/SupportSQLiteProgram;)V HSPLandroidx/sqlite/db/SimpleSQLiteQuery;->getSql()Ljava/lang/String; @@ -12034,7 +12069,6 @@ HSPLcom/airbnb/lottie/LottieCompositionFactory;->matchesMagicBytes(Lokio/Buffere HSPLcom/airbnb/lottie/LottieCompositionFactory;->notifyTaskCacheIdleListeners(Z)V HSPLcom/airbnb/lottie/LottieCompositionFactory;->rawResCacheKey(Landroid/content/Context;I)Ljava/lang/String; HSPLcom/airbnb/lottie/LottieDrawable$$ExternalSyntheticLambda15;->(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/KeyPath;Ljava/lang/Object;Lcom/airbnb/lottie/value/LottieValueCallback;)V -HSPLcom/airbnb/lottie/LottieDrawable$$ExternalSyntheticLambda15;->run(Lcom/airbnb/lottie/LottieComposition;)V HSPLcom/airbnb/lottie/LottieDrawable$$ExternalSyntheticLambda5;->(Lcom/airbnb/lottie/LottieDrawable;)V HSPLcom/airbnb/lottie/LottieDrawable$$ExternalSyntheticLambda5;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V HSPLcom/airbnb/lottie/LottieDrawable$$ExternalSyntheticLambda6;->(Lcom/airbnb/lottie/LottieDrawable;)V @@ -12045,7 +12079,6 @@ HSPLcom/airbnb/lottie/LottieDrawable$OnVisibleAction;->()V HSPLcom/airbnb/lottie/LottieDrawable$OnVisibleAction;->(Ljava/lang/String;I)V HSPLcom/airbnb/lottie/LottieDrawable;->$r8$lambda$0fk9nqzO-YRr_DadS437kBHSLkk(Lcom/airbnb/lottie/LottieDrawable;FLcom/airbnb/lottie/LottieComposition;)V HSPLcom/airbnb/lottie/LottieDrawable;->$r8$lambda$FrCfuTMBgjEG3fdle3MNkWCjUJw(Lcom/airbnb/lottie/LottieDrawable;Landroid/animation/ValueAnimator;)V -HSPLcom/airbnb/lottie/LottieDrawable;->$r8$lambda$ggKGgUU7APaJ1sFO8LW45ujpVes(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/KeyPath;Ljava/lang/Object;Lcom/airbnb/lottie/value/LottieValueCallback;Lcom/airbnb/lottie/LottieComposition;)V HSPLcom/airbnb/lottie/LottieDrawable;->()V HSPLcom/airbnb/lottie/LottieDrawable;->()V HSPLcom/airbnb/lottie/LottieDrawable;->addValueCallback(Lcom/airbnb/lottie/model/KeyPath;Ljava/lang/Object;Lcom/airbnb/lottie/value/LottieValueCallback;)V @@ -12064,7 +12097,6 @@ HSPLcom/airbnb/lottie/LottieDrawable;->getOpacity()I HSPLcom/airbnb/lottie/LottieDrawable;->getRenderMode()Lcom/airbnb/lottie/RenderMode; HSPLcom/airbnb/lottie/LottieDrawable;->invalidateSelf()V HSPLcom/airbnb/lottie/LottieDrawable;->isApplyingOpacityToLayersEnabled()Z -HSPLcom/airbnb/lottie/LottieDrawable;->lambda$addValueCallback$17(Lcom/airbnb/lottie/model/KeyPath;Ljava/lang/Object;Lcom/airbnb/lottie/value/LottieValueCallback;Lcom/airbnb/lottie/LottieComposition;)V HSPLcom/airbnb/lottie/LottieDrawable;->lambda$new$0(Landroid/animation/ValueAnimator;)V HSPLcom/airbnb/lottie/LottieDrawable;->lambda$setProgress$16(FLcom/airbnb/lottie/LottieComposition;)V HSPLcom/airbnb/lottie/LottieDrawable;->pauseAnimation()V @@ -12118,7 +12150,6 @@ HSPLcom/airbnb/lottie/animation/LPaint;->setTextLocales(Landroid/os/LocaleList;) HSPLcom/airbnb/lottie/animation/content/CompoundTrimPathContent;->()V HSPLcom/airbnb/lottie/animation/content/CompoundTrimPathContent;->apply(Landroid/graphics/Path;)V HSPLcom/airbnb/lottie/animation/content/ContentGroup;->(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Lcom/airbnb/lottie/model/content/ShapeGroup;Lcom/airbnb/lottie/LottieComposition;)V -HSPLcom/airbnb/lottie/animation/content/ContentGroup;->(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Ljava/lang/String;ZLjava/util/List;Lcom/airbnb/lottie/model/animatable/AnimatableTransform;)V HSPLcom/airbnb/lottie/animation/content/ContentGroup;->addValueCallback(Ljava/lang/Object;Lcom/airbnb/lottie/value/LottieValueCallback;)V HSPLcom/airbnb/lottie/animation/content/ContentGroup;->contentsFromModels(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/model/layer/BaseLayer;Ljava/util/List;)Ljava/util/List; HSPLcom/airbnb/lottie/animation/content/ContentGroup;->draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V @@ -12131,7 +12162,6 @@ HSPLcom/airbnb/lottie/animation/content/EllipseContent;->addValueCallback(Ljava/ HSPLcom/airbnb/lottie/animation/content/EllipseContent;->getName()Ljava/lang/String; HSPLcom/airbnb/lottie/animation/content/EllipseContent;->resolveKeyPath(Lcom/airbnb/lottie/model/KeyPath;ILjava/util/List;Lcom/airbnb/lottie/model/KeyPath;)V HSPLcom/airbnb/lottie/animation/content/EllipseContent;->setContents(Ljava/util/List;Ljava/util/List;)V -HSPLcom/airbnb/lottie/animation/content/FillContent;->(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Lcom/airbnb/lottie/model/content/ShapeFill;)V HSPLcom/airbnb/lottie/animation/content/FillContent;->addValueCallback(Ljava/lang/Object;Lcom/airbnb/lottie/value/LottieValueCallback;)V HSPLcom/airbnb/lottie/animation/content/FillContent;->draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V HSPLcom/airbnb/lottie/animation/content/FillContent;->getName()Ljava/lang/String; @@ -12333,7 +12363,6 @@ HSPLcom/airbnb/lottie/model/layer/BaseLayer;->setProgress(F)V HSPLcom/airbnb/lottie/model/layer/BaseLayer;->setVisible(Z)V HSPLcom/airbnb/lottie/model/layer/BaseLayer;->setupInOutAnimations()V HSPLcom/airbnb/lottie/model/layer/CompositionLayer$1;->()V -HSPLcom/airbnb/lottie/model/layer/CompositionLayer;->(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/Layer;Ljava/util/List;Lcom/airbnb/lottie/LottieComposition;)V HSPLcom/airbnb/lottie/model/layer/CompositionLayer;->drawLayer(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V HSPLcom/airbnb/lottie/model/layer/CompositionLayer;->resolveChildKeyPath(Lcom/airbnb/lottie/model/KeyPath;ILjava/util/List;Lcom/airbnb/lottie/model/KeyPath;)V HSPLcom/airbnb/lottie/model/layer/CompositionLayer;->setClipToCompositionBounds(Z)V @@ -13714,7 +13743,6 @@ HSPLcom/fasterxml/jackson/core/base/ParserBase;->_parseNumericValue(I)V HSPLcom/fasterxml/jackson/core/base/ParserBase;->_releaseBuffers()V HSPLcom/fasterxml/jackson/core/base/ParserBase;->close()V HSPLcom/fasterxml/jackson/core/base/ParserBase;->convertNumberToLong()V -HSPLcom/fasterxml/jackson/core/base/ParserBase;->getCurrentName()Ljava/lang/String; HSPLcom/fasterxml/jackson/core/base/ParserBase;->getIntValue()I HSPLcom/fasterxml/jackson/core/base/ParserBase;->getLongValue()J HSPLcom/fasterxml/jackson/core/base/ParserBase;->getNumberType()Lcom/fasterxml/jackson/core/JsonParser$NumberType; @@ -13819,6 +13847,7 @@ HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_matchFalse()V HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_matchNull()V HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_matchTrue()V HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_nextAfterName()Lcom/fasterxml/jackson/core/JsonToken; +HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_parseName()Ljava/lang/String; HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_parseName2(III)Ljava/lang/String; HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_parseNumber2(ZI)Lcom/fasterxml/jackson/core/JsonToken; HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_parsePosNumber(I)Lcom/fasterxml/jackson/core/JsonToken; @@ -13828,7 +13857,6 @@ HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_skipColon()I HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_skipColon2(Z)I HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_skipComma(I)I HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_skipString()V -HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_skipWSOrEnd()I HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_skipWSOrEnd2()I HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_updateLocation()V HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_updateNameLocation()V @@ -13858,10 +13886,8 @@ HSPLcom/fasterxml/jackson/core/json/UTF8JsonGenerator;->writeString(Ljava/lang/S HSPLcom/fasterxml/jackson/core/json/UTF8JsonGenerator;->writeString([CII)V HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->()V HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->(Lcom/fasterxml/jackson/core/io/IOContext;ILjava/io/InputStream;Lcom/fasterxml/jackson/core/ObjectCodec;Lcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;[BIIIZ)V -HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_closeArrayScope()V HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_closeInput()V HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_closeObjectScope()V -HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_finishAndReturnString()Ljava/lang/String; HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_finishString2([CI)V HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_loadMore()Z HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_loadMoreGuaranteed()V @@ -13874,7 +13900,6 @@ HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_releaseBuffers()V HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_skipColon()I HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_skipWS()I HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_skipWS2()I -HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_skipWSOrEnd()I HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_updateLocation()V HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->_updateNameLocation()V HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->addName([III)Ljava/lang/String; @@ -13923,7 +13948,7 @@ HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_calcTertiaryShift(I HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_checkNeedForRehash()Z HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_findOffsetForAdd(I)I HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_findSecondary(III)Ljava/lang/String; -HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_findSecondary(II[II)Ljava/lang/String; +HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_findSecondary(IIII)Ljava/lang/String; HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_resizeAndFindOffsetForAdd(I)I HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_spilloverStart()I HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_verifyLongName([III)Z @@ -13953,6 +13978,7 @@ HSPLcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer$TableInfo;->createIn HSPLcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer;->(I)V HSPLcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer;->(Lcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer;IILcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer$TableInfo;)V HSPLcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer;->_addSymbol([CIIII)Ljava/lang/String; +HSPLcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer;->_findSymbol2([CIILcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer$Bucket;)Ljava/lang/String; HSPLcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer;->_hashToIndex(I)I HSPLcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer;->_thresholdSize(I)I HSPLcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer;->copyArrays()V @@ -14480,7 +14506,6 @@ HSPLcom/fasterxml/jackson/databind/deser/BasicDeserializerFactory;->withValueIns HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->(Lcom/fasterxml/jackson/databind/deser/BeanDeserializerBuilder;Lcom/fasterxml/jackson/databind/BeanDescription;Lcom/fasterxml/jackson/databind/deser/impl/BeanPropertyMap;Ljava/util/Map;Ljava/util/HashSet;ZLjava/util/Set;Z)V HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->_deserializeUsingPropertyBased(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/lang/Object; HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->_deserializeWithErrorWrapping(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;Lcom/fasterxml/jackson/databind/deser/SettableBeanProperty;)Ljava/lang/Object; -HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->deserialize(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/lang/Object; HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->deserialize(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;Ljava/lang/Object;)Ljava/lang/Object; HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->deserializeFromObject(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/lang/Object; HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->vanillaDeserialize(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;Lcom/fasterxml/jackson/core/JsonToken;)Ljava/lang/Object; @@ -14797,7 +14822,6 @@ HSPLcom/fasterxml/jackson/databind/deser/std/StringCollectionDeserializer;->with HSPLcom/fasterxml/jackson/databind/deser/std/StringDeserializer;->()V HSPLcom/fasterxml/jackson/databind/deser/std/StringDeserializer;->()V HSPLcom/fasterxml/jackson/databind/deser/std/StringDeserializer;->deserialize(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/lang/Object; -HSPLcom/fasterxml/jackson/databind/deser/std/StringDeserializer;->deserialize(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/lang/String; HSPLcom/fasterxml/jackson/databind/deser/std/StringDeserializer;->isCachable()Z HSPLcom/fasterxml/jackson/databind/deser/std/UUIDDeserializer;->()V HSPLcom/fasterxml/jackson/databind/deser/std/UUIDDeserializer;->()V @@ -15334,6 +15358,7 @@ HSPLcom/fasterxml/jackson/databind/module/SimpleModule;->setupModule(Lcom/faster HSPLcom/fasterxml/jackson/databind/module/SimpleModule;->version()Lcom/fasterxml/jackson/core/Version; HSPLcom/fasterxml/jackson/databind/node/ArrayNode;->(Lcom/fasterxml/jackson/databind/node/JsonNodeFactory;)V HSPLcom/fasterxml/jackson/databind/node/ArrayNode;->_add(Lcom/fasterxml/jackson/databind/JsonNode;)Lcom/fasterxml/jackson/databind/node/ArrayNode; +HSPLcom/fasterxml/jackson/databind/node/ArrayNode;->add(Lcom/fasterxml/jackson/databind/JsonNode;)Lcom/fasterxml/jackson/databind/node/ArrayNode; HSPLcom/fasterxml/jackson/databind/node/ArrayNode;->elements()Ljava/util/Iterator; HSPLcom/fasterxml/jackson/databind/node/ArrayNode;->size()I HSPLcom/fasterxml/jackson/databind/node/BaseJsonNode;->()V @@ -15478,6 +15503,7 @@ HSPLcom/fasterxml/jackson/databind/ser/impl/IndexedListSerializer;->serializeCon HSPLcom/fasterxml/jackson/databind/ser/impl/IndexedListSerializer;->withResolved(Lcom/fasterxml/jackson/databind/BeanProperty;Lcom/fasterxml/jackson/databind/jsontype/TypeSerializer;Lcom/fasterxml/jackson/databind/JsonSerializer;Ljava/lang/Boolean;)Lcom/fasterxml/jackson/databind/ser/impl/IndexedListSerializer; HSPLcom/fasterxml/jackson/databind/ser/impl/IndexedListSerializer;->withResolved(Lcom/fasterxml/jackson/databind/BeanProperty;Lcom/fasterxml/jackson/databind/jsontype/TypeSerializer;Lcom/fasterxml/jackson/databind/JsonSerializer;Ljava/lang/Boolean;)Lcom/fasterxml/jackson/databind/ser/std/AsArraySerializerBase; HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Double;->(Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap;Ljava/lang/Class;Lcom/fasterxml/jackson/databind/JsonSerializer;Ljava/lang/Class;Lcom/fasterxml/jackson/databind/JsonSerializer;)V +HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Double;->serializerFor(Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/JsonSerializer; HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Empty;->()V HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Empty;->(Z)V HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Empty;->newWith(Ljava/lang/Class;Lcom/fasterxml/jackson/databind/JsonSerializer;)Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap; @@ -15660,7 +15686,6 @@ HSPLcom/fasterxml/jackson/databind/type/MapType;->refine(Ljava/lang/Class;Lcom/f HSPLcom/fasterxml/jackson/databind/type/PlaceholderForType;->(I)V HSPLcom/fasterxml/jackson/databind/type/PlaceholderForType;->actualType()Lcom/fasterxml/jackson/databind/JavaType; HSPLcom/fasterxml/jackson/databind/type/PlaceholderForType;->actualType(Lcom/fasterxml/jackson/databind/JavaType;)V -HSPLcom/fasterxml/jackson/databind/type/PlaceholderForType;->equals(Ljava/lang/Object;)Z HSPLcom/fasterxml/jackson/databind/type/SimpleType;->(Ljava/lang/Class;)V HSPLcom/fasterxml/jackson/databind/type/SimpleType;->(Ljava/lang/Class;Lcom/fasterxml/jackson/databind/type/TypeBindings;Lcom/fasterxml/jackson/databind/JavaType;[Lcom/fasterxml/jackson/databind/JavaType;)V HSPLcom/fasterxml/jackson/databind/type/SimpleType;->(Ljava/lang/Class;Lcom/fasterxml/jackson/databind/type/TypeBindings;Lcom/fasterxml/jackson/databind/JavaType;[Lcom/fasterxml/jackson/databind/JavaType;Ljava/lang/Object;Ljava/lang/Object;Z)V @@ -17476,9 +17501,7 @@ HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->()V HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->(Landroid/content/Context;Ljava/lang/String;)V HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->getFormattedDate(J)Ljava/lang/String; HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->getStoredUserAgentString(Ljava/lang/String;)Ljava/lang/String; -HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->removeStoredDate(Ljava/lang/String;)V HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->storeHeartBeat(JLjava/lang/String;)V -HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->updateStoredUserAgent(Ljava/lang/String;Ljava/lang/String;)V HSPLcom/google/firebase/installations/FirebaseInstallations$$ExternalSyntheticLambda0;->(Lcom/google/firebase/FirebaseApp;)V HSPLcom/google/firebase/installations/FirebaseInstallations$1;->()V HSPLcom/google/firebase/installations/FirebaseInstallations;->()V @@ -17851,6 +17874,7 @@ HSPLcom/squareup/wire/Syntax;->(Ljava/lang/String;ILjava/lang/String;)V HSPLcom/squareup/wire/internal/ImmutableList;->(Ljava/util/List;)V HSPLcom/squareup/wire/internal/ImmutableList;->get(I)Ljava/lang/Object; HSPLcom/squareup/wire/internal/ImmutableList;->getSize()I +HSPLcom/squareup/wire/internal/Internal;->checkElementsNotNull(Ljava/util/List;)V HSPLcom/squareup/wire/internal/Internal;->countNonNull(Ljava/lang/Object;Ljava/lang/Object;)I HSPLcom/squareup/wire/internal/Internal;->countNonNull(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)I HSPLcom/squareup/wire/internal/Internal;->countNonNull(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)I @@ -18049,6 +18073,7 @@ HSPLio/reactivex/rxjava3/internal/observers/ResumeSingleObserver;->onSubscribe(L HSPLio/reactivex/rxjava3/internal/operators/flowable/AbstractBackpressureThrottlingSubscriber;->(Lorg/reactivestreams/Subscriber;)V HSPLio/reactivex/rxjava3/internal/operators/flowable/AbstractBackpressureThrottlingSubscriber;->cancel()V HSPLio/reactivex/rxjava3/internal/operators/flowable/AbstractBackpressureThrottlingSubscriber;->checkTerminated(ZZLorg/reactivestreams/Subscriber;Ljava/util/concurrent/atomic/AtomicReference;)Z +HSPLio/reactivex/rxjava3/internal/operators/flowable/AbstractBackpressureThrottlingSubscriber;->drain()V HSPLio/reactivex/rxjava3/internal/operators/flowable/AbstractBackpressureThrottlingSubscriber;->onSubscribe(Lorg/reactivestreams/Subscription;)V HSPLio/reactivex/rxjava3/internal/operators/flowable/AbstractBackpressureThrottlingSubscriber;->request(J)V HSPLio/reactivex/rxjava3/internal/operators/flowable/AbstractFlowableWithUpstream;->(Lio/reactivex/rxjava3/core/Flowable;)V @@ -18325,9 +18350,7 @@ HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode;->soNext HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode;->spValue(Ljava/lang/Object;)V HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->()V HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->clear()V -HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->isEmpty()Z HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->lpConsumerNode()Lio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode; -HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->lvConsumerNode()Lio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode; HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->lvProducerNode()Lio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode; HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->offer(Ljava/lang/Object;)Z HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->poll()Ljava/lang/Object; @@ -18364,7 +18387,6 @@ HSPLio/reactivex/rxjava3/internal/queue/SpscLinkedArrayQueue;->soProducerIndex(J HSPLio/reactivex/rxjava3/internal/queue/SpscLinkedArrayQueue;->writeToQueue(Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/lang/Object;JI)Z HSPLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->()V HSPLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->(Ljava/lang/Runnable;Z)V -HSPLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->cancelFuture(Ljava/util/concurrent/Future;)V HSPLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->dispose()V HSPLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->setFuture(Ljava/util/concurrent/Future;)V HSPLio/reactivex/rxjava3/internal/schedulers/DisposeOnCancel;->(Lio/reactivex/rxjava3/disposables/Disposable;)V @@ -18834,7 +18856,6 @@ HSPLj$/util/Optional;->empty()Lj$/util/Optional; HSPLj$/util/Optional;->equals(Ljava/lang/Object;)Z HSPLj$/util/Optional;->get()Ljava/lang/Object; HSPLj$/util/Optional;->isPresent()Z -HSPLj$/util/Optional;->map(Lj$/util/function/Function;)Lj$/util/Optional; HSPLj$/util/Optional;->of(Ljava/lang/Object;)Lj$/util/Optional; HSPLj$/util/Optional;->ofNullable(Ljava/lang/Object;)Lj$/util/Optional; HSPLj$/util/Optional;->orElse(Ljava/lang/Object;)Ljava/lang/Object; @@ -18894,8 +18915,6 @@ HSPLj$/util/concurrent/q;->()V HSPLj$/util/concurrent/q;->(Lj$/util/concurrent/r;)V HSPLj$/util/concurrent/q;->a(Ljava/lang/Object;I)Lj$/util/concurrent/l; HSPLj$/util/concurrent/q;->c(Lj$/util/concurrent/r;Lj$/util/concurrent/r;)Lj$/util/concurrent/r; -HSPLj$/util/concurrent/q;->e()V -HSPLj$/util/concurrent/q;->f(ILjava/lang/Object;Ljava/lang/Object;)Lj$/util/concurrent/r; HSPLj$/util/concurrent/q;->h(Lj$/util/concurrent/r;Lj$/util/concurrent/r;)Lj$/util/concurrent/r; HSPLj$/util/concurrent/q;->i(Lj$/util/concurrent/r;Lj$/util/concurrent/r;)Lj$/util/concurrent/r; HSPLj$/util/concurrent/q;->j(Ljava/lang/Object;Ljava/lang/Object;)I @@ -19026,7 +19045,6 @@ HSPLkotlin/LazyThreadSafetyMode;->$values()[Lkotlin/LazyThreadSafetyMode; HSPLkotlin/LazyThreadSafetyMode;->()V HSPLkotlin/LazyThreadSafetyMode;->(Ljava/lang/String;I)V HSPLkotlin/LazyThreadSafetyMode;->values()[Lkotlin/LazyThreadSafetyMode; -HSPLkotlin/Pair;->(Ljava/lang/Object;Ljava/lang/Object;)V HSPLkotlin/Pair;->component1()Ljava/lang/Object; HSPLkotlin/Pair;->component2()Ljava/lang/Object; HSPLkotlin/Pair;->equals(Ljava/lang/Object;)Z @@ -19052,6 +19070,7 @@ HSPLkotlin/SafePublicationLazyImpl;->(Lkotlin/jvm/functions/Function0;)V HSPLkotlin/SafePublicationLazyImpl;->getValue()Ljava/lang/Object; HSPLkotlin/SynchronizedLazyImpl;->(Lkotlin/jvm/functions/Function0;Ljava/lang/Object;)V HSPLkotlin/SynchronizedLazyImpl;->(Lkotlin/jvm/functions/Function0;Ljava/lang/Object;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLkotlin/SynchronizedLazyImpl;->getValue()Ljava/lang/Object; HSPLkotlin/SynchronizedLazyImpl;->isInitialized()Z HSPLkotlin/Triple;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V HSPLkotlin/Triple;->component1()Ljava/lang/Object; @@ -19077,11 +19096,14 @@ HSPLkotlin/UnsignedKt;->ulongToDouble(J)D HSPLkotlin/collections/AbstractCollection$toString$1;->(Lkotlin/collections/AbstractCollection;)V HSPLkotlin/collections/AbstractCollection;->()V HSPLkotlin/collections/AbstractCollection;->isEmpty()Z +HSPLkotlin/collections/AbstractCollection;->size()I HSPLkotlin/collections/AbstractCollection;->toString()Ljava/lang/String; HSPLkotlin/collections/AbstractList$Companion;->()V HSPLkotlin/collections/AbstractList$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLkotlin/collections/AbstractList$Companion;->checkElementIndex$kotlin_stdlib(II)V HSPLkotlin/collections/AbstractList$IteratorImpl;->(Lkotlin/collections/AbstractList;)V +HSPLkotlin/collections/AbstractList$IteratorImpl;->hasNext()Z +HSPLkotlin/collections/AbstractList$IteratorImpl;->next()Ljava/lang/Object; HSPLkotlin/collections/AbstractList;->()V HSPLkotlin/collections/AbstractList;->()V HSPLkotlin/collections/AbstractList;->iterator()Ljava/util/Iterator; @@ -19172,7 +19194,6 @@ HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([B[BIIIILjava/l HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([F[FIIIILjava/lang/Object;)[F HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([I[IIIIILjava/lang/Object;)[I HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([Ljava/lang/Object;[Ljava/lang/Object;IIIILjava/lang/Object;)[Ljava/lang/Object; -HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([B[BIII)[B HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([F[FIII)[F HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([I[IIII)[I HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([J[JIII)[J @@ -19313,6 +19334,7 @@ HSPLkotlin/collections/CollectionsKt___CollectionsKt;->sortedWith(Ljava/lang/Ite HSPLkotlin/collections/CollectionsKt___CollectionsKt;->sumOfFloat(Ljava/lang/Iterable;)F HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toCollection(Ljava/lang/Iterable;Ljava/util/Collection;)Ljava/util/Collection; HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toIntArray(Ljava/util/Collection;)[I +HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toList(Ljava/lang/Iterable;)Ljava/util/List; HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toMutableList(Ljava/lang/Iterable;)Ljava/util/List; HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toMutableList(Ljava/util/Collection;)Ljava/util/List; HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toSet(Ljava/lang/Iterable;)Ljava/util/Set; @@ -19557,13 +19579,13 @@ HSPLkotlin/jvm/internal/FunctionReference;->(ILjava/lang/Object;Ljava/lang HSPLkotlin/jvm/internal/FunctionReferenceImpl;->(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V HSPLkotlin/jvm/internal/FunctionReferenceImpl;->(ILjava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V HSPLkotlin/jvm/internal/InlineMarker;->mark(I)V +HSPLkotlin/jvm/internal/Intrinsics;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z HSPLkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V HSPLkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)V HSPLkotlin/jvm/internal/Intrinsics;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V HSPLkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V HSPLkotlin/jvm/internal/Intrinsics;->compare(II)I HSPLkotlin/jvm/internal/Intrinsics;->compare(JJ)I -HSPLkotlin/jvm/internal/Lambda;->(I)V HSPLkotlin/jvm/internal/Lambda;->getArity()I HSPLkotlin/jvm/internal/MutablePropertyReference0;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V HSPLkotlin/jvm/internal/MutablePropertyReference0Impl;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V @@ -19955,7 +19977,7 @@ HSPLkotlin/reflect/jvm/internal/KTypeImpl;->getJavaType()Ljava/lang/reflect/Type HSPLkotlin/reflect/jvm/internal/KTypeImpl;->isMarkedNullable()Z HSPLkotlin/reflect/jvm/internal/ModuleByClassLoaderKt;->()V HSPLkotlin/reflect/jvm/internal/ModuleByClassLoaderKt;->getOrCreateModule(Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/impl/descriptors/runtime/components/RuntimeModuleData; -HSPLkotlin/reflect/jvm/internal/ReflectProperties$LazySoftVal;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)V +HSPLkotlin/reflect/jvm/internal/ReflectProperties$LazySoftVal;->invoke()Ljava/lang/Object; HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val$1;->()V HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val;->()V HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val;->()V @@ -21275,6 +21297,7 @@ HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->hasReturnTypeI HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->hasTypeTable()Z HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->initFields()V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->isInitialized()Z +HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->writeTo(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedOutputStream;)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$MemberKind$1;->()V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$MemberKind;->()V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$MemberKind;->(Ljava/lang/String;III)V @@ -21529,7 +21552,6 @@ HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter$1;-> HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter$1;->parsePartialFrom(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;)Ljava/lang/Object; HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter$1;->parsePartialFrom(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;)Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter; HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter;->()V -HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter;->(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter;->(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$1;)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter;->(Z)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter;->getDefaultInstance()Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$ValueParameter; @@ -21794,7 +21816,6 @@ HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUti HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUtil;->getJvmConstructorSignature(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Constructor;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/TypeTable;)Lkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmMemberSignature$Method; HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUtil;->getJvmFieldSignature$default(Lkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUtil;Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Property;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/TypeTable;ZILjava/lang/Object;)Lkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmMemberSignature$Field; HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUtil;->getJvmFieldSignature(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Property;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/TypeTable;Z)Lkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmMemberSignature$Field; -HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUtil;->getJvmMethodSignature(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/TypeTable;)Lkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmMemberSignature$Method; HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUtil;->isMovedFromInterfaceCompanion(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Property;)Z HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUtil;->mapTypeDefault(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;)Ljava/lang/String; HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUtil;->readClassDataFrom([B[Ljava/lang/String;)Lkotlin/Pair; @@ -21955,6 +21976,8 @@ HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readDouble()D HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readEnum()I HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readFloat()F HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readInt32()I +HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readMessage(Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite$Builder;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;)V +HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readMessage(Lkotlin/reflect/jvm/internal/impl/protobuf/Parser;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;)Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite; HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readRawByte()B HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readRawLittleEndian32()I HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readRawLittleEndian64()J @@ -22020,6 +22043,7 @@ HSPLkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;->hasField(Lkotlin/reflec HSPLkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;->isInitialized()Z HSPLkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;->isInitialized(Ljava/util/Map$Entry;)Z HSPLkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;->iterator()Ljava/util/Iterator; +HSPLkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;->makeImmutable()V HSPLkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;->mergeFrom(Lkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;)V HSPLkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;->newFieldSet()Lkotlin/reflect/jvm/internal/impl/protobuf/FieldSet; HSPLkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;->readPrimitiveField(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/WireFormat$FieldType;Z)Ljava/lang/Object; @@ -22556,6 +22580,7 @@ HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/Deserializati HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationConfiguration$Default;->getSkipMetadataVersionCheck()Z HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationConfiguration$Default;->getSkipPrereleaseCheck()Z HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationConfiguration$Default;->getTypeAliasesAllowed()Z +HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationContext;->(Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationComponents;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;Lkotlin/reflect/jvm/internal/impl/descriptors/DeclarationDescriptor;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/TypeTable;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/VersionRequirementTable;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/BinaryVersion;Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/descriptors/DeserializedContainerSource;Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;Ljava/util/List;)V HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationContext;->childContext$default(Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationContext;Lkotlin/reflect/jvm/internal/impl/descriptors/DeclarationDescriptor;Ljava/util/List;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/TypeTable;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/VersionRequirementTable;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/BinaryVersion;ILjava/lang/Object;)Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationContext; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationContext;->childContext(Lkotlin/reflect/jvm/internal/impl/descriptors/DeclarationDescriptor;Ljava/util/List;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/TypeTable;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/VersionRequirementTable;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/BinaryVersion;)Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationContext; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationContext;->getComponents()Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/DeserializationComponents; @@ -22611,7 +22636,6 @@ HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeseria HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->getReceiverParameterAnnotations(Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite;Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/AnnotatedCallableKind;)Lkotlin/reflect/jvm/internal/impl/descriptors/annotations/Annotations; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->initializeWithCoroutinesExperimentalityStatus(Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/descriptors/DeserializedSimpleFunctionDescriptor;Lkotlin/reflect/jvm/internal/impl/descriptors/ReceiverParameterDescriptor;Lkotlin/reflect/jvm/internal/impl/descriptors/ReceiverParameterDescriptor;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lkotlin/reflect/jvm/internal/impl/types/KotlinType;Lkotlin/reflect/jvm/internal/impl/descriptors/Modality;Lkotlin/reflect/jvm/internal/impl/descriptors/DescriptorVisibility;Ljava/util/Map;)V HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->loadConstructor(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Constructor;Z)Lkotlin/reflect/jvm/internal/impl/descriptors/ClassConstructorDescriptor; -HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->loadFunction(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;)Lkotlin/reflect/jvm/internal/impl/descriptors/SimpleFunctionDescriptor; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->loadOldFlags(I)I HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->loadProperty(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Property;)Lkotlin/reflect/jvm/internal/impl/descriptors/PropertyDescriptor; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->valueParameters(Ljava/util/List;Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite;Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/AnnotatedCallableKind;)Ljava/util/List; @@ -22651,7 +22675,6 @@ HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeseriali HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->computeLocalClassifierReplacementType(I)Lkotlin/reflect/jvm/internal/impl/types/SimpleType; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->getOwnTypeParameters()Ljava/util/List; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->simpleType$collectAllArguments(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type;Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;)Ljava/util/List; -HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->simpleType(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type;Z)Lkotlin/reflect/jvm/internal/impl/types/SimpleType; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->toAttributes(Ljava/util/List;Lkotlin/reflect/jvm/internal/impl/descriptors/annotations/Annotations;Lkotlin/reflect/jvm/internal/impl/types/TypeConstructor;Lkotlin/reflect/jvm/internal/impl/descriptors/DeclarationDescriptor;)Lkotlin/reflect/jvm/internal/impl/types/TypeAttributes; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->type(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type;)Lkotlin/reflect/jvm/internal/impl/types/KotlinType; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->typeArgument(Lkotlin/reflect/jvm/internal/impl/descriptors/TypeParameterDescriptor;Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type$Argument;)Lkotlin/reflect/jvm/internal/impl/types/TypeProjection; @@ -22869,7 +22892,6 @@ HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$KeyWithComp HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$KeyWithComputation;->equals(Ljava/lang/Object;)Z HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$KeyWithComputation;->hashCode()I HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$LockBasedLazyValue;->(Lkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager;Lkotlin/jvm/functions/Function0;)V -HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$LockBasedLazyValue;->invoke()Ljava/lang/Object; HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$LockBasedLazyValue;->postCompute(Ljava/lang/Object;)V HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$LockBasedLazyValueWithPostCompute;->(Lkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager;Lkotlin/jvm/functions/Function0;)V HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$LockBasedLazyValueWithPostCompute;->invoke()Ljava/lang/Object; @@ -22881,7 +22903,6 @@ HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$LockBasedNo HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$LockBasedNotNullLazyValueWithPostCompute;->(Lkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager;Lkotlin/jvm/functions/Function0;)V HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$LockBasedNotNullLazyValueWithPostCompute;->invoke()Ljava/lang/Object; HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$MapBasedMemoizedFunction;->(Lkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager;Ljava/util/concurrent/ConcurrentMap;Lkotlin/jvm/functions/Function1;)V -HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$MapBasedMemoizedFunction;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$MapBasedMemoizedFunctionToNotNull;->()V HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$MapBasedMemoizedFunctionToNotNull;->(Lkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager;Ljava/util/concurrent/ConcurrentMap;Lkotlin/jvm/functions/Function1;)V HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$MapBasedMemoizedFunctionToNotNull;->invoke(Ljava/lang/Object;)Ljava/lang/Object; @@ -23267,6 +23288,7 @@ HSPLkotlin/sequences/SequencesKt___SequencesKt;->map(Lkotlin/sequences/Sequence; HSPLkotlin/sequences/SequencesKt___SequencesKt;->mapNotNull(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence; HSPLkotlin/sequences/SequencesKt___SequencesKt;->sortedWith(Lkotlin/sequences/Sequence;Ljava/util/Comparator;)Lkotlin/sequences/Sequence; HSPLkotlin/sequences/SequencesKt___SequencesKt;->toCollection(Lkotlin/sequences/Sequence;Ljava/util/Collection;)Ljava/util/Collection; +HSPLkotlin/sequences/SequencesKt___SequencesKt;->toList(Lkotlin/sequences/Sequence;)Ljava/util/List; HSPLkotlin/sequences/SequencesKt___SequencesKt;->toMutableList(Lkotlin/sequences/Sequence;)Ljava/util/List; HSPLkotlin/sequences/TransformingSequence$iterator$1;->(Lkotlin/sequences/TransformingSequence;)V HSPLkotlin/sequences/TransformingSequence$iterator$1;->hasNext()Z @@ -23283,6 +23305,7 @@ HSPLkotlin/text/CharsKt__CharJVMKt;->isWhitespace(C)Z HSPLkotlin/text/Charsets;->()V HSPLkotlin/text/Charsets;->()V HSPLkotlin/text/DelimitedRangesSequence$iterator$1;->(Lkotlin/text/DelimitedRangesSequence;)V +HSPLkotlin/text/DelimitedRangesSequence$iterator$1;->calcNext()V HSPLkotlin/text/DelimitedRangesSequence$iterator$1;->hasNext()Z HSPLkotlin/text/DelimitedRangesSequence$iterator$1;->next()Ljava/lang/Object; HSPLkotlin/text/DelimitedRangesSequence$iterator$1;->next()Lkotlin/ranges/IntRange; @@ -23348,6 +23371,7 @@ HSPLkotlin/text/StringsKt__IndentKt$getIndentFunction$1;->invoke(Ljava/lang/Obje HSPLkotlin/text/StringsKt__IndentKt$getIndentFunction$1;->invoke(Ljava/lang/String;)Ljava/lang/String; HSPLkotlin/text/StringsKt__IndentKt;->getIndentFunction$StringsKt__IndentKt(Ljava/lang/String;)Lkotlin/jvm/functions/Function1; HSPLkotlin/text/StringsKt__IndentKt;->indentWidth$StringsKt__IndentKt(Ljava/lang/String;)I +HSPLkotlin/text/StringsKt__IndentKt;->replaceIndent(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLkotlin/text/StringsKt__IndentKt;->trimIndent(Ljava/lang/String;)Ljava/lang/String; HSPLkotlin/text/StringsKt__StringNumberConversionsKt;->toLongOrNull(Ljava/lang/String;)Ljava/lang/Long; HSPLkotlin/text/StringsKt__StringNumberConversionsKt;->toLongOrNull(Ljava/lang/String;I)Ljava/lang/Long; @@ -23375,7 +23399,6 @@ HSPLkotlin/text/StringsKt__StringsKt;->contains(Ljava/lang/CharSequence;CZ)Z HSPLkotlin/text/StringsKt__StringsKt;->contains(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Z)Z HSPLkotlin/text/StringsKt__StringsKt;->endsWith$default(Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZILjava/lang/Object;)Z HSPLkotlin/text/StringsKt__StringsKt;->endsWith(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Z)Z -HSPLkotlin/text/StringsKt__StringsKt;->findAnyOf$StringsKt__StringsKt(Ljava/lang/CharSequence;Ljava/util/Collection;IZZ)Lkotlin/Pair; HSPLkotlin/text/StringsKt__StringsKt;->getLastIndex(Ljava/lang/CharSequence;)I HSPLkotlin/text/StringsKt__StringsKt;->indexOf$default(Ljava/lang/CharSequence;CIZILjava/lang/Object;)I HSPLkotlin/text/StringsKt__StringsKt;->indexOf$default(Ljava/lang/CharSequence;Ljava/lang/String;IZILjava/lang/Object;)I @@ -24428,7 +24451,6 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->attachCancellationSignal(L HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->bindArguments(Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;[Ljava/lang/Object;)V HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->canonicalizeSyncMode(Ljava/lang/String;)Ljava/lang/String; HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->detachCancellationSignal(Landroid/os/CancellationSignal;)V -HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->execute(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)V HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)I HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForCursorWindow(Ljava/lang/String;[Ljava/lang/Object;Landroid/database/CursorWindow;IIZLandroid/os/CancellationSignal;)I HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForLastInsertedRowId(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J @@ -24475,7 +24497,6 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->reconfigure(Lnet/zetet HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->reconfigureAllConnectionsLocked()V HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->recycleConnectionLocked(Lnet/zetetic/database/sqlcipher/SQLiteConnection;Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$AcquiredConnectionStatus;)Z HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->recycleConnectionWaiterLocked(Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$ConnectionWaiter;)V -HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->releaseConnection(Lnet/zetetic/database/sqlcipher/SQLiteConnection;)V HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->setMaxConnectionPoolSizeLocked()V HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->throwIfClosedLocked()V HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->tryAcquirePrimaryConnectionLocked(I)Lnet/zetetic/database/sqlcipher/SQLiteConnection; @@ -24518,6 +24539,7 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->hasCodec()Z HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->inTransaction()Z HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->insert(Ljava/lang/String;ILandroid/content/ContentValues;)J HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J +HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->insertWithOnConflict(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;I)J HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isMainThread()Z HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isOpen()Z HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isReadOnly()Z @@ -24560,6 +24582,7 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->()V HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Lnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory;IILnet/zetetic/database/DatabaseErrorHandler;Lnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;Z)V HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->(Landroid/content/Context;Ljava/lang/String;[BLnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory;IILnet/zetetic/database/DatabaseErrorHandler;Lnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;Z)V HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->getBytes(Ljava/lang/String;)[B +HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->getDatabaseLocked(Z)Lnet/zetetic/database/sqlcipher/SQLiteDatabase; HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->getReadableDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->getWritableDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->onConfigure(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;)V @@ -24572,10 +24595,12 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->bindString(ILjava/lang/String HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->clearBindings()V HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getBindArgs()[Ljava/lang/Object; HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getColumnNames()[Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getConnectionFlags()I HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getSession()Lnet/zetetic/database/sqlcipher/SQLiteSession; HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getSql()Ljava/lang/String; +HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->onAllReferencesReleased()V HSPLnet/zetetic/database/sqlcipher/SQLiteQuery;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;Ljava/lang/String;Landroid/os/CancellationSignal;)V -HSPLnet/zetetic/database/sqlcipher/SQLiteQuery;->fillWindow(Landroid/database/CursorWindow;IIZ)I HSPLnet/zetetic/database/sqlcipher/SQLiteQueryBuilder;->()V HSPLnet/zetetic/database/sqlcipher/SQLiteQueryBuilder;->appendClause(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V HSPLnet/zetetic/database/sqlcipher/SQLiteQueryBuilder;->appendColumns(Ljava/lang/StringBuilder;[Ljava/lang/String;)V @@ -24584,22 +24609,23 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteSession$Transaction;->()V HSPLnet/zetetic/database/sqlcipher/SQLiteSession$Transaction;->(Lnet/zetetic/database/sqlcipher/SQLiteSession$1;)V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->()V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->(Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool;)V -HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->acquireConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->beginTransaction(ILnet/zetetic/database/sqlcipher/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->beginTransactionUnchecked(ILnet/zetetic/database/sqlcipher/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->endTransaction(Landroid/os/CancellationSignal;)V -HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->endTransactionUnchecked(Landroid/os/CancellationSignal;Z)V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)I HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeForCursorWindow(Ljava/lang/String;[Ljava/lang/Object;Landroid/database/CursorWindow;IIZILandroid/os/CancellationSignal;)I +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeForLastInsertedRowId(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)J HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)J HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeSpecial(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)Z HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->hasTransaction()Z HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->obtainTransaction(ILnet/zetetic/database/sqlcipher/SQLiteTransactionListener;)Lnet/zetetic/database/sqlcipher/SQLiteSession$Transaction; +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->prepare(Ljava/lang/String;ILandroid/os/CancellationSignal;Lnet/zetetic/database/sqlcipher/SQLiteStatementInfo;)V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->recycleTransaction(Lnet/zetetic/database/sqlcipher/SQLiteSession$Transaction;)V -HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->releaseConnection()V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->setTransactionSuccessful()V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->throwIfNoTransaction()V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->throwIfTransactionMarkedSuccessful()V HSPLnet/zetetic/database/sqlcipher/SQLiteStatement;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteStatement;->executeInsert()J HSPLnet/zetetic/database/sqlcipher/SQLiteStatement;->executeUpdateDelete()I HSPLnet/zetetic/database/sqlcipher/SQLiteStatement;->simpleQueryForLong()J HSPLnet/zetetic/database/sqlcipher/SQLiteStatementInfo;->()V @@ -25627,7 +25653,6 @@ HSPLokhttp3/internal/tls/OkHostnameVerifier;->verify(Ljava/lang/String;Ljava/sec HSPLokhttp3/internal/tls/OkHostnameVerifier;->verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z HSPLokhttp3/internal/tls/OkHostnameVerifier;->verifyHostname(Ljava/lang/String;Ljava/lang/String;)Z HSPLokhttp3/internal/tls/OkHostnameVerifier;->verifyHostname(Ljava/lang/String;Ljava/security/cert/X509Certificate;)Z -HSPLokhttp3/internal/ws/RealWebSocket$Close;->(ILokio/ByteString;J)V HSPLokhttp3/internal/ws/RealWebSocket$Companion;->()V HSPLokhttp3/internal/ws/RealWebSocket$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLokhttp3/internal/ws/RealWebSocket$connect$1;->(Lokhttp3/internal/ws/RealWebSocket;Lokhttp3/Request;)V @@ -25639,7 +25664,6 @@ HSPLokhttp3/internal/ws/RealWebSocket;->close(ILjava/lang/String;)Z HSPLokhttp3/internal/ws/RealWebSocket;->close(ILjava/lang/String;J)Z HSPLokhttp3/internal/ws/RealWebSocket;->connect(Lokhttp3/OkHttpClient;)V HSPLokhttp3/internal/ws/RealWebSocket;->failWebSocket(Ljava/lang/Exception;Lokhttp3/Response;)V -HSPLokhttp3/internal/ws/RealWebSocket;->runWriter()V HSPLokhttp3/internal/ws/WebSocketProtocol;->()V HSPLokhttp3/internal/ws/WebSocketProtocol;->()V HSPLokhttp3/internal/ws/WebSocketProtocol;->closeCodeExceptionMessage(I)Ljava/lang/String; @@ -25658,6 +25682,7 @@ HSPLokio/AsyncTimeout$Companion;->(Lkotlin/jvm/internal/DefaultConstructor HSPLokio/AsyncTimeout$Companion;->access$cancelScheduledTimeout(Lokio/AsyncTimeout$Companion;Lokio/AsyncTimeout;)Z HSPLokio/AsyncTimeout$Companion;->access$scheduleTimeout(Lokio/AsyncTimeout$Companion;Lokio/AsyncTimeout;JZ)V HSPLokio/AsyncTimeout$Companion;->awaitTimeout$okio()Lokio/AsyncTimeout; +HSPLokio/AsyncTimeout$Companion;->cancelScheduledTimeout(Lokio/AsyncTimeout;)Z HSPLokio/AsyncTimeout$Companion;->getCondition()Ljava/util/concurrent/locks/Condition; HSPLokio/AsyncTimeout$Companion;->getLock()Ljava/util/concurrent/locks/ReentrantLock; HSPLokio/AsyncTimeout$Watchdog;->()V @@ -25698,6 +25723,7 @@ HSPLokio/Buffer;->close()V HSPLokio/Buffer;->completeSegmentByteCount()J HSPLokio/Buffer;->copyTo(Lokio/Buffer;JJ)Lokio/Buffer; HSPLokio/Buffer;->exhausted()Z +HSPLokio/Buffer;->getByte(J)B HSPLokio/Buffer;->indexOfElement(Lokio/ByteString;J)J HSPLokio/Buffer;->read(Lokio/Buffer;J)J HSPLokio/Buffer;->read([BII)I @@ -25717,7 +25743,6 @@ HSPLokio/Buffer;->setSize$okio(J)V HSPLokio/Buffer;->size()J HSPLokio/Buffer;->skip(J)V HSPLokio/Buffer;->writableSegment$okio(I)Lokio/Segment; -HSPLokio/Buffer;->write(Lokio/Buffer;J)V HSPLokio/Buffer;->write(Lokio/ByteString;)Lokio/Buffer; HSPLokio/Buffer;->write([B)Lokio/Buffer; HSPLokio/Buffer;->write([BII)Lokio/Buffer; @@ -25854,6 +25879,7 @@ HSPLokio/RealBufferedSource;->readIntLe()I HSPLokio/RealBufferedSource;->readShort()S HSPLokio/RealBufferedSource;->readString(Ljava/nio/charset/Charset;)Ljava/lang/String; HSPLokio/RealBufferedSource;->require(J)V +HSPLokio/RealBufferedSource;->select(Lokio/Options;)I HSPLokio/RealBufferedSource;->skip(J)V HSPLokio/Segment$Companion;->()V HSPLokio/Segment$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -26168,6 +26194,7 @@ HSPLorg/conscrypt/NativeSsl$BioWrapper;->(Lorg/conscrypt/NativeSsl;Lorg/co HSPLorg/conscrypt/NativeSsl$BioWrapper;->close()V HSPLorg/conscrypt/NativeSsl$BioWrapper;->getPendingWrittenBytes()I HSPLorg/conscrypt/NativeSsl$BioWrapper;->readDirectByteBuffer(JI)I +HSPLorg/conscrypt/NativeSsl$BioWrapper;->writeDirectByteBuffer(JI)I HSPLorg/conscrypt/NativeSsl;->(JLorg/conscrypt/SSLParametersImpl;Lorg/conscrypt/NativeCrypto$SSLHandshakeCallbacks;Lorg/conscrypt/SSLParametersImpl$AliasChooser;Lorg/conscrypt/SSLParametersImpl$PSKCallbacks;)V HSPLorg/conscrypt/NativeSsl;->access$100(Lorg/conscrypt/NativeSsl;)J HSPLorg/conscrypt/NativeSsl;->access$200(Lorg/conscrypt/NativeSsl;)Ljava/util/concurrent/locks/ReadWriteLock; @@ -26240,6 +26267,7 @@ HSPLorg/conscrypt/OpenSSLCipher;->checkAndSetEncodedKey(ILjava/security/Key;)[B HSPLorg/conscrypt/OpenSSLCipher;->engineDoFinal([BII)[B HSPLorg/conscrypt/OpenSSLCipher;->engineDoFinal([BII[BI)I HSPLorg/conscrypt/OpenSSLCipher;->engineGetIV()[B +HSPLorg/conscrypt/OpenSSLCipher;->engineGetOutputSize(I)I HSPLorg/conscrypt/OpenSSLCipher;->engineInit(ILjava/security/Key;Ljava/security/SecureRandom;)V HSPLorg/conscrypt/OpenSSLCipher;->engineInit(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V HSPLorg/conscrypt/OpenSSLCipher;->engineUpdate([BII)[B @@ -26599,7 +26627,6 @@ HSPLorg/signal/core/util/CursorUtil;->isNull(Landroid/database/Cursor;Ljava/lang HSPLorg/signal/core/util/CursorUtil;->requireBlob(Landroid/database/Cursor;Ljava/lang/String;)[B HSPLorg/signal/core/util/CursorUtil;->requireBoolean(Landroid/database/Cursor;Ljava/lang/String;)Z HSPLorg/signal/core/util/CursorUtil;->requireInt(Landroid/database/Cursor;Ljava/lang/String;)I -HSPLorg/signal/core/util/CursorUtil;->requireLong(Landroid/database/Cursor;Ljava/lang/String;)J HSPLorg/signal/core/util/CursorUtil;->requireString(Landroid/database/Cursor;Ljava/lang/String;)Ljava/lang/String; HSPLorg/signal/core/util/DeleteBuilderPart1;->(Landroidx/sqlite/db/SupportSQLiteDatabase;Ljava/lang/String;)V HSPLorg/signal/core/util/DeleteBuilderPart1;->where(Ljava/lang/String;[Ljava/lang/Object;)Lorg/signal/core/util/DeleteBuilderPart2; @@ -26625,6 +26652,7 @@ HSPLorg/signal/core/util/ExistsBuilderPart1;->(Landroidx/sqlite/db/Support HSPLorg/signal/core/util/ExistsBuilderPart1;->where(Ljava/lang/String;[Ljava/lang/Object;)Lorg/signal/core/util/ExistsBuilderPart2; HSPLorg/signal/core/util/ExistsBuilderPart1;->where(Ljava/lang/String;[Ljava/lang/String;)Lorg/signal/core/util/ExistsBuilderPart2; HSPLorg/signal/core/util/ExistsBuilderPart2;->(Landroidx/sqlite/db/SupportSQLiteDatabase;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V +HSPLorg/signal/core/util/ExistsBuilderPart2;->run()Z HSPLorg/signal/core/util/Hex;->()V HSPLorg/signal/core/util/Hex;->appendHexChar(Ljava/lang/StringBuffer;I)V HSPLorg/signal/core/util/Hex;->fromStringCondensed(Ljava/lang/String;)[B @@ -26667,7 +26695,6 @@ HSPLorg/signal/core/util/SQLiteDatabaseExtensionsKt;->insertInto(Landroidx/sqlit HSPLorg/signal/core/util/SQLiteDatabaseExtensionsKt;->select(Landroidx/sqlite/db/SupportSQLiteDatabase;[Ljava/lang/String;)Lorg/signal/core/util/SelectBuilderPart1; HSPLorg/signal/core/util/SQLiteDatabaseExtensionsKt;->update(Landroidx/sqlite/db/SupportSQLiteDatabase;Ljava/lang/String;)Lorg/signal/core/util/UpdateBuilderPart1; HSPLorg/signal/core/util/SQLiteDatabaseExtensionsKt;->updateAll(Landroidx/sqlite/db/SupportSQLiteDatabase;Ljava/lang/String;)Lorg/signal/core/util/UpdateAllBuilderPart1; -HSPLorg/signal/core/util/SelectBuilderPart1;->(Landroidx/sqlite/db/SupportSQLiteDatabase;[Ljava/lang/String;)V HSPLorg/signal/core/util/SelectBuilderPart1;->from(Ljava/lang/String;)Lorg/signal/core/util/SelectBuilderPart2; HSPLorg/signal/core/util/SelectBuilderPart2;->(Landroidx/sqlite/db/SupportSQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;)V HSPLorg/signal/core/util/SelectBuilderPart2;->orderBy(Ljava/lang/String;)Lorg/signal/core/util/SelectBuilderPart4a; @@ -26903,6 +26930,7 @@ HSPLorg/signal/core/util/logging/Scrubber;->access$getTOP_100_TLDS$p()Ljava/util HSPLorg/signal/core/util/logging/Scrubber;->access$hash(Lorg/signal/core/util/logging/Scrubber;Ljava/lang/String;)Ljava/lang/String; HSPLorg/signal/core/util/logging/Scrubber;->hash(Ljava/lang/String;)Ljava/lang/String; HSPLorg/signal/core/util/logging/Scrubber;->scrub(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLorg/signal/core/util/logging/Scrubber;->scrub(Ljava/lang/CharSequence;Ljava/util/regex/Pattern;Lkotlin/jvm/functions/Function2;)Ljava/lang/CharSequence; HSPLorg/signal/core/util/logging/Scrubber;->scrubCallLinkKeys(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; HSPLorg/signal/core/util/logging/Scrubber;->scrubDomains(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; HSPLorg/signal/core/util/logging/Scrubber;->scrubE164(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; @@ -26924,9 +26952,9 @@ HSPLorg/signal/core/util/tracing/DebugAnnotation$Companion$ADAPTER$1;->(Lc HSPLorg/signal/core/util/tracing/DebugAnnotation$Companion;->()V HSPLorg/signal/core/util/tracing/DebugAnnotation$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/signal/core/util/tracing/DebugAnnotation;->()V +HSPLorg/signal/core/util/tracing/DebugAnnotation;->(Ljava/lang/Long;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/Double;Ljava/lang/String;Ljava/lang/Long;Lorg/signal/core/util/tracing/DebugAnnotation$NestedValue;Lokio/ByteString;)V HSPLorg/signal/core/util/tracing/DebugAnnotation;->equals(Ljava/lang/Object;)Z HSPLorg/signal/core/util/tracing/TracePacket$Builder;->()V -HSPLorg/signal/core/util/tracing/TracePacket$Builder;->build()Lorg/signal/core/util/tracing/TracePacket; HSPLorg/signal/core/util/tracing/TracePacket$Builder;->synchronization_marker(Lokio/ByteString;)Lorg/signal/core/util/tracing/TracePacket$Builder; HSPLorg/signal/core/util/tracing/TracePacket$Builder;->timestamp(Ljava/lang/Long;)Lorg/signal/core/util/tracing/TracePacket$Builder; HSPLorg/signal/core/util/tracing/TracePacket$Builder;->track_descriptor(Lorg/signal/core/util/tracing/TrackDescriptor;)Lorg/signal/core/util/tracing/TracePacket$Builder; @@ -26942,8 +26970,7 @@ HSPLorg/signal/core/util/tracing/Tracer$$ExternalSyntheticLambda0;->getTimeNanos HSPLorg/signal/core/util/tracing/Tracer;->()V HSPLorg/signal/core/util/tracing/Tracer;->()V HSPLorg/signal/core/util/tracing/Tracer;->addPacket(Lorg/signal/core/util/tracing/TracePacket;)V -HSPLorg/signal/core/util/tracing/Tracer;->end(Ljava/lang/String;)V -HSPLorg/signal/core/util/tracing/Tracer;->forMethodEnd(Ljava/lang/String;JJ)Lorg/signal/core/util/tracing/TracePacket; +HSPLorg/signal/core/util/tracing/Tracer;->end(Ljava/lang/String;J)V HSPLorg/signal/core/util/tracing/Tracer;->forMethodStart(Ljava/lang/String;JJLjava/util/Map;)Lorg/signal/core/util/tracing/TracePacket; HSPLorg/signal/core/util/tracing/Tracer;->forSynchronization(J)Lorg/signal/core/util/tracing/TracePacket; HSPLorg/signal/core/util/tracing/Tracer;->forTrack(JLjava/lang/String;)Lorg/signal/core/util/tracing/TracePacket; @@ -26964,7 +26991,6 @@ HSPLorg/signal/core/util/tracing/TrackDescriptor$Companion;->(Lkotlin/jvm/ HSPLorg/signal/core/util/tracing/TrackDescriptor;->()V HSPLorg/signal/core/util/tracing/TrackDescriptor;->(Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;Lorg/signal/core/util/tracing/ThreadDescriptor;Lorg/signal/core/util/tracing/CounterDescriptor;Lokio/ByteString;)V HSPLorg/signal/core/util/tracing/TrackEvent$Builder;->()V -HSPLorg/signal/core/util/tracing/TrackEvent$Builder;->build()Lorg/signal/core/util/tracing/TrackEvent; HSPLorg/signal/core/util/tracing/TrackEvent$Builder;->debug_annotations(Ljava/util/List;)Lorg/signal/core/util/tracing/TrackEvent$Builder; HSPLorg/signal/core/util/tracing/TrackEvent$Builder;->name(Ljava/lang/String;)Lorg/signal/core/util/tracing/TrackEvent$Builder; HSPLorg/signal/core/util/tracing/TrackEvent$Builder;->track_uuid(Ljava/lang/Long;)Lorg/signal/core/util/tracing/TrackEvent$Builder; @@ -27641,7 +27667,7 @@ HSPLorg/thoughtcrime/securesms/attachments/DatabaseAttachment;->getUri()Landroid HSPLorg/thoughtcrime/securesms/attachments/PointerAttachment$Companion;->()V HSPLorg/thoughtcrime/securesms/attachments/PointerAttachment$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/attachments/PointerAttachment$Companion;->forPointer$default(Lorg/thoughtcrime/securesms/attachments/PointerAttachment$Companion;Lj$/util/Optional;Lorg/thoughtcrime/securesms/stickers/StickerLocator;Ljava/lang/String;IILjava/lang/Object;)Lj$/util/Optional; -HSPLorg/thoughtcrime/securesms/attachments/PointerAttachment$Companion;->forPointers(Lj$/util/Optional;)Ljava/util/List; +HSPLorg/thoughtcrime/securesms/attachments/PointerAttachment$Companion;->forPointer(Lj$/util/Optional;Lorg/thoughtcrime/securesms/stickers/StickerLocator;Ljava/lang/String;I)Lj$/util/Optional; HSPLorg/thoughtcrime/securesms/attachments/PointerAttachment;->()V HSPLorg/thoughtcrime/securesms/attachments/PointerAttachment;->(Ljava/lang/String;IJLjava/lang/String;Lorg/thoughtcrime/securesms/attachments/Cdn;Ljava/lang/String;Ljava/lang/String;[B[B[BILjava/lang/String;ZZZIIJLjava/lang/String;Lorg/thoughtcrime/securesms/stickers/StickerLocator;Lorg/thoughtcrime/securesms/blurhash/BlurHash;Ljava/util/UUID;)V HSPLorg/thoughtcrime/securesms/attachments/PointerAttachment;->getUri()Landroid/net/Uri; @@ -28001,6 +28027,7 @@ HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView$$ExternalSynthetic HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->$r8$lambda$Wu3CFKvJwFFWN-o0X8m-zsbIJpA(Ljava/lang/Runnable;Landroid/view/View;)Lkotlin/Unit; HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->$r8$lambda$_XmAzJ07P5yhLgrWLOrmxQntA7M(Lorg/thoughtcrime/securesms/components/emoji/EmojiTextView;)V HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->applyWidthMeasureRoundingFix(I)I HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->drawSpecialRenderers(Landroid/graphics/Canvas;Lorg/thoughtcrime/securesms/components/mention/MentionRendererDelegate;Lorg/thoughtcrime/securesms/components/spoiler/SpoilerRendererDelegate;)V HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->ellipsizeEmojiTextForMaxLines()V @@ -28063,7 +28090,6 @@ HSPLorg/thoughtcrime/securesms/components/emoji/parsing/EmojiTree$Matches;->exactMatch()Z HSPLorg/thoughtcrime/securesms/components/emoji/parsing/EmojiTree$Matches;->impossibleMatch()Z HSPLorg/thoughtcrime/securesms/components/emoji/parsing/EmojiTree;->()V -HSPLorg/thoughtcrime/securesms/components/emoji/parsing/EmojiTree;->add(Ljava/lang/String;Lorg/thoughtcrime/securesms/components/emoji/parsing/EmojiDrawInfo;)V HSPLorg/thoughtcrime/securesms/components/emoji/parsing/EmojiTree;->getEmoji(Ljava/lang/CharSequence;II)Lorg/thoughtcrime/securesms/components/emoji/parsing/EmojiDrawInfo; HSPLorg/thoughtcrime/securesms/components/emoji/parsing/EmojiTree;->isEmoji(Ljava/lang/CharSequence;II)Lorg/thoughtcrime/securesms/components/emoji/parsing/EmojiTree$Matches; HSPLorg/thoughtcrime/securesms/components/emoji/parsing/Fitzpatrick;->$values()[Lorg/thoughtcrime/securesms/components/emoji/parsing/Fitzpatrick; @@ -28445,7 +28471,6 @@ HSPLorg/thoughtcrime/securesms/conversation/ConversationItem$ViewOnceMessageClic HSPLorg/thoughtcrime/securesms/conversation/ConversationItem;->()V HSPLorg/thoughtcrime/securesms/conversation/ConversationItem;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLorg/thoughtcrime/securesms/conversation/ConversationItem;->initializeAttributes()V -HSPLorg/thoughtcrime/securesms/conversation/ConversationItem;->onFinishInflate()V HSPLorg/thoughtcrime/securesms/conversation/ConversationItem;->setOnClickListener(Landroid/view/View$OnClickListener;)V HSPLorg/thoughtcrime/securesms/conversation/ConversationItemBodyBubble$$ExternalSyntheticBackport0;->m(Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/conversation/ConversationItemBodyBubble$$ExternalSyntheticLambda2;->()V @@ -28545,6 +28570,7 @@ HSPLorg/thoughtcrime/securesms/conversationlist/ChatFolderAdapter;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ChatFolderAdapter;->(Lorg/thoughtcrime/securesms/conversationlist/ChatFolderAdapter$Callbacks;)V HSPLorg/thoughtcrime/securesms/conversationlist/ChatFolderMappingModel;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ChatFolderMappingModel;->(Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;Z)V +HSPLorg/thoughtcrime/securesms/conversationlist/ChatFolderMappingModel;->equals(Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->onTouchEvent(Landroidx/coordinatorlayout/widget/CoordinatorLayout;Landroid/view/View;Landroid/view/MotionEvent;)Z @@ -28575,8 +28601,11 @@ HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListArchiveItemDecor HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListArchiveItemDecoration;->onDraw(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$State;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource$UnarchivedConversationListDataSource;->(Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;Z)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource$UnarchivedConversationListDataSource;->getCursor(JJ)Landroid/database/Cursor; +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource$UnarchivedConversationListDataSource;->getHeaderOffset()I HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource$UnarchivedConversationListDataSource;->getKey(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource$UnarchivedConversationListDataSource;->getTotalCount()I +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource$UnarchivedConversationListDataSource;->hasPinnedHeader()Z +HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource$UnarchivedConversationListDataSource;->hasUnpinnedHeader()Z HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource;->(Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;Z)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource;->create(Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;ZZ)Lorg/thoughtcrime/securesms/conversationlist/ConversationListDataSource; @@ -29126,6 +29155,7 @@ HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->deleteAbandonedPreuplo HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->getAttachment(Lorg/thoughtcrime/securesms/attachments/AttachmentId;)Lorg/thoughtcrime/securesms/attachments/DatabaseAttachment; HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->getAttachmentsForMessage(J)Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->insertAttachmentsForMessage(JLjava/util/List;Ljava/util/List;)Ljava/util/Map; +HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->insertUndownloadedAttachment(JLorg/thoughtcrime/securesms/attachments/Attachment;Z)Lorg/thoughtcrime/securesms/attachments/AttachmentId; HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->readAttachments(Landroid/database/Cursor;)Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->readStickerLocator(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/stickers/StickerLocator; HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->setTransferProgressPermanentFailure(Lorg/thoughtcrime/securesms/attachments/AttachmentId;J)V @@ -29252,7 +29282,6 @@ HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->runPostSuccessfulTran HSPLorg/thoughtcrime/securesms/database/DatabaseTable;->()V HSPLorg/thoughtcrime/securesms/database/DatabaseTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V HSPLorg/thoughtcrime/securesms/database/DatabaseTable;->getReadableDatabase()Lorg/thoughtcrime/securesms/database/SQLiteDatabase; -HSPLorg/thoughtcrime/securesms/database/DatabaseTable;->getWritableDatabase()Lorg/thoughtcrime/securesms/database/SQLiteDatabase; HSPLorg/thoughtcrime/securesms/database/DatabaseTable;->notifyConversationListListeners()V HSPLorg/thoughtcrime/securesms/database/DatabaseTable;->notifyConversationListeners(J)V HSPLorg/thoughtcrime/securesms/database/DistributionListTables$Companion;->()V @@ -29545,6 +29574,7 @@ HSPLorg/thoughtcrime/securesms/database/MessageTable$MmsReader;->getCursor()Land HSPLorg/thoughtcrime/securesms/database/MessageTable$MmsReader;->getFailures(Ljava/lang/String;)Ljava/util/Set; HSPLorg/thoughtcrime/securesms/database/MessageTable$MmsReader;->getMismatchedIdentities(Ljava/lang/String;)Ljava/util/Set; HSPLorg/thoughtcrime/securesms/database/MessageTable$MmsReader;->getNext()Lorg/thoughtcrime/securesms/database/model/MessageRecord; +HSPLorg/thoughtcrime/securesms/database/MessageTable$MmsReader;->getQuote(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/database/model/Quote; HSPLorg/thoughtcrime/securesms/database/MessageTable$MmsReader;->iterator()Ljava/util/Iterator; HSPLorg/thoughtcrime/securesms/database/MessageTable$SyncMessageId;->()V HSPLorg/thoughtcrime/securesms/database/MessageTable$SyncMessageId;->(Lorg/thoughtcrime/securesms/recipients/RecipientId;J)V @@ -29819,7 +29849,6 @@ HSPLorg/thoughtcrime/securesms/database/RecipientTable;->markRegistered(Lorg/tho HSPLorg/thoughtcrime/securesms/database/RecipientTable;->markRegisteredOrThrow(Lorg/thoughtcrime/securesms/recipients/RecipientId;Lorg/whispersystems/signalservice/api/push/ServiceId;)V HSPLorg/thoughtcrime/securesms/database/RecipientTable;->processPnpTuple(Ljava/lang/String;Lorg/whispersystems/signalservice/api/push/ServiceId$PNI;Lorg/whispersystems/signalservice/api/push/ServiceId$ACI;ZZ)Lorg/thoughtcrime/securesms/database/RecipientTable$ProcessPnpTupleResult; HSPLorg/thoughtcrime/securesms/database/RecipientTable;->processPnpTupleToChangeSet(Ljava/lang/String;Lorg/whispersystems/signalservice/api/push/ServiceId$PNI;Lorg/whispersystems/signalservice/api/push/ServiceId$ACI;ZZ)Lorg/thoughtcrime/securesms/database/PnpChangeSet; -HSPLorg/thoughtcrime/securesms/database/RecipientTable;->rotateStorageId(Lorg/thoughtcrime/securesms/recipients/RecipientId;)V HSPLorg/thoughtcrime/securesms/database/RecipientTable;->setCapabilities(Lorg/thoughtcrime/securesms/recipients/RecipientId;Lorg/whispersystems/signalservice/api/profiles/SignalServiceProfile$Capabilities;)V HSPLorg/thoughtcrime/securesms/database/RecipientTable;->setMuted(Lorg/thoughtcrime/securesms/recipients/RecipientId;J)V HSPLorg/thoughtcrime/securesms/database/RecipientTable;->setProfileAvatar(Lorg/thoughtcrime/securesms/recipients/RecipientId;Ljava/lang/String;)V @@ -29856,9 +29885,7 @@ HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->()V HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->getExtras(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/recipients/Recipient$Extras; HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->getRecipientExtras(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/database/model/databaseprotos/RecipientExtras; HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->getRecord(Landroid/content/Context;Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/database/model/RecipientRecord; -HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->getRecord(Landroid/content/Context;Landroid/database/Cursor;Ljava/lang/String;)Lorg/thoughtcrime/securesms/database/model/RecipientRecord; HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->getSyncExtras$lambda$6(Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)Ljava/lang/Boolean; -HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->getSyncExtras(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/database/model/RecipientRecord$SyncExtras; HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->parseBadgeList([B)Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/RemappedRecordTables$Companion;->()V HSPLorg/thoughtcrime/securesms/database/RemappedRecordTables$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -29877,6 +29904,7 @@ HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$$ExternalSyntheticLam HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$$ExternalSyntheticLambda1;->(Lkotlin/jvm/functions/Function1;)V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$$ExternalSyntheticLambda1;->subscribe(Lio/reactivex/rxjava3/core/FlowableEmitter;)V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$RxObserver;->(Lio/reactivex/rxjava3/core/Emitter;)V +HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$RxObserver;->onChanged()V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$RxObserver;->prime()V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$chatFolders$2;->()V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$chatFolders$2;->()V @@ -29973,6 +30001,7 @@ HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->(Lnet/zetetic/dat HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->beginTransaction()V HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)I HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I +HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->endTransaction()V HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->execSQL(Ljava/lang/String;[Ljava/lang/Object;)V HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->getPendingPostSuccessfulTransactionTasks()Ljava/util/Set; HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->getPostSuccessfulTransactionTasks()Ljava/util/Set; @@ -29991,6 +30020,7 @@ HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->lambda$rawQuery$6(Ljava HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->lambda$replace$11(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)Ljava/lang/Long; HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->lambda$update$15(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/Integer; HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->lambda$updateWithOnConflict$16(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;I)Ljava/lang/Integer; +HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->query(Landroidx/sqlite/db/SupportSQLiteQuery;)Landroid/database/Cursor; HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/Object;)Landroid/database/Cursor; HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->rawQuery(Ljava/lang/String;[Ljava/lang/Object;)Landroid/database/Cursor; @@ -29999,6 +30029,7 @@ HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->replace(Ljava/lang/Stri HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->runPostSuccessfulTransaction(Ljava/lang/Runnable;)V HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->runPostSuccessfulTransaction(Ljava/lang/String;Ljava/lang/Runnable;)V HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->setTransactionSuccessful()V +HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->trace(Ljava/lang/String;Ljava/lang/Runnable;)V HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->traceLockEnd()V HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->traceLockStart()V HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->traceSql(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLorg/thoughtcrime/securesms/database/SQLiteDatabase$Returnable;)Ljava/lang/Object; @@ -30152,6 +30183,7 @@ HSPLorg/thoughtcrime/securesms/database/ThreadBodyUtil;->format(Landroid/content HSPLorg/thoughtcrime/securesms/database/ThreadBodyUtil;->format(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/util/List;)Lorg/thoughtcrime/securesms/database/ThreadBodyUtil$ThreadBody; HSPLorg/thoughtcrime/securesms/database/ThreadBodyUtil;->getBody(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Lorg/thoughtcrime/securesms/database/ThreadBodyUtil$ThreadBody; HSPLorg/thoughtcrime/securesms/database/ThreadBodyUtil;->getFormattedBodyFor(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Lorg/thoughtcrime/securesms/database/ThreadBodyUtil$ThreadBody; +HSPLorg/thoughtcrime/securesms/database/ThreadBodyUtil;->getFormattedBodyForMms(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/model/MmsMessageRecord;Ljava/lang/CharSequence;)Lorg/thoughtcrime/securesms/database/ThreadBodyUtil$ThreadBody; HSPLorg/thoughtcrime/securesms/database/ThreadTable$Companion;->()V HSPLorg/thoughtcrime/securesms/database/ThreadTable$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/database/ThreadTable$Extra$Companion;->()V @@ -30200,6 +30232,7 @@ HSPLorg/thoughtcrime/securesms/database/ThreadTable;->createThreadForRecipient(L HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getArchivedConversationListCount(Lorg/thoughtcrime/securesms/conversationlist/model/ConversationFilter;)I HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getAttachmentUriFor(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Landroid/net/Uri; HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getContentTypeFor(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getExtrasFor(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/ThreadBodyUtil$ThreadBody;)Lorg/thoughtcrime/securesms/database/ThreadTable$Extra; HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getOrCreateThreadIdFor(Lorg/thoughtcrime/securesms/recipients/Recipient;)J HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getOrCreateThreadIdFor(Lorg/thoughtcrime/securesms/recipients/Recipient;I)J HSPLorg/thoughtcrime/securesms/database/ThreadTable;->getOrCreateThreadIdFor(Lorg/thoughtcrime/securesms/recipients/RecipientId;ZI)J @@ -30226,6 +30259,7 @@ HSPLorg/thoughtcrime/securesms/database/ThreadTable;->toQuery(Lorg/thoughtcrime/ HSPLorg/thoughtcrime/securesms/database/ThreadTable;->update$default(Lorg/thoughtcrime/securesms/database/ThreadTable;JZZILjava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/database/ThreadTable;->update(JZZ)Z HSPLorg/thoughtcrime/securesms/database/ThreadTable;->update(JZZZZ)Z +HSPLorg/thoughtcrime/securesms/database/ThreadTable;->updateThread(JZLjava/lang/String;Landroid/net/Uri;Ljava/lang/String;Lorg/thoughtcrime/securesms/database/ThreadTable$Extra;JIIJZJIIILorg/thoughtcrime/securesms/database/model/databaseprotos/MessageExtras;)V HSPLorg/thoughtcrime/securesms/database/UnknownStorageIdTable;->()V HSPLorg/thoughtcrime/securesms/database/UnknownStorageIdTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V HSPLorg/thoughtcrime/securesms/database/helpers/migration/V149_LegacyMigrations$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/NotificationManager;)Ljava/util/List; @@ -30853,7 +30887,6 @@ HSPLorg/thoughtcrime/securesms/emoji/EmojiFiles;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiFiles;->getBaseDirectory(Landroid/content/Context;)Ljava/io/File; HSPLorg/thoughtcrime/securesms/emoji/EmojiFiles;->getLatestEmojiData(Landroid/content/Context;Lorg/thoughtcrime/securesms/emoji/EmojiFiles$Version;)Lorg/thoughtcrime/securesms/emoji/ParsedEmojiData; HSPLorg/thoughtcrime/securesms/emoji/EmojiFiles;->getMd5(Landroid/content/Context;Lorg/thoughtcrime/securesms/emoji/EmojiFiles$Version;Ljava/util/UUID;)[B -HSPLorg/thoughtcrime/securesms/emoji/EmojiFiles;->openForReading(Landroid/content/Context;Ljava/lang/String;)Ljava/io/InputStream; HSPLorg/thoughtcrime/securesms/emoji/EmojiFiles;->openForWriting(Landroid/content/Context;Lorg/thoughtcrime/securesms/emoji/EmojiFiles$Version;Ljava/util/UUID;)Ljava/io/OutputStream; HSPLorg/thoughtcrime/securesms/emoji/EmojiFilesKt;->access$getEmojiDirectory(Landroid/content/Context;)Ljava/io/File; HSPLorg/thoughtcrime/securesms/emoji/EmojiFilesKt;->access$getFilesUri(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri; @@ -30892,9 +30925,9 @@ HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->access$createPage(Lorg/thoughtcrime/securesms/emoji/EmojiJsonParser;Ljava/lang/String;Ljava/lang/String;Lcom/fasterxml/jackson/databind/JsonNode;Lkotlin/jvm/functions/Function2;)Lorg/thoughtcrime/securesms/components/emoji/EmojiPageModel; HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->buildEmojiSourceFromNode(Lcom/fasterxml/jackson/databind/JsonNode;Lkotlin/jvm/functions/Function2;)Lorg/thoughtcrime/securesms/emoji/ParsedEmojiData; -HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->createPage(Ljava/lang/String;Ljava/lang/String;Lcom/fasterxml/jackson/databind/JsonNode;Lkotlin/jvm/functions/Function2;)Lorg/thoughtcrime/securesms/components/emoji/EmojiPageModel; HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->getDataPages$lambda$0(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Ljava/lang/Object;)I HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->getDataPages(Ljava/lang/String;Lcom/fasterxml/jackson/databind/JsonNode;Lkotlin/jvm/functions/Function2;)Ljava/util/List; +HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->getJumboPages(Lcom/fasterxml/jackson/databind/JsonNode;)Ljava/util/Map; HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->mergeToDisplayPages(Ljava/util/List;)Ljava/util/List; HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->parse-gIAlu-s(Ljava/io/InputStream;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParserKt;->access$asCategoryKey(Ljava/lang/String;)Ljava/lang/String; @@ -30917,12 +30950,12 @@ HSPLorg/thoughtcrime/securesms/emoji/EmojiMetrics;->(III)V HSPLorg/thoughtcrime/securesms/emoji/EmojiMetrics;->getPerRow()I HSPLorg/thoughtcrime/securesms/emoji/EmojiMetrics;->getRawHeight()I HSPLorg/thoughtcrime/securesms/emoji/EmojiMetrics;->getRawWidth()I -HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->()V -HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->(Landroid/net/Uri;)V -HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->equals(Ljava/lang/Object;)Z -HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->getUri()Landroid/net/Uri; -HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->hashCode()I -HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->toString()Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Asset;->()V +HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Asset;->(Landroid/net/Uri;)V +HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Asset;->equals(Ljava/lang/Object;)Z +HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Asset;->getUri()Landroid/net/Uri; +HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Asset;->hashCode()I +HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Asset;->toString()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/emoji/EmojiPage;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiPage;->(Landroid/net/Uri;)V HSPLorg/thoughtcrime/securesms/emoji/EmojiPage;->(Landroid/net/Uri;Lkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -30962,14 +30995,14 @@ HSPLorg/thoughtcrime/securesms/emoji/EmojiRemote;->getObject(Lorg/thoughtcrime/s HSPLorg/thoughtcrime/securesms/emoji/EmojiRemote;->getVersion()I HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadAssetBasedEmojis$1$1;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadAssetBasedEmojis$1$1;->()V +HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadAssetBasedEmojis$1$1;->invoke(Landroid/net/Uri;)Lorg/thoughtcrime/securesms/emoji/EmojiPage; +HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadAssetBasedEmojis$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadAssetBasedEmojis$1$parsedData$1;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadAssetBasedEmojis$1$parsedData$1;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadAssetBasedEmojis$1$parsedData$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadAssetBasedEmojis$1$parsedData$1;->invoke(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri; HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadRemoteBasedEmojis$1$1;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadRemoteBasedEmojis$1$1;->()V -HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadRemoteBasedEmojis$1$1;->invoke(Landroid/net/Uri;)Lorg/thoughtcrime/securesms/emoji/EmojiPage; -HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadRemoteBasedEmojis$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion;->getEmojiSource()Lorg/thoughtcrime/securesms/emoji/EmojiSource; @@ -31188,11 +31221,8 @@ HSPLorg/thoughtcrime/securesms/jobmanager/ConstraintInstantiator;->(Ljava/ HSPLorg/thoughtcrime/securesms/jobmanager/ConstraintInstantiator;->instantiate(Ljava/lang/String;)Lorg/thoughtcrime/securesms/jobmanager/Constraint; HSPLorg/thoughtcrime/securesms/jobmanager/CoroutineJob;->()V HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler$$ExternalSyntheticLambda0;->(Lorg/thoughtcrime/securesms/jobmanager/InAppScheduler;)V -HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler$$ExternalSyntheticLambda0;->run()V -HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler;->$r8$lambda$0KH5iNLdy2DvUxriNkEuWXyJtWM(Lorg/thoughtcrime/securesms/jobmanager/InAppScheduler;)V HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler;->()V HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler;->(Lorg/thoughtcrime/securesms/jobmanager/JobManager;)V -HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler;->lambda$schedule$0()V HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler;->schedule(JLjava/util/List;)V HSPLorg/thoughtcrime/securesms/jobmanager/Job$1;->()V HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder;->()V @@ -31239,6 +31269,7 @@ HSPLorg/thoughtcrime/securesms/jobmanager/Job$Result;->success([B)Lorg/thoughtcr HSPLorg/thoughtcrime/securesms/jobmanager/Job$Result;->toString()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/jobmanager/Job;->()V HSPLorg/thoughtcrime/securesms/jobmanager/Job;->(Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters;)V +HSPLorg/thoughtcrime/securesms/jobmanager/Job;->defaultBackoff()J HSPLorg/thoughtcrime/securesms/jobmanager/Job;->getId()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/jobmanager/Job;->getLastRunAttemptTime()J HSPLorg/thoughtcrime/securesms/jobmanager/Job;->getNextBackoffInterval()J @@ -31881,7 +31912,6 @@ HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->getJobSpec(Ljava/lang/Strin HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->getSingleLayerOfDependencySpecsThatDependOnJob(Ljava/lang/String;)Ljava/util/List; HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->hasEligibleRunTime(Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec;J)Z HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->init()V -HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->insertJobs(Ljava/util/List;)V HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->markJobAsRunning(Ljava/lang/String;J)V HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->placeJobInEligibleList$lambda$31$lambda$30(Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->placeJobInEligibleList(Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec;)V @@ -31988,9 +32018,16 @@ HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob$Companion;->enqueueIfNecessary()V HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob$Factory;->()V +HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob$Factory;->create(Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters;[B)Lorg/thoughtcrime/securesms/jobmanager/Job; +HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob$Factory;->create(Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters;[B)Lorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob; HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->()V -HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->access$getTAG$cp()Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->(Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters;)V +HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->(Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->(Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters;Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->enqueueIfNecessary()V +HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->getFactoryKey()Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->run()Lorg/thoughtcrime/securesms/jobmanager/Job$Result; +HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->serialize()[B HSPLorg/thoughtcrime/securesms/jobs/LocalArchiveJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/LocalArchiveJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/LocalBackupJob$Factory;->()V @@ -32477,6 +32514,7 @@ HSPLorg/thoughtcrime/securesms/keyvalue/MiscellaneousValues;->getLastForegroundT HSPLorg/thoughtcrime/securesms/keyvalue/MiscellaneousValues;->getLastKnownServerTimeOffset()J HSPLorg/thoughtcrime/securesms/keyvalue/MiscellaneousValues;->getLastWebSocketConnectTime()J HSPLorg/thoughtcrime/securesms/keyvalue/MiscellaneousValues;->getLeastActiveLinkedDevice()Lorg/thoughtcrime/securesms/keyvalue/protos/LeastActiveLinkedDevice; +HSPLorg/thoughtcrime/securesms/keyvalue/MiscellaneousValues;->getLinkedDeviceLastActiveCheckTime()J HSPLorg/thoughtcrime/securesms/keyvalue/MiscellaneousValues;->getNextDatabaseAnalysisTime()J HSPLorg/thoughtcrime/securesms/keyvalue/MiscellaneousValues;->getShouldShowLinkedDevicesReminder()Z HSPLorg/thoughtcrime/securesms/keyvalue/MiscellaneousValues;->isCdsBlocked()Z @@ -32595,7 +32633,6 @@ HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->phoneNumberPriva HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->proxy()Lorg/thoughtcrime/securesms/keyvalue/ProxyValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->rateLimit()Lorg/thoughtcrime/securesms/keyvalue/RateLimitValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->registration()Lorg/thoughtcrime/securesms/keyvalue/RegistrationValues; -HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->releaseChannel()Lorg/thoughtcrime/securesms/keyvalue/ReleaseChannelValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->settings()Lorg/thoughtcrime/securesms/keyvalue/SettingsValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->storageService()Lorg/thoughtcrime/securesms/keyvalue/StorageServiceValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->story()Lorg/thoughtcrime/securesms/keyvalue/StoryValues; @@ -32733,11 +32770,13 @@ HSPLorg/thoughtcrime/securesms/logging/PersistentLogger$LogRequests;->blockForRe HSPLorg/thoughtcrime/securesms/logging/PersistentLogger$LogRequests;->notifyFlushed()V HSPLorg/thoughtcrime/securesms/logging/PersistentLogger$WriteThread;->(Lorg/thoughtcrime/securesms/logging/PersistentLogger$LogRequests;Lorg/thoughtcrime/securesms/database/LogDatabase;)V HSPLorg/thoughtcrime/securesms/logging/PersistentLogger$WriteThread;->formatBody(Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/logging/PersistentLogger$WriteThread;->requestToEntries(Lorg/thoughtcrime/securesms/logging/PersistentLogger$LogRequest;)Ljava/util/List; HSPLorg/thoughtcrime/securesms/logging/PersistentLogger$WriteThread;->run()V HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->()V HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->(Landroid/app/Application;)V HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->d(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;Z)V HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->flush()V +HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->getThreadString()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;Z)V HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->v(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;Z)V HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;Z)V @@ -33189,7 +33228,6 @@ HSPLorg/thoughtcrime/securesms/mms/IncomingMessage;->isGroupMessage()Z HSPLorg/thoughtcrime/securesms/mms/IncomingMessage;->isUnidentified()Z HSPLorg/thoughtcrime/securesms/mms/IncomingMessage;->isViewOnce()Z HSPLorg/thoughtcrime/securesms/mms/PartAuthority;->()V -HSPLorg/thoughtcrime/securesms/mms/PartAuthority;->getEmojiFilename(Landroid/net/Uri;)Ljava/lang/String; HSPLorg/thoughtcrime/securesms/mms/PartAuthority;->getEmojiUri(Ljava/lang/String;)Landroid/net/Uri; HSPLorg/thoughtcrime/securesms/mms/SentMediaQuality;->$values()[Lorg/thoughtcrime/securesms/mms/SentMediaQuality; HSPLorg/thoughtcrime/securesms/mms/SentMediaQuality;->()V @@ -33218,7 +33256,6 @@ HSPLorg/thoughtcrime/securesms/mms/SlideDeck;->(Ljava/util/List;)V HSPLorg/thoughtcrime/securesms/mms/SlideDeck;->getAudioSlide()Lorg/thoughtcrime/securesms/mms/AudioSlide; HSPLorg/thoughtcrime/securesms/mms/SlideDeck;->getDocumentSlide()Lorg/thoughtcrime/securesms/mms/DocumentSlide; HSPLorg/thoughtcrime/securesms/mms/SlideDeck;->getSlides()Ljava/util/List; -HSPLorg/thoughtcrime/securesms/mms/SlideDeck;->getStickerSlide()Lorg/thoughtcrime/securesms/mms/StickerSlide; HSPLorg/thoughtcrime/securesms/mms/SlideDeck;->getThumbnailSlide()Lorg/thoughtcrime/securesms/mms/Slide; HSPLorg/thoughtcrime/securesms/net/ContentProxySafetyInterceptor;->()V HSPLorg/thoughtcrime/securesms/net/ContentProxySafetyInterceptor;->()V @@ -33398,7 +33435,6 @@ HSPLorg/thoughtcrime/securesms/profiles/AvatarHelper;->()V HSPLorg/thoughtcrime/securesms/profiles/AvatarHelper;->getAvatar(Landroid/content/Context;Lorg/thoughtcrime/securesms/recipients/RecipientId;)Ljava/io/InputStream; HSPLorg/thoughtcrime/securesms/profiles/AvatarHelper;->getAvatarDirectory(Landroid/content/Context;)Ljava/io/File; HSPLorg/thoughtcrime/securesms/profiles/AvatarHelper;->getAvatarFile(Landroid/content/Context;Lorg/thoughtcrime/securesms/recipients/RecipientId;)Ljava/io/File; -HSPLorg/thoughtcrime/securesms/profiles/AvatarHelper;->getAvatarFile(Landroid/content/Context;Lorg/thoughtcrime/securesms/recipients/RecipientId;Z)Ljava/io/File; HSPLorg/thoughtcrime/securesms/profiles/AvatarHelper;->getAvatarFileDetails(Landroid/content/Context;Lorg/thoughtcrime/securesms/recipients/RecipientId;)Lorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails; HSPLorg/thoughtcrime/securesms/profiles/AvatarHelper;->getOutputStream(Landroid/content/Context;Lorg/thoughtcrime/securesms/recipients/RecipientId;Z)Ljava/io/OutputStream; HSPLorg/thoughtcrime/securesms/profiles/AvatarHelper;->hasAvatar(Landroid/content/Context;Lorg/thoughtcrime/securesms/recipients/RecipientId;)Z @@ -33604,7 +33640,6 @@ HSPLorg/thoughtcrime/securesms/recipients/Recipient$messageRingtone$2;->(L HSPLorg/thoughtcrime/securesms/recipients/Recipient$shouldHideStory$1;->()V HSPLorg/thoughtcrime/securesms/recipients/Recipient$shouldHideStory$1;->()V HSPLorg/thoughtcrime/securesms/recipients/Recipient;->()V -HSPLorg/thoughtcrime/securesms/recipients/Recipient;->(Lorg/thoughtcrime/securesms/recipients/RecipientId;ZLorg/whispersystems/signalservice/api/push/ServiceId$ACI;Lorg/whispersystems/signalservice/api/push/ServiceId$PNI;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/thoughtcrime/securesms/groups/GroupId;Lorg/thoughtcrime/securesms/database/model/DistributionListId;Ljava/util/List;Lj$/util/Optional;ZZZJLorg/thoughtcrime/securesms/database/RecipientTable$VibrateState;Lorg/thoughtcrime/securesms/database/RecipientTable$VibrateState;Landroid/net/Uri;Landroid/net/Uri;IILorg/thoughtcrime/securesms/database/RecipientTable$RegisteredState;[BLorg/signal/libsignal/zkgroup/profiles/ExpiringProfileKeyCredential;Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/net/Uri;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;Lorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;ZLorg/thoughtcrime/securesms/recipients/Recipient$HiddenState;JLjava/lang/String;Lorg/thoughtcrime/securesms/database/RecipientTable$SealedSenderAccessMode;Lorg/thoughtcrime/securesms/database/model/RecipientRecord$Capabilities;[BLorg/thoughtcrime/securesms/database/RecipientTable$MentionSetting;Lorg/thoughtcrime/securesms/wallpaper/ChatWallpaper;Lorg/thoughtcrime/securesms/conversation/colors/ChatColors;Lorg/thoughtcrime/securesms/conversation/colors/AvatarColor;Ljava/lang/String;Ljava/lang/String;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;Lj$/util/Optional;ZLjava/util/List;ZZLorg/thoughtcrime/securesms/service/webrtc/links/CallLinkRoomId;Lj$/util/Optional;Lorg/thoughtcrime/securesms/database/RecipientTable$PhoneNumberSharingState;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;)V HSPLorg/thoughtcrime/securesms/recipients/Recipient;->(Lorg/thoughtcrime/securesms/recipients/RecipientId;ZLorg/whispersystems/signalservice/api/push/ServiceId$ACI;Lorg/whispersystems/signalservice/api/push/ServiceId$PNI;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/thoughtcrime/securesms/groups/GroupId;Lorg/thoughtcrime/securesms/database/model/DistributionListId;Ljava/util/List;Lj$/util/Optional;ZZZJLorg/thoughtcrime/securesms/database/RecipientTable$VibrateState;Lorg/thoughtcrime/securesms/database/RecipientTable$VibrateState;Landroid/net/Uri;Landroid/net/Uri;IILorg/thoughtcrime/securesms/database/RecipientTable$RegisteredState;[BLorg/signal/libsignal/zkgroup/profiles/ExpiringProfileKeyCredential;Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/net/Uri;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;Lorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;ZLorg/thoughtcrime/securesms/recipients/Recipient$HiddenState;JLjava/lang/String;Lorg/thoughtcrime/securesms/database/RecipientTable$SealedSenderAccessMode;Lorg/thoughtcrime/securesms/database/model/RecipientRecord$Capabilities;[BLorg/thoughtcrime/securesms/database/RecipientTable$MentionSetting;Lorg/thoughtcrime/securesms/wallpaper/ChatWallpaper;Lorg/thoughtcrime/securesms/conversation/colors/ChatColors;Lorg/thoughtcrime/securesms/conversation/colors/AvatarColor;Ljava/lang/String;Ljava/lang/String;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;Lj$/util/Optional;ZLjava/util/List;ZZLorg/thoughtcrime/securesms/service/webrtc/links/CallLinkRoomId;Lj$/util/Optional;Lorg/thoughtcrime/securesms/database/RecipientTable$PhoneNumberSharingState;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;IILkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/recipients/Recipient;->access$getTAG$cp()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/recipients/Recipient;->equals(Ljava/lang/Object;)Z @@ -33661,7 +33696,6 @@ HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator$create$2;->() HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator$create$2;->()V HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->()V HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->()V -HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->create(ZLjava/lang/String;Ljava/lang/String;ZLorg/thoughtcrime/securesms/database/RecipientTable$RegisteredState;Lorg/thoughtcrime/securesms/database/model/RecipientRecord;Ljava/util/List;ZLorg/thoughtcrime/securesms/conversation/colors/AvatarColor;Lj$/util/Optional;)Lorg/thoughtcrime/securesms/recipients/Recipient; HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->forId$default(Lorg/thoughtcrime/securesms/recipients/RecipientId;ZILjava/lang/Object;)Lorg/thoughtcrime/securesms/recipients/Recipient; HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->forId(Lorg/thoughtcrime/securesms/recipients/RecipientId;)Lorg/thoughtcrime/securesms/recipients/Recipient; HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->forId(Lorg/thoughtcrime/securesms/recipients/RecipientId;Z)Lorg/thoughtcrime/securesms/recipients/Recipient; @@ -33671,6 +33705,7 @@ HSPLorg/thoughtcrime/securesms/recipients/RecipientId$Serializer;->()V HSPLorg/thoughtcrime/securesms/recipients/RecipientId$Serializer;->(Lorg/thoughtcrime/securesms/recipients/RecipientId$Serializer-IA;)V HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->()V HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->(J)V +HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->equals(Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->from(J)Lorg/thoughtcrime/securesms/recipients/RecipientId; HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->from(Ljava/lang/String;)Lorg/thoughtcrime/securesms/recipients/RecipientId; HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->from(Lorg/whispersystems/signalservice/api/push/ServiceId;)Lorg/thoughtcrime/securesms/recipients/RecipientId; @@ -34255,7 +34290,6 @@ HSPLorg/thoughtcrime/securesms/util/MediaUtil;->isImageType(Ljava/lang/String;)Z HSPLorg/thoughtcrime/securesms/util/MediaUtil;->isVideo(Ljava/lang/String;)Z HSPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->hasGiftBadge(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z HSPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->hasSticker(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z -HSPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->isScheduled(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z HSPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->isStoryReaction(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z HSPLorg/thoughtcrime/securesms/util/NameUtil;->()V HSPLorg/thoughtcrime/securesms/util/NameUtil;->()V @@ -34372,6 +34406,7 @@ HSPLorg/thoughtcrime/securesms/util/RemoteConfig;->getGroupHardLimit()I HSPLorg/thoughtcrime/securesms/util/RemoteConfig;->getGroupRecommendedLimit()I HSPLorg/thoughtcrime/securesms/util/RemoteConfig;->getInitialized()Z HSPLorg/thoughtcrime/securesms/util/RemoteConfig;->getREMOTE_VALUES()Ljava/util/Map; +HSPLorg/thoughtcrime/securesms/util/RemoteConfig;->getShowChatFolders()Z HSPLorg/thoughtcrime/securesms/util/RemoteConfig;->groupLimits()Lorg/thoughtcrime/securesms/groups/SelectionLimits; HSPLorg/thoughtcrime/securesms/util/RemoteConfig;->init()V HSPLorg/thoughtcrime/securesms/util/RemoteConfig;->internalUser()Z @@ -34713,6 +34748,7 @@ HSPLorg/webrtc/PeerConnectionFactory;->initialize(Lorg/webrtc/PeerConnectionFact HSPLorg/webrtc/WebRtcClassLoader;->getClassLoader()Ljava/lang/Object; HSPLorg/whispersystems/signalservice/api/SignalServiceAccountManager;->()V HSPLorg/whispersystems/signalservice/api/SignalServiceAccountManager;->(Lorg/whispersystems/signalservice/internal/push/PushServiceSocket;Lorg/whispersystems/signalservice/api/groupsv2/GroupsV2Operations;)V +HSPLorg/whispersystems/signalservice/api/SignalServiceAccountManager;->getDevices()Ljava/util/List; HSPLorg/whispersystems/signalservice/api/SignalServiceAccountManager;->getPreKeyCounts(Lorg/whispersystems/signalservice/api/push/ServiceIdType;)Lorg/whispersystems/signalservice/internal/push/OneTimePreKeyCounts; HSPLorg/whispersystems/signalservice/api/SignalServiceAccountManager;->getSecureValueRecoveryV2(Ljava/lang/String;)Lorg/whispersystems/signalservice/api/svr/SecureValueRecoveryV2; HSPLorg/whispersystems/signalservice/api/SignalServiceAccountManager;->getSecureValueRecoveryV3(Lorg/signal/libsignal/net/Network;)Lorg/whispersystems/signalservice/api/svr/SecureValueRecoveryV3; @@ -34849,7 +34885,6 @@ HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->()V HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->fromLibSignal(Lorg/signal/libsignal/protocol/ServiceId;)Lorg/whispersystems/signalservice/api/push/ServiceId; HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->parseOrNull$default(Lorg/whispersystems/signalservice/api/push/ServiceId$Companion;Ljava/lang/String;ZILjava/lang/Object;)Lorg/whispersystems/signalservice/api/push/ServiceId; -HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->parseOrNull(Ljava/lang/String;Z)Lorg/whispersystems/signalservice/api/push/ServiceId; HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->parseOrThrow(Ljava/lang/String;)Lorg/whispersystems/signalservice/api/push/ServiceId; HSPLorg/whispersystems/signalservice/api/push/ServiceId$PNI$Companion;->()V HSPLorg/whispersystems/signalservice/api/push/ServiceId$PNI$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -35004,6 +35039,7 @@ HSPLorg/whispersystems/signalservice/internal/push/PushServiceSocket;->getAuthor HSPLorg/whispersystems/signalservice/internal/push/PushServiceSocket;->getAvailablePreKeys(Lorg/whispersystems/signalservice/api/push/ServiceIdType;)Lorg/whispersystems/signalservice/internal/push/OneTimePreKeyCounts; HSPLorg/whispersystems/signalservice/internal/push/PushServiceSocket;->getConfiguration()Lorg/whispersystems/signalservice/internal/configuration/SignalServiceConfiguration; HSPLorg/whispersystems/signalservice/internal/push/PushServiceSocket;->getCredentialsProvider()Lorg/whispersystems/signalservice/api/util/CredentialsProvider; +HSPLorg/whispersystems/signalservice/internal/push/PushServiceSocket;->getDevices()Ljava/util/List; HSPLorg/whispersystems/signalservice/internal/push/PushServiceSocket;->getRandom([Lorg/whispersystems/signalservice/internal/push/PushServiceSocket$ConnectionHolder;Ljava/security/SecureRandom;)Lorg/whispersystems/signalservice/internal/push/PushServiceSocket$ConnectionHolder; HSPLorg/whispersystems/signalservice/internal/push/PushServiceSocket;->getSenderCertificate()[B HSPLorg/whispersystems/signalservice/internal/push/PushServiceSocket;->getServiceConnection(Ljava/lang/String;Ljava/lang/String;Lokhttp3/RequestBody;Ljava/util/Map;Lorg/whispersystems/signalservice/api/crypto/SealedSenderAccess;Z)Lokhttp3/Response; @@ -37211,6 +37247,7 @@ Landroidx/core/view/animation/PathInterpolatorCompat; Landroidx/core/widget/ImageViewCompat$Api21Impl; Landroidx/core/widget/ImageViewCompat; Landroidx/core/widget/NestedScrollView$OnScrollChangeListener; +Landroidx/core/widget/TextViewCompat$Api23Impl; Landroidx/core/widget/TextViewCompat; Landroidx/core/widget/TextViewOnReceiveContentListener; Landroidx/core/widget/TintableCompoundButton; @@ -38307,8 +38344,6 @@ Lcom/airbnb/lottie/parser/ShapeFillParser; Lcom/airbnb/lottie/parser/ShapeGroupParser; Lcom/airbnb/lottie/parser/ShapePathParser; Lcom/airbnb/lottie/parser/ValueParser; -Lcom/airbnb/lottie/parser/moshi/JsonDataException; -Lcom/airbnb/lottie/parser/moshi/JsonEncodingException; Lcom/airbnb/lottie/parser/moshi/JsonReader$Options; Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; Lcom/airbnb/lottie/parser/moshi/JsonReader; @@ -41990,7 +42025,6 @@ Lokhttp3/internal/platform/android/ConscryptSocketAdapter; Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; Lokhttp3/internal/platform/android/DeferredSocketAdapter; Lokhttp3/internal/platform/android/SocketAdapter; -Lokhttp3/internal/proxy/NullProxySelector; Lokhttp3/internal/tls/BasicCertificateChainCleaner$Companion; Lokhttp3/internal/tls/BasicCertificateChainCleaner; Lokhttp3/internal/tls/BasicTrustRootIndex; @@ -41998,7 +42032,6 @@ Lokhttp3/internal/tls/CertificateChainCleaner$Companion; Lokhttp3/internal/tls/CertificateChainCleaner; Lokhttp3/internal/tls/OkHostnameVerifier; Lokhttp3/internal/tls/TrustRootIndex; -Lokhttp3/internal/ws/RealWebSocket$Close; Lokhttp3/internal/ws/RealWebSocket$Companion; Lokhttp3/internal/ws/RealWebSocket$connect$1; Lokhttp3/internal/ws/RealWebSocket; @@ -43514,7 +43547,6 @@ Lorg/thoughtcrime/securesms/emoji/EmojiJsonParserKt; Lorg/thoughtcrime/securesms/emoji/EmojiJsonRequest; Lorg/thoughtcrime/securesms/emoji/EmojiMetrics; Lorg/thoughtcrime/securesms/emoji/EmojiPage$Asset; -Lorg/thoughtcrime/securesms/emoji/EmojiPage$Disk; Lorg/thoughtcrime/securesms/emoji/EmojiPage; Lorg/thoughtcrime/securesms/emoji/EmojiPageCache$$ExternalSyntheticLambda0; Lorg/thoughtcrime/securesms/emoji/EmojiPageCache$$ExternalSyntheticLambda1; @@ -43539,7 +43571,6 @@ Lorg/thoughtcrime/securesms/emoji/EmojiSourceKt; Lorg/thoughtcrime/securesms/emoji/JumboEmoji$$ExternalSyntheticLambda0; Lorg/thoughtcrime/securesms/emoji/JumboEmoji$$ExternalSyntheticLambda4; Lorg/thoughtcrime/securesms/emoji/JumboEmoji; -Lorg/thoughtcrime/securesms/emoji/ObsoleteEmoji; Lorg/thoughtcrime/securesms/emoji/ParsedEmojiData; Lorg/thoughtcrime/securesms/events/WebRtcViewModel; Lorg/thoughtcrime/securesms/fonts/FontFileMap$Companion; @@ -45130,6 +45161,7 @@ PLandroidx/compose/ui/platform/AndroidComposeViewTranslationCallbackS;->clearVie PLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2$1$invoke$$inlined$onDispose$1;->dispose()V PLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1$1$invoke$$inlined$onDispose$1;->dispose()V PLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainResourceIdCache$1$1$invoke$$inlined$onDispose$1;->dispose()V +PLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$setScheduledFrameDispatch$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;Z)V PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry;->dispose()V PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$$ExternalSyntheticLambda0;->saveState()Landroid/os/Bundle; PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$1;->invoke()Ljava/lang/Object; @@ -45173,8 +45205,6 @@ PLandroidx/constraintlayout/core/widgets/ConstraintAnchor;->hasCenteredDependent PLandroidx/constraintlayout/core/widgets/ConstraintWidget;->getVerticalMargin()I PLandroidx/constraintlayout/core/widgets/ConstraintWidget;->setFinalLeft(I)V PLandroidx/constraintlayout/core/widgets/ConstraintWidget;->setVerticalDimension(II)V -PLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->addHorizontalWrapMaxVariable(Landroidx/constraintlayout/core/widgets/ConstraintAnchor;)V -PLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->addHorizontalWrapMinVariable(Landroidx/constraintlayout/core/widgets/ConstraintAnchor;)V PLandroidx/constraintlayout/core/widgets/Guideline$1;->()V PLandroidx/constraintlayout/core/widgets/Guideline;->()V PLandroidx/constraintlayout/core/widgets/Guideline;->getOrientation()I @@ -45253,7 +45283,7 @@ PLandroidx/core/view/NestedScrollingParentHelper;->onNestedScrollAccepted(Landro PLandroidx/core/view/NestedScrollingParentHelper;->onStopNestedScroll(Landroid/view/View;I)V PLandroidx/core/view/SoftwareKeyboardControllerCompat$Impl30$$ExternalSyntheticApiModelOutline3;->m()I PLandroidx/core/view/TreeIterator;->(Ljava/util/Iterator;Lkotlin/jvm/functions/Function1;)V -PLandroidx/core/view/TreeIterator;->prepareNextIterator(Ljava/lang/Object;)V +PLandroidx/core/view/TreeIterator;->next()Ljava/lang/Object; PLandroidx/core/view/ViewCompat$Api20Impl;->dispatchApplyWindowInsets(Landroid/view/View;Landroid/view/WindowInsets;)Landroid/view/WindowInsets; PLandroidx/core/view/ViewCompat$Api20Impl;->onApplyWindowInsets(Landroid/view/View;Landroid/view/WindowInsets;)Landroid/view/WindowInsets; PLandroidx/core/view/ViewCompat$Api21Impl$1;->onApplyWindowInsets(Landroid/view/View;Landroid/view/WindowInsets;)Landroid/view/WindowInsets; @@ -45661,7 +45691,6 @@ PLandroidx/recyclerview/widget/AsyncDifferConfig;->getDiffCallback()Landroidx/re PLandroidx/recyclerview/widget/AsyncListDiffer$1$1;->areContentsTheSame(II)Z PLandroidx/recyclerview/widget/AsyncListDiffer$1$1;->areItemsTheSame(II)Z PLandroidx/recyclerview/widget/AsyncListDiffer$1$1;->getChangePayload(II)Ljava/lang/Object; -PLandroidx/recyclerview/widget/BatchingListUpdateCallback;->onChanged(IILjava/lang/Object;)V PLandroidx/recyclerview/widget/ChildHelper;->removeViewAt(I)V PLandroidx/recyclerview/widget/ConcatAdapter$Config$StableIdMode;->()V PLandroidx/recyclerview/widget/ConcatAdapter$Config$StableIdMode;->(Ljava/lang/String;I)V @@ -45713,6 +45742,7 @@ PLandroidx/recyclerview/widget/DiffUtil$Snake;->()V PLandroidx/recyclerview/widget/DiffUtil$Snake;->diagonalSize()I PLandroidx/recyclerview/widget/DiffUtil$Snake;->hasAdditionOrRemoval()Z PLandroidx/recyclerview/widget/DiffUtil$Snake;->toDiagonal()Landroidx/recyclerview/widget/DiffUtil$Diagonal; +PLandroidx/recyclerview/widget/DiffUtil;->backward(Landroidx/recyclerview/widget/DiffUtil$Range;Landroidx/recyclerview/widget/DiffUtil$Callback;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;I)Landroidx/recyclerview/widget/DiffUtil$Snake; PLandroidx/recyclerview/widget/DiffUtil;->forward(Landroidx/recyclerview/widget/DiffUtil$Range;Landroidx/recyclerview/widget/DiffUtil$Callback;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;I)Landroidx/recyclerview/widget/DiffUtil$Snake; PLandroidx/recyclerview/widget/GapWorker$LayoutPrefetchRegistryImpl;->lastPrefetchIncludedPosition(I)Z PLandroidx/recyclerview/widget/GapWorker;->remove(Landroidx/recyclerview/widget/RecyclerView;)V @@ -45729,6 +45759,9 @@ PLandroidx/recyclerview/widget/LinearLayoutManager$SavedState;->()V PLandroidx/recyclerview/widget/LinearLayoutManager$SavedState;->()V PLandroidx/recyclerview/widget/LinearLayoutManager$SavedState;->invalidateAnchor()V PLandroidx/recyclerview/widget/LinearLayoutManager$SavedState;->writeToParcel(Landroid/os/Parcel;I)V +PLandroidx/recyclerview/widget/LinearLayoutManager;->computeHorizontalScrollExtent(Landroidx/recyclerview/widget/RecyclerView$State;)I +PLandroidx/recyclerview/widget/LinearLayoutManager;->computeHorizontalScrollOffset(Landroidx/recyclerview/widget/RecyclerView$State;)I +PLandroidx/recyclerview/widget/LinearLayoutManager;->computeHorizontalScrollRange(Landroidx/recyclerview/widget/RecyclerView$State;)I PLandroidx/recyclerview/widget/LinearLayoutManager;->getChildClosestToEnd()Landroid/view/View; PLandroidx/recyclerview/widget/LinearLayoutManager;->getChildClosestToStart()Landroid/view/View; PLandroidx/recyclerview/widget/LinearLayoutManager;->onDetachedFromWindow(Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$Recycler;)V @@ -45740,6 +45773,7 @@ PLandroidx/recyclerview/widget/NestedAdapterWrapper$1;->onItemRangeInserted(II)V PLandroidx/recyclerview/widget/NestedAdapterWrapper;->(Landroidx/recyclerview/widget/RecyclerView$Adapter;Landroidx/recyclerview/widget/NestedAdapterWrapper$Callback;Landroidx/recyclerview/widget/ViewTypeStorage;Landroidx/recyclerview/widget/StableIdStorage$StableIdLookup;)V PLandroidx/recyclerview/widget/NestedAdapterWrapper;->onBindViewHolder(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;I)V PLandroidx/recyclerview/widget/NestedAdapterWrapper;->onCreateViewHolder(Landroid/view/ViewGroup;I)Landroidx/recyclerview/widget/RecyclerView$ViewHolder; +PLandroidx/recyclerview/widget/OrientationHelper$1;->getDecoratedEnd(Landroid/view/View;)I PLandroidx/recyclerview/widget/OrientationHelper$1;->getDecoratedStart(Landroid/view/View;)I PLandroidx/recyclerview/widget/OrientationHelper;->getTotalSpaceChange()I PLandroidx/recyclerview/widget/RecyclerView$5;->removeViewAt(I)V @@ -45755,11 +45789,18 @@ PLandroidx/recyclerview/widget/RecyclerView$ItemAnimator;->canReuseUpdatedViewHo PLandroidx/recyclerview/widget/RecyclerView$ItemAnimator;->canReuseUpdatedViewHolder(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Ljava/util/List;)Z PLandroidx/recyclerview/widget/RecyclerView$ItemAnimator;->recordPreLayoutInformation(Landroidx/recyclerview/widget/RecyclerView$State;Landroidx/recyclerview/widget/RecyclerView$ViewHolder;ILjava/util/List;)Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo; PLandroidx/recyclerview/widget/RecyclerView$ItemDecoration;->onDraw(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;)V +PLandroidx/recyclerview/widget/RecyclerView$LayoutManager$1;->getChildAt(I)Landroid/view/View; +PLandroidx/recyclerview/widget/RecyclerView$LayoutManager$1;->getChildEnd(Landroid/view/View;)I +PLandroidx/recyclerview/widget/RecyclerView$LayoutManager$1;->getChildStart(Landroid/view/View;)I +PLandroidx/recyclerview/widget/RecyclerView$LayoutManager$1;->getParentEnd()I +PLandroidx/recyclerview/widget/RecyclerView$LayoutManager$1;->getParentStart()I PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->dispatchDetachedFromWindow(Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$Recycler;)V PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroidx/recyclerview/widget/RecyclerView$LayoutParams; PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getDecoratedLeft(Landroid/view/View;)I +PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getDecoratedRight(Landroid/view/View;)I PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getItemCount()I PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getLeftDecorationWidth(Landroid/view/View;)I +PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getRightDecorationWidth(Landroid/view/View;)I PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onAddFocusables(Landroidx/recyclerview/widget/RecyclerView;Ljava/util/ArrayList;II)Z PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onDetachedFromWindow(Landroidx/recyclerview/widget/RecyclerView;)V PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onDetachedFromWindow(Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$Recycler;)V @@ -45791,13 +45832,13 @@ PLandroidx/recyclerview/widget/RecyclerView$SimpleOnItemTouchListener;->() PLandroidx/recyclerview/widget/RecyclerView$ViewHolder;->addChangePayload(Ljava/lang/Object;)V PLandroidx/recyclerview/widget/RecyclerView$ViewHolder;->doesTransientStatePreventRecycling()Z PLandroidx/recyclerview/widget/RecyclerView$ViewHolder;->getAbsoluteAdapterPosition()I +PLandroidx/recyclerview/widget/RecyclerView$ViewHolder;->getAdapterPosition()I PLandroidx/recyclerview/widget/RecyclerView$ViewHolder;->getOldPosition()I PLandroidx/recyclerview/widget/RecyclerView$ViewHolder;->isRecyclable()Z PLandroidx/recyclerview/widget/RecyclerView$ViewHolder;->resetInternal()V PLandroidx/recyclerview/widget/RecyclerView;->access$300(Landroidx/recyclerview/widget/RecyclerView;Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V PLandroidx/recyclerview/widget/RecyclerView;->access$400(Landroidx/recyclerview/widget/RecyclerView;Landroid/view/View;)V PLandroidx/recyclerview/widget/RecyclerView;->addFocusables(Ljava/util/ArrayList;II)V -PLandroidx/recyclerview/widget/RecyclerView;->animateChange(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo;Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo;ZZ)V PLandroidx/recyclerview/widget/RecyclerView;->canReuseUpdatedViewHolder(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Z PLandroidx/recyclerview/widget/RecyclerView;->clearNestedRecyclerViewIfNotNested(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)V PLandroidx/recyclerview/widget/RecyclerView;->dispatchChildDetached(Landroid/view/View;)V @@ -45817,7 +45858,6 @@ PLandroidx/recyclerview/widget/RecyclerView;->startNestedScroll(II)Z PLandroidx/recyclerview/widget/RecyclerView;->stopGlowAnimations(Landroid/view/MotionEvent;)Z PLandroidx/recyclerview/widget/RecyclerView;->stopNestedScroll()V PLandroidx/recyclerview/widget/RecyclerView;->stopNestedScroll(I)V -PLandroidx/recyclerview/widget/RecyclerView;->viewRangeUpdate(IILjava/lang/Object;)V PLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->dispatchPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z PLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->getAndRemoveOriginalDelegateForItem(Landroid/view/View;)Landroidx/core/view/AccessibilityDelegateCompat; PLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->onInitializeAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V @@ -45829,7 +45869,6 @@ PLandroidx/recyclerview/widget/StableIdStorage$NoStableIdStorage;->()V PLandroidx/recyclerview/widget/StableIdStorage$NoStableIdStorage;->createStableIdLookup()Landroidx/recyclerview/widget/StableIdStorage$StableIdLookup; PLandroidx/recyclerview/widget/ViewInfoStore$InfoRecord;->drainCache()V PLandroidx/recyclerview/widget/ViewInfoStore;->addToOldChangeHolders(JLandroidx/recyclerview/widget/RecyclerView$ViewHolder;)V -PLandroidx/recyclerview/widget/ViewInfoStore;->isDisappearing(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Z PLandroidx/recyclerview/widget/ViewInfoStore;->onDetach()V PLandroidx/recyclerview/widget/ViewInfoStore;->popFromPostLayout(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo; PLandroidx/recyclerview/widget/ViewInfoStore;->popFromPreLayout(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo; @@ -45977,6 +46016,7 @@ PLcom/google/android/material/button/MaterialButton;->resetIconDrawable()V PLcom/google/android/material/button/MaterialButton;->setElevation(F)V PLcom/google/android/material/button/MaterialButtonHelper;->isBackgroundOverwritten()Z PLcom/google/android/material/button/MaterialButtonHelper;->isCheckable()Z +PLcom/google/android/material/card/MaterialCardView;->onInitializeAccessibilityNodeInfo(Landroid/view/accessibility/AccessibilityNodeInfo;)V PLcom/google/android/material/expandable/ExpandableWidgetHelper;->onSaveInstanceState()Landroid/os/Bundle; PLcom/google/android/material/floatingactionbutton/FloatingActionButton;->onDetachedFromWindow()V PLcom/google/android/material/floatingactionbutton/FloatingActionButton;->onSaveInstanceState()Landroid/os/Parcelable; @@ -46254,7 +46294,6 @@ PLio/reactivex/rxjava3/internal/operators/observable/ObservableElementAtSingle$E PLio/reactivex/rxjava3/internal/operators/observable/ObservableElementAtSingle$ElementAtObserver;->onSubscribe(Lio/reactivex/rxjava3/disposables/Disposable;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableElementAtSingle;->(Lio/reactivex/rxjava3/core/ObservableSource;JLjava/lang/Object;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableElementAtSingle;->subscribeActual(Lio/reactivex/rxjava3/core/SingleObserver;)V -PLio/reactivex/rxjava3/internal/operators/observable/ObservableFilter$FilterObserver;->onNext(Ljava/lang/Object;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapMaybe$FlatMapMaybeObserver$InnerObserver;->(Lio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapMaybe$FlatMapMaybeObserver;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapMaybe$FlatMapMaybeObserver$InnerObserver;->onComplete()V PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapMaybe$FlatMapMaybeObserver$InnerObserver;->onSubscribe(Lio/reactivex/rxjava3/disposables/Disposable;)V @@ -46296,7 +46335,6 @@ PLio/reactivex/rxjava3/internal/operators/observable/ObservableMap$MapObserver;- PLio/reactivex/rxjava3/internal/operators/observable/ObservableMap;->(Lio/reactivex/rxjava3/core/ObservableSource;Lio/reactivex/rxjava3/functions/Function;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableMap;->subscribeActual(Lio/reactivex/rxjava3/core/Observer;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableObserveOn$ObserveOnObserver;->clear()V -PLio/reactivex/rxjava3/internal/operators/observable/ObservableObserveOn$ObserveOnObserver;->drainFused()V PLio/reactivex/rxjava3/internal/operators/observable/ObservableObserveOn$ObserveOnObserver;->isEmpty()Z PLio/reactivex/rxjava3/internal/operators/observable/ObservableObserveOn$ObserveOnObserver;->poll()Ljava/lang/Object; PLio/reactivex/rxjava3/internal/operators/observable/ObservableObserveOn$ObserveOnObserver;->requestFusion(I)I @@ -46395,9 +46433,13 @@ PLio/reactivex/rxjava3/internal/operators/single/SingleObserveOn;->(Lio/re PLio/reactivex/rxjava3/internal/operators/single/SingleObserveOn;->subscribeActual(Lio/reactivex/rxjava3/core/SingleObserver;)V PLio/reactivex/rxjava3/internal/operators/single/SingleOnErrorComplete;->(Lio/reactivex/rxjava3/core/Single;Lio/reactivex/rxjava3/functions/Predicate;)V PLio/reactivex/rxjava3/internal/operators/single/SingleOnErrorComplete;->subscribeActual(Lio/reactivex/rxjava3/core/MaybeObserver;)V +PLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->isEmpty()Z +PLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->lvConsumerNode()Lio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode; PLio/reactivex/rxjava3/internal/queue/SpscArrayQueue;->clear()V PLio/reactivex/rxjava3/internal/queue/SpscArrayQueue;->isEmpty()Z +PLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->cancelFuture(Ljava/util/concurrent/Future;)V PLio/reactivex/rxjava3/internal/schedulers/DisposeOnCancel;->cancel(Z)Z +PLio/reactivex/rxjava3/internal/schedulers/ScheduledRunnable;->dispose()V PLio/reactivex/rxjava3/internal/subscribers/BasicFuseableConditionalSubscriber;->cancel()V PLio/reactivex/rxjava3/internal/subscribers/BasicFuseableSubscriber;->cancel()V PLio/reactivex/rxjava3/internal/subscribers/LambdaSubscriber;->cancel()V @@ -46462,6 +46504,7 @@ PLj$/util/Optional;->ifPresent(Lj$/util/function/Consumer;)V PLj$/util/S;->r(Lj$/util/function/Consumer;)Z PLj$/util/concurrent/ConcurrentHashMap;->h(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; PLj$/util/concurrent/ConcurrentHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +PLj$/util/concurrent/q;->f(ILjava/lang/Object;Ljava/lang/Object;)Lj$/util/concurrent/r; PLj$/util/d;->a(Ljava/util/Set;Ljava/lang/Object;)Ljava/util/Set; PLj$/util/d;->keySet()Ljava/util/Set; PLj$/util/function/b;->(Ljava/util/Comparator;I)V @@ -46578,7 +46621,6 @@ PLkotlinx/coroutines/channels/BufferedChannel;->markClosed()V PLkotlinx/coroutines/channels/BufferedChannel;->onClosedIdempotent()V PLkotlinx/coroutines/channels/BufferedChannel;->receiveCatching-JP2dKIU$suspendImpl(Lkotlinx/coroutines/channels/BufferedChannel;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; PLkotlinx/coroutines/channels/BufferedChannel;->receiveCatching-JP2dKIU(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -PLkotlinx/coroutines/channels/BufferedChannel;->receiveCatchingOnNoWaiterSuspend-GKJJFZk(Lkotlinx/coroutines/channels/ChannelSegment;IJLkotlin/coroutines/Continuation;)Ljava/lang/Object; PLkotlinx/coroutines/channels/BufferedChannel;->tryReceive-PtdJZtk()Ljava/lang/Object; PLkotlinx/coroutines/channels/BufferedChannel;->waitExpandBufferCompletion$kotlinx_coroutines_core(J)V PLkotlinx/coroutines/channels/BufferedChannelKt;->access$constructSendersAndCloseStatus(JI)J @@ -46663,7 +46705,6 @@ PLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2;->([Lkotlin PLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; PLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; PLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -PLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; PLkotlinx/coroutines/flow/internal/CombineKt;->combineInternal(Lkotlinx/coroutines/flow/FlowCollector;[Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; PLkotlinx/coroutines/flow/internal/FlowCoroutine;->(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V PLkotlinx/coroutines/flow/internal/FlowCoroutine;->childCancelled(Ljava/lang/Throwable;)Z @@ -46695,7 +46736,6 @@ PLkotlinx/coroutines/rx3/RxConvertKt$asFlow$1;->invokeSuspend$lambda$0(Ljava/uti PLkotlinx/coroutines/rx3/RxConvertKt$asFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; PLkotlinx/coroutines/rx3/RxConvertKt;->asFlow(Lio/reactivex/rxjava3/core/ObservableSource;)Lkotlinx/coroutines/flow/Flow; PLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->access$getThis$0$p(Lkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;)Lkotlinx/coroutines/scheduling/CoroutineScheduler; -PLkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;->findBlockingTask()Lkotlinx/coroutines/scheduling/Task; PLkotlinx/coroutines/scheduling/DefaultIoScheduler;->dispatchYield(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V PLkotlinx/coroutines/scheduling/UnlimitedIoScheduler;->dispatchYield(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V PLkotlinx/coroutines/scheduling/WorkQueue;->add(Lkotlinx/coroutines/scheduling/Task;Z)Lkotlinx/coroutines/scheduling/Task; @@ -46704,9 +46744,6 @@ PLkotlinx/coroutines/scheduling/WorkQueue;->decrementIfBlocking(Lkotlinx/corouti PLkotlinx/coroutines/scheduling/WorkQueue;->getBlockingTasksInBuffer$volatile$FU()Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; PLkotlinx/coroutines/scheduling/WorkQueue;->getBufferSize()I PLkotlinx/coroutines/scheduling/WorkQueue;->poll()Lkotlinx/coroutines/scheduling/Task; -PLkotlinx/coroutines/scheduling/WorkQueue;->pollBlocking()Lkotlinx/coroutines/scheduling/Task; -PLkotlinx/coroutines/scheduling/WorkQueue;->pollWithExclusiveMode(Z)Lkotlinx/coroutines/scheduling/Task; -PLkotlinx/coroutines/scheduling/WorkQueue;->stealWithExclusiveMode(I)Lkotlinx/coroutines/scheduling/Task; PLme/leolin/shortcutbadger/ShortcutBadgeException;->(Ljava/lang/String;)V PLme/leolin/shortcutbadger/ShortcutBadgeException;->(Ljava/lang/String;Ljava/lang/Exception;)V PLme/leolin/shortcutbadger/ShortcutBadger;->()V @@ -46778,9 +46815,9 @@ PLorg/signal/core/util/SqlUtil;->buildCustomCollectionQuery$lambda$11(Lkotlin/jv PLorg/signal/core/util/SqlUtil;->buildCustomCollectionQuery(Ljava/lang/String;Ljava/util/List;)Ljava/util/List; PLorg/signal/core/util/SqlUtil;->buildCustomCollectionQuery(Ljava/lang/String;Ljava/util/List;I)Ljava/util/List; PLorg/signal/core/util/SqlUtil;->buildSingleCollectionQuery$default(Ljava/lang/String;Ljava/util/Collection;Ljava/lang/String;Lorg/signal/core/util/SqlUtil$CollectionOperator;ILjava/lang/Object;)Lorg/signal/core/util/SqlUtil$Query; +PLorg/signal/core/util/SqlUtil;->buildSingleCollectionQuery(Ljava/lang/String;Ljava/util/Collection;Ljava/lang/String;Lorg/signal/core/util/SqlUtil$CollectionOperator;)Lorg/signal/core/util/SqlUtil$Query; PLorg/signal/core/util/SqlUtil;->buildSingleCustomCollectionQuery(Ljava/lang/String;Ljava/util/List;)Lorg/signal/core/util/SqlUtil$Query; PLorg/signal/core/util/StringUtil;->trim(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; -PLorg/signal/core/util/ToolbarExtensionsKt;->setActionItemTint(Landroidx/appcompat/widget/Toolbar;I)V PLorg/signal/core/util/concurrent/DeadlockDetector$$ExternalSyntheticLambda0;->run()V PLorg/signal/core/util/concurrent/DeadlockDetector$Companion;->access$isExecutorFull(Lorg/signal/core/util/concurrent/DeadlockDetector$Companion;Ljava/util/concurrent/ExecutorService;)Z PLorg/signal/core/util/concurrent/DeadlockDetector$Companion;->isExecutorFull(Ljava/util/concurrent/ExecutorService;)Z @@ -46803,7 +46840,6 @@ PLorg/signal/core/util/concurrent/RxExtensions$subscribeWithSubject$2;->(L PLorg/signal/core/util/concurrent/RxExtensions$subscribeWithSubject$3;->(Ljava/lang/Object;)V PLorg/signal/core/util/concurrent/RxExtensions;->subscribeWithSubject(Lio/reactivex/rxjava3/core/Observable;Lio/reactivex/rxjava3/subjects/Subject;Lio/reactivex/rxjava3/disposables/CompositeDisposable;)Lio/reactivex/rxjava3/subjects/Subject; PLorg/signal/core/util/concurrent/SettableFuture;->set(Ljava/lang/Object;)Z -PLorg/signal/core/util/concurrent/SignalExecutors;->$r8$lambda$PuKeoHyTOgRHxCNNBi9u3dUls_w(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V PLorg/signal/core/util/logging/Log$Logger;->i(Ljava/lang/String;Ljava/lang/String;)V PLorg/signal/core/util/logging/Log$Logger;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V PLorg/signal/core/util/logging/Log;->internal()Lorg/signal/core/util/logging/Log$Logger; @@ -46847,7 +46883,6 @@ PLorg/thoughtcrime/securesms/attachments/Attachment;->isPermanentlyFailed()Z PLorg/thoughtcrime/securesms/attachments/AttachmentId;->hashCode()I PLorg/thoughtcrime/securesms/attachments/AttachmentId;->serialize()Ljava/lang/String; PLorg/thoughtcrime/securesms/attachments/DatabaseAttachment;->getThumbnailUri()Landroid/net/Uri; -PLorg/thoughtcrime/securesms/attachments/DatabaseAttachment;->hashCode()I PLorg/thoughtcrime/securesms/audio/AudioRecorder$$ExternalSyntheticLambda2;->(Lorg/thoughtcrime/securesms/audio/AudioRecorder;)V PLorg/thoughtcrime/securesms/audio/AudioRecorder;->()V PLorg/thoughtcrime/securesms/audio/AudioRecorder;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/audio/AudioRecordingHandler;)V @@ -46866,9 +46901,9 @@ PLorg/thoughtcrime/securesms/avatar/view/AvatarView;->hideStoryRing()V PLorg/thoughtcrime/securesms/avatar/view/AvatarView;->setStoryRingFromState(Lorg/thoughtcrime/securesms/database/model/StoryViewState;)V PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$Companion;->()V PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V +PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$2;->(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)V PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->()V PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->(Landroid/content/Context;)V -PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->access$getAnimationState$p(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)Ljava/util/Map; PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->access$getMessageIdsOpenedThisSession$p(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)Ljava/util/Set; PLorg/thoughtcrime/securesms/banner/banners/BubbleOptOutBanner;->()V PLorg/thoughtcrime/securesms/banner/banners/BubbleOptOutBanner;->(ZLkotlin/jvm/functions/Function1;)V @@ -46957,7 +46992,6 @@ PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->lambda$init$0(L PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->notifyTouchDelegateChanged(Landroid/graphics/Rect;Landroid/view/View;)V PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->onDetachedFromWindow()V PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentAudioDuration(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)V -PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentDate(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Ljava/util/Locale;Lorg/thoughtcrime/securesms/conversation/ConversationItemDisplayMode;)V PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentInsecureIndicator(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)V PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentSimInfo(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)V PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentTimer(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)V @@ -46980,7 +47014,6 @@ PLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$Thumbnail PLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$ThumbnailViewState;->(FZZLorg/thoughtcrime/securesms/mms/SlideClickListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlideClickListener;Landroid/view/View$OnLongClickListener;IIIIIIIIIILkotlin/jvm/internal/DefaultConstructorMarker;)V PLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState;->()V PLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState;->(Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$ThumbnailViewState;Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState;ILkotlin/jvm/internal/DefaultConstructorMarker;)V -PLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState;->getAlbumViewState()Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState; PLorg/thoughtcrime/securesms/components/ConversationScrollToView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V PLorg/thoughtcrime/securesms/components/ConversationScrollToView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V PLorg/thoughtcrime/securesms/components/ConversationScrollToView;->formatUnreadCount(I)Ljava/lang/CharSequence; @@ -47130,7 +47163,6 @@ PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->()V PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->(Landroidx/recyclerview/widget/RecyclerView;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->(Landroidx/recyclerview/widget/RecyclerView;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->(Landroidx/recyclerview/widget/RecyclerView;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lio/reactivex/rxjava3/disposables/CompositeDisposable;)V -PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->isListCommitted()Z PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->notifyListCommitted()V PLorg/thoughtcrime/securesms/components/SearchView;->(Landroid/content/Context;)V PLorg/thoughtcrime/securesms/components/SearchView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V @@ -47151,7 +47183,6 @@ PLorg/thoughtcrime/securesms/components/ThumbnailView$ThumbnailClickDispatcher;- PLorg/thoughtcrime/securesms/components/ThumbnailView$ThumbnailClickDispatcher;->(Lorg/thoughtcrime/securesms/components/ThumbnailView;Lorg/thoughtcrime/securesms/components/ThumbnailView$ThumbnailClickDispatcher-IA;)V PLorg/thoughtcrime/securesms/components/ThumbnailView;->()V PLorg/thoughtcrime/securesms/components/ThumbnailView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V -PLorg/thoughtcrime/securesms/components/ThumbnailView;->dispatchDraw(Landroid/graphics/Canvas;)V PLorg/thoughtcrime/securesms/components/ThumbnailView;->fillTargetDimensions([I[I[I)V PLorg/thoughtcrime/securesms/components/ThumbnailView;->getNonZeroCount([I)I PLorg/thoughtcrime/securesms/components/ThumbnailView;->hasSameContents(Lorg/thoughtcrime/securesms/mms/Slide;Lorg/thoughtcrime/securesms/mms/Slide;)Z @@ -47267,8 +47298,6 @@ PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->c PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->getTransferState(Ljava/util/List;)I PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->onAttachedToWindow()V PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->onDetachedFromWindow()V -PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setCancelClickListener(Landroid/view/View$OnClickListener;)V -PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setTransferClickListener(Landroid/view/View$OnClickListener;)V PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->slidesAsListOfTimestamps(Ljava/util/List;)Ljava/lang/String; PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->verboseLog(Ljava/lang/String;)V PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlViewState;->()V @@ -47479,6 +47508,9 @@ PLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu$Snapshot;->com PLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu$Snapshot;->component7()Z PLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu$Snapshot;->component8()I PLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu$Snapshot;->component9()J +PLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu;->()V +PLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu;->()V +PLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu;->access$getTAG$p()Ljava/lang/String; PLorg/thoughtcrime/securesms/conversation/ConversationRepository;->()V PLorg/thoughtcrime/securesms/conversation/ConversationRepository;->()V PLorg/thoughtcrime/securesms/conversation/ConversationRepository;->getConversationData(JLorg/thoughtcrime/securesms/recipients/Recipient;I)Lorg/thoughtcrime/securesms/conversation/ConversationData; @@ -47596,6 +47628,7 @@ PLorg/thoughtcrime/securesms/conversation/VoiceRecorderWakeLock;->release()V PLorg/thoughtcrime/securesms/conversation/colors/ChatColors$Id$NotSet;->()V PLorg/thoughtcrime/securesms/conversation/colors/ChatColors$Id$NotSet;->()V PLorg/thoughtcrime/securesms/conversation/colors/ChatColors;->getChatBubbleMask()Landroid/graphics/drawable/Drawable; +PLorg/thoughtcrime/securesms/conversation/colors/ChatColors;->isGradient()Z PLorg/thoughtcrime/securesms/conversation/colors/Colorizer$onGroupMembershipChanged$$inlined$sortedBy$1;->()V PLorg/thoughtcrime/securesms/conversation/colors/Colorizer;->()V PLorg/thoughtcrime/securesms/conversation/colors/Colorizer;->()V @@ -47833,7 +47866,6 @@ PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationV PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->(Lorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2;Landroid/view/View;)V PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->canPlayContent()Z PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getDisplayMode()Lorg/thoughtcrime/securesms/conversation/ConversationItemDisplayMode; -PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getNextMessage()Lj$/util/Optional; PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->showProjectionArea()V PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$IncomingMediaViewHolder;->(Lorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2;Landroid/view/View;)V PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$IncomingMediaViewHolder;->bind(Ljava/lang/Object;)V @@ -48052,7 +48084,6 @@ PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConv PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$8;->invoke()Ljava/lang/Object; PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$9;->()V PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$9;->()V -PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$9;->invoke(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Ljava/lang/Boolean; PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$9;->invoke(Ljava/lang/Object;)Ljava/lang/Object; PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeInlineSearch$1$1;->(Lorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;)V PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeInlineSearch$2;->(Lorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;)V @@ -48367,7 +48398,6 @@ PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->access$get PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getConversationThreadState$lambda$0(JLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;I)Lorg/thoughtcrime/securesms/conversation/v2/ConversationThreadState; PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getConversationThreadState(JI)Lio/reactivex/rxjava3/core/Single; PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getMessageCounts(J)Lio/reactivex/rxjava3/core/Flowable; -PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getRequestReviewState$lambda$16(Lorg/thoughtcrime/securesms/database/model/GroupRecord;Lorg/thoughtcrime/securesms/messagerequests/MessageRequestState;Lorg/thoughtcrime/securesms/recipients/Recipient;)Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState; PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getUnreadCount(J)I PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getUnreadMentionsCount(J)I PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->isInBubble()Z @@ -48579,7 +48609,6 @@ PLorg/thoughtcrime/securesms/conversation/v2/MotionEventRelay;->setDrain(Lorg/th PLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->()V PLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->(Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState$IndividualReviewState;Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState$GroupReviewState;)V PLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->(Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState$IndividualReviewState;Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState$GroupReviewState;ILkotlin/jvm/internal/DefaultConstructorMarker;)V -PLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->equals(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->shouldShowReviewBanner()Z PLorg/thoughtcrime/securesms/conversation/v2/ShareDataTimestampViewModel;->()V PLorg/thoughtcrime/securesms/conversation/v2/ShareDataTimestampViewModel;->()V @@ -48626,7 +48655,6 @@ PLorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;->(Lorg/th PLorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;->areContentsTheSame(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;->areContentsTheSame(Lorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;)Z PLorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;->areItemsTheSame(Ljava/lang/Object;)Z -PLorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;->areItemsTheSame(Lorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;)Z PLorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;->getChangePayload(Ljava/lang/Object;)Ljava/lang/Object; PLorg/thoughtcrime/securesms/conversation/v2/data/IncomingTextOnly;->()V PLorg/thoughtcrime/securesms/conversation/v2/data/IncomingTextOnly;->(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;)V @@ -48795,7 +48823,6 @@ PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->access$getCollapsedSpacing$cp()F PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->access$getDefaultSpacing$cp()F PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->getCornersLTR()Lorg/thoughtcrime/securesms/util/Projection$Corners; -PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->isEndOfMessageCluster(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->isSingularMessage(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;Z)Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->isStartOfMessageCluster(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;Z)Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->isWithinClusteringTime(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z @@ -48847,7 +48874,6 @@ PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyVie PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->canPlayContent()Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->getConversationMessage()Lorg/thoughtcrime/securesms/conversation/ConversationMessage; PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->getShape()Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape$MessageShape; -PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->invalidateFooterDrawable(Landroid/view/ViewGroup;)V PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->isContentCondensed()Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->isForcedFooter()Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->presentAlert()V @@ -48869,7 +48895,6 @@ PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme$getBo PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->()V PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationContext;)V PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getBodyBubbleColor(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;)I -PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getBodyTextColor(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;)I PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getColor(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)I PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getFooterBubbleColor(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;)I PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getReplyIconBackgroundColor()I @@ -48897,7 +48922,6 @@ PLorg/thoughtcrime/securesms/conversation/v2/items/V2OnDispatchTouchEventListene PLorg/thoughtcrime/securesms/conversation/v2/items/V2Payload;->$values()[Lorg/thoughtcrime/securesms/conversation/v2/items/V2Payload; PLorg/thoughtcrime/securesms/conversation/v2/items/V2Payload;->()V PLorg/thoughtcrime/securesms/conversation/v2/items/V2Payload;->(Ljava/lang/String;I)V -PLorg/thoughtcrime/securesms/conversationlist/ChatFolderMappingModel;->equals(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->onStartNestedScroll(Landroidx/coordinatorlayout/widget/CoordinatorLayout;Landroid/view/View;Landroid/view/View;Landroid/view/View;II)Z PLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->onStartNestedScroll(Landroidx/coordinatorlayout/widget/CoordinatorLayout;Lcom/google/android/material/appbar/AppBarLayout;Landroid/view/View;Landroid/view/View;II)Z PLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->onStopNestedScroll(Landroidx/coordinatorlayout/widget/CoordinatorLayout;Landroid/view/View;Landroid/view/View;I)V @@ -49023,7 +49047,6 @@ PLorg/thoughtcrime/securesms/database/MessageTypes$-CC;->isSmsExport(J)Z PLorg/thoughtcrime/securesms/database/PaymentTable;->getPayments(Ljava/util/Collection;)Ljava/util/List; PLorg/thoughtcrime/securesms/database/ReactionTable;->getReactionsForMessages(Ljava/util/Collection;)Ljava/util/Map; PLorg/thoughtcrime/securesms/database/RxDatabaseObserver$$ExternalSyntheticLambda0;->cancel()V -PLorg/thoughtcrime/securesms/database/RxDatabaseObserver$RxObserver;->onChanged()V PLorg/thoughtcrime/securesms/database/RxDatabaseObserver$conversation$1;->(J)V PLorg/thoughtcrime/securesms/database/RxDatabaseObserver$conversation$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; PLorg/thoughtcrime/securesms/database/RxDatabaseObserver$conversation$1;->invoke(Lorg/thoughtcrime/securesms/database/RxDatabaseObserver$RxObserver;)V @@ -49103,7 +49126,6 @@ PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->$r8$lambda$bAahgo PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getCall()Lorg/thoughtcrime/securesms/database/CallTable$Call; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getDisplayBody(Landroid/content/Context;)Landroid/text/SpannableString; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getLatestRevisionId()Lorg/thoughtcrime/securesms/database/model/MessageId; -PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getLinkPreviews()Ljava/util/List; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getParentStoryId()Lorg/thoughtcrime/securesms/database/model/ParentStoryId; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getPayment()Lorg/thoughtcrime/securesms/payments/Payment; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getStoryType()Lorg/thoughtcrime/securesms/database/model/StoryType; @@ -49153,16 +49175,24 @@ PLorg/thoughtcrime/securesms/databinding/V2ConversationFragmentBinding;->getRoot PLorg/thoughtcrime/securesms/databinding/V2ConversationItemTextOnlyIncomingBinding;->(Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemLayout;Lorg/thoughtcrime/securesms/badges/BadgeImageView;Lorg/thoughtcrime/securesms/components/AvatarImageView;Lorg/thoughtcrime/securesms/components/emoji/EmojiTextView;Lorg/thoughtcrime/securesms/conversation/v2/items/ShrinkWrapLinearLayout;Lorg/thoughtcrime/securesms/components/ExpirationTimerView;Landroid/view/View;Landroid/widget/TextView;Lorg/thoughtcrime/securesms/reactions/ReactionsConversationView;Lcom/google/android/material/imageview/ShapeableImageView;Landroid/widget/Space;Lorg/thoughtcrime/securesms/components/emoji/EmojiTextView;)V PLorg/thoughtcrime/securesms/databinding/V2ConversationItemTextOnlyIncomingBinding;->bind(Landroid/view/View;)Lorg/thoughtcrime/securesms/databinding/V2ConversationItemTextOnlyIncomingBinding; PLorg/thoughtcrime/securesms/databinding/V2ConversationItemTextOnlyIncomingBinding;->getRoot()Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemLayout; +PLorg/thoughtcrime/securesms/emoji/EmojiFiles;->openForReading(Landroid/content/Context;Ljava/lang/String;)Ljava/io/InputStream; +PLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->()V +PLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->(Landroid/net/Uri;)V +PLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->equals(Ljava/lang/Object;)Z +PLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->getUri()Landroid/net/Uri; +PLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->hashCode()I +PLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->toString()Ljava/lang/String; PLorg/thoughtcrime/securesms/emoji/EmojiPageCache$LoadResult$Immediate;->()V PLorg/thoughtcrime/securesms/emoji/EmojiPageCache$LoadResult$Immediate;->(Landroid/graphics/Bitmap;)V PLorg/thoughtcrime/securesms/emoji/EmojiPageCache$LoadResult$Immediate;->getBitmap()Landroid/graphics/Bitmap; +PLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadRemoteBasedEmojis$1$1;->invoke(Landroid/net/Uri;)Lorg/thoughtcrime/securesms/emoji/EmojiPage; +PLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadRemoteBasedEmojis$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; PLorg/thoughtcrime/securesms/emoji/EmojiSource$maxEmojiLength$2;->invoke()Ljava/lang/Integer; PLorg/thoughtcrime/securesms/emoji/EmojiSource$maxEmojiLength$2;->invoke()Ljava/lang/Object; PLorg/thoughtcrime/securesms/emoji/EmojiSource;->getMaxEmojiLength()I PLorg/thoughtcrime/securesms/emoji/EmojiSourceKt;->access$maxOrZero(Ljava/util/List;)I PLorg/thoughtcrime/securesms/emoji/EmojiSourceKt;->maxOrZero(Ljava/util/List;)I PLorg/thoughtcrime/securesms/fonts/SignalSymbols$CustomTypefaceSpan;->(Landroid/graphics/Typeface;)V -PLorg/thoughtcrime/securesms/fonts/SignalSymbols$CustomTypefaceSpan;->update(Landroid/text/TextPaint;)V PLorg/thoughtcrime/securesms/fonts/SignalSymbols$CustomTypefaceSpan;->updateDrawState(Landroid/text/TextPaint;)V PLorg/thoughtcrime/securesms/fonts/SignalSymbols$CustomTypefaceSpan;->updateMeasureState(Landroid/text/TextPaint;)V PLorg/thoughtcrime/securesms/fonts/SignalSymbols$Glyph;->$values()[Lorg/thoughtcrime/securesms/fonts/SignalSymbols$Glyph; @@ -49182,9 +49212,7 @@ PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration;->()V PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration;->(Lorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$Callback;Lkotlin/jvm/functions/Function1;)V PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration;->(Lorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$Callback;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$$ExternalSyntheticLambda0;->(Ljava/util/Set;)V -PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$RangeComparator;->(II)V -PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$RangeComparator;->compare(Ljava/lang/Integer;Ljava/lang/Integer;)I PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$RangeComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController;->(Lorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$Callback;I)V PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController;->attach(Landroidx/recyclerview/widget/RecyclerView;Lorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$Callback;I)V @@ -49196,7 +49224,6 @@ PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController;->onScrolled(La PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackPolicy;->maxSimultaneousPlaybackInConversation()I PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionPlayerHolder;->()V PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionPlayerHolder;->(Landroid/widget/FrameLayout;Lorg/thoughtcrime/securesms/giph/mp4/GiphyMp4VideoPlayer;)V -PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionPlayerHolder;->injectVideoViews(Landroid/content/Context;Landroidx/lifecycle/Lifecycle;Landroid/view/ViewGroup;I)Ljava/util/List; PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionPlayerHolder;->onCreate(Landroidx/lifecycle/LifecycleOwner;)V PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionPlayerHolder;->onDestroy(Landroidx/lifecycle/LifecycleOwner;)V PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionPlayerHolder;->onPause(Landroidx/lifecycle/LifecycleOwner;)V @@ -49212,6 +49239,9 @@ PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4VideoPlayer;->setResizeMode(I)V PLorg/thoughtcrime/securesms/groups/v2/GroupManagementRepository;->()V PLorg/thoughtcrime/securesms/groups/v2/GroupManagementRepository;->(Landroid/content/Context;)V PLorg/thoughtcrime/securesms/groups/v2/GroupManagementRepository;->(Landroid/content/Context;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +PLorg/thoughtcrime/securesms/jobmanager/InAppScheduler$$ExternalSyntheticLambda0;->run()V +PLorg/thoughtcrime/securesms/jobmanager/InAppScheduler;->$r8$lambda$0KH5iNLdy2DvUxriNkEuWXyJtWM(Lorg/thoughtcrime/securesms/jobmanager/InAppScheduler;)V +PLorg/thoughtcrime/securesms/jobmanager/InAppScheduler;->lambda$schedule$0()V PLorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder;->setGlobalPriority(I)Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder; PLorg/thoughtcrime/securesms/jobmanager/JsonJobData$Builder;->putStringListAsArray(Ljava/lang/String;Ljava/util/List;)Lorg/thoughtcrime/securesms/jobmanager/JsonJobData$Builder; PLorg/thoughtcrime/securesms/jobs/ConversationShortcutUpdateJob;->()V @@ -49242,11 +49272,9 @@ PLorg/thoughtcrime/securesms/keyboard/emoji/search/EmojiSearchRepository;->(Landroid/content/Context;)V PLorg/thoughtcrime/securesms/keyvalue/InternalValues;->useConversationItemV2Media()Z PLorg/thoughtcrime/securesms/keyvalue/SettingsValues$Theme;->values()[Lorg/thoughtcrime/securesms/keyvalue/SettingsValues$Theme; -PLorg/thoughtcrime/securesms/keyvalue/SettingsValues;->getMessageFontSize()I PLorg/thoughtcrime/securesms/keyvalue/SettingsValues;->getUniversalExpireTimer()I PLorg/thoughtcrime/securesms/keyvalue/SettingsValues;->isEnterKeySends()Z PLorg/thoughtcrime/securesms/keyvalue/SettingsValues;->isLinkPreviewsEnabled()Z -PLorg/thoughtcrime/securesms/keyvalue/WallpaperValues;->hasWallpaperSet()Z PLorg/thoughtcrime/securesms/linkpreview/LinkPreviewRepository;->()V PLorg/thoughtcrime/securesms/linkpreview/LinkPreviewRepository;->()V PLorg/thoughtcrime/securesms/linkpreview/LinkPreviewState$Companion;->()V @@ -49308,6 +49336,7 @@ PLorg/thoughtcrime/securesms/mms/AttachmentManager;->()V PLorg/thoughtcrime/securesms/mms/AttachmentManager;->(Landroid/content/Context;Landroid/view/View;Lorg/thoughtcrime/securesms/mms/AttachmentManager$AttachmentListener;)V PLorg/thoughtcrime/securesms/mms/AttachmentManager;->isAttachmentPresent()Z PLorg/thoughtcrime/securesms/mms/ImageSlide;->hasPlaceholder()Z +PLorg/thoughtcrime/securesms/mms/PartAuthority;->getEmojiFilename(Landroid/net/Uri;)Ljava/lang/String; PLorg/thoughtcrime/securesms/mms/Slide;->asAttachment()Lorg/thoughtcrime/securesms/attachments/Attachment; PLorg/thoughtcrime/securesms/mms/Slide;->getBody()Lj$/util/Optional; PLorg/thoughtcrime/securesms/mms/Slide;->getCaption()Lj$/util/Optional; @@ -49315,7 +49344,6 @@ PLorg/thoughtcrime/securesms/mms/Slide;->getDisplayUri()Landroid/net/Uri; PLorg/thoughtcrime/securesms/mms/Slide;->getFileSize()J PLorg/thoughtcrime/securesms/mms/Slide;->getPlaceholderBlur()Lorg/thoughtcrime/securesms/blurhash/BlurHash; PLorg/thoughtcrime/securesms/mms/Slide;->hasThumbnail()Z -PLorg/thoughtcrime/securesms/mms/Slide;->isInProgress()Z PLorg/thoughtcrime/securesms/mms/SlideDeck$$ExternalSyntheticLambda0;->()V PLorg/thoughtcrime/securesms/mms/SlideDeck$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/mms/SlideDeck;->getBody()Ljava/lang/String; @@ -49500,7 +49528,6 @@ PLorg/thoughtcrime/securesms/util/Material3OnScrollHelper;->(Landroid/app/ PLorg/thoughtcrime/securesms/util/Material3OnScrollHelper;->access$getAnimator$p(Lorg/thoughtcrime/securesms/util/Material3OnScrollHelper;)Landroid/animation/ValueAnimator; PLorg/thoughtcrime/securesms/util/Material3OnScrollHelper;->access$getSetStatusBarColor$p(Lorg/thoughtcrime/securesms/util/Material3OnScrollHelper;)Lkotlin/jvm/functions/Function1; PLorg/thoughtcrime/securesms/util/Material3OnScrollHelper;->getPreviousStatusBarColor()I -PLorg/thoughtcrime/securesms/util/MediaUtil;->isInstantVideoSupported(Lorg/thoughtcrime/securesms/mms/Slide;)Z PLorg/thoughtcrime/securesms/util/MediaUtil;->isVideoType(Ljava/lang/String;)Z PLorg/thoughtcrime/securesms/util/MessageRecordUtil;->hasLocation(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z PLorg/thoughtcrime/securesms/util/NullableSavedStateHandleDelegate;->(Landroidx/lifecycle/SavedStateHandle;Ljava/lang/String;)V @@ -49508,7 +49535,6 @@ PLorg/thoughtcrime/securesms/util/Projection$Corners;->()V PLorg/thoughtcrime/securesms/util/Projection$Corners;->(F)V PLorg/thoughtcrime/securesms/util/Projection$Corners;->([F)V PLorg/thoughtcrime/securesms/util/Projection$Corners;->toRelativeRadii(Z)[F -PLorg/thoughtcrime/securesms/util/ProjectionList;->getSize()I PLorg/thoughtcrime/securesms/util/ProjectionList;->size()I PLorg/thoughtcrime/securesms/util/PushCharacterCalculator$1;->()V PLorg/thoughtcrime/securesms/util/PushCharacterCalculator;->()V @@ -49548,7 +49574,6 @@ PLorg/thoughtcrime/securesms/util/TextSecurePreferences$MediaKeyboardMode;->valueOf(Ljava/lang/String;)Lorg/thoughtcrime/securesms/util/TextSecurePreferences$MediaKeyboardMode; PLorg/thoughtcrime/securesms/util/TextSecurePreferences$MediaKeyboardMode;->values()[Lorg/thoughtcrime/securesms/util/TextSecurePreferences$MediaKeyboardMode; PLorg/thoughtcrime/securesms/util/TextSecurePreferences;->getMediaKeyboardMode(Landroid/content/Context;)Lorg/thoughtcrime/securesms/util/TextSecurePreferences$MediaKeyboardMode; -PLorg/thoughtcrime/securesms/util/TextSecurePreferences;->getMessageBodyTextSize(Landroid/content/Context;)I PLorg/thoughtcrime/securesms/util/TextSecurePreferences;->hasSeenStickerIntroTooltip(Landroid/content/Context;)Z PLorg/thoughtcrime/securesms/util/TextSecurePreferences;->isEnterSendsEnabled(Landroid/content/Context;)Z PLorg/thoughtcrime/securesms/util/ThemeUtil;->getAttribute(Landroid/content/Context;ILjava/lang/String;)Ljava/lang/String; @@ -49605,7 +49630,6 @@ PLorg/thoughtcrime/securesms/util/ViewUtil;->getAlphaAnimation(FFI)Landroid/view PLorg/thoughtcrime/securesms/util/ViewUtil;->getLeftMargin(Landroid/view/View;)I PLorg/thoughtcrime/securesms/util/ViewUtil;->getRightMargin(Landroid/view/View;)I PLorg/thoughtcrime/securesms/util/ViewUtil;->getTopMargin(Landroid/view/View;)I -PLorg/thoughtcrime/securesms/util/ViewUtil;->isRtl(Landroid/view/View;)Z PLorg/thoughtcrime/securesms/util/ViewUtil;->mirrorIfRtl(Landroid/view/View;Landroid/content/Context;)V PLorg/thoughtcrime/securesms/util/ViewUtil;->setPaddingBottom(Landroid/view/View;I)V PLorg/thoughtcrime/securesms/util/ViewUtil;->setPaddingTop(Landroid/view/View;I)V @@ -49652,7 +49676,6 @@ PLorg/thoughtcrime/securesms/util/dualsim/SubscriptionManagerCompat;->() PLorg/thoughtcrime/securesms/util/dualsim/SubscriptionManagerCompat;->(Landroid/content/Context;)V PLorg/thoughtcrime/securesms/util/rx/RxStore;->dispose()V PLorg/thoughtcrime/securesms/util/views/NullableStub;->isResolvable()Z -PLorg/thoughtcrime/securesms/util/views/NullableStub;->resolved()Z PLorg/thoughtcrime/securesms/util/views/Stub;->getVisibility()I PLorg/thoughtcrime/securesms/util/views/Stub;->isVisible()Z PLrxdogtag2/DogTagMaybeObserver$$ExternalSyntheticLambda2;->(Lrxdogtag2/DogTagMaybeObserver;)V From 72f43e5395a974b09dee972cfd455f2a8b3fc3d8 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Fri, 18 Oct 2024 13:07:31 -0400 Subject: [PATCH 37/51] Bump version to 7.21.2 --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f56b3c570f..ad3b7d533b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -21,8 +21,8 @@ plugins { apply(from = "static-ips.gradle.kts") -val canonicalVersionCode = 1472 -val canonicalVersionName = "7.21.1" +val canonicalVersionCode = 1473 +val canonicalVersionName = "7.21.2" val currentHotfixVersion = 0 val maxHotfixVersions = 100 From 19602b0e686fb4a3631f5959f5bfe2e16512f91e Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Fri, 18 Oct 2024 13:46:04 -0400 Subject: [PATCH 38/51] Fix reregistration lost state bug. --- .../securesms/registration/ui/RegistrationViewModel.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt index 60bed7ead7..9044b81322 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt @@ -680,10 +680,14 @@ class RegistrationViewModel : ViewModel() { */ private suspend fun registerAccountInternal(context: Context, sessionId: String?, registrationData: RegistrationData, pin: String?, masterKey: MasterKey): Pair { Log.v(TAG, "registerAccountInternal()") - val registrationResult: RegisterAccountResult = RegistrationRepository.registerAccount(context = context, sessionId = sessionId, registrationData = registrationData, pin = pin) + var registrationResult: RegisterAccountResult = RegistrationRepository.registerAccount(context = context, sessionId = sessionId, registrationData = registrationData, pin = pin) // Check if reg lock is enabled if (registrationResult !is RegisterAccountResult.RegistrationLocked) { + if (registrationResult is RegisterAccountResult.Success) { + registrationResult = RegisterAccountResult.Success(registrationResult.accountRegistrationResult.copy(masterKey = masterKey)) + } + Log.i(TAG, "Received a non-registration lock response to registration. Assuming registration lock as DISABLED") return Pair(registrationResult, false) } From 9c8331f7f36d20ffd1795e87ffe79ca5966282de Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 18 Oct 2024 14:33:17 -0400 Subject: [PATCH 39/51] Improve network reliability. --- .../securesms/push/SignalServiceNetworkAccess.kt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/push/SignalServiceNetworkAccess.kt b/app/src/main/java/org/thoughtcrime/securesms/push/SignalServiceNetworkAccess.kt index c863f75fb3..5e982fa5cf 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/push/SignalServiceNetworkAccess.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/push/SignalServiceNetworkAccess.kt @@ -67,7 +67,6 @@ open class SignalServiceNetworkAccess(context: Context) { private const val COUNTRY_CODE_IRAN = 98 private const val COUNTRY_CODE_CUBA = 53 private const val COUNTRY_CODE_UZBEKISTAN = 998 - private const val COUNTRY_CODE_RUSSIA = 7 private const val COUNTRY_CODE_VENEZUELA = 58 private const val COUNTRY_CODE_PAKISTAN = 92 @@ -216,8 +215,7 @@ open class SignalServiceNetworkAccess(context: Context) { listOf(HostConfig("https://www.google.com.pk", G_HOST, GMAIL_CONNECTION_SPEC)) + baseGHostConfigs ), COUNTRY_CODE_IRAN to fConfig, - COUNTRY_CODE_CUBA to fConfig, - COUNTRY_CODE_RUSSIA to fConfig + COUNTRY_CODE_CUBA to fConfig ) private val defaultCensoredConfiguration: SignalServiceConfiguration = buildGConfiguration(baseGHostConfigs) + fConfig @@ -230,7 +228,6 @@ open class SignalServiceNetworkAccess(context: Context) { COUNTRY_CODE_IRAN, COUNTRY_CODE_CUBA, COUNTRY_CODE_UZBEKISTAN, - COUNTRY_CODE_RUSSIA, COUNTRY_CODE_VENEZUELA, COUNTRY_CODE_PAKISTAN ) From c51460794f62d33c5cd23e709bb6353e8454a33e Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Sat, 19 Oct 2024 10:12:39 -0400 Subject: [PATCH 40/51] Update translations and other static files. --- app/src/main/res/values-ar/strings.xml | 38 ++++---- app/src/main/res/values-gu/strings.xml | 112 +++++++++++------------ app/src/main/res/values-lt/strings.xml | 120 ++++++++++++------------- app/src/main/res/values-sr/strings.xml | 110 +++++++++++------------ app/static-ips.gradle.kts | 4 +- 5 files changed, 192 insertions(+), 192 deletions(-) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 31bc0e2e1a..54e5592895 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -3266,13 +3266,13 @@ خصوصية رقم الهاتف - لا تتم مُشاركة رقم هاتفك بعد الآن مع الدردشات. إذا تم حفظ رقم هاتفك في جهات اتصال صديق، فسَيظل مرئيًا بالنسبة له. + لا تتم مُشاركة رقم هاتفك بعد الآن مع الدردشات. إذا تمَّ حفظ رقم هاتفك في جهات الاتصال لصديق، فسَيظل مرئيًا بالنسبة له. أسماء المُستخدمين يُمكن للناس مراسلتك الآن باستخدام اسم المُستخدم الاختياري الخاص بك حتى لا تضطر إلى إعطاء رقم هاتفك. أسماء المُستخدمين ليست مرئية على حسابك الشخصي. - رموز أو رابط الاستجابة السريعة + روابط أو كودات الـ QR أسماء المُستخدمين لها رمز ورابط استجابة سريعة فريدين يُمكنك مُشاركتُهما مع أصدقائك لكي يبدؤوا الدردشة معك في الآن. @@ -3318,13 +3318,13 @@ للإجابة على المكالمة، اسمح لسيجنال بالوصول إلى الميكروفون على جهازك. - للرّد على مكالمة الفيديو، يُرجى منح Signal ترخيص الوصول إلى الميكروفون و الكاميرا على هاتفك. + للردّ على مكالمة الفيديو، اسمح لسيجنال بالوصول إلى الميكروفون و الكاميرا على هاتفك. يحتاج سيجنال إلى أذونات الوصول إلى الميكروفون والكاميرا من أجل استقبال أو إجراء المكالمات، ولكن الإذن تمَّ رفضه بشكلٍ دائم. يُرجى زيارة \"إعدادات التطبيق\"، واختيار \"الأذونات\"، ثم تفعيل \"الميكروفون\" و\"الكاميرا\". تمَّت الإجابة عبر جهاز مُرتبِط. تمَّ الرفض عبر جهاز مُرتبِط. مشغول على جهاز مُرتبِط. - لقد نُقل زر تغيير الكاميرا إلى هنا، انقر على الفيديو الخاص بك لتُجرّبه. + نُقِلَ زر \"قلب الكاميرا\" إلى هنا. انقر على الفيديو لديك لتُجرِّبه. انضم شخص لهذه المكالمة برقم أمان مختلف. @@ -3369,7 +3369,7 @@ تحديث جهات الاتصال - هل تفتقد إلى جهة اتصال؟ حاول التحديث من جديد + هل تفتقد إلى جهة اتصال؟ حاوِل التحديث من جديد اعثر على الأشخاص الذين تعرفهم على Signal @@ -3492,12 +3492,12 @@ تحديث جهة الاتصال حظر الطلب - لا وجود لمجموعات مشتركة. يُرجى مراجعة الطلبات بعناية. - لا وجود لجهات الاتصال في هذه المجموعة. يُرجى مراجعة الطلبات بعناية. + لا يوجود مجموعات مشتركة. يُرجى مراجعة الطلبات بعناية. + لا يوجود جهات اتصال في هذه المجموعة. يُرجى مراجعة الطلبات بعناية. إظهار - بعض ضبط المهلة، سوف تختفي رسائلك التي سوف يجري إرسالها بعد انقضاء %1$s. + سيتمُّ تعيين توقيت إخفاء الرسائل إلى %1$s عندما تقوم بمراسلته. - تبرّع + تبرَّع إرسال مدفوعات @@ -3510,7 +3510,7 @@ تحديث التطبيق - شغّل … توقف + تشغيل … إيقاف مؤقَّت تنزيل @@ -3518,8 +3518,8 @@ فيديو صورة صورة متحركة - ملف متعدّد الوسائط لمشاهدة-واحدة - ملصق + ملف وسائط للعرض لمرّة واحدة + مُلصَق أنت لم يتم العثور على الرسالة الأصلية @@ -3529,18 +3529,18 @@ لم تعد متاحة - تقديم تبرّع لصديق + تقديم تبرُّع لصديق - النزول إلى الأسفل + انتقال إلى الأسفل - تُعد الفقاعات ميزة في أندرويد يمكنك تشغيلها أو تعطيلُها بالنسبة لدردشات سيجنال. + تُعد فقاعات المحادثات ميزة في أندرويد يمكنك تشغيلها أو إيقافها لدردشات سيجنال. ليس الآن - أطفىء + إيقاف تغيّرات رقم الأمان @@ -3550,12 +3550,12 @@ استئناف المكالمة مغادرة المكالمة ربما قام هؤلاء الأشخاص بإعادة تثبيت التطبيق أو قاموا بتغيير أجهزتهم. يُرجى تأكيد رقم الأمان معهم لضمان الخصوصية. - إظهار + عرض - سبق التحقق منه + سبق التحقُّق منه - لقد فُعلَت إشعارات المكالمات. + تمَّ تفعيل إشعارات المكالمات. تفعيل إشعارات المكالمات تفعيل نشاط الخلفية يبدو أن كل شيء جيد الآن ! diff --git a/app/src/main/res/values-gu/strings.xml b/app/src/main/res/values-gu/strings.xml index 1e4128f1c2..a1825b5931 100644 --- a/app/src/main/res/values-gu/strings.xml +++ b/app/src/main/res/values-gu/strings.xml @@ -369,7 +369,7 @@ મેસેજ - Chat types + ચેટના પ્રકારો મેસેજ %1$s @@ -4053,9 +4053,9 @@ કેમેરો ખોલો હજી સુધી કોઈ ચેટ નથી.\nમિત્રને મેસેજ કરીને પ્રારંભ કરો. - No chats to display + બતાવવા માટે કોઈ ચેટ નથી - Folder settings + ફોલ્ડરના સેટિંગ્સ @@ -5055,53 +5055,53 @@ કીબોર્ડ એન્ટર દબાવીને મોકલો - Chat folders + ચેટના ફોલ્ડર - Add a chat folder + ચેટ ફોલ્ડર ઉમેરો - Organize your chats into folders and quickly switch between them on your chat list. + તમારી ચેટને ફોલ્ડરમાં ગોઠવો અને તમારી ચેટ લિસ્ટ પર તેમની વચ્ચે ઝડપથી સ્વિચ કરો. - Folders + ફોલ્ડર - Create a folder + ફોલ્ડર બનાવો - All chats + બધી ચેટ - Suggested folders + સૂચવેલા ફોલ્ડર - Unreads + ન વાંચેલા - Unread messages from all chats + બધી ચેટમાંથી વાંચ્યા વગરના મેસેજ - 1:1 chats + 1:1 ચેટ - Only messages from direct chats + ફક્ત ડાયરેક્ટ ચેટના જ મેસેજ - ગ્રુપ + ગ્રૂપ - Only message from group chats + ફક્ત ગ્રૂપ ચેટના જ મેસેજ ઉમેરો - %1$s folder added. + %1$s ફોલ્ડર ઉમેર્યું. - Edit folder + ફોલ્ડરમાં ફેરફાર કરો - Delete folder + ફોલ્ડર ડિલીટ કરો - Add new folder + નવું ફોલ્ડર ઉમેરો - Mute all + બધાને મ્યૂટ કરો - Reorder folders + ફોલ્ડરને ફરીથી ગોઠવો બધાને વાંચેલા તરીકે માર્ક કરો - %1$d chat type - %1$d chat types + %1$d ચેટના પ્રકાર + %1$d ચેટના પ્રકારો @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d ચેટ બાકાત કરી + %1$d ચેટ બાકાત કરી - Create a folder + ફોલ્ડર બનાવો - Folder name (required) + ફોલ્ડરનું નામ (આવશ્યક) - Included chats + સમાવિષ્ટ ચેટ - Add chats + ચેટ ઉમેરો - Choose chats that you want to appear in this folder. + તમે આ ફોલ્ડરમાં બતાવવા માંગતા હો તે ચેટ પસંદ કરો. અપવાદો - Exclude chats + ચેટ બાકાત કરો - Choose chats that you do not want to appear in this folder. + તમે આ ફોલ્ડરમાં બતાવવા ન માંગતા હો તે ચેટ પસંદ કરો. - Only show unread chats + ફક્ત ન વાંચેલી ચેટ જ બતાવો - When enabled, only chats with unread messages will be shown in this folder. + જ્યારે સક્ષમ હોય, ત્યારે આ ફોલ્ડરમાં ફક્ત ન વાંચેલા મેસેજ સાથેની ચેટ જ બતાવવામાં આવશે. મ્યૂટ કરેલી ચેટ સામેલ કરો બનાવો - Create folder? + ફોલ્ડર બનાવવું છે? - Do you want to create the chat folder \"%1$s\"? + શું તમે ચેટ ફોલ્ડર \"%1$s\" બનાવવા માંગો છો? - Create folder + ફોલ્ડર બનાવો - Edit folder + ફોલ્ડરમાં ફેરફાર કરો સેવ કરો - Save changes? + ફેરફારો સેવ કરવા છે? - Do you want to save the changes you\'ve made to this chat folder? + શું તમે આ ચેટ ફોલ્ડરમાં કરેલા ફેરફારોને સેવ કરવા માંગો છો? - Save changes + ફેરફારો સેવ કરો કાઢી નાખો - Delete folder + ફોલ્ડર ડિલીટ કરો - Delete this chat folder? + આ ચેટ ફોલ્ડર ડિલીટ કરવું છે? - Chat types + ચેટના પ્રકારો થઈ ગયું @@ -7445,15 +7445,15 @@ - Cancel download + ડાઉનલોડ રદ કરો - Downloading: %1$s of %2$s (%3$s%%) + ડાઉનલોડ થઈ રહ્યું છે: %2$s માંથી %1$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + તમારા બેકઅપને ડાઉનલોડ કરવા માટે પૂરતી જગ્યા નથી. ચાલુ રાખવા માટે %1$s જગ્યા ખાલી કરો. - Skip download + ડાઉનલોડ કરવાનું છોડો - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "તમારું છેલ્લું બેકઅપ પૂર્ણ કરી શકાયું નથી. ખાતરી કરો કે તમારો ફોન Wi-Fiથી કનેક્ટ થયેલો છે અને ફરી પ્રયાસ કરવા માટે હમણાં બેકઅપ લો પર ટેપ કરો." @@ -7561,13 +7561,13 @@ બેકઅપ પ્રકાર બદલાયો અને સબ્સ્ક્રિપ્શન રદ કર્યું - Subscription canceled + સબ્સ્ક્રિપ્શન રદ કર્યું ડાઉનલોડ પૂર્ણ બેકઅપ રાત્રિ દરમિયાન લેવામાં આવશે. - Subscription inactive + સબ્સ્ક્રિપ્શન નિષ્ક્રિય બેકઅપ પ્લાન @@ -7579,9 +7579,9 @@ %1$sના રોજ રિન્યૂ થશે - Expires on %1$s + %1$sના રોજ સમાપ્ત થશે - Expired on %1$s + %1$sના રોજ સમાપ્ત થયું તમારી મેસેજ હિસ્ટ્રીનું બેકઅપ લો જેથી જ્યારે તમે નવો ફોન લો અથવા Signalને ફરીથી ઇન્સ્ટોલ કરો ત્યારે તમે ક્યારેય ડેટા ગુમાવશો નહીં. @@ -7627,9 +7627,9 @@ કૃપા કરીને તમારો ડિવાઇસ પિન, પાસવર્ડ અથવા પેટર્ન દાખલ કરો. - Re-enable backups + બેકઅપ ફરીથી સક્ષમ કરો - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + બેકઅપ બંધ કરવામાં આવ્યા છે અને તમારો ડેટા Signalની સુરક્ષિત સ્ટોરેજ સેવામાંથી ડિલીટ કરવામાં આવ્યો છે. diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 7c873fd11b..580ce8eead 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -375,7 +375,7 @@ Žinutės - Chat types + Pokalbių tipai Žinutė %1$s @@ -4259,9 +4259,9 @@ Atverti kamerą Kol kas pokalbių nėra.\nPradėkite, bendraudami su draugais. - No chats to display + Nėra pokalbių, kuriuos galima parodyti - Folder settings + Aplanko nustatymai @@ -5293,55 +5293,55 @@ Klaviatūra Siųsti spustelėjus „Įvesti“ - Chat folders + Pokalbių aplankai - Add a chat folder + Pridėti pokalbio aplanką - Organize your chats into folders and quickly switch between them on your chat list. + Suskirstykite pokalbius į aplankus ir greitai naršykite juos pokalbių sąraše. - Folders + Aplankai - Create a folder + Sukurti aplanką - All chats + Visi pokalbiai - Suggested folders + Siūlomi aplankai - Unreads + Neskaitytos - Unread messages from all chats + Neskaitytos žinutės iš visų pokalbių - 1:1 chats + 1:1 pokalbiai - Only messages from direct chats + Tik žinutės iš tiesioginių pokalbių Grupės - Only message from group chats + Tik žinutės iš grupės pokalbių Pridėti - %1$s folder added. + Pridėtas pokalbis: %1$s. - Edit folder + Redaguoti aplanką - Delete folder + Ištrinti aplanką - Add new folder + Pridėti naują aplanką - Mute all + Nutildyti visus - Reorder folders + Pertvarkyti aplankus Žymėti visus skaitytais - %1$d chat type - %1$d chat types - %1$d chat types - %1$d chat types + %1$d pokalbio tipas + %1$d pokalbio tipai + %1$d pokalbio tipo + %1$d pokalbio tipų @@ -5352,63 +5352,63 @@ - %1$d chat excluded - %1$d chats excluded - %1$d chats excluded - %1$d chats excluded + %1$d pokalbis neįtrauktas + %1$d pokalbiai neįtraukti + %1$d pokalbio neįtraukta + %1$d pokalbių neįtraukta - Create a folder + Sukurti aplanką - Folder name (required) + Aplanko pavadinimas (privalomas) - Included chats + Įtraukti pokalbiai - Add chats + Pridėti pokalbių - Choose chats that you want to appear in this folder. + Pasirinkite pokalbius, kuriuos norite rodyti šiame aplanke. Išimtys - Exclude chats + Slėpti pokalbius - Choose chats that you do not want to appear in this folder. + Pasirinkite pokalbius, kurių nenorite rodyti šiame aplanke. - Only show unread chats + Rodyti tik neskaitytus pokalbius - When enabled, only chats with unread messages will be shown in this folder. + Įjungus, šiame aplanke bus rodomi tik pokalbiai su neskaitytomis žinutėmis. - Include muted chats + Įtraukti nutildytus pokalbius Sukurti - Create folder? + Sukurti aplanką? - Do you want to create the chat folder \"%1$s\"? + Ar norite sukurti pokalbio aplanką „%1$s“? - Create folder + Sukurti aplanką - Edit folder + Redaguoti aplanką Įrašyti - Save changes? + Išsaugoti pakeitimus? - Do you want to save the changes you\'ve made to this chat folder? + Ar norite išsaugoti šiam pokalbio aplankui atliktus pakeitimus? - Save changes + Išsaugoti pakeitimus Atmesti - Delete folder + Ištrinti aplanką - Delete this chat folder? + Ištrinti šį pokalbio aplanką? - Chat types + Pokalbių tipai Atlikta @@ -7767,15 +7767,15 @@ - Cancel download + Atšaukti atsisiuntimą - Downloading: %1$s of %2$s (%3$s%%) + Atsisiunčiama %1$s iš %2$s (%3$s %%) - Not enough space to download your Backup. To continue free up %1$s of space. + Nepakanka vietos, kad būtų galima atsisiųsti atsarginę kopiją. Norėdami tęsti atlaisvinkite %1$s vietos. - Skip download + Praleisti atsisiuntimą - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Paskutinės atsarginės kopijos sukurti nepavyko. Norėdami pabandyti dar kartą įsitikinkite, kad telefonas prijungtas prie „Wi-Fi“, ir bakstelėkite „Kurti atsarginę kopiją dabar“." @@ -7885,13 +7885,13 @@ Pakeistas atsarginio kopijavimo tipas ir prenumerata atšaukta - Subscription canceled + Prenumerata nutraukta Atsisiuntimas baigtas Atsarginė kopija bus sukurta per naktį. - Subscription inactive + Prenumerata neaktyvi Atsarginės kopijos planas @@ -7903,9 +7903,9 @@ Atnaujinama %1$s - Expires on %1$s + Baigia galioti %1$s - Expired on %1$s + Baigė galioti %1$s Sukurkite savo žinučių istorijos atsarginę kopiją, kad niekada neprarastumėte duomenų įsigiję naują telefoną arba iš naujo įdiegę „Signal“. @@ -7951,9 +7951,9 @@ Įveskite įrenginio PIN kodą, slaptažodį arba šabloną. - Re-enable backups + Iš naujo įjungti atsargines kopijas - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Atsarginės kopijos buvo išjungtos ir jūsų duomenys ištrinti iš saugios „Signal“ saugyklos paslaugos. diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 0194c0a5cb..487de83456 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -369,7 +369,7 @@ Поруке - Chat types + Типови ћаскања Порука: %1$s @@ -4053,9 +4053,9 @@ Отвори камеру Још нема ћаскања.\nЗапочните слањем поруке пријатељу. - No chats to display + Нема ћаскања - Folder settings + Подешавања фолдера @@ -5055,53 +5055,53 @@ Тастатура Шаљи помоћу тастера за нови ред - Chat folders + Фолдери за ћаскања - Add a chat folder + Додај фолдер за ћаскања - Organize your chats into folders and quickly switch between them on your chat list. + Организујте ћаскања по фолдерима и брзо се пребацујте између њих на листи ћаскања. - Folders + Фолдери - Create a folder + Креирај фолдер - All chats + Сва ћаскања - Suggested folders + Предложени фолдери - Unreads + Непрочитано - Unread messages from all chats + Непрочитане поруке из свих ћаскања - 1:1 chats + Ћаскања 1 на 1 - Only messages from direct chats + Само поруке из директних ћаскања Групе - Only message from group chats + Само поруке из групних ћаскања Додај - %1$s folder added. + Додат је фолдер %1$s. - Edit folder + Измени фолдер - Delete folder + Избриши фолдер - Add new folder + Додај нови фолдер - Mute all + Искључи сва обавештења - Reorder folders + Промени редослед фолдера Означи све као прочитано - %1$d chat type - %1$d chat types + Типова ћаскања: %1$d + Типова ћаскања: %1$d @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + Изузетих ћаскања: %1$d + Изузетих ћаскања: %1$d - Create a folder + Креирај фолдер - Folder name (required) + Назив фолдера (обавезно) - Included chats + Укључена ћаскања - Add chats + Додај ћаскања - Choose chats that you want to appear in this folder. + Изаберите ћаскања која желите да се појаве у овом фолдеру. Изузеци - Exclude chats + Искључи ћаскања - Choose chats that you do not want to appear in this folder. + Изаберите ћаскања која не желите да се појаве у овом фолдеру. - Only show unread chats + Прикажи само непрочитана ћаскања - When enabled, only chats with unread messages will be shown in this folder. + Када је ова опција активирана, у овом фолдеру ће бити приказана само ћаскања са непрочитаним порукама. Укључи ћаскања са искљученим обавештењима Креирај - Create folder? + Желите ли да креирате фолдер? - Do you want to create the chat folder \"%1$s\"? + Желите ли да креирате фолдер за ћаскања „%1$s“? - Create folder + Креирај фолдер - Edit folder + Измени фолдер Сачувај - Save changes? + Желите ли да сачувате промене? - Do you want to save the changes you\'ve made to this chat folder? + Желите ли да сачувате промене које сте направили у овом фолдеру за ћаскања? - Save changes + Сачувај промене Одбаци - Delete folder + Избриши фолдер - Delete this chat folder? + Желите ли да избришете овај фолдер за ћаскања? - Chat types + Типови ћаскања Готово @@ -7445,15 +7445,15 @@ - Cancel download + Откажи преузимање - Downloading: %1$s of %2$s (%3$s%%) + Преузима се: %1$s од %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Нема довољно простора за преузимање резервне копије. Да бисте наставили, ослободите %1$s простора. - Skip download + Прескочи преузимање - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Последње креирање резервне копије није успело. Проверите да ли вам је телефон повезан на Wi-Fi, а затим додирните „Направи резервну копију“ да пробате поново." @@ -7561,13 +7561,13 @@ Врста резервне копије је промењена, а претплата је отказана - Subscription canceled + Претплата је отказана Преузимање је завршено Резервна копија ће бити направљена преко ноћи. - Subscription inactive + Претплата је неактивна План за резервне копије @@ -7579,9 +7579,9 @@ Обнавља се на дан %1$s - Expires on %1$s + Истиче %1$s - Expired on %1$s + Истекло је %1$s Направите резервне копије историје порука да не бисте изгубили податке када набавите нови телефон или поново инсталирате Signal. @@ -7627,9 +7627,9 @@ Унесите PIN, лозинку или шаблон за уређај. - Re-enable backups + Поново омогући резервне копије - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Резервне копије су искључене и ваши подаци су избрисани из Signal-овог сервиса за безбедно складиштење. diff --git a/app/static-ips.gradle.kts b/app/static-ips.gradle.kts index 5a0642c5f9..9acb35e6d2 100644 --- a/app/static-ips.gradle.kts +++ b/app/static-ips.gradle.kts @@ -1,6 +1,6 @@ rootProject.extra["service_ips"] = """new String[]{"13.248.212.111","76.223.92.165"}""" -rootProject.extra["storage_ips"] = """new String[]{"142.251.40.147"}""" -rootProject.extra["cdn_ips"] = """new String[]{"18.238.49.106","18.238.49.6","18.238.49.66","18.238.49.90"}""" +rootProject.extra["storage_ips"] = """new String[]{"142.251.40.115"}""" +rootProject.extra["cdn_ips"] = """new String[]{"18.161.21.122","18.161.21.4","18.161.21.66","18.161.21.70"}""" rootProject.extra["cdn2_ips"] = """new String[]{"104.18.37.148","172.64.150.108"}""" rootProject.extra["cdn3_ips"] = """new String[]{"104.18.37.148","172.64.150.108"}""" rootProject.extra["sfu_ips"] = """new String[]{"34.96.102.241"}""" From 85f92e509a365b96b81b8bbbf1ef9b825df0c365 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Sat, 19 Oct 2024 10:13:04 -0400 Subject: [PATCH 41/51] Bump version to 7.21.3. --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ad3b7d533b..c10ec26a68 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -21,8 +21,8 @@ plugins { apply(from = "static-ips.gradle.kts") -val canonicalVersionCode = 1473 -val canonicalVersionName = "7.21.2" +val canonicalVersionCode = 1474 +val canonicalVersionName = "7.21.3" val currentHotfixVersion = 0 val maxHotfixVersions = 100 From 58f820d640d0ca6cbb113bd588b9ceafcf9ca884 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Mon, 21 Oct 2024 16:08:23 -0300 Subject: [PATCH 42/51] Remove check in SignalCallLinkRecord. --- .../storage/CallLinkRecordProcessorTest.kt | 15 --------------- .../api/storage/SignalCallLinkRecord.kt | 6 ------ 2 files changed, 21 deletions(-) diff --git a/app/src/test/java/org/thoughtcrime/securesms/storage/CallLinkRecordProcessorTest.kt b/app/src/test/java/org/thoughtcrime/securesms/storage/CallLinkRecordProcessorTest.kt index 7de669e1cb..06823d3479 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/storage/CallLinkRecordProcessorTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/storage/CallLinkRecordProcessorTest.kt @@ -8,7 +8,6 @@ package org.thoughtcrime.securesms.storage import okio.ByteString.Companion.EMPTY import okio.ByteString.Companion.toByteString import org.junit.Assert.assertFalse -import org.junit.Assert.assertThrows import org.junit.BeforeClass import org.junit.Test import org.signal.core.util.logging.Log @@ -74,20 +73,6 @@ class CallLinkRecordProcessorTest { assertFalse(result) } - @Test - fun `Given a proto with both an admin pass key and a deletion timestamp, assert invalid`() { - // GIVEN - val proto = CallLinkRecord.Builder().apply { - rootKey = mockCredentials.linkKeyBytes.toByteString() - adminPasskey = mockCredentials.adminPassBytes!!.toByteString() - deletedAtTimestampMs = System.currentTimeMillis() - }.build() - - assertThrows(IllegalStateException::class.java) { - SignalCallLinkRecord(STORAGE_ID, proto) - } - } - @Test fun `Given a proto with neither an admin pass key nor a deletion timestamp, assert valid`() { // GIVEN diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/storage/SignalCallLinkRecord.kt b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/storage/SignalCallLinkRecord.kt index f937a6798e..07668e6968 100644 --- a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/storage/SignalCallLinkRecord.kt +++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/storage/SignalCallLinkRecord.kt @@ -19,12 +19,6 @@ class SignalCallLinkRecord(private val id: StorageId, private val proto: CallLin val adminPassKey: ByteArray = proto.adminPasskey.toByteArray() val deletionTimestamp: Long = proto.deletedAtTimestampMs - init { - if (deletionTimestamp != 0L && adminPassKey.isNotEmpty()) { - throw IllegalStateException("Cannot have nonzero deletion timestamp ($deletionTimestamp) and admin passkey!") - } - } - fun toProto(): CallLinkRecord { return proto } From ac38608ad57aa1aefc3182808cc8a55f87996aec Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 22 Oct 2024 10:27:33 -0400 Subject: [PATCH 43/51] Update translations and other static files. --- app/src/main/res/values-af/strings.xml | 112 ++++++++--------- app/src/main/res/values-ar/strings.xml | 72 +++++------ app/src/main/res/values-az/strings.xml | 112 ++++++++--------- app/src/main/res/values-bg/strings.xml | 116 +++++++++--------- app/src/main/res/values-bn/strings.xml | 110 ++++++++--------- app/src/main/res/values-bs/strings.xml | 120 +++++++++--------- app/src/main/res/values-ca/strings.xml | 110 ++++++++--------- app/src/main/res/values-cs/strings.xml | 118 +++++++++--------- app/src/main/res/values-da/strings.xml | 110 ++++++++--------- app/src/main/res/values-de/strings.xml | 136 ++++++++++----------- app/src/main/res/values-el/strings.xml | 110 ++++++++--------- app/src/main/res/values-es/strings.xml | 116 +++++++++--------- app/src/main/res/values-eu/strings.xml | 112 ++++++++--------- app/src/main/res/values-fa/strings.xml | 110 ++++++++--------- app/src/main/res/values-fi/strings.xml | 110 ++++++++--------- app/src/main/res/values-fr/strings.xml | 12 +- app/src/main/res/values-ga/strings.xml | 128 +++++++++---------- app/src/main/res/values-gl/strings.xml | 112 ++++++++--------- app/src/main/res/values-hi/strings.xml | 112 ++++++++--------- app/src/main/res/values-hu/strings.xml | 110 ++++++++--------- app/src/main/res/values-in/strings.xml | 104 ++++++++-------- app/src/main/res/values-it/strings.xml | 110 ++++++++--------- app/src/main/res/values-iw/strings.xml | 118 +++++++++--------- app/src/main/res/values-ja/strings.xml | 106 ++++++++-------- app/src/main/res/values-ka/strings.xml | 112 ++++++++--------- app/src/main/res/values-kk/strings.xml | 112 ++++++++--------- app/src/main/res/values-km/strings.xml | 114 ++++++++--------- app/src/main/res/values-kn/strings.xml | 112 ++++++++--------- app/src/main/res/values-ko/strings.xml | 106 ++++++++-------- app/src/main/res/values-ky/strings.xml | 108 ++++++++-------- app/src/main/res/values-lv/strings.xml | 116 +++++++++--------- app/src/main/res/values-mk/strings.xml | 112 ++++++++--------- app/src/main/res/values-ml/strings.xml | 112 ++++++++--------- app/src/main/res/values-mr/strings.xml | 112 ++++++++--------- app/src/main/res/values-ms/strings.xml | 102 ++++++++-------- app/src/main/res/values-my/strings.xml | 112 ++++++++--------- app/src/main/res/values-nb/strings.xml | 112 ++++++++--------- app/src/main/res/values-nl/strings.xml | 120 +++++++++--------- app/src/main/res/values-pa/strings.xml | 120 +++++++++--------- app/src/main/res/values-pl/strings.xml | 118 +++++++++--------- app/src/main/res/values-pt-rBR/strings.xml | 116 +++++++++--------- app/src/main/res/values-pt/strings.xml | 110 ++++++++--------- app/src/main/res/values-ro/strings.xml | 114 ++++++++--------- app/src/main/res/values-ru/strings.xml | 118 +++++++++--------- app/src/main/res/values-sl/strings.xml | 120 +++++++++--------- app/src/main/res/values-sq/strings.xml | 112 ++++++++--------- app/src/main/res/values-sv/strings.xml | 110 ++++++++--------- app/src/main/res/values-sw/strings.xml | 90 +++++++------- app/src/main/res/values-ta/strings.xml | 112 ++++++++--------- app/src/main/res/values-te/strings.xml | 114 ++++++++--------- app/src/main/res/values-th/strings.xml | 108 ++++++++-------- app/src/main/res/values-tl/strings.xml | 96 +++++++-------- app/src/main/res/values-tr/strings.xml | 110 ++++++++--------- app/src/main/res/values-ug/strings.xml | 108 ++++++++-------- app/src/main/res/values-uk/strings.xml | 132 ++++++++++---------- app/src/main/res/values-ur/strings.xml | 110 ++++++++--------- app/src/main/res/values-vi/strings.xml | 106 ++++++++-------- app/src/main/res/values-yue/strings.xml | 110 ++++++++--------- app/src/main/res/values-zh-rCN/strings.xml | 108 ++++++++-------- app/static-ips.gradle.kts | 2 +- 60 files changed, 3246 insertions(+), 3246 deletions(-) diff --git a/app/src/main/res/values-af/strings.xml b/app/src/main/res/values-af/strings.xml index 49f9688898..300e76bcbd 100644 --- a/app/src/main/res/values-af/strings.xml +++ b/app/src/main/res/values-af/strings.xml @@ -369,7 +369,7 @@ Boodskappe - Chat types + Kletstipes Boodskap %1$s @@ -4053,9 +4053,9 @@ Maak Kamera oop Nog geen kletse nie.\nBegin deur ’n boodskap aan ’n vriend te skryf. - No chats to display + Geen kletse om te vertoon nie - Folder settings + Vouerinstellings @@ -5055,53 +5055,53 @@ Toetsbord Stuur met Enter-sleutel - Chat folders + Kletsvouers - Add a chat folder + Voeg \'n kletsvouer by - Organize your chats into folders and quickly switch between them on your chat list. + Organiseer jou kletse in vouers en wissel vinnig tussen hulle in jou kletslys. - Folders + Vouers - Create a folder + Skep \'n vouer - All chats + Alle kletse - Suggested folders + Voorgestelde vouers - Unreads + Ongeleesdes - Unread messages from all chats + Ongeleesde boodskappe uit alle kletse - 1:1 chats + 1:1-kletse - Only messages from direct chats + Slegs boodskappe uit direkte kletse Groepe - Only message from group chats + Slegs boodskappe uit groepkletse Voeg toe - %1$s folder added. + %1$s vouer bygevoeg. - Edit folder + Wysig vouer - Delete folder + Skrap vouer - Add new folder + Voeg nuwe vouer by - Mute all + Demp almal - Reorder folders + Herrangskik vouers Merk alles as gelees - %1$d chat type - %1$d chat types + %1$d kletstipe + %1$d kletstipes @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d klets uitgesluit + %1$d kletse uitgesluit - Create a folder + Skep \'n vouer - Folder name (required) + Vouernaam (word vereis) - Included chats + Kletse ingesluit - Add chats + Voeg kletse by - Choose chats that you want to appear in this folder. + Kies kletse wat jy in hierdie vouer wil laat verskyn. Uitsonderings - Exclude chats + Sluit kletse uit - Choose chats that you do not want to appear in this folder. + Kies kletse wat jy nie in hierdie vouer wil laat verskyn nie. - Only show unread chats + Wys net ongeleesde kletse - When enabled, only chats with unread messages will be shown in this folder. + Wanneer dit geaktiveer is, sal slegs kletse met ongeleesde boodskappe in hierdie vouer gewys word. - Include muted chats + Sluit gedempte kletse in Skep - Create folder? + Skep vouer? - Do you want to create the chat folder \"%1$s\"? + Wil jy die kletsvouer \"%1$s\" skep? - Create folder + Skep vouer - Edit folder + Wysig vouer Stoor - Save changes? + Stoor veranderinge? - Do you want to save the changes you\'ve made to this chat folder? + Wil jy die veranderinge stoor wat jy aan hierdie kletsvouer gemaak het? - Save changes + Stoor veranderinge Wys af - Delete folder + Skrap vouer - Delete this chat folder? + Skrap hierdie kletsvouer? - Chat types + Kletstipes Klaar @@ -7445,15 +7445,15 @@ - Cancel download + Kanselleer aflaai - Downloading: %1$s of %2$s (%3$s%%) + Besig om af te laai: %1$s van %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Nie genoeg stoorruimte om jou rugsteun af te laai nie. Om voort te gaan, stel %1$s stoorruimte beskikbaar. - Skip download + Slaan aflaai oor - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Jou laaste rugsteun kon nie voltooi word nie. Maak seker dat jou foon aan wi-fi gekoppel is en tik Rugsteun nou om weer te probeer." @@ -7561,13 +7561,13 @@ Rugsteuntipe verander en intekening gekanselleer - Subscription canceled + Intekening gekanselleer Aflaai voltooi Rugsteun sal oornag geskep word. - Subscription inactive + Intekening onaktief Rugsteunplan @@ -7579,9 +7579,9 @@ Hernu %1$s - Expires on %1$s + Verstryk op %1$s - Expired on %1$s + Het op %1$s verstryk Rugsteun jou boodskapgeskiedenis sodat jy nooit data verloor wanneer jy \'n nuwe foon kry of Signal herinstalleer nie. @@ -7627,9 +7627,9 @@ Voer asseblief jou toestel se pin, wagwoord of patroon in. - Re-enable backups + Heraktiveer rugsteun - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Rugsteun is afgeskakel en jou data is uit Signal se veilige stoordiens geskrap. diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 54e5592895..44d308682b 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -3274,11 +3274,11 @@ روابط أو كودات الـ QR - أسماء المُستخدمين لها رمز ورابط استجابة سريعة فريدين يُمكنك مُشاركتُهما مع أصدقائك لكي يبدؤوا الدردشة معك في الآن. + أسماء المُستخدمين لها رابط وكود QR فريدين يُمكنك مُشاركتُهما مع أصدقائك لكي يبدؤوا الدردشة معك بسرعة. ليس الآن - إعداد اسم المستخدم + إعداد اسم المُستخدم شغِّل الفيديو @@ -3501,9 +3501,9 @@ إرسال مدفوعات - تفعيل الدفوعات + تفعيل المدفوعات - لقد حذفت هذا الشخص، وبمراسلتك لهم سَتتم إضافتهم إلى قائمتك. + حذفتَ جهة الاتصال هذه، وبمراسلتك لها سَتتم إضافتها إلى قائمتك. الخيارات: @@ -3558,23 +3558,23 @@ تمَّ تفعيل إشعارات المكالمات. تفعيل إشعارات المكالمات تفعيل نشاط الخلفية - يبدو أن كل شيء جيد الآن ! - لتلقي إشعارات المكالمات، يكفي اللمس هنا وتشغيل « إظهار الإشعارات ». - لتلقي إشعارات المكالمات، يُرجى اللمس هنا ثم تفعيل الإشعارات وبعدها التأكد من أن الأصوات والنوافذ المنبثقة مُفعَّلة. + يبدو أن كل شيء جيد الآن! + لتلقي إشعارات المكالمات، يكفي النقر هنا وتشغيل \"إظهار الإشعارات\". + لتلقي إشعارات المكالمات، يُرجى النقر هنا ثم تفعيل الإشعارات وبعدها التأكُّد من أن الأصوات والنوافذ المنبثقة مُفعَّلة. - لتلقي إشعارات المكالمات، يُرجى اللمس هنا ثم تفعيل أنشطة الخلفية في إعدادات البطارية. + لتلقي إشعارات المكالمات، يُرجى النقر هنا ثم تفعيل نشاط الخلفية في إعدادات \"البطارية\". الإعدادات - لتلقي إشعارات المكالمات، يكفي لمس « الإعدادات » ثم تفعيل « إظهار الإشعارات ». - لتلقي إشعارات المكالمات، يُرجى لمس « الإعدادات » ثم تفعيل الإشعارات وبعدها التأكد من أن الأصوات والنوافذ المنبثقة مُفعَّلة. - لتلقي إشعارات المكالمات، يُرجى لمس « الإعدادات » ثم تفعيل أنشطة الخلفية في إعدادات البطارية. + لتلقي إشعارات المكالمات، يكفي النقر على \"الإعدادات\" ثم تفعيل \"إظهار الإشعارات\". + لتلقي إشعارات المكالمات، يُرجى النقر على \"الإعدادات\" ثم تفعيل الإشعارات وبعدها التأكُّد من أن الأصوات والنوافذ المنبثقة مُفعَّلة. + لتلقي إشعارات المكالمات، يُرجى لمس \"الإعدادات\" ثم تفعيل أنشطة الخلفية في إعدادات \"البطارية\". - تحميل البلدان جارٍ … + جارٍ تحميل البلدان… بحث - لا توجد دولة مطابقة + لا توجد دول مطابقة - مسح رمز الاستجابة السريع المبين على الجهاز لربطه. + مسح كود الـ QR الظاهر على الجهاز لربطه. ربط الجهاز @@ -3613,8 +3613,8 @@ %1$d ساعة %1$d ساعتين %1$d ساعات - %1$d ساعات - %1$d ساعات + %1$d ساعةً + %1$d ساعةٍ %1$d ساعة @@ -3624,8 +3624,8 @@ %1$d يوم %1$d يومين %1$d أيام - %1$d أيام - %1$d أيام + %1$d يومًا + %1$d يومٍ %1$d يوم @@ -3635,25 +3635,25 @@ %1$d أسبوع %1$d أسبوعين %1$d أسابيع - %1$d أسابيع - %1$d أسابيع + %1$d أسبوعًا + %1$d أسبوعٍ %1$d أسبوع ‏%1$s‏%2$s‏ - رقم اﻷمان مع %1$s قد تغير ولم يعد التحقُّق السابق منه وافٍ. - التحقق من أرقام السلامة مع كل من %1$s و%2$s لم يعد واف بعد الآن. - أرقام السلامة مع كل من %1$s، %2$s، و%3$s قد تغيّيرت، والتحقّق غير وافٍ بعد الآن. + رقم اﻷمان مع %1$s قد تغيَّر ولم يعد التحقُّق السابق منه سارٍ. + لم يعد التحقُّق من أرقام الأمان مع كل من %1$s و%2$s سارٍ بعد الآن. + لم يعد التحقُّق من أرقام الأمان مع كل من %1$s، %2$s، و%3$s سارٍ بعد الآن. - لقد تغير رقم اﻷمان مع %1$s والتحقُّق السابق غير وافٍ، قد يعني هذا إما محاولة أحد ما اعتراض المحادثة أو ببساطة قيام %1$s بإعادة تثبيت سيجنال. - لقد تغير رقم اﻷمان مع كل من %1$s و%2$s، والتحقُّق السابق غير وافٍ، وهذا يعني إما محاولة أحدٍ اعتراض المحادثة أو ببساطة قيامهما بإعادة تثبيت سيجنال. - تم تغيير أرقام السلامة مع %1$s، %2$s، و%3$s، والتحقّق السابق غير وافٍ، وهذا يعني إما محاولة أحداً لاعتراض المحادثة أو ببساطة قيامهم بإعادة تثبيت سيجنال. + تغيَّر رقم اﻷمان مع %1$s والتحقُّق السابق غير سارٍ. قد يعني هذا إما محاولة شخص ما مقاطعة المحادثة أو ببساطة قيام %1$s بإعادة تثبيت سيجنال. + التحقُّق من رقم اﻷمان الخاص بك مع كل من %1$s و%2$s لم يعُد ساريًا. وهذا يعني إما محاولة شخص ما مقاطعة المحادثة أو ببساطة قيامه بإعادة تثبيت سيجنال. + لتحقُّق من رقم اﻷمان الخاص بك مع كل من %1$s، %2$s، و%3$s لم يعُد ساريًا، وهذا يعني إما محاولة شخص ما مقاطعة المحادثة أو ببساطة قيامه بإعادة تثبيت سيجنال. - لقد تغير رقم اﻷمان بينك وبين %1$s للتو. - لقد تغيرت أرقام السلامة للتو مع كل من%1$s و%2$s. - لقد تغيرت أرقام السلامة مع كل من %1$s و %2$s و %3$s للتو. + تغيَّر رقم اﻷمان بينك وبين %1$s الآن. + تغيَّرت أرقام الأمان الآن مع كل من %1$s و%2$s. + تغيَّرت أرقام الأمان مع كل من %1$s و %2$s و %3$s الآن. %1$d آخر @@ -3665,23 +3665,23 @@ - البحث عن الصور المتحركة + البحث في الصور المتحركة - لم نعثر على شيء + لم يظهر شيء عند البحث جارٍ التحميل - لا يوجد ملف متعدّد الوسائط + لا يوجد ملف وسائط - إظهار + عرض اعادة إرسال - لقد نُسخ ثم أُرسل مع التاريخ إلى الحافظة + تمَّ نسخ المخطَّط الزمني وإرساله إلى الحافظة ستظهر تحديثات قصتك هنا. @@ -3689,12 +3689,12 @@ %1$s انضموا إلى المجموعة. %1$s انضم إلى المجموعة. - %1$s انضموا إلى المجموعة. + %1$s انضما إلى المجموعة. %1$s انضموا إلى المجموعة. %1$s انضموا إلى المجموعة. %1$s انضموا إلى المجموعة. - أسم المجموعة الآن \'%1$s\'. + اسم المجموعة الآن هو \'%1$s\'. فتح القفل diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index a23df89c4f..800b84d00f 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -369,7 +369,7 @@ Mesajlar - Chat types + Çat növləri Mesaj %1$s @@ -4053,9 +4053,9 @@ Kameranı aç Hələ ki, heç bir çat yoxdur.\nBir dostunuza mesaj göndərərək başlayın. - No chats to display + Göstəriləcək çat yoxdur - Folder settings + Qovluq parametrləri @@ -5055,53 +5055,53 @@ Klaviatura \"Enter\"ə basaraq göndər - Chat folders + Çat qovluqları - Add a chat folder + Bir çat qovluğu əlavə et - Organize your chats into folders and quickly switch between them on your chat list. + Çatlarınızı qovluqlara ayırın və çat siyahısında onlar arasında sürətli keçid edin. - Folders + Qovluqlar - Create a folder + Qovluq yarat - All chats + Bütün çatlar - Suggested folders + Təqdim olunan qovluqlar - Unreads + Oxunmamışlar - Unread messages from all chats + Bütün çatlardan oxunmamış mesajlar - 1:1 chats + 1-ə 1 çatlar - Only messages from direct chats + Yalnız birbaşa çatlardan olan mesajlar Qruplar - Only message from group chats + Yalnız qrup çatlarından olan mesaj Əlavə et - %1$s folder added. + %1$s adlı qovluq əlavə edildi. - Edit folder + Qovluğu redaktə et - Delete folder + Qovluğu sil - Add new folder + Yeni qovluq əlavə et - Mute all + Hamısının səsini bağla - Reorder folders + Qovluq sırasını dəyiş Hamısını oxundu olaraq işarələ - %1$d chat type - %1$d chat types + %1$d çat növü + %1$d çat növü @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d çat çıxarıldı + %1$d çat çıxarıldı - Create a folder + Qovluq yarat - Folder name (required) + Qovluq adı (zəruri) - Included chats + Əhatə olunan çatlar - Add chats + Çatlar əlavə et - Choose chats that you want to appear in this folder. + Bu qovluqda görünməsini istədiyiniz çatları seçin. İstisnalar - Exclude chats + Çatları çıxar - Choose chats that you do not want to appear in this folder. + Bu qovluqda görünməsini istəmədiyiniz çatları seçin. - Only show unread chats + Yalnız oxunmamış çatları göstər - When enabled, only chats with unread messages will be shown in this folder. + Aktivləşdirildikdə, bu qovluqda yalnız oxunmamış mesajları olan çatlar görünəcək. - Include muted chats + Səssiz edilmiş çatları daxil et Yarat - Create folder? + Qovluq yaradılsın? - Do you want to create the chat folder \"%1$s\"? + \"%1$s\" adlı bir çat qovluğu yaratmaq istəyirsiniz? - Create folder + Qovluq yarat - Edit folder + Qovluğu redaktə et Saxla - Save changes? + Dəyişikliklər yaddaşda saxlansın? - Do you want to save the changes you\'ve made to this chat folder? + Bu çat qovluğunda etdiyiniz dəyişiklikləri yaddaşda saxlamaq istəyirsiniz? - Save changes + Dəyişiklikləri yaddaşda saxla Sil - Delete folder + Qovluğu sil - Delete this chat folder? + Bu çat qovluğu silinsin? - Chat types + Çat növləri Bitdi @@ -7445,15 +7445,15 @@ - Cancel download + Endirməni ləğv et - Downloading: %1$s of %2$s (%3$s%%) + Endirilir: %1$s / %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Ehtiyat nüsxənizi endirmək üçün kifayət qədər boş yer yoxdur. Davam etmək üçün %1$s yer boşaldın. - Skip download + Endirməni ötür - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Son ehtiyat nüsxənizi tamamlamaq mümkün olmadı. Telefonunuzun Wi-Fi-a qoşulduğundan əmin olun və yenidən cəhd etmək üçün indi \"Ehtiyat nüsxə\" seçiminə toxunun." @@ -7561,13 +7561,13 @@ Ehtiyat nüsxə növü dəyişdirildi və abunəlik ləğv edildi - Subscription canceled + Abunəlik ləğv edildi Endirmə tamamlandı Ehtiyat nüsxə gecə çıxarılacaq. - Subscription inactive + Abunəlik qeyri-aktivdir Ehtiyat nüsxə planı @@ -7579,9 +7579,9 @@ %1$s yenilənir - Expires on %1$s + %1$s tarixində vaxtı bitir - Expired on %1$s + %1$s tarixində vaxtı bitir Yeni telefon aldığınız və ya Signal-ı təkrar quraşdırdığınız zaman məlumatları itirməmək üçün mesaj tarixçəsinin ehtiyat nüsxəsini çıxarın. @@ -7627,9 +7627,9 @@ Cihazın PIN kodunu, parolunu və ya qrafik şifrəsini daxil edin. - Re-enable backups + Ehtiyat nüsxələrini yenidən aktivləşdir - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Ehtiyat nüsxələr deaktiv edilib və verilənləriniz Signal-ın təhlükəsiz saxlama xidmətindən silinib. diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 3389bcebc6..514e896e54 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -369,7 +369,7 @@ Съобщения - Chat types + Видове чатове Съобщение %1$s @@ -4053,9 +4053,9 @@ Отвори Kамера Все още няма чатове.\nЗапочнете, като изпратите съобщение на някой приятел. - No chats to display + Няма чатове за показване - Folder settings + Настройки за папки @@ -5055,53 +5055,53 @@ Клавиатура Изпратете с enter - Chat folders + Папки за чат - Add a chat folder + Добавяне на папка за чат - Organize your chats into folders and quickly switch between them on your chat list. + Организирайте чатовете си в папки и бързо превключвайте между тях в списъка с чатове. - Folders + Папки - Create a folder + Създаване на папка - All chats + Всички чатове - Suggested folders + Предложени папки - Unreads + Непрочетени - Unread messages from all chats + Непрочетени съобщения от всички чатове - 1:1 chats + Чатове 1:1 - Only messages from direct chats + Само съобщения от директни чатове Групи - Only message from group chats + Само съобщения от групови чатове - Добави + Добавяне - %1$s folder added. + Папката „%1$s“ е добавена. - Edit folder + Редактиране на папка - Delete folder + Изтриване на папка - Add new folder + Добавяне на нова папка - Mute all + Заглушаване на всички - Reorder folders + Пренареждане на папките Маркиране на всички като прочетени - %1$d chat type - %1$d chat types + %1$d вид чатове + %1$d вида чатове @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d изключен чат + %1$d изключени чата - Create a folder + Създаване на папка - Folder name (required) + Име на папка (задължително) - Included chats + Включени чатове - Add chats + Добавяне на чатове - Choose chats that you want to appear in this folder. + Изберете чатовете, които искате да се показват в тази папка. Изключения - Exclude chats + Изключване на чатове - Choose chats that you do not want to appear in this folder. + Изберете чатовете, които не искате да се показват в тази папка. - Only show unread chats + Показване само на непрочетените чатове - When enabled, only chats with unread messages will be shown in this folder. + Когато е активирано, в тази папка ще се показват само чатове с непрочетени съобщения. - Include muted chats + Включване на заглушените чатове Създаване - Create folder? + Създаване на папка? - Do you want to create the chat folder \"%1$s\"? + Искате ли да създадете папката за чат „%1$s“? - Create folder + Създаване на папка - Edit folder + Редактиране на папка - Запази + Запазване - Save changes? + Запазване на промените? - Do you want to save the changes you\'ve made to this chat folder? + Искате ли да запазите промените, направени по тази папка за чат? - Save changes + Запазване на промените Отхвърляне - Delete folder + Изтриване на папка - Delete this chat folder? + Изтриване на тази папка за чат? - Chat types + Видове чатове Готово @@ -7445,15 +7445,15 @@ - Cancel download + Отмяна на изтеглянето - Downloading: %1$s of %2$s (%3$s%%) + Изтегляне: %1$s от %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Недостатъчно място за изтегляне на вашето резервно копие. За да продължите, освободете %1$s пространство. - Skip download + Пропускане на изтеглянето - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Последното ви резервно копиране не можа да бъде завършено. Уверете се, че телефонът ви е свързан към Wi-Fi и докоснете „Резервно копиране сега“, за да опитате отново." @@ -7561,13 +7561,13 @@ Видът резервно копие е променен и абонаментът е отменен - Subscription canceled + Абонаментът е отменен Изтеглянето е завършено Резервното копие ще бъде създадено през нощта. - Subscription inactive + Абонаментът е неактивен План за резервно копиране @@ -7579,9 +7579,9 @@ Подновява се на %1$s - Expires on %1$s + Изтича на %1$s - Expired on %1$s + Изтекъл на %1$s Създайте резервно копие на историята на съобщенията си, за да не изгубите данните, когато си вземете нов телефон или преинсталирате Signal. @@ -7627,9 +7627,9 @@ Моля, въведете ПИН, парола или фигура за вашето устройство. - Re-enable backups + Повторно активиране на резервното копиране - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Резервните копия са изключени и данните ви са изтрити от услугата за сигурно съхранение на Signal. diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index 750bde21af..c2e70110bf 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -369,7 +369,7 @@ ম্যাসেজ - Chat types + চ্যাটের ধরন %1$sটি বার্তা @@ -4053,9 +4053,9 @@ ক্যামেরা চালু করুন এখনো কোনো চ্যাট নেই।\nবন্ধুকে ম্যাসেজ পাঠিয়ে শুরু করুন। - No chats to display + দেখানোর মতো কোনো চ্যাট নেই - Folder settings + ফোল্ডার সেটিংস @@ -5055,53 +5055,53 @@ কীবোর্ড এন্টার দিয়ে পাঠান - Chat folders + চ্যাট ফোল্ডার - Add a chat folder + একটি চ্যাট ফোল্ডার যোগ করুন - Organize your chats into folders and quickly switch between them on your chat list. + ফোল্ডারগুলোতে আপনার চ্যাট সাজান এবং আপনার চ্যাট তালিকায় দ্রুত সেগুলোর মধ্যে সুইচ করুন। - Folders + ফোল্ডার - Create a folder + একটি ফোল্ডার তৈরি করুন - All chats + সকল চ্যাট - Suggested folders + সুপারিশৃত ফোল্ডারসমূহ - Unreads + অপঠিত - Unread messages from all chats + সকল চ্যাট থেকে অপঠিত মেসেজ - 1:1 chats + 1:1 চ্যাট - Only messages from direct chats + শুধুমাত্র সরাসরি চ্যাট থেকে আসা মেসেজ গ্রুপসমূহ - Only message from group chats + শুধুমাত্র গ্রুপ চ্যাট থেকে আসা মেসেজ যোগ করুন - %1$s folder added. + %1$s ফোল্ডার যোগ করা হয়েছে। - Edit folder + ফোল্ডার এডিট করুন - Delete folder + ফোল্ডার মুছে ফেলুন - Add new folder + নতুন ফোল্ডার যোগ করুন - Mute all + সব মিউট করুন - Reorder folders + ফোল্ডার পুনরায় সাজান সমস্ত পড়া হয়েছে চিহ্নিত করুন - %1$d chat type - %1$d chat types + %1$d চ্যাটের ধরন + %1$d চ্যাটের ধরন @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d চ্যাট বাদ দেওয়া হয়েছে + %1$d চ্যাট বাদ দেওয়া হয়েছে - Create a folder + একটি ফোল্ডার তৈরি করুন - Folder name (required) + ফোল্ডারের নাম (আবশ্যক) - Included chats + চ্যাট অন্তর্ভুক্ত - Add chats + চ্যাট যোগ করুন - Choose chats that you want to appear in this folder. + আপনি এই ফোল্ডারে যেসব চ্যাট দেখতে চান সেগুলো বেছে নিন। প্রত্যাশা - Exclude chats + চ্যাট বাদ দিন - Choose chats that you do not want to appear in this folder. + আপনি এই ফোল্ডারে দেখতে চান না এমন চ্যাট বেছে নিন। - Only show unread chats + শুধুমাত্র অপঠিত চ্যাট দেখান - When enabled, only chats with unread messages will be shown in this folder. + যখন সক্রিয় করা হয়, তখন শুধুমাত্র অপঠিত মেসেজ সহ চ্যাট এই ফোল্ডারে দেখানো হবে। মিউট করা চ্যাট অন্তর্ভুক্ত করুন তৈরি - Create folder? + ফোল্ডার তৈরি করবেন? - Do you want to create the chat folder \"%1$s\"? + আপনি কি চ্যাট ফোল্ডার \"%1$s\" তৈরি করতে চান? - Create folder + ফোল্ডার তৈরি করুন - Edit folder + ফোল্ডার এডিট করুন সেভ করুন - Save changes? + পরিবর্তন সেভ করবেন? - Do you want to save the changes you\'ve made to this chat folder? + আপনি কি এই চ্যাট ফোল্ডারে করা পরিবর্তন সেভ করতে চান? - Save changes + পরিবর্তন সেভ করুন বাতিল করুন - Delete folder + ফোল্ডার মুছে ফেলুন - Delete this chat folder? + এই চ্যাট ফোল্ডারটি মুছে ফেলবেন? - Chat types + চ্যাটের ধরন সম্পন্ন হয়েছে @@ -7445,15 +7445,15 @@ - Cancel download + ডাউনলোড বাতিল করুন - Downloading: %1$s of %2$s (%3$s%%) + ডাউনলোড হচ্ছে: %2$s-এর মধ্যে %1$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + আপনার ব্যাকআপ ডাউনলোড করার জন্য পর্যাপ্ত জায়গা নেই। এগিয়ে যেতে %1$s জায়গা খালি করুন। - Skip download + ডাউনলোড এড়িয়ে যান - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "আপনার শেষ ব্যাকআপ সম্পন্ন করা যায়নি। আপনার ফোন ওয়াইফাই-এর সাথে সংযুক্ত আছে কিনা তা নিশ্চিত করুন এবং আবার চেষ্টা করতে এখনই ব্যাক আপ ট্যাপ করুন।" @@ -7561,13 +7561,13 @@ ব্যাকআপের ধরন পরিবর্তিত হয়েছে এবং সাবস্ক্রিপশন বাতিল করা হয়েছে - Subscription canceled + সাবস্ক্রিপশন বাতিল করা হয়েছে ডাউনলোড সম্পন্ন হয়েছে রাতের বেলা ব্যাকআপ তৈরি করা হবে। - Subscription inactive + সাবস্ক্রিপশন নিষ্ক্রিয় অবস্থায় আছে ব্যাকআপ প্ল্যান @@ -7579,9 +7579,9 @@ %1$s নবায়ন করছে - Expires on %1$s + %1$s তারিখে মেয়াদ শেষ হবে - Expired on %1$s + %1$s তারিখে মেয়াদ শেষ হবে আপনার মেসেজের ইতিহাসের ব্যাকআপ নিন, যাতে আপনি যখন কোনো নতুন ফোন ব্যবহার করা শুরু করবেন বা Signal পুনরায় ইনস্টল করবেন তখন আপনি কখনোই ডেটা হারাবেন না। @@ -7627,9 +7627,9 @@ অনুগ্রহ করে আপনার ডিভাইসের পিন, পাসওয়ার্ড বা প্যাটার্ন লিখুন। - Re-enable backups + ব্যাকআপ পুনরায় সচল করুন - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + ব্যাকআপ বন্ধ করা হয়েছে এবং আপনার ডেটা Signal-এর সুরক্ষিত স্টোরেজ সার্ভিস থেকে মুছে ফেলা হয়েছে। diff --git a/app/src/main/res/values-bs/strings.xml b/app/src/main/res/values-bs/strings.xml index f561a843dc..efa70e9e2a 100644 --- a/app/src/main/res/values-bs/strings.xml +++ b/app/src/main/res/values-bs/strings.xml @@ -375,7 +375,7 @@ Poruke - Chat types + Vrste chata Poruka %1$s @@ -4259,9 +4259,9 @@ Pokreni kameru Još nema chatova.\nZapočnite slanjem poruke prijatelju. - No chats to display + Nema chatova za prikaz - Folder settings + Postavke foldera @@ -5293,55 +5293,55 @@ Tastatura Pošaljite sa Enter - Chat folders + Folderi chata - Add a chat folder + Dodaj folder chata - Organize your chats into folders and quickly switch between them on your chat list. + Organizirajte razgovore u foldere i brzo prelazite između njih na svojoj listi za chatove. - Folders + Folderi - Create a folder + Kreiraj folder - All chats + Svi chatovi - Suggested folders + Predloženi folderi - Unreads + Nepročitano - Unread messages from all chats + Nepročitane poruke sa svih chatova - 1:1 chats + Chatovi 1:1 - Only messages from direct chats + Samo poruke iz direktnih chatova Grupe - Only message from group chats + Samo poruke iz grupnih chatova Dodaj - %1$s folder added. + Dodano foldera: %1$s. - Edit folder + Uredi folder - Delete folder + Izbriši folder - Add new folder + Dodaj novi folder - Mute all + Isključi zvuk za sve - Reorder folders + Promijeni redoslijed foldera Sve označi kao pročitano - %1$d chat type - %1$d chat types - %1$d chat types - %1$d chat types + %1$d vrsta chata + %1$d vrste chata + %1$d vrsta chata + %1$d vrsta chata @@ -5352,63 +5352,63 @@ - %1$d chat excluded - %1$d chats excluded - %1$d chats excluded - %1$d chats excluded + %1$d chat je izuzet + %1$d chata su izuzeta + %1$d chatova je izuzeto + %1$d chatova je izuzeto - Create a folder + Kreiraj folder - Folder name (required) + Naziv foldera (obavezno) - Included chats + Uključeni chatovi - Add chats + Dodaj chatove - Choose chats that you want to appear in this folder. + Odaberite razgovore koji želite da se pojavljuju u ovom folderu. Izuzeci - Exclude chats + Isključi chatove - Choose chats that you do not want to appear in this folder. + Odaberite chatove za koje ne želite da se pojavljuju u ovom folderu. - Only show unread chats + Prikaži samo nepročitane chatove - When enabled, only chats with unread messages will be shown in this folder. + Kada je omogućeno, u ovom folderu će biti prikazani samo razgovori sa nepročitanim porukama. - Include muted chats + Uključite chatove sa isključenim zvukom Kreiraj - Create folder? + Kreirati folder? - Do you want to create the chat folder \"%1$s\"? + Želite li kreirati folder za chat \"%1$s\"? - Create folder + Kreiraj folder - Edit folder + Uredi folder Pohrani - Save changes? + Sačuvati promjene? - Do you want to save the changes you\'ve made to this chat folder? + Želite li sačuvati promjene koje ste napravili u ovom folderu za chat? - Save changes + Sačuvaj promjene Poništi - Delete folder + Izbriši folder - Delete this chat folder? + Izbrisati ovaj folder za chat? - Chat types + Vrste chata U redu @@ -7767,15 +7767,15 @@ - Cancel download + Otkaži preuzimanje - Downloading: %1$s of %2$s (%3$s%%) + Preuzimanje: %1$s od %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Nema dovoljno prostora za preuzimanje vaše sigurnosne kopije. Da nastavite oslobodite %1$s prostora. - Skip download + Preskoči preuzimanje - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Vaša posljednja sigurnosna kopija nije mogla biti dovršena. Provjerite je li vaš telefon povezan na Wi-F i dodirnite Kreiraj sigurnosnu kopiju sada da pokušate ponovo." @@ -7885,13 +7885,13 @@ Vrsta sigurnosne kopije je promijenjena i pretplata je otkazana - Subscription canceled + Pretplata je otkazana Preuzimanje je završeno Sigurnosna kopija će biti kreirana tokom noći. - Subscription inactive + Pretplata je neaktivna Paket rezervne kopije @@ -7903,9 +7903,9 @@ Obnavlja se %1$s - Expires on %1$s + Ističe %1$s - Expired on %1$s + Isteklo %1$s Kreirajte sigurnosnu kopiju historije poruka da nikada ne izgubite podatke kada nabavite novi telefon ili ponovo instalirate Signal. @@ -7951,9 +7951,9 @@ Unesite PIN za svoj uređaj, lozinku ili uzorak. - Re-enable backups + Ponovo omogućite sigurnosne kopije - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Sigurnosne kopije su isključene i vaši podaci su izbrisani iz Signalove usluge sigurnog pohranjivanja. diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 1f450e12a8..e2320e53d8 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -369,7 +369,7 @@ Missatges - Chat types + Tipus de xat Missatge %1$s @@ -4053,9 +4053,9 @@ Obre la càmera Encara no tens cap xat.\nComença enviant un missatge a algú. - No chats to display + No hi ha xats per mostrar - Folder settings + Ajustos de la carpeta @@ -5055,53 +5055,53 @@ Teclat Enviar amb la tecla de Retorn - Chat folders + Carpetes de xats - Add a chat folder + Afegir una carpeta de xats - Organize your chats into folders and quickly switch between them on your chat list. + Organitza els teus xats en carpetes i passa ràpidament d\'una a l\'altra a la teva llista de xats. - Folders + Carpetes - Create a folder + Crear una carpeta - All chats + Tots els xats - Suggested folders + Carpetes suggerides - Unreads + No llegits - Unread messages from all chats + Missatges no llegits de tots els xats - 1:1 chats + Xats individuals - Only messages from direct chats + Només missatges de xats directes Grups - Only message from group chats + Només missatges de xats grupals Afegeix - %1$s folder added. + Carpeta \"%1$s\" afegida - Edit folder + Editar carpeta - Delete folder + Eliminar carpeta - Add new folder + Afegir nova carpeta - Mute all + Silenciar tots - Reorder folders + Reorganitzar carpetes Marca-ho tot com a llegit - %1$d chat type - %1$d chat types + %1$d tipus de xat + %1$d tipus de xat @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d xat exclòs + %1$d xats exclosos - Create a folder + Crear una carpeta - Folder name (required) + Nom de la carpeta (obligatori) - Included chats + Xats inclosos - Add chats + Afegir xats - Choose chats that you want to appear in this folder. + Selecciona els xats que vols que apareguin en aquesta carpeta. Excepcions - Exclude chats + Excloure xats - Choose chats that you do not want to appear in this folder. + Selecciona els xats que no vols que apareguin en aquesta carpeta. - Only show unread chats + Mostrar només xats no llegits - When enabled, only chats with unread messages will be shown in this folder. + Quan aquesta opció estigui activada, en aquesta carpeta només es mostraran els xats amb missatges no llegits. Incloure els xats silenciats Crea - Create folder? + Crear carpeta? - Do you want to create the chat folder \"%1$s\"? + Vols crear la carpeta de xats \"%1$s\"? - Create folder + Crear carpeta - Edit folder + Editar carpeta Desar - Save changes? + Guardar els canvis? - Do you want to save the changes you\'ve made to this chat folder? + Voleu guardar els canvis que heu fet en aquesta carpeta de xats? - Save changes + Guardar els canvis Descarta - Delete folder + Eliminar carpeta - Delete this chat folder? + Eliminar aquesta carpeta de xats? - Chat types + Tipus de xat Fet @@ -7445,15 +7445,15 @@ - Cancel download + Cancel·la la descàrrega - Downloading: %1$s of %2$s (%3$s%%) + Descarregant: %1$s de %2$s (%3$s %%) - Not enough space to download your Backup. To continue free up %1$s of space. + No hi ha prou espai per descarregar la còpia de seguretat. Per continuar, allibera %1$s d\'espai. - Skip download + Ometre la descàrrega - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "La teva darrera còpia de seguretat no s\'ha pogut completar. Assegura\'t que el teu telèfon estigui connectat a una xarxa wifi i toca \"Fer una còpia de seguretat ara\" per tornar-ho a provar." @@ -7561,13 +7561,13 @@ S\'ha canviat el tipus de còpia de seguretat i s\'ha cancel·lat la subscripció - Subscription canceled + Subscripció cancel·lada Descàrrega completa La còpia de seguretat es crearà durant la nit. - Subscription inactive + Subscripció inactiva Pla de còpies de seguretat @@ -7579,9 +7579,9 @@ Renovacions %1$s - Expires on %1$s + Caduca el %1$s - Expired on %1$s + Caduca el %1$s Fes una còpia de seguretat de l\'historial de missatges per no perdre mai cap dada quan compris un telèfon nou o tornis a instal·lar Signal. @@ -7627,9 +7627,9 @@ Introdueix el PIN, la contrasenya o el patró del teu dispositiu. - Re-enable backups + Tornar a activar les còpies de seguretat - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + S\'han desactivat les còpies de seguretat i s\'han eliminat les teves dades del servei d\'emmagatzematge segur de Signal. diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index b9ed38b7b9..8aeb16e2cf 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -375,7 +375,7 @@ Zprávy - Chat types + Typy chatů Zpráva %1$s @@ -4259,9 +4259,9 @@ Otevřít fotoaparát Zatím nemáte žádné chaty.\nZačněte tím, že pošlete zprávu někomu z přátel. - No chats to display + Žádné chaty k zobrazení - Folder settings + Nastavení složky @@ -5293,55 +5293,55 @@ Klávesnice Odeslat tlačítkem Enter - Chat folders + Složky s chaty - Add a chat folder + Přidat složku s chaty - Organize your chats into folders and quickly switch between them on your chat list. + Uspořádejte své chaty do složek. Můžete pak mezi nimi rychle přepínat v seznamu chatů. - Folders + Složky - Create a folder + Vytvořit složku - All chats + Všechny chaty - Suggested folders + Navrhované složky - Unreads + Nepřečtené - Unread messages from all chats + Nepřečtené zprávy ze všech chatů - 1:1 chats + Chaty 1:1 - Only messages from direct chats + Pouze zprávy z osobních chatů Skupiny - Only message from group chats + Pouze zprávy ze skupinových chatů Přidat - %1$s folder added. + Složka %1$s přidána. - Edit folder + Upravit složku - Delete folder + Odstranit složku - Add new folder + Přidat novou složku - Mute all + Ztlumit všechny - Reorder folders + Změnit pořadí složek Označit vše jako přečtené - %1$d chat type - %1$d chat types - %1$d chat types - %1$d chat types + %1$d typ chatu + %1$d typy chatů + %1$d typů chatů + %1$d typů chatů @@ -5352,63 +5352,63 @@ - %1$d chat excluded - %1$d chats excluded - %1$d chats excluded - %1$d chats excluded + %1$d chat vyloučen + %1$d chaty vyloučeny + %1$d chatů vyloučeno + %1$d chatů vyloučeno - Create a folder + Vytvořit složku - Folder name (required) + Název složky (povinné) - Included chats + Zahrnuté chaty - Add chats + Přidat chaty - Choose chats that you want to appear in this folder. + Vyberte chaty, které se mají v této složce zobrazovat. Výjimky - Exclude chats + Vyloučit chaty - Choose chats that you do not want to appear in this folder. + Vyberte chaty, které se nemají v této složce zobrazovat. - Only show unread chats + Zobrazovat pouze nepřečtené chaty - When enabled, only chats with unread messages will be shown in this folder. + Při zapnutí této funkce se budou v této složce zobrazovat pouze chaty s nepřečtenými zprávami. Zahrnout ztlumené chaty Vytvořit - Create folder? + Vytvořit složku? - Do you want to create the chat folder \"%1$s\"? + Chcete vytvořit složku s chaty „%1$s“? - Create folder + Vytvořit složku - Edit folder + Upravit složku Uložit - Save changes? + Uložit změny? - Do you want to save the changes you\'ve made to this chat folder? + Chcete uložit změny, které jste provedli v této složce s chaty? - Save changes + Uložit změny Zahodit - Delete folder + Odstranit složku - Delete this chat folder? + Odstranit tuto složku s chaty? - Chat types + Typy chatů Hotovo @@ -7767,15 +7767,15 @@ - Cancel download + Zrušit stahování - Downloading: %1$s of %2$s (%3$s%%) + Stahování: %1$s z %2$s (%3$s %%) - Not enough space to download your Backup. To continue free up %1$s of space. + Není dostatek místa pro stažení vaší zálohy. Chcete-li pokračovat, uvolněte %1$s místa. - Skip download + Přeskočit stahování - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Poslední zálohu se nepodařilo dokončit. Ujistěte se, že je telefon připojen k síti Wi-Fi, klepněte na Zpět a zkuste to znovu." @@ -7885,13 +7885,13 @@ Typ zálohování změněn a předplatné zrušeno - Subscription canceled + Předplatné zrušeno Stahování dokončeno Záloha bude vytvořena přes noc. - Subscription inactive + Předplatné neaktivní Plán zálohování @@ -7903,9 +7903,9 @@ Obnovení %1$s - Expires on %1$s + Vyprší dne %1$s - Expired on %1$s + Vypršelo dne %1$s Zálohujte si historii zpráv. Už nikdy nepřijdete o data, když si pořídíte nový telefon nebo přeinstalujete aplikaci Signal. @@ -7951,9 +7951,9 @@ Zadejte prosím PIN, heslo nebo vzorec svého zařízení. - Re-enable backups + Znovu povolit - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Zálohování bylo vypnuto a vaše data byla odstraněna ze zabezpečeného úložiště služby Signal. diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index b2ef2b1d23..f38175317d 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -369,7 +369,7 @@ Beskeder - Chat types + Chattyper Besked %1$s @@ -4053,9 +4053,9 @@ Åbn kamera Der er ingen chats endnu.\nKom i gang ved at sende en besked til en ven. - No chats to display + Ingen chats at vise - Folder settings + Mappeindstillinger @@ -5055,53 +5055,53 @@ Tastatur Send med enter - Chat folders + Chatmapper - Add a chat folder + Tilføj en chatmappe - Organize your chats into folders and quickly switch between them on your chat list. + Organiser dine chats i mapper, og skift hurtigt mellem dem i din på din chatliste. - Folders + Mapper - Create a folder + Opret en mappe - All chats + Alle chats - Suggested folders + Anbefalede mapper - Unreads + Ulæste - Unread messages from all chats + Ulæste beskeder fra alle chats - 1:1 chats + 1:1-chats - Only messages from direct chats + Kun beskeder fra direkte chats Grupper - Only message from group chats + Kun besked fra gruppechats Tilføj - %1$s folder added. + %1$s mappe tilføjet. - Edit folder + Rediger mappe - Delete folder + Slet mappe - Add new folder + Tilføj ny mappe - Mute all + Sæt alle på lydløs - Reorder folders + Flyt mapper Markér alle som læst - %1$d chat type - %1$d chat types + %1$d chattype + %1$d chattyper @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d chat ekskluderet + %1$d chats ekskluderet - Create a folder + Opret en mappe - Folder name (required) + Mappenavn (påkrævet) - Included chats + Inkluderede chats - Add chats + Tilføj chats - Choose chats that you want to appear in this folder. + Vælg chats, som du vil vise i denne mappe. Undtagelser - Exclude chats + Ekskluder chats - Choose chats that you do not want to appear in this folder. + Vælg chats, som du ikke ønsker skal vises i denne mappe. - Only show unread chats + Vis kun ulæste chats - When enabled, only chats with unread messages will be shown in this folder. + Når dette er aktiveret viser denne mappe kun chats med ulæste beskeder. Inkluder ignorerede chats Opret - Create folder? + Vil du oprette en mappe? - Do you want to create the chat folder \"%1$s\"? + Vil du at oprette chatmappen \"%1$s\"? - Create folder + Opret mappe - Edit folder + Rediger mappe Gem - Save changes? + Vil du gemme ændringerne? - Do you want to save the changes you\'ve made to this chat folder? + Vil du gemme de ændringer, du har foretaget i denne chatmappe? - Save changes + Gem ændringer Kassér - Delete folder + Slet mappe - Delete this chat folder? + Vil du slette denne chatmappe? - Chat types + Chattyper Færdig @@ -7445,15 +7445,15 @@ - Cancel download + Annuller download - Downloading: %1$s of %2$s (%3$s%%) + Downloader: %1$s af %2$s (%3$s %%) - Not enough space to download your Backup. To continue free up %1$s of space. + Ikke nok plads til at gemme din sikkerhedskopi. Frigør %1$s for at fortsætte. - Skip download + Spring download over - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Din sidste sikkerhedskopiering kunne ikke gennemføres. Tjek, om din telefon er tilsluttet et wi-wi-netværk, og tryk på Sikkerhedskopiér nu for at prøve igen." @@ -7561,13 +7561,13 @@ Sikkerhedskopieringstype ændret og abonnement annulleret - Subscription canceled + Abonnement annulleret Download fuldført Sikkerhedskopien oprettes i nat. - Subscription inactive + Inaktivt abonnement Sikkerhedskopieringsabonnement @@ -7579,9 +7579,9 @@ Fornyes %1$s - Expires on %1$s + Udløber %1$s - Expired on %1$s + Udløber %1$s Sikkerhedskopier din beskedhistorik, så du aldrig mister data, når du får en ny telefon eller geninstallerer Signal. @@ -7627,9 +7627,9 @@ Angiv din enheds pinkode, adgangskode eller dit mønster. - Re-enable backups + Slå sikkerhedskopiering til igen - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Sikkerhedskopiering er slået fra, og dine data er blevet slettet fra Signals sikre lagringstjeneste. diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index aee6f74d3c..d6a2feadd4 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -369,7 +369,7 @@ Nachrichten - Chat types + Chat-Arten Nachricht %1$s @@ -1842,7 +1842,7 @@ Dir gefällt diese neue Funktion? Unterstütze Signal mit einer einmaligen Spende. - Dein Nachrichtenverlauf mit %1$s und seiner*ihrer Nummer %2$s wurde zusammengeführt. + Dein Nachrichtenverlauf mit %1$s und der zugehörigen Nummer %2$s wurde zusammengeführt. Dein Nachrichtenverlauf mit %1$s und einem anderen Chat, der dazu gehört, wurde zusammengeführt. @@ -1947,7 +1947,7 @@ Chat mit dieser Gruppe fortsetzen und deinen Namen und dein Foto mit deren Mitgliedern teilen? Diese Gruppe alten Typs kann nicht mehr verwendet werden. Erstelle eine neue Gruppe, um neue Funktionen wie @Erwähnungen und Administrator zu aktivieren. Diese Gruppe alten Typs kann nicht mehr verwendet werden. Die maximale Gruppengröße von %1$d Mitgliedern ist überschritten. - Chat mit %1$s fortsetzen und deinen Namen und dein Foto mit diesem Nutzer/dieser Nutzerin teilen? + Chat mit %1$s fortsetzen und deinen Namen und dein Foto mit diesem Kontakt teilen? Möchtest du dieser Gruppe beitreten und deinen Namen und dein Foto mit ihren Mitgliedern teilen? Diese wissen nicht, dass du ihre Nachrichten gesehen hast, bis du die Anfrage annimmst. Möchtest du dieser Gruppe beitreten und deinen Namen und dein Foto mit ihren Mitgliedern teilen? Du kannst deren Nachrichten nicht sehen, bis du die Anfrage annimmst. Dieser Gruppe beitreten? Die Gruppenmitglieder wissen nicht, dass du ihre Nachrichten gesehen hast, bis du die Anfrage annimmst. @@ -2065,7 +2065,7 @@ Wenn du dich nicht mehr an deine PIN erinnern kannst, kannst du eine neue erstellen. - Die Anzahl der zu erratenden PINs ist erschöpft, aber du kannst immer noch auf dein Signal-Konto zugreifen, indem du eine neue PIN erstellst. + Maximale Anzahl der Versuche zum Erraten deiner PIN ist ereicht. Du kannst immer noch auf dein Signal-Konto zugreifen, indem du eine neue PIN erstellst. Warnung @@ -2186,7 +2186,7 @@ Deine Anfrage, diesem Anruf beizutreten, wurde abgelehnt. - Aus dem Anruf entfernen + Aus dem Anruf entfernt Jemand hat dich aus dem Anruf entfernt. @@ -2273,9 +2273,9 @@ Kamerarichtung ändern - Lautsprecherlautstärke ändern + Lautsprecher ändern - Kamerastatus ändern + Kamera ändern Stummschaltung ändern @@ -2286,7 +2286,7 @@ Gruppenklingelstatus umschalten - Fehler auf Benutzerschnittstelle aufgetreten. Bitte melde diesen Fehlern den Entwicklern. + Benutzerschnittstelle-Fehler aufgetreten. Bitte melde diesen Fehler dem Entwicklungsteam. Keine geeigneten Audio-Eingänge/-Ausgänge gefunden. @@ -2345,7 +2345,7 @@ - »Gehobene Hand«-Ansicht vergrößern + »Gehobene Hand«-Ansicht erweitern @@ -2382,8 +2382,8 @@ Signal wird klingeln (%1$d) - Signal sendet eine Nachricht (%1$d) - Signal sendet eine Nachricht (%1$d) + Signal wird benachrichtigen (%1$d) + Signal wird benachrichtigen (%1$d) Gehobene Hand (%1$d) @@ -2426,7 +2426,7 @@ Zusätzliche Verifizierung erforderlich - Ein Verifizierungscode wird an diese Nummer gesendet. Es können Tarife anfallen. + Ein Verifizierungscode wird an diese Nummer gesendet. Je nach Tarif können Gebühren anfallen. Du erhältst einen Anruf zur Verifizierung dieser Telefonnummer. Telefonnummer bearbeiten Fehlende Google-Play-Dienste @@ -2649,7 +2649,7 @@ Hat mit %1$s auf deine Story reagiert - Hat mit %1$s auf ihre*seine Story reagiert + Hat mit %1$s auf diese Story reagiert Zahlung @@ -3363,7 +3363,7 @@ - Um die Ende-zu-Ende-Verschlüsselung mit %1$s zu verifizieren, vergleiche die Nummern mit seinem/ihrem Gerät. Du kannst den Code auch auf seinem/ihrem Gerät scannen. + Um die Ende-zu-Ende-Verschlüsselung mit %1$s zu verifizieren, vergleiche die Nummern mit dem Gerät der Person. Du kannst den Code auch auf dem Gerät der Person scannen. Zum Scannen antippen Vergleich erfolgreich Sicherheitsnummer konnte nicht verifiziert werden @@ -4053,9 +4053,9 @@ Kamera öffnen Noch keine Chats.\nLeg los und schreib einer Freundin oder einem Freund. - No chats to display + Keine Chats zum Anzeigen - Folder settings + Ordner-Einstellungen @@ -5055,53 +5055,53 @@ Tastatur Mit Enter-Taste versenden - Chat folders + Chat-Ordner - Add a chat folder + Chat-Ordner hinzufügen - Organize your chats into folders and quickly switch between them on your chat list. + Organisiere deine Chats in Ordnern und wechsle in deiner Chat-Liste schnell zwischen ihnen hin und her. - Folders + Ordner - Create a folder + Ordner erstellen - All chats + Alle Chats - Suggested folders + Vorgeschlagene Ordner - Unreads + Ungelesen - Unread messages from all chats + Ungelesene Nachrichten aus allen Chats - 1:1 chats + Einzelchats - Only messages from direct chats + Nur Nachrichten aus Chats mit einer Person Gruppen - Only message from group chats + Nur Nachrichten von Gruppenchats Hinzufügen - %1$s folder added. + Ordner %1$s hinzugefügt. - Edit folder + Ordner bearbeiten - Delete folder + Ordner löschen - Add new folder + Neuen Ordner hinzufügen - Mute all + Alle stummschalten - Reorder folders + Ordner neu anordnen Alle gelesen - %1$d chat type - %1$d chat types + %1$d Chat-Art + %1$d Chat-Arten @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d Chat ausgenommen + %1$d Chats ausgenommen - Create a folder + Ordner erstellen - Folder name (required) + Ordnername (erforderlich) - Included chats + Beinhaltete Chats - Add chats + Chats hinzufügen - Choose chats that you want to appear in this folder. + Wähle die Chats aus, die in diesem Ordner angezeigt werden sollen. Ausnahmen - Exclude chats + Chats ausschließen - Choose chats that you do not want to appear in this folder. + Wähle die Chats aus, die nicht in diesem Ordner angezeigt werden sollen. - Only show unread chats + Nur ungelesene Chats anzeigen - When enabled, only chats with unread messages will be shown in this folder. + Wenn diese Option aktiviert ist, werden in diesem Ordner nur Chats mit ungelesenen Nachrichten angezeigt. Stummgeschaltete Chats einschließen Erstellen - Create folder? + Ordner erstellen? - Do you want to create the chat folder \"%1$s\"? + Möchtest du den Chat-Ordner »%1$s« erstellen? - Create folder + Ordner erstellen - Edit folder + Ordner bearbeiten Speichern - Save changes? + Änderungen speichern? - Do you want to save the changes you\'ve made to this chat folder? + Möchtest du deine am Chat-Ordner vorgenommenen Änderungen speichern? - Save changes + Änderungen speichern Verwerfen - Delete folder + Ordner löschen - Delete this chat folder? + Diesen Chat-Ordner löschen? - Chat types + Chat-Arten Fertig @@ -7445,15 +7445,15 @@ - Cancel download + Download abbrechen - Downloading: %1$s of %2$s (%3$s%%) + %1$s von %2$s (%3$s%%) werden heruntergeladen - Not enough space to download your Backup. To continue free up %1$s of space. + Nicht genug Speicherplatz, um deine Datensicherung zu speichern. Gib %1$s Speicherplatz frei, um fortzufahren. - Skip download + Download überspringen - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Deine letzte Datensicherung konnte nicht abgeschlossen werden. Stelle sicher, dass dein Gerät mit dem WLAN verbunden ist und tippe auf »Jetzt sichern«, um es erneut zu versuchen." @@ -7561,13 +7561,13 @@ Art der Datensicherung geändert und regelmäßige Spende storniert - Subscription canceled + Abo gekündigt Download abgeschlossen Datensicherung wird über Nacht erstellt. - Subscription inactive + Abo inaktiv Datensicherungsplan @@ -7579,9 +7579,9 @@ Verlängert sich am %1$s - Expires on %1$s + Läuft ab am: %1$s - Expired on %1$s + Abgelaufen am: %1$s Sichere deinen Nachrichtenverlauf und verliere keine alten Nachrichten, wenn du ein neues Mobiltelefon hast bzw. Signal erneut installierst. @@ -7627,9 +7627,9 @@ Bitte gib deine Geräte-Pin, dein Passwort oder dein Sperrmuster ein. - Re-enable backups + Datensicherungen erneut aktivieren - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Die Datensicherungen wurden deaktiviert und deine Daten wurden aus dem sicheren Speicherservice von Signal gelöscht. diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index acd55a5f23..e0b18ba5dd 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -369,7 +369,7 @@ Μηνύματα - Chat types + Τύποι συνομιλιών Μήνυμα %1$s @@ -4053,9 +4053,9 @@ Άνοιγμα κάμερας Δεν υπάρχουν ακόμα συνομιλίες.\nΞεκίνα στέλνοντας μήνυμα σε κάποιον/α φίλο/η σου. - No chats to display + Δεν υπάρχουν συνομιλίες για εμφάνιση - Folder settings + Ρυθμίσεις φακέλου @@ -5055,53 +5055,53 @@ Πληκτρολόγιο Αποστολή με enter - Chat folders + Φάκελοι συνομιλιών - Add a chat folder + Προσθήκη φακέλου συνομιλίας - Organize your chats into folders and quickly switch between them on your chat list. + Οργάνωσε τις συνομιλίες σου σε φακέλους και κάνε γρήγορη εναλλαγή μεταξύ τους στη λίστα συνομιλιών σου. - Folders + Φάκελοι - Create a folder + Δημιουργία φακέλου - All chats + Όλες οι συνομιλίες - Suggested folders + Προτεινόμενοι φάκελοι - Unreads + Μη αναγνωσμένα - Unread messages from all chats + Μη αναγνωσμένα μηνύματα από όλες τις συνομιλίες - 1:1 chats + 1:1 συνομιλίες - Only messages from direct chats + Μόνο μηνύματα από απευθείας συνομιλίες Ομάδες - Only message from group chats + Μόνο μηνύματα από ομαδικές συνομιλίες Προσθήκη - %1$s folder added. + Προστέθηκε ο φάκελος %1$s. - Edit folder + Επεξεργασία φακέλου - Delete folder + Διαγραφή φακέλου - Add new folder + Προσθήκη νέου φακέλου - Mute all + Σίγαση όλων - Reorder folders + Αναδιάταξη φακέλων Σημείωση όλων ως αναγνωσμένα - %1$d chat type - %1$d chat types + %1$d τύπος συνομιλίας + %1$d τύποι συνομιλιών @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + αποκλεισμός %1$d συνομιλίας + αποκλεισμός %1$d συνομιλιών - Create a folder + Δημιουργία φακέλου - Folder name (required) + Όνομα φακέλου (απαιτείται) - Included chats + Συνομιλίες που περιλαμβάνονται - Add chats + Προσθήκη συνομιλιών - Choose chats that you want to appear in this folder. + Επίλεξε τις συνομιλίες που θέλεις να εμφανίζονται σε αυτόν τον φάκελο. Εξαιρέσεις - Exclude chats + Εξαίρεση συνομιλιών - Choose chats that you do not want to appear in this folder. + Επίλεξε τις συνομιλίες που θέλεις να εμφανίζονται σε αυτόν τον φάκελο. - Only show unread chats + Να εμφανίζονται μόνο μη αναγνωσμένες συνομιλίες - When enabled, only chats with unread messages will be shown in this folder. + Όταν είναι ενεργοποιημένη η επιλογή, σε αυτόν τον φάκελο θα εμφανίζονται μόνο συνομιλίες με μη αναγνωσμένα μηνύματα. Προσμέτρηση συνομιλιών σε σίγαση Δημιουργία - Create folder? + Δημιουργία φακέλου; - Do you want to create the chat folder \"%1$s\"? + Θέλεις να δημιουργήσεις τον φάκελο συνομιλίας \"%1$s\"; - Create folder + Δημιουργία φακέλου - Edit folder + Επεξεργασία φακέλου Αποθήκευση - Save changes? + Αποθήκευση αλλαγών; - Do you want to save the changes you\'ve made to this chat folder? + Θέλεις να αποθηκεύσεις τις αλλαγές που έκανες σε αυτόν τον φάκελο συνομιλίας; - Save changes + Αποθήκευση αλλαγών Απόρριψη - Delete folder + Διαγραφή φακέλου - Delete this chat folder? + Διαγραφή αυτού του φακέλου συνομιλίας; - Chat types + Τύποι συνομιλιών Τέλος @@ -7445,15 +7445,15 @@ - Cancel download + Ακύρωση λήψης - Downloading: %1$s of %2$s (%3$s%%) + Λήψη: %1$s από %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Δεν υπάρχει αρκετός χώρος για την αποθήκευση του αντίγραφου ασφαλείας. Για να συνεχίσεις, απελευθέρωσε %1$s χώρου. - Skip download + Παράλειψη λήψης - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Δεν ήταν δυνατή η ολοκλήρωση του τελευταίου αντιγράφου ασφαλείας. Βεβαιώσου ότι η συσκευή σου είναι συνδεδεμένη σε Wi-Fi και πάτησε Δημιουργία αντιγράφων ασφαλείας τώρα για να προσπαθήσεις ξανά." @@ -7561,13 +7561,13 @@ Ο τύπος αντιγράφου ασφαλείας άλλαξε και η συνδρομή ακυρώθηκε - Subscription canceled + Η συνδρομή ακυρώθηκε Η λήψη ολοκληρώθηκε Το αντίγραφο ασφαλείας θα δημιουργηθεί κατά τη διάρκεια της νύχτας. - Subscription inactive + Η συνδρομή είναι ανενεργή Πρόγραμμα αντιγράφων ασφαλείας @@ -7579,9 +7579,9 @@ Ανανεώνεται %1$s - Expires on %1$s + Λήγει στις %1$s - Expired on %1$s + Έληξε στις %1$s Δημιούργησε αντίγραφα ασφαλείας του ιστορικού μηνυμάτων σου, ώστε να μην χάνεις ποτέ δεδομένα αν αγοράσεις νέο τηλέφωνο ή επανεγκαταστήσεις το Signal. @@ -7627,9 +7627,9 @@ Γράψε τον κωδικό PIN, τον κωδικό πρόσβασης ή το μοτίβο της συσκευής σου. - Re-enable backups + Ενεργοποίηση αντιγράφων ασφαλείας εκ νέου - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Τα αντίγραφα ασφαλείας έχουν απενεργοποιηθεί και τα δεδομένα σου έχουν διαγραφεί από την υπηρεσία ασφαλούς αποθήκευσης της Signal. diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 0269a19e4c..7a3397b720 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -369,7 +369,7 @@ Mensajes - Chat types + Tipos de chat Enviar mensaje a %1$s @@ -4053,9 +4053,9 @@ Abrir cámara Todavía no hay chats.\nComienza a chatear con tus amistades. - No chats to display + No hay chats para mostrar - Folder settings + Ajustes de las carpetas @@ -5055,53 +5055,53 @@ Teclado Enviar con Intro - Chat folders + Carpetas de chats - Add a chat folder + Añadir una carpeta de chats - Organize your chats into folders and quickly switch between them on your chat list. + Organiza tus chats en carpetas y cambia rápidamente de una a otra en tu lista de chats. - Folders + Carpetas - Create a folder + Crear una carpeta - All chats + Todos los chats - Suggested folders + Carpetas sugeridas - Unreads + No leídos - Unread messages from all chats + Mensajes no leídos de todos los chats - 1:1 chats + Chats individuales - Only messages from direct chats + Solo mensajes de chats directos Grupos - Only message from group chats + Solo mensajes de chats grupales Añadir - %1$s folder added. + Carpeta añadida: %1$s - Edit folder + Editar carpeta - Delete folder + Eliminar carpeta - Add new folder + Añadir nueva carpeta - Mute all + Silenciar todo - Reorder folders + Reordenar carpetas Marcar todos como leídos - %1$d chat type - %1$d chat types + %1$d tipo de chat + %1$d tipos de chat @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d chat excluido + %1$d chats excluidos - Create a folder + Crear una carpeta - Folder name (required) + Nombre de la carpeta (obligatorio) - Included chats + Chats incluidos - Add chats + Añadir chats - Choose chats that you want to appear in this folder. + Selecciona los chats que quieres que aparezcan en esta carpeta. Excepciones - Exclude chats + Excluir chats - Choose chats that you do not want to appear in this folder. + Selecciona los chats que no quieres que aparezcan en esta carpeta. - Only show unread chats + Mostrar solo los chats no leídos - When enabled, only chats with unread messages will be shown in this folder. + Cuando esta opción está habilitada, solo se mostrarán en esta carpeta los chats con mensajes no leídos. Considerar chats silenciados Crear - Create folder? + ¿Crear carpeta? - Do you want to create the chat folder \"%1$s\"? + ¿Quieres crear la carpeta de chats \"%1$s\"? - Create folder + Crear carpeta - Edit folder + Editar carpeta Guardar - Save changes? + ¿Guardar cambios? - Do you want to save the changes you\'ve made to this chat folder? + ¿Quieres guardar los cambios que has hecho en esta carpeta de chats? - Save changes + Guardar cambios Descartar - Delete folder + Eliminar carpeta - Delete this chat folder? + ¿Eliminar esta carpeta de chats? - Chat types + Tipos de chat Listo @@ -5614,9 +5614,9 @@ %1$s apoya a Signal - %1$s apoya a Signal con una donación mensual. Signal es una organización sin ánimo de lucro, sin anuncios ni inversores. Nuestra misión se sostiene gracias al apoyo de personas como tú. + %1$s apoya a Signal con una donación mensual. Al ser una organización sin ánimo de lucro, sin anuncios ni inversores, Signal se sostiene gracias al apoyo de personas como tú. - %1$s apoya a Signal con una donación. Signal es una organización sin ánimo de lucro, sin anuncios ni inversores. Nuestra misión se sostiene gracias al apoyo de personas como tú. + %1$s apoya a Signal con una donación. Al ser una organización sin ánimo de lucro, sin anuncios ni inversores, Signal se sostiene gracias al apoyo de personas como tú. Insignia @@ -5657,7 +5657,7 @@ Si tienes más de una insignia, puedes seleccionar cuál quieres que otras personas vean en tu perfil. Consigue insignias para tu perfil al ayudar a Signal. - Signal es una organización sin ánimo de lucro, sin anuncios ni inversores. Nuestra misión se sostiene gracias al apoyo de personas como tú. + Al ser una organización sin ánimo de lucro, sin anuncios ni inversores, Signal se sostiene gracias al apoyo de personas como tú. Donar a Signal @@ -7445,15 +7445,15 @@ - Cancel download + Cancelar descarga - Downloading: %1$s of %2$s (%3$s%%) + Descargando: %1$s de %2$s (%3$s %%) - Not enough space to download your Backup. To continue free up %1$s of space. + No hay suficiente espacio para descargar tu copia de seguridad. Para continuar, libera %1$s de espacio. - Skip download + Omitir descarga - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "No se ha podido completar tu última copia de seguridad. Asegúrate de que tu teléfono esté conectado a una red Wi-Fi y toca \"Iniciar copia\" para volver a intentarlo." @@ -7561,13 +7561,13 @@ Se ha cambiado el tipo de copia de seguridad y se ha cancelado tu suscripción - Subscription canceled + Suscripción cancelada Descarga completa La copia de seguridad se creará durante la noche. - Subscription inactive + Suscripción inactiva Plan de copias de seguridad @@ -7579,9 +7579,9 @@ Se renueva el %1$s - Expires on %1$s + Caduca el %1$s - Expired on %1$s + Caduca el %1$s Haz una copia de seguridad de tu historial de mensajes para no perder ningún dato cuando compras un teléfono nuevo o reinstalas Signal. @@ -7627,9 +7627,9 @@ Introduce el PIN, la contraseña o el patrón de tu dispositivo. - Re-enable backups + Volver a habilitar copias - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Se han desactivado las copias de seguridad y se han eliminado tus datos del servicio de almacenamiento seguro de Signal. diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index 6344380d15..2bf26554c1 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -369,7 +369,7 @@ Mezuak - Chat types + Txat motak Mezu %1$s @@ -4053,9 +4053,9 @@ Ireki kamera Ez dago txatik.\nBidali mezu bat lagun bati. - No chats to display + Ez dago txatik erakusteko - Folder settings + Karpetaren ezarpenak @@ -5055,53 +5055,53 @@ Teklatua Bidali \"Sartu\" tekla sakatzean - Chat folders + Txat-karpetak - Add a chat folder + Gehitu txat-karpeta bat - Organize your chats into folders and quickly switch between them on your chat list. + Antolatu txatak karpetatan eta joan bizkor batetik bestera txat-zerrendan. - Folders + Karpetak - Create a folder + Sortu karpeta bat - All chats + Txat guztiak - Suggested folders + Iradokitako karpetak - Unreads + Irakurri gabeak - Unread messages from all chats + Txat guztietako mezu irakurri gabeak - 1:1 chats + Banako txatak - Only messages from direct chats + Zuzeneko txatetako mezuak bakarrik Taldeak - Only message from group chats + Taldeko txatetako mezuak bakarrik Gehitu - %1$s folder added. + Gehitu da %1$s karpeta. - Edit folder + Editatu karpeta - Delete folder + Ezabatu karpeta - Add new folder + Gehitu karpeta berri bat - Mute all + Desaktibatu denen jakinarazpenak - Reorder folders + Antolatu karpetak Irakurritako gisa markatu guztiak - %1$d chat type - %1$d chat types + %1$d txat mota + %1$d txat mota @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d txat atera da + %1$d txat atera dira - Create a folder + Sortu karpeta bat - Folder name (required) + Karpetaren izena (beharrezkoa) - Included chats + Karpetako txatak - Add chats + Gehitu txatak - Choose chats that you want to appear in this folder. + Aukeratu karpeta honetan agertzea nahi duzun txatak. Salbuespenak - Exclude chats + Atera txatak - Choose chats that you do not want to appear in this folder. + Aukeratu karpeta honetan agertzerik nahi ez duzun txatak. - Only show unread chats + Erakutsi irakurri gabeko txatak soilik - When enabled, only chats with unread messages will be shown in this folder. + Gaitzen baduzu, irakurri gabeko mezuak dituzten txatak bakarrik agertuko dira karpeta honetan. - Include muted chats + Sartu jakinarazpenak desaktibatuta dauzkaten txatak Sortu - Create folder? + Karpeta sortu nahi duzu? - Do you want to create the chat folder \"%1$s\"? + \"%1$s\" txat-karpeta sortu nahi duzu? - Create folder + Sortu karpeta bat - Edit folder + Editatu karpeta Gorde - Save changes? + Aldaketak gorde nahi dituzu? - Do you want to save the changes you\'ve made to this chat folder? + Txat-karpeta honetan egindako aldaketak gorde nahi dituzu? - Save changes + Gorde aldaketak Baztertu - Delete folder + Ezabatu karpeta - Delete this chat folder? + Txat-karpeta hau ezabatu nahi duzu? - Chat types + Txat motak Eginda @@ -7445,15 +7445,15 @@ - Cancel download + Utzi deskarga bertan behera - Downloading: %1$s of %2$s (%3$s%%) + %1$s/%2$s deskargatzen (%% %3$s) - Not enough space to download your Backup. To continue free up %1$s of space. + Ez dago nahikoa tokirik babeskopia deskargatzeko. Aurrera egiteko, utzi %1$s libre. - Skip download + Saltatu deskarga - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Ezin izan da osatu azken babeskopia. Ziurtatu telefonoa wifira konektatuta dagoela eta, berriro saiatzeko, sakatu Egin babeskopia orain." @@ -7561,13 +7561,13 @@ Babeskopia-mota aldatu da eta harpidetza bertan behera utzi da - Subscription canceled + Harpidetza bertan behera utzi da Deskarga osatuta Babeskopia gauez sortuko da. - Subscription inactive + Harpidetza inaktibo dago Babeskopia-plana @@ -7579,9 +7579,9 @@ Berritze-data: %1$s - Expires on %1$s + Iraungitze-data: %1$s - Expired on %1$s + Iraungitze-data: %1$s Egin mezu-historiaren babeskopia, gailuz aldatzean edo Signal berriro instalatzean ez dezazun daturik galdu. @@ -7627,9 +7627,9 @@ Sartu gailuaren PIN, pasahitz edo patroia. - Re-enable backups + Gaitu babeskopiak berriro - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Babeskopiak desaktibatu egin dira, eta zure datuak ezabatu egin dira Signal-en biltegiratze-zerbitzu segurutik. diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 13ef01aa80..e3c8452aa9 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -369,7 +369,7 @@ پیام‌ها - Chat types + انواع گفتگوها ارسال پیام به %1$s @@ -4053,9 +4053,9 @@ باز کردن دوربین هنوز هیچ گفتگویی وجود ندارد.\n با پیام دادن به یک دوست شروع کنید. - No chats to display + گفتگویی برای نمایش وجود ندارد - Folder settings + تنظیمات پوشه @@ -5055,53 +5055,53 @@ صفحه‌کلید ارسال با enter - Chat folders + پوشه‌های گفتگو - Add a chat folder + افزودن پوشه گفتگو - Organize your chats into folders and quickly switch between them on your chat list. + گفتگوهای خود را در پوشه‌ها مرتب کنید و به‌سرعت بین آنها در فهرست گفتگوها جابه‌جا شوید. - Folders + پوشه‌ها - Create a folder + ایجاد پوشه - All chats + همه گفتگوها - Suggested folders + پوشه‌های پیشنهادی - Unreads + خوانده‌نشده‌ها - Unread messages from all chats + پیام‌های خوانده‌نشده‌ی همه گفتگوها - 1:1 chats + گفتگوهای فرد به فرد - Only messages from direct chats + فقط پیام‌ گفتگوهای مستقیم گروه‌ها‌ - Only message from group chats + فقط پیام گفتگوهای گروهی افزودن - %1$s folder added. + پوشه %1$s اضافه شد. - Edit folder + ویرایش پوشه - Delete folder + حذف پوشه - Add new folder + افزودن پوشه جدید - Mute all + بی‌صدا کردن همه - Reorder folders + تغییر ترتیب پوشه‌ها علامت‌گذاری همه به صورت خوانده شده - %1$d chat type - %1$d chat types + %1$d نوع گفتگو + %1$d نوع گفتگو @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d گفتگو شامل نشده است + %1$d گفتگو شامل نشده است - Create a folder + ایجاد پوشه - Folder name (required) + نام پوشه (الزامی) - Included chats + گفتگوهای شامل‌شده - Add chats + افزودن گفتگو - Choose chats that you want to appear in this folder. + گفتگوهایی را که می‌خواهید در این پوشه باشند انتخاب کنید. موارد استثناء - Exclude chats + حذف گفتگو - Choose chats that you do not want to appear in this folder. + گفتگوهایی را که نمی‌خواهید در این پوشه باشند انتخاب کنید. - Only show unread chats + فقط گفتگوهای خوانده‌نشده را نشان بده - When enabled, only chats with unread messages will be shown in this folder. + وقتی این گزینه فعال باشد، فقط گفتگوهایی که پیام‌های خوانده‌نشده دارند در این پوشه نشان داده می‌شود. گنجاندن گفتگوهای بی‌صداشده ایجاد - Create folder? + پوشه ایجاد شود؟ - Do you want to create the chat folder \"%1$s\"? + می‌خواهید پوشه گفتگو «%1$s» را ایجاد کنید؟ - Create folder + ایجاد پوشه - Edit folder + ویرایش پوشه ذخیره - Save changes? + تغییرات ذخیره شود؟ - Do you want to save the changes you\'ve made to this chat folder? + آیا می‌خواهید تغییراتی را که در این پوشه گفتگو ایجاد کرده‌اید ذخیره کنید؟ - Save changes + ذخیره تغییرات دور انداختن - Delete folder + حذف پوشه - Delete this chat folder? + این پوشه گفتگو حذف شود؟ - Chat types + انواع گفتگوها انجام شد @@ -7445,15 +7445,15 @@ - Cancel download + لغو دانلود - Downloading: %1$s of %2$s (%3$s%%) + در حال دانلود: %1$s از %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + فضای کافی برای دانلود نسخه پشتیبان وجود ندارد. برای ادامه، %1$s فضا خالی کنید. - Skip download + رد کردن دانلود - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "آخرین پشتیبان‌گیری شما انجام نشد. مطمئن شوید که تلفن‌تان به Wi-Fi وصل است و برای امتحان دوباره، روی «اکنون پشتیبان‌گیری شود» ضربه بزنید." @@ -7561,13 +7561,13 @@ نوع پشتیبان تغییر کرد و اشتراک لغو شد - Subscription canceled + اشتراک لغو شد دانلود کامل شد پشتیبان‌گیری در طول شب انجام می‌شود. - Subscription inactive + اشتراک غیرفعال است طرح پشتیبان @@ -7579,9 +7579,9 @@ در %1$s تمدید می‌شود - Expires on %1$s + انقضا: %1$s - Expired on %1$s + انقضا: %1$s از تاریخچه پیام خود پشتیبان‌گیری کنید تا بعد از خرید تلفن جدید یا نصب مجدد سیگنال، هرگز اطلاعات خود را از دست ندهید. @@ -7627,9 +7627,9 @@ لطفا پین، رمز عبور یا الگوی دستگاه خود را وارد کنید. - Re-enable backups + فعال‌سازی مجدد پشتیبان‌گیری‌ها - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + پشتیبان‌گیری خاموش شده و داده‌های شما از سرویس ذخیره‌سازی امن سیگنال حذف شده است. diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 259cab28fc..a3931ea0ca 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -369,7 +369,7 @@ Viestit - Chat types + Keskustelutyypit Viesti: %1$s @@ -4053,9 +4053,9 @@ Avaa kamera Keskusteluita ei vielä ole.\nAloita lähettämällä viesti kaverillesi. - No chats to display + Ei näytettäviä keskusteluja - Folder settings + Kansion asetukset @@ -5055,53 +5055,53 @@ Näppäimistö Lähetä enter-painikkeella - Chat folders + Keskustelukansiot - Add a chat folder + Lisää keskustelukansio - Organize your chats into folders and quickly switch between them on your chat list. + Järjestä keskustelut kansioihin ja siirry nopeasti kansiosta toiseen keskusteluluettelossa. - Folders + Kansiot - Create a folder + Luo kansio - All chats + Kaikki keskustelut - Suggested folders + Ehdotetut kansiot - Unreads + Lukemattomat - Unread messages from all chats + Lukemattomat viestit kaikista keskusteluista - 1:1 chats + Kahdenväliset keskustelut - Only messages from direct chats + Vain viestit kahdenvälisistä keskusteluista Ryhmät - Only message from group chats + Vain viestit ryhmäkeskusteluista Lisää - %1$s folder added. + Kansio %1$s lisätty. - Edit folder + Muokkaa kansiota - Delete folder + Poista kansio - Add new folder + Lisää uusi kansio - Mute all + Mykistä kaikki - Reorder folders + Järjestä kansiot uudelleen Merkitse kaikki luetuiksi - %1$d chat type - %1$d chat types + %1$d keskustelutyyppi + %1$d keskustelutyyppiä @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d keskustelu suljettu pois + %1$d keskustelua suljettu pois - Create a folder + Luo kansio - Folder name (required) + Kansion nimi (pakollinen) - Included chats + Sisältyvät keskustelut - Add chats + Lisää keskusteluja - Choose chats that you want to appear in this folder. + Valitse keskustelut, joiden haluat näkyvän kansiossa. Poikkeukset - Exclude chats + Sulje pois keskusteluja - Choose chats that you do not want to appear in this folder. + Valitse keskustelut, joiden et halua näkyvän tässä kansiossa. - Only show unread chats + Näytä vain lukemattomat keskustelut - When enabled, only chats with unread messages will be shown in this folder. + Kun tämä on käytössä, kansiossa näytetään vain keskustelut, joissa on lukemattomia viestejä. Sisällytä mykistetyt keskustelut Luo - Create folder? + Luodaanko kansio? - Do you want to create the chat folder \"%1$s\"? + Haluatko luoda keskustelukansion %1$s? - Create folder + Luo kansio - Edit folder + Muokkaa kansiota Tallenna - Save changes? + Tallennetaanko muutokset? - Do you want to save the changes you\'ve made to this chat folder? + Haluatko tallentaa keskustelukansioon tekemäsi muutokset? - Save changes + Tallenna muutokset Hylkää - Delete folder + Poista kansio - Delete this chat folder? + Poistetaanko keskustelukansio? - Chat types + Keskustelutyypit Valmis @@ -7445,15 +7445,15 @@ - Cancel download + Peruuta lataus - Downloading: %1$s of %2$s (%3$s%%) + Ladataan: %1$s / %2$s (%3$s %%) - Not enough space to download your Backup. To continue free up %1$s of space. + Tila ei riitä varmuuskopion lataamiseen. Vapauta %1$s tilaa jatkaaksesi. - Skip download + Ohita lataus - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Viimeistä varmuuskopiointia ei voitu suorittaa loppuun. Varmista, että puhelimesi on yhdistetty Wi-Fi-verkkoon, ja yritä uudelleen napauttamalla Varmuuskopioi nyt." @@ -7561,13 +7561,13 @@ Varmuuskopion tyyppi muutettu ja tilaus peruutettu - Subscription canceled + Tilaus on peruttu Lataus valmis Varmuuskopio luodaan yön aikana. - Subscription inactive + Tilaus ei ole aktiivinen Varmuuskopioinnin tilaus @@ -7579,9 +7579,9 @@ Uusiutuu %1$s - Expires on %1$s + Päättyy %1$s - Expired on %1$s + Päättyi %1$s Varmuuskopioi viestihistoriasi, jotta et koskaan menetä tietoja, kun hankit uuden puhelimen tai asennat Signalin uudelleen. @@ -7627,9 +7627,9 @@ Anna laitteesi PIN-koodi, salasana tai kuvio. - Re-enable backups + Ota varmuuskopiot uudelleen käyttöön - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Varmuuskopiointi on poistettu käytöstä ja tietosi on poistettu Signalin suojatusta tallennuspalvelusta. diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index bc4354b3d3..0d2939ecea 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -180,7 +180,7 @@ Mois non valide - Année requise + Veuillez indiquer une année. Année non valide @@ -1264,7 +1264,7 @@ Vous pouvez ajouter ou inviter des amis après avoir créé ce groupe. Nom du groupe (requis) Nom du groupe (facultatif) - Ce champ est requis. + Ce champ est obligatoire. Échec de création du groupe. Réessayez plus tard. Retirer @@ -3313,7 +3313,7 @@ Impossible de distribuer du contenu de %1$s. Il peut s’agir d’un message, d’un sticker, d’une réaction ou d’une confirmation de lecture. - Prénom (requis) + Prénom (champ obligatoire) Nom de famille (facultatif) Suivant Vous seul pouvez afficher le nom personnalisé du groupe MMS et ses photos. @@ -5083,7 +5083,7 @@ Only message from group chats - Ajouter + Créer %1$s folder added. @@ -6326,13 +6326,13 @@ Vous seul pouvez voir le titre de cette story. - Titre de la story (requis) + Titre de la story (champ obligatoire) Spectateurs Créer - Ce champ est requis. + Ce champ est obligatoire. Titre déjà utilisé pour une autre story. diff --git a/app/src/main/res/values-ga/strings.xml b/app/src/main/res/values-ga/strings.xml index a893278d6a..6565191348 100644 --- a/app/src/main/res/values-ga/strings.xml +++ b/app/src/main/res/values-ga/strings.xml @@ -378,7 +378,7 @@ Teachtaireachtaí - Chat types + Cineálacha comhráite Teachtaireacht %1$s @@ -4362,9 +4362,9 @@ Oscail an Grianghrafadán No chats yet.\nGet started by messaging a friend. - No chats to display + Níl aon chomhrá le taispeáint - Folder settings + Socruithe an fhillteáin @@ -5412,56 +5412,56 @@ An méarchlár Seol leis an eochair iontrála - Chat folders + Fillteáin comhráite - Add a chat folder + Cuir fillteán comhráite leis - Organize your chats into folders and quickly switch between them on your chat list. + Eagraigh do chomhráite i bhfillteáin agus aistrigh eatarthu go tapa ar do liosta comhráite. - Folders + Fillteáin - Create a folder + Cruthaigh fillteán - All chats + Gach comhrá - Suggested folders + Fillteáin mholta - Unreads + Neamhléite - Unread messages from all chats + Teachtaireachtaí neamhléite ó gach comhrá - 1:1 chats + Comhráite 1:1 - Only messages from direct chats + Teachtaireachtaí ó chomhráite díreacha amháin - Baiclí + Grúpaí - Only message from group chats + Teachtaireachtaí ó ghrúpchomhráite amháin Cuir leis - %1$s folder added. + Fillteán %1$s curtha leis. - Edit folder + Cuir fillteán in eagar - Delete folder + Scrios an fillteán - Add new folder + Cuir fillteán leis - Mute all + Balbhaigh gach comhrá - Reorder folders + Cuir fillteáin in ord nua - Rianaigh uile mar léite + Marcáil iad uile léite - %1$d chat type - %1$d chat types - %1$d chat types - %1$d chat types - %1$d chat types + %1$d chineál comhrá + %1$d chineál comhráite + %1$d chineál comhráite + %1$d gcineál comhráite + %1$d cineál comhráite @@ -5473,64 +5473,64 @@ - %1$d chat excluded - %1$d chats excluded - %1$d chats excluded - %1$d chats excluded - %1$d chats excluded + %1$d chomhrá as an áireamh + %1$d chomhrá as an áireamh + %1$d chomhrá as an áireamh + %1$d gcomhrá as an áireamh + %1$d comhrá as an áireamh - Create a folder + Cruthaigh fillteán - Folder name (required) + Ainm an fhillteáin (de dhíth) - Included chats + Comhráite atá san áireamh - Add chats + Cuir comhráite leis - Choose chats that you want to appear in this folder. + Roghnaigh comhráite is mian leat a thaispeáint san fhillteán seo. Eisceachtaí - Exclude chats + Cuir comhráite as an áireamh - Choose chats that you do not want to appear in this folder. + Roghnaigh na comhráite nach mian leat a thaispeáint san fhillteán seo. - Only show unread chats + Ná taispeáin ach comhráite neamhléite - When enabled, only chats with unread messages will be shown in this folder. + Agus é cumasaithe, ní thaispeánfar san fhillteán seo ach comhráite le teachtaireachtaí neamhléite. - Cuir Comhráite Balbhaithe san Áireamh + Cuir comhráite balbhaithe san áireamh Cruthaigh - Create folder? + Cruthaigh fillteán? - Do you want to create the chat folder \"%1$s\"? + An bhfuil fonn ort an fillteán comhráite \"%1$s\" a chruthú? - Create folder + Cruthaigh fillteán - Edit folder + Cuir fillteán in eagar Sábháil - Save changes? + Sábháil na hathruithe? - Do you want to save the changes you\'ve made to this chat folder? + An bhfuil fonn ort na hathruithe a rinne tú ar an bhfillteán comhráite seo a shábháil? - Save changes + Sábháil na hathruithe Cuileáil - Delete folder + Scrios an fillteán - Delete this chat folder? + Scrios an fillteán comhráite seo? - Chat types + Cineálacha comhráite Déanta @@ -7928,15 +7928,15 @@ - Cancel download + Cuir íoslódáil ar ceal - Downloading: %1$s of %2$s (%3$s%%) + Íoslódáil: %1$s as %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Níl go leor spáis ann chun do Chúltaca a íoslódáil. Déan %1$s de spás le leanúint leis. - Skip download + Scipeáil íoslódáil - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Níorbh fhéidir do chúltaca deiridh a chur i gcrích. Cinntigh go bhfuil do ghuthán nasctha le Wi-Fi agus tapáil Cúltacaigh anois lena thriail arís." @@ -8047,13 +8047,13 @@ Athraíodh an cineál cúltaca agus cuireadh an síntiús ar ceal - Subscription canceled + Síntiús curtha ar ceal Íoslódáil críochnaithe Cruthófar cúltaca thar oíche. - Subscription inactive + Síntiús neamhghníomhach Plean cúltaca @@ -8065,9 +8065,9 @@ Athnuachan %1$s - Expires on %1$s + Rachaidh in éag an %1$s - Expired on %1$s + Chuaigh in éag an %1$s Cúltacaigh do stair teachtaireachtaí ionas nach gcaillfidh tú sonraí nuair a fhaigheann tú guthán nua nó nuair a athshuiteálann tú Signal. @@ -8113,9 +8113,9 @@ Cuir isteach UAP, pasfhocal, nó patrún do ghléis. - Re-enable backups + Athchumasaigh cúltacaí - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Tá cúltacaí casta as agus tá do shonraí scriosta ó sheirbhís stórála shlán Signal. diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 4e90c5c1eb..7d6850e78e 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -369,7 +369,7 @@ Mensaxes - Chat types + Tipos de conversas Mensaxe %1$s @@ -4053,9 +4053,9 @@ Abrir cámara Aínda non hai conversas.\nInicia unha conversa cunha amizade. - No chats to display + Non hai conversas para mostrar - Folder settings + Configuración do cartafol @@ -5055,53 +5055,53 @@ Teclado Enviar coa tecla de retorno - Chat folders + Cartafois de conversas - Add a chat folder + Engadir un novo cartafol - Organize your chats into folders and quickly switch between them on your chat list. + Organiza as túas conversas en cartafois e accede a elas de forma rápida na lista de conversas. - Folders + Cartafois - Create a folder + Crear un cartafol - All chats + Todas as conversas - Suggested folders + Cartafois suxeridos - Unreads + Sen ler - Unread messages from all chats + Mensaxes sen ler de todas as conversas - 1:1 chats + Conversas individuais - Only messages from direct chats + Só mostrar mensaxes de conversas individuais Grupos - Only message from group chats + Só mostrar mensaxes de conversas grupais Engadir - %1$s folder added. + Cartafol engadigo: %1$s - Edit folder + Editar cartafol - Delete folder + Eliminar cartafol - Add new folder + Engadir un novo cartafol - Mute all + Silenciar todas - Reorder folders + Reordenar cartafois Marcar todas como lidas - %1$d chat type - %1$d chat types + %1$d tipo de conversa + %1$d tipos de conversas @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d conversa excluída + %1$d conversas excluídas - Create a folder + Crear un cartafol - Folder name (required) + Nome do cartafol (obrigatorio) - Included chats + Conversas incluídas - Add chats + Engadir conversas - Choose chats that you want to appear in this folder. + Escolle as conversas que queiras que aparezan neste cartafol. Agás - Exclude chats + Excluír conversas - Choose chats that you do not want to appear in this folder. + Escolle as conversas que non queiras que aparezan neste cartafol. - Only show unread chats + Só mostrar conversas sen ler - When enabled, only chats with unread messages will be shown in this folder. + Ao activarse, só aparecerán neste cartafol as conversas con mensaxes sen ler. - Include muted chats + Incluír conversas silenciadas Crear - Create folder? + Crear cartafol? - Do you want to create the chat folder \"%1$s\"? + Queres crear o cartafol «%1$s»? - Create folder + Crear cartafol - Edit folder + Editar cartafol Gardar - Save changes? + Gardar cambios? - Do you want to save the changes you\'ve made to this chat folder? + Queres gardar os cambios que fixeches neste cartafol? - Save changes + Gardar cambios Descartar - Delete folder + Eliminar cartafol - Delete this chat folder? + Eliminar cartafol? - Chat types + Tipos de conversas Feito @@ -7445,15 +7445,15 @@ - Cancel download + Cancelar descarga - Downloading: %1$s of %2$s (%3$s%%) + Descargando: %1$s de %2$s (%3$s %%) - Not enough space to download your Backup. To continue free up %1$s of space. + Non hai espazo suficiente para descargar a túa copia de seguranza. Para poder facelo, tes que liberar %1$s de espazo. - Skip download + Omitir descarga - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "A túa última copia de seguranza non se completou. Comproba que o teu teléfono estea conectado a unha rede wifi e preme «Facer copia agora»." @@ -7561,13 +7561,13 @@ Cambiouse o tipo de copia de seguranza e cancelouse a subscrición - Subscription canceled + Cancelouse a subscrición Descarga completa A copia de seguranza crearase durante a noite. - Subscription inactive + Subscrición inactiva Plan de copia de seguranza @@ -7579,9 +7579,9 @@ Renóvase o %1$s - Expires on %1$s + Caduca o %1$s - Expired on %1$s + Caducado o %1$s Fai unha copia de seguranza do teu historial de mensaxes para que nunca perdas datos cando cambies de teléfono ou volvas instalar Signal. @@ -7627,9 +7627,9 @@ Escribe o PIN, contrasinal ou patrón do dispositivo. - Re-enable backups + Activar de novo a copia de seguranza - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Desactiváronse as copias de seguranza e os elimináronse os teus datos do servizo de almacenamento seguro de Signal. diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index a92a63d2cf..bf2106441c 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -369,7 +369,7 @@ मैसेज - Chat types + चैट के प्रकार %1$s को मेसेज @@ -4053,9 +4053,9 @@ कैमरा खोलें अभी तक कोई चैट नहीं हैं।\nकिसी मित्र को मेसेज करके शुरू करें। - No chats to display + दिखाने के लिए कोई चैट नहीं है - Folder settings + फ़ोल्डर सेटिंग्स @@ -5055,53 +5055,53 @@ कीबोर्ड एंटर करके भेजें - Chat folders + चैट फ़ोल्डर - Add a chat folder + चैट फ़ोल्डर जोड़ें - Organize your chats into folders and quickly switch between them on your chat list. + अपनी चैट को फ़ोल्डर्स में व्यवस्थित करें और अपनी चैट की सूची में उनके बीच तुरंत स्विच करें। - Folders + फ़ोल्डर - Create a folder + फ़ोल्डर बनाएँ - All chats + सभी चैट - Suggested folders + सुझाए गए फ़ोल्डर - Unreads + पढ़े न गए - Unread messages from all chats + सभी चैट से पढ़े न गए संदेश - 1:1 chats + 1:1 चैट - Only messages from direct chats + सिर्फ़ डायरेक्ट चैट से संदेश - समूह + ग्रुप - Only message from group chats + सिर्फ़ ग्रुप चैट से संदेश जोड़ें - %1$s folder added. + %1$s फ़ोल्डर जोड़ा गया। - Edit folder + फ़ोल्डर संपादित करें - Delete folder + फ़ोल्डर डिलीट करें - Add new folder + नया फ़ोल्डर जोड़ें - Mute all + सभी को म्यूट करें - Reorder folders + फ़ोल्डर का क्रम बदलें सभी को पढ़ा दिखाएं - %1$d chat type - %1$d chat types + %1$d चैट प्रकार + %1$d चैट प्रकार @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d चैट छोड़कर + %1$d चैट छोड़कर - Create a folder + फ़ोल्डर बनाएँ - Folder name (required) + फ़ोल्डर का नाम (ज़रूरी) - Included chats + शामिल की गई चैट्स - Add chats + चैट जोड़ें - Choose chats that you want to appear in this folder. + आप इस फ़ोल्डर में जिन चैट को देखना चाहते हैं उन्हें चुनें। अपवाद - Exclude chats + चैट छोड़ें - Choose chats that you do not want to appear in this folder. + आप इस फ़ोल्डर में जिन चैट को नहीं देखना चाहते हैं उन्हें चुनें। - Only show unread chats + सिर्फ़ पढ़ी न गई चैट दिखाएँ - When enabled, only chats with unread messages will be shown in this folder. + चालू होने पर, सिर्फ़ वे चैट दिखाई जाएँगी जिनमें संदेश पढ़े नहीं गए हैं। म्यूट की गई चैट शामिल करें बनाएँ - Create folder? + फ़ोल्डर बनाएँ? - Do you want to create the chat folder \"%1$s\"? + क्या आप चैट फ़ोल्डर \"%1$s\" को बनाना चाहते हैं? - Create folder + फ़ोल्डर बनाएँ - Edit folder + फ़ोल्डर संपादित करें सेव - Save changes? + बदलाव सेव करें? - Do you want to save the changes you\'ve made to this chat folder? + क्या आप इस चैट फ़ोल्डर में किए गए बदलावों को सेव करना चाहते हैं? - Save changes + बदलाव सेव करें रद्द करें - Delete folder + फ़ोल्डर डिलीट करें - Delete this chat folder? + इस चैट फ़ोल्डर को डिलीट करें? - Chat types + चैट के प्रकार पूर्ण @@ -7445,15 +7445,15 @@ - Cancel download + डाउनलोड रद्द करें - Downloading: %1$s of %2$s (%3$s%%) + %2$s में से %1$s को डाउनलोड किया जा रहा है (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + आपके बैकअप को डाउनलोड करने के लिए जगह नहीं है। जारी रखने के लिए, %1$s जगह खाली करें। - Skip download + डाउनलोड छोड़ें - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "आपका आखिरी बैकअप पूरा नहीं किया जा सका। पक्का करें कि आपका फ़ोन वाई-फ़ाई से कनेक्ट हैं और फिर से कोशिश करने के लिए \'अभी बैकअप करें\' पर टैप करें।" @@ -7561,13 +7561,13 @@ बैकअप प्रकार बदला गया और सब्सक्रिप्शन रद्द कर दी गई - Subscription canceled + सब्सक्रिप्शन रद्द किया गया डाउनलोड पूरा हुआ बैकअप को रात के समय बनाया जाएगा। - Subscription inactive + सब्सक्रिप्शन निष्क्रिय है बैकअप प्लान @@ -7579,9 +7579,9 @@ %1$s को नवीकृत होता है - Expires on %1$s + %1$s को खत्म होगा - Expired on %1$s + %1$s को खत्म हो गया अपना संदेश इतिहास बैकअप करें, ताकि नया फ़ोन लेने या Signal को फिर से इंस्टॉल करने पर आपका डेटा न खोए। @@ -7627,9 +7627,9 @@ कृपया अपना डिवाइस पिन, पासवर्ड या पैटर्न डालें। - Re-enable backups + बैकअप फिर से चालू करें - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + बैकअप को बंद कर दिया गया है और आपका डेटा Signal की सुरक्षित स्टोरेज डिवाइस से डिलीट कर दिया गया है। diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 2f2482ef93..836f11cf4e 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -369,7 +369,7 @@ Üzenetek - Chat types + Csevegéstípusok Üzenet %1$s @@ -4053,9 +4053,9 @@ Kamera megnyitása Még üres a csevegéslista.\nKezdésként üzenj egy barátodnak. - No chats to display + Nincs megjeleníthető csevegés - Folder settings + Mappabeállítások @@ -5055,53 +5055,53 @@ Billentyűzet Küldés Enterrel - Chat folders + Csevegési mappák - Add a chat folder + Adj hozzá egy csevegési mappát - Organize your chats into folders and quickly switch between them on your chat list. + Csevegéseid mappákba rendezheted, és gyorsan válthatsz közöttük a Csevegőlistán. - Folders + Mappák - Create a folder + Mappa létrehozása - All chats + Összes csevegés - Suggested folders + Javasolt mappák - Unreads + Olvasatlan üzenetek - Unread messages from all chats + Olvasatlan üzenetek az összes csevegésből - 1:1 chats + 1:1 csevegések - Only messages from direct chats + Csak a közvetlen csevegésekből származó üzenetek Csoportok - Only message from group chats + Csak a csoportos csevegésekből származó üzenetek Hozzáadás - %1$s folder added. + %1$s mappa hozzáadva. - Edit folder + Mappa szerkesztése - Delete folder + Mappa törlése - Add new folder + Új mappa hozzáadása - Mute all + Összes némítása - Reorder folders + Mappák átrendezése Összes megjelölése olvasottként - %1$d chat type - %1$d chat types + %1$d csevegéstípus + %1$d csevegéstípus @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d csevegés kizárva + %1$d csevegés kizárva - Create a folder + Mappa létrehozása - Folder name (required) + Mappa neve (kötelező) - Included chats + A csevegésekkel együtt - Add chats + Csevegések hozzáadása - Choose chats that you want to appear in this folder. + Válaszd ki azokat a csevegéseket, amelyeket meg szeretnél jeleníteni ebben a mappában. Kivételek - Exclude chats + Csevegések kizárása - Choose chats that you do not want to appear in this folder. + Válaszd ki azokat a csevegéseket, amelyeket nem szeretnél megjeleníteni ebben a mappában. - Only show unread chats + Csak az olvasatlan csevegések megjelenítése - When enabled, only chats with unread messages will be shown in this folder. + Ha engedélyezve van, csak az olvasatlan üzeneteket tartalmazó csevegések jelennek meg ebben a mappában. A némított csevegéseket is tartalmazza Létrehozás - Create folder? + Mappa létrehozása? - Do you want to create the chat folder \"%1$s\"? + Létrehozod a(z) „%1$s” csevegési mappát? - Create folder + Mappa létrehozása - Edit folder + Mappa szerkesztése Mentés - Save changes? + Módosítások mentése? - Do you want to save the changes you\'ve made to this chat folder? + Mented a csevegési mappában végzett módosításokat? - Save changes + Módosítások mentése Elvetés - Delete folder + Mappa törlése - Delete this chat folder? + Törlöd ezt a csevegési mappát? - Chat types + Csevegéstípusok Kész @@ -7445,15 +7445,15 @@ - Cancel download + Letöltés megszakítása - Downloading: %1$s of %2$s (%3$s%%) + Letöltés: %1$s/%2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Nincs elég hely a biztonsági másolat letöltéséhez. A folytatáshoz szabadíts fel %1$s helyet. - Skip download + Letöltés kihagyása - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Az utolsó biztonsági mentést nem lehetett befejezni. Győződj meg róla, hogy a telefonod csatlakozik a wifihez, és az újrapróbálkozáshoz koppints a Biztonsági mentés most elemre." @@ -7561,13 +7561,13 @@ A biztonsági mentés típusa megváltozott, és az előfizetés törlésre került - Subscription canceled + Előfizetés törölve A letöltés kész A biztonsági mentés éjszaka kerül létrehozásra. - Subscription inactive + Az előfizetés inaktív Biztonsági terv @@ -7579,9 +7579,9 @@ Megújul ekkor: %1$s - Expires on %1$s + %1$s dátummal lejár - Expired on %1$s + %1$s dátummal lejárt Készíts biztonsági másolatot az üzenetelőzményeidről, hogy soha ne veszíts el adatot új telefon vásárlásakor vagy a Signal újratelepítésekor. @@ -7627,9 +7627,9 @@ Kérjük, add meg az eszköz PIN-kódját, jelszavát vagy mintáját. - Re-enable backups + Engedélyezd újra a biztonsági mentéseket - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + A biztonsági mentéseket kikapcsoltuk, az adataidat töröltük a Signal biztonságos tárolási szolgáltatásából. diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 7ff80902f8..d5c4c83bf3 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -366,7 +366,7 @@ Pesan - Chat types + Jenis obrolan Pesan %1$s @@ -3950,9 +3950,9 @@ Buka Kamera Belum ada obrolan.\nMulailah dengan mengirim pesan ke seorang teman. - No chats to display + Tidak ada obrolan untuk ditampilkan - Folder settings + Pengaturan folder @@ -4936,52 +4936,52 @@ Papan ketik Kirim dengan enter - Chat folders + Folder obrolan - Add a chat folder + Tambahkan folder obrolan - Organize your chats into folders and quickly switch between them on your chat list. + Susun obrolan ke dalam folder agar bisa beralih dengan cepat antarfolder di daftar obrolan. - Folders + Folder - Create a folder + Buat folder - All chats + Semua obrolan - Suggested folders + Folder yang disarankan - Unreads + Belum dibaca - Unread messages from all chats + Pesan yang belum dibaca dari semua obrolan - 1:1 chats + Obrolan 1:1 - Only messages from direct chats + Hanya pesan dari obrolan langsung Grup - Only message from group chats + Hanya pesan dari obrolan grup Tambahkan - %1$s folder added. + Folder %1$s ditambahkan. Edit folder - Delete folder + Hapus folder - Add new folder + Tambahkan folder baru - Mute all + Bisukan semua - Reorder folders + Susun ulang folder Tandai semua sudah dibaca - %1$d chat types + %1$d jenis obrolan @@ -4989,60 +4989,60 @@ - %1$d chats excluded + %1$d obrolan dikecualikan - Create a folder + Buat folder - Folder name (required) + Nama folder (wajib) - Included chats + Obrolan yang disertakan - Add chats + Tambahkan obrolan - Choose chats that you want to appear in this folder. + Pilih obrolan yang ingin Anda tampilkan di folder ini. Pengecualian - Exclude chats + Kecualikan obrolan - Choose chats that you do not want to appear in this folder. + Pilih obrolan yang tidak ingin Anda tampilkan di folder ini. - Only show unread chats + Hanya tampilkan obrolan yang belum dibaca - When enabled, only chats with unread messages will be shown in this folder. + Jika diaktifkan, hanya obrolan dengan pesan belum dibaca yang akan ditampilkan di folder ini. - Sertakan Obrolan yang Dibisukan + Sertakan obrolan yang dibisukan Buat - Create folder? + Buat folder? - Do you want to create the chat folder \"%1$s\"? + Mau buat folder obrolan \"%1$s\"? - Create folder + Buat folder Edit folder Simpan - Save changes? + Simpan perubahan? - Do you want to save the changes you\'ve made to this chat folder? + Mau simpan perubahan yang telah dibuat pada folder obrolan ini? - Save changes + Simpan perubahan Hapus - Delete folder + Hapus folder - Delete this chat folder? + Hapus folder obrolan ini? - Chat types + Jenis obrolan Selesai @@ -7284,15 +7284,15 @@ - Cancel download + Batalkan pengunduhan - Downloading: %1$s of %2$s (%3$s%%) + Mengunduh: %1$s dari %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Ruang tidak cukup untuk mengunduh Cadangan Anda. Untuk lanjut, kosongkan ruang %1$s. - Skip download + Lewati pengunduhan - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Pencadangan terakhir Anda tidak dapat diselesaikan. Pastikan ponsel terhubung ke Wi-Fi dan ketuk Cadangkan sekarang untuk coba lagi." @@ -7399,13 +7399,13 @@ Tipe pencadangan diubah dan langganan dibatalkan - Subscription canceled + Langganan dibatalkan Unduhan selesai Pencadangan akan diproses dalam semalam. - Subscription inactive + Langganan tidak aktif Paket pencadangan @@ -7417,9 +7417,9 @@ Diperpanjang %1$s - Expires on %1$s + Kedaluwarsa pada %1$s - Expired on %1$s + Kadaluwarsa pada %1$s Cadangkan riwayat pesan sehingga data Anda tidak akan hilang saat Anda memakai ponsel baru atau menginstal ulang Signal. @@ -7465,9 +7465,9 @@ Masukkan pin, kata sandi, atau pola kunci perangkat Anda. - Re-enable backups + Aktifkan kembali cadangan - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Pencadangan telah dinonaktifkan dan data Anda telah dihapus dari layanan penyimpanan aman Signal. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 887dd8e676..8a4ac2f1ae 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -369,7 +369,7 @@ Messaggi - Chat types + Tipi di chat Messaggio %1$s @@ -4053,9 +4053,9 @@ Apri Fotocamera Ancora nessuna chat.\nInizia inviando un messaggio a un amico. - No chats to display + Nessuna chat da mostrare - Folder settings + Impostazioni cartella @@ -5055,53 +5055,53 @@ Tastiera Invia premendo invio - Chat folders + Cartelle delle chat - Add a chat folder + Aggiungi una cartella per le chat - Organize your chats into folders and quickly switch between them on your chat list. + Suddividi le tue chat in più cartelle e passa al volo da una cartella all\'altra nell\'elenco delle chat. - Folders + Cartelle - Create a folder + Crea una cartella - All chats + Tutte le chat - Suggested folders + Cartelle suggerite - Unreads + Da leggere - Unread messages from all chats + Messaggi non letti da tutte le chat - 1:1 chats + Chat singole - Only messages from direct chats + Solo messaggi da chat singole Gruppi - Only message from group chats + Solo messaggi da chat di gruppo Aggiungi - %1$s folder added. + %1$s cartella aggiunta. - Edit folder + Modifica cartella - Delete folder + Elimina cartella - Add new folder + Aggiungi nuova cartella - Mute all + Silenzia tutte - Reorder folders + Riordina cartelle Segna tutto come già letto - %1$d chat type - %1$d chat types + %1$d tipo di chat + %1$d tipi di chat @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d chat esclusa + %1$d chat escluse - Create a folder + Crea una cartella - Folder name (required) + Nome cartella (obbligatorio) - Included chats + Chat incluse - Add chats + Aggiungi chat - Choose chats that you want to appear in this folder. + Scegli le chat che vuoi vedere in questa cartella. Eccezioni - Exclude chats + Escludi chat - Choose chats that you do not want to appear in this folder. + Scegli le chat che non vuoi vedere in questa cartella. - Only show unread chats + Mostra solo chat non lette - When enabled, only chats with unread messages will be shown in this folder. + Se attivi questa opzione, in questa cartella vedrai solo chat con messaggi non letti. Includi chat silenziate Crea - Create folder? + Creare la cartella? - Do you want to create the chat folder \"%1$s\"? + Vuoi creare la cartella \"%1$s\" per le chat? - Create folder + Crea cartella - Edit folder + Modifica cartella Salva - Save changes? + Salvare modifiche? - Do you want to save the changes you\'ve made to this chat folder? + Vuoi salvare le modifiche effettuate a questa cartella? - Save changes + Salva le modifiche Elimina - Delete folder + Elimina cartella - Delete this chat folder? + Vuoi eliminare questa cartella per le chat? - Chat types + Tipi di chat Fatto @@ -7445,15 +7445,15 @@ - Cancel download + Annulla download - Downloading: %1$s of %2$s (%3$s%%) + Download in corso: %1$s di %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Spazio insufficiente per scaricare il tuo backup. Per continuare devi liberare %1$s. - Skip download + Salta download - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Non è stato possibile completare il tuo ultimo backup. Assicurati che il tuo dispositivo sia collegato a una rete Wi-Fi e tocca su \"Fai ora il backup\" per riprovare." @@ -7561,13 +7561,13 @@ Tipo di backup cambiato e donazione annullata - Subscription canceled + Abbonamento annullato Download completato Il backup verrà creato stanotte. - Subscription inactive + Abbonamento non attivo Piano del backup @@ -7579,9 +7579,9 @@ Rinnovo %1$s - Expires on %1$s + Scade il giorno %1$s - Expired on %1$s + Scaduto il giorno %1$s Salva la cronologia dei tuoi messaggi con dei backup per non perdere neanche una virgola quando compri un nuovo telefono o reinstalli Signal. @@ -7627,9 +7627,9 @@ Inserisci PIN, password o pattern del dispositivo. - Re-enable backups + Riattiva i backup - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + I backup sono stati disattivati e i tuoi dati sono stati eliminati dal servizio di archiviazione sicura di Signal. diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 1c6aecea7b..a8b15bc750 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -375,7 +375,7 @@ הודעות - Chat types + סוגי צ׳אטים %1$s של הודעה @@ -4259,9 +4259,9 @@ פתח מצלמה אין צ׳אטים עדיין.\nאפשר להתחיל באמצעות שליחת הודעה לחבר או חברה. - No chats to display + אין צ׳אטים להצגה - Folder settings + הגדרות תיקיה @@ -5293,55 +5293,55 @@ מקלדת שליחה עם enter - Chat folders + תיקיות צ׳אטים - Add a chat folder + הוספת תיקיית צ׳אטים - Organize your chats into folders and quickly switch between them on your chat list. + ארגון הצ׳אטים שלך בתיקיות והחלפה מהירה ביניהם ברשימת הצ׳אטים שלך. - Folders + תיקיות - Create a folder + יצירת תיקיה - All chats + כל הצ׳אטים - Suggested folders + תיקיות מוצעות - Unreads + לא נקראו - Unread messages from all chats + הודעות שלא נקראו מכל הצ׳אטים - 1:1 chats + צ׳אטים 1:1 - Only messages from direct chats + רק הודעות מצ׳אטים ישירים קבוצות - Only message from group chats + רק הודעות מצ׳אטים קבוצתיים הוסף - %1$s folder added. + תיקיה נוספה: %1$s. - Edit folder + עריכת תיקיה - Delete folder + מחיקת תיקיה - Add new folder + הוספת תיקיה חדשה - Mute all + השתקת הכל - Reorder folders + סידור תיקיות מחדש סמן הכול כנקרא - %1$d chat type - %1$d chat types - %1$d chat types - %1$d chat types + סוג צ׳אט %1$d + %1$d סוגי צ׳אטים + %1$d סוגי צ׳אטים + %1$d סוגי צ׳אטים @@ -5352,63 +5352,63 @@ - %1$d chat excluded - %1$d chats excluded - %1$d chats excluded - %1$d chats excluded + צ׳אט %1$d לא כלול + %1$d צ׳אטים לא כלולים + %1$d צ׳אטים לא כלולים + %1$d צ׳אטים לא כלולים - Create a folder + יצירת תיקיה - Folder name (required) + שם תיקיה (חובה) - Included chats + צ׳אטים כלולים - Add chats + הוספת צ׳אטים - Choose chats that you want to appear in this folder. + יש לבחור צ׳אטים שברצונך לכלול בתיקיה הזו. יוצאי דופן - Exclude chats + החרגת צ׳אטים - Choose chats that you do not want to appear in this folder. + אפשר לבחור צ׳אטים שלא יופיעו בתיקיה הזו. - Only show unread chats + להציג רק צ׳אטים שלא נקראו - When enabled, only chats with unread messages will be shown in this folder. + כשאפשרות זו מופעלת, רק צ׳אטים עם הודעות שלא נקראו יוצגו בתיקיה הזו. כלילת צ׳אטים מושתקים צור - Create folder? + ליצור תיקיה? - Do you want to create the chat folder \"%1$s\"? + האם ברצונך ליצור את תיקיית הצ׳אטים ״%1$s״? - Create folder + יצירת תיקיה - Edit folder + עריכת תיקיה שמירה - Save changes? + לשמור שינויים? - Do you want to save the changes you\'ve made to this chat folder? + האם ברצונך לשמור את השינויים שביצעת בתיקיית הצ׳אטים הזו? - Save changes + שמירת שינויים השמט - Delete folder + מחיקת תיקיה - Delete this chat folder? + למחוק את תיקיית הצ׳אטים הזו? - Chat types + סוגי צ׳אטים סיום @@ -7767,15 +7767,15 @@ - Cancel download + ביטול הורדה - Downloading: %1$s of %2$s (%3$s%%) + מורידים: %1$s מתוך %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + אין מספיק מקום כדי להוריד את הגיבוי שלך. כדי להמשיך, יש לפנות שטח של %1$s. - Skip download + דילוג על הורדה - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "לא ניתן היה להשלים את הגיבוי האחרון שלך. חשוב לוודא שהטלפון שלך מחובר ל–Wi–Fi וללחוץ ״לגבות כעת״ כדי לנסות שוב." @@ -7885,13 +7885,13 @@ סוג הגיבוי השתנה והמנוי בוטל - Subscription canceled + מנוי בוטל ההורדה הושלמה הגיבוי ייווצר במהלך הלילה. - Subscription inactive + מנוי לא פעיל תכנית גיבוי @@ -7903,9 +7903,9 @@ מתחדש ב–%1$s - Expires on %1$s + תאריך תפוגה: %1$s - Expired on %1$s + תאריך התפוגה היה: %1$s אפשר לגבות את היסטוריית ההודעות כך שאף פעם לא מאבדים נתונים כשמחליפים טלפון או מתקינים מחדש את Signal. @@ -7951,9 +7951,9 @@ יש להכניס את קוד ה–PIN, הסיסמה, או התבנית של המכשיר שלך. - Re-enable backups + הפעלת גיבויים מחדש - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + הגיבויים הושבתו והנתונים שלך נמחקו משירות האחסון המאובטח של Signal. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 19d47a089e..8f9f37a1f9 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -366,7 +366,7 @@ メッセージ - Chat types + チャットのタイプ %1$s にメッセージを送る @@ -3950,9 +3950,9 @@ カメラを開く まだチャットがありません。\n友達にメッセージを送って始めましょう。 - No chats to display + 表示するチャットがありません - Folder settings + フォルダを設定する @@ -4936,52 +4936,52 @@ キーボード Enterで送信 - Chat folders + チャットフォルダ - Add a chat folder + チャットフォルダを追加する - Organize your chats into folders and quickly switch between them on your chat list. + チャットをフォルダに整理し、チャットリストですばやく切り替えることができます。 - Folders + フォルダ - Create a folder + フォルダを作成する - All chats + すべてのチャット - Suggested folders + おすすめのフォルダ - Unreads + 未読 - Unread messages from all chats + すべてのチャットの未読メッセージ - 1:1 chats + 1対1のチャット - Only messages from direct chats + 1対1のチャットのメッセージのみ グループ - Only message from group chats + グループチャットのメッセージのみ 追加する - %1$s folder added. + 「%1$s」のフォルダが追加されました。 - Edit folder + フォルダを編集する - Delete folder + フォルダを消去する - Add new folder + 新しいフォルダを追加する - Mute all + すべてミュートする - Reorder folders + フォルダの順序を変更する すべて既読にする - %1$d chat types + %1$d種類のチャットタイプ @@ -4989,60 +4989,60 @@ - %1$d chats excluded + %1$d件のチャットを除く - Create a folder + フォルダを作成する - Folder name (required) + フォルダ名(必須) - Included chats + 対象のチャット - Add chats + チャットを追加する - Choose chats that you want to appear in this folder. + このフォルダに表示したいチャットを選択してください。 例外 - Exclude chats + チャットを除外する - Choose chats that you do not want to appear in this folder. + このフォルダ内に表示したくないチャットを選択してください。 - Only show unread chats + 未読のチャットだけを表示する - When enabled, only chats with unread messages will be shown in this folder. + 有効にすると、このフォルダ内に表示されるのは未読メッセージのあるチャットだけになります。 ミュート中のチャットも含める 作成する - Create folder? + フォルダを作成しますか? - Do you want to create the chat folder \"%1$s\"? + 「%1$s」のチャットフォルダを作成しますか? - Create folder + フォルダを作成する - Edit folder + フォルダを編集する 保存 - Save changes? + 変更を保存しますか? - Do you want to save the changes you\'ve made to this chat folder? + このチャットフォルダへの変更を保存しますか? - Save changes + 変更を保存する 破棄する - Delete folder + フォルダを消去する - Delete this chat folder? + このチャットフォルダを消去しますか? - Chat types + チャットのタイプ 完了 @@ -7284,15 +7284,15 @@ - Cancel download + ダウンロードをキャンセルする - Downloading: %1$s of %2$s (%3$s%%) + ダウンロード中:%2$s のうち %1$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + バックアップをダウンロードできる十分な空き容量がありません。続けるためには%1$sの空き容量を確保してください。 - Skip download + ダウンロードをスキップする - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "前回のバックアップは完了していません。ご利用中のスマートフォンがWi-Fiに接続されている事をご確認の上、「今すぐバックアップを実行する」をタップしてもう一度お試しください。" @@ -7399,13 +7399,13 @@ バックアップの種類が変更され、サブスクリプションがキャンセルされました - Subscription canceled + サブスクリプションが解除されました ダウンロード完了 バックアップは夜間に作成されます。 - Subscription inactive + サブスクリプションは非アクティブです バックアッププラン @@ -7417,9 +7417,9 @@ 更新 %1$s - Expires on %1$s + 有効期限:%1$s - Expired on %1$s + 有効期限:%1$s メッセージ履歴をバックアップしておくと、電話を買い替えたり、Signalを再インストールしたりしてもデータが失われることはありません。 @@ -7465,9 +7465,9 @@ ご利用の端末のPIN、パスワード、またはパターンを入力してください。 - Re-enable backups + バックアップをもう一度有効にする - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + バックアップがオフになり、データはSignalの安全なストレージサービスから消去されました。 diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml index c91989c506..54a32be61a 100644 --- a/app/src/main/res/values-ka/strings.xml +++ b/app/src/main/res/values-ka/strings.xml @@ -369,7 +369,7 @@ შეტყობინებები - Chat types + ჩატის ტიპები შეტყობინება %1$s @@ -4053,9 +4053,9 @@ კამერის გახსნა ჩატები ჯერ ვერ მოიძებნა.\nდაიწყე მეგობართან შეტყობინების გაგზავნით. - No chats to display + ჩატები ვერ მოიძებნა - Folder settings + საქაღალდის პარამეტრები @@ -5055,53 +5055,53 @@ კლავიატურა Enter-ით გაგზავნა - Chat folders + ჩატის საქაღალდეები - Add a chat folder + ჩატის საქაღალდის დამატება - Organize your chats into folders and quickly switch between them on your chat list. + გაანაწილე შენი ჩატები საქაღალდეებში და ჩატების სიაში სწრაფად გადადი ერთიდან მეორეზე. - Folders + საქაღალდეები - Create a folder + საქაღალდის შექმნა - All chats + ყველა ჩატი - Suggested folders + შემოთავაზებული საქაღალდეები - Unreads + წაუკითხავი - Unread messages from all chats + წაუკითხავი შეტყობინებები ყველა ჩატიდან - 1:1 chats + ერთი ერთზე ჩატები - Only messages from direct chats + შეტყობინებები მხოლოდ პირდაპირი ჩატებიდან ჯგუფები - Only message from group chats + შეტყობინებები მხოლოდ ჯგუფური ჩატებიდან დამატება - %1$s folder added. + საქაღალდე %1$s დამატებულია. - Edit folder + საქაღალდის რედაქტირება - Delete folder + საქაღალდის წაშლა - Add new folder + ახალი საქაღალდის დამატება - Mute all + გამოურთე ხმა ყველას - Reorder folders + საქაღალდეების გადალაგება ყველას წაკითხულად მონიშვნა - %1$d chat type - %1$d chat types + ჩატის %1$d ტიპი + ჩატის %1$d ტიპი @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + გამოტოვებულია %1$d ჩატი + გამოტოვებულია %1$d ჩატი - Create a folder + საქაღალდის შექმნა - Folder name (required) + საქაღალდის სახელი (სავალდებულო) - Included chats + შემავალი ჩატები - Add chats + დაამატე ჩატები - Choose chats that you want to appear in this folder. + აირჩიე ჩატები, რომელთა გამოჩენაც ამ საქაღალდეში გსურს. გამონაკლისები - Exclude chats + გამოტოვე ჩატები - Choose chats that you do not want to appear in this folder. + აირჩიე ჩატები, რომელთა გამოჩენაც ამ საქაღალდეში არ გსურს. - Only show unread chats + მხოლოდ წაუკითხავი ჩატების ჩვენება - When enabled, only chats with unread messages will be shown in this folder. + როცა ეს ჩართულია, საქაღალდეში მხოლოდ წაუკითხავი შეტყობინებების მქონე ჩატები გამოჩნდება. - Include muted chats + შეიყვანე ხმა გამორთული ჩატები შექმენი - Create folder? + გსურს, საქაღალდე შექმნა? - Do you want to create the chat folder \"%1$s\"? + გსურს, ჩატის საქაღალდე \"%1$s\" შექმნა? - Create folder + საქაღალდის შექმნა - Edit folder + საქაღალდის რედაქტირება შენახვა - Save changes? + გსურს, ცვლილებების შენახვა? - Do you want to save the changes you\'ve made to this chat folder? + გსურს, შენ მიერ ამ ჩატის საქაღალდეში განხორციელებული ცვლილებების შენახვა? - Save changes + ცვლილებების შენახვა გაუქმება - Delete folder + საქაღალდის წაშლა - Delete this chat folder? + გსურს ჩატის ეს საქაღალდე წაშალო? - Chat types + ჩატის ტიპები შესრულებულია @@ -7445,15 +7445,15 @@ - Cancel download + გადმოწერის გაუქმება - Downloading: %1$s of %2$s (%3$s%%) + მიმდინარეობს ჩამოტვირთვა: %2$s-დან %1$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + სათადარიგო ასლის გადმოსაწერად საკმარისი ადგილი არ გაქვს. გასაგრძელებლად გაათავისუფლე %1$s. - Skip download + გადმოწერის გამოტოვება - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "შენი ბოლო სათადარიგო ასლის შექმნა ვერ მოხერხდა. დარწმუნდი, რომ შენი მობილური Wi-Fi-სთან დაკავშირებულია და თავიდან საცდელად სათადარიგო ასლის ახლა შექმნას დააჭირე." @@ -7561,13 +7561,13 @@ სარეზერვო კოპირების ტიპი შეცვლილია და გამოწერა გაუქმდა - Subscription canceled + გამოწერა გაუქმებულია ჩამოტვირთვა დასრულებულია სარეზერვო კოპიები ღამით შეიქმნება. - Subscription inactive + გამოწერა არ არის გააქტიურებული სათადარიგო ასლების არჩეული გამოწერა @@ -7579,9 +7579,9 @@ განახლდება %1$s-ში - Expires on %1$s + ვადის გასვლის თარიღია %1$s - Expired on %1$s + ვადის გასვლის თარიღია %1$s შექმენი შენი მიმოწერის ისტორიის სათადარიგო ასლები, რათა ახალი მობილურის შეძენისას ან Signal-ის თავიდან გადმოწერისას მონაცემები არ დაკარგო. @@ -7627,9 +7627,9 @@ გთხოვთ, შენი მოწყობილობის პინ-კოდი, პაროლი ან პატერნი შეიყვანო. - Re-enable backups + სათადარიგო ასლების თავიდან ჩართვა - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + სათადარიგო ასლები გამოირთო და შენი მონაცემები Signal-ის უსაფრთხო შენახვის სერვისიდან წაიშალა. diff --git a/app/src/main/res/values-kk/strings.xml b/app/src/main/res/values-kk/strings.xml index 9a39bacf4b..058ca082ad 100644 --- a/app/src/main/res/values-kk/strings.xml +++ b/app/src/main/res/values-kk/strings.xml @@ -369,7 +369,7 @@ Хаттар - Chat types + Чат түрлері %1$s нөміріне хат жазу @@ -4053,9 +4053,9 @@ Камераны ашу Әлі бірде-бір чат жоқ.\nДосыңызға хат жазып бастаңыз. - No chats to display + Көрсетілетін чат жоқ - Folder settings + Қалта параметрлері @@ -5055,53 +5055,53 @@ Пернетақта Enter пернесімен жіберу - Chat folders + Чат қалталары - Add a chat folder + Чат қалтасын қосу - Organize your chats into folders and quickly switch between them on your chat list. + Чаттарыңызды қалталар бойынша реттеп, тізімдегі чаттардың бірінен екіншісіне жылдам ауысыңыз. - Folders + Қалталар - Create a folder + Қалта жасау - All chats + Барлық чат - Suggested folders + Ұсынылған қалталар - Unreads + Оқылмаған хабарлар - Unread messages from all chats + Барлық чат бойынша оқылмаған хабарлар - 1:1 chats + 1:1 чаттар - Only messages from direct chats + Тікелей чаттардан келген хабарлар ғана Топтар - Only message from group chats + Топтық чаттардан келген хабарлар ғана Қосу - %1$s folder added. + %1$s қалта қосылды. - Edit folder + Қалтаны өзгерту - Delete folder + Қалтаны жою - Add new folder + Жаңа қалта қосу - Mute all + Барлығының дыбысын өшіру - Reorder folders + Қалталардың ретін өзгерту Барлығын оқылды деп белгілеу - %1$d chat type - %1$d chat types + %1$d чат түрі + %1$d чат түрі @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d чат шығарылды + %1$d чат шығарылды - Create a folder + Қалта жасау - Folder name (required) + Қалта атауы (міндетті) - Included chats + Қосылған чаттар - Add chats + Чаттарды қосу - Choose chats that you want to appear in this folder. + Осы қалтада көрсетілуі тиіс чаттарды таңдаңыз. Ерекше жағдайлар - Exclude chats + Чаттарды шығару - Choose chats that you do not want to appear in this folder. + Осы қалтада көрсетілмеуі тиіс чаттарды таңдаңыз. - Only show unread chats + Оқылмаған чаттарды ғана көрсету - When enabled, only chats with unread messages will be shown in this folder. + Бұл параметр қосылған кезде, қалтада оқылмаған хабарлары бар чаттар ғана көрсетіледі. - Include muted chats + Дыбысы өшірілген чаттарды қосу Жасау - Create folder? + Қалта жасау керек пе? - Do you want to create the chat folder \"%1$s\"? + \"%1$s\" чат қалтасын жасағыңыз келе ме? - Create folder + Қалта жасау - Edit folder + Қалтаны өзгерту Сақтау - Save changes? + Өзгерістерді сақтау керек пе? - Do you want to save the changes you\'ve made to this chat folder? + Осы чат қалтасына енгізілген өзгерістерді сақтағыңыз келе ме? - Save changes + Өзгерістерді сақтау Тастау - Delete folder + Қалтаны жою - Delete this chat folder? + Осы чаттар қалтасын жою керек пе? - Chat types + Чат түрлері Дайын @@ -7445,15 +7445,15 @@ - Cancel download + Жүктеп алудан бас тарту - Downloading: %1$s of %2$s (%3$s%%) + Жүктеп алынып жатыр: %1$s/%2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Сақтық көшірмеңізді жүктеп алуға жеткілікті бос орын жоқ. Жүктеп алу үшін %1$s орын босатыңыз. - Skip download + Жүктеп алуды өткізіп жіберу - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Соңғы сақтық көшірме жасалмады. Телефоныңыз Wi-Fi желісіне қосылып тұрғанын тексеріп, \"Сақтық көшірмені қазір жасау\" түймесін түртіңіз де, қайталап көріңіз." @@ -7561,13 +7561,13 @@ Резервтік көшірме түрі өзгерді де, жазылымнан бас тартылды - Subscription canceled + Жазылым тоқтатылды. Жүктеп алынды Резервтік көшірме түнде жасалады. - Subscription inactive + Жазылым белсенді емес Сақтық көшірме жоспары @@ -7579,9 +7579,9 @@ %1$s жаңарады - Expires on %1$s + Мерзімі %1$s күні аяқталады - Expired on %1$s + Мерзімі %1$s күні аяқталды Хабарлар тарихының сақтық көшірмесін жасаңыз. Сонда жаңа телефон алсаңыз да, Signal-ды қайта орнатсаңыз да, деректеріңізді ешқашан жоғалтпайсыз. @@ -7627,9 +7627,9 @@ Құрылғыңыздың PIN кодын, құпиясөзін немесе өрнегін енгізіңіз. - Re-enable backups + Сақтық көшірмелерді қайта қосу - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Сақтық көшірмелер өшірілді және деректеріңіз Signal-дың қауіпсіз сақтау қызметінен жойылды. diff --git a/app/src/main/res/values-km/strings.xml b/app/src/main/res/values-km/strings.xml index ac27c0662c..8578cc4897 100644 --- a/app/src/main/res/values-km/strings.xml +++ b/app/src/main/res/values-km/strings.xml @@ -366,7 +366,7 @@ សារ - Chat types + ប្រភេទនៃការជជែក សារ %1$s @@ -3950,9 +3950,9 @@ បើកកាមេរ៉ា មិនមានការជជែកទេ។\nចាប់ផ្តើមដោយការផ្ញើសារទៅមិត្តភក្តិ។ - No chats to display + មិនមានការជជែកដែលត្រូវបង្ហាញទេ - Folder settings + ការកំណត់នៃថតឯកសារ @@ -4936,52 +4936,52 @@ ក្ដារចុច ផ្ញើដោយចុច Enter - Chat folders + ថតឯកសារជជែក - Add a chat folder + បញ្ចូលថតឯកសារជជែក - Organize your chats into folders and quickly switch between them on your chat list. + រៀបចំការជជែករបស់អ្នកទៅក្នុងថតឯកសារ ហើយមើលពីមួយទៅមួយបានលឿននៅលើបញ្ជីជជែករបស់អ្នក។ - Folders + ថតឯកសារ - Create a folder + បង្កើតថតឯកសារ - All chats + ការជជែកទាំងអស់ - Suggested folders + ថតឯកសារដែលបានណែនាំ - Unreads + មិនទាន់បានអាន - Unread messages from all chats + សារដែលមិនទាន់បានអានពីការជជែកទាំងអស់ - 1:1 chats + ការជជែកមួយទល់មួយ - Only messages from direct chats + សម្រាប់តែសារពីការជជែកផ្ទាល់ប៉ុណ្ណោះ ក្រុម - Only message from group chats + សម្រាប់តែសារពីការជជែកជាក្រុមប៉ុណ្ណោះ - បន្ថែម + បញ្ចូល - %1$s folder added. + ថតឯកសារ %1$s ត្រូវបានបញ្ចូល។ - Edit folder + កែថតឯកសារ - Delete folder + លុបថតឯកសារ - Add new folder + បញ្ចូលថតឯកសារថ្មី - Mute all + បិទសំឡេងទាំងអស់ - Reorder folders + តម្រៀបថតឯកសារឡើងវិញ - សម្គាល់ការអានទាំងអស់ + សម្គាល់ថាបានអានទាំងអស់ - %1$d chat types + ការជជែក %1$d ប្រភេទ @@ -4989,60 +4989,60 @@ - %1$d chats excluded + ការជជែក %1$d មិនត្រូវបានរាប់បញ្ចូល - Create a folder + បង្កើតថតឯកសារ - Folder name (required) + ឈ្មោះថតឯកសារ (ទាមទារ) - Included chats + ការជជែកដែលបានរាប់បញ្ចូល - Add chats + បញ្ចូលការជជែក - Choose chats that you want to appear in this folder. + ជ្រើសរើសការជជែកដែលអ្នកចង់បង្ហាញនៅក្នុងថតឯកសារនេះ។ - លើកលែង + ការមិនរាប់បញ្ចូល - Exclude chats + មិនរាប់បញ្ចូលការជជែក - Choose chats that you do not want to appear in this folder. + ជ្រើសរើសការជជែកដែលអ្នកមិនចង់បង្ហាញនៅក្នុងថតឯកសារនេះ។ - Only show unread chats + បង្ហាញតែការជជែកដែលមិនទាន់អាន - When enabled, only chats with unread messages will be shown in this folder. + នៅពេលបើក មានតែការជជែកដែលមានសារមិនទាន់បានអានប៉ុណ្ណោះនឹងត្រូវបង្ហាញនៅក្នុងថតឯកសារនេះ។ - Include muted chats + រាប់បញ្ចូលទាំងការជជែកដែលបានបិទសំឡេង បង្កើត - Create folder? + បង្កើតថតឯកសារឬ? - Do you want to create the chat folder \"%1$s\"? + តើអ្នកចង់បង្កើតថតឯកសារជជែក \"%1$s\" ឬទេ? - Create folder + បង្កើតថតឯកសារ - Edit folder + កែថតឯកសារ រក្សាទុក - Save changes? + រក្សាទុកការផ្លាស់ប្តូរឬ? - Do you want to save the changes you\'ve made to this chat folder? + តើអ្នកចង់រក្សាទុកការផ្លាស់ប្តូរដែលអ្នកបានធ្វើលើថតឯកសារជជែកនេះឬទេ? - Save changes + រក្សាទុកការផ្លាស់ប្តូរ បោះបង់ - Delete folder + លុបថតឯកសារ - Delete this chat folder? + លុបថតឯកសារជជែកនេះឬ? - Chat types + ប្រភេទនៃការជជែក រួចរាល់ @@ -7284,15 +7284,15 @@ - Cancel download + បោះបង់ការទាញយក - Downloading: %1$s of %2$s (%3$s%%) + កំពុងទាញយក៖ %1$s នៃ %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + មិនមានទំហំផ្ទុកគ្រប់គ្រាន់ដើម្បីទាញយកការបម្រុងទុករបស់អ្នក។ ដើម្បីបន្ត សូមរក្សាទំហំផ្ទុករបស់អ្នកឱ្យទំនេរបាន %1$s។ - Skip download + រំលងការទាញយក - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "ការបម្រុងទុកចុងក្រោយរបស់អ្នកមិនអាចបញ្ចប់បានទេ។ ត្រូវប្រាកដថាទូរសព្ទរបស់អ្នកបានភ្ជាប់ Wi-Fi រួចចុចបម្រុងទុកឥឡូវនេះ ដើម្បីព្យាយាមម្តងទៀត។" @@ -7399,13 +7399,13 @@ ប្រភេទបម្រុងទុកបានផ្លាស់ប្តូរ ហើយការជាវត្រូវបានបោះបង់ - Subscription canceled + ការជាវត្រូវបានបោះបង់ ការទាញយកបានបញ្ចប់ ការបម្រុងទុកនឹងត្រូវបានបង្កើតឡើងក្នុងពេលមួយយប់។ - Subscription inactive + ការជាវអសកម្ម គម្រោងបម្រុងទុក @@ -7417,9 +7417,9 @@ បន្ត %1$s - Expires on %1$s + ផុតកំណត់នៅ %1$s - Expired on %1$s + បានផុតកំណត់នៅ %1$s បម្រុងទុកប្រវត្តិសាររបស់អ្នក ដើម្បីកុំឱ្យបាត់បង់ទិន្នន័យនៅពេលអ្នកមានទូរសព្ទថ្មី ឬដំឡើង Signal ឡើងវិញ។ @@ -7465,9 +7465,9 @@ សូមបញ្ចូលលេខកូដសម្ងាត់ ពាក្យសម្ងាត់ ឬលំនាំឧបករណ៍របស់អ្នក។ - Re-enable backups + បើកឡើងវិញនូវការបម្រុងទុក - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + ការបម្រុងទុកត្រូវបានបិទ ហើយទិន្នន័យរបស់អ្នកត្រូវបានលុបចេញពីសេវាកម្មផ្ទុកដ៏មានសុវត្ថិភាពរបស់ Signal។ diff --git a/app/src/main/res/values-kn/strings.xml b/app/src/main/res/values-kn/strings.xml index 8bb2166430..2d1fbaa745 100644 --- a/app/src/main/res/values-kn/strings.xml +++ b/app/src/main/res/values-kn/strings.xml @@ -369,7 +369,7 @@ ಮೆಸೇಜ್‌ಗಳು - Chat types + ಚಾಟ್ ವಿಧಾನಗಳು ಸಂದೇಶ %1$s @@ -4053,9 +4053,9 @@ ಕ್ಯಾಮರಾ ತೆರೆಯಿರಿ ಇನ್ನೂ ಯಾವುದೇ ಚಾಟ್‌ಗಳಿಲ್ಲ.\nಸ್ನೇಹಿತರಿಗೆ ಮೆಸೇಜ್ ಮಾಡುವ ಮೂಲಕ ಆರಂಭಿಸಿ. - No chats to display + ತೋರಿಸಲು ಯಾವುದೇ ಚಾಟ್ ಗಳು ಇಲ್ಲ - Folder settings + ಫೋಲ್ಡರ್ ಸೆಟ್ಟಿಂಗ್ ಗಳು @@ -5055,53 +5055,53 @@ ಕೀಬೋರ್ಡ್‌ ಎಂಟರ್ ಮೂಲಕ ಕಳುಹಿಸಿ - Chat folders + ಚಾಟ್ ಫೋಲ್ಡರ್ ಗಳು - Add a chat folder + ಚಾಟ್ ಫೋಲ್ಡರ್ ಸೇರಿಸಲಾಗಿದೆ - Organize your chats into folders and quickly switch between them on your chat list. + ಫೋಲ್ಡರ್ ಗಳಲ್ಲಿ ಚಾಟ್ ಗಳನ್ನು ಅನುಕ್ರಮವಾಗಿ ಹೊಂದಿಸಿ ಮತ್ತು ಅವುಗಳನ್ನು ನಿಮ್ಮ ಚಾಟ್ ಗಳ ಪಟ್ಟಿಗೆ ತ್ವರಿತವಾಗಿ ಬದಲಾಯಿಸಿ. - Folders + ಫೋಲ್ಡರ್ ಗಳು - Create a folder + ಫೋಲ್ಡರ್ ರಚನೆ ಮಾಡಿ - All chats + ಎಲ್ಲ ಚಾಟ್ ಗಳು - Suggested folders + ಸೂಚಿಸಿದ ಫೋಲ್ಡರ್ ಗಳು - Unreads + ಓದದಿರುವ - Unread messages from all chats + ಎಲ್ಲ ಚಾಟ್‍ಗಳಲ್ಲಿನ ಓದದಿರುವ ಮೆಸೇಜ್ ಗಳು - 1:1 chats + 1:1 ಚಾಟ್ ಗಳು - Only messages from direct chats + ನೇರ ಚಾಟ್ ಗಳ ಮೆಸೇಜ್‍ಗಳು ಮಾತ್ರ ಗುಂಪುಗಳು - Only message from group chats + ಗುಂಪು ಚಾಟ್ ಗಳ ಮೆಸೇಜ್‍ ಮಾತ್ರ ಸೇರಿಸಿ - %1$s folder added. + %1$s ಫೋಲ್ಡರ್ ಸೇರಿಸಲಾಗಿದೆ. - Edit folder + ಫೋಲ್ಡರ್ ಗಳನ್ನು ಎಡಿಟ್ ಮಾಡಿ - Delete folder + ಫೋಲ್ಡರ್ ಅಳಿಸಿ - Add new folder + ಹೊಸ ಫೋಲ್ಡರ್ ಸೇರಿಸಿ - Mute all + ಎಲ್ಲವನ್ನೂ ಮ್ಯೂಟ್ ಮಾಡಿ - Reorder folders + ರೆಕಾರ್ಡರ್ ಫೋಲ್ಡರ್ ಗಳು ಎಲ್ಲವನ್ನು ಓದಿದೆ ಎಂದು ಗುರುತು ಮಾಡಿ - %1$d chat type - %1$d chat types + %1$d ಚಾಟ್ ವಿಧಾನ + %1$d ಚಾಟ್ ವಿಧಾನಗಳು @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d ಚಾಟ್ ಹೊರತುಪಡಿಸಲಾಗಿದೆ + %1$dಚಾಟ್ ಗಳನ್ನು ಹೊರತುಪಡಿಸಲಾಗಿದೆ - Create a folder + ಫೋಲ್ಡರ್ ರಚನೆ ಮಾಡಿ - Folder name (required) + ಫೋಲ್ಡರ್ ಹೆಸರು (ಅಗತ್ಯವಿದೆ) - Included chats + ಒಳಗೊಂಡಿರುವ ಚಾಟ್ ಗಳು - Add chats + ಚಾಟ್ ಗಳನ್ನು ಸೇರಿಸಿ - Choose chats that you want to appear in this folder. + ಈ ಫೋಲ್ಡರ್ ನಲ್ಲಿ ನೀವು ನೋಡಲು ಬಯಸುವ ಚಾಟ್ ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಿ. ವಿನಾಯಿತಿಗಳು - Exclude chats + ಚಾಟ್ ಗಳನ್ನು ಹೊರತುಪಡಿಸಿ - Choose chats that you do not want to appear in this folder. + ಈ ಫೋಲ್ಡರ್ ನಲ್ಲಿ ನೀವು ಬಯಸದೇ ಇರುವ ಚಾಟ್ ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಿ - Only show unread chats + ಓದದಿರುವ ಚಾಟ್ ಗಳನ್ನು ಮಾತ್ರವೇ ತೋರಿಸಿ - When enabled, only chats with unread messages will be shown in this folder. + ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ, ಫೋಲ್ಡರ್ ನಲ್ಲಿರುವ ಓದದಿರುವ ಚಾಟ್ ಗಳನ್ನು ಮಾತ್ರವೇ ತೋರಿಸಲಾಗುತ್ತದೆ - Include muted chats + ಮ್ಯೂಟ್ ಚಾಟ್ ಗಳನ್ನೂ ಒಳಗೊಂಡಿದೆ ರಚಿಸಿ - Create folder? + ಫೋಲ್ಡರ್ ರಚಿಸಬೇಕೇ? - Do you want to create the chat folder \"%1$s\"? + ಚಾಟ್ ಫೋಲ್ಡರ್ \"%1$s\" ರಚಿಸಬೇಕೇ? - Create folder + ಫೋಲ್ಡರ್ ರಚಿಸಿ - Edit folder + ಫೋಲ್ಡರ್ ಗಳನ್ನು ಎಡಿಟ್ ಮಾಡಿ ಉಳಿಸಿ - Save changes? + ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಬೇಕೇ? - Do you want to save the changes you\'ve made to this chat folder? + ಈ ಚಾಟ್ ಫೋಲ್ಡರ್ ನಲ್ಲಿ ಮಾಡಿದ ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಲು ಬಯಸುವಿರಾ? - Save changes + ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಿ ತ್ಯಜಿಸಿ - Delete folder + ಫೋಲ್ಡರ್ ಅಳಿಸಿ - Delete this chat folder? + ಈ ಚಾಟ್ ಫೋಲ್ಡರ್ ಅಳಿಸಿ ಹಾಕಬೇಕೆ? - Chat types + ಚಾಟ್ ವಿಧಾನಗಳು ಮುಗಿದಿದೆ @@ -7445,15 +7445,15 @@ - Cancel download + ಡೌನ್ ಲೋಡ್ ರದ್ದು ಮಾಡಿ - Downloading: %1$s of %2$s (%3$s%%) + ಡೌನ್‍ಲೋಡ್ ಆಗುತ್ತಿದೆ: %2$s, ಒಟ್ಟು %1$s(%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + ನಿಮ್ಮ ಬ್ಯಾಕಪ್ ಡೌನ್ ಲೋಡ್ ಡೌನ್ ಲೋಡ್ ಮಾಡಲು ಸಾಕಷ್ಟು ಸ್ಪೇಸ್ ಇಲ್ಲ. ಮುಂದುವರಿಯಲು %1$s ಸ್ಪೇಸ್ ಮುಕ್ತಗೊಳಿಸಿ. - Skip download + ಡೌನ್ ಲೋಡ್ ಸ್ಕಿಪ್ ಮಾಡಿ - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "ನಿಮ್ಮ ಕೊನೆಯ ಬ್ಯಾಕಪ್ ಪೂರ್ತಿಯಾಗಿಲ್ಲ. ನಿಮ್ಮ ಫೋನ್ ವೈ- ಫೈ ಸಂಪರ್ಕ ಹೊಂದಿರುವ ಬಗ್ಗೆ ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ಮತ್ತು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಲು ಬ್ಯಾಕಪ್ ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ." @@ -7561,13 +7561,13 @@ ಬ್ಯಾಕಪ್ ಪ್ರಕಾರವನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ ಮತ್ತು ಚಂದಾದಾರಿಕೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ - Subscription canceled + ಸಬ್‍ಸ್ಕ್ರಿಪ್ಷನ್ ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ ಡೌನ್‌ಲೋಡ್ ಪೂರ್ಣಗೊಂಡಿದೆ ರಾತ್ರಿಯಲ್ಲಿ ಬ್ಯಾಕಪ್ ಅನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ. - Subscription inactive + ಸಬ್‍ಸ್ಕ್ರಿಪ್ಷನ್ ನಿಷ್ಕ್ರಿಯವಾಗಿದೆ ಬ್ಯಾಕಪ್ ಪ್ಲಾನ್ @@ -7579,9 +7579,9 @@ ನವೀಕರಿಸುತ್ತದೆ %1$s - Expires on %1$s + %1$s ರಂದು ಅವಧಿ ಮುಗಿಯುತ್ತದೆ - Expired on %1$s + %1$s ರಂದು ಅವಧಿ ಮುಕ್ತಾಯವಾಗಿದೆ ನಿಮ್ಮ ಮೆಸೇಜ್ ಇತಿಹಾಸವನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡಿ, ಇದರಿಂದ ನೀವು ಹೊಸ ಫೋನ್ ಪಡೆದಾಗ ಅಥವಾ Signal ರೀಇನ್‍ಸ್ಟಾಲ್ ಮಾಡಿದಾಗ ಡೇಟಾವನ್ನು ಕಳೆದುಕೊಳ್ಳುವುದಿಲ್ಲ. @@ -7627,9 +7627,9 @@ ನಿಮ್ಮ ಸಾಧನದ PIN, ಪಾಸ್‌ವರ್ಡ್ ಅಥವಾ ಪ್ಯಾಟರ್ನ್ ಅನ್ನು ನಮೂದಿಸಿ. - Re-enable backups + ಬ್ಯಾಕಪ್ ಗಳನ್ನು ಮತ್ತೆ ಸಕ್ರಿಯಗೊಳಿಸಿ - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + ಬ್ಯಾಕಪ್ ಗಳನ್ನು ಆಫ್ ಮಾಡಲಾಗಿದೆ ಮತ್ತು Signal ನ ಸುರಕ್ಷಾ ಸ್ಟೋರೇಜ್ ಸೇವೆಗಾಗಿ ಸುರಕ್ಷತೆಗಾಗಿ ನಿಮ್ಮ ಡೇಟಾಗಳನ್ನು ಅಳಿಸಲಾಗಿದೆ. diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 7b79fc3419..c2ca86ea9b 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -366,7 +366,7 @@ 메시지 - Chat types + 대화 유형 %1$s에 메시지 보내기 @@ -3950,9 +3950,9 @@ 카메라 열기 아직 대화가 없습니다.\n친구에게 메시지를 보내 시작해 보세요. - No chats to display + 표시할 대화가 없습니다. - Folder settings + 폴더 설정 @@ -4936,52 +4936,52 @@ 키보드 Enter 키로 보내기 - Chat folders + 대화 폴더 - Add a chat folder + 대화 폴더 추가 - Organize your chats into folders and quickly switch between them on your chat list. + 대화를 폴더로 정리하여 대화 목록에서 대화 간에 빠르게 전환하세요. - Folders + 폴더 - Create a folder + 폴더 만들기 - All chats + 모든 대화 - Suggested folders + 추천 폴더 - Unreads + 읽지 않음 - Unread messages from all chats + 모든 대화의 읽지 않은 메시지 - 1:1 chats + 1:1 대화 - Only messages from direct chats + 직접 대화의 메시지만 그룹 - Only message from group chats + 그룹 대화의 메시지만 추가 - %1$s folder added. + %1$s 폴더를 추가했습니다. - Edit folder + 폴더 수정 - Delete folder + 폴더 삭제 - Add new folder + 새 폴더 추가 - Mute all + 모두 음소거 - Reorder folders + 폴더 순서 재정렬 모두 읽음으로 표시 - %1$d chat types + 대화 유형 %1$d개 @@ -4989,60 +4989,60 @@ - %1$d chats excluded + 대화 %1$d개를 제외함 - Create a folder + 폴더 만들기 - Folder name (required) + 폴더 이름(필수) - Included chats + 포함된 대화 - Add chats + 대화 추가 - Choose chats that you want to appear in this folder. + 이 폴더에 표시하려는 대화를 선택하세요. 예외 - Exclude chats + 대화 제외 - Choose chats that you do not want to appear in this folder. + 이 폴더에 표시하지 않으려는 대화를 선택하세요. - Only show unread chats + 읽지 않은 대화만 표시 - When enabled, only chats with unread messages will be shown in this folder. + 사용하도록 설정할 경우 읽지 않은 메시지가 있는 대화만 이 폴더에 표시됩니다. 알림을 끈 대화 포함 만들기 - Create folder? + 폴더를 만드시겠습니까? - Do you want to create the chat folder \"%1$s\"? + \'%1$s\' 대화 폴더를 만드시겠습니까? - Create folder + 폴더 만들기 - Edit folder + 폴더 수정 저장 - Save changes? + 변경 내용을 저장하시겠습니까? - Do you want to save the changes you\'ve made to this chat folder? + 이 대화 폴더에 적용한 변경 내용을 저장하시겠습니까? - Save changes + 변경 내용 저장 파기 - Delete folder + 폴더 삭제 - Delete this chat folder? + 이 대화 폴더를 삭제하시겠습니까? - Chat types + 대화 유형 확인 @@ -7284,15 +7284,15 @@ - Cancel download + 다운로드 취소 - Downloading: %1$s of %2$s (%3$s%%) + 다운로드하는 중: %1$s/%2$s(%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + 백업을 다운로드할 공간이 부족합니다. 계속하려면 %1$s의 공간을 확보하세요. - Skip download + 다운로드 건너뛰기 - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "마지막 백업을 완료하지 못했습니다. 휴대폰이 Wi-Fi에 연결되어 있는지 확인하고 지금 백업을 탭하여 다시 시도하세요." @@ -7399,13 +7399,13 @@ 백업 종류를 변경하고 구독을 취소했습니다. - Subscription canceled + 구독을 취소했습니다. 다운로드 완료 밤사이 백업을 생성합니다. - Subscription inactive + 구독 비활성 백업 플랜 @@ -7417,9 +7417,9 @@ %1$s 갱신 - Expires on %1$s + %1$s에 만료됨 - Expired on %1$s + %1$s에 만료됨 새 휴대폰을 사용하거나 Signal을 다시 설치할 때 데이터를 잃지 않도록 메시지 기록을 백업하세요. @@ -7465,9 +7465,9 @@ 기기 PIN, 암호 또는 패턴을 입력하세요. - Re-enable backups + 백업 재활성화 - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + 백업을 사용하지 않도록 설정했으며, Signal의 안전한 저장소 서비스에서 데이터를 삭제했습니다. diff --git a/app/src/main/res/values-ky/strings.xml b/app/src/main/res/values-ky/strings.xml index 5020088feb..4e37c30be3 100644 --- a/app/src/main/res/values-ky/strings.xml +++ b/app/src/main/res/values-ky/strings.xml @@ -366,7 +366,7 @@ Билдирүүлөр - Chat types + Маектин түрлөрү Билдирүү %1$s @@ -3950,9 +3950,9 @@ Камераны ачуу Азырынча маектер жок.\nДосуңузга жазуудан баштаңыз. - No chats to display + Эч нерсе жок - Folder settings + Папканын параметрлери @@ -4936,52 +4936,52 @@ Баскычтоп Enter\'ди басып жөнөтүү - Chat folders + Маектер папкалары - Add a chat folder + Маек папкасын кошуу - Organize your chats into folders and quickly switch between them on your chat list. + Маектериңизди папкаларга салып, керектүүлөрүн оңой тапкыдай кылыңыз. - Folders + Папкалар - Create a folder + Папка түзүү - All chats + Бардык маектер - Suggested folders + Сунушталган папкалар - Unreads + Окула электер - Unread messages from all chats + Бардык маектердеги окула элек билдирүүлөр - 1:1 chats + Жекеме-жеке маектешүү - Only messages from direct chats + Жекеме-жеке маектердеги билдирүүлөр гана Топтор - Only message from group chats + Топтук маектердеги билдирүү гана Кошуу - %1$s folder added. + %1$s папкасы кошулду. - Edit folder + Папканы оңдоо - Delete folder + Папканы өчүрүү - Add new folder + Жаңы папка кошуу - Mute all + Баарынын үнүн басуу - Reorder folders + Папкалардын иретин өзгөртүү Баарын окулду деп белгилөө - %1$d chat types + %1$d маектин түрлөрү @@ -4989,60 +4989,60 @@ - %1$d chats excluded + %1$d маек чыгарылды - Create a folder + Папка түзүү - Folder name (required) + Папканын аталышы (талап кылынат) - Included chats + Кошулган маектер - Add chats + Маектерди кошуу - Choose chats that you want to appear in this folder. + Бул папкада көрүнө турган маектерди тандайсыз. Өзгөчө учурлар - Exclude chats + Маектерди чыгаруу - Choose chats that you do not want to appear in this folder. + Бул папкада көрүнбөсүн деген маектерди тандайсыз. - Only show unread chats + Окула элек маектер гана көрүнсүн - When enabled, only chats with unread messages will be shown in this folder. + Иштетсеңиз, бул папкада билдирүүлөрү окула элек маектер гана көрүнөт. - Include muted chats + Үнү басылган маектерди да Түзүү - Create folder? + Папка түзөсүзбү? - Do you want to create the chat folder \"%1$s\"? + \"%1$s\" деген маектер папкасын түзөсүзбү? - Create folder + Ооба - Edit folder + Папканы оңдоо Сактоо - Save changes? + Өзгөрүүлөрдү сактайсызбы? - Do you want to save the changes you\'ve made to this chat folder? + Ушул маектер папкасына киргизилген өзгөрүүлөрдү сактайсызбы? - Save changes + Ооба Жокко чыгаруу - Delete folder + Папканы өчүрүү - Delete this chat folder? + Бул маектер папкасын өчүрөсүзбү? - Chat types + Маектин түрлөрү Бүттү @@ -7284,15 +7284,15 @@ - Cancel download + Токтотуу - Downloading: %1$s of %2$s (%3$s%%) + Канчасы жүктөлүп алынды: %2$s ичинен %1$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Камдык көчүрмөңүздү жүктөөгө орун жетишпейт. Улантуу үчүн %1$s орун бошотуңуз. - Skip download + Өткөрүп жиберүү - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Акыркы камдык көчүрмөңүз аягына чейин чыккан жок. Телефонуңуздун Wi-Fi\'га туташып турганын текшерип, \"Камдык көчүрмөнү сактоо\" дегенди басып кайталап көрүңүз." @@ -7399,13 +7399,13 @@ Камдык көчүрмөнүн түрү өзгөрүп, жазылуу токтотулду - Subscription canceled + Жазылуу токтотулду Жүктөлүп бүттү Камдык көчүрмөсү түндө түзүлөт. - Subscription inactive + Жазылуу токтотулду Камдык көчүрүү планы @@ -7417,9 +7417,9 @@ %1$s жаңырат - Expires on %1$s + Качан бүтөт: %1$s - Expired on %1$s + Качан бүттү: %1$s Жаңы телефон алганыңызда же Signal\'ды кайра орнотконуңузда эч качан дайындарыңызды жоготуп албашыңыз үчүн билдирүүлөр таржымалыңыздын камдык көчүрмөсүн сактаңыз. @@ -7465,9 +7465,9 @@ Түзмөгүңүздүн pin кодун, сырсөзүн же графикалык ачкычын киргизиңиз. - Re-enable backups + Кайра иштетүү - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Камдык көчүрмөлөрдү сактоо функциясы өчүрүлгөндүктөн, Signal\'дын сактагычында сакталган нерселериңиз өчүп калды. diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index 9cf1a24b82..12e8c06037 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -372,7 +372,7 @@ Ziņas - Chat types + Sarunu veidi Ziņa %1$s @@ -4156,9 +4156,9 @@ Atvērt kameru Vēl nav sarunu.\nSāciet, nosūtot ziņu draugam. - No chats to display + Nav sarunu, ko parādīt - Folder settings + Mapes iestatījumi @@ -5174,54 +5174,54 @@ Tastatūra Sūtīt, nospiežot \"Enter\" - Chat folders + Sarunu mapes - Add a chat folder + Pievienot sarunu mapi - Organize your chats into folders and quickly switch between them on your chat list. + Sakārtojiet sarunas mapēs un ātri pārslēdzieties starp tām savā sarunu sarakstā. - Folders + Mapes - Create a folder + Izveidot mapi - All chats + Visas sarunas - Suggested folders + Ieteiktās mapes - Unreads + Nelasītās - Unread messages from all chats + Nelasītās ziņas no visām sarunām - 1:1 chats + Privātās sarunas - Only messages from direct chats + Tikai ziņas no privātajām sarunām Grupas - Only message from group chats + Tikai ziņas no grupu sarunām Pievienot - %1$s folder added. + Mape %1$s pievienota. - Edit folder + Rediģēt mapi - Delete folder + Dzēst mapi - Add new folder + Pievienot jaunu mapi - Mute all + Izslēgt paziņojumus visām - Reorder folders + Pārkārtot mapes Atzīmēt visus kā lasītus - %1$d chat types - %1$d chat type - %1$d chat types + %1$d sarunu veidi + %1$d sarunu veids + %1$d sarunu veidi @@ -5231,62 +5231,62 @@ - %1$d chats excluded - %1$d chat excluded - %1$d chats excluded + %1$d sarunas nav ietvertas + %1$d saruna nav ietverta + %1$d sarunas nav ietvertas - Create a folder + Izveidot mapi - Folder name (required) + Mapes nosaukums (obligāts) - Included chats + Iekļautās sarunas - Add chats + Pievienot sarunas - Choose chats that you want to appear in this folder. + Izvēlieties sarunas, kuras vēlaties iekļaut šajā mapē. Izņēmumi - Exclude chats + Neietvert sarunas - Choose chats that you do not want to appear in this folder. + Izvēlieties sarunas, kuras nevēlaties iekļaut šajā mapē. - Only show unread chats + Rādīt tikai nelasītās sarunas - When enabled, only chats with unread messages will be shown in this folder. + Aktivizējot pārslēgu, šajā mapē tiks rādītas tikai sarunas ar nelasītām ziņām. - Include muted chats + Iekļaut sarunas, kuru paziņojumi ir izslēgti Izveidot - Create folder? + Vai izveidot mapi? - Do you want to create the chat folder \"%1$s\"? + Vai vēlaties izveidot sarunu mapi \"%1$s\"? - Create folder + Izveidot mapi - Edit folder + Rediģēt mapi Saglabāt - Save changes? + Vai saglabāt izmaiņas? - Do you want to save the changes you\'ve made to this chat folder? + Vai vēlaties saglabāt šajā sarunu mapē veiktās izmaiņas? - Save changes + Saglabāt izmaiņas Atmest - Delete folder + Dzēst mapi - Delete this chat folder? + Vai dzēst šo sarunu mapi? - Chat types + Sarunu veidi Gatavs @@ -7606,15 +7606,15 @@ - Cancel download + Atcelt lejupielādi - Downloading: %1$s of %2$s (%3$s%%) + Lejupielādē: %1$s no %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Nepietiek vietas, lai lejupielādētu rezerves kopiju. Lai turpinātu, atbrīvojiet %1$s vietas. - Skip download + Izlaist lejupielādi - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Neizdevās pabeigt pēdējās rezerves kopijas izveidi. Lai mēģinātu vēlreiz, pārliecinieties, ka tālrunī ir izveidots savienojums ar Wi-Fi un pieskarieties pie \"Izveidot rezerves kopiju tūlīt\"." @@ -7723,13 +7723,13 @@ Rezerves kopijas veids mainīts, un abonements atcelts - Subscription canceled + Abonements atcelts Lejupielāde pabeigta Rezerves kopija tiks izveidota pa nakti. - Subscription inactive + Abonements neaktīvs Rezerves kopiju plāns @@ -7741,9 +7741,9 @@ Atjaunojas %1$s - Expires on %1$s + Derīguma termiņš: %1$s - Expired on %1$s + Derīguma termiņš beigsies: %1$s Izveidojiet ziņu vēstures rezerves kopiju, lai nezaudētu datus, nomainot tālruni vai pārinstalējot Signal. @@ -7789,9 +7789,9 @@ Ievadiet ierīces PIN kodu, paroli vai atbloķēšanas kombināciju. - Re-enable backups + Atkārtoti iespējot rezerves kopiju izveidi - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Rezerves kopiju izveide ir izslēgta, un jūsu dati ir dzēsti no Signal drošās krātuves pakalpojuma. diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml index 9f6ace562f..6313766c0d 100644 --- a/app/src/main/res/values-mk/strings.xml +++ b/app/src/main/res/values-mk/strings.xml @@ -369,7 +369,7 @@ Пораки - Chat types + Видови разговори Порака %1$s @@ -4053,9 +4053,9 @@ Отвори камера Немате разговори.\nЗапочнете со испраќање порака на пријател. - No chats to display + Нема разговори за прикажување - Folder settings + Поставувања за папката @@ -5055,53 +5055,53 @@ Тастатура Испраќај со копчето enter - Chat folders + Папки со разговори - Add a chat folder + Додајте папка со разговори - Organize your chats into folders and quickly switch between them on your chat list. + Организирајте ги вашите разговори во папки и брзо преминувајте од еден на друг разговор во вашата листа со разговори. - Folders + Папки - Create a folder + Направете папка - All chats + Сите разговори - Suggested folders + Предложени папки - Unreads + Непрочитани - Unread messages from all chats + Непрочитани пораки од сите разговори - 1:1 chats + Разговори еден на еден - Only messages from direct chats + Само пораки од директни разговори Групи - Only message from group chats + Само пораки од групни разговори Додај - %1$s folder added. + Додадена е папката %1$s. - Edit folder + Изменете ја папката - Delete folder + Избришете папка - Add new folder + Додајте нова папка - Mute all + Исклучете ги известувањата на сите - Reorder folders + Сменете го распоредот на папки Обележи сѐ како прочитано - %1$d chat type - %1$d chat types + %1$d вид разговор + %1$d вида разговори @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d исклучен разговор + %1$d исклучени разговори - Create a folder + Направете папка - Folder name (required) + Име на папка (задолжително) - Included chats + Вклучени разговори - Add chats + Додајте разговори - Choose chats that you want to appear in this folder. + Изберете разговори коишто сакате да се прикажат во оваа папка. Исклучоци - Exclude chats + Исклучете разговори - Choose chats that you do not want to appear in this folder. + Изберете разговори коишто не сакате да се прикажат во оваа папка. - Only show unread chats + Прикажувај само непрочитани разговори - When enabled, only chats with unread messages will be shown in this folder. + Кога оваа опција е овозможена, во оваа папка ќе се прикажуваат само разговори со непрочитани пораки. - Include muted chats + Вклучи ги и разговорите со исклучени известувања Создај - Create folder? + Да се направи папка? - Do you want to create the chat folder \"%1$s\"? + Дали сакате да направите папка со разговори насловена „%1$s“? - Create folder + Направете папка - Edit folder + Изменете ја папката Зачувај - Save changes? + Да се зачуваат промените? - Do you want to save the changes you\'ve made to this chat folder? + Дали сакате да ги зачувате промените на оваа папка со разговори? - Save changes + Зачувај ги промените Откажи - Delete folder + Избришете папка - Delete this chat folder? + Да се избрише оваа папка со разговори? - Chat types + Видови разговори Готово @@ -7445,15 +7445,15 @@ - Cancel download + Откажете го преземањето - Downloading: %1$s of %2$s (%3$s%%) + Се преземаат: %1$s од %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Нема доволно простор за складирање на вашата резервна копија. За да продолжите, ослободете простор од %1$s. - Skip download + Прескокнете го преземањето - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Не можеше да се заврши вашата последна резервна копија. Проверете дали вашиот телефон e поврзан на Wi-Fi, допрете на „Направи резервна копија сега“ и обидете се повторно." @@ -7561,13 +7561,13 @@ Видот на резервна копија е сменет и претплатата е откажана - Subscription canceled + Претплатата е откажана Преземањето е завршено Резервната копија ќе се прави во текот на ноќта. - Subscription inactive + Претплатата не е активна Претплатен пакет на резервни копии @@ -7579,9 +7579,9 @@ Се обновува на %1$s - Expires on %1$s + Истекува на %1$s - Expired on %1$s + Истече на %1$s Направете резервна копија на вашата историја на пораки за да не губите податоци кога ќе земете нов телефон или ќе ја реинсталирате Signal апликацијата. @@ -7627,9 +7627,9 @@ Ве молиме внесете го вашиот PIN, лозинка или шема за отклучување. - Re-enable backups + Повторно овозможете правење резервни копии - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Резервните копии се оневозможени и вашите податоци беа избришани од услугата за безбедно складирање на Signal. diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 18dd578df5..f983a28600 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -369,7 +369,7 @@ സന്ദേശങ്ങൾ - Chat types + ചാറ്റ് തരങ്ങൾ സന്ദേശ൦ %1$s @@ -4053,9 +4053,9 @@ ക്യാമറ തുറക്കുക ഇതുവരെ ചാറ്റുകളൊന്നുമില്ല.\nഒരു സുഹൃത്തിന് സന്ദേശമയച്ചുകൊണ്ട് ആരംഭിക്കുക. - No chats to display + പ്രദർശിപ്പിക്കാൻ ചാറ്റുകളൊന്നുമില്ല - Folder settings + ഫോൾഡർ ക്രമീകരണങ്ങൾ @@ -5055,53 +5055,53 @@ കീബോർഡ് എൻ്റർ ചെയ്ത് അയയ്ക്കുക - Chat folders + ചാറ്റ് ഫോൾഡറുകൾ - Add a chat folder + ഒരു ചാറ്റ് ഫോൾഡർ ചേർക്കുക - Organize your chats into folders and quickly switch between them on your chat list. + നിങ്ങളുടെ ചാറ്റുകൾ ഫോൾഡറുകളായി ഓർഗനൈസുചെയ്യുകയും നിങ്ങളുടെ ചാറ്റ് ലിസ്റ്റിൽ അവയ്ക്കിടയിൽ വേഗത്തിൽ മാറുകയും ചെയ്യുക. - Folders + ഫോൾഡറുകൾ - Create a folder + ഒരു ഫോൾഡർ സൃഷ്ടിക്കുക - All chats + എല്ലാ ചാറ്റുകളും - Suggested folders + നിർദ്ദേശിക്കപ്പെട്ട ഫോൾഡറുകൾ - Unreads + വായിക്കാത്തവ - Unread messages from all chats + എല്ലാ ചാറ്റുകളിൽ നിന്നുമുള്ള വായിക്കാത്ത സന്ദേശങ്ങൾ - 1:1 chats + 1:1 ചാറ്റുകൾ - Only messages from direct chats + നേരിട്ടുള്ള ചാറ്റുകളിൽ നിന്നുള്ള സന്ദേശങ്ങൾ മാത്രം ഗ്രൂപ്പുകൾ - Only message from group chats + ഗ്രൂപ്പ് ചാറ്റുകളിൽ നിന്നുള്ള സന്ദേശം മാത്രം ചേർക്കുക - %1$s folder added. + %1$s ഫോൾഡർ ചേർത്തു. - Edit folder + ഫോൾഡർ എഡിറ്റ് ചെയ്യുക - Delete folder + ഫോൾഡർ ഇല്ലാതാക്കുക - Add new folder + പുതിയ ഫോൾഡർ ചേർക്കുക - Mute all + എല്ലാം മ്യൂട്ട് ചെയ്യുക - Reorder folders + ഫോൾഡറുകൾ പുനഃക്രമീകരിക്കുക എല്ലാം വായിച്ചതായി കാണിക്കൂ - %1$d chat type - %1$d chat types + %1$d ചാറ്റ് തരം + %1$d ചാറ്റ് തരങ്ങൾ @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d ചാറ്റ് ഒഴിവാക്കി + %1$d ചാറ്റുകൾ ഒഴിവാക്കി - Create a folder + ഒരു ഫോൾഡർ സൃഷ്ടിക്കുക - Folder name (required) + ഫോൾഡറിൻ്റെ പേര് (ആവശ്യമാണ്) - Included chats + ചാറ്റുകൾ ഉൾപ്പെടുത്തിയിട്ടുണ്ട് - Add chats + ചാറ്റുകൾ ചേർക്കുക - Choose chats that you want to appear in this folder. + ഈ ഫോൾഡറിൽ ദൃശ്യമാകാൻ ആഗ്രഹിക്കുന്ന ചാറ്റുകൾ തിരഞ്ഞെടുക്കുക. ഉള്‍പ്പെടാത്തവ - Exclude chats + ചാറ്റുകൾ ഒഴിവാക്കുക - Choose chats that you do not want to appear in this folder. + ഈ ഫോൾഡറിൽ ദൃശ്യമാകാൻ നിങ്ങൾ ആഗ്രഹിക്കാത്ത ചാറ്റുകൾ തിരഞ്ഞെടുക്കുക. - Only show unread chats + വായിക്കാത്ത ചാറ്റുകൾ മാത്രം കാണിക്കുക - When enabled, only chats with unread messages will be shown in this folder. + പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, വായിക്കാത്ത സന്ദേശങ്ങളുള്ള ചാറ്റുകൾ മാത്രമേ ഈ ഫോൾഡറിൽ കാണിക്കൂ. - Include muted chats + മ്യൂട്ട് ചെയ്ത ചാറ്റുകൾ ഉൾപ്പെടുത്തുക സൃഷ്ടിക്കൂ - Create folder? + ഫോൾഡർ സൃഷ്ടിക്കണോ? - Do you want to create the chat folder \"%1$s\"? + നിങ്ങൾക്ക് \"%1$s\" എന്ന ചാറ്റ് ഫോൾഡർ സൃഷ്ടിക്കണോ? - Create folder + ഫോൾഡർ സൃഷ്ടിക്കുക - Edit folder + ഫോൾഡർ എഡിറ്റ് ചെയ്യുക സംരക്ഷിക്കൂ - Save changes? + മാറ്റങ്ങൾ സംരക്ഷിക്കണോ? - Do you want to save the changes you\'ve made to this chat folder? + ഈ ചാറ്റ് ഫോൾഡറിൽ നിങ്ങൾ വരുത്തിയ മാറ്റങ്ങൾ സംരക്ഷിക്കണോ? - Save changes + മാറ്റങ്ങൾ സംരക്ഷിക്കുക കളയുക - Delete folder + ഫോൾഡർ ഇല്ലാതാക്കുക - Delete this chat folder? + ഈ ചാറ്റ് ഫോൾഡർ ഇല്ലാതാക്കണോ? - Chat types + ചാറ്റ് തരങ്ങൾ പൂർത്തിയായി @@ -7445,15 +7445,15 @@ - Cancel download + ഡൗൺലോഡ് റദ്ദാക്കുക - Downloading: %1$s of %2$s (%3$s%%) + ഡൗൺലോഡ് ചെയ്യുന്നു: %1$s / %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + നിങ്ങളുടെ ബാക്കപ്പ് ഡൗൺലോഡ് ചെയ്യാൻ മതിയായ ഇടമില്ല. തുടരാൻ %1$s ഇടം ശൂന്യമാക്കുക. - Skip download + ഡൗൺലോഡ് ഒഴിവാക്കുക - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "നിങ്ങളുടെ അവസാന ബാക്കപ്പ് പൂർത്തിയാക്കാനായില്ല. നിങ്ങളുടെ ഫോൺ Wi-Fi-ലേക്ക് കണക്‌റ്റ് ചെയ്‌തിട്ടുണ്ടെന്ന് ഉറപ്പുവരുത്തുക, വീണ്ടും ശ്രമിക്കാൻ ഇപ്പോൾ ബാക്കപ്പ് ടാപ്പ് ചെയ്യുക." @@ -7561,13 +7561,13 @@ ബാക്കപ്പ് തരം മാറ്റി, സബ്സ്ക്രിപ്ഷൻ റദ്ദാക്കി - Subscription canceled + സബ്സ്ക്രിപ്ഷൻ റദ്ദാക്കി ഡൗൺലോഡ് പൂർത്തിയായി ഒറ്റരാത്രികൊണ്ട് ബാക്കപ്പ് സൃഷ്ടിക്കപ്പെടും. - Subscription inactive + സബ്സ്ക്രിപ്ഷൻ നിഷ്‌ക്രിയമാണ് ബാക്കപ്പ് പ്ലാൻ @@ -7579,9 +7579,9 @@ %1$s പുതുക്കുന്നു - Expires on %1$s + %1$s-ന് കാലഹരണപ്പെടുന്നു - Expired on %1$s + %1$s-ന് കാലഹരണപ്പെട്ടു നിങ്ങളുടെ സന്ദേശ ചരിത്രം ബാക്കപ്പ് ചെയ്യുക, അതുവഴി നിങ്ങൾക്ക് ഒരു പുതിയ ഫോൺ ലഭിക്കുമ്പോഴോ Signal വീണ്ടും ഇൻസ്റ്റാൾ ചെയ്യുമ്പോഴോ ഒരിക്കലും ഡാറ്റ നഷ്‌ടപ്പെടില്ല. @@ -7627,9 +7627,9 @@ നിങ്ങളുടെ ഉപകരണ PIN, പാസ്‌വേഡ് അല്ലെങ്കിൽ പാറ്റേൺ നൽകുക. - Re-enable backups + ബാക്കപ്പുകൾ വീണ്ടും പ്രവർത്തനക്ഷമമാക്കുക - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Signal-ൻ്റെ സുരക്ഷിത സംഭരണ സേവനത്തിൽ നിന്ന് ബാക്കപ്പുകൾ ഓഫാക്കി നിങ്ങളുടെ ഡാറ്റ ഇല്ലാതാക്കി. diff --git a/app/src/main/res/values-mr/strings.xml b/app/src/main/res/values-mr/strings.xml index 7222ff99b1..f1e5dd3843 100644 --- a/app/src/main/res/values-mr/strings.xml +++ b/app/src/main/res/values-mr/strings.xml @@ -369,7 +369,7 @@ संदेश - Chat types + चॅटचे प्रकार संदेश %1$s @@ -4053,9 +4053,9 @@ कॅमेरा उघडा आतापर्यंत कुठेलही चॅट्स नाहीत.\nमित्राला संदेश पाठवून सुरू करा. - No chats to display + दाखवण्यासाठी कोणतीही चॅट्स नाहीत - Folder settings + फोल्डर सेटिंग्ज @@ -5055,53 +5055,53 @@ कीबोर्ड इंटर सह पाठवा - Chat folders + चॅट फोल्डर्स - Add a chat folder + एक चॅट फोल्डर समाविष्ट करा - Organize your chats into folders and quickly switch between them on your chat list. + आपले चॅट्स फोल्डरमध्ये व्यवस्थित लावा आणि त्यांच्यादरम्यान आपल्या चॅट यादी वर पटकन स्विच करा. - Folders + फोल्डर्स - Create a folder + एक फोल्डर तयार करा - All chats + सर्व चॅट्स - Suggested folders + सुचवलेले फोल्डर - Unreads + न वाचलेले संदेश - Unread messages from all chats + सर्व चॅट्स मधून न वाचलेले संदेश - 1:1 chats + 1:1 चॅट्स - Only messages from direct chats + फक्त थेट चॅट्स मधील संदेश - गट + समूह - Only message from group chats + फक्त सामूहिक चॅट्स मधील संदेश जोडा - %1$s folder added. + %1$s फोल्डर जोडला. - Edit folder + फोल्डर संपादित करा - Delete folder + फोल्डर हटवा - Add new folder + नवीन फोल्डर समाविष्ट करा - Mute all + सर्व निःशब्द करा - Reorder folders + फोल्डर्सचा क्रम बदला सर्व वाचले म्हणून चिन्हांकित करा - %1$d chat type - %1$d chat types + %1$d चॅटचा प्रकार + %1$d चॅटचे प्रकार @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d चॅट वगळले + %1$d चॅट्स वगळली - Create a folder + एक फोल्डर तयार करा - Folder name (required) + फोल्डरचे नाव (आवश्यक) - Included chats + समाविष्ट केलेली चॅट्स - Add chats + चॅट्स समाविष्ट करा - Choose chats that you want to appear in this folder. + आपणाला या फोल्डरमध्ये दिसायला हवी असणारी चॅट्स निवडा. अपवाद - Exclude chats + चॅट्स वगळा - Choose chats that you do not want to appear in this folder. + या फोल्डर मध्ये दिसू नये असे आपणाला वाटते अशी चॅट्स निवडा. - Only show unread chats + फक्त न वाचलेली चॅट्स दाखवा - When enabled, only chats with unread messages will be shown in this folder. + सक्षम केल्यावर, या फोल्डरमध्ये फक्त न वाचलेले संदेश असणारी चॅट्स दिसतील. मूक केलेल्या चॅटचा समावेश करा तयार करा - Create folder? + फोल्डर तयार करायचा? - Do you want to create the chat folder \"%1$s\"? + आपणाला चॅट फोल्डर \"%1$s\" तयार करायचा आहे का? - Create folder + फोल्डर तयार करा - Edit folder + फोल्डर संपादित करा जतन करा - Save changes? + बदल जतन करायचे का? - Do you want to save the changes you\'ve made to this chat folder? + आपणाला या चॅट फोल्डरमध्ये आपण केलेले बदल जतन करायचे आहेत का? - Save changes + बदल जतन करा टाकून द्या - Delete folder + फोल्डर हटवा - Delete this chat folder? + हा चॅट फोल्डर हटवायचा आहे? - Chat types + चॅटचे प्रकार झाले @@ -7445,15 +7445,15 @@ - Cancel download + डाउनलोड रद्द करा - Downloading: %1$s of %2$s (%3$s%%) + डाउनलोड होत आहे: %2$s पैकी %1$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + आपला बॅकअप डाउनलोड करण्यासाठी पुरेशी जागा उपलब्ध नाही. पुढे सुरू ठेवण्यासाठी %1$s जागा मोकळी करा. - Skip download + डाउनलोड वगळा - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "आपला शेवटचा बॅकअप पूर्ण होऊ शकला नाही. आपला फोन Wi-Fi शी कनेक्ट झाला असल्याची खात्री करा आणि पुन्हा प्रयत्न करण्यासाठी आत्ता बॅकअप घ्या वर टॅप करा." @@ -7561,13 +7561,13 @@ बॅकअप प्रकार बदलला आणि सदस्यत्व रद्द केले - Subscription canceled + सदस्यत्व रद्द केले डाउनलोड पूर्ण झाले रात्रभर बॅकअप तयार केला जाईल. - Subscription inactive + सदस्यत्व सक्रिय नाही बॅकअप प्लॅन @@ -7579,9 +7579,9 @@ %1$s नी नूतनीकरण केले - Expires on %1$s + %1$s ला कालबाह्य होईल - Expired on %1$s + %1$s ला कालबाह्य झाले आपल्या संदेश इतिहास चा बॅकअप घ्या ज्यामुळे आपण जेव्हा नवीन फोन घ्याल किंवा Signal पुन्हा इन्स्टॉल कराल तेव्हा आपण कधीही आपला डेटा गमावणार नाही. @@ -7627,9 +7627,9 @@ कृपया आपली डिव्हाइस पिन, पासवर्ड किंवा पॅटर्न प्रविष्ट करा. - Re-enable backups + बॅकअप पुन्हा सक्षम करा - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + बॅकअप बंद करण्यात आलेले आहेत आणि आपला डेटा Signal च्या सुरक्षित संग्रहण सेवेमधून हटवण्यात आला आहे. diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml index 6789b2bc23..a1d3c7b949 100644 --- a/app/src/main/res/values-ms/strings.xml +++ b/app/src/main/res/values-ms/strings.xml @@ -366,7 +366,7 @@ Mesej - Chat types + Jenis sembang Mesej %1$s @@ -3950,9 +3950,9 @@ Buka Kamera Belum ada sembang.\nMulakan dengan menghantar mesej kepada rakan. - No chats to display + Tiada sembang untuk dipaparkan - Folder settings + Tetapan folder @@ -4936,52 +4936,52 @@ Papan Kekunci Hantar dengan masukkan - Chat folders + Folder sembang - Add a chat folder + Tambahkan folder sembang - Organize your chats into folders and quickly switch between them on your chat list. + Susun sembang anda ke dalam folder dan tukar antara sembang tersebut dengan cepat pada senarai sembang anda. - Folders + Folder - Create a folder + Cipta folder - All chats + Semua sembang - Suggested folders + Folder yang dicadangkan - Unreads + Belum dibaca - Unread messages from all chats + Mesej yang belum dibaca daripada semua sembang - 1:1 chats + Sembang 1:1 - Only messages from direct chats + Hanya mesej daripada sembang langsung Kumpulan - Only message from group chats + Hanya mesej daripada sembang kumpulan Tambah - %1$s folder added. + %1$s folder ditambah. Edit folder - Delete folder + Padam folder - Add new folder + Tambah folder baharu - Mute all + Redam semua - Reorder folders + Susun semula folder Tandakan semua dibaca - %1$d chat types + %1$d jenis sembang @@ -4989,60 +4989,60 @@ - %1$d chats excluded + %1$d sembang dikecualikan - Create a folder + Cipta folder - Folder name (required) + Nama folder (diperlukan) - Included chats + Sembang yang disertakan - Add chats + Tambah sembang - Choose chats that you want to appear in this folder. + Pilih sembang yang ingin dipaparkan dalam folder ini. Pengecualian - Exclude chats + Kecualikan sembang - Choose chats that you do not want to appear in this folder. + Pilih sembang yang anda tidak mahu muncul dalam folder ini. - Only show unread chats + Hanya tunjukkan sembang yang belum dibaca - When enabled, only chats with unread messages will be shown in this folder. + Apabila didayakan, hanya sembang dengan mesej yang belum dibaca akan ditunjukkan dalam folder ini. Sertakan Sembang yang Diredam Cipta - Create folder? + Cipta folder? - Do you want to create the chat folder \"%1$s\"? + Adakah anda mahu mencipta folder sembang \"%1$s\"? - Create folder + Cipta folder Edit folder Simpan - Save changes? + Simpan perubahan? - Do you want to save the changes you\'ve made to this chat folder? + Adakah anda mahu menyimpan perubahan yang telah dibuat pada folder sembang ini? - Save changes + Simpan perubahan Buang - Delete folder + Padam folder - Delete this chat folder? + Padamkan folder sembang ini? - Chat types + Jenis sembang Selesai @@ -7284,15 +7284,15 @@ - Cancel download + Batalkan muat turun - Downloading: %1$s of %2$s (%3$s%%) + Memuat turun: %1$s daripada %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Tidak cukup ruang untuk memuat turun Sandaran anda. Untuk meneruskan, kosongkan %1$s ruang. - Skip download + Langkau muat turun - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Sandaran terakhir anda tidak dapat diselesaikan. Pastikan telefon anda disambungkan ke Wi-Fi dan ketik Sandarkan sekarang untuk mencuba lagi." @@ -7399,13 +7399,13 @@ Jenis sandaran ditukar dan langganan dibatalkan - Subscription canceled + Langganan dibatalkan Muat turun selesai Sandaran akan dibuat semalaman. - Subscription inactive + Langganan tidak aktif Pelan sandaran @@ -7417,9 +7417,9 @@ Memperbaharui %1$s - Expires on %1$s + Tamat tempoh pada %1$s - Expired on %1$s + Tamat tempoh pada %1$s Sandarkan sejarah mesej anda supaya anda tidak kehilangan data apabila menggunakan telefon baharu atau memasang semula Signal. @@ -7465,9 +7465,9 @@ Sila masukkan pin, kata laluan atau corak peranti anda. - Re-enable backups + Dayakan semula sandaran - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Sandaran telah dimatikan dan data anda telah dipadamkan daripada perkhidmatan storan selamat Signal. diff --git a/app/src/main/res/values-my/strings.xml b/app/src/main/res/values-my/strings.xml index 12b54f01bf..9e2ac03363 100644 --- a/app/src/main/res/values-my/strings.xml +++ b/app/src/main/res/values-my/strings.xml @@ -366,7 +366,7 @@ မက်ဆေ့ချ်များ - Chat types + ချက်(တ်)အမျိုးအစားများ စာတို %1$s @@ -3950,9 +3950,9 @@ ကင်မရာဖွင့်ပါ ချက်(တ်)မရှိသေးပါ။\nသူငယ်ချင်းတစ်ယောက်ထံ မက်ဆေ့ချ်ပို့ခြင်းဖြင့် စတင်လိုက်ပါ။ - No chats to display + ပြသရန် ချက်(တ်)မရှိပါ - Folder settings + ဖိုင်တွဲ ဆက်တင် @@ -4936,52 +4936,52 @@ ကီးဘုတ် Enter ဖြင့် ပို့ပါ - Chat folders + ချက်(တ်)ဖိုင်တွဲများ - Add a chat folder + ချက်(တ်)ဖိုင်တွဲတစ်ခုထည့်ရန် - Organize your chats into folders and quickly switch between them on your chat list. + သင့်ချက်(တ်)များကို ဖိုင်တွဲများတွင် စုစည်းပြီး သင့်ချက်(တ်)စာရင်းတွင် အမြန်ပြောင်းပါ။ - Folders + ဖိုင်တွဲများ - Create a folder + ဖိုင်တွဲတစ်ခု ဖန်တီးရန် - All chats + ချက်(တ်)အားလုံး - Suggested folders + အကြံပြုထားသောဖိုင်တွဲများ - Unreads + မဖတ်ရသေး - Unread messages from all chats + ချက်(တ်)အားလုံးမှ မဖတ်ရသေးသော မက်ဆေ့ချ်များ - 1:1 chats + 1:1 ချက်(တ်)များ - Only messages from direct chats + တိုက်ရိုက်ချက်(တ်)မှ မက်ဆေ့ချ်များသာ အဖွဲ့များ - Only message from group chats + အဖွဲ့လိုက်ချက်(တ်)မှ မက်ဆေ့ချ်များသာ - ပေါင်းထည့်မယ် + ပေါင်းထည့်မည် - %1$s folder added. + %1$s ဖိုင်တွဲကို ထည့်ထားသည်။ - Edit folder + ဖိုင်တွဲကို တည်းဖြတ်ရန် - Delete folder + ဖိုင်တွဲကိုဖျက်မည် - Add new folder + ဖိုင်တွဲအသစ်ထည့်မည် - Mute all + အားလုံးကို အသံပိတ်ရန် - Reorder folders + ဖိုင်တွဲများကို ပြန်စီမည် - အားလုံးကို ဖတ်ပြီးသားအဖြစ် မှတ်ပါ။ + အားလုံးကို ဖတ်ပြီးသားအဖြစ် မှတ်ပါ - %1$d chat types + ချက်(တ်)အမျိုးအစား %1$d ခု @@ -4989,60 +4989,60 @@ - %1$d chats excluded + ချက်(တ်) %1$d ခုကို ဖယ်ထုတ်ထားသည် - Create a folder + ဖိုင်တွဲတစ်ခု ဖန်တီးရန် - Folder name (required) + ဖိုင်တွဲအမည် (လိုအပ်ပါသည်) - Included chats + ပါဝင်သော ချက်(တ်)များ - Add chats + ချက်(တ်)ထည့်သွင်းရန် - Choose chats that you want to appear in this folder. + ဤဖိုင်တွဲတွင် သင်ပေါ်စေလိုသော ချက်(တ်)များကို ရွေးပါ။ ခြွင်းချက်များ - Exclude chats + ချက်(တ်)ကို ဖယ်ထုတ်မည် - Choose chats that you do not want to appear in this folder. + ဤဖိုင်တွဲတွင် မပေါ်စေလိုသော ချက်(တ်)များကို ရွေးပါ။ - Only show unread chats + မဖတ်ရသေးသည့် ချက်(တ်)များကိုသာပြရန် - When enabled, only chats with unread messages will be shown in this folder. + ဖွင့်ထားသောအခါ မဖတ်ရသေးသော မက်ဆေ့ချ်ရှိသည့် ချက်(တ်)များကိုသာ ဤဖိုင်တွဲတွင် ပြပါမည်။ - Include muted chats + အသံပိတ်ထားသော ချက်(တ်)များ ပါဝင်ရန် ဖန်တီးပါ - Create folder? + ဖိုင်တွဲကို ဖန်တီးမလား။ - Do you want to create the chat folder \"%1$s\"? + ချက်(တ်)ဖိုင်တွဲ \"%1$s\" ကို ဖန်တီးလိုပါသလား။ - Create folder + ဖိုင်တွဲ ဖန်တီးမည် - Edit folder + ဖိုင်တွဲကို တည်းဖြတ်ရန် သိမ်းရန် - Save changes? + အပြောင်းအလဲကို သိမ်းမလား။ - Do you want to save the changes you\'ve made to this chat folder? + ဤချက်(တ်)ဖိုင်တွဲတွင် ပြုလုပ်ထားသော အပြောင်းအလဲများကို သိမ်းဆည်းလိုပါသလား။ - Save changes + အပြောင်းအလဲကို သိမ်းဆည်းမည် ပယ်ဖျက်မည် - Delete folder + ဖိုင်တွဲကိုဖျက်မည် - Delete this chat folder? + ဤချက်(တ်)ဖိုင်တွဲကို ဖျက်မလား။ - Chat types + ချက်(တ်)အမျိုးအစားများ ပြီးပါပြီ @@ -7284,15 +7284,15 @@ - Cancel download + ဒေါင်းလုဒ်လုပ်ခြင်း ပယ်ဖျက်မည် - Downloading: %1$s of %2$s (%3$s%%) + %2$s မှ %1$s (%3$s%%) ကို ဒေါင်းလုဒ်လုပ်နေသည် - Not enough space to download your Backup. To continue free up %1$s of space. + သင်၏ ဘက်ခ်အပ်ကို ဒေါင်းလုဒ်လုပ်ရန် နေရာမလုံလောက်ပါ။ ဆက်၍လုပ်ဆောင်ရန် နေရာလွတ် %1$s ထားပေးပါ။ - Skip download + ဒေါင်းလုဒ်ကို ကျော်လိုက်မည် - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "သင်၏နောက်ဆုံး ဘက်ခ်အပ်ကို မပြီးမြောက်နိုင်ပါ။ သင့်ဖုန်းကို Wi-Fi နှင့် ချိတ်ဆက်ထားကြောင်းသေချာစေပြီး ထပ်၍စမ်းကြည့်ရန် ယခုဘက်ခ်အပ်လုပ်မည်ကို နှိပ်ပါ။" @@ -7399,13 +7399,13 @@ ဘက်ခ်အပ်အမျိုးအစားပြောင်းပြီး ပုံမှန်လှူဒါန်းငွေကို ပယ်ဖျက်လိုက်ပါပြီ - Subscription canceled + ပုံမှန်လှူဒါန်းငွေကို ပယ်ဖျက်လိုက်ပါပြီ ဒေါင်းလုဒ် ပြီးပါပြီ ဘက်ခ်အပ်ကို ညတွင်းချင်း ဖန်တီးပါမည်။ - Subscription inactive + ပုံမှန်လှူဒါန်းမှု အသက်မဝင်ပါ ဘက်ခ်အပ်အစီအစဉ် @@ -7417,9 +7417,9 @@ %1$s တွင် သက်တမ်းတိုးသည် - Expires on %1$s + %1$s တွင် သက်တမ်းကုန်မည် - Expired on %1$s + %1$s တွင် သက်တမ်းကုန်မည် ဖုန်းအသစ်ရသောအခါ သို့မဟုတ် Signal ကို ပြန်လည်ထည့်သွင်းသည့်အခါ ဒေတာမဆုံးရှုံးစေရန် မက်ဆေ့ချ်မှတ်တမ်းကို ဘက်ခ်အပ်လုပ်ပါ။ @@ -7465,9 +7465,9 @@ သင့်စက်၏ ပင်နံပါတ်၊ စကားဝှက် သို့မဟုတ် ပုံစံကို ထည့်ပါ။ - Re-enable backups + ဘက်ခ်အပ် ပြန်လည်လုပ်ဆောင်မည် - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + ဘက်ခ်အပ်ကို ပိတ်ထားသဖြင့် Signal ၏ လုံခြုံသော သိုလှောင်ရေးဝန်ဆောင်မှုမှ သင့်ဒေတာများကို ဖျက်လိုက်ပါပြီ။ diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 552c722a24..bd7538f630 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -369,7 +369,7 @@ Meldinger - Chat types + Samtaletyper Melding %1$s @@ -4053,9 +4053,9 @@ Åpne Kamera Ingen samtaler enda.\nKom i gang ved å sende en melding til en venn. - No chats to display + Ingen samtaler å vise - Folder settings + Mappeinnstillinger @@ -5055,53 +5055,53 @@ Tastatur Send med Enter-knappen - Chat folders + Samtalemapper - Add a chat folder + Legg til en samtalemappe - Organize your chats into folders and quickly switch between them on your chat list. + Sorter samtalene dine i mapper og hopp kjapt og enkelt mellom mappene i samtalelisten. - Folders + Mapper - Create a folder + Opprett en mappe - All chats + Alle samtaler - Suggested folders + Foreslåtte mapper - Unreads + Uleste meldinger - Unread messages from all chats + Uleste meldinger fra alle samtaler - 1:1 chats + En-til-en-samtaler - Only messages from direct chats + Kun meldinger fra en-til-en-samtaler - Grupper + Gruppesamtaler - Only message from group chats + Kun meldinger fra gruppesamtaler Legg til - %1$s folder added. + %1$s mappe ble lagt til. - Edit folder + Rediger mappe - Delete folder + Slett mappe - Add new folder + Legg til mappe - Mute all + Demp alle - Reorder folders + Endre mapperekkefølge Merk alle som lest - %1$d chat type - %1$d chat types + %1$d samtaletype + %1$d samtaletyper @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d samtale ekskludert + %1$d samtaler ekskludert - Create a folder + Opprett en mappe - Folder name (required) + Mappenavn (påkrevd) - Included chats + Inkluderte samtaler - Add chats + Legg til samtaler - Choose chats that you want to appear in this folder. + Velg hvilke samtaler du ønsker å legge til i mappen. Unntak - Exclude chats + Ekskluder samtaler - Choose chats that you do not want to appear in this folder. + Velg hvilke samtaler du ikke ønsker å legge til i mappen. - Only show unread chats + Vis kun uleste samtaler - When enabled, only chats with unread messages will be shown in this folder. + Kun samtaler med uleste meldinger vises i denne mappen. Inkluder dempede samtaler Opprett - Create folder? + Vil du opprette en mappe? - Do you want to create the chat folder \"%1$s\"? + Vil du opprette mappen «%1$s»? - Create folder + Opprett mappe - Edit folder + Rediger mappe Lagre - Save changes? + Vil du lagre endringene? - Do you want to save the changes you\'ve made to this chat folder? + Vil du lagre endringene du har gjort i denne samtalemappen? - Save changes + Lagre endringene Forkast - Delete folder + Slett mappe - Delete this chat folder? + Vil du slette denne mappen? - Chat types + Samtaletyper Ferdig @@ -7445,15 +7445,15 @@ - Cancel download + Avbryt nedlasting - Downloading: %1$s of %2$s (%3$s%%) + Laster ned %1$s av %2$s (%3$s %%) - Not enough space to download your Backup. To continue free up %1$s of space. + Det er ikke nok plass til å lagre sikkerhetskopien. Du trenger minst %1$s mer lagringsplass for å gå videre. - Skip download + Hopp over - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Den siste sikkerhetskopien kunne ikke gjennomføres. Sørg for at enheten er koblet til internett, og trykk på «Sikkerhetskopier nå» for å prøve igjen." @@ -7561,13 +7561,13 @@ Sikkerhetskopieringstypen ble endret og abonnementet ble sagt opp - Subscription canceled + Abonnementet er sagt opp Nedlasting fullført Sikkerhetskopiene opprettes på nattestid. - Subscription inactive + Avsluttet abonnement Abonnement for sikkerhetskopiering @@ -7579,9 +7579,9 @@ Fornyes %1$s - Expires on %1$s + Utløper %1$s - Expired on %1$s + Utløper %1$s Ta en sikkerhetskopi av meldingsloggen din, slik at du ikke mister dataene dine når du bytter telefon eller installerer Signal på nytt. @@ -7627,9 +7627,9 @@ Angi PIN-koden, passordet eller mønsteret for å låse opp enheten. - Re-enable backups + Slå på sikkerhetskopiering - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Sikkerhetskopiering er slått av, og dataene ble slettet fra Signals sikre lagringstjeneste. diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 07ba8772bd..87036543cf 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -253,7 +253,7 @@ Meer informatie - Voordat je deelneemt aan een oproep, kun je alleen de namen zien van telefooncontacten, mensen met wie je in een groep zit of mensen met wie je 1:1 hebt gechat. Je ziet alle namen en profielfoto\'s zodra je deelneemt aan de oproep. + Voordat je deelneemt aan een oproep, kun je alleen de namen zien van telefooncontacten, mensen met wie je in een groep zit of mensen met wie je een-op-een hebt gechat. Je ziet alle namen en profielfoto\'s zodra je deelneemt aan de oproep. Begrepen @@ -369,7 +369,7 @@ Berichten - Chat types + Chattypes Bericht sturen naar %1$s @@ -4053,9 +4053,9 @@ Camera openen Nog geen chats.\nBegin door een vriend of vriendin een bericht te sturen. - No chats to display + Geen chats om te weergeven - Folder settings + Map-instellingen @@ -5055,53 +5055,53 @@ Toetsenbord Verzenden met enter - Chat folders + Chatmappen - Add a chat folder + Een chatmap toevoegen - Organize your chats into folders and quickly switch between them on your chat list. + Orden je chats in mappen en schakel snel tussen deze mappen in je chatlijst. - Folders + Mappen - Create a folder + Nieuwe map maken - All chats + Alle chats - Suggested folders + Voorgestelde mappen - Unreads + Ongelezen - Unread messages from all chats + Ongelezen berichten van alle chats - 1:1 chats + 1-op-1-chats - Only messages from direct chats + Alleen berichten van 1-op-1-chats Groepen - Only message from group chats + Alleen berichten van groepschats Toevoegen - %1$s folder added. + Map %1$s toegevoegd. - Edit folder + Map bewerken - Delete folder + Map verwijderen - Add new folder + Nieuwe map toevoegen - Mute all + Alles dempen - Reorder folders + Mappen ordenen Alles markeren als gelezen - %1$d chat type - %1$d chat types + %1$d chattype + %1$d chattypes @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d chat uitgesloten + %1$d chats uitgesloten - Create a folder + Nieuwe map maken - Folder name (required) + Mapnaam (verplicht) - Included chats + Inbegrepen chats - Add chats + Chats toevoegen - Choose chats that you want to appear in this folder. + Kies chats die je in deze map wilt weergeven. Uitzonderingen - Exclude chats + Chats uitsluiten - Choose chats that you do not want to appear in this folder. + Selecteer chats die je niet in deze map wilt weergeven. - Only show unread chats + Alleen ongelezen chats weergeven - When enabled, only chats with unread messages will be shown in this folder. + Als deze optie is ingeschakeld, worden alleen chats met ongelezen berichten in deze map weergegeven. - Gedempte chats meetellen + Gedempte chats weergeven Aanmaken - Create folder? + Map maken? - Do you want to create the chat folder \"%1$s\"? + Wil je de chatmap ‘%1$s’ aanmaken? - Create folder + Map aanmaken - Edit folder + Map bewerken Opslaan - Save changes? + Wijzigingen opslaan? - Do you want to save the changes you\'ve made to this chat folder? + Wil je de wijzigingen die je in deze chatmap hebt aangebracht opslaan? - Save changes + Wijzigingen opslaan Verwijderen - Delete folder + Map verwijderen - Delete this chat folder? + Deze chatmap verwijderen? - Chat types + Chattypes Klaar @@ -7154,7 +7154,7 @@ - Gegevens van oproep + Oproepdetails Oproepnaam bewerken @@ -7383,7 +7383,7 @@ Je media worden vandaag verwijderd - Je mediaback-upabonnement in Signal is geannuleerd omdat we je betaling niet konden verwerken. Dit is de laatste mogelijkheid om de media in je back-up te downloaden voordat deze worden verwijderd. + Je mediaback-upabonnement in Signal is stopgezet omdat we je betaling niet konden verwerken. Dit is de laatste mogelijkheid om de media in je back-up te downloaden voordat deze worden verwijderd. Kan download niet voltooien @@ -7445,15 +7445,15 @@ - Cancel download + Download annuleren - Downloading: %1$s of %2$s (%3$s%%) + Voortgang download: %1$s van %2$s (%3$s) - Not enough space to download your Backup. To continue free up %1$s of space. + Niet genoeg opslagruimte om je back-up te downloaden. Maak %1$s ruimte vrij om door te gaan. - Skip download + Downloaden overslaan - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "De laatste back-up kon niet worden voltooid. Zorg ervoor dat je telefoon is verbonden met wifi. Tik op ‘Nu back-up maken’ en probeer het opnieuw." @@ -7559,15 +7559,15 @@ Back-up verwijderd en uitgeschakeld. - Back-uptype gewijzigd en abonnement geannuleerd + Back-uptype gewijzigd en abonnement opgezegd - Subscription canceled + Abonnement opgezegd Download voltooid De back-up wordt vannacht gemaakt. - Subscription inactive + Abonnement niet actief Back-upabonnement @@ -7579,9 +7579,9 @@ Wordt %1$s vernieuwd - Expires on %1$s + Verloopt op %1$s - Expired on %1$s + Verlopen op %1$s Maak een back-up van je chatgeschiedenis zodat je nooit meer gegevens kwijtraakt als je een andere telefoon in gebruik neemt of Signal opnieuw installeert. @@ -7627,9 +7627,9 @@ Voer de pincode, het wachtwoord of het patroon van je apparaat in. - Re-enable backups + Back-ups opnieuw inschakelen - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Back-ups zijn uitgeschakeld en je gegevens zijn verwijderd uit de beveiligde opslagservice van Signal. diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 1124abb331..6e27f4fbbc 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -369,7 +369,7 @@ ਸੁਨੇਹੇ - Chat types + ਚੈਟ ਦੀਆਂ ਕਿਸਮਾਂ ਸੁਨੇਹਾ %1$s @@ -4053,9 +4053,9 @@ ਕੈਮਰਾ ਖੋਲ੍ਹੋ ਹਾਲੇ ਕੋਈ ਚੈਟ ਨਹੀਂ ਹੈ।\nਦੋਸਤ ਨੂੰ ਸੁਨੇਹਾ ਕਰਕੇ ਸ਼ੁਰੂਆਤ ਕਰੋ। - No chats to display + ਦਿਖਾਉਣ ਲਈ ਕੋਈ ਚੈਟ ਨਹੀਂ - Folder settings + ਫੋਲਡਰ ਸੈਟਿੰਗਾਂ @@ -5055,53 +5055,53 @@ ਕੀਬੋਰਡ ਐਂਟਰ ਦਬਾ ਕੇ ਭੇਜੋ - Chat folders + ਚੈਟ ਫੋਲਡਰ - Add a chat folder + ਇੱਕ ਚੈਟ ਫੋਲਡਰ ਸ਼ਾਮਲ ਕਰੋ - Organize your chats into folders and quickly switch between them on your chat list. + ਆਪਣੀਆਂ ਚੈਟਾਂ ਨੂੰ ਫੋਲਡਰਾਂ ਵਿੱਚ ਵਿਵਸਥਿਤ ਕਰੋ ਅਤੇ ਆਪਣੀ ਚੈਟ ਸੂਚੀ ਵਿੱਚ ਉਹਨਾਂ ਵਿਚਕਾਰ ਤੇਜ਼ੀ ਨਾਲ ਸਵਿੱਚ ਕਰੋ। - Folders + ਫੋਲਡਰ - Create a folder + ਇੱਕ ਫੋਲਡਰ ਬਣਾਓ - All chats + ਸਾਰੀਆਂ ਚੈਟਾਂ - Suggested folders + ਸੁਝਾਏ ਗਏ ਫੋਲਡਰ - Unreads + ਨਹੀਂ ਪੜ੍ਹੇ - Unread messages from all chats + ਸਾਰੀਆਂ ਚੈਟਾਂ ਦੇ ਨਹੀਂ ਪੜ੍ਹੇ ਸੁਨੇਹੇ - 1:1 chats + 1:1 ਚੈਟ - Only messages from direct chats + ਸਿਰਫ਼ ਤੁਹਾਡੇ ਨਾਲ ਕੀਤੀਆਂ ਸਿੱਧੀਆਂ ਚੈਟਾਂ ਦੇ ਸੁਨੇਹੇ ਗਰੁੱਪ - Only message from group chats + ਸਿਰਫ਼ ਗਰੁੱਪ ਚੈਟ ਦੇ ਸੁਨੇਹਾ - ਜੋੜੋ + ਸ਼ਾਮਲ ਕਰੋ - %1$s folder added. + %1$s ਫੋਲਡਰ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ। - Edit folder + ਫੋਲਡਰ ਸੋਧੋ - Delete folder + ਫੋਲਡਰ ਮਿਟਾਓ - Add new folder + ਨਵਾਂ ਫੋਲਡਰ ਸ਼ਾਮਲ ਕਰੋ - Mute all + ਸਭ ਨੂੰ ਮਿਊਟ ਕਰੋ - Reorder folders + ਫੋਲਡਰਾਂ ਨੂੰ ਮੁੜ ਕ੍ਰਮਬੱਧ ਕਰੋ - ਸਾਰੇ ਪੜ੍ਹੇ ਹੋਏ ਮਾਰਕ ਕਰੋ + ਸਾਰਿਆਂ ਨੂੰ ਪੜ੍ਹਿਆ ਗਿਆ ਵਜੋਂ ਚਿੰਨ੍ਹਿਤ ਕਰੋ - %1$d chat type - %1$d chat types + %1$d ਚੈਟ ਦੀ ਕਿਸਮ + %1$d ਚੈਟਾਂ ਦੀਆਂ ਕਿਸਮਾਂ @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d ਚੈਟ ਨੂੰ ਬਾਹਰ ਰੱਖਿਆ ਗਿਆ + %1$d ਚੈਟਾਂ ਨੂੰ ਬਾਹਰ ਰੱਖਿਆ ਗਿਆ - Create a folder + ਇੱਕ ਫੋਲਡਰ ਬਣਾਓ - Folder name (required) + ਫੋਲਡਰ ਦਾ ਨਾਮ (ਲੋੜੀਂਦਾ ਹੈ) - Included chats + ਸ਼ਾਮਲ ਚੈਟਾਂ - Add chats + ਚੈਟਾਂ ਸ਼ਾਮਲ ਕਰੋ - Choose chats that you want to appear in this folder. + ਉਹ ਚੈਟ ਚੁਣੋ ਜੋ ਤੁਸੀਂ ਇਸ ਫੋਲਡਰ ਵਿੱਚ ਦਿਖਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ। - ਛੋਟ + ਬਾਹਰ ਰੱਖੀਆਂ ਚੈਟਾਂ - Exclude chats + ਚੈਟਾਂ ਨੂੰ ਬਾਹਰ ਰੱਖੋ - Choose chats that you do not want to appear in this folder. + ਉਹ ਚੈਟ ਚੁਣੋ ਜੋ ਤੁਸੀਂ ਇਸ ਫੋਲਡਰ ਵਿੱਚ ਦਿਖਾਉਣਾ ਨਹੀਂ ਚਾਹੁੰਦੇ ਹੋ। - Only show unread chats + ਸਿਰਫ਼ ਨਹੀਂ ਪੜ੍ਹੀਆਂ ਚੈਟਾਂ ਦਿਖਾਓ - When enabled, only chats with unread messages will be shown in this folder. + ਜਦੋਂ ਸਮਰੱਥ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਸ ਫੋਲਡਰ ਵਿੱਚ ਸਿਰਫ਼ ਨਹੀਂ ਪੜ੍ਹੇ ਸੁਨੇਹਿਆਂ ਵਾਲੀਆਂ ਚੈਟਾਂ ਹੀ ਦਿਖਾਈਆਂ ਜਾਣਗੀਆਂ। - Include muted chats + ਮਿਊਟ ਕੀਤੀਆਂ ਚੈਟਾਂ ਸ਼ਾਮਲ ਕਰੋ ਬਣਾਓ - Create folder? + ਫੋਲਡਰ ਬਣਾਉਣਾ ਹੈ? - Do you want to create the chat folder \"%1$s\"? + ਕੀ ਤੁਸੀਂ ਚੈਟ ਫੋਲਡਰ \"%1$s\" ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ? - Create folder + ਫੋਲਡਰ ਬਣਾਓ - Edit folder + ਫੋਲਡਰ ਸੋਧੋ ਸੇਵ ਕਰੋ - Save changes? + ਕੀ ਤਬਦੀਲੀਆਂ ਨੂੰ ਸੇਵ ਕਰਨਾ ਹੈ? - Do you want to save the changes you\'ve made to this chat folder? + ਕੀ ਤੁਸੀਂ ਇਸ ਚੈਟ ਫੋਲਡਰ ਵਿੱਚ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਸੇਵ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? - Save changes + ਤਬਦੀਲੀਆਂ ਨੂੰ ਸੇਵ ਕਰੋ - ਰੱਦ ਕਰੋ + ਖਾਰਜ ਕਰੋ - Delete folder + ਫੋਲਡਰ ਮਿਟਾਓ - Delete this chat folder? + ਕੀ ਇਸ ਚੈਟ ਫੋਲਡਰ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ? - Chat types + ਚੈਟ ਦੀਆਂ ਕਿਸਮਾਂ ਮੁਕੰਮਲ @@ -7445,15 +7445,15 @@ - Cancel download + ਡਾਊਨਲੋਡ ਰੱਦ ਕਰੋ - Downloading: %1$s of %2$s (%3$s%%) + ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ: %2$s ਵਿੱਚੋਂ %1$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + ਤੁਹਾਡੇ ਬੈਕਅੱਪ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਲੋੜੀਂਦੀ ਥਾਂ ਨਹੀਂ ਹੈ। ਜਾਰੀ ਰੱਖਣ ਲਈ %1$s ਥਾਂ ਖਾਲੀ ਕਰੋ। - Skip download + ਡਾਊਨਲੋਡ ਛੱਡੋ - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "ਤੁਹਾਡਾ ਪਿਛਲਾ ਬੈਕਅੱਪ ਪੂਰਾ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡਾ ਫ਼ੋਨ Wi-F ਨਾਲ ਕਨੈਕਟ ਹੈ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਲਈ ਹੁਣੇ ਬੈਕਅੱਪ ਲਓ \'ਤੇ ਟੈਪ ਕਰੋ।" @@ -7561,13 +7561,13 @@ ਬੈਕਅੱਪ ਦੀ ਕਿਸਮ ਬਦਲੀ ਗਈ ਅਤੇ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਰੱਦ ਕੀਤੀ ਗਈ - Subscription canceled + ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਰੱਦ ਕੀਤੀ ਗਈ ਡਾਊਨਲੋਡ ਪੂਰਾ ਹੋਇਆ ਬੈਕਅੱਪ ਰਾਤੋ-ਰਾਤ ਬਣਾਇਆ ਜਾਵੇਗਾ। - Subscription inactive + ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਅਕਿਰਿਆਸ਼ੀਲ ਹੈ ਬੈਕਅੱਪ ਪਲਾਨ @@ -7579,9 +7579,9 @@ ਰੀਨਿਊ ਹੋਣ ਦੀ ਮਿਤੀ: %1$s - Expires on %1$s + ਮਿਆਦ %1$s ਨੂੰ ਸਮਾਪਤ ਹੋਵੇਗੀ - Expired on %1$s + ਮਿਆਦ %1$s ਨੂੰ ਸਮਾਪਤ ਹੋਈ ਆਪਣੇ ਪੁਰਾਣੇ ਸੁਨੇਹਿਆਂ ਦਾ ਬੈਕਅੱਪ ਲਓ ਤਾਂ ਜੋ ਨਵਾਂ ਫ਼ੋਨ ਲੈਣ \'ਤੇ ਜਾਂ Signal ਨੂੰ ਦੁਬਾਰਾ ਇੰਸਟਾਲ ਕਰਨ \'ਤੇ ਵੀ ਤੁਹਾਡਾ ਡਾਟਾ ਸੁਰੱਖਿਅਤ ਰਹੇ। @@ -7627,9 +7627,9 @@ ਕਿਰਪਾ ਕਰਕੇ ਆਪਣਾ ਡਿਵਾਈਸ PIN, ਪਾਸਵਰਡ ਜਾਂ ਪੈਟਰਨ ਦਾਖਲ ਕਰੋ। - Re-enable backups + ਬੈਕਅੱਪ ਮੁੜ-ਸਮਰੱਥ ਕਰੋ - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + ਬੈਕਅੱਪ ਬੰਦ ਕਰ ਦਿੱਤੇ ਗਏ ਹਨ ਅਤੇ ਤੁਹਾਡਾ ਡਾਟਾ Signal ਦੀ ਸੁਰੱਖਿਅਤ ਸਟੋਰੇਜ ਸੇਵਾ ਤੋਂ ਮਿਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ। diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 044bd9079b..0ca44c9382 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -375,7 +375,7 @@ Wiadomości - Chat types + Rodzaje czatu Wiadomość %1$s @@ -4259,9 +4259,9 @@ Otwórz aparat Nie masz jeszcze żadnych czatów.\nZacznij od wysłania wiadomości do znajomego. - No chats to display + Brak czatów do wyświetlenia - Folder settings + Ustawienia folderu @@ -5293,55 +5293,55 @@ Klawiatura Wysyłaj za pomocą Enter - Chat folders + Foldery z czatami - Add a chat folder + Dodaj folder z czatami - Organize your chats into folders and quickly switch between them on your chat list. + Uporządkuj swoje czaty w folderach i przełączaj się między nimi wygodnie na swojej liście czatów. - Folders + Foldery - Create a folder + Utwórz folder - All chats + Wszystkie czaty - Suggested folders + Sugerowane foldery - Unreads + Nieodczytane - Unread messages from all chats + Nieodczytane wiadomości ze wszystkich czatów - 1:1 chats + Czaty 1:1 - Only messages from direct chats + Tylko wiadomości z czatów bezpośrednich Grupy - Only message from group chats + Tylko wiadomości z czatów grupowych Dodaj - %1$s folder added. + Dodano folder %1$s. - Edit folder + Edytuj folder - Delete folder + Usuń folder - Add new folder + Dodaj nowy folder - Mute all + Wycisz wszystkie - Reorder folders + Zmień kolejność folderów Oznacz wszystkie jako przeczytane - %1$d chat type - %1$d chat types - %1$d chat types - %1$d chat types + %1$d rodzaj czatu + %1$d rodzaje czatu + %1$d rodzajów czatu + %1$d rodzajów czatu @@ -5352,63 +5352,63 @@ - %1$d chat excluded - %1$d chats excluded - %1$d chats excluded - %1$d chats excluded + %1$d wykluczony czat + %1$d wykluczone czaty + %1$d wykluczonych czatów + %1$d wykluczonych czatów - Create a folder + Utwórz folder - Folder name (required) + Nazwa folderu (wymagana) - Included chats + Dodane czaty - Add chats + Dodaj czaty - Choose chats that you want to appear in this folder. + Wybierz czaty, które mają się pojawić w tym folderze. Wyjątki - Exclude chats + Wyklucz czaty - Choose chats that you do not want to appear in this folder. + Wybierz czaty, które nie mają być uwzględnione w tym folderze. - Only show unread chats + Pokaż tylko nieodczytane czaty - When enabled, only chats with unread messages will be shown in this folder. + Po włączeniu tej opcji w tym folderze będą wyświetlane tylko czaty z nieodczytanymi wiadomościami. Uwzględnij wyciszone czaty Utwórz - Create folder? + Utworzyć folder? - Do you want to create the chat folder \"%1$s\"? + Czy chcesz utworzyć folder z czatami „%1$s”? - Create folder + Utwórz folder - Edit folder + Edytuj folder Zapisz - Save changes? + Zapisać zmiany? - Do you want to save the changes you\'ve made to this chat folder? + Czy chcesz zapisać zmiany wprowadzone w tym folderze z czatami? - Save changes + Zapisz zmiany Odrzuć - Delete folder + Usuń folder - Delete this chat folder? + Usunąć ten folder z czatami? - Chat types + Rodzaje czatu Gotowe @@ -7767,15 +7767,15 @@ - Cancel download + Anuluj pobieranie - Downloading: %1$s of %2$s (%3$s%%) + Trwa pobieranie: %1$s z %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Za mało miejsca, aby pobrać kopię zapasową. Aby kontynuować, zwolnij %1$s miejsca. - Skip download + Pomiń pobieranie - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Nie udało się ukończyć tworzenia ostatniej kopii zapasowej. Upewnij się, że urządzenie jest podłączone do Wi-Fi, i ponownie wybierz opcję Utwórz kopię zapasową teraz." @@ -7885,13 +7885,13 @@ Zmieniono typ kopii zapasowej i anulowano subskrypcję - Subscription canceled + Subskrypcja anulowana Pobieranie ukończone Kopia zapasowa będzie tworzona codziennie w nocy. - Subscription inactive + Subskrypcja nieaktywna Tryb tworzenia kopii zapasowej @@ -7903,9 +7903,9 @@ Przedłużane %1$s - Expires on %1$s + Wygasa %1$s - Expired on %1$s + Wygasła %1$s Twórz kopie zapasowe swoich wiadomości, a nie stracisz ich nawet po zmianie telefonu czy ponownej instalacji Signal. @@ -7951,9 +7951,9 @@ Wprowadź kod PIN urządzenia, hasło lub wzór. - Re-enable backups + Włącz ponownie - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Tworzenie kopii zapasowych zostało wyłączone, a Twoje dane zostały usunięte z bezpiecznej usługi przechowywania Signal. diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 448951bbf3..fc55b1fc51 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -369,7 +369,7 @@ Mensagens - Chat types + Tipos de conversa Mensagem %1$s @@ -4053,9 +4053,9 @@ Abrir câmera Nenhuma conversa ainda. \nPara começar, envie uma mensagem para alguém. - No chats to display + Nenhuma conversa para exibir - Folder settings + Configurações da pasta @@ -5055,116 +5055,116 @@ Teclado Enviar com Enter - Chat folders + Pastas de conversas - Add a chat folder + Adicionar uma pasta de conversas - Organize your chats into folders and quickly switch between them on your chat list. + Organize suas conversas em pastas e mude rapidamente entre elas na sua lista. - Folders + Pastas - Create a folder + Criar uma pasta - All chats + Todas as conversas - Suggested folders + Pastas sugeridas - Unreads + Não lidas - Unread messages from all chats + Mensagens não lidas de todas as conversas - 1:1 chats + Conversas individuais - Only messages from direct chats + Somente mensagens de conversas diretas Grupos - Only message from group chats + Somente mensagens de conversas em grupo Adicionar - %1$s folder added. + Pasta %1$s adicionada. - Edit folder + Editar pasta - Delete folder + Apagar pasta - Add new folder + Adicionar nova pasta - Mute all + Silenciar tudo - Reorder folders + Reordenar pastas Marcar todas como lidas - %1$d chat type - %1$d chat types + %1$d tipo de conversa + %1$d tipos de conversa - %1$d chat - %1$d chats + %1$d conversa + %1$d conversas - %1$d chat excluded - %1$d chats excluded + %1$d conversa apagada + %1$d conversas apagadas - Create a folder + Criar uma pasta - Folder name (required) + Nome da pasta (obrigatório) - Included chats + Conversas incluídas - Add chats + Adicionar conversas - Choose chats that you want to appear in this folder. + Escolha as conversas que você quer que apareçam nessa pasta. Exceções - Exclude chats + Excluir conversas - Choose chats that you do not want to appear in this folder. + Selecione as conversas que você deseja ocultar desta pasta. - Only show unread chats + Mostrar apenas conversas não lidas - When enabled, only chats with unread messages will be shown in this folder. + Quando essa opção estiver ativada, somente as conversas com mensagens não lidas serão mostradas nesta pasta. - Incluir chats silenciados + Incluir conversas silenciados Criar - Create folder? + Criar pasta? - Do you want to create the chat folder \"%1$s\"? + Você quer criar a pasta de conversas \"%1$s\"? - Create folder + Criar pasta - Edit folder + Editar pasta Salvar - Save changes? + Salvar alterações? - Do you want to save the changes you\'ve made to this chat folder? + Quer salvar as alterações que você fez nessa pasta de conversas? - Save changes + Salvar alterações Descartar - Delete folder + Apagar pasta - Delete this chat folder? + Apagar essa pasta de conversas? - Chat types + Tipos de conversa Pronto @@ -7445,15 +7445,15 @@ - Cancel download + Cancelar download - Downloading: %1$s of %2$s (%3$s%%) + Baixando: %1$s de %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Não há espaço suficiente para baixar seu backup. Para continuar, libere %1$s de espaço. - Skip download + Pular download - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Não foi possível concluir seu último backup. Confira se o seu telefone está conectado à rede Wi-Fi e toque em \"Fazer backup agora\" para tentar novamente." @@ -7561,13 +7561,13 @@ Tipo de backup alterado e assinatura cancelada - Subscription canceled + Assinatura cancelada Download concluído O backup será criado durante a noite. - Subscription inactive + Assinatura inativa Plano de backup @@ -7579,9 +7579,9 @@ Renova em %1$s - Expires on %1$s + Expira em %1$s - Expired on %1$s + Expirou em %1$s Faça backup do seu histórico de mensagens para nunca perder dados ao comprar um novo telefone ou reinstalar o Signal. @@ -7627,9 +7627,9 @@ Digite o PIN, a senha ou o padrão de desbloqueio do seu dispositivo. - Re-enable backups + Reativar backups - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Os backups foram desativados e os dados excluídos do sistema seguro de armazenamento do Signal. diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 14b46289c0..4628209bee 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -369,7 +369,7 @@ Mensagens - Chat types + Tipos de chat Mensagem %1$s @@ -4053,9 +4053,9 @@ Abrir câmara Ainda não existem chats.\nComece por enviar uma mensagem a um amigo. - No chats to display + Não há chats para ver - Folder settings + Definições da pasta @@ -5055,53 +5055,53 @@ Teclado Enviar com enter - Chat folders + Pastas de chats - Add a chat folder + Adicionar uma pasta de chats - Organize your chats into folders and quickly switch between them on your chat list. + Organize os seus chats em pastas e alterne rapidamente entre eles na sua lista de chats. - Folders + Pastas - Create a folder + Criar uma pasta - All chats + Todos os chats - Suggested folders + Pastas sugeridas - Unreads + Não lida - Unread messages from all chats + Mensagens não lidas de todos os chats - 1:1 chats + Chats 1:1 - Only messages from direct chats + Só mensagens de chats diretos Grupos - Only message from group chats + Só mensagens de chats de grupo Adicionar - %1$s folder added. + %1$s pasta adicionada. - Edit folder + Editar pasta - Delete folder + Eliminar pasta - Add new folder + Adicionar nova pasta - Mute all + Silenciar tudo - Reorder folders + Reorganizar pastas Marcar tudo como lido - %1$d chat type - %1$d chat types + %1$d tipo de chat + %1$d tipos de chat @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d chat excluído + %1$d chats excluídos - Create a folder + Criar uma pasta - Folder name (required) + Nome da pasta (obrigatório) - Included chats + Chats incluídos - Add chats + Adicionar chats - Choose chats that you want to appear in this folder. + Escolha os chats que quer que apareçam nesta pasta. Exceções - Exclude chats + Excluir chats - Choose chats that you do not want to appear in this folder. + Escolha chats que não quer que apareçam nesta pasta. - Only show unread chats + Mostrar apenas chats não lidos - When enabled, only chats with unread messages will be shown in this folder. + Quando ativado, só chats com mensagens não lidas é que serão mostrados nesta pasta. Incluir chats silenciados Criar - Create folder? + Criar pasta? - Do you want to create the chat folder \"%1$s\"? + Quer criar a pasta de chats \"%1$s\"? - Create folder + Criar pasta - Edit folder + Editar pasta Guardar - Save changes? + Guardar alterações? - Do you want to save the changes you\'ve made to this chat folder? + Quer guardar as alterações que fez a esta pasta de chats? - Save changes + Guardar alterações Descartar - Delete folder + Eliminar pasta - Delete this chat folder? + Eliminar esta pasta de chats? - Chat types + Tipos de chat Concluído @@ -7445,15 +7445,15 @@ - Cancel download + Cancelar transferência - Downloading: %1$s of %2$s (%3$s%%) + A transferir: %1$s de %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Não há espaço suficiente para transferir a sua cópia de segurança. Para continuar, liberte %1$s de espaço. - Skip download + Saltar transferência - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "A sua última cópia de segurança não pôde ser completada. Certifique-se de que o seu telemóvel está ligado a uma rede Wi-Fi e toca em \"Fazer cópia de segurança\" para tentar outra vez." @@ -7561,13 +7561,13 @@ Tipo de cópia de segurança alterado e subscrição cancelada - Subscription canceled + Subscrição cancelada Download completo A cópia de segurança será criada durante a noite. - Subscription inactive + Subscrição inativa Plano de cópia de segurança @@ -7579,9 +7579,9 @@ Renovações %1$s - Expires on %1$s + Expira a %1$s - Expired on %1$s + Expira a %1$s Efetue cópias de segurança do seu histórico de mensagens para nunca perder dados ao mudar de telemóvel ou reinstalar o Signal. @@ -7627,9 +7627,9 @@ Insira o pin, palavra-passe ou padrão do seu dispositivo. - Re-enable backups + Reativar cópias de segurança - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + As cópias de segurança foram desativadas e os seus dados foram eliminados do serviço de armazenamento seguro do Signal. diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index ae14c89b99..9494b99d2a 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -372,7 +372,7 @@ Mesaje - Chat types + Tipuri de conversații Mesaj %1$s @@ -4156,9 +4156,9 @@ Deschide Camera Nu există conversații. Începe prin a trimite unui prieten un mesaj. - No chats to display + Nu există conversații de afișat - Folder settings + Setări pentru dosare @@ -5174,54 +5174,54 @@ Tastatură Trimite cu enter - Chat folders + Dosare de conversații - Add a chat folder + Adaugă un dosar de conversații - Organize your chats into folders and quickly switch between them on your chat list. + Organizează-ți conversațiile în dosare și schimbă între ele pe lista de conversații. - Folders + Dosare - Create a folder + Creează un dosar - All chats + Toate conversațiile - Suggested folders + Dosare sugerate - Unreads + Necitite - Unread messages from all chats + Mesaje necitite din toate conversațiile - 1:1 chats + Conversații 1 la 1 - Only messages from direct chats + Numai mesajele din conversațiile directe Grupuri - Only message from group chats + Numai mesajele din conversațiile de grup Adaugă - %1$s folder added. + Dosarul %1$s a fost adăugat. - Edit folder + Editează dosarul - Delete folder + Elimină dosarul - Add new folder + Adaugă un dosar nou - Mute all + Silențios pentru toate - Reorder folders + Reordonează dosarele Marchează tot ca citit - %1$d chat type - %1$d chat types - %1$d chat types + %1$d tip de conversație + %1$d tipuri de conversații + %1$d de tipuri de conversații @@ -5231,62 +5231,62 @@ - %1$d chat excluded - %1$d chats excluded - %1$d chats excluded + %1$d conversație exclusă + %1$d conversații excluse + %1$d de conversații excluse - Create a folder + Creează un dosar - Folder name (required) + Numele dosarului (necesar) - Included chats + Conversații incluse - Add chats + Adaugă conversații - Choose chats that you want to appear in this folder. + Alege conversațiile care dorești să apară în acest dosar. Excepții - Exclude chats + Exclude conversațiile - Choose chats that you do not want to appear in this folder. + Alege ce conversații nu vrei să apară în acest dosar. - Only show unread chats + Arată doar conversații necitite - When enabled, only chats with unread messages will be shown in this folder. + Când e activată, doar conversațiile cu mesaje necitite vor apărea în acest dosar. Include conversațiile silențioase Creează - Create folder? + Creezi dosarul? - Do you want to create the chat folder \"%1$s\"? + Vrei să creezi dosarul de conversații „%1$s“? - Create folder + Creează dosar - Edit folder + Editează dosarul Salvează - Save changes? + Salvezi modificările? - Do you want to save the changes you\'ve made to this chat folder? + Vrei să salvezi modificările pe care le-ai făcut în acest dosar de conversații? - Save changes + Salvează modificările Renunță - Delete folder + Elimină dosarul - Delete this chat folder? + Elimini acest dosar de conversații? - Chat types + Tipuri de conversații Gata @@ -7606,15 +7606,15 @@ - Cancel download + Anulează descărcarea - Downloading: %1$s of %2$s (%3$s%%) + Se descarcă: %1$s din %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Nu este suficient spațiu pentru a descărca backup-ul. Pentru a continua, eliberează %1$s din spațiu. - Skip download + Omite descărcarea - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Ultimul backup nu a putut fi finalizat. Asigură-te că telefonul este conectat la Wi-Fi și atinge Back-up acum pentru a încerca din nou." @@ -7723,13 +7723,13 @@ Tipul de backup schimbat și abonamentul anulat - Subscription canceled + Abonament anulat Descărcare completă Backup-ul va fi creat peste noapte. - Subscription inactive + Abonament inactiv Plan de back-up @@ -7741,9 +7741,9 @@ Se reînnoiește %1$s - Expires on %1$s + Expiră la %1$s - Expired on %1$s + Expiră la %1$s Fă back-up pentru istoricul mesajelor, astfel încât niciodată să nu pierzi date, atunci când îți iei un telefon nou sau reinstalezi Signal. @@ -7789,9 +7789,9 @@ Introdu codul PIN, parola sau șablonul pentru dispozitivul tău. - Re-enable backups + Reactivează backup-urile - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Backup-urile au fost dezactivate și datele tale au fost eliminate din serviciul de stocare securizată de la Signal. diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 917df3c207..1c41e3ae4b 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -375,7 +375,7 @@ Сообщения - Chat types + Типы чатов Сообщение %1$s @@ -4259,9 +4259,9 @@ Открыть камеру Ещё нет чатов.\nОтправьте другу своё первое сообщение. - No chats to display + Нет чатов для отображения - Folder settings + Настройки папки @@ -5293,55 +5293,55 @@ Клавиатура Отправка с помощью ввода - Chat folders + Папки чатов - Add a chat folder + Добавить папку чата - Organize your chats into folders and quickly switch between them on your chat list. + Организуйте свои чаты в папки и быстро переключайтесь между ними в списке чатов. - Folders + Папки - Create a folder + Создать папку - All chats + Все чаты - Suggested folders + Рекомендуемые папки - Unreads + Непрочитанное - Unread messages from all chats + Непрочитанные сообщения из всех чатов - 1:1 chats + Личные чаты - Only messages from direct chats + Только сообщения из личных чатов Группы - Only message from group chats + Только сообщения из групповых чатов Добавить - %1$s folder added. + Папка добавлена: %1$s. - Edit folder + Изменить папку - Delete folder + Удалить папку - Add new folder + Добавить новую папку - Mute all + Выключить звук для всех - Reorder folders + Изменить порядок папок Отметить все как прочитанные - %1$d chat type - %1$d chat types - %1$d chat types - %1$d chat types + %1$d тип чата + %1$d типа чатов + %1$d типов чатов + %1$d типа чата @@ -5352,63 +5352,63 @@ - %1$d chat excluded - %1$d chats excluded - %1$d chats excluded - %1$d chats excluded + %1$d чат исключён + %1$d чата исключено + %1$d чатов исключено + %1$d чата исключено - Create a folder + Создать папку - Folder name (required) + Название папки (обязательно) - Included chats + Чаты в папке - Add chats + Добавить чаты - Choose chats that you want to appear in this folder. + Выберите чаты, которые хотите видеть в этой папке. Исключения - Exclude chats + Исключить чаты - Choose chats that you do not want to appear in this folder. + Выберите чаты, которые не должны отображаться в этой папке. - Only show unread chats + Показывать только непрочитанные чаты - When enabled, only chats with unread messages will be shown in this folder. + Когда эта опция включена, в этой папке будут отображаться только чаты с непрочитанными сообщениями. Учитывать беззвучные чаты Создать - Create folder? + Создать папку? - Do you want to create the chat folder \"%1$s\"? + Хотите создать папку чата «%1$s»? - Create folder + Создать папку - Edit folder + Изменить папку Сохранить - Save changes? + Сохранить изменения? - Do you want to save the changes you\'ve made to this chat folder? + Вы хотите сохранить изменения, которые вы внесли в эту папку чата? - Save changes + Сохранить изменения Сбросить - Delete folder + Удалить папку - Delete this chat folder? + Удалить эту папку чата? - Chat types + Типы чатов Готово @@ -7767,15 +7767,15 @@ - Cancel download + Отменить загрузку - Downloading: %1$s of %2$s (%3$s%%) + Загрузка: %1$s из %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Недостаточно места, чтобы загрузить вашу резервную копию. Чтобы продолжить, освободите %1$s места. - Skip download + Пропустить загрузку - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Не удалось завершить последнее резервное копирование. Убедитесь, что телефон подключён к сети Wi-Fi, и нажмите «Создать резервную копию сейчас», чтобы повторить попытку." @@ -7885,13 +7885,13 @@ Изменен тип резервного копирования и отменена подписка - Subscription canceled + Подписка отменена Скачивание завершено Резервная копия будет создана за одну ночь. - Subscription inactive + Подписка неактивна План резервного копирования @@ -7903,9 +7903,9 @@ Продлится %1$s - Expires on %1$s + Истекает %1$s - Expired on %1$s + Истекла %1$s Создайте резервную копию истории сообщений, и вы не потеряете ни одно сообщение при покупке нового телефона или переустановке Signal. @@ -7951,9 +7951,9 @@ Пожалуйста, введите Пин-код, пароль или графический ключ вашего устройства. - Re-enable backups + Включить резервное копирование снова - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Резервное копирование было отключено, а ваши данные — удалены из защищённого хранилища Signal. diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index f6406efcbf..bc97a770a5 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -375,7 +375,7 @@ Sporočila - Chat types + Vrste klepeta Sporočilo %1$s @@ -4259,9 +4259,9 @@ Odpri kamero Zaenkrat brez klepetov.\nZačnite s sporočilom prijatelju_ici. - No chats to display + Ni klepetov za prikaz - Folder settings + Nastavitve mape @@ -5293,55 +5293,55 @@ Tipkovnica Pošlji z enter - Chat folders + Mape klepetov - Add a chat folder + Dodaj mapo klepeta - Organize your chats into folders and quickly switch between them on your chat list. + Klepete organizirajte v mape in med njimi hitro preklapljajte na seznamu klepetov. - Folders + Mape - Create a folder + Ustvari mapo - All chats + Vsi klepeti - Suggested folders + Predlagane mape - Unreads + Neprebrana - Unread messages from all chats + Neprebrana sporočila iz vseh klepetov - 1:1 chats + Klepeti 1:1 - Only messages from direct chats + Samo sporočila iz neposrednih klepetov Skupine - Only message from group chats + Samo sporočila iz skupinskih klepetov Dodaj - %1$s folder added. + %1$s dodana mapa. - Edit folder + Uredi mapo - Delete folder + Izbriši mapo - Add new folder + Dodaj novo mapo - Mute all + Izklopi vse - Reorder folders + Spremeni vrstni red map Označi vse kot prebrano - %1$d chat type - %1$d chat types - %1$d chat types - %1$d chat types + %1$d vrsta klepeta + %1$d vrsti klepeta + %1$d vrste klepeta + %1$d vrst klepeta @@ -5352,63 +5352,63 @@ - %1$d chat excluded - %1$d chats excluded - %1$d chats excluded - %1$d chats excluded + %1$d izključen klepet + %1$d izključena klepeta + %1$d izključeni klepeti + %1$d izključenih klepetov - Create a folder + Ustvari mapo - Folder name (required) + Ime mape (obvezno) - Included chats + Vključeni klepeti - Add chats + Dodaj klepete - Choose chats that you want to appear in this folder. + Izberite klepete, ki jih želite prikazati v tej mapi. Izjeme - Exclude chats + Izključi klepete - Choose chats that you do not want to appear in this folder. + Izberite klepete, za katere ne želite, da so prikazani v tej mapi. - Only show unread chats + Prikaži samo neprebrane klepete - When enabled, only chats with unread messages will be shown in this folder. + Če je ta možnost omogočena, bodo v tej mapi prikazani samo klepeti z neprebranimi sporočili. - Include muted chats + Vključi utišane klepete Ustvari - Create folder? + Želite ustvariti mapo? - Do you want to create the chat folder \"%1$s\"? + Ali želite ustvariti mapo za klepet \"%1$s\" ? - Create folder + Ustvari mapo - Edit folder + Uredi mape Shrani - Save changes? + Želite shraniti spremembe? - Do you want to save the changes you\'ve made to this chat folder? + Ali želite shraniti spremembe, ki ste jih naredili v tej mapi klepeta? - Save changes + Shrani spremembe Zavrzi - Delete folder + Izbriši mapo - Delete this chat folder? + Želite izbrisati mapo klepeta? - Chat types + Vrste klepeta OK @@ -7767,15 +7767,15 @@ - Cancel download + Prekliči prenos - Downloading: %1$s of %2$s (%3$s%%) + Prenos %1$s od %2$s (%3$s %%) - Not enough space to download your Backup. To continue free up %1$s of space. + Premalo prostora za prenos varnostne kopije. Za nadaljevanje sprostite %1$s prostora. - Skip download + Preskoči prenos - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Zadnje varnostne kopije ni bilo mogoče dokončati. Prepričajte se, da je vaš telefon povezan na Wi-Fi, in tapnite Izdelaj varnostno kopijo, da poskusite znova." @@ -7885,13 +7885,13 @@ Spremenjena vrsta varnostne kopije in preklicana naročnina - Subscription canceled + Naročnina je prekinjena Prenos dokončan Varnostna kopija bo ustvarjena čez noč. - Subscription inactive + Neaktivna naročnina Načrt varnostne kopije @@ -7903,9 +7903,9 @@ Obnovitev naročnine: %1$s - Expires on %1$s + Poteče %1$s - Expired on %1$s + Potekla je %1$s Ustvarite varnostno kopijo zgodovine sporočil, da ne izgubite podatkov, ko dobite nov telefon ali znova namestite Signal. @@ -7951,9 +7951,9 @@ Vnesite pin, geslo ali vzorec naprave. - Re-enable backups + Ponovna vključitev varnostnih kopij - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Varnostne kopije so bile izklopljene, vaši podatki pa izbrisani iz Signalove storitve varnega shranjevanja. diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml index 47094f9cee..e54c6bba3a 100644 --- a/app/src/main/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -369,7 +369,7 @@ Mesazhe - Chat types + Llojet e bisedave %1$s mesazhi @@ -4053,9 +4053,9 @@ Hape Kamerën Ende pa biseda.\nFillo duke i dërguar një mesazh një shoku. - No chats to display + Nuk ka biseda për të shfaqur - Folder settings + Parametrat e dosjeve @@ -5055,53 +5055,53 @@ Tastierë Dërgo me enter - Chat folders + Dosjet e bisedës - Add a chat folder + Shto dosje bisede - Organize your chats into folders and quickly switch between them on your chat list. + Organizo bisedat në dosje dhe kalo shpejt ndërmjet tyre në listën e bisedave. - Folders + Dosjet - Create a folder + Krijo dosje - All chats + Të gjitha bisedat - Suggested folders + Dosjet e sugjeruara - Unreads + Të palexuara - Unread messages from all chats + Mesazhe të palexuara nga të gjitha bisedat - 1:1 chats + Biseda 1:1 - Only messages from direct chats + Vetëm mesazhe nga biseda direkte Grupet - Only message from group chats + Mesazh vetëm nga bisedat në grup Shtoje - %1$s folder added. + Dosja %1$s u shtua. - Edit folder + Përpuno dosjen - Delete folder + Fshi dosjen - Add new folder + Shto dosje të re - Mute all + Hiq zërin për të gjithë - Reorder folders + Rirendit dosjet Shënoji krejt si të lexuar - %1$d chat type - %1$d chat types + %1$d lloji i bisedës + %1$d llojet e bisedave @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d bisedë e përjashtuar + %1$d biseda të përjashtuara - Create a folder + Krijo dosje - Folder name (required) + Emri i dosjes (kërkohet) - Included chats + Bisedat e përfshira - Add chats + Shto biseda - Choose chats that you want to appear in this folder. + Zgjidh bisedat që dëshiron të shfaqen në këtë dosje. Përjashtime - Exclude chats + Përjashto biseda - Choose chats that you do not want to appear in this folder. + Zgjidh bisedat që nuk dëshiron të shfaqen në këtë dosje. - Only show unread chats + Shfaq vetëm biseda të palexuara - When enabled, only chats with unread messages will be shown in this folder. + Kur aktivizohet, në këtë dosje do të shfaqen vetëm biseda me mesazhe të palexuara. - Include muted chats + Përfshi bisedat pa zë Krijoje - Create folder? + Të krijohet dosja? - Do you want to create the chat folder \"%1$s\"? + Dëshiron të krijosh dosjen \"%1$s\" të bisedës? - Create folder + Krijo dosje - Edit folder + Përpuno dosjen Ruaj - Save changes? + Të ruhen ndryshimet? - Do you want to save the changes you\'ve made to this chat folder? + Dëshiron të ruash ndryshimet që ke bërë në dosjen e bisedës? - Save changes + Ruaj ndryshimet Hidhe tej - Delete folder + Fshi dosjen - Delete this chat folder? + Të fshihet dosja e bisedë? - Chat types + Llojet e bisedave U bë @@ -7445,15 +7445,15 @@ - Cancel download + Anulo shkarkimin - Downloading: %1$s of %2$s (%3$s%%) + Po shkarkohet: %1$s nga %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Nuk ka hapësirë të mjaftueshme për të shkarkuar kopjeruajtjen. Për të vazhduar liro %1$s hapësirë. - Skip download + Kapërce shkarkimin - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Kopjeruajtja e fundit nuk mund të kryhej. Sigurohu që telefoni të jetë i lidhur me Wi-Fi dhe kliko \"Kopjeruaj tani\" për të provuar përsëri." @@ -7561,13 +7561,13 @@ Lloji i kopjeruajtjes u ndryshua dhe abonimi u anulua - Subscription canceled + Abonimi u anulua Shkarkimi përfundoi Kopjeruajtja do të krijohet brenda natës. - Subscription inactive + Abonim joaktiv Plani i kopjeruajtjes @@ -7579,9 +7579,9 @@ Rinovohet më %1$s - Expires on %1$s + Skadon më %1$s - Expired on %1$s + Ka skaduar më %1$s Bëj kopjeruajtje të historikut të mesazheve në mënyrë që të mos i humbasësh kurrë të dhënat kur merr një telefon të ri ose kur e riinstalon sërish Signal. @@ -7627,9 +7627,9 @@ Të lutem, vendos pinin, fjalëkalimin ose vizimin e pajisjes. - Re-enable backups + Riaktivizo kopjeruajtjet - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Kopjeruajtjet janë çaktivizuar dhe të dhënat e tua janë fshirë nga shërbimi i ruajtjes së sigurt të Signal. diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index f15b8057e1..75147e1cac 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -369,7 +369,7 @@ Meddelanden - Chat types + Chattyper Meddelande %1$s @@ -4053,9 +4053,9 @@ Öppna kameran Inga chattar ännu.\nKom igång genom att skriva till en vän. - No chats to display + Inga chattar att visa - Folder settings + Mappinställningar @@ -5055,53 +5055,53 @@ Tangentbord Skicka med Retur - Chat folders + Chattmappar - Add a chat folder + Lägg till en chattmapp - Organize your chats into folders and quickly switch between them on your chat list. + Organisera dina chattar i mappar och växla snabbt mellan dem i din chattlista. - Folders + Mappar - Create a folder + Skapa en mapp - All chats + Alla chattar - Suggested folders + Föreslagna mappar - Unreads + Olästa - Unread messages from all chats + Olästa meddelanden från alla chattar - 1:1 chats + 1:1-chattar - Only messages from direct chats + Endast meddelanden från direktchattar Grupper - Only message from group chats + Endast meddelanden från gruppchattar Lägg till - %1$s folder added. + Mapp har lagts till: %1$s. - Edit folder + Redigera mapp - Delete folder + Ta bort mapp - Add new folder + Lägg till ny mapp - Mute all + Tysta alla - Reorder folders + Ordna om mappar Markera alla som lästa - %1$d chat type - %1$d chat types + %1$d chattyp + %1$d chattyper @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d chatt exkluderad + %1$d chattar exkluderade - Create a folder + Skapa en mapp - Folder name (required) + Mappnamn (krävs) - Included chats + Inkluderade chattar - Add chats + Lägg till chattar - Choose chats that you want to appear in this folder. + Välj chattar som du vill ska visas i den här mappen. Undantag - Exclude chats + Exkludera chattar - Choose chats that you do not want to appear in this folder. + Välj chattar som du inte vill ska visas i den här mappen. - Only show unread chats + Visa bara olästa chattar - When enabled, only chats with unread messages will be shown in this folder. + När det är aktiverat kommer endast chattar med olästa meddelanden att visas i den här mappen. Inkludera tystade chattar Skapa - Create folder? + Skapa mapp? - Do you want to create the chat folder \"%1$s\"? + Vill du skapa chattmappen \"%1$s\"? - Create folder + Skapa mapp - Edit folder + Redigera mapp Spara - Save changes? + Spara ändringar? - Do you want to save the changes you\'ve made to this chat folder? + Vill du spara ändringarna som du har gjort till denna chattmapp? - Save changes + Spara ändringar Kassera - Delete folder + Ta bort mapp - Delete this chat folder? + Ta bort den här chattmappen? - Chat types + Chattyper Klar @@ -7445,15 +7445,15 @@ - Cancel download + Avbryt nedladdning - Downloading: %1$s of %2$s (%3$s%%) + Laddar ned: %1$s av %2$s (%3$s %%) - Not enough space to download your Backup. To continue free up %1$s of space. + Det finns inte tillräckligt med utrymme för att ladda ner din säkerhetskopia. Frigör %1$s utrymme för att fortsätta. - Skip download + Hoppa över nedladdning - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Din senaste säkerhetskopiering kunde inte slutföras. Se till att din telefon är ansluten till wifi och tryck på Säkerhetskopiera nu för att försöka igen." @@ -7561,13 +7561,13 @@ Typ av säkerhetskopia har ändrats och abonnemanget har sagts upp - Subscription canceled + Abonnemanget uppsagt Nerladdning slutförd Säkerhetskopia kommer att skapas över natten. - Subscription inactive + Abonnemanget inaktivt Säkerhetskopieringsplan @@ -7579,9 +7579,9 @@ Förnyas %1$s - Expires on %1$s + Upphör %1$s - Expired on %1$s + Upphörde %1$s Säkerhetskopiera din meddelandehistorik så att du aldrig förlorar data när du skaffar en ny telefon eller installerar om Signal. @@ -7627,9 +7627,9 @@ Ange din enhets pinkod, lösenord eller mönster. - Re-enable backups + Återaktivera säkerhetskopiering - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Säkerhetskopieringar har stängts av och dina data har tagits bort från Signals säkra lagringstjänst. diff --git a/app/src/main/res/values-sw/strings.xml b/app/src/main/res/values-sw/strings.xml index 404accffc8..44a1fe300b 100644 --- a/app/src/main/res/values-sw/strings.xml +++ b/app/src/main/res/values-sw/strings.xml @@ -369,7 +369,7 @@ Jumbe - Chat types + Aina za gumzo Ujumbe %1$s @@ -4053,9 +4053,9 @@ Fungua Kamera Bado hakuna gumzo.\nAnza kwa kumtumia rafiki ujumbe. - No chats to display + Hakuna magumzo ya kuonyesha - Folder settings + Mipangilio ya folda @@ -5055,47 +5055,47 @@ Kibodi Tuma kwa kubofya enter - Chat folders + Folda la magumzo Add a chat folder - Organize your chats into folders and quickly switch between them on your chat list. + Panga magumzo yako katika folda na hama haraka baina yao katika orodha yako ya gumzo. - Folders + Mafolda - Create a folder + Tengeneza folda - All chats + Magumzo yote - Suggested folders + Mafolda yaliyopendekezwa - Unreads + Hazijasomwa Unread messages from all chats - 1:1 chats + Magumzo ya 1:1 Only messages from direct chats Makundi - Only message from group chats + Ujumbe kutoka kwenye magumzo ya moja kwa moja tu Ongeza - %1$s folder added. + Folda %1$s imeongezwa. - Edit folder + Hariri folda - Delete folder + Futa folda Add new folder - Mute all + Nyamazisha yote - Reorder folders + Panga tena mafolda Alamisha zote zilimesomwa @@ -5116,55 +5116,55 @@ - Create a folder + Tengeneza folda - Folder name (required) + Jina la folda (linahitajika) - Included chats + Magumzo yaliyojumuishwa Add chats - Choose chats that you want to appear in this folder. + Chagua magumzo unayotaka yaonekane kwenye folda hili. Isipokuwa - Exclude chats + Usijumuishe magumzo - Choose chats that you do not want to appear in this folder. + Chagua magumzo ambayo hutaki yaonekana kwenye folda hii. - Only show unread chats + Onyesha magumzo hayajasomwa - When enabled, only chats with unread messages will be shown in this folder. + Ikiwashwa, ni magumzo yenye ujumbe hazijasomwa pekee ndizo zitakazoonyeshwa kwenye folda hii. - Include muted chats + Jumuisha magumzo yaliyonyamazishwa Tengeneza - Create folder? + Ungependa kutengeneza folda? - Do you want to create the chat folder \"%1$s\"? + Unataka kutengeneza folda la gumzo \"%1$s\"? - Create folder + Tengeneza folda Edit folder Hifadhi - Save changes? + Hifadhi mabadiliko? - Do you want to save the changes you\'ve made to this chat folder? + Unataka kuhifadhi mabadiliko uliyofanya kwenye folda hili la gumzo? - Save changes + Hifadhi mabadiliko Tupa - Delete folder + Futa folda Delete this chat folder? - Chat types + Aina za gumzo Imekamilika @@ -7445,15 +7445,15 @@ - Cancel download + Ghairi upakuaji - Downloading: %1$s of %2$s (%3$s%%) + Inapakua: %1$s ya %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Hakuna nafasi tosha kupakua Hifadhi Nakala yako. Ili uendelee futa ili upate nafasi ya %1$s. - Skip download + Ruka upakuaji - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Uhifadhi nakala wako wa mwisho haukukamilika. Hakikisha kuwa simu yako imeunganishwa kwenye Wi-Fi na uguse Hifadhi nakala sasa ili ujaribu tena." @@ -7561,13 +7561,13 @@ Aina ya chelezo imebadilika na usajili umeghairishwa - Subscription canceled + Usajili umeghairishwa Upakuaji umekamilika Hifadhi nakala itaundwa usiku. - Subscription inactive + Usajili hautumiki Mpango wa uhifadhi nakala @@ -7579,9 +7579,9 @@ Kuhuishwa %1$s - Expires on %1$s + Inakwisha muda %1$s - Expired on %1$s + Ilikwisha muda %1$s Hifadhi nakala ya historia ya jumbe wako ili usiwahi kupoteza data unapopata simu mpya au kusakinisha upya Signal. @@ -7627,9 +7627,9 @@ Tafadhali ingiza nenosiri, pini au alama ya kifaa chako. - Re-enable backups + Wezesha tena uhifadhi nakala - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Hifadhi nakala zimezimwa na data yako kufutwa kutoka kwenye huduma salama ya uhifadhi ya Signal. diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index d601d0e20a..f443e50f43 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -369,7 +369,7 @@ மெசேஜ்கள் - Chat types + சாட் வகைகள் செய்தி %1$s @@ -4053,9 +4053,9 @@ புகைப்படக்கருவியை திறக்கவும் இதுவரை சாட்ஸ் எதுவும் இல்லை.\nநண்பருக்கு மெசேஜ் அனுப்புவதன் மூலம் தொடங்கவும். - No chats to display + காண்பிப்பதற்கான சாட்ஸ் ஏதும் இல்லை - Folder settings + கோப்புறை அமைப்புகள் @@ -5055,53 +5055,53 @@ விசைப்பலகை உள்ளிடுக மூலம் அனுப்புக - Chat folders + சாட் கோப்புறைகள் - Add a chat folder + சாட் கோப்புறையைச் சேர் - Organize your chats into folders and quickly switch between them on your chat list. + உங்கள் சாட்ஸைக் கோப்புறைகளாக ஒழுங்கமைத்து, உங்கள் சாட் பட்டியலில் அவற்றுக்கிடையே விரைவாக மாறவும். - Folders + கோப்புறைகள் - Create a folder + கோப்புறையை உருவாக்கு - All chats + அனைத்து சாட்ஸ் - Suggested folders + பரிந்துரைக்கப்பட்ட கோப்புறைகள் - Unreads + படிக்கப்படாதவை - Unread messages from all chats + அனைத்து சாட்ஸில் இருந்தும் படிக்கப்பட்டாத மெசேஜ்கள் - 1:1 chats + 1:1 சாட்ஸ் - Only messages from direct chats + நேரடி சாட்ஸிலிருந்து மெசேஜ்கள் மட்டும் குழுக்கள் - Only message from group chats + குழு சாட்ஸிலிருந்து மெசேஜ்கள் மட்டும் சேர்க்கவும் - %1$s folder added. + %1$s கோப்புறை சேர்க்கப்பட்டது. - Edit folder + கோப்புறையைத் திருத்து - Delete folder + கோப்புறையை அழி - Add new folder + புதிய கோப்புறையைச் சேர் - Mute all + அனைத்தையும் மியூட் செய் - Reorder folders + கோப்புறையை மறுவரிசைப்படுத்து அனைத்தையும் படித்தாக குறியிடு - %1$d chat type - %1$d chat types + %1$d சாட் வகை + %1$d சாட் வகைகள் @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d சாட் விலக்கப்பட்டது + %1$d சாட்ஸ் விலக்கப்பட்டன - Create a folder + கோப்புறையை உருவாக்கு - Folder name (required) + கோப்புறை பெயர் (தேவையானது) - Included chats + சாட்ஸ் உள்ளடங்கும் - Add chats + சாட்ஸைச் சேர் - Choose chats that you want to appear in this folder. + இந்தக் கோப்புறையில் தோன்ற வேண்டிய சாட்ஸைத் தேர்ந்தெடுக்கவும். விதிவிலக்குகள் - Exclude chats + சாட்ஸை விலக்கு - Choose chats that you do not want to appear in this folder. + இந்தக் கோப்புறையில் தோன்றக் கூடாத சாட்ஸைத் தேர்ந்தெடுக்கவும். - Only show unread chats + படிக்கப்படாத சாட்ஸை மட்டும் காட்டு - When enabled, only chats with unread messages will be shown in this folder. + செயல்படுத்தப்பட்டதும், கோப்புறையில் படிக்கப்படாத மெசேஜ்களைக் கொண்ட சாட்ஸ் மற்றும் தோன்றும். - Include muted chats + மியூட் செய்யப்பட்ட சாட்ஸைச் சேர்க்கவும் உருவாக்கவும் - Create folder? + கோப்புறையை உருவாக்குவதா? - Do you want to create the chat folder \"%1$s\"? + \"%1$s\" சாட் கோப்புறையை உருவாக்க வேண்டுமா? - Create folder + சாட் கோப்புறை - Edit folder + கோப்புறையைத் திருத்து சேமி - Save changes? + மாற்றங்களைச் சேமிப்பதா? - Do you want to save the changes you\'ve made to this chat folder? + இந்த சாட் கோப்புறையில் நீங்கள் மேற்கொண்ட மாற்றங்களைச் சேமிக்க விரும்புகிறீர்களா? - Save changes + மாற்றங்களைச் சேமி புறந்தள்ளு - Delete folder + கோப்புறையை அழி - Delete this chat folder? + இந்த சாட் கோப்புறையை அழிக்க வேண்டுமா? - Chat types + சாட் வகைகள் முடிந்தது @@ -7445,15 +7445,15 @@ - Cancel download + பதிவிறக்கத்தை ரத்து செய் - Downloading: %1$s of %2$s (%3$s%%) + பதிவிறக்குகிறது: %2$s இல் %1$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + உங்கள் காப்பிப்பிரதியை பதிவிறக்கப் போதுமான இடம் இல்லை. தொடர்ந்து %1$s இடத்தை விடுவிக்கவும். - Skip download + பதிவிறக்கத்தைத் தவிர் - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "உங்களின் கடைசிக் காப்புப்பிரதி முழுமையடைவில்லை. உங்கள் ஃபோன் வைஃபை உடன் இணைக்கப்பட்டுள்ளத்தை உறுதி செய்து, மீண்டும் முயற்சி செய்ய இப்போதே காப்புப் பிரதியெடு என்பதை அழுத்தவும்." @@ -7561,13 +7561,13 @@ காப்புப்பிரதி வகை மற்றும் சந்தா ரத்து செய்யப்பட்டன - Subscription canceled + சந்தா ரத்துசெய்யப்பட்டது பதிவிறக்கம் முடிக்கப்பட்டது ஒரு இரவிற்குள் காப்புப்பிரதி உருவாக்கப்படும். - Subscription inactive + சந்தா செயலில் இல்லை காப்புப்பிரதி திட்டம் @@ -7579,9 +7579,9 @@ %1$s அன்று புதுப்பிக்கப்படும் - Expires on %1$s + %1$s அன்று காலவதியாகிறது - Expired on %1$s + %1$s அன்று காலாவதியானது உங்கள் செய்தி வரலாற்றைக் காப்புப் பிரதி எடுக்கவும், எனவே நீங்கள் புதிய தொலைபேசியைப் பெறும்போது அல்லது சிக்னலை மீண்டும் நிறுவும்போது தரவை இழக்க மாட்டீர்கள். @@ -7627,9 +7627,9 @@ உங்கள் சாதனத்தின் பின், கடவுச்சொல் அல்லது வடிவத்தை உள்ளிடவும். - Re-enable backups + காப்புப்பிரதிகளை மறுசெயல்படுத்து - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + சிக்னலின் பாதுகாப்பான சேமிப்பகச் சேவையிலிருந்து காப்புப்பிரதிகள் முடக்கப்பட்டு உங்கள் தரவு அழிக்கப்பட்டது. diff --git a/app/src/main/res/values-te/strings.xml b/app/src/main/res/values-te/strings.xml index 4ac3b71e9f..44da63617a 100644 --- a/app/src/main/res/values-te/strings.xml +++ b/app/src/main/res/values-te/strings.xml @@ -369,7 +369,7 @@ సందేశాలు - Chat types + చాట్ రకాలు %1$sకి సందేశం పంపు @@ -4053,9 +4053,9 @@ కెమెరా తెరువు ఇంకా చాట్‌లు లేవు.\nఒక స్నేహితుడికి సందేశం పంపడం ద్వారా ప్రారంభించండి. - No chats to display + ప్రదర్శించడానికి ఏ చాట్స్ లేవు - Folder settings + ఫోల్డర్ సెట్టింగులు @@ -5055,53 +5055,53 @@ కీబోర్డ్ ఎంటర్‌తో పంపించండి - Chat folders + చాట్ ఫోల్డర్‌లు - Add a chat folder + ఒక చాట్ ఫోల్డర్‌ను జోడించండి - Organize your chats into folders and quickly switch between them on your chat list. + మీ చాట్‌లను ఫోల్డర్‌లుగా నిర్వహించండి మరియు మీ చాట్ జాబితాలో వాటి మధ్య త్వరగా మారండి. - Folders + ఫోల్డర్లు - Create a folder + ఫోల్డర్‌ను సృష్టించండి - All chats + అన్ని చాట్స్ - Suggested folders + సూచించబడిన ఫోల్డర్లు - Unreads + చదవనివి - Unread messages from all chats + అన్ని చాట్స్ నుండి చదవని సందేశాలు - 1:1 chats + 1:1 చాట్స్ - Only messages from direct chats + ప్రత్యక్ష చాట్స్ నుండి మాత్రమే సందేశాలు - సమూహాలు + గ్రూప్స్ - Only message from group chats + గ్రూప్ చాట్స్ నుండి మాత్రమే సందేశం చేర్చు - %1$s folder added. + %1$s ఫోల్డర్ జోడించబడింది. - Edit folder + ఫోల్డర్‌ను సవరించండి - Delete folder + ఫోల్డర్‌ను తొలగించండి - Add new folder + కొత్త ఫోల్డర్‌ను జోడించండి - Mute all + అన్నిటినీ మ్యూట్ చేయండి - Reorder folders + ఫోల్డర్ల క్రమాన్ని మార్చండి మార్క్ చేసినవన్నీ చదవండి - %1$d chat type - %1$d chat types + %1$d చాట్ రకం + %1$d చాట్ రకాలు @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d చాట్ మినహాయించబడింది + %1$d చాట్స్ మినహాయించబడ్డాయి - Create a folder + ఫోల్డర్‌ను సృష్టించండి - Folder name (required) + ఫోల్డర్ పేరు (అవసరమైనది) - Included chats + చేర్చబడిన చాట్స్ - Add chats + చాట్‌లను జోడించండి - Choose chats that you want to appear in this folder. + ఈ ఫోల్డర్‌లో కనిపించాలనుకుంటున్న చాట్‌లను మీరు ఎంచుకోండి. మినహాయింపులు - Exclude chats + చాట్‌లను మినహాయించండి - Choose chats that you do not want to appear in this folder. + ఈ ఫోల్డర్లో కనిపించకూడదనుకునే చాట్‌లను మీరు ఎంచుకోండి. - Only show unread chats + చదవని చాట్‌లను మాత్రమే చూపండి - When enabled, only chats with unread messages will be shown in this folder. + ప్రారంభించబడినప్పుడు, చదవని సందేశాలతో కూడిన చాట్‌లు మాత్రమే ఈ ఫోల్డర్‌లో చూపబడతాయి. - Include muted chats + మ్యూట్ చేయబడిన చాట్‌లను చేర్చండి సృష్టించు - Create folder? + ఫోల్డర్‌ను సృష్టించేదా? - Do you want to create the chat folder \"%1$s\"? + మీరు చాట్ ఫోల్డర్ \"%1$s\" ను సృష్టించాలనుకుంటున్నారా? - Create folder + ఫోల్డర్‌ను సృష్టించండి - Edit folder + ఫోల్డర్‌ను సవరించండి సేవ్ చేయండి - Save changes? + మార్పులను సేవ్ చేసేదా? - Do you want to save the changes you\'ve made to this chat folder? + మీరు చేసిన మార్పులను ఈ చాట్ ఫోల్డర్‌లో సేవ్ చేయాలనుకుంటున్నారా? - Save changes + మార్పులను సేవ్ చేయండి తీసివేయు - Delete folder + ఫోల్డర్‌ను తొలగించండి - Delete this chat folder? + ఈ చాట్ ఫోల్డర్‌ను తొలగించేదా? - Chat types + చాట్ రకాలు పూర్తయింది @@ -7445,15 +7445,15 @@ - Cancel download + డౌన్‌లోడ్‌ను రద్దు చేయండి - Downloading: %1$s of %2$s (%3$s%%) + డౌన్లోడ్ అవుతోంది: %2$s యొక్క%1$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + మీ బ్యాకప్‌ను డౌన్లోడ్ చేయడానికి తగినంత స్థలం లేదు. కొనసాగించడానికి స్థలంలో %1$s ను ఖాళీ చేయండి. - Skip download + డౌన్‌లోడ్‌ను దాటవేయండి - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "మీ చివరి బ్యాకప్‌ను పూర్తిచేయడం సాధ్యం కాలేదు. మీ ఫోన్ Wi-Fi కు కనెక్ట్ చేయబడిందని నిర్ధారించుకొని మళ్ళీ ప్రయత్నించడానికి ఇప్పుడే బ్యాకప్ చేయండిని తట్టండి." @@ -7561,13 +7561,13 @@ బ్యాకప్ రకం మారింది, సబ్స్క్రిప్షన్ రద్దు అయ్యింది - Subscription canceled + సబ్స్క్రిప్షన్ రద్దు చేయబడింది డౌన్‌లోడ్ పూర్తయింది బ్యాకప్ రాత్రికి రాత్రి సృష్టించబడుతుంది. - Subscription inactive + సబ్స్క్రిప్షన్ నిష్క్రియంగా ఉంది బ్యాకప్ ప్రణాళిక @@ -7579,9 +7579,9 @@ %1$s ను పునరుద్ధరిస్తుంది - Expires on %1$s + %1$s న గడువు ముగుస్తుంది - Expired on %1$s + %1$s న గడువు ముగిసింది మీ సందేశ చరిత్రను బ్యాకప్ చేసుకోండి దానివల్ల మీరు కొత్త ఫోన్ కొన్నప్పుడు గానీ లేదా Signal ను తిరిగి ఇన్‌స్టాల్ చేసినప్పుడు గానీ డేటాను ఎప్పటికీ కోల్పోరు. @@ -7627,9 +7627,9 @@ దయచేసి మీ పరికరం PIN, పాస్‌వర్డ్ లేదా ప్యాటర్న్ ఎంటర్ చేయండి. - Re-enable backups + బ్యాకప్‌లను మళ్ళీ ప్రారంభించండి - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + బ్యాకప్స్ ఆఫ్ చేయబడ్డాయి మరియు Signal యొక్క సురక్షిత నిల్వ సేవ నుండి మీ డేటా తొలగించబడింది. diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index 6a31826084..d42a1bcabf 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -366,7 +366,7 @@ ข้อความ - Chat types + ประเภทของแชท ข้อความ %1$s @@ -3950,9 +3950,9 @@ เปิดกล้อง ยังไม่มีแชท\nเริ่มต้นด้วยการส่งข้อความหาเพื่อนสักคน - No chats to display + ไม่มีแชทให้แสดง - Folder settings + การตั้งค่าของโฟลเดอร์ @@ -4936,52 +4936,52 @@ แป้นพิมพ์ กด Enter เพื่อส่ง - Chat folders + โฟลเดอร์แชท - Add a chat folder + เพิ่มโฟลเดอร์แชท - Organize your chats into folders and quickly switch between them on your chat list. + จัดแยกแชทเป็นโฟลเดอร์ ให้คุณเปิดสลับไปมาได้อย่างสะดวกรวดเร็วในหน้ารายการแชท - Folders + โฟลเดอร์ - Create a folder + สร้างโฟลเดอร์ - All chats + แชททั้งหมด - Suggested folders + โฟลเดอร์ที่แนะนำ - Unreads + ยังไม่ได้อ่าน - Unread messages from all chats + ข้อความที่ยังไม่ได้อ่านจากแชททั้งหมด - 1:1 chats + แชทส่วนตัว - Only messages from direct chats + ข้อความจากแชทส่วนตัวเท่านั้น กลุ่ม - Only message from group chats + ข้อความจากแชทกลุ่มเท่านั้น เพิ่ม - %1$s folder added. + เพิ่มโฟลเดอร์ \"%1$s\" เรียบร้อยแล้ว - Edit folder + แก้ไขโฟลเดอร์ - Delete folder + ลบโฟลเดอร์ - Add new folder + เพิ่มโฟลเดอร์ใหม่ - Mute all + ปิดการแจ้งเตือนทั้งหมด - Reorder folders + เปลี่ยนการจัดเรียงโฟลเดอร์ ทำเครื่องหมายทั้งหมดว่าอ่านแล้ว - %1$d chat types + แชท %1$d ประเภท @@ -4989,60 +4989,60 @@ - %1$d chats excluded + ไม่รวมแชท %1$d รายการ - Create a folder + สร้างโฟลเดอร์ - Folder name (required) + ชื่อโฟลเดอร์ (ต้องระบุ) - Included chats + แชทในโฟลเดอร์ - Add chats + เพิ่มแชท - Choose chats that you want to appear in this folder. + เลือกแชทที่คุณต้องการให้ปรากฏในโฟลเดอร์นี้ ข้อยกเว้น - Exclude chats + แยกแชทออกจากโฟลเดอร์ - Choose chats that you do not want to appear in this folder. + เลือกแชทที่คุณไม่ต้องการให้ปรากฏในโฟลเดอร์นี้ - Only show unread chats + แสดงเฉพาะแชทที่ยังไม่ได้อ่าน - When enabled, only chats with unread messages will be shown in this folder. + เมื่อเปิดใช้งาน โฟลเดอร์นี้จะแสดงเฉพาะแชทที่มีข้อความที่ยังไม่ได้อ่าน - รวมแชทที่ถูกปิดเสียงเข้าไว้ด้วย + รวมแชทที่ถูกปิดการแจ้งเตือนเข้าไว้ด้วย สร้าง - Create folder? + สร้างโฟลเดอร์ใช่หรือไม่ - Do you want to create the chat folder \"%1$s\"? + คุณต้องการสร้างโฟลเดอร์แชท \"%1$s\" ใช่หรือไม่ - Create folder + สร้างโฟลเดอร์ - Edit folder + แก้ไขโฟลเดอร์ บันทึก - Save changes? + บันทึกการเปลี่ยนแปลงหรือไม่ - Do you want to save the changes you\'ve made to this chat folder? + คุณต้องการบันทึกการเปลี่ยนแปลงในโฟลเดอร์แชทนี้หรือไม่ - Save changes + บันทึกการเปลี่ยนแปลง ยกเลิก - Delete folder + ลบโฟลเดอร์ - Delete this chat folder? + ลบโฟลเดอร์แชทนี้ใช่หรือไม่ - Chat types + ประเภทของแชท เสร็จสิ้น @@ -7284,15 +7284,15 @@ - Cancel download + ยกเลิกการดาวน์โหลด - Downloading: %1$s of %2$s (%3$s%%) + กำลังดาวน์โหลด: %1$s จาก %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + พื้นที่จัดเก็บของคุณไม่เพียงพอสำหรับการดาวน์โหลดข้อมูลสำรอง โปรดเพิ่มพื้นที่จัดเก็บ %1$s เพื่อดำเนินการต่อ - Skip download + ข้ามการดาวน์โหลด - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "การสำรองข้อมูลครั้งล่าสุดของคุณไม่เสร็จสมบูรณ์ โปรดตรวจสอบว่าโทรศัพท์เชื่อมต่อกับ Wi-Fi แล้วแตะสำรองข้อมูลเดี๋ยวนี้เพื่อลองอีกครั้ง" @@ -7399,13 +7399,13 @@ เปลี่ยนประเภทของการสำรองข้อมูลและยกเลิกการสมัครแล้ว - Subscription canceled + ยกเลิกการสมัครแล้ว ดาวน์โหลดเสร็จสิ้น ระบบจะสำรองข้อมูลในช่วงกลางคืน - Subscription inactive + ไม่มีแพ็กเกจที่ใช้งานอยู่ แพ็กเกจสำรองข้อมูล @@ -7417,9 +7417,9 @@ ต่ออายุ %1$s - Expires on %1$s + จะหมดอายุวันที่ %1$s - Expired on %1$s + หมดอายุแล้ววันที่ %1$s สำรองประวัติการส่งข้อความของคุณ ช่วยเก็บรักษาข้อมูลแม้ในกรณีที่คุณเปลี่ยนโทรศัพท์เครื่องใหม่หรือติดตั้ง Signal อีกครั้ง @@ -7465,9 +7465,9 @@ โปรดใส่ PIN, รหัสผ่าน หรือรูปแบบการวาดเส้นของอุปกรณ์คุณ - Re-enable backups + เปิดใช้งานการสำรองข้อมูลอีกครั้ง - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + ปิดใช้งานการสำรองข้อมูลและข้อมูลของคุณถูกลบออกจากบริการจัดเก็บที่ปลอดภัยของ Signal แล้ว diff --git a/app/src/main/res/values-tl/strings.xml b/app/src/main/res/values-tl/strings.xml index 23106ee8f6..ad2aae106e 100644 --- a/app/src/main/res/values-tl/strings.xml +++ b/app/src/main/res/values-tl/strings.xml @@ -4053,7 +4053,7 @@ Buksan ang Camera Wala pang chats.\nMag-message ng friend para magsimula. - No chats to display + Walang makitang chats Folder settings @@ -5057,51 +5057,51 @@ Chat folders - Add a chat folder + Magdagdag ng chat folder - Organize your chats into folders and quickly switch between them on your chat list. + I-organize ang chats mo sa iba\'t-ibang folders at mag-switch nang mabilis sa mga ito sa iyong chat list. Folders - Create a folder + Gumawa ng folder - All chats + Lahat ng chats Suggested folders Unreads - Unread messages from all chats + Unread messages mula sa lahat ng chats 1:1 chats - Only messages from direct chats + Messages lang mula sa direct chats - Mga Grupo + Groups - Only message from group chats + Messages lang mula sa group chats Mag-add - %1$s folder added. + Idinagdag ang %1$s folder. - Edit folder + I-edit ang folder - Delete folder + Burahin ang folder - Add new folder + Magdagdag ng bagong folder - Mute all + I-mute lahat - Reorder folders + Ayusin ang folders Markahan ang lahat na nabasa na - %1$d chat type - %1$d chat types + %1$d type ng chat + %1$d types ng chat @@ -5110,57 +5110,57 @@ - %1$d chat excluded - %1$d chats excluded + %1$d chat ang excluded + %1$d chats ang excluded - Create a folder + Gumawa ng folder - Folder name (required) + Pangalan ng folder (required) Included chats - Add chats + Magdagdag ng chats - Choose chats that you want to appear in this folder. + Piliin ang chats na gusto mong makita sa folder na ito. Exceptions - Exclude chats + Mag-exclude ng chats - Choose chats that you do not want to appear in this folder. + Piliin ang chats na ayaw mong makita sa folder na ito. - Only show unread chats + Ipakita lamang ang unread chats - When enabled, only chats with unread messages will be shown in this folder. + Kapag naka-enable, ang chats na may unread messages lamang ang ipakikita sa folder na ito. - Include muted chats + Isama ang muted chats Lumikha - Create folder? + Gumawa ng folder? - Do you want to create the chat folder \"%1$s\"? + Gusto mo bang gawin ang chat folder na \"%1$s\"? - Create folder + Gumawa ng folder - Edit folder + I-edit ang folder I-save - Save changes? + I-save ang changes? - Do you want to save the changes you\'ve made to this chat folder? + Gusto mo bang i-save ang changes na ginawa mo sa chat folder na ito? - Save changes + I-save ang changes I-discard - Delete folder + Burahin ang folder - Delete this chat folder? + Gusto mo bang burahin ang chat folder na ito? @@ -7445,15 +7445,15 @@ - Cancel download + Kanselahin ang pag-download - Downloading: %1$s of %2$s (%3$s%%) + Nagda-download: %1$s ng %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Walang enough space para i-download ang Backup mo. Para ituloy ang backup, mag-free up ng %1$s ng space. - Skip download + I-skip ang download - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Hindi makumpleto ang huling backup mo. Siguraduhing connected sa Wi-Fi ang phone mo at i-tap ang Back up now para subukan ulit." @@ -7561,13 +7561,13 @@ Pinalitan ang uri ng backup at kinansela ang subscription - Subscription canceled + Kinancel ang subscription Tapos na ang pag-download Gagawin ang backup overnight. - Subscription inactive + Inactive ang subscription Backup plan @@ -7579,9 +7579,9 @@ Mare-renew sa %1$s - Expires on %1$s + Mage-expire sa %1$s - Expired on %1$s + Nag-expire noong %1$s I-back up ang message history mo para hindi mawala ang data mo kapag nagpalit ka ng phone o ni-reinstall mo ang Signal. @@ -7627,9 +7627,9 @@ Ilagay ang iyong device pin, password o pattern. - Re-enable backups + I-enable ulit ang backups - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + In-off ang backups at ang iyong data ay binura mula sa secure storage service ng Signal. diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 10d49bef35..fd96d11090 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -369,7 +369,7 @@ Mesajlar - Chat types + Sohbet türleri İleti %1$s @@ -4053,9 +4053,9 @@ Kamerayı Aç Henüz sohbet yok.\nBir arkadaşına mesaj göndererek başlayabilirsin. - No chats to display + Görüntülenecek sohbet yok - Folder settings + Klasör ayarları @@ -5055,53 +5055,53 @@ Klavye Enter ile gönder - Chat folders + Sohbet klasörleri - Add a chat folder + Sohbet klasörü ekle - Organize your chats into folders and quickly switch between them on your chat list. + Sohbetlerini klasörler halinde düzenle ve sohbet listende bunlar arasında hızla geçiş yap. - Folders + Klasörler - Create a folder + Bir klasör oluştur - All chats + Tüm sohbetler - Suggested folders + Önerilen klasörler - Unreads + Okunmayanlar - Unread messages from all chats + Tüm sohbetlerden okunmamış mesajlar - 1:1 chats + Bireysel sohbetler - Only messages from direct chats + Yalnızca doğrudan sohbetlerdeki mesajlar Gruplar - Only message from group chats + Yalnızca grup sohbetlerindeki mesajlar Ekle - %1$s folder added. + %1$s klasörü eklendi. - Edit folder + Klasörü düzenle - Delete folder + Klasörü sil - Add new folder + Yeni klasör ekle - Mute all + Tümünü sessize al - Reorder folders + Klasörleri yeniden sırala Tümünü okundu olarak işaretle - %1$d chat type - %1$d chat types + %1$d sohbet türü + %1$d sohbet türü @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d sohbet hariç tutuldu + %1$d sohbet hariç tutuldu - Create a folder + Bir klasör oluştur - Folder name (required) + Klasör adı (zorunlu) - Included chats + Dahil edilen sohbetler - Add chats + Sohbet ekle - Choose chats that you want to appear in this folder. + Bu klasörde görünmesini istediğin sohbetleri seç. İstisnalar - Exclude chats + Sohbeti hariç tut - Choose chats that you do not want to appear in this folder. + Bu klasörde görünmesini istemediğin sohbetleri seç. - Only show unread chats + Yalnızca okunmamış sohbetleri göster - When enabled, only chats with unread messages will be shown in this folder. + Etkinleştirildiğinde, bu klasörde yalnızca okunmamış mesajları olan sohbetler gösterilir. Sessize Alınan Sohbetler Sayılsın Oluştur - Create folder? + Klasör oluşturulsun mu? - Do you want to create the chat folder \"%1$s\"? + \"%1$s\" sohbet klasörünü oluşturmak istiyor musun? - Create folder + Klasör oluştur - Edit folder + Klasörü düzenle Kaydet - Save changes? + Değişiklikler kaydedilsin mi? - Do you want to save the changes you\'ve made to this chat folder? + Bu sohbet klasöründe yaptığın değişiklikleri kaydetmek istiyor musun? - Save changes + Değişiklikleri kaydet Vazgeç - Delete folder + Klasörü sil - Delete this chat folder? + Bu sohbet klasörü silinsin mi? - Chat types + Sohbet türleri Tamam @@ -7445,15 +7445,15 @@ - Cancel download + İndirmeyi iptal et - Downloading: %1$s of %2$s (%3$s%%) + İndiriliyor: %1$s / %2$s (%%%3$s) - Not enough space to download your Backup. To continue free up %1$s of space. + Yedeklemeni indirecek yeterli alan yok. Devam etmek için %1$s alan boşalt. - Skip download + İndirmeyi atla - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Son yedeklemen tamamlanamadı. Telefonunun Wi-Fi\'ye bağlı olduğundan emin ol ve tekrar denemek için Şimdi yedekle\'ye dokun." @@ -7561,13 +7561,13 @@ Yedekleme türü değiştirildi ve abonelik iptal edildi - Subscription canceled + Abonelik iptal edildi İndirme tamamlandı Yedekleme gece boyunca oluşturulur. - Subscription inactive + Abonelik etkin değil Yedekleme planı @@ -7579,9 +7579,9 @@ %1$s tarihinde yenilenir - Expires on %1$s + %1$s tarihinde sona eriyor - Expired on %1$s + %1$s tarihinde sona erdi Mesaj geçmişini yedekle böylece yeni bir telefon aldığında veya Signal\'i yeniden yüklediğinde asla veri kaybetmezsin. @@ -7627,9 +7627,9 @@ Lütfen cihaz pinini, parolanı veya desenini gir. - Re-enable backups + Yedeklemeleri yeniden etkinleştir - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Yedeklemeler kapatıldı ve verilerin Signal\'in güvenli depolama hizmetinden silindi. diff --git a/app/src/main/res/values-ug/strings.xml b/app/src/main/res/values-ug/strings.xml index 6bee92f5cd..e7ef9ea655 100644 --- a/app/src/main/res/values-ug/strings.xml +++ b/app/src/main/res/values-ug/strings.xml @@ -366,7 +366,7 @@ ئۇچۇرلار - Chat types + پاراڭ تۈرلىرى %1$s گە ئۇچۇر قىلىش @@ -3950,9 +3950,9 @@ كامېرا ئاچ تېخى پاراڭ يوق.\nدوستىڭىزغا ئۇچۇر يوللاپ پاراڭلىشىشنى باشلاڭ. - No chats to display + كۆرسىتىدىغان پاراڭلار يوق - Folder settings + ھۆججەت قىسقۇچ تەڭشىكى @@ -4936,52 +4936,52 @@ ھەرپتاختا Enter بىلەن ئەۋەتىڭ - Chat folders + پاراڭ ھۆججەت قىسقۇچلىرى - Add a chat folder + بىرتال پاراڭ قىسقۇچ قوشۇش - Organize your chats into folders and quickly switch between them on your chat list. + پاراڭلىرىڭىزنى ھۆججەت قىسقۇچقا ئورۇنلاشتۇرۇڭ ۋە پاراڭ تىزىملىكىڭىزدە تېز ئالماشتۇرۇڭ. - Folders + ھۆججەت قىسقۇچلار - Create a folder + بىرتال ھۆججەت قىسقۇچ قۇرۇش - All chats + بارلىق پاراڭلار - Suggested folders + تەكلىپلىك ھۆججەت قىسقۇچلار - Unreads + ئوقۇلمىغانلار - Unread messages from all chats + بارلىق پاراڭلاردىن ئوقۇلمىغان ئۇچۇرلار - 1:1 chats + 1:1 پاراڭلار - Only messages from direct chats + بىۋاسىتە پاراڭلاردىن ئوقۇلمىغان ئۇچۇرلار - گۇرۇپپا + گۇرۇپپىلار - Only message from group chats + پەقەت گۇرۇپپا پاراڭلىرىدىن كەلگەن ئۇچۇر قوشۇش - %1$s folder added. + %1$s ھۆججەت قىسقۇچ قوشۇلدى. - Edit folder + ھۆججەت قىسقۇچنى تەھرىرلەش - Delete folder + ھۆججەت قىسقۇچنى ئۆچۈرۈش - Add new folder + يېڭى ھۆججەت قىسقۇچ قوشۇش - Mute all + ھەممىنى ئاۋاسسىزلاشتۇرۇش - Reorder folders + ھۆججەت قىسقۇچلارنى رەتلەش ھەممىسى ئوقۇلدى - %1$d chat types + %1$d پاراڭ تۈرى @@ -4989,60 +4989,60 @@ - %1$d chats excluded + %1$d پاراڭلارنى ئۆز ئىچىگە ئالمايدۇ - Create a folder + بىرتال ھۆججەت قىسقۇچ قۇرۇش - Folder name (required) + ھۆججەت قىسقۇچ نامى (تەلەپ قىلىنىدۇ) - Included chats + ئۆز ئىچىگە ئېلىنغان پاراڭلار - Add chats + پاراڭلارنى قوشۇش - Choose chats that you want to appear in this folder. + بۇ ھۆججەت قىسقۇچتا كۆرۈشنى خالايدىغان پاراڭلارنى تاللاڭ. ئايرىم ئەھۋاللار - Exclude chats + پاراڭلارنى چىقىرىۋېتىش - Choose chats that you do not want to appear in this folder. + بۇ ھۆججەت قىسقۇچتا كۆرۈشنى خالايدىغان پاراڭلارنى تاللاڭ. - Only show unread chats + پەقەت ئوقۇلمىغان پاراڭلارنىلا كۆرسىتىش - When enabled, only chats with unread messages will be shown in this folder. + قوزغىتىلغاندا ، بۇ ھۆججەت قىسقۇچتا پەقەت ئوقۇلمىغان ئۇچۇرلارلا كۆرسىتىلىدۇ. ئۈنسىز پاراڭلارنى ئۆز ئىچىگە ئېلىش قۇر - Create folder? + ھۆججەت قىسقۇچ قۇرامسىز؟ - Do you want to create the chat folder \"%1$s\"? + %1$s پالاڭ ھۆججىتىنى قۇرۇشنى خالامسىز؟ - Create folder + ھۆججەت قىسقۇچ قۇرۇش - Edit folder + ھۆججەت قىسقۇچنى تەھرىرلەش ساقلاش - Save changes? + ئۆزگەرتىشلەرنى ساقلامسىز؟ - Do you want to save the changes you\'ve made to this chat folder? + بۇ پاراڭ ھۆججىتىدە قىلغان ئۆزگەرتىشلەرنى ساقلامسىز؟ - Save changes + ئۆزگەرتىشلەرنى ساقلاڭ تاشلىۋەت - Delete folder + ھۆججەت قىسقۇچنى ئۆچۈرۈش - Delete this chat folder? + بۇ پاراڭ ھۆججىتىنى ئۆچۈرەمسىز؟ - Chat types + پاراڭ تۈرلىرى تامام @@ -7284,15 +7284,15 @@ - Cancel download + چۈشۈرۈشنى بىكار قىلىش - Downloading: %1$s of %2$s (%3$s%%) + %2$s نىڭ %1$s تى چۈشۈۋاتىدۇ(%3$s) - Not enough space to download your Backup. To continue free up %1$s of space. + زاپاسلىرىڭىزنى چۈشۈرۈشكە يېتەرلىك بوشلۇق يوق. داۋاملاشتۇرۇش ئۈچۈن %1$s بوشلۇق ھازىرلاڭ . - Skip download + چۈشۈرۈشتىن ۋاز كېچىش - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "ئاخىرقى زاپاسلىشىڭىزنى تاماملىيالمىدى. تېلېفونىڭىزنىڭ Wi-Fi غا ئۇلانغانلىقىنى جەزملەشتۈرۈڭ ھەمدە «ھازىر زاپاسلاڭ»نى چېكىپ قايتا سىناڭ." @@ -7399,13 +7399,13 @@ زاپاسلاش تىپى ئۆزگەرگەن، مۇشتەرىلىك بىكار قىلىندى - Subscription canceled + مۇشتەرىلىك بىكار قىلىندى چۈشۈرۈلدى زاپاسلاش بىر كېچىدىلا قۇرۇلىدۇ. - Subscription inactive + مۇشتەرىلىك قوزغىتىقسىز زاپاسلاش پىلانى @@ -7417,9 +7417,9 @@ يېڭىلىنىش ۋاقتى %1$s - Expires on %1$s + %1$s ۋاقتى ئۆتىدۇ - Expired on %1$s + %1$s ۋاقتى ئۆتكەن ئۇچۇرلىشىش تارىخىڭىزنى زاپاسلاڭ ، يېڭى تېلېفون ئالغاندا ياكى سىگنالنى قايتا قاچىلىغاندا سانلىق مەلۇماتنى ھەرگىز يوقىتىپ قويمايسىز. @@ -7465,9 +7465,9 @@ ئۈسكۈنىڭىزگە PIN نومۇر، مەخپىي نۇمۇر ياكى نەقىشنى كىرگۈزۈڭ. - Re-enable backups + زاپاسلاشنى قايتا قوزغىتىش - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + زاپاسلاش ئېتىلدى ۋە سىگنالنىڭ بىخەتەر ساقلاش مۇلازىمىتىدىن سانلىق مەلۇماتلىرىڭىز ئۆچۈرۈلدى. diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 1102454d0b..0461fa93fd 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -130,7 +130,7 @@ %1$s не активував/-ла платежі - Ви хочете надіслати користувачу запит на активацію платежів? + Надіслати цьому користувачеві запит на активацію платежів? Надіслати запит @@ -375,7 +375,7 @@ Повідомлення - Chat types + Типи чатів Написати користувачу %1$s @@ -1960,7 +1960,7 @@ %2$s володіє номером %1$s - Ви надіслали користувачу %1$s запит на активацію платежів + Ви надіслали користувачеві %1$s запит на активацію платежів %1$s хоче, щоб ви активували платежі. Надсилайте платежі лише тим людям, яким ви довіряєте. @@ -4259,9 +4259,9 @@ Відкрити Камеру Чатів поки що немає.\n Напишіть щось друзям. - No chats to display + Чатів немає - Folder settings + Налаштування папок @@ -5293,122 +5293,122 @@ Клавіатура Надсилати кнопкою Enter - Chat folders + Папки для чатів - Add a chat folder + Додати папку для чатів - Organize your chats into folders and quickly switch between them on your chat list. + Упорядкуйте чати в папки, щоб швидко перемикатися між потрібними розмовами. - Folders + Папки - Create a folder + Створити папку - All chats + Усі чати - Suggested folders + Зразки папок - Unreads + Непрочитані - Unread messages from all chats + Непрочитані повідомлення з усіх чатів - 1:1 chats + Особисті чати - Only messages from direct chats + Тільки повідомлення з особистих чатів Групи - Only message from group chats + Тільки повідомлення з групових чатів Додати - %1$s folder added. + Додано папку «%1$s». - Edit folder + Змінити вміст папки - Delete folder + Видалити папку - Add new folder + Додати нову папку - Mute all + Вимкнути всі сповіщення - Reorder folders + Змінити порядок папок - Позначити усі як прочитані + Позначити всі як прочитані - %1$d chat type - %1$d chat types - %1$d chat types - %1$d chat types + %1$d тип чатів + %1$d типи чатів + %1$d типів чатів + %1$d типу чатів - %1$d чаті - %1$d чатах - %1$d чатах + %1$d чат + %1$d чати + %1$d чатів %1$d чату - %1$d chat excluded - %1$d chats excluded - %1$d chats excluded - %1$d chats excluded + %1$d чат не включено + %1$d чати не включено + %1$d чатів не включено + %1$d чату не включено - Create a folder + Створити папку - Folder name (required) + Назва папки (обов\'язково) - Included chats + Чати в цій папці - Add chats + Додати чати - Choose chats that you want to appear in this folder. + Виберіть чати, які ви хочете бачити в цій папці. Винятки - Exclude chats + Не включати чати - Choose chats that you do not want to appear in this folder. + Виберіть чати, яких ви не хочете бачити в цій папці. - Only show unread chats + Показувати лише непрочитані чати - When enabled, only chats with unread messages will be shown in this folder. + Якщо ввімкнути, в цій папці будуть лише чати з непрочитаними повідомленнями. - Враховувати чати з вимкненими сповіщеннями + Включати чати з вимкненими сповіщеннями Створити - Create folder? + Створити папку? - Do you want to create the chat folder \"%1$s\"? + Створити папку для чатів «%1$s»? - Create folder + Створити папку - Edit folder + Змінити вміст папки Зберегти - Save changes? + Зберегти зміни? - Do you want to save the changes you\'ve made to this chat folder? + Бажаєте зберегти свої зміни в цій папці для чатів? - Save changes + Зберегти зміни Відхилити - Delete folder + Видалити папку - Delete this chat folder? + Видалити цю папку для чатів? - Chat types + Типи чатів Готово @@ -7767,15 +7767,15 @@ - Cancel download + Скасувати завантаження - Downloading: %1$s of %2$s (%3$s%%) + Завантаження: %1$s з %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Для резервної копії недостатньо місця. Щоб продовжити, звільніть %1$s. - Skip download + Не завантажувати - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Не вдалося завершити створення останньої резервної копії. Перевірте з\'єднання телефона з Wi-Fi і натисніть «Створити копію зараз»." @@ -7885,13 +7885,13 @@ Тип резервного копіювання змінено, а передплату скасовано - Subscription canceled + Передплату скасовано Завантаження завершено Резервну копію буде створено вночі. - Subscription inactive + Передплата неактивна План резервного копіювання @@ -7903,9 +7903,9 @@ Наступний платіж %1$s - Expires on %1$s + Закінчується %1$s - Expired on %1$s + Закінчилася %1$s Зберігайте історію повідомлень і не втрачайте дані в разі зміни телефона або перевстановлення Signal. @@ -7951,9 +7951,9 @@ Уведіть PIN-код пристрою, пароль або графічний ключ. - Re-enable backups + Увімкнути знову - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Резервне копіювання вимкнено, а ваші дані видалено із захищеного сховища даних Signal. diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml index e55ead8e80..d2e9d4f4fc 100644 --- a/app/src/main/res/values-ur/strings.xml +++ b/app/src/main/res/values-ur/strings.xml @@ -369,7 +369,7 @@ میسجز - Chat types + چیٹ کی اقسام پیغام %1$s @@ -4053,9 +4053,9 @@ کیمرہ کھولیں ابھی کوئی چیٹس نہیں ہیں۔\nکسی دوست کو میسج کر کے آغاز کریں۔ - No chats to display + ڈسپلے کرنے کے لیے کوئی چیٹس نہیں ہیں - Folder settings + فولڈر کی سیٹنگز @@ -5055,53 +5055,53 @@ کی بورڈ انٹر دبا کر بھیجیں - Chat folders + چیٹ فولڈرز - Add a chat folder + چیٹ فولڈر شامل کریں - Organize your chats into folders and quickly switch between them on your chat list. + اپنی چیٹس کو فولڈرز میں ترتیب دیں اور اپنی چیٹ کی فہرست میں ان کے درمیان فوری طور پر سوئچ کریں۔ - Folders + فولڈرز - Create a folder + فولڈر تخلیق کریں - All chats + تمام چیٹس - Suggested folders + تجویز کردہ فولڈرز - Unreads + بغیر پڑھے ہوئے میسجز - Unread messages from all chats + تمام چیٹس سے بغیر پڑھے ہوئے میسجز - 1:1 chats + 1:1 چیٹس - Only messages from direct chats + صرف براہ راست چیٹس کے میسجز گروپس - Only message from group chats + صرف گروپ چیٹس کے میسجز شامل کریں - %1$s folder added. + %1$s کا فولڈر شامل کیا گیا۔ - Edit folder + فولڈر میں ترمیم کریں - Delete folder + فولڈر حذف کریں - Add new folder + نیا فولڈر شامل کریں - Mute all + تمام کو خاموش کریں - Reorder folders + فولڈرز کو دوبارہ ترتیب دیں تمام پڑھنے پر نشان لگائیں - %1$d chat type - %1$d chat types + %1$d چیٹ کی قسم + %1$d چیٹ کی اقسام @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d چیٹ کو نکال دیا گیا + %1$d چیٹس کو نکال دیا گیا - Create a folder + فولڈر تخلیق کریں - Folder name (required) + فولڈر کا نام (درکار ہے) - Included chats + شامل کردہ چیٹس - Add chats + چیٹس شامل کریں - Choose chats that you want to appear in this folder. + ان چیٹس کا انتخاب کریں جو آپ اس فولڈر میں ظاہر کرنا چاہتے۔ استثنات - Exclude chats + چیٹس نکال دیں - Choose chats that you do not want to appear in this folder. + ان چیٹس کا انتخاب کریں جو آپ اس فولڈر میں ظاہر نہیں کرنا چاہتے۔ - Only show unread chats + صرف بغیر پڑھی ہوئی چیٹس ظاہر کرتا ہے - When enabled, only chats with unread messages will be shown in this folder. + فعال کرنے پر، اس فولڈر میں صرف بغیر پڑھے ہوئے میسجز کی حامل چیٹس کو ظاہر کیا جائے گا۔ خاموش کردہ چیٹس شامل کریں بنائیں - Create folder? + فولڈر تخلیق کریں؟ - Do you want to create the chat folder \"%1$s\"? + کیا آپ چیٹ فولڈر \"%1$s\" تخلیق کرنا چاہتے ہیں؟ - Create folder + فولڈر تخلیق کریں - Edit folder + فولڈر میں ترمیم کریں محفوظ کریں - Save changes? + تبدیلیوں کو محفوظ کریں؟ - Do you want to save the changes you\'ve made to this chat folder? + کیا آپ ان تبدیلیوں کو محفوظ کرنا چاہتے ہیں جو آپ نے اس چیٹ فولڈر میں کی ہیں؟ - Save changes + تبدیلیوں کو محفوظ کریں مسترد کیجئے - Delete folder + فولڈر حذف کریں - Delete this chat folder? + اس چیٹ فولڈر کو حذف کریں؟ - Chat types + چیٹ کی اقسام ہو گیا @@ -7445,15 +7445,15 @@ - Cancel download + ڈاؤن لوڈ منسوخ کریں - Downloading: %1$s of %2$s (%3$s%%) + ڈاؤن لوڈ ہو رہا ہے: %2$s کا %1$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + آپ کے بیک اپ کو ڈاؤن لوڈ کرنے کے لیے جگہ ناکافی ہے۔ جاری رکھنے کے لیے %1$s جگہ خالی کریں۔ - Skip download + ڈاؤن لوڈ چھوڑ دیں - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "آپ کا آخری بیک اپ مکمل نہیں ہو سکا۔ یقینی بنائیں کہ آپ کا فون Wi-Fi سے منسلک ہے اور دوبارہ کوشش کرنے کے لیے ابھی بیک اپ کریں پر ٹیپ کریں۔" @@ -7561,13 +7561,13 @@ بیک اپ کی قسم تبدیل کر دی گئی اور سبسکرپشن منسوخ کر دی گئی - Subscription canceled + سبسکرپشن منسوخ کر دی گئی ڈاؤن لوڈ مکمل ہو گئی بیک اپ رات تیار کیا جائے گا۔ - Subscription inactive + سبسکرپشن غیر فعال ہے بیک اپ پلان @@ -7579,9 +7579,9 @@ %1$s کی تجدید کرتا ہے - Expires on %1$s + %1$s کو زائد المیعاد ہوتی ہے - Expired on %1$s + %1$s کو زائد المیعاد ہو گئی تھی اپنی میسج ہسٹری کا بیک اپ کریں تاکہ جب بھی آپ کوئی نیا فون لیں یا Signal کو دوبارہ انسٹال کریں تو اس صورت میں آپ کا ڈیٹا کبھی بھی ضائع نہ ہو۔ @@ -7627,9 +7627,9 @@ براہ کرم اپنی ڈیوائس کی پِن، پاس ورڈ یا پیٹرن درج کریں۔ - Re-enable backups + بیک اپس کو دوبارہ فعال کریں - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + بیک اپس کو آف کر دیا گیا ہے اور آپ کا ڈیٹا Signal کی محفوظ اسٹوریج سروس سے حذف کر دیا گیا ہے۔ diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 7c1697ccd1..9febfe62bf 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -366,7 +366,7 @@ Tin nhắn - Chat types + Loại cuộc trò chuyện Tin nhắn %1$s @@ -3950,9 +3950,9 @@ Mở Camera Chưa có tin nhắn.\nBắt đầu bằng việc nhắn tin cho một người bạn. - No chats to display + Không có cuộc trò chuyện - Folder settings + Cài đặt thư mục @@ -4936,52 +4936,52 @@ Bàn phím Gửi với nút enter - Chat folders + Thư mục trò chuyện - Add a chat folder + Thêm thư mục trò chuyện - Organize your chats into folders and quickly switch between them on your chat list. + Sắp xếp và nhanh chóng chuyển giữa các cuộc trò chuyện trong danh sách. - Folders + Thư mục - Create a folder + Tạo thư mục - All chats + Tất cả cuộc trò chuyện - Suggested folders + Thư mục đề xuất - Unreads + Chưa đọc - Unread messages from all chats + Tin nhắn chưa đọc từ tất cả cuộc trò chuyện - 1:1 chats + Cuộc trò chuyện 1:1 - Only messages from direct chats + Chỉ có tin nhắn từ cuộc trò chuyện trực tiếp Nhóm - Only message from group chats + Chỉ có tin nhắn từ cuộc trò chuyện nhóm Thêm - %1$s folder added. + Đã thêm %1$s thư mục. - Edit folder + Chỉnh sửa thư mục - Delete folder + Xóa thư mục - Add new folder + Thêm thư mục mới - Mute all + Tắt tiếng tất cả - Reorder folders + Sắp xếp thư mục Đánh dấu tất cả đã đọc - %1$d chat types + %1$d loại cuộc trò chuyện @@ -4989,60 +4989,60 @@ - %1$d chats excluded + %1$d cuộc trò chuyện được loại trừ - Create a folder + Tạo thư mục - Folder name (required) + Tên thư mục (bắt buộc) - Included chats + Cuộc trò chuyện được bao gồm - Add chats + Thêm cuộc trò chuyện - Choose chats that you want to appear in this folder. + Chọn cuộc trò chuyện bạn muốn xuất hiện trong thư mục này. Ngoại trừ - Exclude chats + Loại trừ cuộc trò chuyện - Choose chats that you do not want to appear in this folder. + Chọn cuộc trò chuyện bạn không muốn xuất hiện trong thư mục này. - Only show unread chats + Chỉ hiển thị cuộc trò chuyện chưa đọc - When enabled, only chats with unread messages will be shown in this folder. + Khi kích hoạt, chỉ các cuộc trò chuyện có tin nhắn chưa đọc sẽ hiển thị trong thư mục này. Bao gồm cuộc trò chuyện đã tắt tiếng Tạo - Create folder? + Tạo thư mục? - Do you want to create the chat folder \"%1$s\"? + Bạn muốn tạo thư mục trò chuyện \"%1$s\"? - Create folder + Tạo thư mục - Edit folder + Chỉnh sửa thư mục Lưu - Save changes? + Lưu thay đổi? - Do you want to save the changes you\'ve made to this chat folder? + Bạn có muốn lưu các thay đổi cho thư mục trò chuyện này? - Save changes + Lưu thay đổi Bỏ - Delete folder + Xóa thư mục - Delete this chat folder? + Xóa thư mục trò chuyện này? - Chat types + Loại cuộc trò chuyện Xong @@ -7284,15 +7284,15 @@ - Cancel download + Hủy tải xuống - Downloading: %1$s of %2$s (%3$s%%) + Đang tải: %1$s trên tổng số %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Không đủ dung lượng để tải Bản sao lưu của bạn. Để tiếp tục, giải phóng %1$s dung lượng. - Skip download + Bỏ qua không tải - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Quá trình sao lưu gần nhất của bạn không thể hoàn tất. Đảm bảo điện thoại của bạn đã kết nối Wi-Fi và nhấn Sao lưu ngay để thử lại." @@ -7399,13 +7399,13 @@ Loại bản sao lưu đã thay đổi và gói đăng ký đã được hủy - Subscription canceled + Gói đăng ký đã được hủy Tải xuống hoàn tất Bản sao lưu sẽ được tạo trong đêm. - Subscription inactive + Gói đăng ký không hoạt động Gói sao lưu @@ -7417,9 +7417,9 @@ Gia hạn %1$s - Expires on %1$s + Hết hạn vào %1$s - Expired on %1$s + Đã hết hạn vào %1$s Sao lưu lịch sử tin nhắn để không bao giờ mất dữ liệu khi bạn có điện thoại mới hoặc cài lại Signal. @@ -7465,9 +7465,9 @@ Vui lòng nhập mã PIN, mật khẩu hoặc mã khóa dạng vẽ hình của thiết bị. - Re-enable backups + Kích hoạt lại sao lưu - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Đã tắt sao lưu và dữ liệu của bạn đã được xóa khỏi dịch vụ lưu trữ bảo mật của Signal. diff --git a/app/src/main/res/values-yue/strings.xml b/app/src/main/res/values-yue/strings.xml index 11ac9c41a9..d62031d46d 100644 --- a/app/src/main/res/values-yue/strings.xml +++ b/app/src/main/res/values-yue/strings.xml @@ -366,7 +366,7 @@ 訊息 - Chat types + 聊天類型 寫個訊息畀 %1$s @@ -3950,9 +3950,9 @@ 開啟相機 身在獨家村。\n發個訊息畀好友撩下佢傾偈啦。 - No chats to display + 無聊天可以展示 - Folder settings + 資料夾設定 @@ -4936,113 +4936,113 @@ 鍵盤 㩒「Enter」掣傳送 - Chat folders + 聊天資料夾 - Add a chat folder + 加聊天資料夾 - Organize your chats into folders and quickly switch between them on your chat list. + 將你嘅聊天整理成資料夾,然後响聊天清單上面快脆咁轉換。 - Folders + 資料夾 - Create a folder + 建立資料夾 - All chats + 全部聊天 - Suggested folders + 建議嘅資料夾 - Unreads + 未睇 - Unread messages from all chats + 所有聊天入面嘅未睇訊息 - 1:1 chats + 1 對 1 聊天 - Only messages from direct chats + 只係得 1 對 1 聊天嘅訊息 - Only message from group chats + 只係得群組聊天嘅訊息 加入去 - %1$s folder added. + 加咗「 %1$s 」資料夾。 - Edit folder + 編輯資料夾 - Delete folder + 刪除資料夾 - Add new folder + 加新嘅資料夾 - Mute all + 全部靜音 - Reorder folders + 重新排列資料夾 全部剔低話睇咗 - %1$d chat types + %1$d 種聊天類型 - %1$d 聊天 + %1$d 個聊天 - %1$d chats excluded + 剔除咗 %1$d 個聊天 - Create a folder + 建立資料夾 - Folder name (required) + 資料夾名堂(必填) - Included chats + 包含嘅聊天 - Add chats + 加聊天 - Choose chats that you want to appear in this folder. + 揀你想顯示喺呢個資料夾入面嘅聊天。 例外情況 - Exclude chats + 剔除聊天 - Choose chats that you do not want to appear in this folder. + 揀你唔想顯示喺呢個資料夾入面嘅聊天。 - Only show unread chats + 只顯示未睇嘅聊天 - When enabled, only chats with unread messages will be shown in this folder. + 啟用咗之後,呢個資料夾只會顯示有未睇訊息嘅聊天。 - 包埋靜音聊天 + 包埋已靜音嘅聊天 建立 - Create folder? + 係咪要建立資料夾? - Do you want to create the chat folder \"%1$s\"? + 你係咪想建立聊天資料夾「%1$s」呀? - Create folder + 建立資料夾 - Edit folder + 編輯資料夾 儲存 - Save changes? + 係咪要儲存變更? - Do you want to save the changes you\'ve made to this chat folder? + 你係咪想儲存對呢個聊天谷嘅更改? - Save changes + 儲存變更 掉咗佢 - Delete folder + 刪除資料夾 - Delete this chat folder? + 係咪要刪除呢個聊天資料夾呀? - Chat types + 聊天類型 完成 @@ -7284,15 +7284,15 @@ - Cancel download + 取消下載 - Downloading: %1$s of %2$s (%3$s%%) + 下載緊 %1$s / %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + 唔夠空間下載你嘅備份。要繼續,請你搵多 %1$s 空間。 - Skip download + 跳過下載 - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "完成唔到你上次嘅備份。請確保你部手機已經連咗 Wi-Fi,然後㩒「即刻備份」再試。" @@ -7399,13 +7399,13 @@ 備份類型已經改咗,仲取消埋課金計劃 - Subscription canceled + 取消咗課金計劃 下載完成 備份將會通宵建立。 - Subscription inactive + 未有課金計劃 備份計劃 @@ -7417,9 +7417,9 @@ %1$s 續期 - Expires on %1$s + %1$s 到期 - Expired on %1$s + %1$s 到期 備份你嘅訊息紀錄,當你換新手機或者重新安裝 Signal 嗰陣,就唔會冇咗啲資料啦。 @@ -7465,9 +7465,9 @@ 請輸入你嘅裝置 PIN 碼、密碼或者圖案。 - Re-enable backups + 重新啟用備份 - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + 備份已經閂咗,同埋你嘅資料已經喺 Signal 嘅安全儲存服務入面刪除。 diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 15b824a93c..3d457643c4 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -366,7 +366,7 @@ 消息 - Chat types + 聊天类型 消息 %1$s @@ -3950,9 +3950,9 @@ 打开相机 还没有聊天记录。\n开始使用,给朋友发个消息吧。 - No chats to display + 没有可显示的聊天 - Folder settings + 文件夹设置 @@ -4936,52 +4936,52 @@ 键盘 按输入键发送 - Chat folders + 聊天文件夹 - Add a chat folder + 添加聊天文件夹 - Organize your chats into folders and quickly switch between them on your chat list. + 您可以将聊天整理到文件夹中,并在聊天列表中快速切换。 - Folders + 文件夹 - Create a folder + 创建文件夹 - All chats + 所有聊天 - Suggested folders + 建议的文件夹 - Unreads + 未读 - Unread messages from all chats + 所有聊天中的未读消息 - 1:1 chats + 私聊 - Only messages from direct chats + 仅包含私聊消息 - 群组 + 群聊 - Only message from group chats + 仅包含群聊消息 添加 - %1$s folder added. + 已添加%1$s文件夹。 - Edit folder + 编辑文件夹 - Delete folder + 删除文件夹 - Add new folder + 添加新文件夹 - Mute all + 全部静音 - Reorder folders + 文件夹重新排序 全部已读 - %1$d chat types + %1$d 个聊天类型 @@ -4989,60 +4989,60 @@ - %1$d chats excluded + 已排除 %1$d 个聊天 - Create a folder + 创建文件夹 - Folder name (required) + 文件夹名称(必填) - Included chats + 包含的聊天 - Add chats + 添加聊天 - Choose chats that you want to appear in this folder. + 选择您想要显示在此文件夹中的聊天。 例外情况 - Exclude chats + 排除聊天 - Choose chats that you do not want to appear in this folder. + 选择您不想要显示在此文件夹中的聊天。 - Only show unread chats + 仅显示未读聊天 - When enabled, only chats with unread messages will be shown in this folder. + 启用后,只有含未读消息的聊天才会显示在此文件夹中。 包含静音聊天 创建 - Create folder? + 要创建文件夹? - Do you want to create the chat folder \"%1$s\"? + 您是否要创建“%1$s”聊天文件夹? - Create folder + 创建文件夹 - Edit folder + 编辑文件夹 保存 - Save changes? + 要保存更改吗? - Do you want to save the changes you\'ve made to this chat folder? + 您是否要保存对此聊天文件夹所做的更改? - Save changes + 保存更改 放弃 - Delete folder + 删除文件夹 - Delete this chat folder? + 要删除此聊天文件夹吗? - Chat types + 聊天类型 完成 @@ -7284,15 +7284,15 @@ - Cancel download + 取消下载 - Downloading: %1$s of %2$s (%3$s%%) + 正在下载:%1$s/%2$s(%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + 没有足够的空间来下载您的备份。请继续释放 %1$s 的空间。 - Skip download + 跳过下载 - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "您的上次备份无法完成。请确保您的手机已连接到 Wi-Fi,然后点击“立即备份”以重试。" @@ -7399,13 +7399,13 @@ 备份类型已更改并已取消备份套餐 - Subscription canceled + 备份套餐已取消 下载完成 备份将在夜间创建。 - Subscription inactive + 备份套餐未激活 备份套餐 @@ -7417,9 +7417,9 @@ 到 %1$s 续期 - Expires on %1$s + %1$s到期 - Expired on %1$s + %1$s已到期 备份消息记录可以确保您在更换手机或重装 Signal 时不会丢失数据。 @@ -7465,9 +7465,9 @@ 请输入您的设备 Pin 码、密码或解锁图案。 - Re-enable backups + 重新启用备份 - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + 备份已关闭,您的数据已从 Signal 的安全存储服务器中删除。 diff --git a/app/static-ips.gradle.kts b/app/static-ips.gradle.kts index 9acb35e6d2..a9f2dd41b1 100644 --- a/app/static-ips.gradle.kts +++ b/app/static-ips.gradle.kts @@ -1,5 +1,5 @@ rootProject.extra["service_ips"] = """new String[]{"13.248.212.111","76.223.92.165"}""" -rootProject.extra["storage_ips"] = """new String[]{"142.251.40.115"}""" +rootProject.extra["storage_ips"] = """new String[]{"172.253.63.121"}""" rootProject.extra["cdn_ips"] = """new String[]{"18.161.21.122","18.161.21.4","18.161.21.66","18.161.21.70"}""" rootProject.extra["cdn2_ips"] = """new String[]{"104.18.37.148","172.64.150.108"}""" rootProject.extra["cdn3_ips"] = """new String[]{"104.18.37.148","172.64.150.108"}""" From 83db21f2aac83b6937f30ed091241f99ce8b67f5 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 22 Oct 2024 10:32:40 -0400 Subject: [PATCH 44/51] Update baseline profile. --- app/src/main/baseline-prof.txt | 380 +++++++++++++++++---------------- 1 file changed, 194 insertions(+), 186 deletions(-) diff --git a/app/src/main/baseline-prof.txt b/app/src/main/baseline-prof.txt index ef135ad576..be5258038f 100644 --- a/app/src/main/baseline-prof.txt +++ b/app/src/main/baseline-prof.txt @@ -1,5 +1,6 @@ HPLandroidx/appcompat/view/menu/ActionMenuItemView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V HPLandroidx/appcompat/view/menu/ActionMenuItemView;->getItemData()Landroidx/appcompat/view/menu/MenuItemImpl; +HPLandroidx/appcompat/view/menu/ActionMenuItemView;->hasText()Z HPLandroidx/appcompat/view/menu/ActionMenuItemView;->initialize(Landroidx/appcompat/view/menu/MenuItemImpl;I)V HPLandroidx/appcompat/view/menu/ActionMenuItemView;->onMeasure(II)V HPLandroidx/appcompat/view/menu/ActionMenuItemView;->setIcon(Landroid/graphics/drawable/Drawable;)V @@ -14,6 +15,7 @@ HPLandroidx/appcompat/view/menu/MenuItemImpl;->getActionView()Landroid/view/View HPLandroidx/appcompat/view/menu/MenuItemImpl;->getIcon()Landroid/graphics/drawable/Drawable; HPLandroidx/appcompat/view/menu/MenuItemImpl;->getTitleCondensed()Ljava/lang/CharSequence; HPLandroidx/appcompat/view/menu/MenuItemImpl;->getTitleForItemView(Landroidx/appcompat/view/menu/MenuView$ItemView;)Ljava/lang/CharSequence; +HPLandroidx/appcompat/view/menu/MenuItemImpl;->setIconTintList(Landroid/content/res/ColorStateList;)Landroid/view/MenuItem; HPLandroidx/appcompat/widget/ActionMenuPresenter;->bindItemView(Landroidx/appcompat/view/menu/MenuItemImpl;Landroidx/appcompat/view/menu/MenuView$ItemView;)V HPLandroidx/appcompat/widget/ActionMenuPresenter;->filterLeftoverView(Landroid/view/ViewGroup;I)Z HPLandroidx/appcompat/widget/ActionMenuPresenter;->getItemView(Landroidx/appcompat/view/menu/MenuItemImpl;Landroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View; @@ -24,8 +26,6 @@ HPLandroidx/appcompat/widget/LinearLayoutCompat;->measureVertical(II)V HPLandroidx/appcompat/widget/SearchView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V HPLandroidx/compose/ui/node/LayoutNode;->detach$ui_release()V HPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->hasResolvedTargets(II)Z -HPLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->addHorizontalWrapMaxVariable(Landroidx/constraintlayout/core/widgets/ConstraintAnchor;)V -HPLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->addHorizontalWrapMinVariable(Landroidx/constraintlayout/core/widgets/ConstraintAnchor;)V HPLandroidx/constraintlayout/core/widgets/Guideline;->addToSolver(Landroidx/constraintlayout/core/LinearSystem;Z)V HPLandroidx/constraintlayout/core/widgets/Guideline;->getAnchor(Landroidx/constraintlayout/core/widgets/ConstraintAnchor$Type;)Landroidx/constraintlayout/core/widgets/ConstraintAnchor; HPLandroidx/constraintlayout/core/widgets/Guideline;->updateFromSolver(Landroidx/constraintlayout/core/LinearSystem;Z)V @@ -47,7 +47,7 @@ HPLandroidx/fragment/app/FragmentStateManager;->destroy()V HPLandroidx/fragment/app/FragmentStateManager;->saveState()Landroid/os/Bundle; HPLandroidx/media3/ui/PlayerView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V HPLandroidx/recyclerview/widget/AdapterHelper;->applyPendingUpdatesToPosition(I)I -HPLandroidx/recyclerview/widget/BatchingListUpdateCallback;->onChanged(IILjava/lang/Object;)V +HPLandroidx/recyclerview/widget/AsyncListDiffer$1$1;->areItemsTheSame(II)Z HPLandroidx/recyclerview/widget/ConcatAdapter;->findRelativeAdapterPositionIn(Landroidx/recyclerview/widget/RecyclerView$Adapter;Landroidx/recyclerview/widget/RecyclerView$ViewHolder;I)I HPLandroidx/recyclerview/widget/ConcatAdapter;->getAdapters()Ljava/util/List; HPLandroidx/recyclerview/widget/ConcatAdapter;->getItemCount()I @@ -59,17 +59,15 @@ HPLandroidx/recyclerview/widget/ConcatAdapterController;->getLocalAdapterPositio HPLandroidx/recyclerview/widget/ConcatAdapterController;->getTotalCount()I HPLandroidx/recyclerview/widget/ConcatAdapterController;->onBindViewHolder(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;I)V HPLandroidx/recyclerview/widget/ConcatAdapterController;->releaseWrapperAndLocalPosition(Landroidx/recyclerview/widget/ConcatAdapterController$WrapperAndLocalPosition;)V +HPLandroidx/recyclerview/widget/DiffUtil;->forward(Landroidx/recyclerview/widget/DiffUtil$Range;Landroidx/recyclerview/widget/DiffUtil$Callback;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;I)Landroidx/recyclerview/widget/DiffUtil$Snake; HPLandroidx/recyclerview/widget/ListAdapter;->getCurrentList()Ljava/util/List; HPLandroidx/recyclerview/widget/NestedAdapterWrapper;->getCachedItemCount()I HPLandroidx/recyclerview/widget/NestedAdapterWrapper;->getItemViewType(I)I HPLandroidx/recyclerview/widget/RecyclerView$ItemDecoration;->onDraw(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$State;)V HPLandroidx/recyclerview/widget/RecyclerView$ViewHolder;->getBindingAdapterPosition()I -HPLandroidx/recyclerview/widget/RecyclerView;->animateChange(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo;Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo;ZZ)V HPLandroidx/recyclerview/widget/RecyclerView;->getAdapterPositionInRecyclerView(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)I HPLandroidx/recyclerview/widget/RecyclerView;->getChildViewHolder(Landroid/view/View;)Landroidx/recyclerview/widget/RecyclerView$ViewHolder; -HPLandroidx/recyclerview/widget/RecyclerView;->viewRangeUpdate(IILjava/lang/Object;)V HPLandroidx/recyclerview/widget/ViewInfoStore;->addToPreLayout(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo;)V -HPLandroidx/recyclerview/widget/ViewInfoStore;->isDisappearing(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Z HPLandroidx/recyclerview/widget/ViewInfoStore;->popFromLayoutStep(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;I)Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo; HPLandroidx/recyclerview/widget/ViewTypeStorage$IsolatedViewTypeStorage$WrapperViewTypeLookup;->localToGlobal(I)I HPLandroidx/savedstate/SavedStateRegistry;->performSave(Landroid/os/Bundle;)V @@ -81,7 +79,6 @@ HPLio/reactivex/rxjava3/internal/operators/observable/ObservableCombineLatest$Co HPLio/reactivex/rxjava3/internal/operators/observable/ObservableCombineLatest$LatestCoordinator;->drain()V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableCombineLatest$LatestCoordinator;->innerNext(ILjava/lang/Object;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableDoOnEach$DoOnEachObserver;->onNext(Ljava/lang/Object;)V -HPLio/reactivex/rxjava3/internal/operators/observable/ObservableFilter$FilterObserver;->onNext(Ljava/lang/Object;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle$FlatMapSingleObserver;->innerSuccess(Lio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle$FlatMapSingleObserver$InnerObserver;Ljava/lang/Object;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapSingle$FlatMapSingleObserver;->onNext(Ljava/lang/Object;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableMap$MapObserver;->onNext(Ljava/lang/Object;)V @@ -94,6 +91,7 @@ HPLio/reactivex/rxjava3/internal/operators/observable/ObservableReplay$ReplayObs HPLio/reactivex/rxjava3/internal/operators/observable/ObservableReplay$ReplaySource;->subscribe(Lio/reactivex/rxjava3/core/Observer;)V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableSwitchMap$SwitchMapObserver;->drain()V HPLio/reactivex/rxjava3/internal/operators/observable/ObservableSwitchMap$SwitchMapObserver;->onNext(Ljava/lang/Object;)V +HPLio/reactivex/rxjava3/internal/schedulers/ScheduledRunnable;->dispose()V HPLio/reactivex/rxjava3/kotlin/SubscribersKt;->subscribeBy(Lio/reactivex/rxjava3/core/Observable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)Lio/reactivex/rxjava3/disposables/Disposable; HPLj$/time/Instant;->atZone(Lj$/time/ZoneId;)Lj$/time/ZonedDateTime; HPLj$/time/LocalDateTime;->U()Lj$/time/LocalDate; @@ -101,10 +99,9 @@ HPLj$/time/ZonedDateTime;->(Lj$/time/LocalDateTime;Lj$/time/ZoneId;Lj$/tim HPLj$/time/ZonedDateTime;->M(JILj$/time/ZoneId;)Lj$/time/ZonedDateTime; HPLj$/time/ZonedDateTime;->O(Lj$/time/Instant;Lj$/time/ZoneId;)Lj$/time/ZonedDateTime; HPLj$/time/ZonedDateTime;->toLocalDate()Lj$/time/LocalDate; -HPLj$/util/Optional;->map(Lj$/util/function/Function;)Lj$/util/Optional; -HPLkotlin/Pair;->(Ljava/lang/Object;Ljava/lang/Object;)V -HPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([B[BIII)[B -HPLkotlin/jvm/internal/Lambda;->(I)V +HPLj$/util/S;->r(Lj$/util/function/Consumer;)Z +HPLj$/util/concurrent/ConcurrentHashMap;->containsKey(Ljava/lang/Object;)Z +HPLkotlin/ranges/IntProgression;->(III)V HPLkotlin/sequences/SequencesKt;->filterIsInstance(Lkotlin/sequences/Sequence;Ljava/lang/Class;)Lkotlin/sequences/Sequence; HPLkotlin/sequences/SequencesKt___SequencesJvmKt$filterIsInstance$1;->(Ljava/lang/Class;)V HPLkotlin/sequences/SequencesKt___SequencesJvmKt$filterIsInstance$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean; @@ -114,38 +111,24 @@ HPLkotlinx/coroutines/channels/BufferedChannel;->cancelSuspendedReceiveRequests( HPLkotlinx/coroutines/channels/BufferedChannel;->receiveCatchingOnNoWaiterSuspend-GKJJFZk(Lkotlinx/coroutines/channels/ChannelSegment;IJLkotlin/coroutines/Continuation;)Ljava/lang/Object; HPLkotlinx/coroutines/flow/internal/CombineKt$combineInternal$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; HPLkotlinx/coroutines/internal/Segment;->onSlotCleaned()V -HPLorg/signal/core/util/Bitmask;->read(JII)J -HPLorg/signal/core/util/SelectBuilderPart1;->(Landroidx/sqlite/db/SupportSQLiteDatabase;[Ljava/lang/String;)V +HPLorg/signal/core/util/SqlUtil;->buildSingleCollectionQuery(Ljava/lang/String;Ljava/util/Collection;Ljava/lang/String;Lorg/signal/core/util/SqlUtil$CollectionOperator;)Lorg/signal/core/util/SqlUtil$Query; HPLorg/signal/core/util/ToolbarExtensionsKt;->setActionItemTint(Landroidx/appcompat/widget/Toolbar;I)V HPLorg/signal/core/util/concurrent/DeadlockDetector;->hasPotentialLock([Ljava/lang/StackTraceElement;)Z HPLorg/signal/core/util/concurrent/SettableFuture;->(Ljava/lang/Object;)V -HPLorg/signal/core/util/concurrent/SignalExecutors$$ExternalSyntheticLambda0;->rejectedExecution(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V -HPLorg/signal/core/util/concurrent/SignalExecutors;->$r8$lambda$PuKeoHyTOgRHxCNNBi9u3dUls_w(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V -HPLorg/signal/core/util/concurrent/SignalExecutors;->lambda$newCachedBoundedExecutor$1(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V -HPLorg/signal/libsignal/protocol/ecc/ECPublicKey;->equals(Ljava/lang/Object;)Z HPLorg/signal/paging/FixedSizePagingController;->lambda$onDataItemChanged$2(Ljava/lang/Object;)V -HPLorg/thoughtcrime/securesms/attachments/DatabaseAttachment;->hashCode()I -HPLorg/thoughtcrime/securesms/attachments/PointerAttachment$Companion;->forPointers(Lj$/util/Optional;)Ljava/util/List; -HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$2;->invoke(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGift;)Ljava/lang/Boolean; -HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$4;->(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)V HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$4;->invoke(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGift;)Ljava/lang/Boolean; -HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$notAnimated$1;->(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)V -HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$notAnimated$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$notAnimated$1;->invoke(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGift;)Ljava/lang/Boolean; -HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->access$getAnimationState$p(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)Ljava/util/Map; HPLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->onDrawOver(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$State;)V HPLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->applyCornersForSizeClass2()V HPLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->getCells()[Lorg/thoughtcrime/securesms/components/ThumbnailView; HPLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->setCellBackgroundColor(I)V HPLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->setRadii(IIII)V -HPLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->setRelativeRadii(Lorg/thoughtcrime/securesms/components/ThumbnailView;IIII)V HPLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->setSlide(Lcom/bumptech/glide/RequestManager;Lorg/thoughtcrime/securesms/mms/Slide;IZ)V HPLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->setSlides(Lcom/bumptech/glide/RequestManager;Ljava/util/List;Z)V HPLorg/thoughtcrime/securesms/components/AvatarImageView;->disableQuickContact()V HPLorg/thoughtcrime/securesms/components/ComposeText;->onDraw(Landroid/graphics/Canvas;)V -HPLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentDate(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Ljava/util/Locale;Lorg/thoughtcrime/securesms/conversation/ConversationItemDisplayMode;)V HPLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentDeliveryStatus(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)V HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnail;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnail;->setCancelTransferClickListener(Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;)V @@ -164,6 +147,7 @@ HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnail;->setThumbnai HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnail;->showThumbnailView()V HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState;->(ZZLorg/thoughtcrime/securesms/mms/SlideClickListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlideClickListener;Landroid/view/View$OnLongClickListener;IIIIII)V HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState;->applyState(Lorg/thoughtcrime/securesms/util/views/Stub;)V +HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState;->copy$default(Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState;ZZLorg/thoughtcrime/securesms/mms/SlideClickListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlideClickListener;Landroid/view/View$OnLongClickListener;IIIIIIILjava/lang/Object;)Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState; HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState;->copy(ZZLorg/thoughtcrime/securesms/mms/SlideClickListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlideClickListener;Landroid/view/View$OnLongClickListener;IIIIII)Lorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$AlbumViewState; HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$ThumbnailViewState;->(FZZLorg/thoughtcrime/securesms/mms/SlideClickListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;Lorg/thoughtcrime/securesms/mms/SlideClickListener;Landroid/view/View$OnLongClickListener;IIIIIIIII)V HPLorg/thoughtcrime/securesms/components/ConversationItemThumbnailState$ThumbnailViewState;->applyState(Lorg/thoughtcrime/securesms/util/views/Stub;)V @@ -179,9 +163,7 @@ HPLorg/thoughtcrime/securesms/components/CornerMask;->mask(Landroid/graphics/Can HPLorg/thoughtcrime/securesms/components/Outliner;->draw(Landroid/graphics/Canvas;IIII)V HPLorg/thoughtcrime/securesms/components/QuoteView;->applyColorTheme()V HPLorg/thoughtcrime/securesms/components/QuoteView;->dismiss()V -HPLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->isListCommitted()Z HPLorg/thoughtcrime/securesms/components/ThumbnailView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HPLorg/thoughtcrime/securesms/components/ThumbnailView;->dispatchDraw(Landroid/graphics/Canvas;)V HPLorg/thoughtcrime/securesms/components/ThumbnailView;->onMeasure(II)V HPLorg/thoughtcrime/securesms/components/ThumbnailView;->setBounds(IIII)V HPLorg/thoughtcrime/securesms/components/ThumbnailView;->setCancelTransferClickListener(Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;)V @@ -208,12 +190,10 @@ HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView$se HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->deriveMode(Lorg/thoughtcrime/securesms/components/transfercontrols/TransferControlViewState;)Lorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView$Mode; HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->isUpdateToExistingSet(Lorg/thoughtcrime/securesms/components/transfercontrols/TransferControlViewState;Ljava/util/List;)Z -HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setCancelClickListener(Landroid/view/View$OnClickListener;)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setClickable(Z)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setFocusable(Z)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setShowSecondaryText(Z)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setSlides(Ljava/util/List;)V -HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setTransferClickListener(Landroid/view/View$OnClickListener;)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setVisible(Z)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->updateState(Lkotlin/jvm/functions/Function1;)V HPLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlViewState;->(ZZZLjava/util/List;Landroid/view/View$OnClickListener;Landroid/view/View$OnClickListener;Landroid/view/View$OnClickListener;ZLjava/util/Map;Ljava/util/Map;ZZ)V @@ -262,7 +242,6 @@ HPLorg/thoughtcrime/securesms/conversation/ConversationItemBodyBubble;->setQuote HPLorg/thoughtcrime/securesms/conversation/ConversationItemBodyBubble;->setVideoPlayerProjection(Lorg/thoughtcrime/securesms/util/Projection;)V HPLorg/thoughtcrime/securesms/conversation/ConversationMessage;->getConversationTimestamp()J HPLorg/thoughtcrime/securesms/conversation/ConversationMessage;->getMessageRecord()Lorg/thoughtcrime/securesms/database/model/MessageRecord; -HPLorg/thoughtcrime/securesms/conversation/ConversationMessage;->hashCode()I HPLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu$Provider;->onCreateMenu(Landroid/view/Menu;Landroid/view/MenuInflater;)V HPLorg/thoughtcrime/securesms/conversation/MarkReadHelper;->getLatestTimestamp(Lorg/thoughtcrime/securesms/conversation/ConversationAdapterBridge;Landroidx/recyclerview/widget/LinearLayoutManager;)Lj$/util/Optional; HPLorg/thoughtcrime/securesms/conversation/colors/ChatColors;->asSingleColor()I @@ -278,7 +257,6 @@ HPLorg/thoughtcrime/securesms/conversation/mutiselect/ConversationItemAnimator;- HPLorg/thoughtcrime/securesms/conversation/mutiselect/ConversationItemAnimator;->onAnimationFinished(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)V HPLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->cleanPulseAnimators()V HPLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->findAdapterBridge(Landroidx/recyclerview/widget/RecyclerView;)Lorg/thoughtcrime/securesms/conversation/ConversationAdapterBridge; -HPLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->getDifferenceForPart(Ljava/util/Set;Lorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectPart;)Lorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration$Difference; HPLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->getItemOffsets(Landroid/graphics/Rect;Landroid/view/View;Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$State;)V HPLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->hasRunningPulseRequestAnimators()Z HPLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->invalidateIfEnterExitAnimatorsAreRunning(Landroidx/recyclerview/widget/RecyclerView;)V @@ -287,11 +265,9 @@ HPLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration; HPLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->resolveMultiselectable(Landroidx/recyclerview/widget/RecyclerView;Landroid/view/View;)Lorg/thoughtcrime/securesms/conversation/mutiselect/Multiselectable; HPLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->updateChildOffsets(Landroidx/recyclerview/widget/RecyclerView;Landroid/view/View;)V HPLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->updateMultiselectPartAnimator(Ljava/util/Set;Lorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectPart;)V -HPLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectPart$Attachments;->hashCode()I HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->bindPayloadsIfAvailable()Z HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getBindable()Lorg/thoughtcrime/securesms/BindableConversationItem; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getColorizerProjections(Landroid/view/ViewGroup;)Lorg/thoughtcrime/securesms/util/ProjectionList; -HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getNextMessage()Lj$/util/Optional; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getPreviousMessage()Lj$/util/Optional; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$IncomingMediaViewHolder;->bind(Lorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;)V HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ThreadHeaderViewHolder;->bind(Lorg/thoughtcrime/securesms/conversation/v2/data/ThreadHeader;)V @@ -301,10 +277,8 @@ HPLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2;->getSelecte HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$ScrollListener;->onScrolled(Landroidx/recyclerview/widget/RecyclerView;II)V HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$ThreadHeaderMarginDecoration;->getItemOffsets(Landroid/graphics/Rect;Landroid/view/View;Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$State;)V HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$2;->get()Ljava/lang/Object; -HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$6;->invoke()Ljava/lang/Boolean; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$7;->invoke()Ljava/lang/Boolean; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$8;->invoke()Ljava/lang/Boolean; -HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$9;->invoke(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Ljava/lang/Boolean; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->()V HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->doAfterFirstRender()V HPLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;->getBinding()Lorg/thoughtcrime/securesms/databinding/V2ConversationFragmentBinding; @@ -320,7 +294,6 @@ HPLorg/thoughtcrime/securesms/conversation/v2/ConversationItemDecorations;->time HPLorg/thoughtcrime/securesms/conversation/v2/ConversationItemDecorations;->toEpochDay(Lorg/thoughtcrime/securesms/conversation/v2/data/ConversationMessageElement;)J HPLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getIdentityRecords$lambda$12(Lorg/thoughtcrime/securesms/database/model/GroupRecord;Lorg/thoughtcrime/securesms/recipients/Recipient;)Lorg/thoughtcrime/securesms/conversation/v2/IdentityRecordsState; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getIdentityRecords(Lorg/thoughtcrime/securesms/recipients/Recipient;Lorg/thoughtcrime/securesms/database/model/GroupRecord;)Lio/reactivex/rxjava3/core/Single; -HPLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getRequestReviewState$lambda$16(Lorg/thoughtcrime/securesms/database/model/GroupRecord;Lorg/thoughtcrime/securesms/messagerequests/MessageRequestState;Lorg/thoughtcrime/securesms/recipients/Recipient;)Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getRequestReviewState(Lorg/thoughtcrime/securesms/recipients/Recipient;Lorg/thoughtcrime/securesms/database/model/GroupRecord;Lorg/thoughtcrime/securesms/messagerequests/MessageRequestState;)Lio/reactivex/rxjava3/core/Single; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$10;->apply(Lorg/thoughtcrime/securesms/recipients/Recipient;Lj$/util/Optional;)Lorg/thoughtcrime/securesms/conversation/v2/InputReadyState; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$11;->accept(Lorg/thoughtcrime/securesms/conversation/v2/InputReadyState;)V @@ -328,7 +301,6 @@ HPLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$13;->apply(L HPLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$14;->apply(Lkotlin/Pair;)Lio/reactivex/rxjava3/core/SingleSource; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$15;->invoke(Lorg/thoughtcrime/securesms/conversation/v2/IdentityRecordsState;)V HPLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$canShowAsBubble$1;->apply(Lorg/thoughtcrime/securesms/recipients/Recipient;)Ljava/lang/Boolean; -HPLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$getRequestReviewState$1;->apply(Lorg/thoughtcrime/securesms/conversation/v2/InputReadyState;)Lio/reactivex/rxjava3/core/SingleSource; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$special$$inlined$mapNotNull$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; HPLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel;->(JILorg/thoughtcrime/securesms/conversation/colors/ChatColors;Lorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;Lorg/thoughtcrime/securesms/conversation/v2/ConversationRecipientRepository;Lorg/thoughtcrime/securesms/messagerequests/MessageRequestRepository;Lorg/thoughtcrime/securesms/conversation/ScheduledMessagesRepository;)V HPLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel;->getChatColorsSnapshot()Lorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable$ChatColorsData; @@ -336,24 +308,20 @@ HPLorg/thoughtcrime/securesms/conversation/v2/IdentityRecordsState;->(Lorg HPLorg/thoughtcrime/securesms/conversation/v2/IdentityRecordsState;->equals(Ljava/lang/Object;)Z HPLorg/thoughtcrime/securesms/conversation/v2/InputReadyState;->(Lorg/thoughtcrime/securesms/recipients/Recipient;Lorg/thoughtcrime/securesms/messagerequests/MessageRequestState;Lorg/thoughtcrime/securesms/database/model/GroupRecord;ZZZ)V HPLorg/thoughtcrime/securesms/conversation/v2/InputReadyState;->equals(Ljava/lang/Object;)Z -HPLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->equals(Ljava/lang/Object;)Z HPLorg/thoughtcrime/securesms/conversation/v2/data/ConversationDataSource;->load(IIILorg/signal/paging/PagedDataSource$CancellationSignal;)Ljava/util/List; HPLorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;->areItemsTheSame(Lorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;)Z HPLorg/thoughtcrime/securesms/conversation/v2/data/IncomingMedia;->getConversationMessage()Lorg/thoughtcrime/securesms/conversation/ConversationMessage; HPLorg/thoughtcrime/securesms/conversation/v2/data/IncomingTextOnly;->getConversationMessage()Lorg/thoughtcrime/securesms/conversation/ConversationMessage; HPLorg/thoughtcrime/securesms/conversation/v2/data/MessageDataFetcher;->fetch(Ljava/util/List;)Lorg/thoughtcrime/securesms/conversation/v2/data/MessageDataFetcher$ExtraMessageData; HPLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable$ChatColorsItemDecoration$onDraw$$inlined$filterIsInstance$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean; -HPLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable$ChatColorsItemDecoration$onDraw$1;->(Landroidx/recyclerview/widget/RecyclerView;)V HPLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable$ChatColorsItemDecoration$onDraw$1;->invoke(Landroid/view/View;)Landroidx/recyclerview/widget/RecyclerView$ViewHolder; HPLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable$ChatColorsItemDecoration$onDraw$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HPLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable$ChatColorsItemDecoration;->onDraw(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$State;)V HPLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->draw(Landroid/graphics/Canvas;)V HPLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->getChatColors()Lorg/thoughtcrime/securesms/conversation/colors/ChatColors; HPLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->getOutline(Landroid/graphics/Outline;)V -HPLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->isSolidColor()Z HPLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->setCorners([F)V HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemLayout;->onMeasure(II)V -HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->isEndOfMessageCluster(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->setMessageShape(Lorg/thoughtcrime/securesms/database/model/MessageRecord;ZI)Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape$MessageShape; HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder$footerDrawable$1;->invoke()Lorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable$ChatColorsData; HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->(Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyBindingBridge;Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationContext;Lorg/thoughtcrime/securesms/conversation/v2/items/V2FooterPositionDelegate;)V @@ -361,15 +329,12 @@ HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyVi HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->getColorizerProjections(Landroid/view/ViewGroup;)Lorg/thoughtcrime/securesms/util/ProjectionList; HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->invalidateBodyBubbleDrawable(Landroid/view/ViewGroup;)V HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->invalidateChatColorsDrawable(Landroid/view/ViewGroup;)V -HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->invalidateFooterDrawable(Landroid/view/ViewGroup;)V HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->linkifyMessageBody(Landroid/text/Spannable;)V HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->presentBody()V HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->presentSender()V -HPLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getBodyTextColor(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;)I HPLorg/thoughtcrime/securesms/conversation/v2/items/V2FooterPositionDelegate;->onPostMeasure()Z HPLorg/thoughtcrime/securesms/crypto/storage/SignalBaseIdentityKeyStore;->getIdentityRecords(Ljava/util/List;)Lorg/thoughtcrime/securesms/database/identity/IdentityRecordList; HPLorg/thoughtcrime/securesms/database/DatabaseObserver;->lambda$unregisterObserver$20(Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V -HPLorg/thoughtcrime/securesms/database/DatabaseTable;->getWritableDatabase()Lorg/thoughtcrime/securesms/database/SQLiteDatabase; HPLorg/thoughtcrime/securesms/database/GroupTable;->getGroupsContainingMember(Lorg/thoughtcrime/securesms/recipients/RecipientId;ZZ)Ljava/util/List; HPLorg/thoughtcrime/securesms/database/identity/IdentityRecordList;->(Ljava/util/Collection;)V HPLorg/thoughtcrime/securesms/database/model/DisplayRecord;->isChangeNumber()Z @@ -406,20 +371,16 @@ HPLorg/thoughtcrime/securesms/database/model/MessageRecord;->isSessionSwitchover HPLorg/thoughtcrime/securesms/database/model/MessageRecord;->isSmsExportType()Z HPLorg/thoughtcrime/securesms/database/model/MessageRecord;->isThreadMergeEventType()Z HPLorg/thoughtcrime/securesms/database/model/MessageRecord;->isUpdate()Z -HPLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getLinkPreviews()Ljava/util/List; HPLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getQuote()Lorg/thoughtcrime/securesms/database/model/Quote; HPLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getUpdateDisplayBody(Landroid/content/Context;Lj$/util/function/Consumer;)Lorg/thoughtcrime/securesms/database/model/UpdateDescription; HPLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->isMediaPending()Z HPLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->withAttachments(Ljava/util/List;)Lorg/thoughtcrime/securesms/database/model/MmsMessageRecord; HPLorg/thoughtcrime/securesms/fonts/SignalSymbols$CustomTypefaceSpan;->update(Landroid/text/TextPaint;)V HPLorg/thoughtcrime/securesms/fonts/SignalSymbols;->getSpannedString(Landroid/content/Context;Lorg/thoughtcrime/securesms/fonts/SignalSymbols$Weight;Lorg/thoughtcrime/securesms/fonts/SignalSymbols$Glyph;)Ljava/lang/CharSequence; -HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration$onDraw$1;->(Landroidx/recyclerview/widget/RecyclerView;)V HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration$onDraw$1;->invoke(Landroid/view/View;)Landroidx/recyclerview/widget/RecyclerView$ViewHolder; HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration$onDraw$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration;->onDraw(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$State;)V HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration;->setParentRecyclerTranslationY(Landroidx/recyclerview/widget/RecyclerView;)V -HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z -HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$RangeComparator;->compare(Ljava/lang/Integer;Ljava/lang/Integer;)I HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController;->getPlaybackSet(Ljava/util/Set;II)Ljava/util/Set; HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController;->performPlaybackUpdate(Landroidx/recyclerview/widget/RecyclerView;)V HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionPlayerHolder;->injectVideoViews(Landroid/content/Context;Landroidx/lifecycle/Lifecycle;Landroid/view/ViewGroup;I)Ljava/util/List; @@ -428,29 +389,27 @@ HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionRecycler;->stopAndRelea HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionRecycler;->update(Landroidx/recyclerview/widget/RecyclerView;Ljava/util/List;Ljava/util/Set;)V HPLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ProjectionRecycler;->updateVideoDisplayPositionAndSize(Landroidx/recyclerview/widget/RecyclerView;Lorg/thoughtcrime/securesms/giph/mp4/GiphyMp4Playable;)V HPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->insertJobs(Ljava/util/List;)V -HPLorg/thoughtcrime/securesms/keyvalue/SettingsValues;->getMessageFontSize()I -HPLorg/thoughtcrime/securesms/keyvalue/WallpaperValues;->hasWallpaperSet()Z HPLorg/thoughtcrime/securesms/messagerequests/MessageRequestRepository;->getMessageRequestState(Lorg/thoughtcrime/securesms/recipients/Recipient;J)Lorg/thoughtcrime/securesms/messagerequests/MessageRequestState; -HPLorg/thoughtcrime/securesms/mms/ImageSlide;->isBorderless()Z HPLorg/thoughtcrime/securesms/mms/Slide;->equals(Ljava/lang/Object;)Z HPLorg/thoughtcrime/securesms/mms/Slide;->getTransferState()I HPLorg/thoughtcrime/securesms/mms/Slide;->hashCode()I -HPLorg/thoughtcrime/securesms/mms/Slide;->isInProgress()Z HPLorg/thoughtcrime/securesms/mms/Slide;->isPendingDownload()Z HPLorg/thoughtcrime/securesms/mms/SlideDeck;->getTextSlide()Lorg/thoughtcrime/securesms/mms/TextSlide; HPLorg/thoughtcrime/securesms/mms/SlideDeck;->getThumbnailSlides()Ljava/util/List; +HPLorg/thoughtcrime/securesms/profiles/ProfileName;->equals(Ljava/lang/Object;)Z HPLorg/thoughtcrime/securesms/reactions/ReactionsConversationView;->clear()V +HPLorg/thoughtcrime/securesms/recipients/Recipient$Companion;->live(Lorg/thoughtcrime/securesms/recipients/RecipientId;)Lorg/thoughtcrime/securesms/recipients/LiveRecipient; HPLorg/thoughtcrime/securesms/recipients/Recipient$combinedAboutAndEmoji$2;->invoke()Ljava/lang/String; HPLorg/thoughtcrime/securesms/recipients/Recipient;->getHasWallpaper()Z +HPLorg/thoughtcrime/securesms/recipients/Recipient;->hasSameContent(Lorg/thoughtcrime/securesms/recipients/Recipient;)Z +HPLorg/thoughtcrime/securesms/recipients/RecipientId;->equals(Ljava/lang/Object;)Z HPLorg/thoughtcrime/securesms/recipients/RecipientUtil;->isMessageRequestAccepted(Landroid/content/Context;J)Z HPLorg/thoughtcrime/securesms/util/BubbleUtil;->canBubble(Landroid/content/Context;Lorg/thoughtcrime/securesms/recipients/Recipient;Ljava/lang/Long;)Z -HPLorg/thoughtcrime/securesms/util/DateUtils;->getDatelessRelativeTimeSpanFormattedDate(Landroid/content/Context;Ljava/util/Locale;J)Lorg/thoughtcrime/securesms/conversation/v2/computed/FormattedDate; HPLorg/thoughtcrime/securesms/util/DateUtils;->getSameDayDateFormat()Ljava/text/SimpleDateFormat; HPLorg/thoughtcrime/securesms/util/DateUtils;->isSameDay(JJ)Z HPLorg/thoughtcrime/securesms/util/JavaTimeExtensionsKt;->toLocalDate$default(JLj$/time/ZoneId;ILjava/lang/Object;)Lj$/time/LocalDate; HPLorg/thoughtcrime/securesms/util/JavaTimeExtensionsKt;->toLocalDate(JLj$/time/ZoneId;)Lj$/time/LocalDate; HPLorg/thoughtcrime/securesms/util/Material3OnScrollHelper;->updateActiveState$lambda$7$lambda$6(Lorg/thoughtcrime/securesms/util/Material3OnScrollHelper;IIIILandroid/animation/ValueAnimator;)V -HPLorg/thoughtcrime/securesms/util/MediaUtil;->isInstantVideoSupported(Lorg/thoughtcrime/securesms/mms/Slide;)Z HPLorg/thoughtcrime/securesms/util/MediaUtil;->isLongTextType(Ljava/lang/String;)Z HPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->hasAudio(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z HPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->hasDocument(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z @@ -469,14 +428,11 @@ HPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->isViewOnceMessage(Lorg/th HPLorg/thoughtcrime/securesms/util/Projection$Corners;->(FFFF)V HPLorg/thoughtcrime/securesms/util/Projection$Corners;->toRadii()[F HPLorg/thoughtcrime/securesms/util/ProjectionList;->close()V -HPLorg/thoughtcrime/securesms/util/ProjectionList;->getSize()I -HPLorg/thoughtcrime/securesms/util/TextSecurePreferences;->getMessageBodyTextSize(Landroid/content/Context;)I HPLorg/thoughtcrime/securesms/util/ViewExtensionsKt;->drawAsTopItemDecoration(Landroid/view/View;Landroid/graphics/Canvas;Landroid/view/View;Landroid/view/View;I)V HPLorg/thoughtcrime/securesms/util/ViewExtensionsKt;->layoutIn(Landroid/view/View;Landroid/view/View;)V HPLorg/thoughtcrime/securesms/util/ViewUtil;->isLtr(Landroid/content/Context;)Z HPLorg/thoughtcrime/securesms/util/ViewUtil;->isLtr(Landroid/view/View;)Z HPLorg/thoughtcrime/securesms/util/ViewUtil;->isRtl(Landroid/content/Context;)Z -HPLorg/thoughtcrime/securesms/util/ViewUtil;->isRtl(Landroid/view/View;)Z HPLorg/thoughtcrime/securesms/util/ViewUtil;->setPaddingEnd(Landroid/view/View;I)V HPLorg/thoughtcrime/securesms/util/ViewUtil;->setPaddingStart(Landroid/view/View;I)V HPLorg/thoughtcrime/securesms/util/ViewUtil;->setTopMargin(Landroid/view/View;IZ)V @@ -486,7 +442,6 @@ HPLorg/thoughtcrime/securesms/util/adapter/mapping/PagingMappingAdapter;->getIte HPLorg/thoughtcrime/securesms/util/adapter/mapping/PagingMappingAdapter;->getItemViewType(I)I HPLorg/thoughtcrime/securesms/util/views/NullableStub;->get()Ljava/lang/Object; HPLorg/thoughtcrime/securesms/util/views/NullableStub;->require()Ljava/lang/Object; -HPLorg/thoughtcrime/securesms/util/views/NullableStub;->resolved()Z HSPLandroid/support/v4/media/MediaBrowserCompat$MediaBrowserImplApi21$$ExternalSyntheticThrowCCEIfNotNull0;->m(Ljava/lang/Object;)V HSPLandroid/support/v4/media/session/IMediaSession$Stub;->()V HSPLandroid/support/v4/media/session/MediaControllerCompat$MediaControllerImplApi21;->(Landroid/content/Context;Landroid/support/v4/media/session/MediaSessionCompat$Token;)V @@ -942,7 +897,6 @@ HSPLandroidx/appcompat/widget/ActionMenuView;->setOverflowReserved(Z)V HSPLandroidx/appcompat/widget/ActionMenuView;->setPopupTheme(I)V HSPLandroidx/appcompat/widget/AppCompatBackgroundHelper;->(Landroid/view/View;)V HSPLandroidx/appcompat/widget/AppCompatBackgroundHelper;->applySupportBackgroundTint()V -HSPLandroidx/appcompat/widget/AppCompatBackgroundHelper;->loadFromAttributes(Landroid/util/AttributeSet;I)V HSPLandroidx/appcompat/widget/AppCompatBackgroundHelper;->onSetBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroidx/appcompat/widget/AppCompatBackgroundHelper;->setInternalBackgroundTint(Landroid/content/res/ColorStateList;)V HSPLandroidx/appcompat/widget/AppCompatBackgroundHelper;->setSupportBackgroundTintList(Landroid/content/res/ColorStateList;)V @@ -6024,7 +5978,6 @@ HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;- HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->isScreenReaderFocusable(Landroidx/compose/ui/semantics/SemanticsNode;)Z HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->onLayoutChange$ui_release(Landroidx/compose/ui/node/LayoutNode;)V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->onSemanticsChange$ui_release()V -HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->populateAccessibilityNodeInfoProperties(ILandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;Landroidx/compose/ui/semantics/SemanticsNode;)V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setContentInvalid(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setIsCheckable(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->setStateDescription(Landroidx/compose/ui/semantics/SemanticsNode;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;)V @@ -6133,6 +6086,7 @@ HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getMain$delegate$c HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getToRunOnFrame$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;)Ljava/util/List; HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$performFrameDispatch(Landroidx/compose/ui/platform/AndroidUiDispatcher;J)V HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$performTrampolineDispatch(Landroidx/compose/ui/platform/AndroidUiDispatcher;)V +HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$setScheduledFrameDispatch$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;Z)V HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->getChoreographer()Landroid/view/Choreographer; HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->getFrameClock()Landroidx/compose/runtime/MonotonicFrameClock; @@ -7725,6 +7679,7 @@ HSPLandroidx/constraintlayout/core/ArrayRow;->(Landroidx/constraintlayout/ HSPLandroidx/constraintlayout/core/ArrayRow;->addError(Landroidx/constraintlayout/core/LinearSystem;I)Landroidx/constraintlayout/core/ArrayRow; HSPLandroidx/constraintlayout/core/ArrayRow;->addSingleError(Landroidx/constraintlayout/core/SolverVariable;I)Landroidx/constraintlayout/core/ArrayRow; HSPLandroidx/constraintlayout/core/ArrayRow;->chooseSubject(Landroidx/constraintlayout/core/LinearSystem;)Z +HSPLandroidx/constraintlayout/core/ArrayRow;->chooseSubjectInVariables(Landroidx/constraintlayout/core/LinearSystem;)Landroidx/constraintlayout/core/SolverVariable; HSPLandroidx/constraintlayout/core/ArrayRow;->createRowCentering(Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;IFLandroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;I)Landroidx/constraintlayout/core/ArrayRow; HSPLandroidx/constraintlayout/core/ArrayRow;->createRowEqualMatchDimensions(FFFLandroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;)Landroidx/constraintlayout/core/ArrayRow; HSPLandroidx/constraintlayout/core/ArrayRow;->createRowEquals(Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;I)Landroidx/constraintlayout/core/ArrayRow; @@ -7743,13 +7698,17 @@ HSPLandroidx/constraintlayout/core/ArrayRow;->updateFromSystem(Landroidx/constra HSPLandroidx/constraintlayout/core/Cache;->()V HSPLandroidx/constraintlayout/core/LinearSystem;->()V HSPLandroidx/constraintlayout/core/LinearSystem;->()V +HSPLandroidx/constraintlayout/core/LinearSystem;->acquireSolverVariable(Landroidx/constraintlayout/core/SolverVariable$Type;Ljava/lang/String;)Landroidx/constraintlayout/core/SolverVariable; HSPLandroidx/constraintlayout/core/LinearSystem;->addCentering(Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;IFLandroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;II)V +HSPLandroidx/constraintlayout/core/LinearSystem;->addConstraint(Landroidx/constraintlayout/core/ArrayRow;)V +HSPLandroidx/constraintlayout/core/LinearSystem;->addEquality(Landroidx/constraintlayout/core/SolverVariable;I)V HSPLandroidx/constraintlayout/core/LinearSystem;->addEquality(Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;II)Landroidx/constraintlayout/core/ArrayRow; HSPLandroidx/constraintlayout/core/LinearSystem;->addGreaterThan(Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;II)V HSPLandroidx/constraintlayout/core/LinearSystem;->addLowerThan(Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;II)V +HSPLandroidx/constraintlayout/core/LinearSystem;->addRow(Landroidx/constraintlayout/core/ArrayRow;)V HSPLandroidx/constraintlayout/core/LinearSystem;->addSingleError(Landroidx/constraintlayout/core/ArrayRow;II)V HSPLandroidx/constraintlayout/core/LinearSystem;->computeValues()V -HSPLandroidx/constraintlayout/core/LinearSystem;->createObjectVariable(Ljava/lang/Object;)Landroidx/constraintlayout/core/SolverVariable; +HSPLandroidx/constraintlayout/core/LinearSystem;->createRow()Landroidx/constraintlayout/core/ArrayRow; HSPLandroidx/constraintlayout/core/LinearSystem;->createSlackVariable()Landroidx/constraintlayout/core/SolverVariable; HSPLandroidx/constraintlayout/core/LinearSystem;->enforceBFS(Landroidx/constraintlayout/core/LinearSystem$Row;)I HSPLandroidx/constraintlayout/core/LinearSystem;->getCache()Landroidx/constraintlayout/core/Cache; @@ -7830,6 +7789,7 @@ HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->()V HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->addAnchors()V HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->addFirst()Z HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->addToSolver(Landroidx/constraintlayout/core/LinearSystem;Z)V +HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->applyConstraints(Landroidx/constraintlayout/core/LinearSystem;ZZZZLandroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/SolverVariable;Landroidx/constraintlayout/core/widgets/ConstraintWidget$DimensionBehaviour;ZLandroidx/constraintlayout/core/widgets/ConstraintAnchor;Landroidx/constraintlayout/core/widgets/ConstraintAnchor;IIIIFZZZZZIIIIFZ)V HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->createObjectVariables(Landroidx/constraintlayout/core/LinearSystem;)V HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->getAnchor(Landroidx/constraintlayout/core/widgets/ConstraintAnchor$Type;)Landroidx/constraintlayout/core/widgets/ConstraintAnchor; HSPLandroidx/constraintlayout/core/widgets/ConstraintWidget;->getBaselineDistance()I @@ -7951,7 +7911,6 @@ HSPLandroidx/constraintlayout/core/widgets/WidgetContainer;->resetSolverVariable HSPLandroidx/constraintlayout/core/widgets/analyzer/BasicMeasure$Measure;->()V HSPLandroidx/constraintlayout/core/widgets/analyzer/BasicMeasure$Measure;->()V HSPLandroidx/constraintlayout/core/widgets/analyzer/BasicMeasure;->(Landroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;)V -HSPLandroidx/constraintlayout/core/widgets/analyzer/BasicMeasure;->measure(Landroidx/constraintlayout/core/widgets/analyzer/BasicMeasure$Measurer;Landroidx/constraintlayout/core/widgets/ConstraintWidget;I)Z HSPLandroidx/constraintlayout/core/widgets/analyzer/BasicMeasure;->measureChildren(Landroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;)V HSPLandroidx/constraintlayout/core/widgets/analyzer/BasicMeasure;->solveLinearSystem(Landroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;Ljava/lang/String;III)V HSPLandroidx/constraintlayout/core/widgets/analyzer/BasicMeasure;->solverMeasure(Landroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;IIIIIIIII)J @@ -7998,12 +7957,10 @@ HSPLandroidx/constraintlayout/widget/ConstraintLayout$Measurer;->(Landroid HSPLandroidx/constraintlayout/widget/ConstraintLayout$Measurer;->captureLayoutInfo(IIIIII)V HSPLandroidx/constraintlayout/widget/ConstraintLayout$Measurer;->didMeasures()V HSPLandroidx/constraintlayout/widget/ConstraintLayout$Measurer;->isSimilarSpec(III)Z -HSPLandroidx/constraintlayout/widget/ConstraintLayout$Measurer;->measure(Landroidx/constraintlayout/core/widgets/ConstraintWidget;Landroidx/constraintlayout/core/widgets/analyzer/BasicMeasure$Measure;)V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->()V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->access$000(Landroidx/constraintlayout/widget/ConstraintLayout;)I HSPLandroidx/constraintlayout/widget/ConstraintLayout;->access$100(Landroidx/constraintlayout/widget/ConstraintLayout;)Ljava/util/ArrayList; -HSPLandroidx/constraintlayout/widget/ConstraintLayout;->applyConstraintsFromLayoutParams(ZLandroid/view/View;Landroidx/constraintlayout/core/widgets/ConstraintWidget;Landroidx/constraintlayout/widget/ConstraintLayout$LayoutParams;Landroid/util/SparseArray;)V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z HSPLandroidx/constraintlayout/widget/ConstraintLayout;->dispatchDraw(Landroid/graphics/Canvas;)V HSPLandroidx/constraintlayout/widget/ConstraintLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; @@ -8980,6 +8937,7 @@ HSPLandroidx/fragment/app/FragmentStateManager;->(Landroidx/fragment/app/F HSPLandroidx/fragment/app/FragmentStateManager;->activityCreated()V HSPLandroidx/fragment/app/FragmentStateManager;->addViewToContainer()V HSPLandroidx/fragment/app/FragmentStateManager;->attach()V +HSPLandroidx/fragment/app/FragmentStateManager;->computeExpectedState()I HSPLandroidx/fragment/app/FragmentStateManager;->create()V HSPLandroidx/fragment/app/FragmentStateManager;->createView()V HSPLandroidx/fragment/app/FragmentStateManager;->ensureInflatedView()V @@ -11492,6 +11450,9 @@ HSPLandroidx/recyclerview/widget/LinearLayoutManager;->assertNotInLayoutOrScroll HSPLandroidx/recyclerview/widget/LinearLayoutManager;->calculateExtraLayoutSpace(Landroidx/recyclerview/widget/RecyclerView$State;[I)V HSPLandroidx/recyclerview/widget/LinearLayoutManager;->canScrollHorizontally()Z HSPLandroidx/recyclerview/widget/LinearLayoutManager;->canScrollVertically()Z +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->computeHorizontalScrollExtent(Landroidx/recyclerview/widget/RecyclerView$State;)I +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->computeHorizontalScrollOffset(Landroidx/recyclerview/widget/RecyclerView$State;)I +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->computeHorizontalScrollRange(Landroidx/recyclerview/widget/RecyclerView$State;)I HSPLandroidx/recyclerview/widget/LinearLayoutManager;->computeScrollExtent(Landroidx/recyclerview/widget/RecyclerView$State;)I HSPLandroidx/recyclerview/widget/LinearLayoutManager;->computeScrollOffset(Landroidx/recyclerview/widget/RecyclerView$State;)I HSPLandroidx/recyclerview/widget/LinearLayoutManager;->computeScrollRange(Landroidx/recyclerview/widget/RecyclerView$State;)I @@ -11546,8 +11507,10 @@ HSPLandroidx/recyclerview/widget/OpReorderer;->(Landroidx/recyclerview/wid HSPLandroidx/recyclerview/widget/OpReorderer;->getLastMoveOutOfOrder(Ljava/util/List;)I HSPLandroidx/recyclerview/widget/OpReorderer;->reorderOps(Ljava/util/List;)V HSPLandroidx/recyclerview/widget/OrientationHelper$1;->(Landroidx/recyclerview/widget/RecyclerView$LayoutManager;)V +HSPLandroidx/recyclerview/widget/OrientationHelper$1;->getDecoratedEnd(Landroid/view/View;)I HSPLandroidx/recyclerview/widget/OrientationHelper$1;->getDecoratedMeasurement(Landroid/view/View;)I HSPLandroidx/recyclerview/widget/OrientationHelper$1;->getDecoratedMeasurementInOther(Landroid/view/View;)I +HSPLandroidx/recyclerview/widget/OrientationHelper$1;->getDecoratedStart(Landroid/view/View;)I HSPLandroidx/recyclerview/widget/OrientationHelper$1;->getEndAfterPadding()I HSPLandroidx/recyclerview/widget/OrientationHelper$1;->getEndPadding()I HSPLandroidx/recyclerview/widget/OrientationHelper$1;->getMode()I @@ -11631,6 +11594,11 @@ HSPLandroidx/recyclerview/widget/RecyclerView$ItemDecoration;->getItemOffsets(La HSPLandroidx/recyclerview/widget/RecyclerView$ItemDecoration;->onDrawOver(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;)V HSPLandroidx/recyclerview/widget/RecyclerView$ItemDecoration;->onDrawOver(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$State;)V HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager$1;->(Landroidx/recyclerview/widget/RecyclerView$LayoutManager;)V +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager$1;->getChildAt(I)Landroid/view/View; +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager$1;->getChildEnd(Landroid/view/View;)I +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager$1;->getChildStart(Landroid/view/View;)I +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager$1;->getParentEnd()I +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager$1;->getParentStart()I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager$2;->(Landroidx/recyclerview/widget/RecyclerView$LayoutManager;)V HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager$2;->getChildAt(I)Landroid/view/View; HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager$2;->getChildEnd(Landroid/view/View;)I @@ -11658,13 +11626,16 @@ HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getChildMeasureSpe HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getColumnCountForAccessibility(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;)I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getDecoratedBottom(Landroid/view/View;)I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getDecoratedBoundsWithMargins(Landroid/view/View;Landroid/graphics/Rect;)V +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getDecoratedLeft(Landroid/view/View;)I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getDecoratedMeasuredHeight(Landroid/view/View;)I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getDecoratedMeasuredWidth(Landroid/view/View;)I +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getDecoratedRight(Landroid/view/View;)I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getDecoratedTop(Landroid/view/View;)I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getFocusedChild()Landroid/view/View; HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getHeight()I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getHeightMode()I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getLayoutDirection()I +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getLeftDecorationWidth(Landroid/view/View;)I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getMinimumHeight()I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getMinimumWidth()I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getPaddingBottom()I @@ -11673,6 +11644,7 @@ HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getPaddingRight()I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getPaddingTop()I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getPosition(Landroid/view/View;)I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getProperties(Landroid/content/Context;Landroid/util/AttributeSet;II)Landroidx/recyclerview/widget/RecyclerView$LayoutManager$Properties; +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getRightDecorationWidth(Landroid/view/View;)I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getRowCountForAccessibility(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;)I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getSelectionModeForAccessibility(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;)I HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getTopDecorationHeight(Landroid/view/View;)I @@ -12150,6 +12122,7 @@ HSPLcom/airbnb/lottie/animation/LPaint;->setTextLocales(Landroid/os/LocaleList;) HSPLcom/airbnb/lottie/animation/content/CompoundTrimPathContent;->()V HSPLcom/airbnb/lottie/animation/content/CompoundTrimPathContent;->apply(Landroid/graphics/Path;)V HSPLcom/airbnb/lottie/animation/content/ContentGroup;->(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Lcom/airbnb/lottie/model/content/ShapeGroup;Lcom/airbnb/lottie/LottieComposition;)V +HSPLcom/airbnb/lottie/animation/content/ContentGroup;->(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Ljava/lang/String;ZLjava/util/List;Lcom/airbnb/lottie/model/animatable/AnimatableTransform;)V HSPLcom/airbnb/lottie/animation/content/ContentGroup;->addValueCallback(Ljava/lang/Object;Lcom/airbnb/lottie/value/LottieValueCallback;)V HSPLcom/airbnb/lottie/animation/content/ContentGroup;->contentsFromModels(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/model/layer/BaseLayer;Ljava/util/List;)Ljava/util/List; HSPLcom/airbnb/lottie/animation/content/ContentGroup;->draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V @@ -12162,6 +12135,7 @@ HSPLcom/airbnb/lottie/animation/content/EllipseContent;->addValueCallback(Ljava/ HSPLcom/airbnb/lottie/animation/content/EllipseContent;->getName()Ljava/lang/String; HSPLcom/airbnb/lottie/animation/content/EllipseContent;->resolveKeyPath(Lcom/airbnb/lottie/model/KeyPath;ILjava/util/List;Lcom/airbnb/lottie/model/KeyPath;)V HSPLcom/airbnb/lottie/animation/content/EllipseContent;->setContents(Ljava/util/List;Ljava/util/List;)V +HSPLcom/airbnb/lottie/animation/content/FillContent;->(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Lcom/airbnb/lottie/model/content/ShapeFill;)V HSPLcom/airbnb/lottie/animation/content/FillContent;->addValueCallback(Ljava/lang/Object;Lcom/airbnb/lottie/value/LottieValueCallback;)V HSPLcom/airbnb/lottie/animation/content/FillContent;->draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V HSPLcom/airbnb/lottie/animation/content/FillContent;->getName()Ljava/lang/String; @@ -12226,7 +12200,6 @@ HSPLcom/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation;->(Ljava/u HSPLcom/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Landroid/graphics/Path; HSPLcom/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Ljava/lang/Object; HSPLcom/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation;->setShapeModifiers(Ljava/util/List;)V -HSPLcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation;->(Lcom/airbnb/lottie/model/animatable/AnimatableTransform;)V HSPLcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation;->addAnimationsToLayer(Lcom/airbnb/lottie/model/layer/BaseLayer;)V HSPLcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation;->addListener(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$AnimationListener;)V HSPLcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation;->applyValueCallback(Ljava/lang/Object;Lcom/airbnb/lottie/value/LottieValueCallback;)Z @@ -12363,6 +12336,7 @@ HSPLcom/airbnb/lottie/model/layer/BaseLayer;->setProgress(F)V HSPLcom/airbnb/lottie/model/layer/BaseLayer;->setVisible(Z)V HSPLcom/airbnb/lottie/model/layer/BaseLayer;->setupInOutAnimations()V HSPLcom/airbnb/lottie/model/layer/CompositionLayer$1;->()V +HSPLcom/airbnb/lottie/model/layer/CompositionLayer;->(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/Layer;Ljava/util/List;Lcom/airbnb/lottie/LottieComposition;)V HSPLcom/airbnb/lottie/model/layer/CompositionLayer;->drawLayer(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V HSPLcom/airbnb/lottie/model/layer/CompositionLayer;->resolveChildKeyPath(Lcom/airbnb/lottie/model/KeyPath;ILjava/util/List;Lcom/airbnb/lottie/model/KeyPath;)V HSPLcom/airbnb/lottie/model/layer/CompositionLayer;->setClipToCompositionBounds(Z)V @@ -12508,6 +12482,7 @@ HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->nextBoolean()Z HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->nextDouble()D HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->nextInt()I HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->nextName()Ljava/lang/String; +HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->nextNonWhitespace(Z)I HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->nextQuotedValue(Lokio/ByteString;)Ljava/lang/String; HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->nextString()Ljava/lang/String; HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->peek()Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; @@ -12666,7 +12641,6 @@ HSPLcom/annimon/stream/iterator/IndexedIterator;->hasNext()Z HSPLcom/annimon/stream/iterator/IndexedIterator;->next()Ljava/lang/Object; HSPLcom/annimon/stream/iterator/LazyIterator;->(Ljava/lang/Iterable;)V HSPLcom/annimon/stream/iterator/LazyIterator;->ensureIterator()V -HSPLcom/annimon/stream/iterator/LazyIterator;->hasNext()Z HSPLcom/annimon/stream/iterator/LazyIterator;->next()Ljava/lang/Object; HSPLcom/annimon/stream/iterator/LsaExtIterator;->()V HSPLcom/annimon/stream/iterator/LsaExtIterator;->hasNext()Z @@ -13640,6 +13614,7 @@ HSPLcom/fasterxml/jackson/core/Base64Variant;->usesPadding()Z HSPLcom/fasterxml/jackson/core/Base64Variants;->()V HSPLcom/fasterxml/jackson/core/Base64Variants;->getDefaultVariant()Lcom/fasterxml/jackson/core/Base64Variant; HSPLcom/fasterxml/jackson/core/JacksonException;->(Ljava/lang/String;)V +HSPLcom/fasterxml/jackson/core/JacksonException;->(Ljava/lang/String;Ljava/lang/Throwable;)V HSPLcom/fasterxml/jackson/core/JsonEncoding;->()V HSPLcom/fasterxml/jackson/core/JsonEncoding;->(Ljava/lang/String;ILjava/lang/String;ZI)V HSPLcom/fasterxml/jackson/core/JsonFactory$Feature;->()V @@ -13684,6 +13659,8 @@ HSPLcom/fasterxml/jackson/core/JsonLocation;->(Ljava/lang/Object;JJII)V HSPLcom/fasterxml/jackson/core/JsonLocation;->_append(Ljava/lang/StringBuilder;Ljava/lang/String;)I HSPLcom/fasterxml/jackson/core/JsonLocation;->_appendSourceDesc(Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder; HSPLcom/fasterxml/jackson/core/JsonLocation;->toString()Ljava/lang/String; +HSPLcom/fasterxml/jackson/core/JsonParseException;->(Lcom/fasterxml/jackson/core/JsonParser;Ljava/lang/String;)V +HSPLcom/fasterxml/jackson/core/JsonParseException;->withRequestPayload(Lcom/fasterxml/jackson/core/util/RequestPayload;)Lcom/fasterxml/jackson/core/JsonParseException; HSPLcom/fasterxml/jackson/core/JsonParser$Feature;->()V HSPLcom/fasterxml/jackson/core/JsonParser$Feature;->(Ljava/lang/String;IZ)V HSPLcom/fasterxml/jackson/core/JsonParser$Feature;->collectDefaults()I @@ -13695,9 +13672,12 @@ HSPLcom/fasterxml/jackson/core/JsonParser$NumberType;->()V HSPLcom/fasterxml/jackson/core/JsonParser$NumberType;->(Ljava/lang/String;I)V HSPLcom/fasterxml/jackson/core/JsonParser;->()V HSPLcom/fasterxml/jackson/core/JsonParser;->(I)V +HSPLcom/fasterxml/jackson/core/JsonParser;->_constructError(Ljava/lang/String;)Lcom/fasterxml/jackson/core/JsonParseException; HSPLcom/fasterxml/jackson/core/JsonParser;->currentName()Ljava/lang/String; HSPLcom/fasterxml/jackson/core/JsonParser;->isEnabled(Lcom/fasterxml/jackson/core/JsonParser$Feature;)Z HSPLcom/fasterxml/jackson/core/JsonProcessingException;->(Ljava/lang/String;)V +HSPLcom/fasterxml/jackson/core/JsonProcessingException;->(Ljava/lang/String;Lcom/fasterxml/jackson/core/JsonLocation;)V +HSPLcom/fasterxml/jackson/core/JsonProcessingException;->(Ljava/lang/String;Lcom/fasterxml/jackson/core/JsonLocation;Ljava/lang/Throwable;)V HSPLcom/fasterxml/jackson/core/JsonProcessingException;->getLocation()Lcom/fasterxml/jackson/core/JsonLocation; HSPLcom/fasterxml/jackson/core/JsonProcessingException;->getMessage()Ljava/lang/String; HSPLcom/fasterxml/jackson/core/JsonProcessingException;->getMessageSuffix()Ljava/lang/String; @@ -13751,6 +13731,9 @@ HSPLcom/fasterxml/jackson/core/base/ParserBase;->resetInt(ZI)Lcom/fasterxml/jack HSPLcom/fasterxml/jackson/core/base/ParserBase;->setCurrentValue(Ljava/lang/Object;)V HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->()V HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->(I)V +HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->_getCharDesc(I)Ljava/lang/String; +HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->_reportError(Ljava/lang/String;)V +HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->_throwInvalidSpace(I)V HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->currentToken()Lcom/fasterxml/jackson/core/JsonToken; HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->currentTokenId()I HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->getValueAsString()Ljava/lang/String; @@ -13761,6 +13744,7 @@ HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->isExpectedNumberIntToken HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->isExpectedStartArrayToken()Z HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->isExpectedStartObjectToken()Z HSPLcom/fasterxml/jackson/core/base/ParserMinimalBase;->skipChildren()Lcom/fasterxml/jackson/core/JsonParser; +HSPLcom/fasterxml/jackson/core/exc/StreamReadException;->(Lcom/fasterxml/jackson/core/JsonParser;Ljava/lang/String;)V HSPLcom/fasterxml/jackson/core/io/CharTypes;->()V HSPLcom/fasterxml/jackson/core/io/CharTypes;->copyHexBytes()[B HSPLcom/fasterxml/jackson/core/io/CharTypes;->copyHexChars()[C @@ -13841,6 +13825,7 @@ HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->(Lcom/fasterxm HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->(Lcom/fasterxml/jackson/core/io/IOContext;ILjava/io/Reader;Lcom/fasterxml/jackson/core/ObjectCodec;Lcom/fasterxml/jackson/core/sym/CharsToNameCanonicalizer;[CIIZ)V HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_closeInput()V HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_closeScope(I)V +HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_finishString()V HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_finishString2()V HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_loadMore()Z HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_matchFalse()V @@ -13857,6 +13842,7 @@ HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_skipColon()I HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_skipColon2(Z)I HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_skipComma(I)I HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_skipString()V +HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_skipWSOrEnd()I HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_skipWSOrEnd2()I HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_updateLocation()V HSPLcom/fasterxml/jackson/core/json/ReaderBasedJsonParser;->_updateNameLocation()V @@ -13907,6 +13893,7 @@ HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->findName(II)Ljava/lan HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->findName(III)Ljava/lang/String; HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->findName(IIII)Ljava/lang/String; HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->findName([IIII)Ljava/lang/String; +HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->getCurrentLocation()Lcom/fasterxml/jackson/core/JsonLocation; HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->getReadCapabilities()Lcom/fasterxml/jackson/core/util/JacksonFeatureSet; HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->getText()Ljava/lang/String; HSPLcom/fasterxml/jackson/core/json/UTF8StreamJsonParser;->nextFieldName()Ljava/lang/String; @@ -13948,7 +13935,6 @@ HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_calcTertiaryShift(I HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_checkNeedForRehash()Z HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_findOffsetForAdd(I)I HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_findSecondary(III)Ljava/lang/String; -HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_findSecondary(IIII)Ljava/lang/String; HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_resizeAndFindOffsetForAdd(I)I HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_spilloverStart()I HSPLcom/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer;->_verifyLongName([III)Z @@ -14506,6 +14492,7 @@ HSPLcom/fasterxml/jackson/databind/deser/BasicDeserializerFactory;->withValueIns HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->(Lcom/fasterxml/jackson/databind/deser/BeanDeserializerBuilder;Lcom/fasterxml/jackson/databind/BeanDescription;Lcom/fasterxml/jackson/databind/deser/impl/BeanPropertyMap;Ljava/util/Map;Ljava/util/HashSet;ZLjava/util/Set;Z)V HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->_deserializeUsingPropertyBased(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/lang/Object; HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->_deserializeWithErrorWrapping(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;Lcom/fasterxml/jackson/databind/deser/SettableBeanProperty;)Ljava/lang/Object; +HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->deserialize(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/lang/Object; HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->deserialize(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;Ljava/lang/Object;)Ljava/lang/Object; HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->deserializeFromObject(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/lang/Object; HSPLcom/fasterxml/jackson/databind/deser/BeanDeserializer;->vanillaDeserialize(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;Lcom/fasterxml/jackson/core/JsonToken;)Ljava/lang/Object; @@ -14698,6 +14685,7 @@ HSPLcom/fasterxml/jackson/databind/deser/impl/PropertyValueBuffer;->hasParameter HSPLcom/fasterxml/jackson/databind/deser/impl/PropertyValueBuffer;->readIdProperty(Ljava/lang/String;)Z HSPLcom/fasterxml/jackson/databind/deser/std/BaseNodeDeserializer;->(Ljava/lang/Class;Ljava/lang/Boolean;)V HSPLcom/fasterxml/jackson/databind/deser/std/BaseNodeDeserializer;->_fromInt(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;Lcom/fasterxml/jackson/databind/node/JsonNodeFactory;)Lcom/fasterxml/jackson/databind/JsonNode; +HSPLcom/fasterxml/jackson/databind/deser/std/BaseNodeDeserializer;->deserializeArray(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;Lcom/fasterxml/jackson/databind/node/JsonNodeFactory;)Lcom/fasterxml/jackson/databind/node/ArrayNode; HSPLcom/fasterxml/jackson/databind/deser/std/BaseNodeDeserializer;->deserializeObject(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;Lcom/fasterxml/jackson/databind/node/JsonNodeFactory;)Lcom/fasterxml/jackson/databind/node/ObjectNode; HSPLcom/fasterxml/jackson/databind/deser/std/BaseNodeDeserializer;->isCachable()Z HSPLcom/fasterxml/jackson/databind/deser/std/ContainerDeserializerBase;->(Lcom/fasterxml/jackson/databind/JavaType;Lcom/fasterxml/jackson/databind/deser/NullValueProvider;Ljava/lang/Boolean;)V @@ -14822,6 +14810,7 @@ HSPLcom/fasterxml/jackson/databind/deser/std/StringCollectionDeserializer;->with HSPLcom/fasterxml/jackson/databind/deser/std/StringDeserializer;->()V HSPLcom/fasterxml/jackson/databind/deser/std/StringDeserializer;->()V HSPLcom/fasterxml/jackson/databind/deser/std/StringDeserializer;->deserialize(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/lang/Object; +HSPLcom/fasterxml/jackson/databind/deser/std/StringDeserializer;->deserialize(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/lang/String; HSPLcom/fasterxml/jackson/databind/deser/std/StringDeserializer;->isCachable()Z HSPLcom/fasterxml/jackson/databind/deser/std/UUIDDeserializer;->()V HSPLcom/fasterxml/jackson/databind/deser/std/UUIDDeserializer;->()V @@ -15502,15 +15491,12 @@ HSPLcom/fasterxml/jackson/databind/ser/impl/IndexedListSerializer;->serializeCon HSPLcom/fasterxml/jackson/databind/ser/impl/IndexedListSerializer;->serializeContentsUsing(Ljava/util/List;Lcom/fasterxml/jackson/core/JsonGenerator;Lcom/fasterxml/jackson/databind/SerializerProvider;Lcom/fasterxml/jackson/databind/JsonSerializer;)V HSPLcom/fasterxml/jackson/databind/ser/impl/IndexedListSerializer;->withResolved(Lcom/fasterxml/jackson/databind/BeanProperty;Lcom/fasterxml/jackson/databind/jsontype/TypeSerializer;Lcom/fasterxml/jackson/databind/JsonSerializer;Ljava/lang/Boolean;)Lcom/fasterxml/jackson/databind/ser/impl/IndexedListSerializer; HSPLcom/fasterxml/jackson/databind/ser/impl/IndexedListSerializer;->withResolved(Lcom/fasterxml/jackson/databind/BeanProperty;Lcom/fasterxml/jackson/databind/jsontype/TypeSerializer;Lcom/fasterxml/jackson/databind/JsonSerializer;Ljava/lang/Boolean;)Lcom/fasterxml/jackson/databind/ser/std/AsArraySerializerBase; -HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Double;->(Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap;Ljava/lang/Class;Lcom/fasterxml/jackson/databind/JsonSerializer;Ljava/lang/Class;Lcom/fasterxml/jackson/databind/JsonSerializer;)V -HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Double;->serializerFor(Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/JsonSerializer; HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Empty;->()V HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Empty;->(Z)V HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Empty;->newWith(Ljava/lang/Class;Lcom/fasterxml/jackson/databind/JsonSerializer;)Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap; HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Empty;->serializerFor(Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/JsonSerializer; HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$SerializerAndMapResult;->(Lcom/fasterxml/jackson/databind/JsonSerializer;Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap;)V HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Single;->(Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap;Ljava/lang/Class;Lcom/fasterxml/jackson/databind/JsonSerializer;)V -HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Single;->newWith(Ljava/lang/Class;Lcom/fasterxml/jackson/databind/JsonSerializer;)Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap; HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Single;->serializerFor(Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/JsonSerializer; HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap;->(Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap;)V HSPLcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap;->(Z)V @@ -15686,6 +15672,7 @@ HSPLcom/fasterxml/jackson/databind/type/MapType;->refine(Ljava/lang/Class;Lcom/f HSPLcom/fasterxml/jackson/databind/type/PlaceholderForType;->(I)V HSPLcom/fasterxml/jackson/databind/type/PlaceholderForType;->actualType()Lcom/fasterxml/jackson/databind/JavaType; HSPLcom/fasterxml/jackson/databind/type/PlaceholderForType;->actualType(Lcom/fasterxml/jackson/databind/JavaType;)V +HSPLcom/fasterxml/jackson/databind/type/PlaceholderForType;->equals(Ljava/lang/Object;)Z HSPLcom/fasterxml/jackson/databind/type/SimpleType;->(Ljava/lang/Class;)V HSPLcom/fasterxml/jackson/databind/type/SimpleType;->(Ljava/lang/Class;Lcom/fasterxml/jackson/databind/type/TypeBindings;Lcom/fasterxml/jackson/databind/JavaType;[Lcom/fasterxml/jackson/databind/JavaType;)V HSPLcom/fasterxml/jackson/databind/type/SimpleType;->(Ljava/lang/Class;Lcom/fasterxml/jackson/databind/type/TypeBindings;Lcom/fasterxml/jackson/databind/JavaType;[Lcom/fasterxml/jackson/databind/JavaType;Ljava/lang/Object;Ljava/lang/Object;Z)V @@ -16446,6 +16433,7 @@ HSPLcom/google/android/material/card/MaterialCardView;->isChecked()Z HSPLcom/google/android/material/card/MaterialCardView;->isDragged()Z HSPLcom/google/android/material/card/MaterialCardView;->onAttachedToWindow()V HSPLcom/google/android/material/card/MaterialCardView;->onCreateDrawableState(I)[I +HSPLcom/google/android/material/card/MaterialCardView;->onInitializeAccessibilityNodeInfo(Landroid/view/accessibility/AccessibilityNodeInfo;)V HSPLcom/google/android/material/card/MaterialCardView;->onMeasure(II)V HSPLcom/google/android/material/card/MaterialCardView;->setAncestorContentPadding(IIII)V HSPLcom/google/android/material/card/MaterialCardView;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V @@ -16827,7 +16815,6 @@ HSPLcom/google/android/material/shape/MaterialShapeDrawable$MaterialShapeDrawabl HSPLcom/google/android/material/shape/MaterialShapeDrawable;->()V HSPLcom/google/android/material/shape/MaterialShapeDrawable;->()V HSPLcom/google/android/material/shape/MaterialShapeDrawable;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V -HSPLcom/google/android/material/shape/MaterialShapeDrawable;->(Lcom/google/android/material/shape/MaterialShapeDrawable$MaterialShapeDrawableState;)V HSPLcom/google/android/material/shape/MaterialShapeDrawable;->(Lcom/google/android/material/shape/MaterialShapeDrawable$MaterialShapeDrawableState;Lcom/google/android/material/shape/MaterialShapeDrawable$1;)V HSPLcom/google/android/material/shape/MaterialShapeDrawable;->(Lcom/google/android/material/shape/ShapeAppearanceModel;)V HSPLcom/google/android/material/shape/MaterialShapeDrawable;->access$000(Lcom/google/android/material/shape/MaterialShapeDrawable;)Ljava/util/BitSet; @@ -16967,7 +16954,6 @@ HSPLcom/google/android/material/shape/ShapeAppearancePathProvider$ShapeAppearanc HSPLcom/google/android/material/shape/ShapeAppearancePathProvider;->()V HSPLcom/google/android/material/shape/ShapeAppearancePathProvider;->angleOfEdge(I)F HSPLcom/google/android/material/shape/ShapeAppearancePathProvider;->appendCornerPath(Lcom/google/android/material/shape/ShapeAppearancePathProvider$ShapeAppearancePathSpec;I)V -HSPLcom/google/android/material/shape/ShapeAppearancePathProvider;->appendEdgePath(Lcom/google/android/material/shape/ShapeAppearancePathProvider$ShapeAppearancePathSpec;I)V HSPLcom/google/android/material/shape/ShapeAppearancePathProvider;->calculatePath(Lcom/google/android/material/shape/ShapeAppearanceModel;FLandroid/graphics/RectF;Landroid/graphics/Path;)V HSPLcom/google/android/material/shape/ShapeAppearancePathProvider;->calculatePath(Lcom/google/android/material/shape/ShapeAppearanceModel;FLandroid/graphics/RectF;Lcom/google/android/material/shape/ShapeAppearancePathProvider$PathListener;Landroid/graphics/Path;)V HSPLcom/google/android/material/shape/ShapeAppearancePathProvider;->getCoordinatesOfCorner(ILandroid/graphics/RectF;Landroid/graphics/PointF;)V @@ -17501,7 +17487,9 @@ HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->()V HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->(Landroid/content/Context;Ljava/lang/String;)V HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->getFormattedDate(J)Ljava/lang/String; HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->getStoredUserAgentString(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->removeStoredDate(Ljava/lang/String;)V HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->storeHeartBeat(JLjava/lang/String;)V +HSPLcom/google/firebase/heartbeatinfo/HeartBeatInfoStorage;->updateStoredUserAgent(Ljava/lang/String;Ljava/lang/String;)V HSPLcom/google/firebase/installations/FirebaseInstallations$$ExternalSyntheticLambda0;->(Lcom/google/firebase/FirebaseApp;)V HSPLcom/google/firebase/installations/FirebaseInstallations$1;->()V HSPLcom/google/firebase/installations/FirebaseInstallations;->()V @@ -17883,7 +17871,6 @@ HSPLcom/squareup/wire/internal/Internal__InternalKt;->checkElementsNotNull(Ljava HSPLcom/squareup/wire/internal/Internal__InternalKt;->countNonNull(Ljava/lang/Object;Ljava/lang/Object;)I HSPLcom/squareup/wire/internal/Internal__InternalKt;->countNonNull(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)I HSPLcom/squareup/wire/internal/Internal__InternalKt;->countNonNull(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)I -HSPLcom/squareup/wire/internal/Internal__InternalKt;->immutableCopyOf(Ljava/lang/String;Ljava/util/List;)Ljava/util/List; HSPLio/reactivex/rxjava3/android/plugins/RxAndroidPlugins;->callRequireNonNull(Ljava/util/concurrent/Callable;)Lio/reactivex/rxjava3/core/Scheduler; HSPLio/reactivex/rxjava3/android/plugins/RxAndroidPlugins;->initMainThreadScheduler(Ljava/util/concurrent/Callable;)Lio/reactivex/rxjava3/core/Scheduler; HSPLio/reactivex/rxjava3/android/plugins/RxAndroidPlugins;->onMainThreadScheduler(Lio/reactivex/rxjava3/core/Scheduler;)Lio/reactivex/rxjava3/core/Scheduler; @@ -18350,7 +18337,9 @@ HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode;->soNext HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode;->spValue(Ljava/lang/Object;)V HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->()V HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->clear()V +HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->isEmpty()Z HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->lpConsumerNode()Lio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode; +HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->lvConsumerNode()Lio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode; HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->lvProducerNode()Lio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode; HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->offer(Ljava/lang/Object;)Z HSPLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->poll()Ljava/lang/Object; @@ -18387,6 +18376,7 @@ HSPLio/reactivex/rxjava3/internal/queue/SpscLinkedArrayQueue;->soProducerIndex(J HSPLio/reactivex/rxjava3/internal/queue/SpscLinkedArrayQueue;->writeToQueue(Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/lang/Object;JI)Z HSPLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->()V HSPLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->(Ljava/lang/Runnable;Z)V +HSPLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->cancelFuture(Ljava/util/concurrent/Future;)V HSPLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->dispose()V HSPLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->setFuture(Ljava/util/concurrent/Future;)V HSPLio/reactivex/rxjava3/internal/schedulers/DisposeOnCancel;->(Lio/reactivex/rxjava3/disposables/Disposable;)V @@ -18856,6 +18846,7 @@ HSPLj$/util/Optional;->empty()Lj$/util/Optional; HSPLj$/util/Optional;->equals(Ljava/lang/Object;)Z HSPLj$/util/Optional;->get()Ljava/lang/Object; HSPLj$/util/Optional;->isPresent()Z +HSPLj$/util/Optional;->map(Lj$/util/function/Function;)Lj$/util/Optional; HSPLj$/util/Optional;->of(Ljava/lang/Object;)Lj$/util/Optional; HSPLj$/util/Optional;->ofNullable(Ljava/lang/Object;)Lj$/util/Optional; HSPLj$/util/Optional;->orElse(Ljava/lang/Object;)Ljava/lang/Object; @@ -18882,11 +18873,9 @@ HSPLj$/util/concurrent/ConcurrentHashMap;->a(JI)V HSPLj$/util/concurrent/ConcurrentHashMap;->b([Lj$/util/concurrent/l;ILj$/util/concurrent/l;)Z HSPLj$/util/concurrent/ConcurrentHashMap;->c(Ljava/lang/Object;)Ljava/lang/Class; HSPLj$/util/concurrent/ConcurrentHashMap;->clear()V -HSPLj$/util/concurrent/ConcurrentHashMap;->containsKey(Ljava/lang/Object;)Z HSPLj$/util/concurrent/ConcurrentHashMap;->entrySet()Ljava/util/Set; HSPLj$/util/concurrent/ConcurrentHashMap;->f()[Lj$/util/concurrent/l; HSPLj$/util/concurrent/ConcurrentHashMap;->g(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object; -HSPLj$/util/concurrent/ConcurrentHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; HSPLj$/util/concurrent/ConcurrentHashMap;->i([Lj$/util/concurrent/l;ILj$/util/concurrent/l;)V HSPLj$/util/concurrent/ConcurrentHashMap;->isEmpty()Z HSPLj$/util/concurrent/ConcurrentHashMap;->j(I)I @@ -18913,15 +18902,15 @@ HSPLj$/util/concurrent/p;->([Lj$/util/concurrent/l;III)V HSPLj$/util/concurrent/p;->b()Lj$/util/concurrent/l; HSPLj$/util/concurrent/q;->()V HSPLj$/util/concurrent/q;->(Lj$/util/concurrent/r;)V -HSPLj$/util/concurrent/q;->a(Ljava/lang/Object;I)Lj$/util/concurrent/l; HSPLj$/util/concurrent/q;->c(Lj$/util/concurrent/r;Lj$/util/concurrent/r;)Lj$/util/concurrent/r; +HSPLj$/util/concurrent/q;->e()V +HSPLj$/util/concurrent/q;->f(ILjava/lang/Object;Ljava/lang/Object;)Lj$/util/concurrent/r; HSPLj$/util/concurrent/q;->h(Lj$/util/concurrent/r;Lj$/util/concurrent/r;)Lj$/util/concurrent/r; HSPLj$/util/concurrent/q;->i(Lj$/util/concurrent/r;Lj$/util/concurrent/r;)Lj$/util/concurrent/r; HSPLj$/util/concurrent/q;->j(Ljava/lang/Object;Ljava/lang/Object;)I HSPLj$/util/concurrent/r;->(ILjava/lang/Object;Ljava/lang/Object;Lj$/util/concurrent/r;Lj$/util/concurrent/r;)V HSPLj$/util/concurrent/r;->b(ILjava/lang/Object;Ljava/lang/Class;)Lj$/util/concurrent/r; HSPLj$/util/concurrent/v;->()V -HSPLj$/util/concurrent/v;->a(Lsun/misc/Unsafe;Ljava/lang/Object;J)I HSPLj$/util/concurrent/v;->b()Ljava/lang/reflect/Field; HSPLj$/util/concurrent/v;->c()Lsun/misc/Unsafe; HSPLj$/util/d;->(Ljava/util/Map;)V @@ -19045,6 +19034,7 @@ HSPLkotlin/LazyThreadSafetyMode;->$values()[Lkotlin/LazyThreadSafetyMode; HSPLkotlin/LazyThreadSafetyMode;->()V HSPLkotlin/LazyThreadSafetyMode;->(Ljava/lang/String;I)V HSPLkotlin/LazyThreadSafetyMode;->values()[Lkotlin/LazyThreadSafetyMode; +HSPLkotlin/Pair;->(Ljava/lang/Object;Ljava/lang/Object;)V HSPLkotlin/Pair;->component1()Ljava/lang/Object; HSPLkotlin/Pair;->component2()Ljava/lang/Object; HSPLkotlin/Pair;->equals(Ljava/lang/Object;)Z @@ -19194,6 +19184,7 @@ HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([B[BIIIILjava/l HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([F[FIIIILjava/lang/Object;)[F HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([I[IIIIILjava/lang/Object;)[I HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([Ljava/lang/Object;[Ljava/lang/Object;IIIILjava/lang/Object;)[Ljava/lang/Object; +HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([B[BIII)[B HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([F[FIII)[F HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([I[IIII)[I HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([J[JIII)[J @@ -19393,7 +19384,6 @@ HSPLkotlin/collections/MapsKt;->mapCapacity(I)I HSPLkotlin/collections/MapsKt;->mapOf(Lkotlin/Pair;)Ljava/util/Map; HSPLkotlin/collections/MapsKt;->mapOf([Lkotlin/Pair;)Ljava/util/Map; HSPLkotlin/collections/MapsKt;->plus(Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map; -HSPLkotlin/collections/MapsKt;->plus(Ljava/util/Map;Lkotlin/Pair;)Ljava/util/Map; HSPLkotlin/collections/MapsKt;->putAll(Ljava/util/Map;[Lkotlin/Pair;)V HSPLkotlin/collections/MapsKt;->toMap(Ljava/lang/Iterable;)Ljava/util/Map; HSPLkotlin/collections/MapsKt;->toMap(Ljava/util/Map;)Ljava/util/Map; @@ -19406,7 +19396,6 @@ HSPLkotlin/collections/MapsKt__MapsKt;->emptyMap()Ljava/util/Map; HSPLkotlin/collections/MapsKt__MapsKt;->linkedMapOf([Lkotlin/Pair;)Ljava/util/LinkedHashMap; HSPLkotlin/collections/MapsKt__MapsKt;->mapOf([Lkotlin/Pair;)Ljava/util/Map; HSPLkotlin/collections/MapsKt__MapsKt;->plus(Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map; -HSPLkotlin/collections/MapsKt__MapsKt;->plus(Ljava/util/Map;Lkotlin/Pair;)Ljava/util/Map; HSPLkotlin/collections/MapsKt__MapsKt;->putAll(Ljava/util/Map;Ljava/lang/Iterable;)V HSPLkotlin/collections/MapsKt__MapsKt;->putAll(Ljava/util/Map;[Lkotlin/Pair;)V HSPLkotlin/collections/MapsKt__MapsKt;->toMap(Ljava/lang/Iterable;)Ljava/util/Map; @@ -19579,13 +19568,13 @@ HSPLkotlin/jvm/internal/FunctionReference;->(ILjava/lang/Object;Ljava/lang HSPLkotlin/jvm/internal/FunctionReferenceImpl;->(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V HSPLkotlin/jvm/internal/FunctionReferenceImpl;->(ILjava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V HSPLkotlin/jvm/internal/InlineMarker;->mark(I)V -HSPLkotlin/jvm/internal/Intrinsics;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z HSPLkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V HSPLkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)V HSPLkotlin/jvm/internal/Intrinsics;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V HSPLkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V HSPLkotlin/jvm/internal/Intrinsics;->compare(II)I HSPLkotlin/jvm/internal/Intrinsics;->compare(JJ)I +HSPLkotlin/jvm/internal/Lambda;->(I)V HSPLkotlin/jvm/internal/Lambda;->getArity()I HSPLkotlin/jvm/internal/MutablePropertyReference0;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V HSPLkotlin/jvm/internal/MutablePropertyReference0Impl;->(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V @@ -19651,7 +19640,6 @@ HSPLkotlin/ranges/IntProgression$Companion;->()V HSPLkotlin/ranges/IntProgression$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLkotlin/ranges/IntProgression$Companion;->fromClosedRange(III)Lkotlin/ranges/IntProgression; HSPLkotlin/ranges/IntProgression;->()V -HSPLkotlin/ranges/IntProgression;->(III)V HSPLkotlin/ranges/IntProgression;->getFirst()I HSPLkotlin/ranges/IntProgression;->getLast()I HSPLkotlin/ranges/IntProgression;->getStep()I @@ -19977,6 +19965,7 @@ HSPLkotlin/reflect/jvm/internal/KTypeImpl;->getJavaType()Ljava/lang/reflect/Type HSPLkotlin/reflect/jvm/internal/KTypeImpl;->isMarkedNullable()Z HSPLkotlin/reflect/jvm/internal/ModuleByClassLoaderKt;->()V HSPLkotlin/reflect/jvm/internal/ModuleByClassLoaderKt;->getOrCreateModule(Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/impl/descriptors/runtime/components/RuntimeModuleData; +HSPLkotlin/reflect/jvm/internal/ReflectProperties$LazySoftVal;->(Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)V HSPLkotlin/reflect/jvm/internal/ReflectProperties$LazySoftVal;->invoke()Ljava/lang/Object; HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val$1;->()V HSPLkotlin/reflect/jvm/internal/ReflectProperties$Val;->()V @@ -21297,7 +21286,6 @@ HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->hasReturnTypeI HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->hasTypeTable()Z HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->initFields()V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->isInitialized()Z -HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;->writeTo(Lkotlin/reflect/jvm/internal/impl/protobuf/CodedOutputStream;)V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$MemberKind$1;->()V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$MemberKind;->()V HSPLkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$MemberKind;->(Ljava/lang/String;III)V @@ -21808,6 +21796,7 @@ HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmNameResolve HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmNameResolverBase;->()V HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmNameResolverBase;->([Ljava/lang/String;Ljava/util/Set;Ljava/util/List;)V HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmNameResolverBase;->getQualifiedClassName(I)Ljava/lang/String; +HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmNameResolverBase;->getString(I)Ljava/lang/String; HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmNameResolverBase;->isLocalClassName(I)Z HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmNameResolverKt;->toExpandedRecordsList(Ljava/util/List;)Ljava/util/List; HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUtil;->()V @@ -21816,6 +21805,7 @@ HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUti HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUtil;->getJvmConstructorSignature(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Constructor;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/TypeTable;)Lkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmMemberSignature$Method; HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUtil;->getJvmFieldSignature$default(Lkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUtil;Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Property;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/TypeTable;ZILjava/lang/Object;)Lkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmMemberSignature$Field; HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUtil;->getJvmFieldSignature(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Property;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/TypeTable;Z)Lkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmMemberSignature$Field; +HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUtil;->getJvmMethodSignature(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/TypeTable;)Lkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmMemberSignature$Method; HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUtil;->isMovedFromInterfaceCompanion(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Property;)Z HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUtil;->mapTypeDefault(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type;Lkotlin/reflect/jvm/internal/impl/metadata/deserialization/NameResolver;)Ljava/lang/String; HSPLkotlin/reflect/jvm/internal/impl/metadata/jvm/deserialization/JvmProtoBufUtil;->readClassDataFrom([B[Ljava/lang/String;)Lkotlin/Pair; @@ -21977,17 +21967,16 @@ HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readEnum()I HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readFloat()F HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readInt32()I HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readMessage(Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite$Builder;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;)V -HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readMessage(Lkotlin/reflect/jvm/internal/impl/protobuf/Parser;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;)Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite; HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readRawByte()B HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readRawLittleEndian32()I HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readRawLittleEndian64()J -HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readRawVarint32()I HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readRawVarint32(ILjava/io/InputStream;)I HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readRawVarint64()J HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readRawVarint64SlowPath()J HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->readSInt64()J HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->recomputeBufferSizeAfterLimit()V HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->refillBuffer(I)V +HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;->tryRefillBuffer(I)Z HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedOutputStream;->(Ljava/io/OutputStream;[B)V HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedOutputStream;->computeBoolSize(IZ)I HSPLkotlin/reflect/jvm/internal/impl/protobuf/CodedOutputStream;->computeBoolSizeNoTag(Z)I @@ -22096,6 +22085,7 @@ HSPLkotlin/reflect/jvm/internal/impl/protobuf/GeneratedMessageLite;->access$100( HSPLkotlin/reflect/jvm/internal/impl/protobuf/GeneratedMessageLite;->makeExtensionsImmutable()V HSPLkotlin/reflect/jvm/internal/impl/protobuf/GeneratedMessageLite;->newRepeatedGeneratedExtension(Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite;Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite;Lkotlin/reflect/jvm/internal/impl/protobuf/Internal$EnumLiteMap;ILkotlin/reflect/jvm/internal/impl/protobuf/WireFormat$FieldType;ZLjava/lang/Class;)Lkotlin/reflect/jvm/internal/impl/protobuf/GeneratedMessageLite$GeneratedExtension; HSPLkotlin/reflect/jvm/internal/impl/protobuf/GeneratedMessageLite;->newSingularGeneratedExtension(Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite;Ljava/lang/Object;Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite;Lkotlin/reflect/jvm/internal/impl/protobuf/Internal$EnumLiteMap;ILkotlin/reflect/jvm/internal/impl/protobuf/WireFormat$FieldType;Ljava/lang/Class;)Lkotlin/reflect/jvm/internal/impl/protobuf/GeneratedMessageLite$GeneratedExtension; +HSPLkotlin/reflect/jvm/internal/impl/protobuf/GeneratedMessageLite;->parseUnknownField(Lkotlin/reflect/jvm/internal/impl/protobuf/FieldSet;Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite;Lkotlin/reflect/jvm/internal/impl/protobuf/CodedInputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/CodedOutputStream;Lkotlin/reflect/jvm/internal/impl/protobuf/ExtensionRegistryLite;I)Z HSPLkotlin/reflect/jvm/internal/impl/protobuf/LazyStringArrayList;->()V HSPLkotlin/reflect/jvm/internal/impl/protobuf/LazyStringArrayList;->()V HSPLkotlin/reflect/jvm/internal/impl/protobuf/LazyStringArrayList;->add(Lkotlin/reflect/jvm/internal/impl/protobuf/ByteString;)V @@ -22636,6 +22626,7 @@ HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeseria HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->getReceiverParameterAnnotations(Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite;Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/AnnotatedCallableKind;)Lkotlin/reflect/jvm/internal/impl/descriptors/annotations/Annotations; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->initializeWithCoroutinesExperimentalityStatus(Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/descriptors/DeserializedSimpleFunctionDescriptor;Lkotlin/reflect/jvm/internal/impl/descriptors/ReceiverParameterDescriptor;Lkotlin/reflect/jvm/internal/impl/descriptors/ReceiverParameterDescriptor;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lkotlin/reflect/jvm/internal/impl/types/KotlinType;Lkotlin/reflect/jvm/internal/impl/descriptors/Modality;Lkotlin/reflect/jvm/internal/impl/descriptors/DescriptorVisibility;Ljava/util/Map;)V HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->loadConstructor(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Constructor;Z)Lkotlin/reflect/jvm/internal/impl/descriptors/ClassConstructorDescriptor; +HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->loadFunction(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Function;)Lkotlin/reflect/jvm/internal/impl/descriptors/SimpleFunctionDescriptor; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->loadOldFlags(I)I HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->loadProperty(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Property;)Lkotlin/reflect/jvm/internal/impl/descriptors/PropertyDescriptor; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/MemberDeserializer;->valueParameters(Ljava/util/List;Lkotlin/reflect/jvm/internal/impl/protobuf/MessageLite;Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/AnnotatedCallableKind;)Ljava/util/List; @@ -22675,6 +22666,7 @@ HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeseriali HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->computeLocalClassifierReplacementType(I)Lkotlin/reflect/jvm/internal/impl/types/SimpleType; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->getOwnTypeParameters()Ljava/util/List; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->simpleType$collectAllArguments(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type;Lkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;)Ljava/util/List; +HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->simpleType(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type;Z)Lkotlin/reflect/jvm/internal/impl/types/SimpleType; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->toAttributes(Ljava/util/List;Lkotlin/reflect/jvm/internal/impl/descriptors/annotations/Annotations;Lkotlin/reflect/jvm/internal/impl/types/TypeConstructor;Lkotlin/reflect/jvm/internal/impl/descriptors/DeclarationDescriptor;)Lkotlin/reflect/jvm/internal/impl/types/TypeAttributes; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->type(Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type;)Lkotlin/reflect/jvm/internal/impl/types/KotlinType; HSPLkotlin/reflect/jvm/internal/impl/serialization/deserialization/TypeDeserializer;->typeArgument(Lkotlin/reflect/jvm/internal/impl/descriptors/TypeParameterDescriptor;Lkotlin/reflect/jvm/internal/impl/metadata/ProtoBuf$Type$Argument;)Lkotlin/reflect/jvm/internal/impl/types/TypeProjection; @@ -22892,6 +22884,7 @@ HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$KeyWithComp HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$KeyWithComputation;->equals(Ljava/lang/Object;)Z HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$KeyWithComputation;->hashCode()I HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$LockBasedLazyValue;->(Lkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager;Lkotlin/jvm/functions/Function0;)V +HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$LockBasedLazyValue;->invoke()Ljava/lang/Object; HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$LockBasedLazyValue;->postCompute(Ljava/lang/Object;)V HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$LockBasedLazyValueWithPostCompute;->(Lkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager;Lkotlin/jvm/functions/Function0;)V HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$LockBasedLazyValueWithPostCompute;->invoke()Ljava/lang/Object; @@ -22903,6 +22896,7 @@ HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$LockBasedNo HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$LockBasedNotNullLazyValueWithPostCompute;->(Lkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager;Lkotlin/jvm/functions/Function0;)V HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$LockBasedNotNullLazyValueWithPostCompute;->invoke()Ljava/lang/Object; HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$MapBasedMemoizedFunction;->(Lkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager;Ljava/util/concurrent/ConcurrentMap;Lkotlin/jvm/functions/Function1;)V +HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$MapBasedMemoizedFunction;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$MapBasedMemoizedFunctionToNotNull;->()V HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$MapBasedMemoizedFunctionToNotNull;->(Lkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager;Ljava/util/concurrent/ConcurrentMap;Lkotlin/jvm/functions/Function1;)V HSPLkotlin/reflect/jvm/internal/impl/storage/LockBasedStorageManager$MapBasedMemoizedFunctionToNotNull;->invoke(Ljava/lang/Object;)Ljava/lang/Object; @@ -23292,7 +23286,6 @@ HSPLkotlin/sequences/SequencesKt___SequencesKt;->toList(Lkotlin/sequences/Sequen HSPLkotlin/sequences/SequencesKt___SequencesKt;->toMutableList(Lkotlin/sequences/Sequence;)Ljava/util/List; HSPLkotlin/sequences/TransformingSequence$iterator$1;->(Lkotlin/sequences/TransformingSequence;)V HSPLkotlin/sequences/TransformingSequence$iterator$1;->hasNext()Z -HSPLkotlin/sequences/TransformingSequence$iterator$1;->next()Ljava/lang/Object; HSPLkotlin/sequences/TransformingSequence;->(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)V HSPLkotlin/sequences/TransformingSequence;->access$getSequence$p(Lkotlin/sequences/TransformingSequence;)Lkotlin/sequences/Sequence; HSPLkotlin/sequences/TransformingSequence;->access$getTransformer$p(Lkotlin/sequences/TransformingSequence;)Lkotlin/jvm/functions/Function1; @@ -23388,7 +23381,6 @@ HSPLkotlin/text/StringsKt__StringsJVMKt;->startsWith(Ljava/lang/String;Ljava/lan HSPLkotlin/text/StringsKt__StringsJVMKt;->startsWith(Ljava/lang/String;Ljava/lang/String;Z)Z HSPLkotlin/text/StringsKt__StringsKt$rangesDelimitedBy$2;->(Ljava/util/List;Z)V HSPLkotlin/text/StringsKt__StringsKt$rangesDelimitedBy$2;->invoke(Ljava/lang/CharSequence;I)Lkotlin/Pair; -HSPLkotlin/text/StringsKt__StringsKt$rangesDelimitedBy$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLkotlin/text/StringsKt__StringsKt$splitToSequence$1;->(Ljava/lang/CharSequence;)V HSPLkotlin/text/StringsKt__StringsKt$splitToSequence$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLkotlin/text/StringsKt__StringsKt$splitToSequence$1;->invoke(Lkotlin/ranges/IntRange;)Ljava/lang/String; @@ -24452,8 +24444,6 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->bindArguments(Lnet/zetetic HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->canonicalizeSyncMode(Ljava/lang/String;)Ljava/lang/String; HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->detachCancellationSignal(Landroid/os/CancellationSignal;)V HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)I -HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForCursorWindow(Ljava/lang/String;[Ljava/lang/Object;Landroid/database/CursorWindow;IIZLandroid/os/CancellationSignal;)I -HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForLastInsertedRowId(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->executeForString(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)Ljava/lang/String; HSPLnet/zetetic/database/sqlcipher/SQLiteConnection;->finalizePreparedStatement(Lnet/zetetic/database/sqlcipher/SQLiteConnection$PreparedStatement;)V @@ -24486,7 +24476,6 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->()V HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;)V HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->acquireConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)Lnet/zetetic/database/sqlcipher/SQLiteConnection; HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->closeExcessConnectionsAndLogExceptionsLocked()V -HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->finishAcquireConnectionLocked(Lnet/zetetic/database/sqlcipher/SQLiteConnection;I)V HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->getPriority(I)I HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->markAcquiredConnectionsLocked(Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$AcquiredConnectionStatus;)V HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->obtainConnectionWaiterLocked(Ljava/lang/Thread;JIZLjava/lang/String;I)Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$ConnectionWaiter; @@ -24499,14 +24488,13 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->recycleConnectionLocke HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->recycleConnectionWaiterLocked(Lnet/zetetic/database/sqlcipher/SQLiteConnectionPool$ConnectionWaiter;)V HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->setMaxConnectionPoolSizeLocked()V HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->throwIfClosedLocked()V +HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->tryAcquireNonPrimaryConnectionLocked(Ljava/lang/String;I)Lnet/zetetic/database/sqlcipher/SQLiteConnection; HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->tryAcquirePrimaryConnectionLocked(I)Lnet/zetetic/database/sqlcipher/SQLiteConnection; HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->waitForConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)Lnet/zetetic/database/sqlcipher/SQLiteConnection; HSPLnet/zetetic/database/sqlcipher/SQLiteConnectionPool;->wakeConnectionWaitersLocked()V HSPLnet/zetetic/database/sqlcipher/SQLiteCursor$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/String;J)Landroid/database/CursorWindow; HSPLnet/zetetic/database/sqlcipher/SQLiteCursor$$ExternalSyntheticApiModelOutline1;->m()V HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->()V -HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->(Lnet/zetetic/database/sqlcipher/SQLiteCursorDriver;Ljava/lang/String;Lnet/zetetic/database/sqlcipher/SQLiteQuery;)V -HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->awc_clearOrCreateWindow(Ljava/lang/String;)V HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->close()V HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->finalize()V HSPLnet/zetetic/database/sqlcipher/SQLiteCursor;->getColumnIndex(Ljava/lang/String;)I @@ -24539,7 +24527,6 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->hasCodec()Z HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->inTransaction()Z HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->insert(Ljava/lang/String;ILandroid/content/ContentValues;)J HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J -HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->insertWithOnConflict(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;I)J HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isMainThread()Z HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isOpen()Z HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->isReadOnly()Z @@ -24561,7 +24548,6 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->setVersion(I)V HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->throwIfNotOpenLocked()V HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->update(Ljava/lang/String;ILandroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/Object;)I HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I -HSPLnet/zetetic/database/sqlcipher/SQLiteDatabase;->updateWithOnConflict(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;I)I HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->()V HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->(Ljava/lang/String;I[BLnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;)V HSPLnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabaseConfiguration;)V @@ -24582,7 +24568,6 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->()V HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Lnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory;IILnet/zetetic/database/DatabaseErrorHandler;Lnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;Z)V HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->(Landroid/content/Context;Ljava/lang/String;[BLnet/zetetic/database/sqlcipher/SQLiteDatabase$CursorFactory;IILnet/zetetic/database/DatabaseErrorHandler;Lnet/zetetic/database/sqlcipher/SQLiteDatabaseHook;Z)V HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->getBytes(Ljava/lang/String;)[B -HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->getDatabaseLocked(Z)Lnet/zetetic/database/sqlcipher/SQLiteDatabase; HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->getReadableDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->getWritableDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; HSPLnet/zetetic/database/sqlcipher/SQLiteOpenHelper;->onConfigure(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;)V @@ -24595,7 +24580,6 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->bindString(ILjava/lang/String HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->clearBindings()V HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getBindArgs()[Ljava/lang/Object; HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getColumnNames()[Ljava/lang/String; -HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getConnectionFlags()I HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getSession()Lnet/zetetic/database/sqlcipher/SQLiteSession; HSPLnet/zetetic/database/sqlcipher/SQLiteProgram;->getSql()Ljava/lang/String; @@ -24612,20 +24596,19 @@ HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->(Lnet/zetetic/database/ HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->beginTransaction(ILnet/zetetic/database/sqlcipher/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->beginTransactionUnchecked(ILnet/zetetic/database/sqlcipher/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->endTransaction(Landroid/os/CancellationSignal;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->endTransactionUnchecked(Landroid/os/CancellationSignal;Z)V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)I HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeForCursorWindow(Ljava/lang/String;[Ljava/lang/Object;Landroid/database/CursorWindow;IIZILandroid/os/CancellationSignal;)I -HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeForLastInsertedRowId(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)J HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)J HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->executeSpecial(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)Z HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->hasTransaction()Z HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->obtainTransaction(ILnet/zetetic/database/sqlcipher/SQLiteTransactionListener;)Lnet/zetetic/database/sqlcipher/SQLiteSession$Transaction; -HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->prepare(Ljava/lang/String;ILandroid/os/CancellationSignal;Lnet/zetetic/database/sqlcipher/SQLiteStatementInfo;)V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->recycleTransaction(Lnet/zetetic/database/sqlcipher/SQLiteSession$Transaction;)V +HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->releaseConnection()V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->setTransactionSuccessful()V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->throwIfNoTransaction()V HSPLnet/zetetic/database/sqlcipher/SQLiteSession;->throwIfTransactionMarkedSuccessful()V HSPLnet/zetetic/database/sqlcipher/SQLiteStatement;->(Lnet/zetetic/database/sqlcipher/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;)V -HSPLnet/zetetic/database/sqlcipher/SQLiteStatement;->executeInsert()J HSPLnet/zetetic/database/sqlcipher/SQLiteStatement;->executeUpdateDelete()I HSPLnet/zetetic/database/sqlcipher/SQLiteStatement;->simpleQueryForLong()J HSPLnet/zetetic/database/sqlcipher/SQLiteStatementInfo;->()V @@ -24922,7 +24905,6 @@ HSPLokhttp3/OkHttpClient$Companion;->(Lkotlin/jvm/internal/DefaultConstruc HSPLokhttp3/OkHttpClient$Companion;->getDEFAULT_CONNECTION_SPECS$okhttp()Ljava/util/List; HSPLokhttp3/OkHttpClient$Companion;->getDEFAULT_PROTOCOLS$okhttp()Ljava/util/List; HSPLokhttp3/OkHttpClient;->()V -HSPLokhttp3/OkHttpClient;->(Lokhttp3/OkHttpClient$Builder;)V HSPLokhttp3/OkHttpClient;->access$getDEFAULT_CONNECTION_SPECS$cp()Ljava/util/List; HSPLokhttp3/OkHttpClient;->access$getDEFAULT_PROTOCOLS$cp()Ljava/util/List; HSPLokhttp3/OkHttpClient;->access$getSslSocketFactoryOrNull$p(Lokhttp3/OkHttpClient;)Ljavax/net/ssl/SSLSocketFactory; @@ -25462,6 +25444,7 @@ HSPLokhttp3/internal/http2/Http2Reader$ContinuationSource;->setStreamId(I)V HSPLokhttp3/internal/http2/Http2Reader;->()V HSPLokhttp3/internal/http2/Http2Reader;->(Lokio/BufferedSource;Z)V HSPLokhttp3/internal/http2/Http2Reader;->close()V +HSPLokhttp3/internal/http2/Http2Reader;->nextFrame(ZLokhttp3/internal/http2/Http2Reader$Handler;)Z HSPLokhttp3/internal/http2/Http2Reader;->readConnectionPreface(Lokhttp3/internal/http2/Http2Reader$Handler;)V HSPLokhttp3/internal/http2/Http2Reader;->readData(Lokhttp3/internal/http2/Http2Reader$Handler;III)V HSPLokhttp3/internal/http2/Http2Reader;->readHeaderBlock(IIII)Ljava/util/List; @@ -25477,6 +25460,7 @@ HSPLokhttp3/internal/http2/Http2Stream$FramingSource;->(Lokhttp3/internal/ HSPLokhttp3/internal/http2/Http2Stream$FramingSource;->close()V HSPLokhttp3/internal/http2/Http2Stream$FramingSource;->getClosed$okhttp()Z HSPLokhttp3/internal/http2/Http2Stream$FramingSource;->getFinished$okhttp()Z +HSPLokhttp3/internal/http2/Http2Stream$FramingSource;->receive$okhttp(Lokio/BufferedSource;J)V HSPLokhttp3/internal/http2/Http2Stream$FramingSource;->setFinished$okhttp(Z)V HSPLokhttp3/internal/http2/Http2Stream$FramingSource;->setTrailers(Lokhttp3/Headers;)V HSPLokhttp3/internal/http2/Http2Stream$FramingSource;->updateConnectionFlowControl(J)V @@ -25653,6 +25637,7 @@ HSPLokhttp3/internal/tls/OkHostnameVerifier;->verify(Ljava/lang/String;Ljava/sec HSPLokhttp3/internal/tls/OkHostnameVerifier;->verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z HSPLokhttp3/internal/tls/OkHostnameVerifier;->verifyHostname(Ljava/lang/String;Ljava/lang/String;)Z HSPLokhttp3/internal/tls/OkHostnameVerifier;->verifyHostname(Ljava/lang/String;Ljava/security/cert/X509Certificate;)Z +HSPLokhttp3/internal/ws/RealWebSocket$Close;->(ILokio/ByteString;J)V HSPLokhttp3/internal/ws/RealWebSocket$Companion;->()V HSPLokhttp3/internal/ws/RealWebSocket$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLokhttp3/internal/ws/RealWebSocket$connect$1;->(Lokhttp3/internal/ws/RealWebSocket;Lokhttp3/Request;)V @@ -25664,6 +25649,7 @@ HSPLokhttp3/internal/ws/RealWebSocket;->close(ILjava/lang/String;)Z HSPLokhttp3/internal/ws/RealWebSocket;->close(ILjava/lang/String;J)Z HSPLokhttp3/internal/ws/RealWebSocket;->connect(Lokhttp3/OkHttpClient;)V HSPLokhttp3/internal/ws/RealWebSocket;->failWebSocket(Ljava/lang/Exception;Lokhttp3/Response;)V +HSPLokhttp3/internal/ws/RealWebSocket;->runWriter()V HSPLokhttp3/internal/ws/WebSocketProtocol;->()V HSPLokhttp3/internal/ws/WebSocketProtocol;->()V HSPLokhttp3/internal/ws/WebSocketProtocol;->closeCodeExceptionMessage(I)Ljava/lang/String; @@ -25742,7 +25728,7 @@ HSPLokio/Buffer;->readUtf8(J)Ljava/lang/String; HSPLokio/Buffer;->setSize$okio(J)V HSPLokio/Buffer;->size()J HSPLokio/Buffer;->skip(J)V -HSPLokio/Buffer;->writableSegment$okio(I)Lokio/Segment; +HSPLokio/Buffer;->write(Lokio/Buffer;J)V HSPLokio/Buffer;->write(Lokio/ByteString;)Lokio/Buffer; HSPLokio/Buffer;->write([B)Lokio/Buffer; HSPLokio/Buffer;->write([BII)Lokio/Buffer; @@ -25871,6 +25857,7 @@ HSPLokio/RealBufferedSource;->indexOfElement(Lokio/ByteString;)J HSPLokio/RealBufferedSource;->indexOfElement(Lokio/ByteString;J)J HSPLokio/RealBufferedSource;->inputStream()Ljava/io/InputStream; HSPLokio/RealBufferedSource;->peek()Lokio/BufferedSource; +HSPLokio/RealBufferedSource;->read(Lokio/Buffer;J)J HSPLokio/RealBufferedSource;->readAll(Lokio/Sink;)J HSPLokio/RealBufferedSource;->readByte()B HSPLokio/RealBufferedSource;->readByteString(J)Lokio/ByteString; @@ -25878,6 +25865,7 @@ HSPLokio/RealBufferedSource;->readInt()I HSPLokio/RealBufferedSource;->readIntLe()I HSPLokio/RealBufferedSource;->readShort()S HSPLokio/RealBufferedSource;->readString(Ljava/nio/charset/Charset;)Ljava/lang/String; +HSPLokio/RealBufferedSource;->request(J)Z HSPLokio/RealBufferedSource;->require(J)V HSPLokio/RealBufferedSource;->select(Lokio/Options;)I HSPLokio/RealBufferedSource;->skip(J)V @@ -25886,6 +25874,7 @@ HSPLokio/Segment$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarke HSPLokio/Segment;->()V HSPLokio/Segment;->()V HSPLokio/Segment;->([BIIZZ)V +HSPLokio/Segment;->compact()V HSPLokio/Segment;->pop()Lokio/Segment; HSPLokio/Segment;->push(Lokio/Segment;)Lokio/Segment; HSPLokio/Segment;->sharedCopy()Lokio/Segment; @@ -26064,7 +26053,6 @@ HSPLorg/conscrypt/ConscryptEngine;->singleDstBuffer(Ljava/nio/ByteBuffer;)[Ljava HSPLorg/conscrypt/ConscryptEngine;->singleSrcBuffer(Ljava/nio/ByteBuffer;)[Ljava/nio/ByteBuffer; HSPLorg/conscrypt/ConscryptEngine;->transitionTo(I)V HSPLorg/conscrypt/ConscryptEngine;->unwrap(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult; -HSPLorg/conscrypt/ConscryptEngine;->unwrap([Ljava/nio/ByteBuffer;II[Ljava/nio/ByteBuffer;II)Ljavax/net/ssl/SSLEngineResult; HSPLorg/conscrypt/ConscryptEngine;->unwrap([Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult; HSPLorg/conscrypt/ConscryptEngine;->verifyCertificateChain([[BLjava/lang/String;)V HSPLorg/conscrypt/ConscryptEngine;->wrap(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult; @@ -26209,6 +26197,7 @@ HSPLorg/conscrypt/NativeSsl;->getLocalCertificates()[Ljava/security/cert/X509Cer HSPLorg/conscrypt/NativeSsl;->getMaxSealOverhead()I HSPLorg/conscrypt/NativeSsl;->getPeerCertificateOcspData()[B HSPLorg/conscrypt/NativeSsl;->getPeerTlsSctData()[B +HSPLorg/conscrypt/NativeSsl;->getPendingReadableBytes()I HSPLorg/conscrypt/NativeSsl;->getRequestedServerName()Ljava/lang/String; HSPLorg/conscrypt/NativeSsl;->getSessionId()[B HSPLorg/conscrypt/NativeSsl;->getTime()J @@ -26360,6 +26349,7 @@ HSPLorg/conscrypt/OpenSSLX509CertPath;->getCertificates()Ljava/util/List; HSPLorg/conscrypt/OpenSSLX509Certificate;->(J)V HSPLorg/conscrypt/OpenSSLX509Certificate;->alternativeNameArrayToList([[Ljava/lang/Object;)Ljava/util/Collection; HSPLorg/conscrypt/OpenSSLX509Certificate;->checkValidity(Ljava/util/Date;)V +HSPLorg/conscrypt/OpenSSLX509Certificate;->equals(Ljava/lang/Object;)Z HSPLorg/conscrypt/OpenSSLX509Certificate;->finalize()V HSPLorg/conscrypt/OpenSSLX509Certificate;->fromX509DerInputStream(Ljava/io/InputStream;)Lorg/conscrypt/OpenSSLX509Certificate; HSPLorg/conscrypt/OpenSSLX509Certificate;->getCriticalExtensionOIDs()Ljava/util/Set; @@ -26575,6 +26565,7 @@ HSPLorg/signal/core/util/Base64Tools;->encodeBytesToBytes([BIII)[B HSPLorg/signal/core/util/Base64Tools;->getAlphabet(I)[B HSPLorg/signal/core/util/Base64Tools;->getDecodabet(I)[B HSPLorg/signal/core/util/Bitmask;->checkArgument(ZLjava/lang/String;)V +HSPLorg/signal/core/util/Bitmask;->read(JII)J HSPLorg/signal/core/util/Bitmask;->twoToThe(J)J HSPLorg/signal/core/util/Bitmask;->update(JIIJ)J HSPLorg/signal/core/util/BreakIteratorCompat$AndroidIcuBreakIterator$$ExternalSyntheticApiModelOutline0;->m()Landroid/icu/text/BreakIterator; @@ -26626,7 +26617,7 @@ HSPLorg/signal/core/util/CursorUtil;->getString(Landroid/database/Cursor;Ljava/l HSPLorg/signal/core/util/CursorUtil;->isNull(Landroid/database/Cursor;Ljava/lang/String;)Z HSPLorg/signal/core/util/CursorUtil;->requireBlob(Landroid/database/Cursor;Ljava/lang/String;)[B HSPLorg/signal/core/util/CursorUtil;->requireBoolean(Landroid/database/Cursor;Ljava/lang/String;)Z -HSPLorg/signal/core/util/CursorUtil;->requireInt(Landroid/database/Cursor;Ljava/lang/String;)I +HSPLorg/signal/core/util/CursorUtil;->requireLong(Landroid/database/Cursor;Ljava/lang/String;)J HSPLorg/signal/core/util/CursorUtil;->requireString(Landroid/database/Cursor;Ljava/lang/String;)Ljava/lang/String; HSPLorg/signal/core/util/DeleteBuilderPart1;->(Landroidx/sqlite/db/SupportSQLiteDatabase;Ljava/lang/String;)V HSPLorg/signal/core/util/DeleteBuilderPart1;->where(Ljava/lang/String;[Ljava/lang/Object;)Lorg/signal/core/util/DeleteBuilderPart2; @@ -26695,6 +26686,7 @@ HSPLorg/signal/core/util/SQLiteDatabaseExtensionsKt;->insertInto(Landroidx/sqlit HSPLorg/signal/core/util/SQLiteDatabaseExtensionsKt;->select(Landroidx/sqlite/db/SupportSQLiteDatabase;[Ljava/lang/String;)Lorg/signal/core/util/SelectBuilderPart1; HSPLorg/signal/core/util/SQLiteDatabaseExtensionsKt;->update(Landroidx/sqlite/db/SupportSQLiteDatabase;Ljava/lang/String;)Lorg/signal/core/util/UpdateBuilderPart1; HSPLorg/signal/core/util/SQLiteDatabaseExtensionsKt;->updateAll(Landroidx/sqlite/db/SupportSQLiteDatabase;Ljava/lang/String;)Lorg/signal/core/util/UpdateAllBuilderPart1; +HSPLorg/signal/core/util/SelectBuilderPart1;->(Landroidx/sqlite/db/SupportSQLiteDatabase;[Ljava/lang/String;)V HSPLorg/signal/core/util/SelectBuilderPart1;->from(Ljava/lang/String;)Lorg/signal/core/util/SelectBuilderPart2; HSPLorg/signal/core/util/SelectBuilderPart2;->(Landroidx/sqlite/db/SupportSQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;)V HSPLorg/signal/core/util/SelectBuilderPart2;->orderBy(Ljava/lang/String;)Lorg/signal/core/util/SelectBuilderPart4a; @@ -26704,6 +26696,7 @@ HSPLorg/signal/core/util/SelectBuilderPart2;->where(Ljava/lang/String;[Ljava/lan HSPLorg/signal/core/util/SelectBuilderPart3;->(Landroidx/sqlite/db/SupportSQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V HSPLorg/signal/core/util/SelectBuilderPart3;->limit(I)Lorg/signal/core/util/SelectBuilderPart4b; HSPLorg/signal/core/util/SelectBuilderPart3;->orderBy(Ljava/lang/String;)Lorg/signal/core/util/SelectBuilderPart4a; +HSPLorg/signal/core/util/SelectBuilderPart3;->run()Landroid/database/Cursor; HSPLorg/signal/core/util/SelectBuilderPart4a;->(Landroidx/sqlite/db/SupportSQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V HSPLorg/signal/core/util/SelectBuilderPart4a;->limit(I)Lorg/signal/core/util/SelectBuilderPart5; HSPLorg/signal/core/util/SelectBuilderPart4a;->run()Landroid/database/Cursor; @@ -26724,6 +26717,7 @@ HSPLorg/signal/core/util/SqlUtil$Query;->getWhereArgs()[Ljava/lang/String; HSPLorg/signal/core/util/SqlUtil;->()V HSPLorg/signal/core/util/SqlUtil;->()V HSPLorg/signal/core/util/SqlUtil;->buildArgs(J)[Ljava/lang/String; +HSPLorg/signal/core/util/SqlUtil;->buildArgs([Ljava/lang/Object;)[Ljava/lang/String; HSPLorg/signal/core/util/SqlUtil;->buildCollectionQuery$default(Ljava/lang/String;Ljava/util/Collection;Ljava/lang/String;ILorg/signal/core/util/SqlUtil$CollectionOperator;ILjava/lang/Object;)Ljava/util/List; HSPLorg/signal/core/util/SqlUtil;->buildCollectionQuery(Ljava/lang/String;Ljava/util/Collection;Ljava/lang/String;ILorg/signal/core/util/SqlUtil$CollectionOperator;)Ljava/util/List; HSPLorg/signal/core/util/SqlUtil;->buildQuery(Ljava/lang/String;[Ljava/lang/Object;)Lorg/signal/core/util/SqlUtil$Query; @@ -26818,6 +26812,7 @@ HSPLorg/signal/core/util/concurrent/SettableFuture;->get(JLjava/util/concurrent/ HSPLorg/signal/core/util/concurrent/SettableFuture;->notifyAllListeners()V HSPLorg/signal/core/util/concurrent/SettableFuture;->setException(Ljava/lang/Throwable;)Z HSPLorg/signal/core/util/concurrent/SignalExecutors$$ExternalSyntheticLambda0;->()V +HSPLorg/signal/core/util/concurrent/SignalExecutors$$ExternalSyntheticLambda0;->rejectedExecution(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V HSPLorg/signal/core/util/concurrent/SignalExecutors$$ExternalSyntheticLambda1;->(Ljava/lang/String;I)V HSPLorg/signal/core/util/concurrent/SignalExecutors$$ExternalSyntheticLambda1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; HSPLorg/signal/core/util/concurrent/SignalExecutors$1;->(Ljava/lang/Runnable;Ljava/lang/String;I)V @@ -26831,8 +26826,10 @@ HSPLorg/signal/core/util/concurrent/SignalExecutors$NumberedThreadFactory;->-$$N HSPLorg/signal/core/util/concurrent/SignalExecutors$NumberedThreadFactory;->(Ljava/lang/String;I)V HSPLorg/signal/core/util/concurrent/SignalExecutors$NumberedThreadFactory;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; HSPLorg/signal/core/util/concurrent/SignalExecutors;->$r8$lambda$CjE2RMTJtH6cknGNaFsN0_4i2U4(Ljava/lang/String;ILjava/lang/Runnable;)Ljava/lang/Thread; +HSPLorg/signal/core/util/concurrent/SignalExecutors;->$r8$lambda$PuKeoHyTOgRHxCNNBi9u3dUls_w(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V HSPLorg/signal/core/util/concurrent/SignalExecutors;->()V HSPLorg/signal/core/util/concurrent/SignalExecutors;->getAndStartHandlerThread(Ljava/lang/String;I)Landroid/os/HandlerThread; +HSPLorg/signal/core/util/concurrent/SignalExecutors;->lambda$newCachedBoundedExecutor$1(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V HSPLorg/signal/core/util/concurrent/SignalExecutors;->lambda$newCachedSingleThreadExecutor$0(Ljava/lang/String;ILjava/lang/Runnable;)Ljava/lang/Thread; HSPLorg/signal/core/util/concurrent/SignalExecutors;->newCachedBoundedExecutor(Ljava/lang/String;IIII)Ljava/util/concurrent/ExecutorService; HSPLorg/signal/core/util/concurrent/SignalExecutors;->newCachedSingleThreadExecutor(Ljava/lang/String;I)Ljava/util/concurrent/ExecutorService; @@ -26945,7 +26942,6 @@ HSPLorg/signal/core/util/logging/Scrubber;->scrubUuids(Ljava/lang/CharSequence;) HSPLorg/signal/core/util/logging/Scrubber;->setIdentifierHmacKeyProvider(Lkotlin/jvm/functions/Function0;)V HSPLorg/signal/core/util/stream/LimitedInputStream$$ExternalSyntheticBackport0;->m(J)I HSPLorg/signal/core/util/tracing/DebugAnnotation$Builder;->()V -HSPLorg/signal/core/util/tracing/DebugAnnotation$Builder;->build()Lorg/signal/core/util/tracing/DebugAnnotation; HSPLorg/signal/core/util/tracing/DebugAnnotation$Builder;->name(Ljava/lang/String;)Lorg/signal/core/util/tracing/DebugAnnotation$Builder; HSPLorg/signal/core/util/tracing/DebugAnnotation$Builder;->string_value(Ljava/lang/String;)Lorg/signal/core/util/tracing/DebugAnnotation$Builder; HSPLorg/signal/core/util/tracing/DebugAnnotation$Companion$ADAPTER$1;->(Lcom/squareup/wire/FieldEncoding;Lkotlin/reflect/KClass;Lcom/squareup/wire/Syntax;)V @@ -26970,6 +26966,7 @@ HSPLorg/signal/core/util/tracing/Tracer$$ExternalSyntheticLambda0;->getTimeNanos HSPLorg/signal/core/util/tracing/Tracer;->()V HSPLorg/signal/core/util/tracing/Tracer;->()V HSPLorg/signal/core/util/tracing/Tracer;->addPacket(Lorg/signal/core/util/tracing/TracePacket;)V +HSPLorg/signal/core/util/tracing/Tracer;->debugAnnotation(Ljava/lang/String;Ljava/lang/String;)Lorg/signal/core/util/tracing/DebugAnnotation; HSPLorg/signal/core/util/tracing/Tracer;->end(Ljava/lang/String;J)V HSPLorg/signal/core/util/tracing/Tracer;->forMethodStart(Ljava/lang/String;JJLjava/util/Map;)Lorg/signal/core/util/tracing/TracePacket; HSPLorg/signal/core/util/tracing/Tracer;->forSynchronization(J)Lorg/signal/core/util/tracing/TracePacket; @@ -26977,6 +26974,7 @@ HSPLorg/signal/core/util/tracing/Tracer;->forTrack(JLjava/lang/String;)Lorg/sign HSPLorg/signal/core/util/tracing/Tracer;->forTrackId(J)Lorg/signal/core/util/tracing/TracePacket; HSPLorg/signal/core/util/tracing/Tracer;->getInstance()Lorg/signal/core/util/tracing/Tracer; HSPLorg/signal/core/util/tracing/Tracer;->start(Ljava/lang/String;)V +HSPLorg/signal/core/util/tracing/Tracer;->start(Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;)V HSPLorg/signal/core/util/tracing/Tracer;->start(Ljava/lang/String;JLjava/util/Map;)V HSPLorg/signal/core/util/tracing/Tracer;->start(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V HSPLorg/signal/core/util/tracing/Tracer;->start(Ljava/lang/String;Ljava/util/Map;)V @@ -27668,6 +27666,7 @@ HSPLorg/thoughtcrime/securesms/attachments/PointerAttachment$Companion;->( HSPLorg/thoughtcrime/securesms/attachments/PointerAttachment$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/attachments/PointerAttachment$Companion;->forPointer$default(Lorg/thoughtcrime/securesms/attachments/PointerAttachment$Companion;Lj$/util/Optional;Lorg/thoughtcrime/securesms/stickers/StickerLocator;Ljava/lang/String;IILjava/lang/Object;)Lj$/util/Optional; HSPLorg/thoughtcrime/securesms/attachments/PointerAttachment$Companion;->forPointer(Lj$/util/Optional;Lorg/thoughtcrime/securesms/stickers/StickerLocator;Ljava/lang/String;I)Lj$/util/Optional; +HSPLorg/thoughtcrime/securesms/attachments/PointerAttachment$Companion;->forPointers(Lj$/util/Optional;)Ljava/util/List; HSPLorg/thoughtcrime/securesms/attachments/PointerAttachment;->()V HSPLorg/thoughtcrime/securesms/attachments/PointerAttachment;->(Ljava/lang/String;IJLjava/lang/String;Lorg/thoughtcrime/securesms/attachments/Cdn;Ljava/lang/String;Ljava/lang/String;[B[B[BILjava/lang/String;ZZZIIJLjava/lang/String;Lorg/thoughtcrime/securesms/stickers/StickerLocator;Lorg/thoughtcrime/securesms/blurhash/BlurHash;Ljava/util/UUID;)V HSPLorg/thoughtcrime/securesms/attachments/PointerAttachment;->getUri()Landroid/net/Uri; @@ -27883,6 +27882,7 @@ HSPLorg/thoughtcrime/securesms/banner/ui/compose/DefaultBannerKt$DefaultBanner$1 HSPLorg/thoughtcrime/securesms/banner/ui/compose/DefaultBannerKt$DefaultBanner$1$1$1$2$1;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V HSPLorg/thoughtcrime/securesms/banner/ui/compose/DefaultBannerKt$DefaultBanner$1$1$1$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/banner/ui/compose/DefaultBannerKt$WhenMappings;->()V +HSPLorg/thoughtcrime/securesms/banner/ui/compose/DefaultBannerKt;->DefaultBanner(Ljava/lang/String;Ljava/lang/String;Lorg/thoughtcrime/securesms/banner/ui/compose/Importance;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Ljava/util/List;ZLjava/lang/String;ILandroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/runtime/Composer;II)V HSPLorg/thoughtcrime/securesms/banner/ui/compose/Importance;->$values()[Lorg/thoughtcrime/securesms/banner/ui/compose/Importance; HSPLorg/thoughtcrime/securesms/banner/ui/compose/Importance;->()V HSPLorg/thoughtcrime/securesms/banner/ui/compose/Importance;->(Ljava/lang/String;I)V @@ -28034,12 +28034,12 @@ HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->ellipsizeEmojiTe HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->hasMetricAffectingSpan(Ljava/lang/CharSequence;)Z HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->isEllipsizedAtEnd()Z +HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->isSingleLine()Z HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->lambda$ellipsizeEmojiTextForMaxLines$2()V HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->lambda$ellipsizeEmojiTextForMaxLines$3(Ljava/lang/Runnable;Landroid/view/View;)Lkotlin/Unit; HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->onDraw(Landroid/graphics/Canvas;)V HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->onMeasure(II)V HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->onSizeChanged(IIII)V -HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)V HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->unchanged(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)Z HSPLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->useSystemEmoji()Z HSPLorg/thoughtcrime/securesms/components/emoji/SimpleEmojiTextView$$ExternalSyntheticLambda0;->(IILorg/thoughtcrime/securesms/components/emoji/SimpleEmojiTextView;)V @@ -28090,6 +28090,7 @@ HSPLorg/thoughtcrime/securesms/components/emoji/parsing/EmojiTree$Matches;->exactMatch()Z HSPLorg/thoughtcrime/securesms/components/emoji/parsing/EmojiTree$Matches;->impossibleMatch()Z HSPLorg/thoughtcrime/securesms/components/emoji/parsing/EmojiTree;->()V +HSPLorg/thoughtcrime/securesms/components/emoji/parsing/EmojiTree;->add(Ljava/lang/String;Lorg/thoughtcrime/securesms/components/emoji/parsing/EmojiDrawInfo;)V HSPLorg/thoughtcrime/securesms/components/emoji/parsing/EmojiTree;->getEmoji(Ljava/lang/CharSequence;II)Lorg/thoughtcrime/securesms/components/emoji/parsing/EmojiDrawInfo; HSPLorg/thoughtcrime/securesms/components/emoji/parsing/EmojiTree;->isEmoji(Ljava/lang/CharSequence;II)Lorg/thoughtcrime/securesms/components/emoji/parsing/EmojiTree$Matches; HSPLorg/thoughtcrime/securesms/components/emoji/parsing/Fitzpatrick;->$values()[Lorg/thoughtcrime/securesms/components/emoji/parsing/Fitzpatrick; @@ -28471,6 +28472,7 @@ HSPLorg/thoughtcrime/securesms/conversation/ConversationItem$ViewOnceMessageClic HSPLorg/thoughtcrime/securesms/conversation/ConversationItem;->()V HSPLorg/thoughtcrime/securesms/conversation/ConversationItem;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLorg/thoughtcrime/securesms/conversation/ConversationItem;->initializeAttributes()V +HSPLorg/thoughtcrime/securesms/conversation/ConversationItem;->onFinishInflate()V HSPLorg/thoughtcrime/securesms/conversation/ConversationItem;->setOnClickListener(Landroid/view/View$OnClickListener;)V HSPLorg/thoughtcrime/securesms/conversation/ConversationItemBodyBubble$$ExternalSyntheticBackport0;->m(Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/conversation/ConversationItemBodyBubble$$ExternalSyntheticLambda2;->()V @@ -28570,7 +28572,6 @@ HSPLorg/thoughtcrime/securesms/conversationlist/ChatFolderAdapter;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ChatFolderAdapter;->(Lorg/thoughtcrime/securesms/conversationlist/ChatFolderAdapter$Callbacks;)V HSPLorg/thoughtcrime/securesms/conversationlist/ChatFolderMappingModel;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ChatFolderMappingModel;->(Lorg/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFolderRecord;Z)V -HSPLorg/thoughtcrime/securesms/conversationlist/ChatFolderMappingModel;->equals(Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->()V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->onTouchEvent(Landroidx/coordinatorlayout/widget/CoordinatorLayout;Landroid/view/View;Landroid/view/MotionEvent;)Z @@ -29152,7 +29153,9 @@ HSPLorg/thoughtcrime/securesms/database/AttachmentTable$TransformProperties;->ac HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->()V HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;Lorg/thoughtcrime/securesms/crypto/AttachmentSecret;)V HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->deleteAbandonedPreuploadedAttachments()I +HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->getAttachment(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/attachments/DatabaseAttachment; HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->getAttachment(Lorg/thoughtcrime/securesms/attachments/AttachmentId;)Lorg/thoughtcrime/securesms/attachments/DatabaseAttachment; +HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->getAttachments(Landroid/database/Cursor;)Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->getAttachmentsForMessage(J)Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->insertAttachmentsForMessage(JLjava/util/List;Ljava/util/List;)Ljava/util/Map; HSPLorg/thoughtcrime/securesms/database/AttachmentTable;->insertUndownloadedAttachment(JLorg/thoughtcrime/securesms/attachments/Attachment;Z)Lorg/thoughtcrime/securesms/attachments/AttachmentId; @@ -29282,6 +29285,7 @@ HSPLorg/thoughtcrime/securesms/database/DatabaseObserver;->runPostSuccessfulTran HSPLorg/thoughtcrime/securesms/database/DatabaseTable;->()V HSPLorg/thoughtcrime/securesms/database/DatabaseTable;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/SignalDatabase;)V HSPLorg/thoughtcrime/securesms/database/DatabaseTable;->getReadableDatabase()Lorg/thoughtcrime/securesms/database/SQLiteDatabase; +HSPLorg/thoughtcrime/securesms/database/DatabaseTable;->getWritableDatabase()Lorg/thoughtcrime/securesms/database/SQLiteDatabase; HSPLorg/thoughtcrime/securesms/database/DatabaseTable;->notifyConversationListListeners()V HSPLorg/thoughtcrime/securesms/database/DatabaseTable;->notifyConversationListeners(J)V HSPLorg/thoughtcrime/securesms/database/DistributionListTables$Companion;->()V @@ -29471,6 +29475,7 @@ HSPLorg/thoughtcrime/securesms/database/LogDatabase$LogTable;->(Lorg/thoug HSPLorg/thoughtcrime/securesms/database/LogDatabase$LogTable;->getReadableDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; HSPLorg/thoughtcrime/securesms/database/LogDatabase$LogTable;->getSize(Ljava/lang/String;[Ljava/lang/String;)J HSPLorg/thoughtcrime/securesms/database/LogDatabase$LogTable;->getWritableDatabase()Lnet/zetetic/database/sqlcipher/SQLiteDatabase; +HSPLorg/thoughtcrime/securesms/database/LogDatabase$LogTable;->insert(Ljava/util/List;J)V HSPLorg/thoughtcrime/securesms/database/LogDatabase$LogTable;->trimToSize()V HSPLorg/thoughtcrime/securesms/database/LogDatabase$anrs$2;->(Lorg/thoughtcrime/securesms/database/LogDatabase;)V HSPLorg/thoughtcrime/securesms/database/LogDatabase$crashes$2;->(Lorg/thoughtcrime/securesms/database/LogDatabase;)V @@ -29608,7 +29613,6 @@ HSPLorg/thoughtcrime/securesms/database/MessageTable;->getUnreadMentionCount(J)I HSPLorg/thoughtcrime/securesms/database/MessageTable;->getUnreadStoryThreadRecipientIds()Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/MessageTable;->hasFailedOutgoingStory()Z HSPLorg/thoughtcrime/securesms/database/MessageTable;->hasMeaningfulMessage(J)Z -HSPLorg/thoughtcrime/securesms/database/MessageTable;->insertMediaMessage(JLjava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lorg/thoughtcrime/securesms/database/model/databaseprotos/BodyRangeList;Landroid/content/ContentValues;Lorg/thoughtcrime/securesms/database/MessageTable$InsertListener;ZZ)Lkotlin/Pair; HSPLorg/thoughtcrime/securesms/database/MessageTable;->insertMessageInbox$default(Lorg/thoughtcrime/securesms/database/MessageTable;Lorg/thoughtcrime/securesms/mms/IncomingMessage;JLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;ZILjava/lang/Object;)Lj$/util/Optional; HSPLorg/thoughtcrime/securesms/database/MessageTable;->mmsReaderFor(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/database/MessageTable$MmsReader; HSPLorg/thoughtcrime/securesms/database/MessageTable;->rawQueryWithAttachments$default(Lorg/thoughtcrime/securesms/database/MessageTable;Ljava/lang/String;[Ljava/lang/String;ZJILjava/lang/Object;)Landroid/database/Cursor; @@ -29849,6 +29853,7 @@ HSPLorg/thoughtcrime/securesms/database/RecipientTable;->markRegistered(Lorg/tho HSPLorg/thoughtcrime/securesms/database/RecipientTable;->markRegisteredOrThrow(Lorg/thoughtcrime/securesms/recipients/RecipientId;Lorg/whispersystems/signalservice/api/push/ServiceId;)V HSPLorg/thoughtcrime/securesms/database/RecipientTable;->processPnpTuple(Ljava/lang/String;Lorg/whispersystems/signalservice/api/push/ServiceId$PNI;Lorg/whispersystems/signalservice/api/push/ServiceId$ACI;ZZ)Lorg/thoughtcrime/securesms/database/RecipientTable$ProcessPnpTupleResult; HSPLorg/thoughtcrime/securesms/database/RecipientTable;->processPnpTupleToChangeSet(Ljava/lang/String;Lorg/whispersystems/signalservice/api/push/ServiceId$PNI;Lorg/whispersystems/signalservice/api/push/ServiceId$ACI;ZZ)Lorg/thoughtcrime/securesms/database/PnpChangeSet; +HSPLorg/thoughtcrime/securesms/database/RecipientTable;->rotateStorageId(Lorg/thoughtcrime/securesms/recipients/RecipientId;)V HSPLorg/thoughtcrime/securesms/database/RecipientTable;->setCapabilities(Lorg/thoughtcrime/securesms/recipients/RecipientId;Lorg/whispersystems/signalservice/api/profiles/SignalServiceProfile$Capabilities;)V HSPLorg/thoughtcrime/securesms/database/RecipientTable;->setMuted(Lorg/thoughtcrime/securesms/recipients/RecipientId;J)V HSPLorg/thoughtcrime/securesms/database/RecipientTable;->setProfileAvatar(Lorg/thoughtcrime/securesms/recipients/RecipientId;Ljava/lang/String;)V @@ -29886,6 +29891,7 @@ HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->getExtras(Lan HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->getRecipientExtras(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/database/model/databaseprotos/RecipientExtras; HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->getRecord(Landroid/content/Context;Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/database/model/RecipientRecord; HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->getSyncExtras$lambda$6(Lkotlin/jvm/functions/Function1;Ljava/lang/Object;)Ljava/lang/Boolean; +HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->getSyncExtras(Landroid/database/Cursor;)Lorg/thoughtcrime/securesms/database/model/RecipientRecord$SyncExtras; HSPLorg/thoughtcrime/securesms/database/RecipientTableCursorUtil;->parseBadgeList([B)Ljava/util/List; HSPLorg/thoughtcrime/securesms/database/RemappedRecordTables$Companion;->()V HSPLorg/thoughtcrime/securesms/database/RemappedRecordTables$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -29904,7 +29910,6 @@ HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$$ExternalSyntheticLam HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$$ExternalSyntheticLambda1;->(Lkotlin/jvm/functions/Function1;)V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$$ExternalSyntheticLambda1;->subscribe(Lio/reactivex/rxjava3/core/FlowableEmitter;)V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$RxObserver;->(Lio/reactivex/rxjava3/core/Emitter;)V -HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$RxObserver;->onChanged()V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$RxObserver;->prime()V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$chatFolders$2;->()V HSPLorg/thoughtcrime/securesms/database/RxDatabaseObserver$chatFolders$2;->()V @@ -30032,7 +30037,6 @@ HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->setTransactionSuccessfu HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->trace(Ljava/lang/String;Ljava/lang/Runnable;)V HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->traceLockEnd()V HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->traceLockStart()V -HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->traceSql(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLorg/thoughtcrime/securesms/database/SQLiteDatabase$Returnable;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->traceSql(Ljava/lang/String;Ljava/lang/String;ZLjava/lang/Runnable;)V HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->traceSql(Ljava/lang/String;Ljava/lang/String;ZLorg/thoughtcrime/securesms/database/SQLiteDatabase$Returnable;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/database/SQLiteDatabase;->update(Ljava/lang/String;ILandroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/Object;)I @@ -30382,7 +30386,6 @@ HSPLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails$Companion HSPLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;->()V HSPLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;->(JJ)V -HSPLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;->equals(Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;->getDiskCacheKeyBytes()[B HSPLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;->hashCode()I HSPLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;->toString()Ljava/lang/String; @@ -30887,6 +30890,7 @@ HSPLorg/thoughtcrime/securesms/emoji/EmojiFiles;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiFiles;->getBaseDirectory(Landroid/content/Context;)Ljava/io/File; HSPLorg/thoughtcrime/securesms/emoji/EmojiFiles;->getLatestEmojiData(Landroid/content/Context;Lorg/thoughtcrime/securesms/emoji/EmojiFiles$Version;)Lorg/thoughtcrime/securesms/emoji/ParsedEmojiData; HSPLorg/thoughtcrime/securesms/emoji/EmojiFiles;->getMd5(Landroid/content/Context;Lorg/thoughtcrime/securesms/emoji/EmojiFiles$Version;Ljava/util/UUID;)[B +HSPLorg/thoughtcrime/securesms/emoji/EmojiFiles;->openForReading(Landroid/content/Context;Ljava/lang/String;)Ljava/io/InputStream; HSPLorg/thoughtcrime/securesms/emoji/EmojiFiles;->openForWriting(Landroid/content/Context;Lorg/thoughtcrime/securesms/emoji/EmojiFiles$Version;Ljava/util/UUID;)Ljava/io/OutputStream; HSPLorg/thoughtcrime/securesms/emoji/EmojiFilesKt;->access$getEmojiDirectory(Landroid/content/Context;)Ljava/io/File; HSPLorg/thoughtcrime/securesms/emoji/EmojiFilesKt;->access$getFilesUri(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri; @@ -30925,6 +30929,7 @@ HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->access$createPage(Lorg/thoughtcrime/securesms/emoji/EmojiJsonParser;Ljava/lang/String;Ljava/lang/String;Lcom/fasterxml/jackson/databind/JsonNode;Lkotlin/jvm/functions/Function2;)Lorg/thoughtcrime/securesms/components/emoji/EmojiPageModel; HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->buildEmojiSourceFromNode(Lcom/fasterxml/jackson/databind/JsonNode;Lkotlin/jvm/functions/Function2;)Lorg/thoughtcrime/securesms/emoji/ParsedEmojiData; +HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->createPage(Ljava/lang/String;Ljava/lang/String;Lcom/fasterxml/jackson/databind/JsonNode;Lkotlin/jvm/functions/Function2;)Lorg/thoughtcrime/securesms/components/emoji/EmojiPageModel; HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->getDataPages$lambda$0(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Ljava/lang/Object;)I HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->getDataPages(Ljava/lang/String;Lcom/fasterxml/jackson/databind/JsonNode;Lkotlin/jvm/functions/Function2;)Ljava/util/List; HSPLorg/thoughtcrime/securesms/emoji/EmojiJsonParser;->getJumboPages(Lcom/fasterxml/jackson/databind/JsonNode;)Ljava/util/Map; @@ -30950,12 +30955,12 @@ HSPLorg/thoughtcrime/securesms/emoji/EmojiMetrics;->(III)V HSPLorg/thoughtcrime/securesms/emoji/EmojiMetrics;->getPerRow()I HSPLorg/thoughtcrime/securesms/emoji/EmojiMetrics;->getRawHeight()I HSPLorg/thoughtcrime/securesms/emoji/EmojiMetrics;->getRawWidth()I -HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Asset;->()V -HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Asset;->(Landroid/net/Uri;)V -HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Asset;->equals(Ljava/lang/Object;)Z -HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Asset;->getUri()Landroid/net/Uri; -HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Asset;->hashCode()I -HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Asset;->toString()Ljava/lang/String; +HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->()V +HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->(Landroid/net/Uri;)V +HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->equals(Ljava/lang/Object;)Z +HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->getUri()Landroid/net/Uri; +HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->hashCode()I +HSPLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->toString()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/emoji/EmojiPage;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiPage;->(Landroid/net/Uri;)V HSPLorg/thoughtcrime/securesms/emoji/EmojiPage;->(Landroid/net/Uri;Lkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -30995,14 +31000,14 @@ HSPLorg/thoughtcrime/securesms/emoji/EmojiRemote;->getObject(Lorg/thoughtcrime/s HSPLorg/thoughtcrime/securesms/emoji/EmojiRemote;->getVersion()I HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadAssetBasedEmojis$1$1;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadAssetBasedEmojis$1$1;->()V -HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadAssetBasedEmojis$1$1;->invoke(Landroid/net/Uri;)Lorg/thoughtcrime/securesms/emoji/EmojiPage; -HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadAssetBasedEmojis$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadAssetBasedEmojis$1$parsedData$1;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadAssetBasedEmojis$1$parsedData$1;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadAssetBasedEmojis$1$parsedData$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadAssetBasedEmojis$1$parsedData$1;->invoke(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri; HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadRemoteBasedEmojis$1$1;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadRemoteBasedEmojis$1$1;->()V +HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadRemoteBasedEmojis$1$1;->invoke(Landroid/net/Uri;)Lorg/thoughtcrime/securesms/emoji/EmojiPage; +HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadRemoteBasedEmojis$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion;->()V HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion;->getEmojiSource()Lorg/thoughtcrime/securesms/emoji/EmojiSource; @@ -31065,7 +31070,6 @@ HSPLorg/thoughtcrime/securesms/fonts/FontFileMap;->()V HSPLorg/thoughtcrime/securesms/fonts/FontFileMap;->(Ljava/util/Map;)V HSPLorg/thoughtcrime/securesms/fonts/FontFileMap;->access$getObjectMapper$cp()Lcom/fasterxml/jackson/databind/ObjectMapper; HSPLorg/thoughtcrime/securesms/fonts/FontFileMap;->access$getTAG$cp()Ljava/lang/String; -HSPLorg/thoughtcrime/securesms/fonts/FontFileMap;->copy(Ljava/util/Map;)Lorg/thoughtcrime/securesms/fonts/FontFileMap; HSPLorg/thoughtcrime/securesms/fonts/FontFileMap;->getMap()Ljava/util/Map; HSPLorg/thoughtcrime/securesms/fonts/FontManifest$Companion;->()V HSPLorg/thoughtcrime/securesms/fonts/FontManifest$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -31221,8 +31225,11 @@ HSPLorg/thoughtcrime/securesms/jobmanager/ConstraintInstantiator;->(Ljava/ HSPLorg/thoughtcrime/securesms/jobmanager/ConstraintInstantiator;->instantiate(Ljava/lang/String;)Lorg/thoughtcrime/securesms/jobmanager/Constraint; HSPLorg/thoughtcrime/securesms/jobmanager/CoroutineJob;->()V HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler$$ExternalSyntheticLambda0;->(Lorg/thoughtcrime/securesms/jobmanager/InAppScheduler;)V +HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler$$ExternalSyntheticLambda0;->run()V +HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler;->$r8$lambda$0KH5iNLdy2DvUxriNkEuWXyJtWM(Lorg/thoughtcrime/securesms/jobmanager/InAppScheduler;)V HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler;->()V HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler;->(Lorg/thoughtcrime/securesms/jobmanager/JobManager;)V +HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler;->lambda$schedule$0()V HSPLorg/thoughtcrime/securesms/jobmanager/InAppScheduler;->schedule(JLjava/util/List;)V HSPLorg/thoughtcrime/securesms/jobmanager/Job$1;->()V HSPLorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder;->()V @@ -31269,7 +31276,6 @@ HSPLorg/thoughtcrime/securesms/jobmanager/Job$Result;->success([B)Lorg/thoughtcr HSPLorg/thoughtcrime/securesms/jobmanager/Job$Result;->toString()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/jobmanager/Job;->()V HSPLorg/thoughtcrime/securesms/jobmanager/Job;->(Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters;)V -HSPLorg/thoughtcrime/securesms/jobmanager/Job;->defaultBackoff()J HSPLorg/thoughtcrime/securesms/jobmanager/Job;->getId()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/jobmanager/Job;->getLastRunAttemptTime()J HSPLorg/thoughtcrime/securesms/jobmanager/Job;->getNextBackoffInterval()J @@ -31907,7 +31913,6 @@ HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->deleteJobs(Ljava/util/List; HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->getConstraintSpecs(Ljava/lang/String;)Ljava/util/List; HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->getDependencySpecsThatDependOnJob(Ljava/lang/String;)Ljava/util/List; HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->getJobCountForFactory(Ljava/lang/String;)I -HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->getJobCountForFactoryAndQueue(Ljava/lang/String;Ljava/lang/String;)I HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->getJobSpec(Ljava/lang/String;)Lorg/thoughtcrime/securesms/jobmanager/persistence/JobSpec; HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->getSingleLayerOfDependencySpecsThatDependOnJob(Ljava/lang/String;)Ljava/util/List; HSPLorg/thoughtcrime/securesms/jobs/FastJobStorage;->hasEligibleRunTime(Lorg/thoughtcrime/securesms/jobs/MinimalJobSpec;J)Z @@ -32018,16 +32023,9 @@ HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob$Companion;->enqueueIfNecessary()V HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob$Factory;->()V -HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob$Factory;->create(Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters;[B)Lorg/thoughtcrime/securesms/jobmanager/Job; -HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob$Factory;->create(Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters;[B)Lorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob; HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->()V -HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->(Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters;)V -HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->(Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters;ILkotlin/jvm/internal/DefaultConstructorMarker;)V -HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->(Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters;Lkotlin/jvm/internal/DefaultConstructorMarker;)V +HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->access$getTAG$cp()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->enqueueIfNecessary()V -HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->getFactoryKey()Ljava/lang/String; -HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->run()Lorg/thoughtcrime/securesms/jobmanager/Job$Result; -HSPLorg/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob;->serialize()[B HSPLorg/thoughtcrime/securesms/jobs/LocalArchiveJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/LocalArchiveJob$Factory;->()V HSPLorg/thoughtcrime/securesms/jobs/LocalBackupJob$Factory;->()V @@ -32514,7 +32512,6 @@ HSPLorg/thoughtcrime/securesms/keyvalue/MiscellaneousValues;->getLastForegroundT HSPLorg/thoughtcrime/securesms/keyvalue/MiscellaneousValues;->getLastKnownServerTimeOffset()J HSPLorg/thoughtcrime/securesms/keyvalue/MiscellaneousValues;->getLastWebSocketConnectTime()J HSPLorg/thoughtcrime/securesms/keyvalue/MiscellaneousValues;->getLeastActiveLinkedDevice()Lorg/thoughtcrime/securesms/keyvalue/protos/LeastActiveLinkedDevice; -HSPLorg/thoughtcrime/securesms/keyvalue/MiscellaneousValues;->getLinkedDeviceLastActiveCheckTime()J HSPLorg/thoughtcrime/securesms/keyvalue/MiscellaneousValues;->getNextDatabaseAnalysisTime()J HSPLorg/thoughtcrime/securesms/keyvalue/MiscellaneousValues;->getShouldShowLinkedDevicesReminder()Z HSPLorg/thoughtcrime/securesms/keyvalue/MiscellaneousValues;->isCdsBlocked()Z @@ -32633,6 +32630,7 @@ HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->phoneNumberPriva HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->proxy()Lorg/thoughtcrime/securesms/keyvalue/ProxyValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->rateLimit()Lorg/thoughtcrime/securesms/keyvalue/RateLimitValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->registration()Lorg/thoughtcrime/securesms/keyvalue/RegistrationValues; +HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->releaseChannel()Lorg/thoughtcrime/securesms/keyvalue/ReleaseChannelValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->settings()Lorg/thoughtcrime/securesms/keyvalue/SettingsValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->storageService()Lorg/thoughtcrime/securesms/keyvalue/StorageServiceValues; HSPLorg/thoughtcrime/securesms/keyvalue/SignalStore$Companion;->story()Lorg/thoughtcrime/securesms/keyvalue/StoryValues; @@ -32776,11 +32774,9 @@ HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->()V HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->(Landroid/app/Application;)V HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->d(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;Z)V HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->flush()V -HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->getThreadString()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;Z)V HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->v(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;Z)V HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;Z)V -HSPLorg/thoughtcrime/securesms/logging/PersistentLogger;->write(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;Z)V HSPLorg/thoughtcrime/securesms/main/MainActivityListHostFragment$$ExternalSyntheticLambda2;->(Lorg/thoughtcrime/securesms/main/MainActivityListHostFragment;)V HSPLorg/thoughtcrime/securesms/main/MainActivityListHostFragment$$ExternalSyntheticLambda3;->(Lorg/thoughtcrime/securesms/main/MainActivityListHostFragment;)V HSPLorg/thoughtcrime/securesms/main/MainActivityListHostFragment$$ExternalSyntheticLambda4;->(Lorg/thoughtcrime/securesms/main/MainActivityListHostFragment;)V @@ -33228,6 +33224,7 @@ HSPLorg/thoughtcrime/securesms/mms/IncomingMessage;->isGroupMessage()Z HSPLorg/thoughtcrime/securesms/mms/IncomingMessage;->isUnidentified()Z HSPLorg/thoughtcrime/securesms/mms/IncomingMessage;->isViewOnce()Z HSPLorg/thoughtcrime/securesms/mms/PartAuthority;->()V +HSPLorg/thoughtcrime/securesms/mms/PartAuthority;->getEmojiFilename(Landroid/net/Uri;)Ljava/lang/String; HSPLorg/thoughtcrime/securesms/mms/PartAuthority;->getEmojiUri(Ljava/lang/String;)Landroid/net/Uri; HSPLorg/thoughtcrime/securesms/mms/SentMediaQuality;->$values()[Lorg/thoughtcrime/securesms/mms/SentMediaQuality; HSPLorg/thoughtcrime/securesms/mms/SentMediaQuality;->()V @@ -33256,6 +33253,7 @@ HSPLorg/thoughtcrime/securesms/mms/SlideDeck;->(Ljava/util/List;)V HSPLorg/thoughtcrime/securesms/mms/SlideDeck;->getAudioSlide()Lorg/thoughtcrime/securesms/mms/AudioSlide; HSPLorg/thoughtcrime/securesms/mms/SlideDeck;->getDocumentSlide()Lorg/thoughtcrime/securesms/mms/DocumentSlide; HSPLorg/thoughtcrime/securesms/mms/SlideDeck;->getSlides()Ljava/util/List; +HSPLorg/thoughtcrime/securesms/mms/SlideDeck;->getStickerSlide()Lorg/thoughtcrime/securesms/mms/StickerSlide; HSPLorg/thoughtcrime/securesms/mms/SlideDeck;->getThumbnailSlide()Lorg/thoughtcrime/securesms/mms/Slide; HSPLorg/thoughtcrime/securesms/net/ContentProxySafetyInterceptor;->()V HSPLorg/thoughtcrime/securesms/net/ContentProxySafetyInterceptor;->()V @@ -33448,7 +33446,6 @@ HSPLorg/thoughtcrime/securesms/profiles/ProfileName;->$r8$lambda$89Je_6vi7AmVM-Z HSPLorg/thoughtcrime/securesms/profiles/ProfileName;->()V HSPLorg/thoughtcrime/securesms/profiles/ProfileName;->(Ljava/lang/String;Ljava/lang/String;)V HSPLorg/thoughtcrime/securesms/profiles/ProfileName;->asGiven(Ljava/lang/String;)Lorg/thoughtcrime/securesms/profiles/ProfileName; -HSPLorg/thoughtcrime/securesms/profiles/ProfileName;->equals(Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/profiles/ProfileName;->fromParts(Ljava/lang/String;Ljava/lang/String;)Lorg/thoughtcrime/securesms/profiles/ProfileName; HSPLorg/thoughtcrime/securesms/profiles/ProfileName;->getFamilyName()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/profiles/ProfileName;->getGivenName()Ljava/lang/String; @@ -33563,7 +33560,6 @@ HSPLorg/thoughtcrime/securesms/reactions/ReactionsConversationView;->(Land HSPLorg/thoughtcrime/securesms/reactions/ReactionsConversationView;->init(Landroid/util/AttributeSet;)V HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda0;->(Lorg/thoughtcrime/securesms/recipients/LiveRecipient;)V HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda1;->()V -HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda1;->contentsMatch(Ljava/lang/Object;Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda2;->()V HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda3;->()V @@ -33617,7 +33613,6 @@ HSPLorg/thoughtcrime/securesms/recipients/Recipient$Capability;->(Ljava/la HSPLorg/thoughtcrime/securesms/recipients/Recipient$Capability;->serialize()I HSPLorg/thoughtcrime/securesms/recipients/Recipient$Companion;->()V HSPLorg/thoughtcrime/securesms/recipients/Recipient$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V -HSPLorg/thoughtcrime/securesms/recipients/Recipient$Companion;->live(Lorg/thoughtcrime/securesms/recipients/RecipientId;)Lorg/thoughtcrime/securesms/recipients/LiveRecipient; HSPLorg/thoughtcrime/securesms/recipients/Recipient$Companion;->resolved(Lorg/thoughtcrime/securesms/recipients/RecipientId;)Lorg/thoughtcrime/securesms/recipients/Recipient; HSPLorg/thoughtcrime/securesms/recipients/Recipient$Companion;->resolvedList(Ljava/util/Collection;)Ljava/util/List; HSPLorg/thoughtcrime/securesms/recipients/Recipient$Companion;->self()Lorg/thoughtcrime/securesms/recipients/Recipient; @@ -33640,6 +33635,7 @@ HSPLorg/thoughtcrime/securesms/recipients/Recipient$messageRingtone$2;->(L HSPLorg/thoughtcrime/securesms/recipients/Recipient$shouldHideStory$1;->()V HSPLorg/thoughtcrime/securesms/recipients/Recipient$shouldHideStory$1;->()V HSPLorg/thoughtcrime/securesms/recipients/Recipient;->()V +HSPLorg/thoughtcrime/securesms/recipients/Recipient;->(Lorg/thoughtcrime/securesms/recipients/RecipientId;ZLorg/whispersystems/signalservice/api/push/ServiceId$ACI;Lorg/whispersystems/signalservice/api/push/ServiceId$PNI;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/thoughtcrime/securesms/groups/GroupId;Lorg/thoughtcrime/securesms/database/model/DistributionListId;Ljava/util/List;Lj$/util/Optional;ZZZJLorg/thoughtcrime/securesms/database/RecipientTable$VibrateState;Lorg/thoughtcrime/securesms/database/RecipientTable$VibrateState;Landroid/net/Uri;Landroid/net/Uri;IILorg/thoughtcrime/securesms/database/RecipientTable$RegisteredState;[BLorg/signal/libsignal/zkgroup/profiles/ExpiringProfileKeyCredential;Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/net/Uri;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;Lorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;ZLorg/thoughtcrime/securesms/recipients/Recipient$HiddenState;JLjava/lang/String;Lorg/thoughtcrime/securesms/database/RecipientTable$SealedSenderAccessMode;Lorg/thoughtcrime/securesms/database/model/RecipientRecord$Capabilities;[BLorg/thoughtcrime/securesms/database/RecipientTable$MentionSetting;Lorg/thoughtcrime/securesms/wallpaper/ChatWallpaper;Lorg/thoughtcrime/securesms/conversation/colors/ChatColors;Lorg/thoughtcrime/securesms/conversation/colors/AvatarColor;Ljava/lang/String;Ljava/lang/String;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;Lj$/util/Optional;ZLjava/util/List;ZZLorg/thoughtcrime/securesms/service/webrtc/links/CallLinkRoomId;Lj$/util/Optional;Lorg/thoughtcrime/securesms/database/RecipientTable$PhoneNumberSharingState;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;)V HSPLorg/thoughtcrime/securesms/recipients/Recipient;->(Lorg/thoughtcrime/securesms/recipients/RecipientId;ZLorg/whispersystems/signalservice/api/push/ServiceId$ACI;Lorg/whispersystems/signalservice/api/push/ServiceId$PNI;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/thoughtcrime/securesms/groups/GroupId;Lorg/thoughtcrime/securesms/database/model/DistributionListId;Ljava/util/List;Lj$/util/Optional;ZZZJLorg/thoughtcrime/securesms/database/RecipientTable$VibrateState;Lorg/thoughtcrime/securesms/database/RecipientTable$VibrateState;Landroid/net/Uri;Landroid/net/Uri;IILorg/thoughtcrime/securesms/database/RecipientTable$RegisteredState;[BLorg/signal/libsignal/zkgroup/profiles/ExpiringProfileKeyCredential;Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/net/Uri;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;Lorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;ZLorg/thoughtcrime/securesms/recipients/Recipient$HiddenState;JLjava/lang/String;Lorg/thoughtcrime/securesms/database/RecipientTable$SealedSenderAccessMode;Lorg/thoughtcrime/securesms/database/model/RecipientRecord$Capabilities;[BLorg/thoughtcrime/securesms/database/RecipientTable$MentionSetting;Lorg/thoughtcrime/securesms/wallpaper/ChatWallpaper;Lorg/thoughtcrime/securesms/conversation/colors/ChatColors;Lorg/thoughtcrime/securesms/conversation/colors/AvatarColor;Ljava/lang/String;Ljava/lang/String;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;Lj$/util/Optional;ZLjava/util/List;ZZLorg/thoughtcrime/securesms/service/webrtc/links/CallLinkRoomId;Lj$/util/Optional;Lorg/thoughtcrime/securesms/database/RecipientTable$PhoneNumberSharingState;Lorg/thoughtcrime/securesms/profiles/ProfileName;Ljava/lang/String;IILkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/thoughtcrime/securesms/recipients/Recipient;->access$getTAG$cp()Ljava/lang/String; HSPLorg/thoughtcrime/securesms/recipients/Recipient;->equals(Ljava/lang/Object;)Z @@ -33667,7 +33663,6 @@ HSPLorg/thoughtcrime/securesms/recipients/Recipient;->getShouldBlurAvatar()Z HSPLorg/thoughtcrime/securesms/recipients/Recipient;->getShouldHideStory()Z HSPLorg/thoughtcrime/securesms/recipients/Recipient;->getShowVerified()Z HSPLorg/thoughtcrime/securesms/recipients/Recipient;->getWallpaper()Lorg/thoughtcrime/securesms/wallpaper/ChatWallpaper; -HSPLorg/thoughtcrime/securesms/recipients/Recipient;->hasSameContent(Lorg/thoughtcrime/securesms/recipients/Recipient;)Z HSPLorg/thoughtcrime/securesms/recipients/Recipient;->hashCode()I HSPLorg/thoughtcrime/securesms/recipients/Recipient;->isBlocked()Z HSPLorg/thoughtcrime/securesms/recipients/Recipient;->isDistributionList()Z @@ -33696,16 +33691,17 @@ HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator$create$2;->() HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator$create$2;->()V HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->()V HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->()V +HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->create(ZLjava/lang/String;Ljava/lang/String;ZLorg/thoughtcrime/securesms/database/RecipientTable$RegisteredState;Lorg/thoughtcrime/securesms/database/model/RecipientRecord;Ljava/util/List;ZLorg/thoughtcrime/securesms/conversation/colors/AvatarColor;Lj$/util/Optional;)Lorg/thoughtcrime/securesms/recipients/Recipient; HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->forId$default(Lorg/thoughtcrime/securesms/recipients/RecipientId;ZILjava/lang/Object;)Lorg/thoughtcrime/securesms/recipients/Recipient; HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->forId(Lorg/thoughtcrime/securesms/recipients/RecipientId;)Lorg/thoughtcrime/securesms/recipients/Recipient; HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->forId(Lorg/thoughtcrime/securesms/recipients/RecipientId;Z)Lorg/thoughtcrime/securesms/recipients/Recipient; +HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->forIndividual(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/model/RecipientRecord;)Lorg/thoughtcrime/securesms/recipients/Recipient; HSPLorg/thoughtcrime/securesms/recipients/RecipientCreator;->forRecord(Landroid/content/Context;Lorg/thoughtcrime/securesms/database/model/RecipientRecord;)Lorg/thoughtcrime/securesms/recipients/Recipient; HSPLorg/thoughtcrime/securesms/recipients/RecipientId$1;->()V HSPLorg/thoughtcrime/securesms/recipients/RecipientId$Serializer;->()V HSPLorg/thoughtcrime/securesms/recipients/RecipientId$Serializer;->(Lorg/thoughtcrime/securesms/recipients/RecipientId$Serializer-IA;)V HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->()V HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->(J)V -HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->equals(Ljava/lang/Object;)Z HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->from(J)Lorg/thoughtcrime/securesms/recipients/RecipientId; HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->from(Ljava/lang/String;)Lorg/thoughtcrime/securesms/recipients/RecipientId; HSPLorg/thoughtcrime/securesms/recipients/RecipientId;->from(Lorg/whispersystems/signalservice/api/push/ServiceId;)Lorg/thoughtcrime/securesms/recipients/RecipientId; @@ -34290,6 +34286,7 @@ HSPLorg/thoughtcrime/securesms/util/MediaUtil;->isImageType(Ljava/lang/String;)Z HSPLorg/thoughtcrime/securesms/util/MediaUtil;->isVideo(Ljava/lang/String;)Z HSPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->hasGiftBadge(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z HSPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->hasSticker(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z +HSPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->isScheduled(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z HSPLorg/thoughtcrime/securesms/util/MessageRecordUtil;->isStoryReaction(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z HSPLorg/thoughtcrime/securesms/util/NameUtil;->()V HSPLorg/thoughtcrime/securesms/util/NameUtil;->()V @@ -34748,7 +34745,6 @@ HSPLorg/webrtc/PeerConnectionFactory;->initialize(Lorg/webrtc/PeerConnectionFact HSPLorg/webrtc/WebRtcClassLoader;->getClassLoader()Ljava/lang/Object; HSPLorg/whispersystems/signalservice/api/SignalServiceAccountManager;->()V HSPLorg/whispersystems/signalservice/api/SignalServiceAccountManager;->(Lorg/whispersystems/signalservice/internal/push/PushServiceSocket;Lorg/whispersystems/signalservice/api/groupsv2/GroupsV2Operations;)V -HSPLorg/whispersystems/signalservice/api/SignalServiceAccountManager;->getDevices()Ljava/util/List; HSPLorg/whispersystems/signalservice/api/SignalServiceAccountManager;->getPreKeyCounts(Lorg/whispersystems/signalservice/api/push/ServiceIdType;)Lorg/whispersystems/signalservice/internal/push/OneTimePreKeyCounts; HSPLorg/whispersystems/signalservice/api/SignalServiceAccountManager;->getSecureValueRecoveryV2(Ljava/lang/String;)Lorg/whispersystems/signalservice/api/svr/SecureValueRecoveryV2; HSPLorg/whispersystems/signalservice/api/SignalServiceAccountManager;->getSecureValueRecoveryV3(Lorg/signal/libsignal/net/Network;)Lorg/whispersystems/signalservice/api/svr/SecureValueRecoveryV3; @@ -34885,6 +34881,7 @@ HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->()V HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->fromLibSignal(Lorg/signal/libsignal/protocol/ServiceId;)Lorg/whispersystems/signalservice/api/push/ServiceId; HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->parseOrNull$default(Lorg/whispersystems/signalservice/api/push/ServiceId$Companion;Ljava/lang/String;ZILjava/lang/Object;)Lorg/whispersystems/signalservice/api/push/ServiceId; +HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->parseOrNull(Ljava/lang/String;Z)Lorg/whispersystems/signalservice/api/push/ServiceId; HSPLorg/whispersystems/signalservice/api/push/ServiceId$Companion;->parseOrThrow(Ljava/lang/String;)Lorg/whispersystems/signalservice/api/push/ServiceId; HSPLorg/whispersystems/signalservice/api/push/ServiceId$PNI$Companion;->()V HSPLorg/whispersystems/signalservice/api/push/ServiceId$PNI$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -34959,6 +34956,7 @@ HSPLorg/whispersystems/signalservice/api/util/Tls12SocketFactory;->(Ljavax HSPLorg/whispersystems/signalservice/api/util/Tls12SocketFactory;->createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket; HSPLorg/whispersystems/signalservice/api/util/Tls12SocketFactory;->patch(Ljava/net/Socket;)Ljava/net/Socket; HSPLorg/whispersystems/signalservice/api/util/UptimeSleepTimer;->()V +HSPLorg/whispersystems/signalservice/api/util/UptimeSleepTimer;->sleep(J)V HSPLorg/whispersystems/signalservice/api/util/UuidUtil;->()V HSPLorg/whispersystems/signalservice/api/util/UuidUtil;->isUuid(Ljava/lang/String;)Z HSPLorg/whispersystems/signalservice/api/util/UuidUtil;->parseOrNull(Ljava/lang/String;)Ljava/util/UUID; @@ -35039,7 +35037,6 @@ HSPLorg/whispersystems/signalservice/internal/push/PushServiceSocket;->getAuthor HSPLorg/whispersystems/signalservice/internal/push/PushServiceSocket;->getAvailablePreKeys(Lorg/whispersystems/signalservice/api/push/ServiceIdType;)Lorg/whispersystems/signalservice/internal/push/OneTimePreKeyCounts; HSPLorg/whispersystems/signalservice/internal/push/PushServiceSocket;->getConfiguration()Lorg/whispersystems/signalservice/internal/configuration/SignalServiceConfiguration; HSPLorg/whispersystems/signalservice/internal/push/PushServiceSocket;->getCredentialsProvider()Lorg/whispersystems/signalservice/api/util/CredentialsProvider; -HSPLorg/whispersystems/signalservice/internal/push/PushServiceSocket;->getDevices()Ljava/util/List; HSPLorg/whispersystems/signalservice/internal/push/PushServiceSocket;->getRandom([Lorg/whispersystems/signalservice/internal/push/PushServiceSocket$ConnectionHolder;Ljava/security/SecureRandom;)Lorg/whispersystems/signalservice/internal/push/PushServiceSocket$ConnectionHolder; HSPLorg/whispersystems/signalservice/internal/push/PushServiceSocket;->getSenderCertificate()[B HSPLorg/whispersystems/signalservice/internal/push/PushServiceSocket;->getServiceConnection(Ljava/lang/String;Ljava/lang/String;Lokhttp3/RequestBody;Ljava/util/Map;Lorg/whispersystems/signalservice/api/crypto/SealedSenderAccess;Z)Lokhttp3/Response; @@ -37012,7 +37009,6 @@ Landroidx/constraintlayout/core/LinearSystem$ValuesRow; Landroidx/constraintlayout/core/LinearSystem; Landroidx/constraintlayout/core/Pools$Pool; Landroidx/constraintlayout/core/Pools$SimplePool; -Landroidx/constraintlayout/core/PriorityGoalRow$1; Landroidx/constraintlayout/core/PriorityGoalRow$GoalVariableAccessor; Landroidx/constraintlayout/core/PriorityGoalRow; Landroidx/constraintlayout/core/SolverVariable$Type; @@ -37247,7 +37243,6 @@ Landroidx/core/view/animation/PathInterpolatorCompat; Landroidx/core/widget/ImageViewCompat$Api21Impl; Landroidx/core/widget/ImageViewCompat; Landroidx/core/widget/NestedScrollView$OnScrollChangeListener; -Landroidx/core/widget/TextViewCompat$Api23Impl; Landroidx/core/widget/TextViewCompat; Landroidx/core/widget/TextViewOnReceiveContentListener; Landroidx/core/widget/TintableCompoundButton; @@ -39108,7 +39103,6 @@ Lcom/fasterxml/jackson/databind/ser/Serializers$Base; Lcom/fasterxml/jackson/databind/ser/Serializers; Lcom/fasterxml/jackson/databind/ser/impl/FailingSerializer; Lcom/fasterxml/jackson/databind/ser/impl/IndexedListSerializer; -Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Double; Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Empty; Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$SerializerAndMapResult; Lcom/fasterxml/jackson/databind/ser/impl/PropertySerializerMap$Single; @@ -42025,6 +42019,7 @@ Lokhttp3/internal/platform/android/ConscryptSocketAdapter; Lokhttp3/internal/platform/android/DeferredSocketAdapter$Factory; Lokhttp3/internal/platform/android/DeferredSocketAdapter; Lokhttp3/internal/platform/android/SocketAdapter; +Lokhttp3/internal/proxy/NullProxySelector; Lokhttp3/internal/tls/BasicCertificateChainCleaner$Companion; Lokhttp3/internal/tls/BasicCertificateChainCleaner; Lokhttp3/internal/tls/BasicTrustRootIndex; @@ -42032,6 +42027,7 @@ Lokhttp3/internal/tls/CertificateChainCleaner$Companion; Lokhttp3/internal/tls/CertificateChainCleaner; Lokhttp3/internal/tls/OkHostnameVerifier; Lokhttp3/internal/tls/TrustRootIndex; +Lokhttp3/internal/ws/RealWebSocket$Close; Lokhttp3/internal/ws/RealWebSocket$Companion; Lokhttp3/internal/ws/RealWebSocket$connect$1; Lokhttp3/internal/ws/RealWebSocket; @@ -43547,6 +43543,7 @@ Lorg/thoughtcrime/securesms/emoji/EmojiJsonParserKt; Lorg/thoughtcrime/securesms/emoji/EmojiJsonRequest; Lorg/thoughtcrime/securesms/emoji/EmojiMetrics; Lorg/thoughtcrime/securesms/emoji/EmojiPage$Asset; +Lorg/thoughtcrime/securesms/emoji/EmojiPage$Disk; Lorg/thoughtcrime/securesms/emoji/EmojiPage; Lorg/thoughtcrime/securesms/emoji/EmojiPageCache$$ExternalSyntheticLambda0; Lorg/thoughtcrime/securesms/emoji/EmojiPageCache$$ExternalSyntheticLambda1; @@ -44396,6 +44393,7 @@ Lorg/thoughtcrime/securesms/recipients/RecipientCreator$create$2; Lorg/thoughtcrime/securesms/recipients/RecipientCreator; Lorg/thoughtcrime/securesms/recipients/RecipientForeverObserver; Lorg/thoughtcrime/securesms/recipients/RecipientId$1; +Lorg/thoughtcrime/securesms/recipients/RecipientId$InvalidLongRecipientIdError; Lorg/thoughtcrime/securesms/recipients/RecipientId$Serializer; Lorg/thoughtcrime/securesms/recipients/RecipientId; Lorg/thoughtcrime/securesms/recipients/RecipientIdCache$1; @@ -44882,7 +44880,6 @@ PLandroidx/appcompat/view/WindowCallbackWrapper;->dispatchTouchEvent(Landroid/vi PLandroidx/appcompat/view/menu/ActionMenuItemView$PopupCallback;->()V PLandroidx/appcompat/view/menu/ActionMenuItemView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V PLandroidx/appcompat/view/menu/ActionMenuItemView;->getAccessibilityClassName()Ljava/lang/CharSequence; -PLandroidx/appcompat/view/menu/ActionMenuItemView;->hasText()Z PLandroidx/appcompat/view/menu/ActionMenuItemView;->prefersCondensedTitle()Z PLandroidx/appcompat/view/menu/ActionMenuItemView;->setItemInvoker(Landroidx/appcompat/view/menu/MenuBuilder$ItemInvoker;)V PLandroidx/appcompat/view/menu/BaseMenuPresenter;->addItemView(Landroid/view/View;I)V @@ -44907,7 +44904,6 @@ PLandroidx/appcompat/view/menu/MenuItemImpl;->getTooltipText()Ljava/lang/CharSeq PLandroidx/appcompat/view/menu/MenuItemImpl;->isEnabled()Z PLandroidx/appcompat/view/menu/MenuItemImpl;->setActionView(Landroid/view/View;)Landroid/view/MenuItem; PLandroidx/appcompat/view/menu/MenuItemImpl;->setActionView(Landroid/view/View;)Landroidx/core/internal/view/SupportMenuItem; -PLandroidx/appcompat/view/menu/MenuItemImpl;->setIconTintList(Landroid/content/res/ColorStateList;)Landroid/view/MenuItem; PLandroidx/appcompat/view/menu/MenuItemImpl;->setOnActionExpandListener(Landroid/view/MenuItem$OnActionExpandListener;)Landroid/view/MenuItem; PLandroidx/appcompat/view/menu/MenuItemImpl;->setShowAsAction(I)V PLandroidx/appcompat/view/menu/MenuItemImpl;->setSubMenu(Landroidx/appcompat/view/menu/SubMenuBuilder;)V @@ -45161,7 +45157,6 @@ PLandroidx/compose/ui/platform/AndroidComposeViewTranslationCallbackS;->clearVie PLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2$1$invoke$$inlined$onDispose$1;->dispose()V PLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1$1$invoke$$inlined$onDispose$1;->dispose()V PLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainResourceIdCache$1$1$invoke$$inlined$onDispose$1;->dispose()V -PLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$setScheduledFrameDispatch$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;Z)V PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry;->dispose()V PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$$ExternalSyntheticLambda0;->saveState()Landroid/os/Bundle; PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$1;->invoke()Ljava/lang/Object; @@ -45205,6 +45200,8 @@ PLandroidx/constraintlayout/core/widgets/ConstraintAnchor;->hasCenteredDependent PLandroidx/constraintlayout/core/widgets/ConstraintWidget;->getVerticalMargin()I PLandroidx/constraintlayout/core/widgets/ConstraintWidget;->setFinalLeft(I)V PLandroidx/constraintlayout/core/widgets/ConstraintWidget;->setVerticalDimension(II)V +PLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->addHorizontalWrapMaxVariable(Landroidx/constraintlayout/core/widgets/ConstraintAnchor;)V +PLandroidx/constraintlayout/core/widgets/ConstraintWidgetContainer;->addHorizontalWrapMinVariable(Landroidx/constraintlayout/core/widgets/ConstraintAnchor;)V PLandroidx/constraintlayout/core/widgets/Guideline$1;->()V PLandroidx/constraintlayout/core/widgets/Guideline;->()V PLandroidx/constraintlayout/core/widgets/Guideline;->getOrientation()I @@ -45689,8 +45686,8 @@ PLandroidx/profileinstaller/ProfileVerifier;->writeProfileVerification(Landroid/ PLandroidx/recyclerview/widget/AdapterListUpdateCallback;->onChanged(IILjava/lang/Object;)V PLandroidx/recyclerview/widget/AsyncDifferConfig;->getDiffCallback()Landroidx/recyclerview/widget/DiffUtil$ItemCallback; PLandroidx/recyclerview/widget/AsyncListDiffer$1$1;->areContentsTheSame(II)Z -PLandroidx/recyclerview/widget/AsyncListDiffer$1$1;->areItemsTheSame(II)Z PLandroidx/recyclerview/widget/AsyncListDiffer$1$1;->getChangePayload(II)Ljava/lang/Object; +PLandroidx/recyclerview/widget/BatchingListUpdateCallback;->onChanged(IILjava/lang/Object;)V PLandroidx/recyclerview/widget/ChildHelper;->removeViewAt(I)V PLandroidx/recyclerview/widget/ConcatAdapter$Config$StableIdMode;->()V PLandroidx/recyclerview/widget/ConcatAdapter$Config$StableIdMode;->(Ljava/lang/String;I)V @@ -45743,7 +45740,6 @@ PLandroidx/recyclerview/widget/DiffUtil$Snake;->diagonalSize()I PLandroidx/recyclerview/widget/DiffUtil$Snake;->hasAdditionOrRemoval()Z PLandroidx/recyclerview/widget/DiffUtil$Snake;->toDiagonal()Landroidx/recyclerview/widget/DiffUtil$Diagonal; PLandroidx/recyclerview/widget/DiffUtil;->backward(Landroidx/recyclerview/widget/DiffUtil$Range;Landroidx/recyclerview/widget/DiffUtil$Callback;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;I)Landroidx/recyclerview/widget/DiffUtil$Snake; -PLandroidx/recyclerview/widget/DiffUtil;->forward(Landroidx/recyclerview/widget/DiffUtil$Range;Landroidx/recyclerview/widget/DiffUtil$Callback;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;Landroidx/recyclerview/widget/DiffUtil$CenteredArray;I)Landroidx/recyclerview/widget/DiffUtil$Snake; PLandroidx/recyclerview/widget/GapWorker$LayoutPrefetchRegistryImpl;->lastPrefetchIncludedPosition(I)Z PLandroidx/recyclerview/widget/GapWorker;->remove(Landroidx/recyclerview/widget/RecyclerView;)V PLandroidx/recyclerview/widget/ItemTouchHelper$2;->onInterceptTouchEvent(Landroidx/recyclerview/widget/RecyclerView;Landroid/view/MotionEvent;)Z @@ -45759,9 +45755,6 @@ PLandroidx/recyclerview/widget/LinearLayoutManager$SavedState;->()V PLandroidx/recyclerview/widget/LinearLayoutManager$SavedState;->()V PLandroidx/recyclerview/widget/LinearLayoutManager$SavedState;->invalidateAnchor()V PLandroidx/recyclerview/widget/LinearLayoutManager$SavedState;->writeToParcel(Landroid/os/Parcel;I)V -PLandroidx/recyclerview/widget/LinearLayoutManager;->computeHorizontalScrollExtent(Landroidx/recyclerview/widget/RecyclerView$State;)I -PLandroidx/recyclerview/widget/LinearLayoutManager;->computeHorizontalScrollOffset(Landroidx/recyclerview/widget/RecyclerView$State;)I -PLandroidx/recyclerview/widget/LinearLayoutManager;->computeHorizontalScrollRange(Landroidx/recyclerview/widget/RecyclerView$State;)I PLandroidx/recyclerview/widget/LinearLayoutManager;->getChildClosestToEnd()Landroid/view/View; PLandroidx/recyclerview/widget/LinearLayoutManager;->getChildClosestToStart()Landroid/view/View; PLandroidx/recyclerview/widget/LinearLayoutManager;->onDetachedFromWindow(Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$Recycler;)V @@ -45773,8 +45766,6 @@ PLandroidx/recyclerview/widget/NestedAdapterWrapper$1;->onItemRangeInserted(II)V PLandroidx/recyclerview/widget/NestedAdapterWrapper;->(Landroidx/recyclerview/widget/RecyclerView$Adapter;Landroidx/recyclerview/widget/NestedAdapterWrapper$Callback;Landroidx/recyclerview/widget/ViewTypeStorage;Landroidx/recyclerview/widget/StableIdStorage$StableIdLookup;)V PLandroidx/recyclerview/widget/NestedAdapterWrapper;->onBindViewHolder(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;I)V PLandroidx/recyclerview/widget/NestedAdapterWrapper;->onCreateViewHolder(Landroid/view/ViewGroup;I)Landroidx/recyclerview/widget/RecyclerView$ViewHolder; -PLandroidx/recyclerview/widget/OrientationHelper$1;->getDecoratedEnd(Landroid/view/View;)I -PLandroidx/recyclerview/widget/OrientationHelper$1;->getDecoratedStart(Landroid/view/View;)I PLandroidx/recyclerview/widget/OrientationHelper;->getTotalSpaceChange()I PLandroidx/recyclerview/widget/RecyclerView$5;->removeViewAt(I)V PLandroidx/recyclerview/widget/RecyclerView$6;->markViewHoldersUpdated(IILjava/lang/Object;)V @@ -45789,18 +45780,9 @@ PLandroidx/recyclerview/widget/RecyclerView$ItemAnimator;->canReuseUpdatedViewHo PLandroidx/recyclerview/widget/RecyclerView$ItemAnimator;->canReuseUpdatedViewHolder(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Ljava/util/List;)Z PLandroidx/recyclerview/widget/RecyclerView$ItemAnimator;->recordPreLayoutInformation(Landroidx/recyclerview/widget/RecyclerView$State;Landroidx/recyclerview/widget/RecyclerView$ViewHolder;ILjava/util/List;)Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo; PLandroidx/recyclerview/widget/RecyclerView$ItemDecoration;->onDraw(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;)V -PLandroidx/recyclerview/widget/RecyclerView$LayoutManager$1;->getChildAt(I)Landroid/view/View; -PLandroidx/recyclerview/widget/RecyclerView$LayoutManager$1;->getChildEnd(Landroid/view/View;)I -PLandroidx/recyclerview/widget/RecyclerView$LayoutManager$1;->getChildStart(Landroid/view/View;)I -PLandroidx/recyclerview/widget/RecyclerView$LayoutManager$1;->getParentEnd()I -PLandroidx/recyclerview/widget/RecyclerView$LayoutManager$1;->getParentStart()I PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->dispatchDetachedFromWindow(Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$Recycler;)V PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroidx/recyclerview/widget/RecyclerView$LayoutParams; -PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getDecoratedLeft(Landroid/view/View;)I -PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getDecoratedRight(Landroid/view/View;)I PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getItemCount()I -PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getLeftDecorationWidth(Landroid/view/View;)I -PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getRightDecorationWidth(Landroid/view/View;)I PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onAddFocusables(Landroidx/recyclerview/widget/RecyclerView;Ljava/util/ArrayList;II)Z PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onDetachedFromWindow(Landroidx/recyclerview/widget/RecyclerView;)V PLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->onDetachedFromWindow(Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$Recycler;)V @@ -45839,6 +45821,7 @@ PLandroidx/recyclerview/widget/RecyclerView$ViewHolder;->resetInternal()V PLandroidx/recyclerview/widget/RecyclerView;->access$300(Landroidx/recyclerview/widget/RecyclerView;Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V PLandroidx/recyclerview/widget/RecyclerView;->access$400(Landroidx/recyclerview/widget/RecyclerView;Landroid/view/View;)V PLandroidx/recyclerview/widget/RecyclerView;->addFocusables(Ljava/util/ArrayList;II)V +PLandroidx/recyclerview/widget/RecyclerView;->animateChange(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Landroidx/recyclerview/widget/RecyclerView$ViewHolder;Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo;Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo;ZZ)V PLandroidx/recyclerview/widget/RecyclerView;->canReuseUpdatedViewHolder(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Z PLandroidx/recyclerview/widget/RecyclerView;->clearNestedRecyclerViewIfNotNested(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)V PLandroidx/recyclerview/widget/RecyclerView;->dispatchChildDetached(Landroid/view/View;)V @@ -45858,6 +45841,7 @@ PLandroidx/recyclerview/widget/RecyclerView;->startNestedScroll(II)Z PLandroidx/recyclerview/widget/RecyclerView;->stopGlowAnimations(Landroid/view/MotionEvent;)Z PLandroidx/recyclerview/widget/RecyclerView;->stopNestedScroll()V PLandroidx/recyclerview/widget/RecyclerView;->stopNestedScroll(I)V +PLandroidx/recyclerview/widget/RecyclerView;->viewRangeUpdate(IILjava/lang/Object;)V PLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->dispatchPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z PLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->getAndRemoveOriginalDelegateForItem(Landroid/view/View;)Landroidx/core/view/AccessibilityDelegateCompat; PLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;->onInitializeAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V @@ -45869,6 +45853,7 @@ PLandroidx/recyclerview/widget/StableIdStorage$NoStableIdStorage;->()V PLandroidx/recyclerview/widget/StableIdStorage$NoStableIdStorage;->createStableIdLookup()Landroidx/recyclerview/widget/StableIdStorage$StableIdLookup; PLandroidx/recyclerview/widget/ViewInfoStore$InfoRecord;->drainCache()V PLandroidx/recyclerview/widget/ViewInfoStore;->addToOldChangeHolders(JLandroidx/recyclerview/widget/RecyclerView$ViewHolder;)V +PLandroidx/recyclerview/widget/ViewInfoStore;->isDisappearing(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Z PLandroidx/recyclerview/widget/ViewInfoStore;->onDetach()V PLandroidx/recyclerview/widget/ViewInfoStore;->popFromPostLayout(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo; PLandroidx/recyclerview/widget/ViewInfoStore;->popFromPreLayout(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Landroidx/recyclerview/widget/RecyclerView$ItemAnimator$ItemHolderInfo; @@ -46016,7 +46001,6 @@ PLcom/google/android/material/button/MaterialButton;->resetIconDrawable()V PLcom/google/android/material/button/MaterialButton;->setElevation(F)V PLcom/google/android/material/button/MaterialButtonHelper;->isBackgroundOverwritten()Z PLcom/google/android/material/button/MaterialButtonHelper;->isCheckable()Z -PLcom/google/android/material/card/MaterialCardView;->onInitializeAccessibilityNodeInfo(Landroid/view/accessibility/AccessibilityNodeInfo;)V PLcom/google/android/material/expandable/ExpandableWidgetHelper;->onSaveInstanceState()Landroid/os/Bundle; PLcom/google/android/material/floatingactionbutton/FloatingActionButton;->onDetachedFromWindow()V PLcom/google/android/material/floatingactionbutton/FloatingActionButton;->onSaveInstanceState()Landroid/os/Parcelable; @@ -46294,6 +46278,7 @@ PLio/reactivex/rxjava3/internal/operators/observable/ObservableElementAtSingle$E PLio/reactivex/rxjava3/internal/operators/observable/ObservableElementAtSingle$ElementAtObserver;->onSubscribe(Lio/reactivex/rxjava3/disposables/Disposable;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableElementAtSingle;->(Lio/reactivex/rxjava3/core/ObservableSource;JLjava/lang/Object;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableElementAtSingle;->subscribeActual(Lio/reactivex/rxjava3/core/SingleObserver;)V +PLio/reactivex/rxjava3/internal/operators/observable/ObservableFilter$FilterObserver;->onNext(Ljava/lang/Object;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapMaybe$FlatMapMaybeObserver$InnerObserver;->(Lio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapMaybe$FlatMapMaybeObserver;)V PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapMaybe$FlatMapMaybeObserver$InnerObserver;->onComplete()V PLio/reactivex/rxjava3/internal/operators/observable/ObservableFlatMapMaybe$FlatMapMaybeObserver$InnerObserver;->onSubscribe(Lio/reactivex/rxjava3/disposables/Disposable;)V @@ -46433,13 +46418,9 @@ PLio/reactivex/rxjava3/internal/operators/single/SingleObserveOn;->(Lio/re PLio/reactivex/rxjava3/internal/operators/single/SingleObserveOn;->subscribeActual(Lio/reactivex/rxjava3/core/SingleObserver;)V PLio/reactivex/rxjava3/internal/operators/single/SingleOnErrorComplete;->(Lio/reactivex/rxjava3/core/Single;Lio/reactivex/rxjava3/functions/Predicate;)V PLio/reactivex/rxjava3/internal/operators/single/SingleOnErrorComplete;->subscribeActual(Lio/reactivex/rxjava3/core/MaybeObserver;)V -PLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->isEmpty()Z -PLio/reactivex/rxjava3/internal/queue/MpscLinkedQueue;->lvConsumerNode()Lio/reactivex/rxjava3/internal/queue/MpscLinkedQueue$LinkedQueueNode; PLio/reactivex/rxjava3/internal/queue/SpscArrayQueue;->clear()V PLio/reactivex/rxjava3/internal/queue/SpscArrayQueue;->isEmpty()Z -PLio/reactivex/rxjava3/internal/schedulers/AbstractDirectTask;->cancelFuture(Ljava/util/concurrent/Future;)V PLio/reactivex/rxjava3/internal/schedulers/DisposeOnCancel;->cancel(Z)Z -PLio/reactivex/rxjava3/internal/schedulers/ScheduledRunnable;->dispose()V PLio/reactivex/rxjava3/internal/subscribers/BasicFuseableConditionalSubscriber;->cancel()V PLio/reactivex/rxjava3/internal/subscribers/BasicFuseableSubscriber;->cancel()V PLio/reactivex/rxjava3/internal/subscribers/LambdaSubscriber;->cancel()V @@ -46501,10 +46482,10 @@ PLio/reactivex/rxjava3/subjects/SerializedSubject;->test(Ljava/lang/Object;)Z PLio/reactivex/rxjava3/subscribers/SerializedSubscriber;->cancel()V PLj$/util/DesugarCollections;->a()Ljava/lang/reflect/Constructor; PLj$/util/Optional;->ifPresent(Lj$/util/function/Consumer;)V -PLj$/util/S;->r(Lj$/util/function/Consumer;)Z PLj$/util/concurrent/ConcurrentHashMap;->h(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; PLj$/util/concurrent/ConcurrentHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; -PLj$/util/concurrent/q;->f(ILjava/lang/Object;Ljava/lang/Object;)Lj$/util/concurrent/r; +PLj$/util/concurrent/q;->a(Ljava/lang/Object;I)Lj$/util/concurrent/l; +PLj$/util/concurrent/v;->a(Lsun/misc/Unsafe;Ljava/lang/Object;J)I PLj$/util/d;->a(Ljava/util/Set;Ljava/lang/Object;)Ljava/util/Set; PLj$/util/d;->keySet()Ljava/util/Set; PLj$/util/function/b;->(Ljava/util/Comparator;I)V @@ -46815,7 +46796,6 @@ PLorg/signal/core/util/SqlUtil;->buildCustomCollectionQuery$lambda$11(Lkotlin/jv PLorg/signal/core/util/SqlUtil;->buildCustomCollectionQuery(Ljava/lang/String;Ljava/util/List;)Ljava/util/List; PLorg/signal/core/util/SqlUtil;->buildCustomCollectionQuery(Ljava/lang/String;Ljava/util/List;I)Ljava/util/List; PLorg/signal/core/util/SqlUtil;->buildSingleCollectionQuery$default(Ljava/lang/String;Ljava/util/Collection;Ljava/lang/String;Lorg/signal/core/util/SqlUtil$CollectionOperator;ILjava/lang/Object;)Lorg/signal/core/util/SqlUtil$Query; -PLorg/signal/core/util/SqlUtil;->buildSingleCollectionQuery(Ljava/lang/String;Ljava/util/Collection;Ljava/lang/String;Lorg/signal/core/util/SqlUtil$CollectionOperator;)Lorg/signal/core/util/SqlUtil$Query; PLorg/signal/core/util/SqlUtil;->buildSingleCustomCollectionQuery(Ljava/lang/String;Ljava/util/List;)Lorg/signal/core/util/SqlUtil$Query; PLorg/signal/core/util/StringUtil;->trim(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; PLorg/signal/core/util/concurrent/DeadlockDetector$$ExternalSyntheticLambda0;->run()V @@ -46844,6 +46824,7 @@ PLorg/signal/core/util/logging/Log$Logger;->i(Ljava/lang/String;Ljava/lang/Strin PLorg/signal/core/util/logging/Log$Logger;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V PLorg/signal/core/util/logging/Log;->internal()Lorg/signal/core/util/logging/Log$Logger; PLorg/signal/libsignal/protocol/IdentityKey;->equals(Ljava/lang/Object;)Z +PLorg/signal/libsignal/protocol/ecc/ECPublicKey;->equals(Ljava/lang/Object;)Z PLorg/signal/paging/BufferedPagingController$$ExternalSyntheticLambda0;->(Lorg/signal/paging/BufferedPagingController;Ljava/lang/Object;)V PLorg/signal/paging/BufferedPagingController$$ExternalSyntheticLambda0;->run()V PLorg/signal/paging/BufferedPagingController;->$r8$lambda$niWJKUo-ehPdOP5P9_O82_NVKlY(Lorg/signal/paging/BufferedPagingController;Ljava/lang/Object;)V @@ -46883,6 +46864,7 @@ PLorg/thoughtcrime/securesms/attachments/Attachment;->isPermanentlyFailed()Z PLorg/thoughtcrime/securesms/attachments/AttachmentId;->hashCode()I PLorg/thoughtcrime/securesms/attachments/AttachmentId;->serialize()Ljava/lang/String; PLorg/thoughtcrime/securesms/attachments/DatabaseAttachment;->getThumbnailUri()Landroid/net/Uri; +PLorg/thoughtcrime/securesms/attachments/DatabaseAttachment;->hashCode()I PLorg/thoughtcrime/securesms/audio/AudioRecorder$$ExternalSyntheticLambda2;->(Lorg/thoughtcrime/securesms/audio/AudioRecorder;)V PLorg/thoughtcrime/securesms/audio/AudioRecorder;->()V PLorg/thoughtcrime/securesms/audio/AudioRecorder;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/audio/AudioRecordingHandler;)V @@ -46902,8 +46884,13 @@ PLorg/thoughtcrime/securesms/avatar/view/AvatarView;->setStoryRingFromState(Lorg PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$Companion;->()V PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$2;->(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)V +PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$4;->(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)V +PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$notAnimated$1;->(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)V +PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration$onDrawOver$notAnimated$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->()V PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->(Landroid/content/Context;)V +PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->access$getAnimationState$p(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)Ljava/util/Map; PLorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;->access$getMessageIdsOpenedThisSession$p(Lorg/thoughtcrime/securesms/badges/gifts/OpenableGiftItemDecoration;)Ljava/util/Set; PLorg/thoughtcrime/securesms/banner/banners/BubbleOptOutBanner;->()V PLorg/thoughtcrime/securesms/banner/banners/BubbleOptOutBanner;->(ZLkotlin/jvm/functions/Function1;)V @@ -46916,6 +46903,7 @@ PLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->applyCorners()V PLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->inflateLayout(I)V PLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->setCancelTransferClickListener(Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;)V PLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->setPlayVideoClickListener(Lorg/thoughtcrime/securesms/mms/SlideClickListener;)V +PLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->setRelativeRadii(Lorg/thoughtcrime/securesms/components/ThumbnailView;IIII)V PLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->setStartTransferClickListener(Lorg/thoughtcrime/securesms/mms/SlidesClickedListener;)V PLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->setThumbnailClickListener(Lorg/thoughtcrime/securesms/mms/SlideClickListener;)V PLorg/thoughtcrime/securesms/components/AlbumThumbnailView;->showSlides(Lcom/bumptech/glide/RequestManager;Ljava/util/List;)V @@ -46992,6 +46980,7 @@ PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->lambda$init$0(L PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->notifyTouchDelegateChanged(Landroid/graphics/Rect;Landroid/view/View;)V PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->onDetachedFromWindow()V PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentAudioDuration(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)V +PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentDate(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Ljava/util/Locale;Lorg/thoughtcrime/securesms/conversation/ConversationItemDisplayMode;)V PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentInsecureIndicator(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)V PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentSimInfo(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)V PLorg/thoughtcrime/securesms/components/ConversationItemFooter;->presentTimer(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)V @@ -47163,6 +47152,7 @@ PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->()V PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->(Landroidx/recyclerview/widget/RecyclerView;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->(Landroidx/recyclerview/widget/RecyclerView;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->(Landroidx/recyclerview/widget/RecyclerView;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lio/reactivex/rxjava3/disposables/CompositeDisposable;)V +PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->isListCommitted()Z PLorg/thoughtcrime/securesms/components/ScrollToPositionDelegate;->notifyListCommitted()V PLorg/thoughtcrime/securesms/components/SearchView;->(Landroid/content/Context;)V PLorg/thoughtcrime/securesms/components/SearchView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V @@ -47183,6 +47173,7 @@ PLorg/thoughtcrime/securesms/components/ThumbnailView$ThumbnailClickDispatcher;- PLorg/thoughtcrime/securesms/components/ThumbnailView$ThumbnailClickDispatcher;->(Lorg/thoughtcrime/securesms/components/ThumbnailView;Lorg/thoughtcrime/securesms/components/ThumbnailView$ThumbnailClickDispatcher-IA;)V PLorg/thoughtcrime/securesms/components/ThumbnailView;->()V PLorg/thoughtcrime/securesms/components/ThumbnailView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +PLorg/thoughtcrime/securesms/components/ThumbnailView;->dispatchDraw(Landroid/graphics/Canvas;)V PLorg/thoughtcrime/securesms/components/ThumbnailView;->fillTargetDimensions([I[I[I)V PLorg/thoughtcrime/securesms/components/ThumbnailView;->getNonZeroCount([I)I PLorg/thoughtcrime/securesms/components/ThumbnailView;->hasSameContents(Lorg/thoughtcrime/securesms/mms/Slide;Lorg/thoughtcrime/securesms/mms/Slide;)Z @@ -47222,7 +47213,6 @@ PLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->$r8$lambda$MRhTIH_ PLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->ellipsizeAnyTextForMaxLength()V PLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->getLastLineWidth()I PLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->isJumbomoji()Z -PLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->isSingleLine()Z PLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->lambda$getLongestLineWidth$0(Ljava/lang/String;)Ljava/lang/Float; PLorg/thoughtcrime/securesms/components/emoji/EmojiTextView;->setMentionBackgroundTint(I)V PLorg/thoughtcrime/securesms/components/emoji/EmojiToggle$1;->()V @@ -47298,6 +47288,8 @@ PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->c PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->getTransferState(Ljava/util/List;)I PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->onAttachedToWindow()V PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->onDetachedFromWindow()V +PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setCancelClickListener(Landroid/view/View$OnClickListener;)V +PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->setTransferClickListener(Landroid/view/View$OnClickListener;)V PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->slidesAsListOfTimestamps(Ljava/util/List;)Ljava/lang/String; PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlView;->verboseLog(Ljava/lang/String;)V PLorg/thoughtcrime/securesms/components/transfercontrols/TransferControlViewState;->()V @@ -47485,6 +47477,7 @@ PLorg/thoughtcrime/securesms/conversation/ConversationMessage;->getMultiselectCo PLorg/thoughtcrime/securesms/conversation/ConversationMessage;->getThreadRecipient()Lorg/thoughtcrime/securesms/recipients/Recipient; PLorg/thoughtcrime/securesms/conversation/ConversationMessage;->hasBeenQuoted()Z PLorg/thoughtcrime/securesms/conversation/ConversationMessage;->hasStyleLinks()Z +PLorg/thoughtcrime/securesms/conversation/ConversationMessage;->hashCode()I PLorg/thoughtcrime/securesms/conversation/ConversationMessage;->isTextOnly(Landroid/content/Context;)Z PLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu$Provider$onCreateMenu$1;->(Landroid/view/Menu;Z)V PLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu$Provider$onCreateMenu$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; @@ -47508,9 +47501,6 @@ PLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu$Snapshot;->com PLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu$Snapshot;->component7()Z PLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu$Snapshot;->component8()I PLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu$Snapshot;->component9()J -PLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu;->()V -PLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu;->()V -PLorg/thoughtcrime/securesms/conversation/ConversationOptionsMenu;->access$getTAG$p()Ljava/lang/String; PLorg/thoughtcrime/securesms/conversation/ConversationRepository;->()V PLorg/thoughtcrime/securesms/conversation/ConversationRepository;->()V PLorg/thoughtcrime/securesms/conversation/ConversationRepository;->getConversationData(JLorg/thoughtcrime/securesms/recipients/Recipient;I)Lorg/thoughtcrime/securesms/conversation/ConversationData; @@ -47729,6 +47719,7 @@ PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;- PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->drawFocusShadeUnderIfNecessary(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;)V PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->drawPulseShadeOverIfNecessary(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;)V PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->getCurrentSelection(Landroidx/recyclerview/widget/RecyclerView;)Ljava/util/Set; +PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->getDifferenceForPart(Ljava/util/Set;Lorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectPart;)Lorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration$Difference; PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->invalidateIfPulseRequestAnimatorsAreRunning(Landroidx/recyclerview/widget/RecyclerView;)V PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->onCreate(Landroidx/lifecycle/LifecycleOwner;)V PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->onDestroy(Landroidx/lifecycle/LifecycleOwner;)V @@ -47738,6 +47729,7 @@ PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;- PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectItemDecoration;->onStop(Landroidx/lifecycle/LifecycleOwner;)V PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectPart$Attachments;->()V PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectPart$Attachments;->(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;)V +PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectPart$Attachments;->hashCode()I PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectPart$Text;->()V PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectPart$Text;->(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;)V PLorg/thoughtcrime/securesms/conversation/mutiselect/MultiselectPart$Text;->hashCode()I @@ -47866,6 +47858,7 @@ PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationV PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->(Lorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2;Landroid/view/View;)V PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->canPlayContent()Z PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getDisplayMode()Lorg/thoughtcrime/securesms/conversation/ConversationItemDisplayMode; +PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->getNextMessage()Lj$/util/Optional; PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$ConversationViewHolder;->showProjectionArea()V PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$IncomingMediaViewHolder;->(Lorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2;Landroid/view/View;)V PLorg/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2$IncomingMediaViewHolder;->bind(Ljava/lang/Object;)V @@ -48077,6 +48070,7 @@ PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConv PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$4;->(Ljava/lang/Object;)V PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$5;->(Lorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;)V PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$6;->(Ljava/lang/Object;)V +PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$6;->invoke()Ljava/lang/Boolean; PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$6;->invoke()Ljava/lang/Object; PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$7;->(Lorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;)V PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$7;->invoke()Ljava/lang/Object; @@ -48084,6 +48078,7 @@ PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConv PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$8;->invoke()Ljava/lang/Object; PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$9;->()V PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$9;->()V +PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$9;->invoke(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)Ljava/lang/Boolean; PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeConversationThreadUi$9;->invoke(Ljava/lang/Object;)Ljava/lang/Object; PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeInlineSearch$1$1;->(Lorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;)V PLorg/thoughtcrime/securesms/conversation/v2/ConversationFragment$initializeInlineSearch$2;->(Lorg/thoughtcrime/securesms/conversation/v2/ConversationFragment;)V @@ -48398,6 +48393,7 @@ PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->access$get PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getConversationThreadState$lambda$0(JLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;I)Lorg/thoughtcrime/securesms/conversation/v2/ConversationThreadState; PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getConversationThreadState(JI)Lio/reactivex/rxjava3/core/Single; PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getMessageCounts(J)Lio/reactivex/rxjava3/core/Flowable; +PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getRequestReviewState$lambda$16(Lorg/thoughtcrime/securesms/database/model/GroupRecord;Lorg/thoughtcrime/securesms/messagerequests/MessageRequestState;Lorg/thoughtcrime/securesms/recipients/Recipient;)Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState; PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getUnreadCount(J)I PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->getUnreadMentionsCount(J)I PLorg/thoughtcrime/securesms/conversation/v2/ConversationRepository;->isInBubble()Z @@ -48524,6 +48520,7 @@ PLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$getBannerFlow PLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$getBannerFlows$$inlined$map$2;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; PLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$getRequestReviewState$1;->(Lorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel;)V PLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$getRequestReviewState$1;->apply(Ljava/lang/Object;)Ljava/lang/Object; +PLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$getRequestReviewState$1;->apply(Lorg/thoughtcrime/securesms/conversation/v2/InputReadyState;)Lio/reactivex/rxjava3/core/SingleSource; PLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$groupMemberServiceIds$1;->()V PLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$groupMemberServiceIds$1;->()V PLorg/thoughtcrime/securesms/conversation/v2/ConversationViewModel$groupMemberServiceIds$1;->test(Lj$/util/Optional;)Z @@ -48609,6 +48606,7 @@ PLorg/thoughtcrime/securesms/conversation/v2/MotionEventRelay;->setDrain(Lorg/th PLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->()V PLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->(Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState$IndividualReviewState;Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState$GroupReviewState;)V PLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->(Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState$IndividualReviewState;Lorg/thoughtcrime/securesms/conversation/v2/RequestReviewState$GroupReviewState;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +PLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->equals(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/conversation/v2/RequestReviewState;->shouldShowReviewBanner()Z PLorg/thoughtcrime/securesms/conversation/v2/ShareDataTimestampViewModel;->()V PLorg/thoughtcrime/securesms/conversation/v2/ShareDataTimestampViewModel;->()V @@ -48796,12 +48794,14 @@ PLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable$ChatColors PLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable$ChatColorsItemDecoration$onDraw$$inlined$filterIsInstance$1;->()V PLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable$ChatColorsItemDecoration$onDraw$$inlined$filterIsInstance$1;->()V PLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable$ChatColorsItemDecoration$onDraw$$inlined$filterIsInstance$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +PLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable$ChatColorsItemDecoration$onDraw$1;->(Landroidx/recyclerview/widget/RecyclerView;)V PLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable$ChatColorsItemDecoration;->()V PLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable$ChatColorsItemDecoration;->()V PLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->()V PLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->(Lkotlin/jvm/functions/Function0;)V PLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->getMask()Landroid/graphics/drawable/Drawable; PLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->getOpacity()I +PLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->isSolidColor()Z PLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->setCorners(Lorg/thoughtcrime/securesms/util/Projection$Corners;)V PLorg/thoughtcrime/securesms/conversation/v2/items/ChatColorsDrawable;->setLocalChatColors(Lorg/thoughtcrime/securesms/conversation/colors/ChatColors;)V PLorg/thoughtcrime/securesms/conversation/v2/items/ShrinkWrapLinearLayout;->onMeasure(II)V @@ -48823,6 +48823,7 @@ PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->access$getCollapsedSpacing$cp()F PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->access$getDefaultSpacing$cp()F PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->getCornersLTR()Lorg/thoughtcrime/securesms/util/Projection$Corners; +PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->isEndOfMessageCluster(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->isSingularMessage(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;Z)Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->isStartOfMessageCluster(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;Z)Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape;->isWithinClusteringTime(Lorg/thoughtcrime/securesms/database/model/MessageRecord;Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z @@ -48874,6 +48875,7 @@ PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyVie PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->canPlayContent()Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->getConversationMessage()Lorg/thoughtcrime/securesms/conversation/ConversationMessage; PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->getShape()Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape$MessageShape; +PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->invalidateFooterDrawable(Landroid/view/ViewGroup;)V PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->isContentCondensed()Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->isForcedFooter()Z PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder;->presentAlert()V @@ -48895,6 +48897,7 @@ PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme$getBo PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->()V PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->(Landroid/content/Context;Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationContext;)V PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getBodyBubbleColor(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;)I +PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getBodyTextColor(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;)I PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getColor(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)I PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getFooterBubbleColor(Lorg/thoughtcrime/securesms/conversation/ConversationMessage;)I PLorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTheme;->getReplyIconBackgroundColor()I @@ -48922,6 +48925,7 @@ PLorg/thoughtcrime/securesms/conversation/v2/items/V2OnDispatchTouchEventListene PLorg/thoughtcrime/securesms/conversation/v2/items/V2Payload;->$values()[Lorg/thoughtcrime/securesms/conversation/v2/items/V2Payload; PLorg/thoughtcrime/securesms/conversation/v2/items/V2Payload;->()V PLorg/thoughtcrime/securesms/conversation/v2/items/V2Payload;->(Ljava/lang/String;I)V +PLorg/thoughtcrime/securesms/conversationlist/ChatFolderMappingModel;->equals(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->onStartNestedScroll(Landroidx/coordinatorlayout/widget/CoordinatorLayout;Landroid/view/View;Landroid/view/View;Landroid/view/View;II)Z PLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->onStartNestedScroll(Landroidx/coordinatorlayout/widget/CoordinatorLayout;Lcom/google/android/material/appbar/AppBarLayout;Landroid/view/View;Landroid/view/View;II)Z PLorg/thoughtcrime/securesms/conversationlist/ConversationFilterBehavior;->onStopNestedScroll(Landroidx/coordinatorlayout/widget/CoordinatorLayout;Landroid/view/View;Landroid/view/View;I)V @@ -49047,6 +49051,7 @@ PLorg/thoughtcrime/securesms/database/MessageTypes$-CC;->isSmsExport(J)Z PLorg/thoughtcrime/securesms/database/PaymentTable;->getPayments(Ljava/util/Collection;)Ljava/util/List; PLorg/thoughtcrime/securesms/database/ReactionTable;->getReactionsForMessages(Ljava/util/Collection;)Ljava/util/Map; PLorg/thoughtcrime/securesms/database/RxDatabaseObserver$$ExternalSyntheticLambda0;->cancel()V +PLorg/thoughtcrime/securesms/database/RxDatabaseObserver$RxObserver;->onChanged()V PLorg/thoughtcrime/securesms/database/RxDatabaseObserver$conversation$1;->(J)V PLorg/thoughtcrime/securesms/database/RxDatabaseObserver$conversation$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; PLorg/thoughtcrime/securesms/database/RxDatabaseObserver$conversation$1;->invoke(Lorg/thoughtcrime/securesms/database/RxDatabaseObserver$RxObserver;)V @@ -49126,6 +49131,7 @@ PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->$r8$lambda$bAahgo PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getCall()Lorg/thoughtcrime/securesms/database/CallTable$Call; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getDisplayBody(Landroid/content/Context;)Landroid/text/SpannableString; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getLatestRevisionId()Lorg/thoughtcrime/securesms/database/model/MessageId; +PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getLinkPreviews()Ljava/util/List; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getParentStoryId()Lorg/thoughtcrime/securesms/database/model/ParentStoryId; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getPayment()Lorg/thoughtcrime/securesms/payments/Payment; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->getStoryType()Lorg/thoughtcrime/securesms/database/model/StoryType; @@ -49135,6 +49141,7 @@ PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->lambda$withAttach PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->updateContacts(Ljava/util/List;Ljava/util/Map;)Ljava/util/List; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->updateLinkPreviews(Ljava/util/List;Ljava/util/Map;)Ljava/util/List; PLorg/thoughtcrime/securesms/database/model/MmsMessageRecord;->updateQuote(Lorg/thoughtcrime/securesms/database/model/Quote;Ljava/util/List;)Lorg/thoughtcrime/securesms/database/model/Quote; +PLorg/thoughtcrime/securesms/database/model/ProfileAvatarFileDetails;->equals(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/database/model/StoryViewState$Companion$$ExternalSyntheticLambda0;->(Lio/reactivex/rxjava3/core/ObservableEmitter;Lorg/thoughtcrime/securesms/recipients/RecipientId;)V PLorg/thoughtcrime/securesms/database/model/StoryViewState$Companion$$ExternalSyntheticLambda1;->(Lorg/thoughtcrime/securesms/database/DatabaseObserver$Observer;)V PLorg/thoughtcrime/securesms/database/model/StoryViewState$Companion$$ExternalSyntheticLambda1;->cancel()V @@ -49175,18 +49182,9 @@ PLorg/thoughtcrime/securesms/databinding/V2ConversationFragmentBinding;->getRoot PLorg/thoughtcrime/securesms/databinding/V2ConversationItemTextOnlyIncomingBinding;->(Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemLayout;Lorg/thoughtcrime/securesms/badges/BadgeImageView;Lorg/thoughtcrime/securesms/components/AvatarImageView;Lorg/thoughtcrime/securesms/components/emoji/EmojiTextView;Lorg/thoughtcrime/securesms/conversation/v2/items/ShrinkWrapLinearLayout;Lorg/thoughtcrime/securesms/components/ExpirationTimerView;Landroid/view/View;Landroid/widget/TextView;Lorg/thoughtcrime/securesms/reactions/ReactionsConversationView;Lcom/google/android/material/imageview/ShapeableImageView;Landroid/widget/Space;Lorg/thoughtcrime/securesms/components/emoji/EmojiTextView;)V PLorg/thoughtcrime/securesms/databinding/V2ConversationItemTextOnlyIncomingBinding;->bind(Landroid/view/View;)Lorg/thoughtcrime/securesms/databinding/V2ConversationItemTextOnlyIncomingBinding; PLorg/thoughtcrime/securesms/databinding/V2ConversationItemTextOnlyIncomingBinding;->getRoot()Lorg/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemLayout; -PLorg/thoughtcrime/securesms/emoji/EmojiFiles;->openForReading(Landroid/content/Context;Ljava/lang/String;)Ljava/io/InputStream; -PLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->()V -PLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->(Landroid/net/Uri;)V -PLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->equals(Ljava/lang/Object;)Z -PLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->getUri()Landroid/net/Uri; -PLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->hashCode()I -PLorg/thoughtcrime/securesms/emoji/EmojiPage$Disk;->toString()Ljava/lang/String; PLorg/thoughtcrime/securesms/emoji/EmojiPageCache$LoadResult$Immediate;->()V PLorg/thoughtcrime/securesms/emoji/EmojiPageCache$LoadResult$Immediate;->(Landroid/graphics/Bitmap;)V PLorg/thoughtcrime/securesms/emoji/EmojiPageCache$LoadResult$Immediate;->getBitmap()Landroid/graphics/Bitmap; -PLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadRemoteBasedEmojis$1$1;->invoke(Landroid/net/Uri;)Lorg/thoughtcrime/securesms/emoji/EmojiPage; -PLorg/thoughtcrime/securesms/emoji/EmojiSource$Companion$loadRemoteBasedEmojis$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; PLorg/thoughtcrime/securesms/emoji/EmojiSource$maxEmojiLength$2;->invoke()Ljava/lang/Integer; PLorg/thoughtcrime/securesms/emoji/EmojiSource$maxEmojiLength$2;->invoke()Ljava/lang/Object; PLorg/thoughtcrime/securesms/emoji/EmojiSource;->getMaxEmojiLength()I @@ -49208,11 +49206,14 @@ PLorg/thoughtcrime/securesms/fonts/SignalSymbols;->()V PLorg/thoughtcrime/securesms/fonts/SignalSymbols;->()V PLorg/thoughtcrime/securesms/fonts/SignalSymbols;->getBoldWeightedFont(Landroid/content/Context;)Landroid/graphics/Typeface; PLorg/thoughtcrime/securesms/fonts/SignalSymbols;->getTypeface(Landroid/content/Context;Lorg/thoughtcrime/securesms/fonts/SignalSymbols$Weight;)Landroid/graphics/Typeface; +PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration$onDraw$1;->(Landroidx/recyclerview/widget/RecyclerView;)V PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration;->()V PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration;->(Lorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$Callback;Lkotlin/jvm/functions/Function1;)V PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4ItemDecoration;->(Lorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$Callback;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$$ExternalSyntheticLambda0;->(Ljava/util/Set;)V +PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$RangeComparator;->(II)V +PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$RangeComparator;->compare(Ljava/lang/Integer;Ljava/lang/Integer;)I PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$RangeComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController;->(Lorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$Callback;I)V PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController;->attach(Landroidx/recyclerview/widget/RecyclerView;Lorg/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackController$Callback;I)V @@ -49239,9 +49240,6 @@ PLorg/thoughtcrime/securesms/giph/mp4/GiphyMp4VideoPlayer;->setResizeMode(I)V PLorg/thoughtcrime/securesms/groups/v2/GroupManagementRepository;->()V PLorg/thoughtcrime/securesms/groups/v2/GroupManagementRepository;->(Landroid/content/Context;)V PLorg/thoughtcrime/securesms/groups/v2/GroupManagementRepository;->(Landroid/content/Context;ILkotlin/jvm/internal/DefaultConstructorMarker;)V -PLorg/thoughtcrime/securesms/jobmanager/InAppScheduler$$ExternalSyntheticLambda0;->run()V -PLorg/thoughtcrime/securesms/jobmanager/InAppScheduler;->$r8$lambda$0KH5iNLdy2DvUxriNkEuWXyJtWM(Lorg/thoughtcrime/securesms/jobmanager/InAppScheduler;)V -PLorg/thoughtcrime/securesms/jobmanager/InAppScheduler;->lambda$schedule$0()V PLorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder;->setGlobalPriority(I)Lorg/thoughtcrime/securesms/jobmanager/Job$Parameters$Builder; PLorg/thoughtcrime/securesms/jobmanager/JsonJobData$Builder;->putStringListAsArray(Ljava/lang/String;Ljava/util/List;)Lorg/thoughtcrime/securesms/jobmanager/JsonJobData$Builder; PLorg/thoughtcrime/securesms/jobs/ConversationShortcutUpdateJob;->()V @@ -49272,9 +49270,11 @@ PLorg/thoughtcrime/securesms/keyboard/emoji/search/EmojiSearchRepository;->(Landroid/content/Context;)V PLorg/thoughtcrime/securesms/keyvalue/InternalValues;->useConversationItemV2Media()Z PLorg/thoughtcrime/securesms/keyvalue/SettingsValues$Theme;->values()[Lorg/thoughtcrime/securesms/keyvalue/SettingsValues$Theme; +PLorg/thoughtcrime/securesms/keyvalue/SettingsValues;->getMessageFontSize()I PLorg/thoughtcrime/securesms/keyvalue/SettingsValues;->getUniversalExpireTimer()I PLorg/thoughtcrime/securesms/keyvalue/SettingsValues;->isEnterKeySends()Z PLorg/thoughtcrime/securesms/keyvalue/SettingsValues;->isLinkPreviewsEnabled()Z +PLorg/thoughtcrime/securesms/keyvalue/WallpaperValues;->hasWallpaperSet()Z PLorg/thoughtcrime/securesms/linkpreview/LinkPreviewRepository;->()V PLorg/thoughtcrime/securesms/linkpreview/LinkPreviewRepository;->()V PLorg/thoughtcrime/securesms/linkpreview/LinkPreviewState$Companion;->()V @@ -49336,7 +49336,7 @@ PLorg/thoughtcrime/securesms/mms/AttachmentManager;->()V PLorg/thoughtcrime/securesms/mms/AttachmentManager;->(Landroid/content/Context;Landroid/view/View;Lorg/thoughtcrime/securesms/mms/AttachmentManager$AttachmentListener;)V PLorg/thoughtcrime/securesms/mms/AttachmentManager;->isAttachmentPresent()Z PLorg/thoughtcrime/securesms/mms/ImageSlide;->hasPlaceholder()Z -PLorg/thoughtcrime/securesms/mms/PartAuthority;->getEmojiFilename(Landroid/net/Uri;)Ljava/lang/String; +PLorg/thoughtcrime/securesms/mms/ImageSlide;->isBorderless()Z PLorg/thoughtcrime/securesms/mms/Slide;->asAttachment()Lorg/thoughtcrime/securesms/attachments/Attachment; PLorg/thoughtcrime/securesms/mms/Slide;->getBody()Lj$/util/Optional; PLorg/thoughtcrime/securesms/mms/Slide;->getCaption()Lj$/util/Optional; @@ -49344,6 +49344,7 @@ PLorg/thoughtcrime/securesms/mms/Slide;->getDisplayUri()Landroid/net/Uri; PLorg/thoughtcrime/securesms/mms/Slide;->getFileSize()J PLorg/thoughtcrime/securesms/mms/Slide;->getPlaceholderBlur()Lorg/thoughtcrime/securesms/blurhash/BlurHash; PLorg/thoughtcrime/securesms/mms/Slide;->hasThumbnail()Z +PLorg/thoughtcrime/securesms/mms/Slide;->isInProgress()Z PLorg/thoughtcrime/securesms/mms/SlideDeck$$ExternalSyntheticLambda0;->()V PLorg/thoughtcrime/securesms/mms/SlideDeck$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/mms/SlideDeck;->getBody()Ljava/lang/String; @@ -49415,6 +49416,7 @@ PLorg/thoughtcrime/securesms/notifications/v2/NotificationStateProvider;->constr PLorg/thoughtcrime/securesms/preferences/widgets/NotificationPrivacyPreference;->equals(Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/preferences/widgets/NotificationPrivacyPreference;->isDisplayContact()Z PLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda0;->onChanged(Ljava/lang/Object;)V +PLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda1;->contentsMatch(Ljava/lang/Object;Ljava/lang/Object;)Z PLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda5;->(Lorg/thoughtcrime/securesms/recipients/LiveRecipient;Lorg/thoughtcrime/securesms/recipients/RecipientForeverObserver;)V PLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda5;->run()V PLorg/thoughtcrime/securesms/recipients/LiveRecipient$$ExternalSyntheticLambda6;->(Lorg/thoughtcrime/securesms/recipients/LiveRecipient;Lorg/thoughtcrime/securesms/recipients/RecipientForeverObserver;)V @@ -49492,6 +49494,7 @@ PLorg/thoughtcrime/securesms/util/ConversationUtil;->refreshRecipientShortcuts() PLorg/thoughtcrime/securesms/util/DateUtils$sameDayDateFormat$2;->invoke()Ljava/lang/Object; PLorg/thoughtcrime/securesms/util/DateUtils$sameDayDateFormat$2;->invoke()Ljava/text/SimpleDateFormat; PLorg/thoughtcrime/securesms/util/DateUtils;->getConversationDateHeaderString(Landroid/content/Context;Ljava/util/Locale;J)Ljava/lang/String; +PLorg/thoughtcrime/securesms/util/DateUtils;->getDatelessRelativeTimeSpanFormattedDate(Landroid/content/Context;Ljava/util/Locale;J)Lorg/thoughtcrime/securesms/conversation/v2/computed/FormattedDate; PLorg/thoughtcrime/securesms/util/DateUtils;->isSameExtendedRelativeTimestamp(JJ)Z PLorg/thoughtcrime/securesms/util/Debouncer;->clear()V PLorg/thoughtcrime/securesms/util/DefaultSavedStateHandleDelegate$lazyDefault$2;->(Lkotlin/jvm/functions/Function0;)V @@ -49528,6 +49531,7 @@ PLorg/thoughtcrime/securesms/util/Material3OnScrollHelper;->(Landroid/app/ PLorg/thoughtcrime/securesms/util/Material3OnScrollHelper;->access$getAnimator$p(Lorg/thoughtcrime/securesms/util/Material3OnScrollHelper;)Landroid/animation/ValueAnimator; PLorg/thoughtcrime/securesms/util/Material3OnScrollHelper;->access$getSetStatusBarColor$p(Lorg/thoughtcrime/securesms/util/Material3OnScrollHelper;)Lkotlin/jvm/functions/Function1; PLorg/thoughtcrime/securesms/util/Material3OnScrollHelper;->getPreviousStatusBarColor()I +PLorg/thoughtcrime/securesms/util/MediaUtil;->isInstantVideoSupported(Lorg/thoughtcrime/securesms/mms/Slide;)Z PLorg/thoughtcrime/securesms/util/MediaUtil;->isVideoType(Ljava/lang/String;)Z PLorg/thoughtcrime/securesms/util/MessageRecordUtil;->hasLocation(Lorg/thoughtcrime/securesms/database/model/MessageRecord;)Z PLorg/thoughtcrime/securesms/util/NullableSavedStateHandleDelegate;->(Landroidx/lifecycle/SavedStateHandle;Ljava/lang/String;)V @@ -49535,6 +49539,7 @@ PLorg/thoughtcrime/securesms/util/Projection$Corners;->()V PLorg/thoughtcrime/securesms/util/Projection$Corners;->(F)V PLorg/thoughtcrime/securesms/util/Projection$Corners;->([F)V PLorg/thoughtcrime/securesms/util/Projection$Corners;->toRelativeRadii(Z)[F +PLorg/thoughtcrime/securesms/util/ProjectionList;->getSize()I PLorg/thoughtcrime/securesms/util/ProjectionList;->size()I PLorg/thoughtcrime/securesms/util/PushCharacterCalculator$1;->()V PLorg/thoughtcrime/securesms/util/PushCharacterCalculator;->()V @@ -49574,6 +49579,7 @@ PLorg/thoughtcrime/securesms/util/TextSecurePreferences$MediaKeyboardMode;->valueOf(Ljava/lang/String;)Lorg/thoughtcrime/securesms/util/TextSecurePreferences$MediaKeyboardMode; PLorg/thoughtcrime/securesms/util/TextSecurePreferences$MediaKeyboardMode;->values()[Lorg/thoughtcrime/securesms/util/TextSecurePreferences$MediaKeyboardMode; PLorg/thoughtcrime/securesms/util/TextSecurePreferences;->getMediaKeyboardMode(Landroid/content/Context;)Lorg/thoughtcrime/securesms/util/TextSecurePreferences$MediaKeyboardMode; +PLorg/thoughtcrime/securesms/util/TextSecurePreferences;->getMessageBodyTextSize(Landroid/content/Context;)I PLorg/thoughtcrime/securesms/util/TextSecurePreferences;->hasSeenStickerIntroTooltip(Landroid/content/Context;)Z PLorg/thoughtcrime/securesms/util/TextSecurePreferences;->isEnterSendsEnabled(Landroid/content/Context;)Z PLorg/thoughtcrime/securesms/util/ThemeUtil;->getAttribute(Landroid/content/Context;ILjava/lang/String;)Ljava/lang/String; @@ -49630,6 +49636,7 @@ PLorg/thoughtcrime/securesms/util/ViewUtil;->getAlphaAnimation(FFI)Landroid/view PLorg/thoughtcrime/securesms/util/ViewUtil;->getLeftMargin(Landroid/view/View;)I PLorg/thoughtcrime/securesms/util/ViewUtil;->getRightMargin(Landroid/view/View;)I PLorg/thoughtcrime/securesms/util/ViewUtil;->getTopMargin(Landroid/view/View;)I +PLorg/thoughtcrime/securesms/util/ViewUtil;->isRtl(Landroid/view/View;)Z PLorg/thoughtcrime/securesms/util/ViewUtil;->mirrorIfRtl(Landroid/view/View;Landroid/content/Context;)V PLorg/thoughtcrime/securesms/util/ViewUtil;->setPaddingBottom(Landroid/view/View;I)V PLorg/thoughtcrime/securesms/util/ViewUtil;->setPaddingTop(Landroid/view/View;I)V @@ -49676,6 +49683,7 @@ PLorg/thoughtcrime/securesms/util/dualsim/SubscriptionManagerCompat;->() PLorg/thoughtcrime/securesms/util/dualsim/SubscriptionManagerCompat;->(Landroid/content/Context;)V PLorg/thoughtcrime/securesms/util/rx/RxStore;->dispose()V PLorg/thoughtcrime/securesms/util/views/NullableStub;->isResolvable()Z +PLorg/thoughtcrime/securesms/util/views/NullableStub;->resolved()Z PLorg/thoughtcrime/securesms/util/views/Stub;->getVisibility()I PLorg/thoughtcrime/securesms/util/views/Stub;->isVisible()Z PLrxdogtag2/DogTagMaybeObserver$$ExternalSyntheticLambda2;->(Lrxdogtag2/DogTagMaybeObserver;)V From 6673293e29fe68d8db70a6b1c77718f4ad2e3f1a Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 22 Oct 2024 10:33:02 -0400 Subject: [PATCH 45/51] Bump version to 7.21.4. --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c10ec26a68..b9ba4bb73d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -21,8 +21,8 @@ plugins { apply(from = "static-ips.gradle.kts") -val canonicalVersionCode = 1474 -val canonicalVersionName = "7.21.3" +val canonicalVersionCode = 1475 +val canonicalVersionName = "7.21.4" val currentHotfixVersion = 0 val maxHotfixVersions = 100 From 9fa04e03fd4cd8f3cd2c8cc833e4d681642cd090 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Wed, 23 Oct 2024 14:15:42 -0300 Subject: [PATCH 46/51] Ensure rate limit dialog appears during calls. --- .../securesms/WebRtcCallActivity.java | 24 +++- .../securesms/jobs/IndividualSendJob.java | 8 +- .../securesms/jobs/ProfileKeySendJob.java | 10 +- .../securesms/jobs/PushGroupSendJob.java | 8 +- .../securesms/jobs/PushSendJob.java | 78 ----------- .../ProofRequiredExceptionHandler.kt | 128 ++++++++++++++++++ .../ratelimit/RecaptchaProofActivity.java | 22 ++- .../RecaptchaProofBottomSheetFragment.java | 30 +++- .../service/webrtc/GroupActionProcessor.java | 14 ++ .../service/webrtc/SignalCallManager.java | 17 ++- .../service/webrtc/WebRtcActionProcessor.java | 5 + 11 files changed, 253 insertions(+), 91 deletions(-) create mode 100644 app/src/main/java/org/thoughtcrime/securesms/ratelimit/ProofRequiredExceptionHandler.kt diff --git a/app/src/main/java/org/thoughtcrime/securesms/WebRtcCallActivity.java b/app/src/main/java/org/thoughtcrime/securesms/WebRtcCallActivity.java index 9e4609ed66..fb1d2907f1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/WebRtcCallActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/WebRtcCallActivity.java @@ -91,8 +91,11 @@ import org.thoughtcrime.securesms.conversation.ui.error.SafetyNumberChangeDialog; import org.thoughtcrime.securesms.dependencies.AppDependencies; import org.thoughtcrime.securesms.events.WebRtcViewModel; +import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.messagerequests.CalleeMustAcceptMessageRequestActivity; import org.thoughtcrime.securesms.permissions.Permissions; +import org.thoughtcrime.securesms.ratelimit.RecaptchaProofBottomSheetFragment; +import org.thoughtcrime.securesms.ratelimit.RecaptchaRequiredEvent; import org.thoughtcrime.securesms.reactions.any.ReactWithAnyEmojiBottomSheetDialogFragment; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; @@ -116,7 +119,6 @@ import java.util.HashSet; import java.util.List; -import java.util.Objects; import java.util.Optional; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -127,7 +129,7 @@ import static org.thoughtcrime.securesms.components.sensors.Orientation.PORTRAIT_BOTTOM_EDGE; -public class WebRtcCallActivity extends BaseActivity implements SafetyNumberChangeDialog.Callback, ReactWithAnyEmojiBottomSheetDialogFragment.Callback { +public class WebRtcCallActivity extends BaseActivity implements SafetyNumberChangeDialog.Callback, ReactWithAnyEmojiBottomSheetDialogFragment.Callback, RecaptchaProofBottomSheetFragment.Callback { private static final String TAG = Log.tag(WebRtcCallActivity.class); @@ -263,6 +265,8 @@ protected void onStart() { public void onResume() { Log.i(TAG, "onResume()"); super.onResume(); + EventBus.getDefault().register(this); + initializeScreenshotSecurity(); if (!EventBus.getDefault().isRegistered(this)) { @@ -287,6 +291,10 @@ public void onResume() { enterPipOnResume = false; enterPipModeIfPossible(); } + + if (SignalStore.rateLimit().needsRecaptcha()) { + RecaptchaProofBottomSheetFragment.show(getSupportFragmentManager()); + } } @Override @@ -303,6 +311,8 @@ public void onPause() { Log.i(TAG, "onPause"); super.onPause(); + EventBus.getDefault().unregister(this); + if (!callPermissionsDialogController.isAskingForPermission() && !viewModel.isCallStarting() && !isChangingConfigurations()) { CallParticipantsState state = viewModel.getCallParticipantsStateSnapshot(); if (state != null && state.getCallState().isPreJoinOrNetworkUnavailable()) { @@ -345,6 +355,11 @@ protected void onDestroy() { EventBus.getDefault().unregister(this); } + @Subscribe(threadMode = ThreadMode.MAIN) + public void onRecaptchaRequiredEvent(RecaptchaRequiredEvent recaptchaRequiredEvent) { + RecaptchaProofBottomSheetFragment.show(getSupportFragmentManager()); + } + @SuppressLint("MissingSuperCall") @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { @@ -1071,6 +1086,11 @@ public void onReactWithAnyEmojiSelected(@NonNull String emoji) { callOverflowPopupWindow.dismiss(); } + @Override + public void onProofCompleted() { + AppDependencies.getSignalCallManager().resendMediaKeys(); + } + private final class ControlsListener implements WebRtcCallView.ControlsListener { @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/IndividualSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/IndividualSendJob.java index 9fa17f3887..609861a6d5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/IndividualSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/IndividualSendJob.java @@ -26,6 +26,7 @@ import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.mms.MmsException; import org.thoughtcrime.securesms.mms.OutgoingMessage; +import org.thoughtcrime.securesms.ratelimit.ProofRequiredExceptionHandler; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -215,7 +216,12 @@ public void onPushSend() database.markAsSentFailed(messageId); RetrieveProfileJob.enqueue(recipientId); } catch (ProofRequiredException e) { - handleProofRequiredException(context, e, SignalDatabase.threads().getRecipientForThreadId(threadId), threadId, messageId, true); + ProofRequiredExceptionHandler.Result result = ProofRequiredExceptionHandler.handle(context, e, SignalDatabase.threads().getRecipientForThreadId(threadId), threadId, messageId); + if (result.isRetry()) { + throw new RetryLaterException(); + } else { + throw e; + } } SignalLocalMetrics.IndividualMessageSend.onJobFinished(messageId); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ProfileKeySendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/ProfileKeySendJob.java index ccfb593321..70eb94ff6f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ProfileKeySendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ProfileKeySendJob.java @@ -14,6 +14,7 @@ import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; import org.thoughtcrime.securesms.messages.GroupSendUtil; import org.thoughtcrime.securesms.net.NotPushRegisteredException; +import org.thoughtcrime.securesms.ratelimit.ProofRequiredExceptionHandler; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -22,6 +23,7 @@ import org.whispersystems.signalservice.api.crypto.UntrustedIdentityException; import org.whispersystems.signalservice.api.messages.SendMessageResult; import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage; +import org.whispersystems.signalservice.api.push.exceptions.ProofRequiredException; import org.whispersystems.signalservice.api.push.exceptions.ServerRejectedException; import java.io.IOException; @@ -170,7 +172,8 @@ private List deliver(@NonNull List destinations) throws IO .withTimestamp(System.currentTimeMillis()) .withProfileKey(Recipient.self().resolve().getProfileKey()); - List results = GroupSendUtil.sendUnresendableDataMessage(context, null, destinations, false, ContentHint.IMPLICIT, dataMessage.build(), false); + List results = GroupSendUtil.sendUnresendableDataMessage(context, null, destinations, false, ContentHint.IMPLICIT, dataMessage.build(), false); + ProofRequiredException proofRequired = Stream.of(results).filter(r -> r.getProofRequiredFailure() != null).findLast().map(SendMessageResult::getProofRequiredFailure).orElse(null); GroupSendJobHelper.SendResult groupResult = GroupSendJobHelper.getCompletedSends(destinations, results); @@ -178,6 +181,11 @@ private List deliver(@NonNull List destinations) throws IO SignalDatabase.recipients().markUnregistered(unregistered); } + if (proofRequired != null) { + Log.d(TAG, "Notifying the user they were rate limited."); + ProofRequiredExceptionHandler.handle(context, proofRequired, null, -1L, -1L); + } + return groupResult.completed; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java index f6981d9970..ccd169b7a9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java @@ -37,6 +37,7 @@ import org.thoughtcrime.securesms.mms.MessageGroupContext; import org.thoughtcrime.securesms.mms.MmsException; import org.thoughtcrime.securesms.mms.OutgoingMessage; +import org.thoughtcrime.securesms.ratelimit.ProofRequiredExceptionHandler; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -456,7 +457,12 @@ static void processGroupMessageResults(@NonNull Context context, SignalDatabase.groupReceipts().setUnidentified(successUnidentifiedStatus, messageId); if (proofRequired != null) { - handleProofRequiredException(context, proofRequired, groupRecipient, threadId, messageId, true); + ProofRequiredExceptionHandler.Result result = ProofRequiredExceptionHandler.handle(context, proofRequired, groupRecipient, threadId, messageId); + if (result.isRetry()) { + throw new RetryLaterException(); + } else { + throw proofRequired; + } } if (existingNetworkFailures.isEmpty() && existingIdentityMismatches.isEmpty()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java index b5c8e5ad8f..1a32053aeb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java @@ -575,84 +575,6 @@ protected void rotateSenderCertificateIfNecessary() throws IOException { } } - protected static void handleProofRequiredException(@NonNull Context context, @NonNull ProofRequiredException proofRequired, @Nullable Recipient recipient, long threadId, long messageId, boolean isMms) - throws ProofRequiredException, RetryLaterException - { - Log.w(TAG, "[Proof Required] Options: " + proofRequired.getOptions()); - - try { - if (proofRequired.getOptions().contains(ProofRequiredException.Option.PUSH_CHALLENGE)) { - AppDependencies.getSignalServiceAccountManager().requestRateLimitPushChallenge(); - Log.i(TAG, "[Proof Required] Successfully requested a challenge. Waiting up to " + PUSH_CHALLENGE_TIMEOUT + " ms."); - - boolean success = new PushChallengeRequest(PUSH_CHALLENGE_TIMEOUT).blockUntilSuccess(); - - if (success) { - Log.i(TAG, "Successfully responded to a push challenge. Retrying message send."); - throw new RetryLaterException(1); - } else { - Log.w(TAG, "Failed to respond to the push challenge in time. Falling back."); - } - } - } catch (NonSuccessfulResponseCodeException e) { - Log.w(TAG, "[Proof Required] Could not request a push challenge (" + e.getCode() + "). Falling back.", e); - } catch (IOException e) { - Log.w(TAG, "[Proof Required] Network error when requesting push challenge. Retrying later."); - throw new RetryLaterException(e); - } - - Log.w(TAG, "[Proof Required] Marking message as rate-limited. (id: " + messageId + ", mms: " + isMms + ", thread: " + threadId + ")"); - if (isMms) { - SignalDatabase.messages().markAsRateLimited(messageId); - } else { - SignalDatabase.messages().markAsRateLimited(messageId); - } - - if (proofRequired.getOptions().contains(ProofRequiredException.Option.CAPTCHA)) { - Log.i(TAG, "[Proof Required] CAPTCHA required."); - SignalStore.rateLimit().markNeedsRecaptcha(proofRequired.getToken()); - - if (recipient != null) { - ParentStoryId.GroupReply groupReply = SignalDatabase.messages().getParentStoryIdForGroupReply(messageId); - AppDependencies.getMessageNotifier().notifyProofRequired(context, recipient, ConversationId.fromThreadAndReply(threadId, groupReply)); - } else { - Log.w(TAG, "[Proof Required] No recipient! Couldn't notify."); - } - } - - throw proofRequired; - } - protected abstract void onPushSend() throws Exception; - public static class PushChallengeRequest { - private final long timeout; - private final CountDownLatch latch; - private final EventBus eventBus; - - private PushChallengeRequest(long timeout) { - this.timeout = timeout; - this.latch = new CountDownLatch(1); - this.eventBus = EventBus.getDefault(); - } - - public boolean blockUntilSuccess() { - eventBus.register(this); - - try { - return latch.await(timeout, TimeUnit.MILLISECONDS); - } catch (InterruptedException e) { - Log.w(TAG, "[Proof Required] Interrupted?", e); - return false; - } finally { - eventBus.unregister(this); - } - } - - @Subscribe(threadMode = ThreadMode.POSTING) - public void onSuccessReceived(SubmitRateLimitPushChallengeJob.SuccessEvent event) { - Log.i(TAG, "[Proof Required] Received a successful result!"); - latch.countDown(); - } - } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/ratelimit/ProofRequiredExceptionHandler.kt b/app/src/main/java/org/thoughtcrime/securesms/ratelimit/ProofRequiredExceptionHandler.kt new file mode 100644 index 0000000000..2e97681ced --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/ratelimit/ProofRequiredExceptionHandler.kt @@ -0,0 +1,128 @@ +/* + * Copyright 2024 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.thoughtcrime.securesms.ratelimit + +import android.content.Context +import androidx.annotation.WorkerThread +import org.greenrobot.eventbus.EventBus +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode +import org.signal.core.util.logging.Log +import org.thoughtcrime.securesms.database.SignalDatabase +import org.thoughtcrime.securesms.database.model.ParentStoryId +import org.thoughtcrime.securesms.dependencies.AppDependencies +import org.thoughtcrime.securesms.jobs.SubmitRateLimitPushChallengeJob.SuccessEvent +import org.thoughtcrime.securesms.keyvalue.SignalStore +import org.thoughtcrime.securesms.notifications.v2.ConversationId +import org.thoughtcrime.securesms.recipients.Recipient +import org.whispersystems.signalservice.api.push.exceptions.NonSuccessfulResponseCodeException +import org.whispersystems.signalservice.api.push.exceptions.ProofRequiredException +import java.io.IOException +import java.util.concurrent.CountDownLatch +import java.util.concurrent.TimeUnit +import kotlin.time.Duration +import kotlin.time.Duration.Companion.seconds + +/** + * Reusable ProofRequiredException handling code. + */ +object ProofRequiredExceptionHandler { + + private val TAG = Log.tag(ProofRequiredExceptionHandler::class) + private val PUSH_CHALLENGE_TIMEOUT: Duration = 10.seconds + + /** + * Handles the given exception, updating state as necessary. + */ + @JvmStatic + @WorkerThread + fun handle(context: Context, proofRequired: ProofRequiredException, recipient: Recipient?, threadId: Long, messageId: Long): Result { + Log.w(TAG, "[Proof Required] Options: ${proofRequired.options}") + + try { + if (ProofRequiredException.Option.PUSH_CHALLENGE in proofRequired.options) { + AppDependencies.signalServiceAccountManager.requestRateLimitPushChallenge() + Log.i(TAG, "[Proof Required] Successfully requested a challenge. Waiting up to $PUSH_CHALLENGE_TIMEOUT ms.") + + val success = PushChallengeRequest(PUSH_CHALLENGE_TIMEOUT).blockUntilSuccess() + + if (success) { + Log.i(TAG, "Successfully responded to a push challenge. Retrying message send.") + return Result.RETRY_NOW + } else { + Log.w(TAG, "Failed to respond to the push challeng in time. Falling back.") + } + } + } catch (e: NonSuccessfulResponseCodeException) { + Log.w(TAG, "[Proof Required] Could not request a push challenge (${e.code}). Falling back.", e) + } catch (e: IOException) { + Log.w(TAG, "[Proof Required] Network error when requesting push challenge. Retrying later.") + return Result.RETRY_LATER + } + + if (messageId > 0) { + Log.w(TAG, "[Proof Required] Marking message as rate-limited. (id: $messageId, thread: $threadId)") + SignalDatabase.messages.markAsRateLimited(messageId) + } + + if (ProofRequiredException.Option.CAPTCHA in proofRequired.options) { + Log.i(TAG, "[Proof Required] CAPTCHA required.") + SignalStore.rateLimit.markNeedsRecaptcha(proofRequired.token) + + if (recipient != null && messageId > -1L) { + val groupReply: ParentStoryId.GroupReply? = SignalDatabase.messages.getParentStoryIdForGroupReply(messageId) + AppDependencies.messageNotifier.notifyProofRequired(context, recipient, ConversationId.fromThreadAndReply(threadId, groupReply)) + } else { + Log.w(TAG, "[Proof Required] No recipient! Couldn't notify.") + } + } + + return Result.RETHROW + } + + enum class Result { + /** + * The challenge was successful and the message send can be retried immediately. + */ + RETRY_NOW, + + /** + * The challenge failed due to a network error and should be scheduled to retry with some offset. + */ + RETRY_LATER, + + /** + * The caller should rethrow the original error. + */ + RETHROW; + + fun isRetry() = this != RETHROW + } + + private class PushChallengeRequest(val timeout: Duration) { + private val latch = CountDownLatch(1) + private val eventBus = EventBus.getDefault() + + fun blockUntilSuccess(): Boolean { + eventBus.register(this) + + return try { + latch.await(timeout.inWholeMilliseconds, TimeUnit.MILLISECONDS) + } catch (e: InterruptedException) { + Log.w(TAG, "[Proof Required] Interrupted?", e) + false + } finally { + eventBus.unregister(this) + } + } + + @Subscribe(threadMode = ThreadMode.POSTING) + fun onSuccessReceived(event: SuccessEvent) { + Log.i(TAG, "[Proof Required] Received a successful result!") + latch.countDown() + } + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/ratelimit/RecaptchaProofActivity.java b/app/src/main/java/org/thoughtcrime/securesms/ratelimit/RecaptchaProofActivity.java index 7c1bcd6508..8ca2d37c97 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ratelimit/RecaptchaProofActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ratelimit/RecaptchaProofActivity.java @@ -10,8 +10,11 @@ import android.webkit.WebViewClient; import android.widget.Toast; +import androidx.activity.result.contract.ActivityResultContract; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import org.signal.core.util.concurrent.SimpleTask; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.BuildConfig; import org.thoughtcrime.securesms.PassphraseRequiredActivity; @@ -20,7 +23,6 @@ import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.util.DynamicTheme; import org.thoughtcrime.securesms.util.Util; -import org.signal.core.util.concurrent.SimpleTask; import org.thoughtcrime.securesms.util.views.SimpleProgressDialog; import org.whispersystems.signalservice.api.push.exceptions.PushNetworkException; @@ -36,10 +38,6 @@ public class RecaptchaProofActivity extends PassphraseRequiredActivity { private final DynamicTheme dynamicTheme = new DynamicTheme(); - public static @NonNull Intent getIntent(@NonNull Context context) { - return new Intent(context, RecaptchaProofActivity.class); - } - @Override protected void onPreCreate() { dynamicTheme.onCreate(this); @@ -120,6 +118,7 @@ private void handleToken(@NonNull String token) { if (result.clearState) { Log.i(TAG, "Considering the response sufficient to clear the slate."); SignalStore.rateLimit().onProofAccepted(); + setResult(RESULT_OK); } if (!result.success) { @@ -140,4 +139,17 @@ private TokenResult(boolean clearState, boolean success) { this.success = success; } } + + public static class RecaptchaProofContract extends ActivityResultContract { + + @Override + public @NonNull Intent createIntent(@NonNull Context context, Void unused) { + return new Intent(context, RecaptchaProofActivity.class); + } + + @Override + public Boolean parseResult(int resultCode, @Nullable Intent intent) { + return resultCode == RESULT_OK; + } + } } \ No newline at end of file diff --git a/app/src/main/java/org/thoughtcrime/securesms/ratelimit/RecaptchaProofBottomSheetFragment.java b/app/src/main/java/org/thoughtcrime/securesms/ratelimit/RecaptchaProofBottomSheetFragment.java index a87d1eaf44..a58012b758 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ratelimit/RecaptchaProofBottomSheetFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ratelimit/RecaptchaProofBottomSheetFragment.java @@ -1,10 +1,12 @@ package org.thoughtcrime.securesms.ratelimit; +import android.app.Activity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import androidx.activity.result.ActivityResultLauncher; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.DialogFragment; @@ -24,6 +26,8 @@ public final class RecaptchaProofBottomSheetFragment extends BottomSheetDialogFr private static final String TAG = Log.tag(RecaptchaProofBottomSheetFragment.class); + private ActivityResultLauncher launcher; + public static void show(@NonNull FragmentManager manager) { new RecaptchaProofBottomSheetFragment().show(manager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG); } @@ -38,11 +42,25 @@ public void onCreate(@Nullable Bundle savedInstanceState) { public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.recaptcha_required_bottom_sheet, container, false); - view.findViewById(R.id.recaptcha_sheet_ok_button).setOnClickListener(v -> { + Activity activity = requireActivity(); + final Callback callback; + + if (activity instanceof Callback) { + callback = (Callback) activity; + } else { + callback = null; + } + + launcher = registerForActivityResult(new RecaptchaProofActivity.RecaptchaProofContract(), (isOk) -> { + if (isOk && callback != null) { + callback.onProofCompleted(); + } + dismissAllowingStateLoss(); - startActivity(RecaptchaProofActivity.getIntent(requireContext())); }); + view.findViewById(R.id.recaptcha_sheet_ok_button).setOnClickListener(v -> launcher.launch(null)); + return view; } @@ -62,4 +80,12 @@ public void show(@NonNull FragmentManager manager, @Nullable String tag) { Log.i(TAG, "Ignoring repeat show."); } } + + /** + * Optional callback interface to be invoked when the user successfully completes a push challenge. + * This is expected to be implemented on the activity which is displaying this fragment. + */ + public interface Callback { + void onProofCompleted(); + } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupActionProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupActionProcessor.java index ce7e9d4d6f..dcfca8f826 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupActionProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupActionProcessor.java @@ -331,4 +331,18 @@ public GroupActionProcessor(@NonNull MultiPeerActionProcessorFactory actionProce return terminateGroupCall(currentState); } + + @Override + protected @NonNull WebRtcServiceState handleResendMediaKeys(@NonNull WebRtcServiceState currentState) { + GroupCall groupCall = currentState.getCallInfoState().getGroupCall(); + if (groupCall != null) { + try { + currentState.getCallInfoState().getGroupCall().resendMediaKeys(); + } catch (CallException e) { + return groupCallFailure(currentState, "Unable to resend media keys", e); + } + } + + return currentState; + } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java index 6ba3c7ba49..0bf8150208 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java @@ -14,7 +14,6 @@ import com.annimon.stream.Stream; import org.greenrobot.eventbus.EventBus; -import org.signal.core.util.ListUtil; import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.logging.Log; import org.signal.libsignal.protocol.util.Pair; @@ -56,6 +55,7 @@ import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.messages.GroupSendUtil; import org.thoughtcrime.securesms.notifications.v2.ConversationId; +import org.thoughtcrime.securesms.ratelimit.ProofRequiredExceptionHandler; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; @@ -85,6 +85,7 @@ import org.whispersystems.signalservice.api.messages.calls.TurnServerInfo; import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage; import org.whispersystems.signalservice.api.push.ServiceId.ACI; +import org.whispersystems.signalservice.api.push.exceptions.ProofRequiredException; import org.whispersystems.signalservice.api.push.exceptions.UnregisteredUserException; import org.whispersystems.signalservice.internal.push.SyncMessage; @@ -801,6 +802,11 @@ public void onSendCallMessage(@NonNull UUID aciUuid, @NonNull byte[] message, @N Log.i(TAG, "onSendCallMessage onFailure: ", e); RetrieveProfileJob.enqueue(recipient.getId()); process((s, p) -> p.handleGroupMessageSentError(s, Collections.singletonList(recipient.getId()), UNTRUSTED_IDENTITY)); + } catch (ProofRequiredException e) { + Log.i(TAG, "onSendCallMessage onFailure: ", e); + ProofRequiredExceptionHandler.handle(context, e, recipient, -1L, -1L); + process((s, p) -> p.handleResendMediaKeys(s)); + process((s, p) -> p.handleGroupMessageSentError(s, Collections.singletonList(recipient.getId()), NETWORK_FAILURE)); } catch (IOException e) { Log.i(TAG, "onSendCallMessage onFailure: ", e); process((s, p) -> p.handleGroupMessageSentError(s, Collections.singletonList(recipient.getId()), NETWORK_FAILURE)); @@ -1147,6 +1153,10 @@ public void updateGroupCallUpdateMessage(@NonNull RecipientId groupId, @Nullable isCallFull)); } + public void resendMediaKeys() { + process((s, p) -> p.handleResendMediaKeys(s)); + } + public void sendCallMessage(@NonNull final RemotePeer remotePeer, @NonNull final SignalServiceCallMessage callMessage) { @@ -1170,6 +1180,11 @@ public void sendCallMessage(@NonNull final RemotePeer remotePeer, UNTRUSTED_IDENTITY, Optional.ofNullable(e.getIdentityKey()))); } catch (IOException e) { + if (e instanceof ProofRequiredException) { + ProofRequiredExceptionHandler.handle(context, (ProofRequiredException) e, null, -1L, -1L); + process((s, p) -> p.handleResendMediaKeys(s)); + } + processSendMessageFailureWithChangeDetection(remotePeer, (s, p) -> p.handleMessageSentError(s, remotePeer.getCallId(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcActionProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcActionProcessor.java index 18ee543951..a9499e1912 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcActionProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcActionProcessor.java @@ -793,6 +793,11 @@ public WebRtcActionProcessor(@NonNull WebRtcInteractor webRtcInteractor, @NonNul return currentState; } + protected @NonNull WebRtcServiceState handleResendMediaKeys(@NonNull WebRtcServiceState currentState) { + Log.i(tag, "handleResendMediaKeys not processed"); + return currentState; + } + protected @NonNull WebRtcServiceState handleReceivedOpaqueMessage(@NonNull WebRtcServiceState currentState, @NonNull WebRtcData.OpaqueMessageMetadata opaqueMessageMetadata) { Log.i(tag, "handleReceivedOpaqueMessage():"); From d65e4e85691c8427a4890226b5fa14d411edd30a Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 23 Oct 2024 15:36:11 -0400 Subject: [PATCH 47/51] Update translations and other static files. --- app/src/main/res/values-ar/strings.xml | 180 ++++++++++----------- app/src/main/res/values-es/strings.xml | 6 +- app/src/main/res/values-et/strings.xml | 114 ++++++------- app/src/main/res/values-fr/strings.xml | 112 ++++++------- app/src/main/res/values-hr/strings.xml | 118 +++++++------- app/src/main/res/values-sk/strings.xml | 118 +++++++------- app/src/main/res/values-sw/strings.xml | 22 +-- app/src/main/res/values-uk/strings.xml | 8 +- app/src/main/res/values-zh-rHK/strings.xml | 106 ++++++------ app/src/main/res/values-zh-rTW/strings.xml | 106 ++++++------ app/static-ips.gradle.kts | 2 +- 11 files changed, 446 insertions(+), 446 deletions(-) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 44d308682b..eaafe734eb 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -381,7 +381,7 @@ الرسائل - Chat types + أنواع الدردشات رسالة %1$s @@ -3408,9 +3408,9 @@ %1$d عضوٍ - العثور عبر رقم الهاتف + إيجاد بحسب رقم الهاتف - العثور عبر اسم المُستخدم + إيجاد بحسب اسم المُستخدم السماح بالوصول إلى جهات الاتصال @@ -3700,32 +3700,32 @@ فتح القفل - يتطلب سيجنال إعدادات الرّسائل متعدّدة الوسائط من أجل تسليم الملفّات المتعدّدة الوسائط والمجموعات عبر مزوّد الخدمة اللاسلكيّة. جهارك لا يتيح هذه المعلومات، وهذا ما يحدث نادراً في الهواتف المقفولة أو ذات الإعدادات المقيدة. - من اجل إرسال وسائط متعددة ورسائل إلى مجموعات أضغط على \"تم\" وأكمل الإعدادات المطلوبة. يمكن العثور على إعدادات رسائل الوسائط المتعددة الخاصة بمشغل شبكة الجوال الخاصة بك بالبحث عن \"أسم المشغل APN\". سوف تحتاج إلى القيام بهذه الخطوة مرة واحدة. + يتطلب سيجنال إعدادات الرسائل متعددة الوسائط (MMS) من أجل تسليم الملفّات متعدّدة الوسائط ورسائل المجموعات عبر شركة الاتصالات اللاسلكية المُستخدَمة. جهازك لا يوفِّر هذه المعلومات، وهذا ما يحدث أحيانًا في الهواتف المقفولة أو ذات الإعدادات المُقيَّدة. + من اجل إرسال وسائط مُتعدِّدة ورسائل إلى مجموعات، اضغط على \"تم\" وأكمِل الإعدادات المطلوبة. يمكن العثور على إعدادات رسائل الوسائط المُتعدِّدة الخاصة بمُشغِّل شبكة الجوال الخاص بك بالبحث عن \"اسم المُشغِّل APN\". سوف تحتاج إلى القيام بهذه الخطوة مرّة واحدة. مشكل في التوصيل - لم يتمكن %1$s من توصيل رسالة نصية أو ملصقة أو رد فعل أو وصل القراءة إليك. يُحتمَل أنها أُرسلَت إليك مباشرة أو أنها قد أُرسلَت في مجموعة. - لم يتمكن %1$s من توصيل رسالة أو ملصق أو رد فعل أو وصل القراءة إليك. + لم يتمكَّن %1$s من توصيل رسالة نصية أو مُلصَق أو تفاعُل أو تأكيد بالقراءة إليك. يُحتمَل أنه أُرسلَها إليك مباشرةً أو أنهُ أرسلها في مجموعة. + لم يتم توصيل رسالة أو مُلصَق أو تفاعُل أو تأكيد بالقراءة إليك من %1$s. الاسم الأول (مطلوب) - الاسم الأخير (اختياري) + اسم العائلة (اختياري) التالي - أسماء وصور مجموعة MMS المخصصة ستكون مرئية لك فقط. - سوف تظهر أوصاف المجموعات لأعضائها وكذا الأفراد الذين دُعوا إليها. + أسماء وصور مجموعة MMS المُخصَّصة ستكون مرئية لك فقط. + سوف تظهر أوصاف المجموعات لأعضائها وكذلك للأفراد الذين تمَّت دعوتهم إليها. - حول - اكتب عدة كلمات عن نفسك…. + معلومات عامة + اكتب عدة كلمات عن نفسك… %1$d/%2$d - ما عليك إلا التحدث بكل حرية - مُعمَّى - كن لطيفا - من عشاق القهوة - مُتفرّغ للدردشة + تحدَّث بحرية + مُشفَّر + كُن لطيفًا + من عشَّاق القهوة + متوفِّر للدردشة أنا في استراحة - أعمل حاليا على شيء جديد + أعمل حاليًا على شيءٍ جديد تعديل المجموعة @@ -3747,23 +3747,23 @@ اسمك - الاسم الشخصي - الاسم العائلي (اختياري) + الاسم الأول + اسم العائلة (اختياري) حفظ - فشل الحفظ بسبب مشاكل في الشبكة. يُرجى المحاولة مرة أخرى لاحقا. + فشل الحفظ بسبب مشاكل في الشبكة. يُرجى المحاولة مرّة أُخرى لاحقًا. - الملفّات المتعدّدة الوسائط التي تّم مشاركتها + الملفّات المُتعدِّدة الوسائط المُشارَكة للتحقّق من أمان التشفير من الطرف للطرف مع %1$s، قارن الأرقام أعلاه بأجهزته. يُمكنه أيضًا مسح الرمز على جهازه. - المس للمسح - تم التوافُق بنجاح - لقد فشل التحقق من رقم الأمان - قيد التحميل… + انقر للمسح + مطابقة ناجحة + فشل التحقُّق من رقم الأمان + جارٍ التحميل… علِّم كمُتحقَّق منه محو التحقق @@ -4465,9 +4465,9 @@ فتح الكاميرا لا دردشات حتى الآن.\nابدأ عن طريق محادثة صديق. - No chats to display + لا توجد أي دردشات للعرض - Folder settings + إعدادات المجلد @@ -5531,57 +5531,57 @@ لوحة المفاتيح أرسل بالضغط على إدخال - Chat folders + مجلدات الدردشة - Add a chat folder + إضافة مجلد دردشة - Organize your chats into folders and quickly switch between them on your chat list. + نظّم دردشاتك في مجلدات وقُم بالتبديل بينها بسرعة في قائمة الدردشة. - Folders + المجلدات - Create a folder + إنشاء مجلد - All chats + جميع الدردشات - Suggested folders + المجلدات المقترَحة - Unreads + الرسائل غير المقروءة - Unread messages from all chats + الرسائل غير المقروءة من جميع الدردشات - 1:1 chats + الدردشات الفردية - Only messages from direct chats + فقط الرسائل من الدردشات المباشرة المجموعات - Only message from group chats + فقط الرسائل من الدردشات الجماعية إضافة - %1$s folder added. + مجلد مُضَاف: %1$s. - Edit folder + تعديل المجلد - Delete folder + حذف المجلد - Add new folder + إضافة مجلد جديد - Mute all + كتم الجميع - Reorder folders + إعادة ترتيب المجلدات - اعتبارها رسائل مقروءة + اعتبار كل الرسائل مقروءة - %1$d chat types - %1$d chat type - %1$d chat types - %1$d chat types - %1$d chat types - %1$d chat types + %1$d نوع دردشة + %1$d نوع دردشة + %1$d نوعي دردشة + %1$d أنواع دردشة + %1$d نوع دردشة + %1$d نوع دردشة @@ -5594,67 +5594,67 @@ - %1$d chats excluded - %1$d chat excluded - %1$d chats excluded - %1$d chats excluded - %1$d chats excluded - %1$d chats excluded + %1$d دردشة مستبعدة + %1$d دردشة مستبعدة + %1$d دردشتين مستبعدتين + %1$d دردشات مستبعدة + %1$d دردشةً مستبعدة + %1$d دردشةٍ مستبعدة - Create a folder + إنشاء مجلد - Folder name (required) + اسم المجلد (مطلوب) - Included chats + الدردشات المُضمَّنة - Add chats + إضافة دردشات - Choose chats that you want to appear in this folder. + اختر الدردشات التي تريد أن تظهر في هذا المجلد. الاستثناءات - Exclude chats + استبعاد دردشات - Choose chats that you do not want to appear in this folder. + اختر الدردشات التي لا تريد أن تظهر في هذا المجلد. - Only show unread chats + إظهار الدردشات غير المقروءة فقط - When enabled, only chats with unread messages will be shown in this folder. + عند التفعيل، فقط الدردشات التي تتضمّن رسائل غير مقروءة هي التي ستظهر في هذا المجلد. تَضمين الدردشاتِ المَكتومة إنشاء - Create folder? + هل تريد إنشاء مجلد؟ - Do you want to create the chat folder \"%1$s\"? + هل تريد إنشاء مجلد الدردشة \"%1$s\"؟ - Create folder + إنشاء مجلد - Edit folder + تعديل المجلد حفظ - Save changes? + هل تريد حفظ التغييرات؟ - Do you want to save the changes you\'ve made to this chat folder? + هل تريد حفظ التغييرات التي قمتَ بها في مجلد الدردشة هذا؟ - Save changes + حفظ التغييرات تجاهل - Delete folder + حذف المجلد - Delete this chat folder? + أترغبُ بحذف مجلد الدردشة هذا؟ - Chat types + أنواع الدردشات - تمّ + تم الرسائل @@ -8089,15 +8089,15 @@ - Cancel download + إلغاء التنزيل - Downloading: %1$s of %2$s (%3$s%%) + يتم تنزيل: %1$s من %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + لا توجد مساحة كافية لتنزيل النسخة الاحتياطية الخاصة بك. للمواصلة، قُم بتحرير %1$s من المساحة. - Skip download + تخطي التنزيل - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "تعذَّر إتمام عملية النسخ الاحتياطي الأخيرة. تأكَّد من أن هاتفك مُتصل بشبكة الواي فاي وانقر على \"إنشاء نسخة احتياطية الآن\" للمحاولة من جديد." @@ -8209,13 +8209,13 @@ تم تغيير نوع النُسخ الاحتياطية وإلغاء الاشتراك - Subscription canceled + أُلغيَ الاشتراك انتهى التنزيل سيتم إنشاء نسخة احتياطية خلال الليل. - Subscription inactive + الاشتراك غير فعَّال خطة النسخ الاحتياطي @@ -8227,9 +8227,9 @@ التجديد في %1$s - Expires on %1$s + تنتهي الصلاحية في %1$s - Expired on %1$s + انتهت الصلاحية في %1$s انسخ سجل رسائلك كي لا تفقد بياناتك أبدًا عندما تستخدم هاتفًا جديدًا أو تعيد تثبيت سيجنال. @@ -8275,9 +8275,9 @@ يُرجى إدخال الرقم التعريفي الشخصي أو كلمة المرور أو نمط تعطيل كلمة المرور لجهازك. - Re-enable backups + إعادة تفعيل النسخ الاحتياطية - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + تمَّ إيقاف النسخ الاحتياطية وتمَّ حذف بياناتك من خدمة التخزين الآمنة لسيجنال. diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 7a3397b720..746212bb9b 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -5065,7 +5065,7 @@ Carpetas - Crear una carpeta + Nueva carpeta Todos los chats @@ -5093,7 +5093,7 @@ Añadir nueva carpeta - Silenciar todo + Silenciar todos Reordenar carpetas @@ -5116,7 +5116,7 @@ - Crear una carpeta + Nueva carpeta Nombre de la carpeta (obligatorio) diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 5cdf87e996..105a5ec498 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -369,7 +369,7 @@ Sõnumid - Chat types + Vestluste tüübid Sõnum %1$s @@ -4053,9 +4053,9 @@ Ava kaamera Vestlused puuduvad.\nTee algust ja saada sõbrale sõnum. - No chats to display + Kuvamiseks ei ole ühtegi vestlust - Folder settings + Kausta sätted @@ -5055,53 +5055,53 @@ Klaviatuur Saada Enter-klahviga - Chat folders + Vestluste kaustad - Add a chat folder + Lisa vestluste kaust - Organize your chats into folders and quickly switch between them on your chat list. + Sorteeri oma vestlused kaustadesse ja lülitu nende vahel kiiresti ja mugavalt vestluse loendi kaudu. - Folders + Kaustad - Create a folder + Loo kaust - All chats + Kõik vestlused - Suggested folders + Soovitatud kaustad - Unreads + Mitteloetud - Unread messages from all chats + Lugemata sõnumid kõigist vestlustest - 1:1 chats + Üks-ühele vestlused - Only messages from direct chats + Ainult sõnumid otsevestlustest Grupid - Only message from group chats + Ainult sõnumid grupivestlustest Lisa - %1$s folder added. + Lisatud kaust: „%1$s“. - Edit folder + Muuda kausta - Delete folder + Kustuta kaust - Add new folder + Lisa uus kaust - Mute all + Vaigista kõik - Reorder folders + Muuda kaustade järjestust Märgi kõik loetuks - %1$d chat type - %1$d chat types + %1$d vestluse tüüp + %1$d vestluse tüüpi @@ -5110,63 +5110,63 @@ - %1$d chat excluded - %1$d chats excluded + %1$d vestlus välja arvatud + %1$d vestlust välja arvatud - Create a folder + Loo kaust - Folder name (required) + Kausta nimi (kohustuslik) - Included chats + Kaustas olevad vestlused - Add chats + Lisa vestlusi - Choose chats that you want to appear in this folder. + Vali vestlused, mida tahaksid selles kaustas näha. Erandid - Exclude chats + Jäta vestlusi välja - Choose chats that you do not want to appear in this folder. + Vali vestlused, mida sa ei taha selles kaustas näha. - Only show unread chats + Näita ainult lugemata vestlusi - When enabled, only chats with unread messages will be shown in this folder. + Kui see on sisse lülitatud, kuvatakse selles kaustas ainult lugemata sõnumitega vestlusi. - Include muted chats + Kaasa vaigistatud vestlused Loo - Create folder? + Kas luua kaust? - Do you want to create the chat folder \"%1$s\"? + Kas soovid luua vestluste kausta „%1$s“? - Create folder + Loo kaust - Edit folder + Muuda kausta Salvesta - Save changes? + Kas salvestada muudatused? - Do you want to save the changes you\'ve made to this chat folder? + Kas soovid salvestada selle vestluste kaustaga tehtud muudatused? - Save changes + Salvesta muudatused Loobu - Delete folder + Kustuta kaust - Delete this chat folder? + Kas kustutada see vestluste kaust? - Chat types + Vestluste tüübid - Tehtud + Valmis Sõnumid @@ -7445,15 +7445,15 @@ - Cancel download + Tühista allalaadimine - Downloading: %1$s of %2$s (%3$s%%) + Allalaadimine: %1$s kogumahust %2$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + Sinu varukoopia allalaadimiseks ei ole piisavalt ruumi. Jätkamiseks vabasta %1$s ruumi. - Skip download + Jäta allalaadimine vahele - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Sinu viimast varukoopiat ei saanud lõpule viia. Veendu, et sinu telefon on Wi-Figa ühendatud ning toksa Varunda nüüd, et uuesti proovida." @@ -7561,13 +7561,13 @@ Varukoopia tüüpi muudeti ja tellimus tühistati - Subscription canceled + Tellimus tühistatud Allalaadimine on lõpetatud Varukoopia luuakse öösel. - Subscription inactive + Tellimus on mitteaktiivne Varundamisplaan @@ -7579,9 +7579,9 @@ Uueneb %1$s - Expires on %1$s + Aegub %1$s - Expired on %1$s + Aegus %1$s Varunda oma sõnumiajalugu, et mitte kaotada andmeid, kui telefoni välja vahetad ja Signali uuesti paigaldad. @@ -7627,9 +7627,9 @@ Sisesta oma seadme PIN-kood, salasõna või muster. - Re-enable backups + Luba varundamine uuesti - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Varundamine on välja lülitatud ja sinu andmed on Signali turvalisest salvestusteenusest kustutatud. diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 0d2939ecea..827d2657a4 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -369,7 +369,7 @@ Messages - Chat types + Types de conversations Message %1$s @@ -4053,9 +4053,9 @@ Ouvrir l’appareil photo Aucune conversation pour le moment.\nPour commencer, envoyez un message à un ami. - No chats to display + Aucune conversation à afficher - Folder settings + Paramètres du dossier @@ -5055,53 +5055,53 @@ Clavier Touche Entrée pour envoyer - Chat folders + Dossiers de conversations - Add a chat folder + Créer un dossier de conversations - Organize your chats into folders and quickly switch between them on your chat list. + Organisez vos conversations en dossiers et passez facilement d\'un dossier à l\'autre depuis votre liste de conversations. - Folders + Dossiers - Create a folder + Nouveau dossier - All chats + Toutes les conversations - Suggested folders + Dossiers suggérés - Unreads + Non lus - Unread messages from all chats + Messages non lus dans l\'ensemble des conversations - 1:1 chats + Conversations individuelles - Only messages from direct chats + Messages des conversations individuelles uniquement Groupes - Only message from group chats + Messages des conversations de groupe uniquement Créer - %1$s folder added. + Dossier %1$s ajouté. - Edit folder + Modifier le dossier - Delete folder + Supprimer le dossier - Add new folder + Nouveau dossier - Mute all + Tout mettre en sourdine - Reorder folders + Réorganiser les dossiers Tout marquer comme lu - %1$d chat type - %1$d chat types + %1$d type de conversations + %1$d types de conversations @@ -5110,61 +5110,61 @@ - %1$d chat excluded - %1$d chats excluded + %1$d conversation exclue + %1$d conversations exclues - Create a folder + Nouveau dossier - Folder name (required) + Nom du dossier (champ obligatoire) - Included chats + Conversations comprises dans le dossier - Add chats + Ajouter des conversations - Choose chats that you want to appear in this folder. + Choisissez les conversations à afficher dans ce dossier. Exceptions - Exclude chats + Exclure des conversations - Choose chats that you do not want to appear in this folder. + Choisissez les conversations à exclure de ce dossier. - Only show unread chats + N\'afficher que les conversations non lues - When enabled, only chats with unread messages will be shown in this folder. + Quand cette option est activée, seules les conversations qui contiennent des messages non lus sont affichées dans ce dossier. - Inclure les messages en sourdine + Inclure les conversations mises en sourdine Créer - Create folder? + Créer le dossier ? - Do you want to create the chat folder \"%1$s\"? + Voulez-vous créer le dossier de conversations \"%1$s\" ? - Create folder + Créer le dossier - Edit folder + Modifier le dossier Enregistrer - Save changes? + Enregistrer les modifications ? - Do you want to save the changes you\'ve made to this chat folder? + Voulez-vous enregistrer les modifications apportées à ce dossier de conversations ? - Save changes + Enregistrer les modifications Supprimer - Delete folder + Supprimer le dossier - Delete this chat folder? + Supprimer ce dossier de conversations ? - Chat types + Types de conversations Terminé @@ -7445,15 +7445,15 @@ - Cancel download + Annuler le téléchargement - Downloading: %1$s of %2$s (%3$s%%) + Téléchargement en cours : %1$s sur %2$s (%3$s %%) - Not enough space to download your Backup. To continue free up %1$s of space. + Espace insuffisant pour télécharger votre sauvegarde. Pour continuer, libérez %1$s d\'espace. - Skip download + Ignorer le téléchargement - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Impossible de terminer votre dernière sauvegarde. Vérifiez que votre téléphone est connecté au Wi-Fi, puis appuyez sur \"Sauvegarder maintenant\" pour réessayer." @@ -7561,13 +7561,13 @@ Type de sauvegarde modifié et abonnement résilié - Subscription canceled + Abonnement résilié Sauvegarde téléchargée Signal créera une sauvegarde cette nuit. - Subscription inactive + Abonnement inactif Forfait de sauvegarde @@ -7579,9 +7579,9 @@ Prochaine échéance le %1$s - Expires on %1$s + Date d\'expiration : %1$s - Expired on %1$s + Est arrivé à expiration le %1$s Sauvegardez l\'historique de vos messages pour conserver toutes vos données – même si vous changez de téléphone ou réinstallez Signal. @@ -7627,9 +7627,9 @@ Saisissez le code PIN, mot de passe ou schéma de déverrouillage de votre appareil. - Re-enable backups + Réactiver les sauvegardes - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Nous avons désactivé les sauvegardes et supprimé vos données du service de stockage sécurisé de Signal. diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index cc143cfcf1..2f1268ae35 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -375,7 +375,7 @@ Poruke - Chat types + Vrste razgovora Poruka %1$s @@ -4259,9 +4259,9 @@ Otvori kameru Još nema razgovora.\nZapočnite slanjem poruke prijatelju. - No chats to display + Nema razgovora za prikaz - Folder settings + Postavke mape @@ -5293,55 +5293,55 @@ Tipkovnica Pošaljite pritiskom na enter - Chat folders + Mape razgovora - Add a chat folder + Dodajte mapu razgovora - Organize your chats into folders and quickly switch between them on your chat list. + Organizirajte svoje razgovore u mape i brzo se prebacujte između njih na popisu razgovora. - Folders + Mape - Create a folder + Stvori novu mapu - All chats + Svi razgovori - Suggested folders + Prijedlozi mapa - Unreads + Nepročitane poruke - Unread messages from all chats + Nepročitane poruke iz svih razgovora - 1:1 chats + Privatni razgovori - Only messages from direct chats + Samo poruke iz privatnih razgovora Grupe - Only message from group chats + Samo poruke iz grupnih razgovora Dodaj - %1$s folder added. + Dodana je mapa „%1$s“. - Edit folder + Uredi mapu - Delete folder + Izbriši mapu - Add new folder + Dodaj novu mapu - Mute all + Utišaj sve - Reorder folders + Promjeni raspored mapa Označi sve kao pročitano - %1$d chat type - %1$d chat types - %1$d chat types - %1$d chat types + %1$d vrsta razgovora + %1$d vrste razgovora + %1$d vrsta razgovora + %1$d vrsta razgovora @@ -5352,63 +5352,63 @@ - %1$d chat excluded - %1$d chats excluded - %1$d chats excluded - %1$d chats excluded + isključeni razgovori: %1$d + isključeni razgovori: %1$d + isključeni razgovori: %1$d + isključeni razgovori: %1$d - Create a folder + Stvori novu mapu - Folder name (required) + Naziv mape (obavezno) - Included chats + Uključeni razgovori - Add chats + Dodaj razgovore - Choose chats that you want to appear in this folder. + Odaberite razgovore koje želite da se pojave u ovoj mapi. Iznimke - Exclude chats + Isključi razgovore - Choose chats that you do not want to appear in this folder. + Odaberite razgovore koje ne želite da se pojave u ovoj mapi. - Only show unread chats + Prikaži samo nepročitane razgovore - When enabled, only chats with unread messages will be shown in this folder. + Ako uključite ovu opciju, u ovoj mapi će se prikazivati samo razgovori s nepročitanim porukama. U broj uključi i utišane razgovore Stvori - Create folder? + Stvoriti novu mapu? - Do you want to create the chat folder \"%1$s\"? + Želite li stvoriti mapu razgovora pod nazivom „%1$s“? - Create folder + Stvori mapu - Edit folder + Uredi mapu Spremi - Save changes? + Spremiti promjene? - Do you want to save the changes you\'ve made to this chat folder? + Želite li spremiti promjene koje ste napravili u ovoj mapi? - Save changes + Spremi promjene Odbaci - Delete folder + Izbriši mapu - Delete this chat folder? + Izbrisati mapu razgovora? - Chat types + Vrste razgovora Gotovo @@ -7767,15 +7767,15 @@ - Cancel download + Otkaži preuzimanje - Downloading: %1$s of %2$s (%3$s%%) + Preuzimanje: %1$s od %2$s (%3$s %%) - Not enough space to download your Backup. To continue free up %1$s of space. + Nema dovoljno prostora za preuzimanje sigurnosne kopije. Oslobodite %1$s prostora za nastavak preuzimanja. - Skip download + Preskoči preuzimanje - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Posljednje sigurnosno kopiranje podataka nije uspjelo. Provjerite je li vaš uređaj spojen na Wi-Fi i pokušajte ponovno dodirom na \"Izradi sigurnosnu kopiju sada\"." @@ -7885,13 +7885,13 @@ Postavke sigurnosnog kopiranja su ažurirane i pretplata je otkazana - Subscription canceled + Pretplata je otkazana Preuzimanje je dovršeno Sigurnosna kopija bit će izrađena tijekom noćnih sati. - Subscription inactive + Pretplata nije aktivna Plan za sigurnosno kopiranje @@ -7903,9 +7903,9 @@ Obnavlja se %1$s - Expires on %1$s + Istječe %1$s - Expired on %1$s + Istekla %1$s Stvorite sigurnosnu kopiju svojih razgovora kako ih ne biste izgubili prilikom zamjene telefona ili ponovne instalacije Signala. @@ -7951,9 +7951,9 @@ Unesite PIN, lozinku ili uzorak svoga uređaja. - Re-enable backups + Ponovno uključi - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Sigurnosno kopiranje je isključeno te su vaši podaci izbrisani iz Signalovog zaštićenog sustava pohrane. diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 75b47c572c..0473a53f01 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -375,7 +375,7 @@ Správy - Chat types + Typy četu Správa %1$s @@ -4259,9 +4259,9 @@ Otvoriť fotoaparát Zatiaľ tu nie sú žiadne čety.\nZačnite poslaním správy priateľovi. - No chats to display + Žiadne čety na zobrazenie - Folder settings + Nastavenia priečinka @@ -5293,55 +5293,55 @@ Klávesnica Odoslať stlačením tlačidla „Enter“ - Chat folders + Priečinky četov - Add a chat folder + Pridať priečinok četov - Organize your chats into folders and quickly switch between them on your chat list. + Usporiadajte si čety do priečinkov a rýchlo medzi nimi prepínajte v zozname četov. - Folders + Priečinky - Create a folder + Vytvoriť priečinok - All chats + Všetky čety - Suggested folders + Odporúčané priečinky - Unreads + Neprečítané - Unread messages from all chats + Neprečítané správy zo všetkých četov - 1:1 chats + Čety 1:1 - Only messages from direct chats + Iba správy z priamych četov Skupiny - Only message from group chats + Iba správy zo skupinových četov Pridať - %1$s folder added. + Bol pridaný priečinok %1$s. - Edit folder + Upraviť priečinok - Delete folder + Vymazať priečinok - Add new folder + Pridať nový priečinok - Mute all + Stlmiť všetky - Reorder folders + Zmeniť poradie priečinkov Označiť všetko ako prečítané - %1$d chat type - %1$d chat types - %1$d chat types - %1$d chat types + %1$d typ četu + %1$d typy četu + %1$d typu četu + %1$d typov četu @@ -5352,63 +5352,63 @@ - %1$d chat excluded - %1$d chats excluded - %1$d chats excluded - %1$d chats excluded + %1$d vylúčený čet + %1$d vylúčené čety + %1$d vylúčeného četu + %1$d vylúčených četov - Create a folder + Vytvoriť priečinok - Folder name (required) + Názov priečinka (povinné) - Included chats + Zahrnuté čety - Add chats + Pridať čety - Choose chats that you want to appear in this folder. + Vyberte čety, ktoré sa majú zobrazovať v tomto priečinku. Výnimky - Exclude chats + Vylúčiť čety - Choose chats that you do not want to appear in this folder. + Vyberte čety, ktoré nechcete zobrazovať v tomto priečinku. - Only show unread chats + Zobraziť iba neprečítané čety - When enabled, only chats with unread messages will be shown in this folder. + Ak je táto možnosť povolená, v tomto priečinku sa zobrazia iba čety s neprečítanými správami. Zahrnúť stlmené čety Vytvoriť - Create folder? + Vytvoriť priečinok? - Do you want to create the chat folder \"%1$s\"? + Chcete vytvoriť priečinok četov „%1$s“? - Create folder + Vytvoriť priečinok - Edit folder + Upraviť priečinok Uložiť - Save changes? + Uložiť zmeny? - Do you want to save the changes you\'ve made to this chat folder? + Chcete uložiť zmeny, ktoré ste vykonali v tomto priečinku četov? - Save changes + Uložiť zmeny Zahodiť - Delete folder + Vymazať priečinok - Delete this chat folder? + Vymazať tento priečinok četov? - Chat types + Typy četu Hotovo @@ -7767,15 +7767,15 @@ - Cancel download + Zrušiť sťahovanie - Downloading: %1$s of %2$s (%3$s%%) + Sťahuje sa: %1$s z %2$s (%3$s %%) - Not enough space to download your Backup. To continue free up %1$s of space. + Nedostatok miesta na stiahnutie zálohy. Ak chcete pokračovať, uvoľnite %1$s miesta. - Skip download + Preskočiť sťahovanie - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "Vašu poslednú zálohu sa nepodarilo dokončiť. Uistite sa, že váš telefón je pripojený k sieti Wi-Fi a skúste to znova ťuknutím na možnosť Zálohovať teraz." @@ -7885,13 +7885,13 @@ Typ zálohy sa zmenil a predplatné bolo zrušené - Subscription canceled + Predplatné bolo zrušené Sťahovanie dokončené Zálohovanie prebehne počas noci. - Subscription inactive + Predplatné je neaktívne Plán zálohovania @@ -7903,9 +7903,9 @@ Obnoví sa %1$s - Expires on %1$s + Platnosť vyprší %1$s - Expired on %1$s + Platnosť vypršala %1$s Zálohujte si históriu správ, aby ste pri výmene telefónu alebo opätovnom nainštalovaní Signalu už nikdy neprišli o dáta. @@ -7951,9 +7951,9 @@ Zadajte PIN kód, heslo alebo vzor svojho zariadenia. - Re-enable backups + Znova povoliť zálohovanie - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + Zálohovanie bolo vypnuté a vaše údaje boli vymazané zo zabezpečeného úložiska Signal. diff --git a/app/src/main/res/values-sw/strings.xml b/app/src/main/res/values-sw/strings.xml index 44a1fe300b..dadc97bbd5 100644 --- a/app/src/main/res/values-sw/strings.xml +++ b/app/src/main/res/values-sw/strings.xml @@ -5057,7 +5057,7 @@ Folda la magumzo - Add a chat folder + Weka folda la gumzo @@ -5073,11 +5073,11 @@ Hazijasomwa - Unread messages from all chats + Jumbe ambazo hazijasomwa kutoka kwenye magumzo yote Magumzo ya 1:1 - Only messages from direct chats + Jumbe kutoka kwenye magumzo ya moja kwa moja tu Makundi @@ -5091,7 +5091,7 @@ Futa folda - Add new folder + Weka folda jipya Nyamazisha yote @@ -5100,8 +5100,8 @@ Alamisha zote zilimesomwa - %1$d chat type - %1$d chat types + %1$d aina ya gumzo + %1$d aina ya magumzo @@ -5110,8 +5110,8 @@ - %1$d chat excluded - %1$d chats excluded + %1$d gumzo halijajumuishwa + %1$d magumzo hayajajumuishwa @@ -5122,7 +5122,7 @@ Magumzo yaliyojumuishwa - Add chats + Weka magumzo Chagua magumzo unayotaka yaonekane kwenye folda hili. @@ -5146,7 +5146,7 @@ Tengeneza folda - Edit folder + Badili folda Hifadhi @@ -5160,7 +5160,7 @@ Futa folda - Delete this chat folder? + Ungependa kufuta folda hili la gumzo? diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 0461fa93fd..083dc5c3b3 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -7267,7 +7267,7 @@ Пропущено під час увімкненого профілю сповіщень - Приєднатись + Приєднатися Повернутись @@ -7390,7 +7390,7 @@ Створити посилання на виклик - Поділіться посиланням на виклик у Signal + Виклик у Signal Ось посилання, за яким можна приєднатися до виклику в Signal: %1$s @@ -7410,7 +7410,7 @@ Виклик у Signal - Приєднатись + Приєднатися Додати назву виклику @@ -7418,7 +7418,7 @@ Адміністратор затверджує учасників - Поділитися посиланням через Signal + Надіслати посилання в Signal Копіювати посилання diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index ae254c7b30..2a14f41161 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -366,7 +366,7 @@ 訊息 - Chat types + 聊天類型 傳送訊息給 %1$s @@ -3950,9 +3950,9 @@ 開啟相機 未有任何聊天。\n找個好友傳訊以開始使用。 - No chats to display + 無聊天可顯示 - Folder settings + 資料夾設定 @@ -4936,52 +4936,52 @@ 鍵盤 按輸入發送 - Chat folders + 聊天資料夾 - Add a chat folder + 新增聊天資料夾 - Organize your chats into folders and quickly switch between them on your chat list. + 將你的聊天整理到資料夾中,然後在聊天清單上快速切換。 - Folders + 資料夾 - Create a folder + 建立資料夾 - All chats + 所有聊天 - Suggested folders + 建議的資料夾 - Unreads + 未讀 - Unread messages from all chats + 所有聊天中的未讀訊息 - 1:1 chats + 1 對 1 聊天 - Only messages from direct chats + 只有直接聊天的訊息 群組 - Only message from group chats + 只有群組聊天的訊息 新增 - %1$s folder added. + 新增了 %1$s 資料夾。 - Edit folder + 編輯資料夾 - Delete folder + 刪除資料夾 - Add new folder + 新增新資料夾 - Mute all + 全部靜音 - Reorder folders + 重新排列資料夾 全部標記為已讀 - %1$d chat types + %1$d 聊天類型 @@ -4989,60 +4989,60 @@ - %1$d chats excluded + 排除 %1$d 聊天 - Create a folder + 建立資料夾 - Folder name (required) + 資料夾名稱(必填) - Included chats + 包含的聊天 - Add chats + 新增聊天 - Choose chats that you want to appear in this folder. + 選擇要顯示在此資料夾中的聊天。 例外 - Exclude chats + 排除聊天 - Choose chats that you do not want to appear in this folder. + 選擇你不想顯示在此資料夾中的聊天。 - Only show unread chats + 僅顯示未讀的聊天 - When enabled, only chats with unread messages will be shown in this folder. + 啟用後,此資料夾只會顯示含有未讀訊息的聊天。 包括靜音聊天 建立 - Create folder? + 要建立資料夾嗎? - Do you want to create the chat folder \"%1$s\"? + 你要建立聊天資料夾「%1$s」嗎? - Create folder + 建立資料夾 - Edit folder + 編輯資料夾 儲存 - Save changes? + 要儲存變更嗎? - Do you want to save the changes you\'ve made to this chat folder? + 你要儲存對此聊天資料夾所作的變更嗎? - Save changes + 儲存變更 捨棄 - Delete folder + 刪除資料夾 - Delete this chat folder? + 要刪除此聊天資料夾嗎? - Chat types + 聊天類型 完成 @@ -7284,15 +7284,15 @@ - Cancel download + 取消下載 - Downloading: %1$s of %2$s (%3$s%%) + 正在下載 %2$s 中的 %1$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + 空間不足,無法下載你的備份。如要繼續,請釋放 %1$s 空間。 - Skip download + 跳過下載 - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "無法完成你上次的備份。確保你的手機已連接到 Wi-Fi,然後點按「立即備份」以再試一次。" @@ -7399,13 +7399,13 @@ 備份類型已變更且定期贊助已取消 - Subscription canceled + 備份定期贊助已取消 下載完成 備份將會通宵建立。 - Subscription inactive + 備份定期贊助未啟用 備份計畫 @@ -7417,9 +7417,9 @@ %1$s 續期 - Expires on %1$s + 到期日為 %1$s - Expired on %1$s + 到期日為 %1$s 備份你的訊息紀錄,讓你在使用新手機或重新安裝 Signal 時,絕不會遺失資料。 @@ -7465,9 +7465,9 @@ 請輸入你的裝置 PIN 碼、密碼或圖案。 - Re-enable backups + 重新啟用備份 - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + 備份已關閉,而且你的資料已從 Signal 的安全儲存服務中刪除。 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 979eab5a1a..ed2852b386 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -366,7 +366,7 @@ 訊息 - Chat types + 聊天類型 傳送訊息給 %1$s @@ -3950,9 +3950,9 @@ 開啟相機 尚無聊天。\n透過與朋友聊天開始。 - No chats to display + 無聊天可顯示 - Folder settings + 資料夾設定 @@ -4936,52 +4936,52 @@ 鍵盤 按輸入發送 - Chat folders + 聊天資料夾 - Add a chat folder + 新增聊天資料夾 - Organize your chats into folders and quickly switch between them on your chat list. + 將你的聊天整理到資料夾中,然後在聊天清單上快速切換。 - Folders + 資料夾 - Create a folder + 建立資料夾 - All chats + 所有聊天 - Suggested folders + 建議的資料夾 - Unreads + 未讀 - Unread messages from all chats + 所有聊天中的未讀訊息 - 1:1 chats + 1:1 聊天 - Only messages from direct chats + 只有直接聊天的訊息 群組 - Only message from group chats + 只有群組聊天的訊息 新增 - %1$s folder added. + 新增了 %1$s 資料夾。 - Edit folder + 編輯資料夾 - Delete folder + 刪除資料夾 - Add new folder + 新增新資料夾 - Mute all + 全部靜音 - Reorder folders + 重新排列資料夾 全部標示為已讀 - %1$d chat types + %1$d 聊天類型 @@ -4989,60 +4989,60 @@ - %1$d chats excluded + 排除 %1$d 聊天 - Create a folder + 建立資料夾 - Folder name (required) + 資料夾名稱(必填) - Included chats + 包含的聊天 - Add chats + 新增聊天 - Choose chats that you want to appear in this folder. + 選擇要顯示在此資料夾中的聊天。 例外 - Exclude chats + 排除聊天 - Choose chats that you do not want to appear in this folder. + 選擇你不想顯示在此資料夾中的聊天。 - Only show unread chats + 僅顯示未讀的聊天 - When enabled, only chats with unread messages will be shown in this folder. + 啟用後,此資料夾只會顯示含有未讀訊息的聊天。 包括靜音聊天 建立 - Create folder? + 要建立資料夾嗎? - Do you want to create the chat folder \"%1$s\"? + 你要建立聊天資料夾「%1$s」嗎? - Create folder + 建立資料夾 - Edit folder + 編輯資料夾 儲存 - Save changes? + 要儲存變更嗎? - Do you want to save the changes you\'ve made to this chat folder? + 你要儲存對此聊天資料夾所作的變更嗎? - Save changes + 儲存變更 放棄 - Delete folder + 刪除資料夾 - Delete this chat folder? + 要刪除此聊天資料夾嗎? - Chat types + 聊天類型 完成 @@ -7284,15 +7284,15 @@ - Cancel download + 取消下載 - Downloading: %1$s of %2$s (%3$s%%) + 正在下載 %2$s 中的 %1$s (%3$s%%) - Not enough space to download your Backup. To continue free up %1$s of space. + 空間不足,無法下載你的備份。要繼續,請釋放 %1$s 空間。 - Skip download + 跳過下載 - "Your last backup couldn\'t be completed. Make sure your phone is connected to Wi-F and tap Back up now to try again." + "無法完成你上次的備份。確保你的手機已連接到 Wi-Fi,然後點按「立即備份」以再試一次。" @@ -7399,13 +7399,13 @@ 備份類型已變更且定期贊助已取消 - Subscription canceled + 備份定期贊助已取消 下載完成 備份將會通宵建立。 - Subscription inactive + 備份定期贊助未啟用 備份計畫 @@ -7417,9 +7417,9 @@ 續約 %1$s - Expires on %1$s + 到期日為 %1$s - Expired on %1$s + 到期日為 %1$s 備份你的訊息紀錄,讓你在使用新手機或重新安裝 Signal 時,絕不會遺失資料。 @@ -7465,9 +7465,9 @@ 請輸入你的裝置 PIN 碼、密碼或圖案。 - Re-enable backups + 重新啟用備份 - Backups have been turned off and your data has been deleted from Signal\'s secure storage service. + 備份已關閉,而且你的資料已從 Signal 的安全儲存服務中刪除。 diff --git a/app/static-ips.gradle.kts b/app/static-ips.gradle.kts index a9f2dd41b1..89a1b5be6e 100644 --- a/app/static-ips.gradle.kts +++ b/app/static-ips.gradle.kts @@ -1,5 +1,5 @@ rootProject.extra["service_ips"] = """new String[]{"13.248.212.111","76.223.92.165"}""" -rootProject.extra["storage_ips"] = """new String[]{"172.253.63.121"}""" +rootProject.extra["storage_ips"] = """new String[]{"172.253.122.121"}""" rootProject.extra["cdn_ips"] = """new String[]{"18.161.21.122","18.161.21.4","18.161.21.66","18.161.21.70"}""" rootProject.extra["cdn2_ips"] = """new String[]{"104.18.37.148","172.64.150.108"}""" rootProject.extra["cdn3_ips"] = """new String[]{"104.18.37.148","172.64.150.108"}""" From 94d6bfd9ada7ee8b50bb6da51734244e55122081 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 23 Oct 2024 15:36:29 -0400 Subject: [PATCH 48/51] Bump version to 7.21.5 --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index b9ba4bb73d..c4f27935aa 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -21,8 +21,8 @@ plugins { apply(from = "static-ips.gradle.kts") -val canonicalVersionCode = 1475 -val canonicalVersionName = "7.21.4" +val canonicalVersionCode = 1476 +val canonicalVersionName = "7.21.5" val currentHotfixVersion = 0 val maxHotfixVersions = 100 From 0b427dc2f1a721e68b474619d0f6696aeb4a840e Mon Sep 17 00:00:00 2001 From: Oscar Mira Date: Wed, 23 Oct 2024 22:58:50 +0200 Subject: [PATCH 49/51] Fix display of Play Services error dialog --- .../settings/app/AppSettingsActivity.kt | 13 +++-- .../NotificationsSettingsFragment.kt | 47 ++++++++++--------- .../NotificationsSettingsState.kt | 1 + .../NotificationsSettingsViewModel.kt | 8 ++-- .../securesms/jobs/FcmRefreshJob.java | 6 +-- .../securesms/util/PlayServicesUtil.java | 20 ++++---- .../app_settings_with_change_number.xml | 6 +-- app/src/main/res/values/strings2.xml | 2 + 8 files changed, 61 insertions(+), 42 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt index 7a7c6475c2..5459f3d515 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt @@ -12,6 +12,7 @@ import org.thoughtcrime.securesms.MainActivity import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.settings.DSLSettingsActivity import org.thoughtcrime.securesms.components.settings.app.chats.folders.CreateFoldersFragmentArgs +import org.thoughtcrime.securesms.components.settings.app.notifications.NotificationsSettingsFragmentArgs import org.thoughtcrime.securesms.components.settings.app.notifications.profiles.EditNotificationProfileScheduleFragmentArgs import org.thoughtcrime.securesms.components.settings.app.subscription.InAppPaymentComponent import org.thoughtcrime.securesms.components.settings.app.subscription.StripeRepository @@ -55,7 +56,7 @@ class AppSettingsActivity : DSLSettingsActivity(), InAppPaymentComponent { .setStartCategoryIndex(intent.getIntExtra(HelpFragment.START_CATEGORY_INDEX, 0)) StartLocation.PROXY -> AppSettingsFragmentDirections.actionDirectToNetworkPreferenceFragment() StartLocation.NOTIFICATIONS -> AppSettingsFragmentDirections.actionDirectToNotificationsSettingsFragment() - StartLocation.PUSH_NOTIFICATIONS -> AppSettingsFragmentDirections.actionDirectToNotificationsSettingsFragment().setScrollToPushServices(true) + .setPlayServicesErrorCode(NotificationsSettingsFragmentArgs.fromBundle(intent.getBundleExtra(START_ARGUMENTS)!!).playServicesErrorCode) StartLocation.CHANGE_NUMBER -> AppSettingsFragmentDirections.actionDirectToChangeNumberFragment() StartLocation.SUBSCRIPTIONS -> AppSettingsFragmentDirections.actionDirectToManageDonations().setDirectToCheckoutType(InAppPaymentType.RECURRING_DONATION) StartLocation.MANAGE_SUBSCRIPTIONS -> AppSettingsFragmentDirections.actionDirectToManageDonations() @@ -161,7 +162,14 @@ class AppSettingsActivity : DSLSettingsActivity(), InAppPaymentComponent { fun notifications(context: Context): Intent = getIntentForStartLocation(context, StartLocation.NOTIFICATIONS) @JvmStatic - fun pushNotifications(context: Context): Intent = getIntentForStartLocation(context, StartLocation.PUSH_NOTIFICATIONS) + fun playServicesProblem(context: Context, errorCode: Int): Intent { + val arguments = NotificationsSettingsFragmentArgs.Builder() + .setPlayServicesErrorCode(errorCode) + .build() + .toBundle() + + return getIntentForStartLocation(context, StartLocation.NOTIFICATIONS).putExtra(START_ARGUMENTS, arguments) + } @JvmStatic fun changeNumber(context: Context): Intent = getIntentForStartLocation(context, StartLocation.CHANGE_NUMBER) @@ -228,7 +236,6 @@ class AppSettingsActivity : DSLSettingsActivity(), InAppPaymentComponent { HELP(2), PROXY(3), NOTIFICATIONS(4), - PUSH_NOTIFICATIONS(1004), CHANGE_NUMBER(5), SUBSCRIPTIONS(6), // BOOST(7), diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsFragment.kt index 0dc37d962c..e3b80d8b27 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsFragment.kt @@ -20,6 +20,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.LinearLayoutManager +import com.google.android.gms.common.ConnectionResult import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe @@ -87,6 +88,8 @@ class NotificationsSettingsFragment : DSLSettingsFragment(R.string.preferences__ private val layoutManager: LinearLayoutManager? get() = recyclerView?.layoutManager as? LinearLayoutManager + private var hasShownPlayServicesError = false + override fun onResume() { super.onResume() viewModel.refresh() @@ -117,11 +120,17 @@ class NotificationsSettingsFragment : DSLSettingsFragment(R.string.preferences__ viewModel.state.observe(viewLifecycleOwner) { adapter.submitList(getConfiguration(it).toMappingModelList()) - if (args.scrollToPushServices) { + + val errorCode = viewModel.state.value?.playServicesErrorCode + if (errorCode != null && errorCode != ConnectionResult.SUCCESS) { layoutManager?.scrollToPosition(adapter.itemCount - 1) + showPlayServicesErrorDialog(errorCode) + viewModel.setPlayServicesErrorCode(null) } } + viewModel.setPlayServicesErrorCode(args.playServicesErrorCode) + EventBus.getDefault().registerForLifecycle(subscriber = this, lifecycleOwner = viewLifecycleOwner) } @@ -364,35 +373,31 @@ class NotificationsSettingsFragment : DSLSettingsFragment(R.string.preferences__ isEnabled = !state.isLinkedDevice, // MOLLY: TODO iconEnd = if (showAlertIcon) DSLSettingsIcon.from(R.drawable.ic_alert, R.color.signal_alert_primary) else null, onSelected = { - onNotificationMethodChanged(notificationMethodValues[it], state.preferredNotificationMethod) + viewModel.setPreferredNotificationMethod(notificationMethodValues[it]) } ) } } - private fun onNotificationMethodChanged( - method: NotificationDeliveryMethod, - previousMethod: NotificationDeliveryMethod - ) { - when (method) { - NotificationDeliveryMethod.FCM -> { - viewModel.setPreferredNotificationMethod(method) - val msgId = when (viewModel.fcmState) { - PlayServicesUtil.PlayServicesStatus.SUCCESS -> null - PlayServicesUtil.PlayServicesStatus.DISABLED -> R.string.RegistrationActivity_missing_google_play_services - PlayServicesUtil.PlayServicesStatus.MISSING -> R.string.RegistrationActivity_missing_google_play_services - PlayServicesUtil.PlayServicesStatus.NEEDS_UPDATE -> R.string.RegistrationActivity_google_play_services_is_updating_or_unavailable - PlayServicesUtil.PlayServicesStatus.TRANSIENT_ERROR -> R.string.RegistrationActivity_play_services_error - } - if (msgId != null) { - Toast.makeText(requireContext(), getString(msgId), Toast.LENGTH_LONG).show() + private fun showPlayServicesErrorDialog(errorCode: Int) { + val causeId = when (errorCode) { + ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED -> { + if (PlayServicesUtil.isGooglePlayPackageEnabled(context)) { + R.string.RegistrationActivity_google_play_services_is_updating_or_unavailable + } else { + R.string.NotificationsSettingsFragment__please_check_if_google_play_services_is_installed_and_enabled } } - NotificationDeliveryMethod.WEBSOCKET -> { - viewModel.setPreferredNotificationMethod(method) - } + else -> R.string.NotificationsSettingsFragment__please_check_if_google_play_services_is_installed_and_enabled } + + MaterialAlertDialogBuilder(requireContext()) + .setNegativeButton(android.R.string.ok, null) + .setMessage( + getString(R.string.NotificationsSettingsFragment__an_error_occurred_while_registering_for_push_notifications_s, getString(causeId)) + ) + .show() } private fun getRingtoneSummary(uri: Uri): String { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsState.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsState.kt index 24f958ce9f..d6dce0440d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsState.kt @@ -11,6 +11,7 @@ data class NotificationsSettingsState( val notifyWhenContactJoinsSignal: Boolean, val isLinkedDevice: Boolean, val preferredNotificationMethod: NotificationDeliveryMethod, + val playServicesErrorCode: Int?, val canReceiveFcm: Boolean ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsViewModel.kt index 8dd5807299..f3f7bf5850 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsViewModel.kt @@ -15,7 +15,6 @@ import org.thoughtcrime.securesms.notifications.DeviceSpecificNotificationConfig import org.thoughtcrime.securesms.notifications.NotificationChannels import org.thoughtcrime.securesms.notifications.SlowNotificationHeuristics import org.thoughtcrime.securesms.preferences.widgets.NotificationPrivacyPreference -import org.thoughtcrime.securesms.util.PlayServicesUtil import org.thoughtcrime.securesms.util.TextSecurePreferences import org.thoughtcrime.securesms.util.livedata.Store @@ -122,7 +121,9 @@ class NotificationsSettingsViewModel(private val sharedPreferences: SharedPrefer store.update { it.copy(preferredNotificationMethod = method) } } - val fcmState get() = PlayServicesUtil.getPlayServicesStatus(AppDependencies.application) + fun setPlayServicesErrorCode(errorCode: Int?) { + store.update { it.copy(playServicesErrorCode = errorCode) } + } /** * @param currentState If provided and [calculateSlowNotifications] = false, then we will copy the slow notification state from it @@ -161,7 +162,8 @@ class NotificationsSettingsViewModel(private val sharedPreferences: SharedPrefer notifyWhenContactJoinsSignal = SignalStore.settings.isNotifyWhenContactJoinsSignal, isLinkedDevice = SignalStore.account.isLinkedDevice, preferredNotificationMethod = SignalStore.settings.preferredNotificationMethod, - canReceiveFcm = SignalStore.account.canReceiveFcm, + playServicesErrorCode = currentState?.playServicesErrorCode, + canReceiveFcm = SignalStore.account.canReceiveFcm ) private fun canEnableNotifications(): Boolean { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/FcmRefreshJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/FcmRefreshJob.java index 3d4d85cd72..ee2627e50e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/FcmRefreshJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/FcmRefreshJob.java @@ -99,7 +99,7 @@ public void onRun() throws Exception { int result = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context); if (result != ConnectionResult.SUCCESS) { - notifyFcmFailure(); + notifyFcmFailure(result); } else { Optional token = FcmUtil.getToken(context); @@ -137,8 +137,8 @@ public boolean onShouldRetry(@NonNull Exception throwable) { return true; } - private void notifyFcmFailure() { - Intent intent = AppSettingsActivity.pushNotifications(context).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); + private void notifyFcmFailure(int errorCode) { + Intent intent = AppSettingsActivity.playServicesProblem(context, errorCode).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(context, 1122, intent, PendingIntentFlags.cancelCurrent()); NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NotificationChannels.getInstance().FAILURES); diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/PlayServicesUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/PlayServicesUtil.java index 97de9e0a15..149194d1be 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/PlayServicesUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/PlayServicesUtil.java @@ -40,16 +40,9 @@ public enum PlayServicesStatus { case ConnectionResult.SUCCESS: return PlayServicesStatus.SUCCESS; case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED: - try { - ApplicationInfo applicationInfo = context.getPackageManager().getApplicationInfo("com.google.android.gms", 0); - - if (applicationInfo != null && !applicationInfo.enabled) { - return PlayServicesStatus.MISSING; - } - } catch (PackageManager.NameNotFoundException e) { - Log.w(TAG, e); + if (!isGooglePlayPackageEnabled(context)) { + return PlayServicesStatus.MISSING; } - return PlayServicesStatus.NEEDS_UPDATE; case ConnectionResult.SERVICE_DISABLED: return PlayServicesStatus.DISABLED; @@ -63,4 +56,13 @@ public enum PlayServicesStatus { } } + public static boolean isGooglePlayPackageEnabled(Context context) { + try { + ApplicationInfo applicationInfo = context.getPackageManager().getApplicationInfo("com.google.android.gms", 0); + return applicationInfo.enabled; + } catch (PackageManager.NameNotFoundException e) { + Log.w(TAG, e); + return false; + } + } } diff --git a/app/src/main/res/navigation/app_settings_with_change_number.xml b/app/src/main/res/navigation/app_settings_with_change_number.xml index c704632817..6ea7f1b9dc 100644 --- a/app/src/main/res/navigation/app_settings_with_change_number.xml +++ b/app/src/main/res/navigation/app_settings_with_change_number.xml @@ -451,9 +451,9 @@ app:popExitAnim="@anim/fragment_close_exit" /> + android:name="play_services_error_code" + android:defaultValue="0" + app:argType="integer" /> diff --git a/app/src/main/res/values/strings2.xml b/app/src/main/res/values/strings2.xml index 760f700110..051c299b35 100644 --- a/app/src/main/res/values/strings2.xml +++ b/app/src/main/res/values/strings2.xml @@ -125,6 +125,8 @@ For Android devices: Visit %s to install Molly. "Unable to register with Play Services Switch to an alternative push service in Settings > Notifications or fix the issue with Play Services. + An error occurred while registering for push notifications. %s + Please check if Google Play Services is installed and enabled, or switch to an alternative push service. Push notifications Select your preferred service for push notifications. If unavailable, the app will automatically use WebSocket to ensure notifications are delivered. Delivery service From 8455145f0301b007848b11d476d6af82a0e27065 Mon Sep 17 00:00:00 2001 From: Oscar Mira Date: Wed, 23 Oct 2024 23:33:00 +0200 Subject: [PATCH 50/51] Fix crash by conditionally unregistering observer in VoiceNotePlaybackService --- .../securesms/components/voice/VoiceNotePlaybackService.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNotePlaybackService.java b/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNotePlaybackService.java index f5f280bb94..768aca7ca5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNotePlaybackService.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNotePlaybackService.java @@ -107,8 +107,6 @@ public void onTaskRemoved(Intent rootIntent) { @Override public void onDestroy() { - AppDependencies.getDatabaseObserver().unregisterObserver(attachmentDeletionObserver); - final VoiceNotePlayer voiceNotePlayer = player; if (voiceNotePlayer != null) { voiceNotePlayer.release(); @@ -116,6 +114,7 @@ public void onDestroy() { MediaSession session = mediaSession; if (session != null) { + AppDependencies.getDatabaseObserver().unregisterObserver(attachmentDeletionObserver); session.release(); mediaSession = null; } From a2e744b9f0c559525fac3a3398b6525b7b6b347f Mon Sep 17 00:00:00 2001 From: Oscar Mira Date: Thu, 24 Oct 2024 00:37:47 +0200 Subject: [PATCH 51/51] Refresh notification settings state correctly --- .../app/notifications/NotificationsSettingsViewModel.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsViewModel.kt index f3f7bf5850..8cb9b7f758 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsViewModel.kt @@ -116,9 +116,7 @@ class NotificationsSettingsViewModel(private val sharedPreferences: SharedPrefer TextSecurePreferences.setPromptedOptimizeDoze(AppDependencies.application, false) ApplicationContext.getInstance().updatePushNotificationServices() AppDependencies.resetNetwork(true) - // Avoid calling refresh() here to prevent updating canReceiveFcm - // while the FCM token is still being refreshed. - store.update { it.copy(preferredNotificationMethod = method) } + refresh() } fun setPlayServicesErrorCode(errorCode: Int?) {