Merge "Reduce memory footprint of LogEvent" into rvc-dev
diff --git a/Android.bp b/Android.bp
index 8d3b4af..935b2bb 100644
--- a/Android.bp
+++ b/Android.bp
@@ -722,7 +722,6 @@
         "core/java/com/android/internal/util/IndentingPrintWriter.java",
         "core/java/com/android/internal/util/IState.java",
         "core/java/com/android/internal/util/MessageUtils.java",
-        "core/java/com/android/internal/util/Preconditions.java",
         "core/java/com/android/internal/util/State.java",
         "core/java/com/android/internal/util/StateMachine.java",
         "core/java/com/android/internal/util/TrafficStatsConstants.java",
diff --git a/ApiDocs.bp b/ApiDocs.bp
index 04ddc50..fbc5c9d 100644
--- a/ApiDocs.bp
+++ b/ApiDocs.bp
@@ -65,8 +65,9 @@
         "test-base/src/**/*.java",
         ":opt-telephony-srcs",
         ":opt-net-voip-srcs",
-        ":core-current-stubs-source",
-        ":core_public_api_files",
+        ":art-module-public-api-stubs-source",
+        ":conscrypt.module.public.api.stubs.source",
+        ":android_icu4j_public_api_files",
         "test-mock/src/**/*.java",
         "test-runner/src/**/*.java",
     ],
diff --git a/StubLibraries.bp b/StubLibraries.bp
index bfc1367..8fd8c90 100644
--- a/StubLibraries.bp
+++ b/StubLibraries.bp
@@ -47,8 +47,9 @@
         "core/java/**/*.logtags",
         ":opt-telephony-srcs",
         ":opt-net-voip-srcs",
-        ":core-current-stubs-source",
-        ":core_public_api_files",
+        ":art-module-public-api-stubs-source",
+        ":conscrypt.module.public.api.stubs.source",
+        ":android_icu4j_public_api_files",
     ],
     // TODO(b/147699819): remove below aidl includes.
     aidl: {
diff --git a/apex/media/framework/java/android/media/MediaParser.java b/apex/media/framework/java/android/media/MediaParser.java
index 2746cba..d22e998 100644
--- a/apex/media/framework/java/android/media/MediaParser.java
+++ b/apex/media/framework/java/android/media/MediaParser.java
@@ -120,7 +120,7 @@
  *     @Override
  *     public void onTrackDataFound(int i, @NonNull TrackData trackData) {
  *       MediaFormat mediaFormat = trackData.mediaFormat;
- *       if (videoTrackIndex == -1 &&
+ *       if (videoTrackIndex == -1 &&
  *           mediaFormat
  *               .getString(MediaFormat.KEY_MIME, /* defaultValue= */ "")
  *               .startsWith("video/")) {
@@ -178,7 +178,7 @@
  *
  *    private void ensureSpaceInBuffer(int numberOfBytesToRead) {
  *      int requiredLength = bytesWrittenCount + numberOfBytesToRead;
- *      if (requiredLength > sampleDataBuffer.length) {
+ *      if (requiredLength > sampleDataBuffer.length) {
  *        sampleDataBuffer = Arrays.copyOf(sampleDataBuffer, requiredLength);
  *      }
  *    }
diff --git a/apex/sdkextensions/framework/java/android/os/ext/SdkExtensions.java b/apex/sdkextensions/framework/java/android/os/ext/SdkExtensions.java
index c268ff4..6c25f28 100644
--- a/apex/sdkextensions/framework/java/android/os/ext/SdkExtensions.java
+++ b/apex/sdkextensions/framework/java/android/os/ext/SdkExtensions.java
@@ -38,6 +38,9 @@
 
     private static final int R_EXTENSION_INT;
     static {
+        // Note: when adding more extension versions, the logic that records current
+        // extension versions when saving a rollback must also be updated.
+        // At the time of writing this is in RollbackManagerServiceImpl#getExtensionVersions()
         R_EXTENSION_INT = SystemProperties.getInt("build.version.extensions.r", 0);
     }
 
diff --git a/api/test-current.txt b/api/test-current.txt
index 5d91adf..d693f03 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -732,6 +732,11 @@
     method public void onRoleHoldersChanged(@NonNull String, @NonNull android.os.UserHandle);
   }
 
+  public class RoleControllerManager {
+    method @RequiresPermission("android.permission.MANAGE_ROLE_HOLDERS") public void isApplicationVisibleForRole(@NonNull String, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
+    method @RequiresPermission("android.permission.MANAGE_ROLE_HOLDERS") public void isRoleVisible(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
+  }
+
   public final class RoleManager {
     method @RequiresPermission("android.permission.OBSERVE_ROLE_HOLDERS") public void addOnRoleHoldersChangedListenerAsUser(@NonNull java.util.concurrent.Executor, @NonNull android.app.role.OnRoleHoldersChangedListener, @NonNull android.os.UserHandle);
     method @RequiresPermission("android.permission.MANAGE_ROLE_HOLDERS") public void addRoleHolderAsUser(@NonNull String, @NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
@@ -3691,6 +3696,7 @@
   }
 
   public class TelecomManager {
+    method @NonNull public android.content.Intent createLaunchEmergencyDialerIntent(@Nullable String);
     method @NonNull @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public java.util.List<android.telecom.PhoneAccountHandle> getCallCapablePhoneAccounts(boolean);
     method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public int getCurrentTtyMode();
     method @Nullable @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDefaultDialerPackage(@NonNull android.os.UserHandle);
diff --git a/cmds/idmap2/idmap2d/Idmap2Service.cpp b/cmds/idmap2/idmap2d/Idmap2Service.cpp
index 75fc7f7..a93184f 100644
--- a/cmds/idmap2/idmap2d/Idmap2Service.cpp
+++ b/cmds/idmap2/idmap2d/Idmap2Service.cpp
@@ -34,11 +34,13 @@
 #include "idmap2/FileUtils.h"
 #include "idmap2/Idmap.h"
 #include "idmap2/SysTrace.h"
+#include "idmap2/ZipFile.h"
 #include "utils/String8.h"
 
 using android::IPCThreadState;
 using android::binder::Status;
 using android::idmap2::BinaryStreamVisitor;
+using android::idmap2::GetPackageCrc;
 using android::idmap2::Idmap;
 using android::idmap2::IdmapHeader;
 using android::idmap2::utils::kIdmapCacheDir;
@@ -49,6 +51,8 @@
 
 namespace {
 
+constexpr const char* kFrameworkPath = "/system/framework/framework-res.apk";
+
 Status ok() {
   return Status::ok();
 }
@@ -109,8 +113,32 @@
     return error("failed to parse idmap header");
   }
 
-  *_aidl_return =
-      strcmp(header->GetTargetPath().data(), target_apk_path.data()) == 0 && header->IsUpToDate();
+  if (strcmp(header->GetTargetPath().data(), target_apk_path.data()) != 0) {
+    *_aidl_return = false;
+    return ok();
+  }
+
+  if (target_apk_path != kFrameworkPath) {
+    *_aidl_return = (bool) header->IsUpToDate();
+  } else {
+    if (!android_crc_) {
+      // Loading the framework zip can take several milliseconds. Cache the crc of the framework
+      // resource APK to reduce repeated work during boot.
+      const auto target_zip = idmap2::ZipFile::Open(target_apk_path);
+      if (!target_zip) {
+        return error(base::StringPrintf("failed to open target %s", target_apk_path.c_str()));
+      }
+
+      const auto target_crc = GetPackageCrc(*target_zip);
+      if (!target_crc) {
+        return error(target_crc.GetErrorMessage());
+      }
+
+      android_crc_ = *target_crc;
+    }
+
+    *_aidl_return = (bool) header->IsUpToDate(android_crc_.value());
+  }
 
   // TODO(b/119328308): Check that the set of fulfilled policies of the overlay has not changed
   return ok();
diff --git a/cmds/idmap2/idmap2d/Idmap2Service.h b/cmds/idmap2/idmap2d/Idmap2Service.h
index 0ed55a1..55fb5ad 100644
--- a/cmds/idmap2/idmap2d/Idmap2Service.h
+++ b/cmds/idmap2/idmap2d/Idmap2Service.h
@@ -46,6 +46,10 @@
                              const std::string& overlay_apk_path, int32_t fulfilled_policies,
                              bool enforce_overlayable, int32_t user_id,
                              aidl::nullable<std::string>* _aidl_return) override;
+
+ private:
+  // Cache the crc of the android framework package since the crc cannot change without a reboot.
+  std::optional<uint32_t> android_crc_;
 };
 
 }  // namespace android::os
diff --git a/cmds/idmap2/include/idmap2/Idmap.h b/cmds/idmap2/include/idmap2/Idmap.h
index 2e4836e..77a7b30 100644
--- a/cmds/idmap2/include/idmap2/Idmap.h
+++ b/cmds/idmap2/include/idmap2/Idmap.h
@@ -74,6 +74,7 @@
 #include "androidfw/ResourceTypes.h"
 #include "androidfw/StringPiece.h"
 #include "idmap2/ResourceMapping.h"
+#include "idmap2/ZipFile.h"
 
 namespace android::idmap2 {
 
@@ -93,6 +94,9 @@
 // terminating null)
 static constexpr const size_t kIdmapStringLength = 256;
 
+// Retrieves a crc generated using all of the files within the zip that can affect idmap generation.
+Result<uint32_t> GetPackageCrc(const ZipFile& zip_info);
+
 class IdmapHeader {
  public:
   static std::unique_ptr<const IdmapHeader> FromBinaryStream(std::istream& stream);
@@ -129,6 +133,7 @@
   // field *must* be incremented. Because of this, we know that if the idmap
   // header is up-to-date the entire file is up-to-date.
   Result<Unit> IsUpToDate() const;
+  Result<Unit> IsUpToDate(uint32_t target_crc_) const;
 
   void accept(Visitor* v) const;
 
diff --git a/cmds/idmap2/libidmap2/Idmap.cpp b/cmds/idmap2/libidmap2/Idmap.cpp
index 7f2cd95..706b842 100644
--- a/cmds/idmap2/libidmap2/Idmap.cpp
+++ b/cmds/idmap2/libidmap2/Idmap.cpp
@@ -100,7 +100,9 @@
   return buf;
 }
 
-Result<uint32_t> GetCrc(const ZipFile& zip) {
+}  // namespace
+
+Result<uint32_t> GetPackageCrc(const ZipFile& zip) {
   const Result<uint32_t> a = zip.Crc("resources.arsc");
   const Result<uint32_t> b = zip.Crc("AndroidManifest.xml");
   return a && b
@@ -108,8 +110,6 @@
              : Error("failed to get CRC for \"%s\"", a ? "AndroidManifest.xml" : "resources.arsc");
 }
 
-}  // namespace
-
 std::unique_ptr<const IdmapHeader> IdmapHeader::FromBinaryStream(std::istream& stream) {
   std::unique_ptr<IdmapHeader> idmap_header(new IdmapHeader());
 
@@ -130,6 +130,20 @@
 }
 
 Result<Unit> IdmapHeader::IsUpToDate() const {
+  const std::unique_ptr<const ZipFile> target_zip = ZipFile::Open(target_path_);
+  if (!target_zip) {
+    return Error("failed to open target %s", GetTargetPath().to_string().c_str());
+  }
+
+  Result<uint32_t> target_crc = GetPackageCrc(*target_zip);
+  if (!target_crc) {
+    return Error("failed to get target crc");
+  }
+
+  return IsUpToDate(*target_crc);
+}
+
+Result<Unit> IdmapHeader::IsUpToDate(uint32_t target_crc) const {
   if (magic_ != kIdmapMagic) {
     return Error("bad magic: actual 0x%08x, expected 0x%08x", magic_, kIdmapMagic);
   }
@@ -138,19 +152,9 @@
     return Error("bad version: actual 0x%08x, expected 0x%08x", version_, kIdmapCurrentVersion);
   }
 
-  const std::unique_ptr<const ZipFile> target_zip = ZipFile::Open(target_path_);
-  if (!target_zip) {
-    return Error("failed to open target %s", GetTargetPath().to_string().c_str());
-  }
-
-  Result<uint32_t> target_crc = GetCrc(*target_zip);
-  if (!target_crc) {
-    return Error("failed to get target crc");
-  }
-
-  if (target_crc_ != *target_crc) {
+  if (target_crc_ != target_crc) {
     return Error("bad target crc: idmap version 0x%08x, file system version 0x%08x", target_crc_,
-                 *target_crc);
+                 target_crc);
   }
 
   const std::unique_ptr<const ZipFile> overlay_zip = ZipFile::Open(overlay_path_);
@@ -158,7 +162,7 @@
     return Error("failed to open overlay %s", GetOverlayPath().to_string().c_str());
   }
 
-  Result<uint32_t> overlay_crc = GetCrc(*overlay_zip);
+  Result<uint32_t> overlay_crc = GetPackageCrc(*overlay_zip);
   if (!overlay_crc) {
     return Error("failed to get overlay crc");
   }
@@ -304,13 +308,13 @@
   header->magic_ = kIdmapMagic;
   header->version_ = kIdmapCurrentVersion;
 
-  Result<uint32_t> crc = GetCrc(*target_zip);
+  Result<uint32_t> crc = GetPackageCrc(*target_zip);
   if (!crc) {
     return Error(crc.GetError(), "failed to get zip CRC for target");
   }
   header->target_crc_ = *crc;
 
-  crc = GetCrc(*overlay_zip);
+  crc = GetPackageCrc(*overlay_zip);
   if (!crc) {
     return Error(crc.GetError(), "failed to get zip CRC for overlay");
   }
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index bb00e23..8d756281 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -3915,9 +3915,10 @@
     enum NotificationSection {
         SECTION_UNKNOWN = 0;
         SECTION_HEADS_UP = 1;
-        SECTION_PEOPLE = 2;
-        SECTION_ALERTING = 3;
-        SECTION_SILENT = 4;
+        SECTION_MEDIA_CONTROLS = 2;
+        SECTION_PEOPLE = 3;
+        SECTION_ALERTING = 4;
+        SECTION_SILENT = 5;
     }
     optional NotificationSection section = 6;
 }
diff --git a/cmds/statsd/tools/localtools/Android.bp b/cmds/statsd/tools/localtools/Android.bp
index 75a57a3..69a43a8 100644
--- a/cmds/statsd/tools/localtools/Android.bp
+++ b/cmds/statsd/tools/localtools/Android.bp
@@ -11,9 +11,8 @@
     ],
 }
 
-java_binary_host {
-    name: "statsd_testdrive",
-    manifest: "testdrive_manifest.txt",
+java_library_host {
+    name: "statsd_testdrive_lib",
     srcs: [
         "src/com/android/statsd/shelltools/testdrive/*.java",
         "src/com/android/statsd/shelltools/Utils.java",
@@ -22,4 +21,26 @@
         "platformprotos",
         "guava",
     ],
-}
\ No newline at end of file
+}
+
+
+java_binary_host {
+    name: "statsd_testdrive",
+    manifest: "testdrive_manifest.txt",
+    static_libs: [
+        "statsd_testdrive_lib",
+    ],
+}
+
+java_test_host {
+    name: "statsd_testdrive_test",
+    test_suites: ["general-tests"],
+    srcs: ["test/com/android/statsd/shelltools/testdrive/*.java"],
+    static_libs: [
+        "statsd_testdrive_lib",
+        "junit",
+        "platformprotos",
+        "guava",
+    ],
+}
+
diff --git a/cmds/statsd/tools/localtools/TEST_MAPPING b/cmds/statsd/tools/localtools/TEST_MAPPING
new file mode 100644
index 0000000..7c8a3db
--- /dev/null
+++ b/cmds/statsd/tools/localtools/TEST_MAPPING
@@ -0,0 +1,8 @@
+{
+  "presubmit": [
+    {
+      "name": "statsd_testdrive_test",
+      "host": true
+    }
+  ]
+}
diff --git a/cmds/statsd/tools/localtools/src/com/android/statsd/shelltools/Utils.java b/cmds/statsd/tools/localtools/src/com/android/statsd/shelltools/Utils.java
index 2909048..6a74480 100644
--- a/cmds/statsd/tools/localtools/src/com/android/statsd/shelltools/Utils.java
+++ b/cmds/statsd/tools/localtools/src/com/android/statsd/shelltools/Utils.java
@@ -229,4 +229,56 @@
         }
         return null;
     }
+
+    /**
+     * Returns ANDROID_SERIAL environment variable, or null if that is undefined or unavailable.
+     * @param logger Destination of error messages.
+     * @return String value of ANDROID_SERIAL environment variable, or null.
+     */
+    public static String getDefaultDevice(Logger logger) {
+        try {
+            return System.getenv("ANDROID_SERIAL");
+        } catch (Exception ex) {
+            logger.log(Level.SEVERE, "Failed to check ANDROID_SERIAL environment variable.",
+                    ex);
+        }
+        return null;
+    }
+
+    /**
+     * Returns the device to use if one can be deduced, or null.
+     * @param device Command-line specified device, or null.
+     * @param connectedDevices List of all connected devices.
+     * @param defaultDevice Environment-variable specified device, or null.
+     * @param logger Destination of error messages.
+     * @return Device to use, or null.
+     */
+    public static String chooseDevice(String device, List<String> connectedDevices,
+            String defaultDevice, Logger logger) {
+        if (connectedDevices == null || connectedDevices.isEmpty()) {
+            logger.severe("No connected device.");
+            return null;
+        }
+        if (device != null) {
+            if (connectedDevices.contains(device)) {
+                return device;
+            }
+            logger.severe("Device not connected: " + device);
+            return null;
+        }
+        if (connectedDevices.size() == 1) {
+            return connectedDevices.get(0);
+        }
+        if (defaultDevice != null) {
+            if (connectedDevices.contains(defaultDevice)) {
+                return defaultDevice;
+            } else {
+                logger.severe("ANDROID_SERIAL device is not connected: " + defaultDevice);
+                return null;
+            }
+        }
+        logger.severe("More than one device is connected. Choose one"
+                + " with -s DEVICE_SERIAL or environment variable ANDROID_SERIAL.");
+        return null;
+    }
 }
diff --git a/cmds/statsd/tools/localtools/src/com/android/statsd/shelltools/localdrive/LocalDrive.java b/cmds/statsd/tools/localtools/src/com/android/statsd/shelltools/localdrive/LocalDrive.java
index 7db5141..ec3c7df 100644
--- a/cmds/statsd/tools/localtools/src/com/android/statsd/shelltools/localdrive/LocalDrive.java
+++ b/cmds/statsd/tools/localtools/src/com/android/statsd/shelltools/localdrive/LocalDrive.java
@@ -27,7 +27,6 @@
 import java.io.FileReader;
 import java.io.IOException;
 import java.util.List;
-import java.util.logging.Level;
 import java.util.logging.Logger;
 
 /**
@@ -112,17 +111,9 @@
         }
 
         List<String> connectedDevices = Utils.getDeviceSerials(sLogger);
-        if (connectedDevices == null || connectedDevices.size() == 0) {
-            sLogger.log(Level.SEVERE, "No device connected.");
-            return;
-        }
-        if (connectedDevices.size() == 1 && deviceSerial == null) {
-            deviceSerial = connectedDevices.get(0);
-        }
-
+        deviceSerial = Utils.chooseDevice(deviceSerial, connectedDevices,
+                Utils.getDefaultDevice(sLogger), sLogger);
         if (deviceSerial == null) {
-            sLogger.log(Level.SEVERE, "More than one devices connected. Please specify"
-                    + " with -s DEVICE_SERIAL");
             return;
         }
 
diff --git a/cmds/statsd/tools/localtools/src/com/android/statsd/shelltools/testdrive/TestDrive.java b/cmds/statsd/tools/localtools/src/com/android/statsd/shelltools/testdrive/TestDrive.java
index 54a744b..a97f132 100644
--- a/cmds/statsd/tools/localtools/src/com/android/statsd/shelltools/testdrive/TestDrive.java
+++ b/cmds/statsd/tools/localtools/src/com/android/statsd/shelltools/testdrive/TestDrive.java
@@ -15,6 +15,7 @@
  */
 package com.android.statsd.shelltools.testdrive;
 
+import com.android.internal.os.StatsdConfigProto;
 import com.android.internal.os.StatsdConfigProto.AtomMatcher;
 import com.android.internal.os.StatsdConfigProto.EventMetric;
 import com.android.internal.os.StatsdConfigProto.FieldFilter;
@@ -24,11 +25,13 @@
 import com.android.internal.os.StatsdConfigProto.StatsdConfig;
 import com.android.internal.os.StatsdConfigProto.TimeUnit;
 import com.android.os.AtomsProto.Atom;
+import com.android.os.StatsLog;
 import com.android.os.StatsLog.ConfigMetricsReport;
 import com.android.os.StatsLog.ConfigMetricsReportList;
 import com.android.os.StatsLog.StatsLogReport;
 import com.android.statsd.shelltools.Utils;
 
+import com.google.common.annotations.VisibleForTesting;
 import com.google.common.io.Files;
 
 import java.io.File;
@@ -39,6 +42,7 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.TreeSet;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -73,179 +77,319 @@
     };
     private static final Logger LOGGER = Logger.getLogger(TestDrive.class.getName());
 
-    private String mAdditionalAllowedPackage;
-    private String mDeviceSerial;
-    private final Set<Long> mTrackedMetrics = new HashSet<>();
+    @VisibleForTesting
+    String mDeviceSerial = null;
+    @VisibleForTesting
+    Dumper mDumper = new BasicDumper();
 
     public static void main(String[] args) {
-        TestDrive testDrive = new TestDrive();
-        Set<Integer> trackedAtoms = new HashSet<>();
+        final Configuration configuration = new Configuration();
+        final TestDrive testDrive = new TestDrive();
         Utils.setUpLogger(LOGGER, false);
-        String remoteConfigPath = null;
 
+        if (!testDrive.processArgs(configuration, args,
+                Utils.getDeviceSerials(LOGGER), Utils.getDefaultDevice(LOGGER))) {
+            return;
+        }
+
+        final ConfigMetricsReportList reports = testDrive.testDriveAndGetReports(
+                configuration.createConfig(), configuration.hasPulledAtoms(),
+                configuration.hasPushedAtoms());
+        if (reports != null) {
+            configuration.dumpMetrics(reports, testDrive.mDumper);
+        }
+    }
+
+    boolean processArgs(Configuration configuration, String[] args, List<String> connectedDevices,
+            String defaultDevice) {
         if (args.length < 1) {
-            LOGGER.log(Level.SEVERE, "Usage: ./test_drive [-p additional_allowed_package] "
-                    + "[-s DEVICE_SERIAL_NUMBER]"
+            LOGGER.severe("Usage: ./test_drive [-one] "
+                    + "[-p additional_allowed_package] "
+                    + "[-s DEVICE_SERIAL_NUMBER] "
                     + "<atomId1> <atomId2> ... <atomIdN>");
-            return;
+            return false;
         }
 
-        List<String> connectedDevices = Utils.getDeviceSerials(LOGGER);
-        if (connectedDevices == null || connectedDevices.size() == 0) {
-            LOGGER.log(Level.SEVERE, "No device connected.");
-            return;
-        }
-
-        int arg_index = 0;
-        while (arg_index < args.length) {
-            String arg = args[arg_index];
-            if (arg.equals("-p")) {
-                testDrive.mAdditionalAllowedPackage = args[++arg_index];
-            } else if (arg.equals("-s")) {
-                testDrive.mDeviceSerial = args[++arg_index];
+        int first_arg = 0;
+        // Consume all flags, which must precede all atoms
+        for (; first_arg < args.length; ++first_arg) {
+            String arg = args[first_arg];
+            int remaining_args = args.length - first_arg;
+            if (remaining_args >= 2 && arg.equals("-one")) {
+                LOGGER.info("Creating one event metric to catch all pushed atoms.");
+                configuration.mOnePushedAtomEvent = true;
+            } else if (remaining_args >= 2 && arg.equals("-terse")) {
+                LOGGER.info("Terse output format.");
+                mDumper = new TerseDumper();
+            } else if (remaining_args >= 3 && arg.equals("-p")) {
+                configuration.mAdditionalAllowedPackage = args[++first_arg];
+            } else if (remaining_args >= 3 && arg.equals("-s")) {
+                mDeviceSerial = args[++first_arg];
             } else {
-                break;
+                break;  // Found the atom list
             }
-            arg_index++;
         }
 
-        if (connectedDevices.size() == 1 && testDrive.mDeviceSerial == null) {
-            testDrive.mDeviceSerial = connectedDevices.get(0);
+        mDeviceSerial = Utils.chooseDevice(mDeviceSerial, connectedDevices, defaultDevice, LOGGER);
+        if (mDeviceSerial == null) {
+            return false;
         }
 
-        if (testDrive.mDeviceSerial == null) {
-            LOGGER.log(Level.SEVERE, "More than one devices connected. Please specify"
-                    + " with -s DEVICE_SERIAL");
-            return;
-        }
-
-        for (int i = arg_index; i < args.length; i++) {
+        for ( ; first_arg < args.length; ++first_arg) {
+            String atom = args[first_arg];
             try {
-                int atomId = Integer.valueOf(args[i]);
-                if (Atom.getDescriptor().findFieldByNumber(atomId) == null) {
-                    LOGGER.log(Level.SEVERE, "No such atom found: " + args[i]);
-                    continue;
-                }
-                trackedAtoms.add(atomId);
+                configuration.addAtom(Integer.valueOf(atom));
             } catch (NumberFormatException e) {
-                LOGGER.log(Level.SEVERE, "Bad atom id provided: " + args[i]);
-                continue;
+                LOGGER.severe("Bad atom id provided: " + atom);
             }
         }
 
+        return configuration.hasPulledAtoms() || configuration.hasPushedAtoms();
+    }
+
+    private ConfigMetricsReportList testDriveAndGetReports(StatsdConfig config,
+            boolean hasPulledAtoms, boolean hasPushedAtoms) {
+        if (config == null) {
+            LOGGER.severe("Failed to create valid config.");
+            return null;
+        }
+
+        String remoteConfigPath = null;
         try {
-            StatsdConfig config = testDrive.createConfig(trackedAtoms);
-            if (config == null) {
-                LOGGER.log(Level.SEVERE, "Failed to create valid config.");
-                return;
-            }
-            remoteConfigPath = testDrive.pushConfig(config, testDrive.mDeviceSerial);
-            LOGGER.info("Pushed the following config to statsd:");
+            remoteConfigPath = pushConfig(config, mDeviceSerial);
+            LOGGER.info("Pushed the following config to statsd on device '" + mDeviceSerial
+                    + "':");
             LOGGER.info(config.toString());
-            if (!hasPulledAtom(trackedAtoms)) {
+            if (hasPushedAtoms) {
+                LOGGER.info("Now please play with the device to trigger the event.");
+            }
+            if (!hasPulledAtoms) {
                 LOGGER.info(
-                        "Now please play with the device to trigger the event. All events should "
-                                + "be dumped after 1 min ...");
+                        "All events should be dumped after 1 min ...");
                 Thread.sleep(60_000);
             } else {
-                LOGGER.info("Now wait for 1.5 minutes ...");
+                LOGGER.info("All events should be dumped after 1.5 minutes ...");
                 Thread.sleep(15_000);
-                Utils.logAppBreadcrumb(0, 0, LOGGER, testDrive.mDeviceSerial);
+                Utils.logAppBreadcrumb(0, 0, LOGGER, mDeviceSerial);
                 Thread.sleep(75_000);
             }
-            testDrive.dumpMetrics();
+            return Utils.getReportList(CONFIG_ID, true, false, LOGGER,
+                    mDeviceSerial);
         } catch (Exception e) {
             LOGGER.log(Level.SEVERE, "Failed to test drive: " + e.getMessage(), e);
         } finally {
-            testDrive.removeConfig(testDrive.mDeviceSerial);
+            removeConfig(mDeviceSerial);
             if (remoteConfigPath != null) {
                 try {
                     Utils.runCommand(null, LOGGER,
-                            "adb", "-s", testDrive.mDeviceSerial, "shell", "rm", remoteConfigPath);
+                            "adb", "-s", mDeviceSerial, "shell", "rm",
+                            remoteConfigPath);
                 } catch (Exception e) {
                     LOGGER.log(Level.WARNING,
                             "Unable to remove remote config file: " + remoteConfigPath, e);
                 }
             }
         }
+        return null;
     }
 
-    private void dumpMetrics() throws Exception {
-        ConfigMetricsReportList reportList = Utils.getReportList(CONFIG_ID, true, false, LOGGER,
-                mDeviceSerial);
-        // We may get multiple reports. Take the last one.
-        ConfigMetricsReport report = reportList.getReports(reportList.getReportsCount() - 1);
-        for (StatsLogReport statsLog : report.getMetricsList()) {
-            if (mTrackedMetrics.contains(statsLog.getMetricId())) {
-                LOGGER.info(statsLog.toString());
+    static class Configuration {
+        boolean mOnePushedAtomEvent = false;
+        @VisibleForTesting
+        Set<Integer> mPushedAtoms = new TreeSet<>();
+        @VisibleForTesting
+        Set<Integer> mPulledAtoms = new TreeSet<>();
+        @VisibleForTesting
+        String mAdditionalAllowedPackage = null;
+        private final Set<Long> mTrackedMetrics = new HashSet<>();
+
+        private void dumpMetrics(ConfigMetricsReportList reportList, Dumper dumper) {
+            // We may get multiple reports. Take the last one.
+            ConfigMetricsReport report = reportList.getReports(reportList.getReportsCount() - 1);
+            for (StatsLogReport statsLog : report.getMetricsList()) {
+                if (isTrackedMetric(statsLog.getMetricId())) {
+                    LOGGER.info(statsLog.toString());
+                    dumper.dump(statsLog);
+                }
             }
         }
-    }
 
-    private StatsdConfig createConfig(Set<Integer> atomIds) {
-        long metricId = METRIC_ID_BASE;
-        long atomMatcherId = ATOM_MATCHER_ID_BASE;
-
-        ArrayList<String> allowedSources = new ArrayList<>();
-        Collections.addAll(allowedSources, ALLOWED_LOG_SOURCES);
-        if (mAdditionalAllowedPackage != null) {
-            allowedSources.add(mAdditionalAllowedPackage);
+        boolean isTrackedMetric(long metricId) {
+            return mTrackedMetrics.contains(metricId);
         }
 
-        StatsdConfig.Builder builder = StatsdConfig.newBuilder();
-        builder
-            .addAllAllowedLogSource(allowedSources)
-            .addAllDefaultPullPackages(Arrays.asList(DEFAULT_PULL_SOURCES))
-            .addPullAtomPackages(PullAtomPackages.newBuilder()
-                    .setAtomId(Atom.GPU_STATS_GLOBAL_INFO_FIELD_NUMBER)
-                    .addPackages("AID_GPU_SERVICE"))
-            .addPullAtomPackages(PullAtomPackages.newBuilder()
-                    .setAtomId(Atom.GPU_STATS_APP_INFO_FIELD_NUMBER)
-                    .addPackages("AID_GPU_SERVICE"))
-            .addPullAtomPackages(PullAtomPackages.newBuilder()
-                    .setAtomId(Atom.TRAIN_INFO_FIELD_NUMBER)
-                    .addPackages("AID_STATSD"))
-            .setHashStringsInMetricReport(false);
-
-        if (hasPulledAtom(atomIds)) {
-            builder.addAtomMatcher(
-                    createAtomMatcher(
-                            Atom.APP_BREADCRUMB_REPORTED_FIELD_NUMBER, APP_BREADCRUMB_MATCHER_ID));
+        static boolean isPulledAtom(int atomId) {
+            return atomId >= PULL_ATOM_START && atomId <= MAX_PLATFORM_ATOM_TAG
+                    || atomId >= VENDOR_PULLED_ATOM_START_TAG;
         }
 
-        for (int atomId : atomIds) {
-            if (isPulledAtom(atomId)) {
+        void addAtom(Integer atom) {
+            if (Atom.getDescriptor().findFieldByNumber(atom) == null) {
+                LOGGER.severe("No such atom found: " + atom);
+                return;
+            }
+            if (isPulledAtom(atom)) {
+                mPulledAtoms.add(atom);
+            } else {
+                mPushedAtoms.add(atom);
+            }
+        }
+
+        private boolean hasPulledAtoms() {
+            return !mPulledAtoms.isEmpty();
+        }
+
+        private boolean hasPushedAtoms() {
+            return !mPushedAtoms.isEmpty();
+        }
+
+        StatsdConfig createConfig() {
+            long metricId = METRIC_ID_BASE;
+            long atomMatcherId = ATOM_MATCHER_ID_BASE;
+
+            StatsdConfig.Builder builder = baseBuilder();
+
+            if (hasPulledAtoms()) {
+                builder.addAtomMatcher(
+                        createAtomMatcher(
+                                Atom.APP_BREADCRUMB_REPORTED_FIELD_NUMBER,
+                                APP_BREADCRUMB_MATCHER_ID));
+            }
+
+            for (int atomId : mPulledAtoms) {
                 builder.addAtomMatcher(createAtomMatcher(atomId, atomMatcherId));
                 GaugeMetric.Builder gaugeMetricBuilder = GaugeMetric.newBuilder();
                 gaugeMetricBuilder
-                    .setId(metricId)
-                    .setWhat(atomMatcherId)
-                    .setTriggerEvent(APP_BREADCRUMB_MATCHER_ID)
-                    .setGaugeFieldsFilter(FieldFilter.newBuilder().setIncludeAll(true).build())
-                    .setBucket(TimeUnit.ONE_MINUTE)
-                    .setSamplingType(GaugeMetric.SamplingType.FIRST_N_SAMPLES)
-                    .setMaxNumGaugeAtomsPerBucket(100);
+                        .setId(metricId)
+                        .setWhat(atomMatcherId)
+                        .setTriggerEvent(APP_BREADCRUMB_MATCHER_ID)
+                        .setGaugeFieldsFilter(FieldFilter.newBuilder().setIncludeAll(true).build())
+                        .setBucket(TimeUnit.ONE_MINUTE)
+                        .setSamplingType(GaugeMetric.SamplingType.FIRST_N_SAMPLES)
+                        .setMaxNumGaugeAtomsPerBucket(100);
                 builder.addGaugeMetric(gaugeMetricBuilder.build());
-            } else {
-                EventMetric.Builder eventMetricBuilder = EventMetric.newBuilder();
-                eventMetricBuilder
-                    .setId(metricId)
-                    .setWhat(atomMatcherId);
-                builder.addEventMetric(eventMetricBuilder.build());
-                builder.addAtomMatcher(createAtomMatcher(atomId, atomMatcherId));
+                atomMatcherId++;
+                mTrackedMetrics.add(metricId++);
             }
-            atomMatcherId++;
-            mTrackedMetrics.add(metricId++);
+
+            // A simple atom matcher for each pushed atom.
+            List<AtomMatcher> simpleAtomMatchers = new ArrayList<>();
+            for (int atomId : mPushedAtoms) {
+                final AtomMatcher atomMatcher = createAtomMatcher(atomId, atomMatcherId++);
+                simpleAtomMatchers.add(atomMatcher);
+                builder.addAtomMatcher(atomMatcher);
+            }
+
+            if (mOnePushedAtomEvent) {
+                // Create a union event metric, using an matcher that matches all pulled atoms.
+                AtomMatcher unionAtomMatcher = createUnionMatcher(simpleAtomMatchers,
+                        atomMatcherId);
+                builder.addAtomMatcher(unionAtomMatcher);
+                EventMetric.Builder eventMetricBuilder = EventMetric.newBuilder();
+                eventMetricBuilder.setId(metricId).setWhat(unionAtomMatcher.getId());
+                builder.addEventMetric(eventMetricBuilder.build());
+                mTrackedMetrics.add(metricId++);
+            } else {
+                // Create multiple event metrics, one per pulled atom.
+                for (AtomMatcher atomMatcher : simpleAtomMatchers) {
+                    EventMetric.Builder eventMetricBuilder = EventMetric.newBuilder();
+                    eventMetricBuilder
+                            .setId(metricId)
+                            .setWhat(atomMatcher.getId());
+                    builder.addEventMetric(eventMetricBuilder.build());
+                    mTrackedMetrics.add(metricId++);
+                }
+            }
+
+            return builder.build();
         }
-        return builder.build();
+
+        private static AtomMatcher createAtomMatcher(int atomId, long matcherId) {
+            AtomMatcher.Builder atomMatcherBuilder = AtomMatcher.newBuilder();
+            atomMatcherBuilder
+                    .setId(matcherId)
+                    .setSimpleAtomMatcher(SimpleAtomMatcher.newBuilder().setAtomId(atomId));
+            return atomMatcherBuilder.build();
+        }
+
+        private AtomMatcher createUnionMatcher(List<AtomMatcher> simpleAtomMatchers,
+                long atomMatcherId) {
+            AtomMatcher.Combination.Builder combinationBuilder =
+                    AtomMatcher.Combination.newBuilder();
+            combinationBuilder.setOperation(StatsdConfigProto.LogicalOperation.OR);
+            for (AtomMatcher matcher : simpleAtomMatchers) {
+                combinationBuilder.addMatcher(matcher.getId());
+            }
+            AtomMatcher.Builder atomMatcherBuilder = AtomMatcher.newBuilder();
+            atomMatcherBuilder.setId(atomMatcherId).setCombination(combinationBuilder.build());
+            return atomMatcherBuilder.build();
+        }
+
+        private StatsdConfig.Builder baseBuilder() {
+            ArrayList<String> allowedSources = new ArrayList<>();
+            Collections.addAll(allowedSources, ALLOWED_LOG_SOURCES);
+            if (mAdditionalAllowedPackage != null) {
+                allowedSources.add(mAdditionalAllowedPackage);
+            }
+            return StatsdConfig.newBuilder()
+                    .addAllAllowedLogSource(allowedSources)
+                    .addAllDefaultPullPackages(Arrays.asList(DEFAULT_PULL_SOURCES))
+                    .addPullAtomPackages(PullAtomPackages.newBuilder()
+                            .setAtomId(Atom.GPU_STATS_GLOBAL_INFO_FIELD_NUMBER)
+                            .addPackages("AID_GPU_SERVICE"))
+                    .addPullAtomPackages(PullAtomPackages.newBuilder()
+                            .setAtomId(Atom.GPU_STATS_APP_INFO_FIELD_NUMBER)
+                            .addPackages("AID_GPU_SERVICE"))
+                    .addPullAtomPackages(PullAtomPackages.newBuilder()
+                            .setAtomId(Atom.TRAIN_INFO_FIELD_NUMBER)
+                            .addPackages("AID_STATSD"))
+                    .setHashStringsInMetricReport(false);
+        }
     }
 
-    private static AtomMatcher createAtomMatcher(int atomId, long matcherId) {
-        AtomMatcher.Builder atomMatcherBuilder = AtomMatcher.newBuilder();
-        atomMatcherBuilder
-                .setId(matcherId)
-                .setSimpleAtomMatcher(SimpleAtomMatcher.newBuilder().setAtomId(atomId));
-        return atomMatcherBuilder.build();
+    interface Dumper {
+        void dump(StatsLogReport report);
+    }
+
+    static class BasicDumper implements Dumper {
+        @Override
+        public void dump(StatsLogReport report) {
+            System.out.println(report.toString());
+        }
+    }
+
+    static class TerseDumper extends BasicDumper {
+        @Override
+        public void dump(StatsLogReport report) {
+            if (report.hasGaugeMetrics()) {
+                dumpGaugeMetrics(report);
+            }
+            if (report.hasEventMetrics()) {
+                dumpEventMetrics(report);
+            }
+        }
+        void dumpEventMetrics(StatsLogReport report) {
+            final List<StatsLog.EventMetricData> data = report.getEventMetrics().getDataList();
+            if (data.isEmpty()) {
+                return;
+            }
+            long firstTimestampNanos = data.get(0).getElapsedTimestampNanos();
+            for (StatsLog.EventMetricData event : data) {
+                final double deltaSec = (event.getElapsedTimestampNanos() - firstTimestampNanos)
+                        / 1e9;
+                System.out.println(
+                        String.format("+%.3fs: %s", deltaSec, event.getAtom().toString()));
+            }
+        }
+        void dumpGaugeMetrics(StatsLogReport report) {
+            final List<StatsLog.GaugeMetricData> data = report.getGaugeMetrics().getDataList();
+            if (data.isEmpty()) {
+                return;
+            }
+            for (StatsLog.GaugeMetricData gauge : data) {
+                System.out.println(gauge.toString());
+            }
+        }
     }
 
     private static String pushConfig(StatsdConfig config, String deviceSerial)
@@ -267,21 +411,7 @@
             Utils.runCommand(null, LOGGER, "adb", "-s", deviceSerial,
                     "shell", Utils.CMD_REMOVE_CONFIG, String.valueOf(CONFIG_ID));
         } catch (Exception e) {
-            LOGGER.log(Level.SEVERE, "Failed to remove config: " + e.getMessage());
+            LOGGER.severe("Failed to remove config: " + e.getMessage());
         }
     }
-
-    private static boolean isPulledAtom(int atomId) {
-        return atomId >= PULL_ATOM_START && atomId <= MAX_PLATFORM_ATOM_TAG
-                || atomId >= VENDOR_PULLED_ATOM_START_TAG;
-    }
-
-    private static boolean hasPulledAtom(Set<Integer> atoms) {
-        for (Integer i : atoms) {
-            if (isPulledAtom(i)) {
-                return true;
-            }
-        }
-        return false;
-    }
 }
diff --git a/cmds/statsd/tools/localtools/test/com/android/statsd/shelltools/testdrive/ConfigurationTest.java b/cmds/statsd/tools/localtools/test/com/android/statsd/shelltools/testdrive/ConfigurationTest.java
new file mode 100644
index 0000000..b1cc60f
--- /dev/null
+++ b/cmds/statsd/tools/localtools/test/com/android/statsd/shelltools/testdrive/ConfigurationTest.java
@@ -0,0 +1,326 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.statsd.shelltools.testdrive;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import com.android.internal.os.StatsdConfigProto;
+import com.android.internal.os.StatsdConfigProto.StatsdConfig;
+import com.android.os.AtomsProto;
+
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Tests for {@link TestDrive}
+ */
+public class ConfigurationTest {
+
+    private StatsdConfigProto.AtomMatcher findAndRemoveAtomMatcherById(
+            List<StatsdConfigProto.AtomMatcher> atomMatchers, long id) {
+        int numMatches = 0;
+        StatsdConfigProto.AtomMatcher match = null;
+        for (StatsdConfigProto.AtomMatcher atomMatcher : atomMatchers) {
+            if (id == atomMatcher.getId()) {
+                ++numMatches;
+                match = atomMatcher;
+            }
+        }
+        if (numMatches == 1) {
+            atomMatchers.remove(match);
+            return match;
+        }
+        return null;  // Too many, or not found
+    }
+
+    private final TestDrive.Configuration mConfiguration = new TestDrive.Configuration();
+
+    @Test
+    public void testOnePushed() {
+        final int atom = 90;
+        assertFalse(TestDrive.Configuration.isPulledAtom(atom));
+        mConfiguration.addAtom(atom);
+        StatsdConfig config = mConfiguration.createConfig();
+
+        //event_metric {
+        //  id: 1111
+        //  what: 1234567
+        //}
+        //atom_matcher {
+        //  id: 1234567
+        //  simple_atom_matcher {
+        //    atom_id: 90
+        //  }
+        //}
+
+        assertEquals(1, config.getEventMetricCount());
+        assertEquals(0, config.getGaugeMetricCount());
+
+        assertTrue(mConfiguration.isTrackedMetric(config.getEventMetric(0).getId()));
+
+        final List<StatsdConfigProto.AtomMatcher> atomMatchers =
+                new ArrayList<>(config.getAtomMatcherList());
+        assertEquals(atom,
+                findAndRemoveAtomMatcherById(atomMatchers, config.getEventMetric(0).getWhat())
+                        .getSimpleAtomMatcher().getAtomId());
+        assertEquals(0, atomMatchers.size());
+    }
+
+    @Test
+    public void testOnePulled() {
+        final int atom = 10022;
+        assertTrue(TestDrive.Configuration.isPulledAtom(atom));
+        mConfiguration.addAtom(atom);
+        StatsdConfig config = mConfiguration.createConfig();
+
+        //gauge_metric {
+        //  id: 1111
+        //  what: 1234567
+        //  gauge_fields_filter {
+        //    include_all: true
+        //  }
+        //  bucket: ONE_MINUTE
+        //  sampling_type: FIRST_N_SAMPLES
+        //  max_num_gauge_atoms_per_bucket: 100
+        //  trigger_event: 1111111
+        //}
+        //atom_matcher {
+        //  id: 1111111
+        //  simple_atom_matcher {
+        //    atom_id: 47
+        //  }
+        //}
+        //atom_matcher {
+        //  id: 1234567
+        //  simple_atom_matcher {
+        //    atom_id: 10022
+        //  }
+        //}
+
+        assertEquals(0, config.getEventMetricCount());
+        assertEquals(1, config.getGaugeMetricCount());
+
+        assertTrue(mConfiguration.isTrackedMetric(config.getGaugeMetric(0).getId()));
+
+        final StatsdConfigProto.GaugeMetric gaugeMetric = config.getGaugeMetric(0);
+        assertTrue(gaugeMetric.getGaugeFieldsFilter().getIncludeAll());
+
+        final List<StatsdConfigProto.AtomMatcher> atomMatchers =
+                new ArrayList<>(config.getAtomMatcherList());
+        assertEquals(atom,
+                findAndRemoveAtomMatcherById(atomMatchers, gaugeMetric.getWhat())
+                        .getSimpleAtomMatcher().getAtomId());
+        assertEquals(AtomsProto.Atom.APP_BREADCRUMB_REPORTED_FIELD_NUMBER,
+                findAndRemoveAtomMatcherById(atomMatchers, gaugeMetric.getTriggerEvent())
+                        .getSimpleAtomMatcher().getAtomId());
+        assertEquals(0, atomMatchers.size());
+    }
+
+    @Test
+    public void testOnePulledTwoPushed() {
+        final int pulledAtom = 10022;
+        assertTrue(TestDrive.Configuration.isPulledAtom(pulledAtom));
+        mConfiguration.addAtom(pulledAtom);
+
+        Integer[] pushedAtoms = new Integer[]{244, 245};
+        for (int atom : pushedAtoms) {
+            assertFalse(TestDrive.Configuration.isPulledAtom(atom));
+            mConfiguration.addAtom(atom);
+        }
+        StatsdConfig config = mConfiguration.createConfig();
+
+        //  event_metric {
+        //    id: 1111
+        //    what: 1234567
+        //  }
+        //  event_metric {
+        //    id: 1112
+        //    what: 1234568
+        //  }
+        //  gauge_metric {
+        //    id: 1114
+        //    what: 1234570
+        //    gauge_fields_filter {
+        //      include_all: true
+        //    }
+        //    bucket: ONE_MINUTE
+        //    sampling_type: FIRST_N_SAMPLES
+        //    max_num_gauge_atoms_per_bucket: 100
+        //    trigger_event: 1111111
+        //  }
+        //  atom_matcher {
+        //    id: 1111111
+        //    simple_atom_matcher {
+        //      atom_id: 47
+        //    }
+        //  }
+        //  atom_matcher {
+        //    id: 1234567
+        //    simple_atom_matcher {
+        //      atom_id: 244
+        //    }
+        //  }
+        //  atom_matcher {
+        //    id: 1234568
+        //    simple_atom_matcher {
+        //      atom_id: 245
+        //    }
+        //  }
+        //  atom_matcher {
+        //    id: 1234570
+        //    simple_atom_matcher {
+        //      atom_id: 10022
+        //    }
+        //  }
+
+        assertEquals(2, config.getEventMetricCount());
+        assertEquals(1, config.getGaugeMetricCount());
+
+        final StatsdConfigProto.GaugeMetric gaugeMetric = config.getGaugeMetric(0);
+        assertTrue(mConfiguration.isTrackedMetric(gaugeMetric.getId()));
+        assertTrue(gaugeMetric.getGaugeFieldsFilter().getIncludeAll());
+        for (StatsdConfigProto.EventMetric eventMetric : config.getEventMetricList()) {
+            assertTrue(mConfiguration.isTrackedMetric(eventMetric.getId()));
+        }
+
+        final List<StatsdConfigProto.AtomMatcher> atomMatchers =
+                new ArrayList<>(config.getAtomMatcherList());
+
+        assertEquals(pulledAtom, findAndRemoveAtomMatcherById(atomMatchers, gaugeMetric.getWhat())
+                .getSimpleAtomMatcher().getAtomId());
+        assertEquals(AtomsProto.Atom.APP_BREADCRUMB_REPORTED_FIELD_NUMBER,
+                findAndRemoveAtomMatcherById(atomMatchers, gaugeMetric.getTriggerEvent())
+                        .getSimpleAtomMatcher().getAtomId());
+
+        Integer[] actualAtoms = new Integer[]{
+                findAndRemoveAtomMatcherById(atomMatchers, config.getEventMetric(0).getWhat())
+                        .getSimpleAtomMatcher().getAtomId(),
+                findAndRemoveAtomMatcherById(atomMatchers, config.getEventMetric(1).getWhat())
+                        .getSimpleAtomMatcher().getAtomId()};
+        Arrays.sort(actualAtoms);
+        assertArrayEquals(pushedAtoms, actualAtoms);
+
+        assertEquals(0, atomMatchers.size());
+    }
+
+    @Test
+    public void testOnePulledTwoPushedTogether() {
+        mConfiguration.mOnePushedAtomEvent = true;  // Use one event grabbing all pushed atoms
+
+        final int pulledAtom = 10022;
+        assertTrue(TestDrive.Configuration.isPulledAtom(pulledAtom));
+        mConfiguration.addAtom(pulledAtom);
+
+        Integer[] pushedAtoms = new Integer[]{244, 245};
+        for (int atom : pushedAtoms) {
+            assertFalse(TestDrive.Configuration.isPulledAtom(atom));
+            mConfiguration.addAtom(atom);
+        }
+        StatsdConfig config = mConfiguration.createConfig();
+
+        //    event_metric {
+        //      id: 1112
+        //      what: 1234570
+        //    }
+        //    gauge_metric {
+        //      id: 1111
+        //      what: 1234567
+        //      gauge_fields_filter {
+        //        include_all: true
+        //      }
+        //      bucket: ONE_MINUTE
+        //      sampling_type: FIRST_N_SAMPLES
+        //      max_num_gauge_atoms_per_bucket: 100
+        //      trigger_event: 1111111
+        //    }
+        //    atom_matcher {
+        //      id: 1111111
+        //      simple_atom_matcher {
+        //        atom_id: 47
+        //      }
+        //    }
+        //    atom_matcher {
+        //      id: 1234567
+        //      simple_atom_matcher {
+        //        atom_id: 10022
+        //      }
+        //    }
+        //    atom_matcher {
+        //      id: 1234568
+        //      simple_atom_matcher {
+        //        atom_id: 244
+        //      }
+        //    }
+        //    atom_matcher {
+        //      id: 1234569
+        //      simple_atom_matcher {
+        //        atom_id: 245
+        //      }
+        //    }
+        //    atom_matcher {
+        //      id: 1234570
+        //      combination {
+        //        operation: OR
+        //        matcher: 1234568
+        //        matcher: 1234569
+        //      }
+        //    }
+
+        assertEquals(1, config.getEventMetricCount());
+        assertEquals(1, config.getGaugeMetricCount());
+
+        final StatsdConfigProto.GaugeMetric gaugeMetric = config.getGaugeMetric(0);
+        assertTrue(mConfiguration.isTrackedMetric(gaugeMetric.getId()));
+        assertTrue(gaugeMetric.getGaugeFieldsFilter().getIncludeAll());
+
+        StatsdConfigProto.EventMetric eventMetric = config.getEventMetric(0);
+        assertTrue(mConfiguration.isTrackedMetric(eventMetric.getId()));
+
+        final List<StatsdConfigProto.AtomMatcher> atomMatchers =
+                new ArrayList<>(config.getAtomMatcherList());
+
+        assertEquals(pulledAtom, findAndRemoveAtomMatcherById(atomMatchers, gaugeMetric.getWhat())
+                .getSimpleAtomMatcher().getAtomId());
+        assertEquals(AtomsProto.Atom.APP_BREADCRUMB_REPORTED_FIELD_NUMBER,
+                findAndRemoveAtomMatcherById(atomMatchers, gaugeMetric.getTriggerEvent())
+                        .getSimpleAtomMatcher().getAtomId());
+
+        StatsdConfigProto.AtomMatcher unionMatcher = findAndRemoveAtomMatcherById(atomMatchers,
+                eventMetric.getWhat());
+        assertNotNull(unionMatcher.getCombination());
+        assertEquals(2, unionMatcher.getCombination().getMatcherCount());
+
+        Integer[] actualAtoms = new Integer[]{
+              findAndRemoveAtomMatcherById(atomMatchers,
+                      unionMatcher.getCombination().getMatcher(0))
+                      .getSimpleAtomMatcher().getAtomId(),
+                findAndRemoveAtomMatcherById(atomMatchers,
+                        unionMatcher.getCombination().getMatcher(1))
+                        .getSimpleAtomMatcher().getAtomId()};
+        Arrays.sort(actualAtoms);
+        assertArrayEquals(pushedAtoms, actualAtoms);
+
+        assertEquals(0, atomMatchers.size());
+    }
+}
diff --git a/cmds/statsd/tools/localtools/test/com/android/statsd/shelltools/testdrive/TestDriveTest.java b/cmds/statsd/tools/localtools/test/com/android/statsd/shelltools/testdrive/TestDriveTest.java
new file mode 100644
index 0000000..363fac0
--- /dev/null
+++ b/cmds/statsd/tools/localtools/test/com/android/statsd/shelltools/testdrive/TestDriveTest.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.statsd.shelltools.testdrive;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Tests for {@link TestDrive}
+ */
+@RunWith(Parameterized.class)
+public class TestDriveTest {
+    /**
+     * Expected results of a single iteration of the paramerized test.
+     */
+    static class Expect {
+        public boolean success;
+        public Integer[] atoms;
+        public boolean onePushedAtomEvent = false;
+        public String extraPackage = null;
+        public String target;
+        public boolean terse = false;
+
+        static Expect success(Integer... atoms) {
+            return new Expect(true, atoms,
+                    TARGET);
+        }
+        Expect(boolean success, Integer[] atoms, String target) {
+            this.success = success;
+            this.atoms = atoms;
+            this.target = target;
+        }
+        static final Expect FAILURE = new Expect(false, null, null);
+        Expect onePushedAtomEvent() {
+            this.onePushedAtomEvent = true;
+            return this;
+        }
+        Expect extraPackage() {
+            this.extraPackage = TestDriveTest.PACKAGE;
+            return this;
+        }
+        Expect terse() {
+            this.terse = true;
+            return this;
+        }
+    }
+
+    @Parameterized.Parameter(0)
+    public String[] mArgs;
+
+    @Parameterized.Parameter(1)
+    public List<String> mConnectedDevices;
+
+    @Parameterized.Parameter(2)
+    public String mDefaultDevice;
+
+    @Parameterized.Parameter(3)
+    public Expect mExpect;
+
+    private static final String TARGET = "target";
+    private static final List<String> TARGET_AND_OTHER = Arrays.asList("otherDevice",
+            TARGET);
+    private static final List<String> TWO_OTHER_DEVICES = Arrays.asList(
+            "other1", "other2");
+    private static final List<String> TARGET_ONLY = Collections.singletonList(TARGET);
+    private static final List<String> NOT_TARGET = Collections.singletonList("other");
+    private static final List<String> NO_DEVICES = Collections.emptyList();
+    private static final String PACKAGE = "extraPackage";
+
+    @Parameterized.Parameters
+    public static Collection<Object[]> data() {
+        return Arrays.asList(
+                new Object[]{new String[]{}, null, null,
+                        Expect.FAILURE},  // Usage explanation
+                new Object[]{new String[]{"244", "245"}, null, null,
+                        Expect.FAILURE},  // Failure looking up connected devices
+                new Object[]{new String[]{"244", "245"}, NO_DEVICES, null,
+                        Expect.FAILURE},  // No connected devices
+                new Object[]{new String[]{"-s", TARGET, "244", "245"}, NOT_TARGET, null,
+                        Expect.FAILURE},  // Wrong device connected
+                new Object[]{new String[]{"244", "245"}, TWO_OTHER_DEVICES, null,
+                        Expect.FAILURE},  // Wrong devices connected
+                new Object[]{new String[]{"244", "245"}, TARGET_ONLY, null,
+                        Expect.success(244, 245)},  // If only one device connected, guess that one
+                new Object[]{new String[]{"244", "not_an_atom"}, TARGET_ONLY, null,
+                        Expect.success(244)},  // Ignore non-atoms
+                new Object[]{new String[]{"not_an_atom"}, TARGET_ONLY, null,
+                        Expect.FAILURE},  // Require at least one atom
+                new Object[]{new String[]{"244", "245"}, TWO_OTHER_DEVICES, TARGET,
+                        Expect.FAILURE},  // ANDROID_SERIAL specifies non-connected target
+                new Object[]{new String[]{"244", "245"}, TARGET_AND_OTHER, TARGET,
+                        Expect.success(244, 245)},  // ANDROID_SERIAL specifies a valid target
+                new Object[]{new String[]{"244", "245"}, TARGET_AND_OTHER, null,
+                        Expect.FAILURE},  // Two connected devices, no indication of which to use
+                new Object[]{new String[]{"-one", "244", "245"}, TARGET_ONLY, null,
+                        Expect.success(244, 245).onePushedAtomEvent()},
+                new Object[]{new String[]{"-terse", "-one", "244", "245"}, TARGET_ONLY, null,
+                        Expect.success(244, 245).onePushedAtomEvent().terse()},
+                new Object[]{new String[]{"-one", "-terse", "244", "245"}, TARGET_ONLY, null,
+                        Expect.success(244, 245).onePushedAtomEvent().terse()},
+                new Object[]{new String[]{"-p", PACKAGE, "244", "245"}, TARGET_ONLY, null,
+                        Expect.success(244, 245).extraPackage()},
+                new Object[]{new String[]{"-p", PACKAGE, "-one", "244", "245"}, TARGET_ONLY, null,
+                        Expect.success(244, 245).extraPackage().onePushedAtomEvent()},
+                new Object[]{new String[]{"-one", "-p", PACKAGE, "244", "245"}, TARGET_ONLY, null,
+                        Expect.success(244, 245).extraPackage().onePushedAtomEvent()},
+                new Object[]{new String[]{"-s", TARGET, "-one", "-p", PACKAGE, "244", "245"},
+                        TARGET_AND_OTHER, null,
+                        Expect.success(244, 245).extraPackage().onePushedAtomEvent()},
+                new Object[]{new String[]{"-one", "-s", TARGET, "-p", PACKAGE, "244", "245"},
+                        TARGET_AND_OTHER, null,
+                        Expect.success(244, 245).extraPackage().onePushedAtomEvent()},
+                new Object[]{new String[]{"-one", "-p", PACKAGE, "-s", TARGET, "244", "245"},
+                        TARGET_AND_OTHER, null,
+                        Expect.success(244, 245).extraPackage().onePushedAtomEvent()},
+                new Object[]{new String[]{"-terse", "-one", "-p", PACKAGE, "-s", TARGET,
+                        "244", "245"},
+                        TARGET_AND_OTHER, null,
+                        Expect.success(244, 245).extraPackage().onePushedAtomEvent().terse()},
+                new Object[]{new String[]{"-one", "-terse", "-p", PACKAGE, "-s", TARGET,
+                        "244", "245"},
+                        TARGET_AND_OTHER, null,
+                        Expect.success(244, 245).extraPackage().onePushedAtomEvent().terse()},
+                new Object[]{new String[]{"-one", "-p", PACKAGE, "-terse", "-s", TARGET,
+                        "244", "245"},
+                        TARGET_AND_OTHER, null,
+                        Expect.success(244, 245).extraPackage().onePushedAtomEvent().terse()},
+                new Object[]{new String[]{"-one", "-p", PACKAGE, "-s", TARGET, "-terse",
+                        "244", "245"},
+                        TARGET_AND_OTHER, null,
+                        Expect.success(244, 245).extraPackage().onePushedAtomEvent().terse()}
+        );
+    }
+
+    private final TestDrive.Configuration mConfiguration = new TestDrive.Configuration();
+    private final TestDrive mTestDrive = new TestDrive();
+
+    private static Integer[] collectAtoms(TestDrive.Configuration configuration) {
+        Integer[] result = new Integer[configuration.mPulledAtoms.size()
+                + configuration.mPushedAtoms.size()];
+        int result_index = 0;
+        for (Integer atom : configuration.mPushedAtoms) {
+            result[result_index++] = atom;
+        }
+        for (Integer atom : configuration.mPulledAtoms) {
+            result[result_index++] = atom;
+        }
+        Arrays.sort(result);
+        return result;
+    }
+
+    @Test
+    public void testProcessArgs() {
+        boolean result = mTestDrive.processArgs(mConfiguration, mArgs, mConnectedDevices,
+                mDefaultDevice);
+        if (mExpect.success) {
+            assertTrue(result);
+            assertArrayEquals(mExpect.atoms, collectAtoms(mConfiguration));
+            assertEquals(mExpect.onePushedAtomEvent, mConfiguration.mOnePushedAtomEvent);
+            assertEquals(mExpect.target, mTestDrive.mDeviceSerial);
+            if (mExpect.terse) {
+                assertEquals(TestDrive.TerseDumper.class, mTestDrive.mDumper.getClass());
+            } else {
+                assertEquals(TestDrive.BasicDumper.class, mTestDrive.mDumper.getClass());
+            }
+        } else {
+            assertFalse(result);
+        }
+    }
+}
diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java
index 18e5c3d..77b3c81 100644
--- a/core/java/android/accessibilityservice/AccessibilityService.java
+++ b/core/java/android/accessibilityservice/AccessibilityService.java
@@ -501,6 +501,18 @@
      */
     public static final int GLOBAL_ACTION_KEYCODE_HEADSETHOOK = 10;
 
+    /**
+     * Action to trigger the Accessibility Button
+     * @hide
+     */
+    public static final int GLOBAL_ACTION_ACCESSIBILITY_BUTTON = 11;
+
+    /**
+     * Action to bring up the Accessibility Button's chooser menu
+     * @hide
+     */
+    public static final int GLOBAL_ACTION_ACCESSIBILITY_BUTTON_CHOOSER = 12;
+
     private static final String LOG_TAG = "AccessibilityService";
 
     /**
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index bea85a9..51eaff1 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -1170,6 +1170,8 @@
             } catch (IOException e) {
                 Slog.e(TAG, "Failed to duplicate heap dump file descriptor", e);
                 return;
+            } finally {
+                IoUtils.closeQuietly(fd);
             }
             dhd.finishCallback = finishCallback;
             sendMessage(H.DUMP_HEAP, dhd, 0, 0, true /*async*/);
diff --git a/core/java/android/app/AlarmManager.java b/core/java/android/app/AlarmManager.java
index 00627ef..ae8a2cb 100644
--- a/core/java/android/app/AlarmManager.java
+++ b/core/java/android/app/AlarmManager.java
@@ -31,7 +31,6 @@
 import android.os.RemoteException;
 import android.os.WorkSource;
 import android.text.TextUtils;
-import android.util.ArrayMap;
 import android.util.Log;
 import android.util.proto.ProtoOutputStream;
 
@@ -40,6 +39,8 @@
 import java.io.IOException;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.lang.ref.WeakReference;
+import java.util.WeakHashMap;
 
 /**
  * This class provides access to the system alarm services.  These allow you
@@ -222,26 +223,12 @@
             } catch (RemoteException ex) {
                 throw ex.rethrowFromSystemServer();
             }
-
-            synchronized (AlarmManager.class) {
-                if (sWrappers != null) {
-                    sWrappers.remove(mListener);
-                }
-            }
         }
 
         @Override
         public void doAlarm(IAlarmCompleteListener alarmManager) {
             mCompletion = alarmManager;
 
-            // Remove this listener from the wrapper cache first; the server side
-            // already considers it gone
-            synchronized (AlarmManager.class) {
-                if (sWrappers != null) {
-                    sWrappers.remove(mListener);
-                }
-            }
-
             mHandler.post(this);
         }
 
@@ -263,9 +250,14 @@
         }
     }
 
-    // Tracking of the OnAlarmListener -> wrapper mapping, for cancel() support.
-    // Access is synchronized on the AlarmManager class object.
-    private static ArrayMap<OnAlarmListener, ListenerWrapper> sWrappers;
+    /**
+     * Tracking of the OnAlarmListener -> ListenerWrapper mapping, for cancel() support.
+     * An entry is guaranteed to stay in this map as long as its ListenerWrapper is held by the
+     * server.
+     *
+     * <p>Access is synchronized on the AlarmManager class object.
+     */
+    private static WeakHashMap<OnAlarmListener, WeakReference<ListenerWrapper>> sWrappers;
 
     /**
      * package private on purpose
@@ -682,14 +674,17 @@
         if (listener != null) {
             synchronized (AlarmManager.class) {
                 if (sWrappers == null) {
-                    sWrappers = new ArrayMap<OnAlarmListener, ListenerWrapper>();
+                    sWrappers = new WeakHashMap<>();
                 }
 
-                recipientWrapper = sWrappers.get(listener);
+                final WeakReference<ListenerWrapper> weakRef = sWrappers.get(listener);
+                if (weakRef != null) {
+                    recipientWrapper = weakRef.get();
+                }
                 // no existing wrapper => build a new one
                 if (recipientWrapper == null) {
                     recipientWrapper = new ListenerWrapper(listener);
-                    sWrappers.put(listener, recipientWrapper);
+                    sWrappers.put(listener, new WeakReference<>(recipientWrapper));
                 }
             }
 
@@ -948,7 +943,10 @@
         ListenerWrapper wrapper = null;
         synchronized (AlarmManager.class) {
             if (sWrappers != null) {
-                wrapper = sWrappers.get(listener);
+                final WeakReference<ListenerWrapper> weakRef = sWrappers.get(listener);
+                if (weakRef != null) {
+                    wrapper = weakRef.get();
+                }
             }
         }
 
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index bb64c34..a4256a9 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -250,6 +250,10 @@
 
     private final Object mSync = new Object();
 
+    /**
+     * Whether this is created from {@link #createSystemContext(ActivityThread)} or
+     * {@link #createSystemUiContext(ContextImpl, int)} or any {@link Context} that system UI uses.
+     */
     private boolean mIsSystemOrSystemUiContext;
     private boolean mIsUiContext;
     private boolean mIsAssociatedWithDisplay;
@@ -1922,16 +1926,18 @@
     /** @hide */
     @Override
     public boolean isUiContext() {
-        return mIsSystemOrSystemUiContext || mIsUiContext || isSystemOrSystemUI();
+        return mIsSystemOrSystemUiContext || mIsUiContext;
     }
 
     /**
      * Temporary workaround to permit incorrect usages of Context by SystemUI.
-     * TODO(b/149790106): Fix usages and remove.
+     * TODO(b/147647877): Fix usages and remove.
      */
-    private boolean isSystemOrSystemUI() {
-        return ActivityThread.isSystem() || checkPermission("android.permission.STATUS_BAR_SERVICE",
-                Binder.getCallingPid(), Binder.getCallingUid()) == PERMISSION_GRANTED;
+    private static boolean isSystemOrSystemUI(Context context) {
+        return ActivityThread.isSystem() || context.checkPermission(
+                "android.permission.STATUS_BAR_SERVICE",
+                Binder.getCallingPid(),
+                Binder.getCallingUid()) == PERMISSION_GRANTED;
     }
 
     private static boolean isUiComponent(String name) {
@@ -2467,7 +2473,7 @@
 
     @Override
     public Display getDisplay() {
-        if (!mIsSystemOrSystemUiContext && !mIsAssociatedWithDisplay && !isSystemOrSystemUI()) {
+        if (!mIsSystemOrSystemUiContext && !mIsAssociatedWithDisplay) {
             throw new UnsupportedOperationException("Tried to obtain display from a Context not "
                     + "associated with  one. Only visual Contexts (such as Activity or one created "
                     + "with Context#createWindowContext) or ones created with "
@@ -2643,6 +2649,7 @@
         ContextImpl context = new ContextImpl(null, mainThread, packageInfo, null, null, null, null,
                 0, null, opPackageName);
         context.setResources(packageInfo.getResources());
+        context.mIsSystemOrSystemUiContext = isSystemOrSystemUI(context);
         return context;
     }
 
@@ -2672,6 +2679,7 @@
                 activityInfo.splitName, activityToken, null, 0, classLoader, null);
         context.mIsUiContext = true;
         context.mIsAssociatedWithDisplay = true;
+        context.mIsSystemOrSystemUiContext = isSystemOrSystemUI(context);
 
         // Clamp display ID to DEFAULT_DISPLAY if it is INVALID_DISPLAY.
         displayId = (displayId != Display.INVALID_DISPLAY) ? displayId : Display.DEFAULT_DISPLAY;
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index af02783..f26b136 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -3071,8 +3071,8 @@
         StringBuilder sb = new StringBuilder();
         sb.append("Notification(channel=");
         sb.append(getChannelId());
-        sb.append(" pri=");
-        sb.append(priority);
+        sb.append(" shortcut=");
+        sb.append(getShortcutId());
         sb.append(" contentView=");
         if (contentView != null) {
             sb.append(contentView.getPackage());
diff --git a/core/java/android/app/NotificationChannel.java b/core/java/android/app/NotificationChannel.java
index 9f8d3c4..cf2f769 100644
--- a/core/java/android/app/NotificationChannel.java
+++ b/core/java/android/app/NotificationChannel.java
@@ -161,6 +161,19 @@
             USER_LOCKED_ALLOW_BUBBLE
     };
 
+    /**
+     * @hide
+     */
+    public static final int DEFAULT_ALLOW_BUBBLE = -1;
+    /**
+     * @hide
+     */
+    public static final int ALLOW_BUBBLE_ON = 1;
+    /**
+     * @hide
+     */
+    public static final int ALLOW_BUBBLE_OFF = 0;
+
     private static final int DEFAULT_LIGHT_COLOR = 0;
     private static final int DEFAULT_VISIBILITY =
             NotificationManager.VISIBILITY_NO_OVERRIDE;
@@ -168,12 +181,6 @@
             NotificationManager.IMPORTANCE_UNSPECIFIED;
     private static final boolean DEFAULT_DELETED = false;
     private static final boolean DEFAULT_SHOW_BADGE = true;
-    /**
-     * @hide
-     */
-    public static final int DEFAULT_ALLOW_BUBBLE = -1;
-    private static final int ALLOW_BUBBLE_ON = 1;
-    private static final int ALLOW_BUBBLE_OFF = 0;
 
     @UnsupportedAppUsage
     private String mId;
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 4b05045..8073982 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -10251,6 +10251,9 @@
      * <p>
      * The confirm credentials screen can be created using
      * {@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent}.
+     * <p>
+     * Starting from Android R, the organization color will no longer be used as the background
+     * color of the confirm credentials screen.
      *
      * @param admin Which {@link DeviceAdminReceiver} this request is associated with.
      * @param color The 24bit (0xRRGGBB) representation of the color to be used.
diff --git a/core/java/android/app/role/RoleControllerManager.java b/core/java/android/app/role/RoleControllerManager.java
index 16ddbc1..96a4deb 100644
--- a/core/java/android/app/role/RoleControllerManager.java
+++ b/core/java/android/app/role/RoleControllerManager.java
@@ -21,6 +21,7 @@
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
 import android.annotation.SystemService;
+import android.annotation.TestApi;
 import android.app.ActivityThread;
 import android.content.ComponentName;
 import android.content.Context;
@@ -48,6 +49,7 @@
  * @hide
  */
 @SystemService(Context.ROLE_CONTROLLER_SERVICE)
+@TestApi
 public class RoleControllerManager {
 
     private static final String LOG_TAG = RoleControllerManager.class.getSimpleName();
@@ -73,6 +75,8 @@
      * PackageManagerService lock in constructor.
      *
      * @see #createWithInitializedRemoteServiceComponentName(Handler, Context)
+     *
+     * @hide
      */
     public static void initializeRemoteServiceComponentName(@NonNull Context context) {
         sRemoteServiceComponentName = getRemoteServiceComponentName(context);
@@ -83,6 +87,8 @@
      * name so that we can avoid acquiring the PackageManagerService lock in constructor.
      *
      * @see #initializeRemoteServiceComponentName(Context)
+     *
+     * @hide
      */
     @NonNull
     public static RoleControllerManager createWithInitializedRemoteServiceComponentName(
@@ -113,6 +119,9 @@
         }
     }
 
+    /**
+     * @hide
+     */
     public RoleControllerManager(@NonNull Context context) {
         this(getRemoteServiceComponentName(context), context.getMainThreadHandler(), context);
     }
@@ -128,6 +137,8 @@
 
     /**
      * @see RoleControllerService#onGrantDefaultRoles()
+     *
+     * @hide
      */
     public void grantDefaultRoles(@NonNull @CallbackExecutor Executor executor,
             @NonNull Consumer<Boolean> callback) {
@@ -141,6 +152,8 @@
 
     /**
      * @see RoleControllerService#onAddRoleHolder(String, String, int)
+     *
+     * @hide
      */
     public void onAddRoleHolder(@NonNull String roleName, @NonNull String packageName,
             @RoleManager.ManageHoldersFlags int flags, @NonNull RemoteCallback callback) {
@@ -155,6 +168,8 @@
 
     /**
      * @see RoleControllerService#onRemoveRoleHolder(String, String, int)
+     *
+     * @hide
      */
     public void onRemoveRoleHolder(@NonNull String roleName, @NonNull String packageName,
             @RoleManager.ManageHoldersFlags int flags, @NonNull RemoteCallback callback) {
@@ -169,6 +184,8 @@
 
     /**
      * @see RoleControllerService#onClearRoleHolders(String, int)
+     *
+     * @hide
      */
     public void onClearRoleHolders(@NonNull String roleName,
             @RoleManager.ManageHoldersFlags int flags, @NonNull RemoteCallback callback) {
@@ -186,6 +203,8 @@
      *
      * @deprecated Use {@link #isApplicationVisibleForRole(String, String, Executor, Consumer)}
      *             instead.
+     *
+     * @hide
      */
     @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
     public void isApplicationQualifiedForRole(@NonNull String roleName, @NonNull String packageName,
@@ -201,8 +220,11 @@
 
     /**
      * @see RoleControllerService#onIsApplicationVisibleForRole(String, String)
+     *
+     * @hide
      */
     @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
+    @TestApi
     public void isApplicationVisibleForRole(@NonNull String roleName, @NonNull String packageName,
             @NonNull @CallbackExecutor Executor executor, @NonNull Consumer<Boolean> callback) {
         AndroidFuture<Bundle> operation = mRemoteService.postAsync(service -> {
@@ -216,8 +238,11 @@
 
     /**
      * @see RoleControllerService#onIsRoleVisible(String)
+     *
+     * @hide
      */
     @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
+    @TestApi
     public void isRoleVisible(@NonNull String roleName,
             @NonNull @CallbackExecutor Executor executor, @NonNull Consumer<Boolean> callback) {
         AndroidFuture<Bundle> operation = mRemoteService.postAsync(service -> {
diff --git a/core/java/android/content/ClipData.java b/core/java/android/content/ClipData.java
index 1923bf3..2342165 100644
--- a/core/java/android/content/ClipData.java
+++ b/core/java/android/content/ClipData.java
@@ -27,7 +27,6 @@
 import android.net.Uri;
 import android.os.Build;
 import android.os.Parcel;
-import android.os.ParcelFileDescriptor;
 import android.os.Parcelable;
 import android.os.StrictMode;
 import android.text.Html;
@@ -171,11 +170,6 @@
     static final String[] MIMETYPES_TEXT_INTENT = new String[] {
         ClipDescription.MIMETYPE_TEXT_INTENT };
 
-    // Constants used in {@link #writeHtmlTextToParcel}.
-    static final int PARCEL_MAX_SIZE_BYTES = 800 * 1024;
-    static final int PARCEL_TYPE_STRING = 0;
-    static final int PARCEL_TYPE_PFD = 1;
-
     final ClipDescription mClipDescription;
 
     final Bitmap mIcon;
@@ -231,8 +225,7 @@
          * with an alternative HTML formatted representation.  You <em>must</em>
          * supply a plain text representation in addition to HTML text; coercion
          * will not be done from HTML formatted text into plain text.
-         * <p class="note"><strong>Note:</strong> It is strongly recommended to
-         * use content: URI for sharing large clip data. Starting on API 30,
+         * <p><strong>Warning:</strong> Use content: URI for sharing large clip data.
          * ClipData.Item doesn't accept an HTML text if it's larger than 800KB.
          * </p>
          */
@@ -1135,7 +1128,7 @@
         for (int i=0; i<N; i++) {
             Item item = mItems.get(i);
             TextUtils.writeToParcel(item.mText, dest, flags);
-            writeHtmlTextToParcel(item.mHtmlText, dest, flags);
+            dest.writeString8(item.mHtmlText);
             if (item.mIntent != null) {
                 dest.writeInt(1);
                 item.mIntent.writeToParcel(dest, flags);
@@ -1162,7 +1155,7 @@
         final int N = in.readInt();
         for (int i=0; i<N; i++) {
             CharSequence text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
-            String htmlText = readHtmlTextFromParcel(in);
+            String htmlText = in.readString8();
             Intent intent = in.readInt() != 0 ? Intent.CREATOR.createFromParcel(in) : null;
             Uri uri = in.readInt() != 0 ? Uri.CREATOR.createFromParcel(in) : null;
             mItems.add(new Item(text, htmlText, intent, uri));
@@ -1182,61 +1175,4 @@
                 return new ClipData[size];
             }
         };
-
-    /**
-     * Helper function for writing an HTML text into a parcel.
-     * If the text size is larger than 400KB, it writes the text to a file descriptor to prevent the
-     * parcel from exceeding 800KB binder size limit. {@link android.os.Binder#checkParcel()}
-     * Otherwise, it directly writes the text into the parcel.
-     * Note: This function is a workaround for existing applications that still use HTML for sharing
-     * large clip data. We will ask application developers to use content: URI instead and remove
-     * this function in API 30.
-     */
-    private static void writeHtmlTextToParcel(String text, Parcel dest, int flags) {
-        byte[] textData = (text != null) ? text.getBytes() : new byte[0];
-        if (textData.length > PARCEL_MAX_SIZE_BYTES / 2
-                && Build.VERSION.SDK_INT <= Build.VERSION_CODES.Q) {
-            try {
-                ParcelFileDescriptor pfd = ParcelFileDescriptor.fromData(textData, null);
-                dest.writeInt(PARCEL_TYPE_PFD);
-                dest.writeParcelable(pfd, flags);
-            } catch (IOException e) {
-                throw new IllegalStateException(
-                        "Error creating the shared memory area: " + e.toString());
-            }
-        } else {
-            dest.writeInt(PARCEL_TYPE_STRING);
-            dest.writeString8(text);
-        }
-    }
-
-    /**
-     * Reads a text written by writeHtmlTextToParcel.
-     */
-    private static String readHtmlTextFromParcel(Parcel in) {
-        if (in.readInt() == PARCEL_TYPE_STRING) {
-            return in.readString8();
-        }
-        ParcelFileDescriptor pfd =
-                in.readParcelable(ParcelFileDescriptor.class.getClassLoader());
-        if (pfd == null) {
-            throw new IllegalStateException("Error reading ParcelFileDescriptor from Parcel");
-        }
-        FileInputStream fis = new ParcelFileDescriptor.AutoCloseInputStream(pfd);
-        InputStreamReader reader = new InputStreamReader(fis);
-        StringBuilder builder = new StringBuilder();
-        char[] buffer = new char[4096];
-        int numRead;
-        try {
-            while ((numRead = reader.read(buffer)) != -1) {
-                builder.append(buffer, 0, numRead);
-            }
-            return builder.toString();
-        } catch (IOException e) {
-            throw new IllegalStateException(
-                    "Error reading data from ParcelFileDescriptor: "  + e.toString());
-        } finally {
-            IoUtils.closeQuietly(fis);
-        }
-    }
 }
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 8a57f82..addac98 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -6016,7 +6016,7 @@
 
                 // the last entry in pastSigningCertificates is the current signer, ignore it
                 for (int i = 0; i < pastSigningCertificates.length - 1; i++) {
-                    if (pastSigningCertificates[i].equals(oldDetails.signatures[i])) {
+                    if (pastSigningCertificates[i].equals(oldDetails.signatures[0])) {
                         return true;
                     }
                 }
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 93ce88b..d3464fd 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -784,10 +784,19 @@
         }
     }
 
-    // TODO(b/137800469): Add detailed docs explaining the inline suggestions process.
     /**
-     * This method should be implemented by subclass which supports displaying autofill inline
-     * suggestion.
+     * Called when Autofill is requesting an {@link InlineSuggestionsRequest} from the IME.
+     *
+     * <p>The Autofill Framework will first request the IME to create and send an
+     * {@link InlineSuggestionsRequest} back. Once Autofill Framework receives a valid request and
+     * also receives valid inline suggestions, they will be returned via
+     * {@link #onInlineSuggestionsResponse(InlineSuggestionsResponse)}.</p>
+     *
+     * <p>IME Lifecycle - The request will wait to be created after inputStarted</p>
+     *
+     * <p>If the IME wants to support displaying inline suggestions, they must set
+     * supportsInlineSuggestions in its XML and implement this method to return a valid
+     * {@link InlineSuggestionsRequest}.</p>
      *
      * @param uiExtras the extras that contain the UI renderer related information
      * @return an {@link InlineSuggestionsRequest} to be sent to Autofill.
diff --git a/core/java/android/net/TrafficStats.java b/core/java/android/net/TrafficStats.java
index 8108cf0..e7bba69 100644
--- a/core/java/android/net/TrafficStats.java
+++ b/core/java/android/net/TrafficStats.java
@@ -775,17 +775,10 @@
      * @see android.content.pm.ApplicationInfo#uid
      */
     public static long getUidTxBytes(int uid) {
-        // This isn't actually enforcing any security; it just returns the
-        // unsupported value. The real filtering is done at the kernel level.
-        final int callingUid = android.os.Process.myUid();
-        if (callingUid == android.os.Process.SYSTEM_UID || callingUid == uid) {
-            try {
-                return getStatsService().getUidStats(uid, TYPE_TX_BYTES);
-            } catch (RemoteException e) {
-                throw e.rethrowFromSystemServer();
-            }
-        } else {
-            return UNSUPPORTED;
+        try {
+            return getStatsService().getUidStats(uid, TYPE_TX_BYTES);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
         }
     }
 
@@ -808,17 +801,10 @@
      * @see android.content.pm.ApplicationInfo#uid
      */
     public static long getUidRxBytes(int uid) {
-        // This isn't actually enforcing any security; it just returns the
-        // unsupported value. The real filtering is done at the kernel level.
-        final int callingUid = android.os.Process.myUid();
-        if (callingUid == android.os.Process.SYSTEM_UID || callingUid == uid) {
-            try {
-                return getStatsService().getUidStats(uid, TYPE_RX_BYTES);
-            } catch (RemoteException e) {
-                throw e.rethrowFromSystemServer();
-            }
-        } else {
-            return UNSUPPORTED;
+        try {
+            return getStatsService().getUidStats(uid, TYPE_RX_BYTES);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
         }
     }
 
@@ -841,17 +827,10 @@
      * @see android.content.pm.ApplicationInfo#uid
      */
     public static long getUidTxPackets(int uid) {
-        // This isn't actually enforcing any security; it just returns the
-        // unsupported value. The real filtering is done at the kernel level.
-        final int callingUid = android.os.Process.myUid();
-        if (callingUid == android.os.Process.SYSTEM_UID || callingUid == uid) {
-            try {
-                return getStatsService().getUidStats(uid, TYPE_TX_PACKETS);
-            } catch (RemoteException e) {
-                throw e.rethrowFromSystemServer();
-            }
-        } else {
-            return UNSUPPORTED;
+        try {
+            return getStatsService().getUidStats(uid, TYPE_TX_PACKETS);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
         }
     }
 
@@ -874,17 +853,10 @@
      * @see android.content.pm.ApplicationInfo#uid
      */
     public static long getUidRxPackets(int uid) {
-        // This isn't actually enforcing any security; it just returns the
-        // unsupported value. The real filtering is done at the kernel level.
-        final int callingUid = android.os.Process.myUid();
-        if (callingUid == android.os.Process.SYSTEM_UID || callingUid == uid) {
-            try {
-                return getStatsService().getUidStats(uid, TYPE_RX_PACKETS);
-            } catch (RemoteException e) {
-                throw e.rethrowFromSystemServer();
-            }
-        } else {
-            return UNSUPPORTED;
+        try {
+            return getStatsService().getUidStats(uid, TYPE_RX_PACKETS);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
         }
     }
 
diff --git a/core/java/android/os/UpdateEngine.java b/core/java/android/os/UpdateEngine.java
index de274c0..e907e22 100644
--- a/core/java/android/os/UpdateEngine.java
+++ b/core/java/android/os/UpdateEngine.java
@@ -614,9 +614,6 @@
      * encountered. Device is corrupted, and future updates must not be applied.
      * The device cannot recover without flashing and factory resets.
      * </ul>
-     *
-     * @throws ServiceSpecificException if other transient errors has occurred.
-     * A reboot may or may not help resolving the issue.
      */
     @WorkerThread
     @ErrorCode
diff --git a/core/java/android/permission/Permissions.md b/core/java/android/permission/Permissions.md
index e116dc6..2bf08e2 100644
--- a/core/java/android/permission/Permissions.md
+++ b/core/java/android/permission/Permissions.md
@@ -728,7 +728,7 @@
 Almost always the protection level is app-op | something else, like
 [signature](#signature-permissions) (in the case above) or [privileged](#privileged-permissions).
 
-#### Checking a app-op permission
+#### Checking an app-op permission
 
 The `PermissionChecker` utility can check app-op permissions with the [same syntax as runtime
 permissions](#checking-a-runtime-permission).
@@ -764,7 +764,7 @@
 }
 ```
 
-#### Granting a app-op permission
+#### Granting an app-op permission
 
 The permission's grant state is only considered if the app-op's mode is `MODE_DEFAULT`. This
 allows to have default grants while still being overridden by the app-op.
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index fbd6cba..20bc792 100755
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -13830,16 +13830,6 @@
                 "show_notification_channel_warnings";
 
         /**
-         * When enabled, requires all notifications in the conversation section to be backed
-         * by a long-lived sharing shortcut
-         *
-         * The value 1 - require a shortcut, 0 - do not require a shortcut
-         * @hide
-         */
-        public static final String REQUIRE_SHORTCUTS_FOR_CONVERSATIONS =
-                "require_shortcuts_for_conversations";
-
-        /**
          * Whether cell is enabled/disabled
          * @hide
          */
diff --git a/core/java/android/service/autofill/FillRequest.java b/core/java/android/service/autofill/FillRequest.java
index 8f858d5..d94160c 100644
--- a/core/java/android/service/autofill/FillRequest.java
+++ b/core/java/android/service/autofill/FillRequest.java
@@ -127,10 +127,16 @@
     private final @RequestFlags int mFlags;
 
     /**
-     * Gets the {@link android.view.inputmethod.InlineSuggestionsRequest} associated
+     * Gets the {@link InlineSuggestionsRequest} associated
      * with this request.
      *
-     * TODO(b/137800469): Add more doc describing how to handle the inline suggestions request.
+     * <p>Autofill Framework will send a {@code @non-null} {@link InlineSuggestionsRequest} if
+     * currently inline suggestions are supported and can be displayed. If the Autofill service
+     * wants to show inline suggestions, they may return {@link Dataset} with valid
+     * {@link InlinePresentation}.</p>
+     *
+     * <p>The Autofill Service must set supportsInlineSuggestions in its XML to enable support
+     * for inline suggestions.</p>
      *
      * @return the suggestionspec
      */
@@ -142,7 +148,7 @@
 
 
 
-    // Code below generated by codegen v1.0.14.
+    // Code below generated by codegen v1.0.15.
     //
     // DO NOT MODIFY!
     // CHECKSTYLE:OFF Generated code
@@ -212,10 +218,16 @@
      *   @return any combination of {@link #FLAG_MANUAL_REQUEST} and
      *           {@link #FLAG_COMPATIBILITY_MODE_REQUEST}.
      * @param inlineSuggestionsRequest
-     *   Gets the {@link android.view.inputmethod.InlineSuggestionsRequest} associated
+     *   Gets the {@link InlineSuggestionsRequest} associated
      *   with this request.
      *
-     *   TODO(b/137800469): Add more doc describing how to handle the inline suggestions request.
+     *   <p>Autofill Framework will send a {@code @non-null} {@link InlineSuggestionsRequest} if
+     *   currently inline suggestions are supported and can be displayed. If the Autofill service
+     *   wants to show inline suggestions, they may return {@link Dataset} with valid
+     *   {@link InlinePresentation}.</p>
+     *
+     *   <p>The Autofill Service must set supportsInlineSuggestions in its XML to enable support
+     *   for inline suggestions.</p>
      * @hide
      */
     @DataClass.Generated.Member
@@ -292,10 +304,16 @@
     }
 
     /**
-     * Gets the {@link android.view.inputmethod.InlineSuggestionsRequest} associated
+     * Gets the {@link InlineSuggestionsRequest} associated
      * with this request.
      *
-     * TODO(b/137800469): Add more doc describing how to handle the inline suggestions request.
+     * <p>Autofill Framework will send a {@code @non-null} {@link InlineSuggestionsRequest} if
+     * currently inline suggestions are supported and can be displayed. If the Autofill service
+     * wants to show inline suggestions, they may return {@link Dataset} with valid
+     * {@link InlinePresentation}.</p>
+     *
+     * <p>The Autofill Service must set supportsInlineSuggestions in its XML to enable support
+     * for inline suggestions.</p>
      *
      * @return the suggestionspec
      */
@@ -387,8 +405,8 @@
     };
 
     @DataClass.Generated(
-            time = 1583196707026L,
-            codegenVersion = "1.0.14",
+            time = 1588119440090L,
+            codegenVersion = "1.0.15",
             sourceFile = "frameworks/base/core/java/android/service/autofill/FillRequest.java",
             inputSignatures = "public static final @android.service.autofill.FillRequest.RequestFlags int FLAG_MANUAL_REQUEST\npublic static final @android.service.autofill.FillRequest.RequestFlags int FLAG_COMPATIBILITY_MODE_REQUEST\npublic static final @android.service.autofill.FillRequest.RequestFlags int FLAG_PASSWORD_INPUT_TYPE\npublic static final  int INVALID_REQUEST_ID\nprivate final  int mId\nprivate final @android.annotation.NonNull java.util.List<android.service.autofill.FillContext> mFillContexts\nprivate final @android.annotation.Nullable android.os.Bundle mClientState\nprivate final @android.service.autofill.FillRequest.RequestFlags int mFlags\nprivate final @android.annotation.Nullable android.view.inputmethod.InlineSuggestionsRequest mInlineSuggestionsRequest\nprivate  void onConstructed()\nclass FillRequest extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genHiddenConstructor=true, genHiddenConstDefs=true)")
     @Deprecated
diff --git a/core/java/android/service/autofill/IInlineSuggestionUiCallback.aidl b/core/java/android/service/autofill/IInlineSuggestionUiCallback.aidl
index bed4302..172cfef 100644
--- a/core/java/android/service/autofill/IInlineSuggestionUiCallback.aidl
+++ b/core/java/android/service/autofill/IInlineSuggestionUiCallback.aidl
@@ -28,7 +28,7 @@
 oneway interface IInlineSuggestionUiCallback {
     void onClick();
     void onLongClick();
-    void onContent(in SurfaceControlViewHost.SurfacePackage surface);
+    void onContent(in SurfaceControlViewHost.SurfacePackage surface, int width, int height);
     void onError();
     void onTransferTouchFocusToImeWindow(in IBinder sourceInputToken, int displayId);
     void onStartIntentSender(in IntentSender intentSender);
diff --git a/core/java/android/service/autofill/InlineSuggestionRenderService.java b/core/java/android/service/autofill/InlineSuggestionRenderService.java
index d3ad1c6..19961e5 100644
--- a/core/java/android/service/autofill/InlineSuggestionRenderService.java
+++ b/core/java/android/service/autofill/InlineSuggestionRenderService.java
@@ -22,7 +22,6 @@
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.app.Service;
-import android.app.slice.Slice;
 import android.content.Intent;
 import android.content.IntentSender;
 import android.graphics.PixelFormat;
@@ -34,14 +33,15 @@
 import android.os.RemoteCallback;
 import android.os.RemoteException;
 import android.util.Log;
+import android.util.Size;
 import android.view.Display;
 import android.view.SurfaceControlViewHost;
 import android.view.View;
+import android.view.ViewGroup;
 import android.view.WindowManager;
 
 /**
- * A service that renders an inline presentation given the {@link InlinePresentation} containing
- * a {@link Slice} built using the {@link androidx.autofill.AutofillSliceBuilder}.
+ * A service that renders an inline presentation view given the {@link InlinePresentation}.
  *
  * {@hide}
  */
@@ -55,8 +55,8 @@
      * The {@link Intent} that must be declared as handled by the service.
      *
      * <p>To be supported, the service must also require the
-     * {@link android.Manifest.permission#BIND_INLINE_SUGGESTION_RENDER_SERVICE} permission so
-     * that other applications can not abuse it.
+     * {@link android.Manifest.permission#BIND_INLINE_SUGGESTION_RENDER_SERVICE} permission so that
+     * other applications can not abuse it.
      */
     public static final String SERVICE_INTERFACE =
             "android.service.autofill.InlineSuggestionRenderService";
@@ -65,6 +65,45 @@
 
     private IInlineSuggestionUiCallback mCallback;
 
+    /**
+     * If the specified {@code width}/{@code height} is an exact value, then it will be returned as
+     * is, otherwise the method tries to measure a size that is just large enough to fit the view
+     * content, within constraints posed by {@code minSize} and {@code maxSize}.
+     *
+     * @param view    the view for which we measure the size
+     * @param width   the expected width of the view, either an exact value or {@link
+     *                ViewGroup.LayoutParams#WRAP_CONTENT}
+     * @param height  the expected width of the view, either an exact value or {@link
+     *                ViewGroup.LayoutParams#WRAP_CONTENT}
+     * @param minSize the lower bound of the size to be returned
+     * @param maxSize the upper bound of the size to be returned
+     * @return the measured size of the view based on the given size constraints.
+     */
+    private Size measuredSize(@NonNull View view, int width, int height, @NonNull Size minSize,
+            @NonNull Size maxSize) {
+        if (width != ViewGroup.LayoutParams.WRAP_CONTENT
+                && height != ViewGroup.LayoutParams.WRAP_CONTENT) {
+            return new Size(width, height);
+        }
+        int widthMeasureSpec;
+        if (width == ViewGroup.LayoutParams.WRAP_CONTENT) {
+            widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(maxSize.getWidth(),
+                    View.MeasureSpec.AT_MOST);
+        } else {
+            widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY);
+        }
+        int heightMeasureSpec;
+        if (height == ViewGroup.LayoutParams.WRAP_CONTENT) {
+            heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(maxSize.getHeight(),
+                    View.MeasureSpec.AT_MOST);
+        } else {
+            heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.EXACTLY);
+        }
+        view.measure(widthMeasureSpec, heightMeasureSpec);
+        return new Size(Math.max(view.getMeasuredWidth(), minSize.getWidth()),
+                Math.max(view.getMeasuredHeight(), minSize.getHeight()));
+    }
+
     private void handleRenderSuggestion(IInlineSuggestionUiCallback callback,
             InlinePresentation presentation, int width, int height, IBinder hostInputToken,
             int displayId) {
@@ -82,6 +121,7 @@
         try {
             final View suggestionView = onRenderSuggestion(presentation, width, height);
             if (suggestionView == null) {
+                Log.w(TAG, "ExtServices failed to render the inline suggestion view.");
                 try {
                     callback.onError();
                 } catch (RemoteException e) {
@@ -90,13 +130,16 @@
                 return;
             }
             mCallback = callback;
+            final Size measuredSize = measuredSize(suggestionView, width, height,
+                    presentation.getInlinePresentationSpec().getMinSize(),
+                    presentation.getInlinePresentationSpec().getMaxSize());
+            Log.v(TAG, "width=" + width + ", height=" + height + ", measuredSize=" + measuredSize);
 
             final InlineSuggestionRoot suggestionRoot = new InlineSuggestionRoot(this, callback);
             suggestionRoot.addView(suggestionView);
-            WindowManager.LayoutParams lp =
-                    new WindowManager.LayoutParams(width, height,
-                            WindowManager.LayoutParams.TYPE_APPLICATION, 0,
-                            PixelFormat.TRANSPARENT);
+            WindowManager.LayoutParams lp = new WindowManager.LayoutParams(measuredSize.getWidth(),
+                    measuredSize.getHeight(), WindowManager.LayoutParams.TYPE_APPLICATION, 0,
+                    PixelFormat.TRANSPARENT);
 
             final SurfaceControlViewHost host = new SurfaceControlViewHost(this, getDisplay(),
                     hostInputToken);
@@ -124,7 +167,8 @@
                 return true;
             });
 
-            sendResult(callback, host.getSurfacePackage());
+            sendResult(callback, host.getSurfacePackage(), measuredSize.getWidth(),
+                    measuredSize.getHeight());
         } finally {
             updateDisplay(Display.DEFAULT_DISPLAY);
         }
@@ -136,9 +180,9 @@
     }
 
     private void sendResult(@NonNull IInlineSuggestionUiCallback callback,
-            @Nullable SurfaceControlViewHost.SurfacePackage surface) {
+            @Nullable SurfaceControlViewHost.SurfacePackage surface, int width, int height) {
         try {
-            callback.onContent(surface);
+            callback.onContent(surface, width, height);
         } catch (RemoteException e) {
             Log.w(TAG, "RemoteException calling onContent(" + surface + ")");
         }
@@ -154,10 +198,10 @@
                 public void renderSuggestion(@NonNull IInlineSuggestionUiCallback callback,
                         @NonNull InlinePresentation presentation, int width, int height,
                         @Nullable IBinder hostInputToken, int displayId) {
-                    mHandler.sendMessage(obtainMessage(
-                            InlineSuggestionRenderService::handleRenderSuggestion,
-                            InlineSuggestionRenderService.this, callback, presentation,
-                            width, height, hostInputToken, displayId));
+                    mHandler.sendMessage(
+                            obtainMessage(InlineSuggestionRenderService::handleRenderSuggestion,
+                                    InlineSuggestionRenderService.this, callback, presentation,
+                                    width, height, hostInputToken, displayId));
                 }
 
                 @Override
@@ -176,7 +220,8 @@
     /**
      * Starts the {@link IntentSender} from the client app.
      *
-     * @param intentSender the {@link IntentSender} to start the attribution UI from the client app.
+     * @param intentSender the {@link IntentSender} to start the attribution UI from the client
+     *                     app.
      */
     public final void startIntentSender(@NonNull IntentSender intentSender) {
         if (mCallback == null) return;
@@ -188,8 +233,8 @@
     }
 
     /**
-     *  Returns the metadata about the renderer. Returns {@code Bundle.Empty} if no metadata is
-     *  provided.
+     * Returns the metadata about the renderer. Returns {@code Bundle.Empty} if no metadata is
+     * provided.
      */
     @NonNull
     public Bundle onGetInlineSuggestionsRendererInfo() {
@@ -200,8 +245,8 @@
      * Renders the slice into a view.
      */
     @Nullable
-    public View onRenderSuggestion(@NonNull InlinePresentation presentation,
-            int width, int height) {
+    public View onRenderSuggestion(@NonNull InlinePresentation presentation, int width,
+            int height) {
         Log.e(TAG, "service implementation (" + getClass() + " does not implement "
                 + "onRenderSuggestion()");
         return null;
diff --git a/core/java/android/service/notification/StatusBarNotification.java b/core/java/android/service/notification/StatusBarNotification.java
index 5c43f8f..08d9905 100644
--- a/core/java/android/service/notification/StatusBarNotification.java
+++ b/core/java/android/service/notification/StatusBarNotification.java
@@ -486,15 +486,8 @@
     /**
      * @hide
      */
-    public String getShortcutId(Context context) {
-        String conversationId = getNotification().getShortcutId();
-        if (TextUtils.isEmpty(conversationId)
-                && (Settings.Global.getInt(context.getContentResolver(),
-                Settings.Global.REQUIRE_SHORTCUTS_FOR_CONVERSATIONS, 0) == 0)
-                && getNotification().getNotificationStyle() == Notification.MessagingStyle.class) {
-            conversationId = getId() + getTag() + PLACEHOLDER_CONVERSATION_ID;
-        }
-        return conversationId;
+    public String getShortcutId() {
+        return getNotification().getShortcutId();
     }
 
     /**
diff --git a/core/java/android/view/DisplayAdjustments.java b/core/java/android/view/DisplayAdjustments.java
index 834dd7b..27c2d5c 100644
--- a/core/java/android/view/DisplayAdjustments.java
+++ b/core/java/android/view/DisplayAdjustments.java
@@ -16,6 +16,8 @@
 
 package android.view;
 
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.res.CompatibilityInfo;
 import android.content.res.Configuration;
@@ -27,25 +29,25 @@
     public static final DisplayAdjustments DEFAULT_DISPLAY_ADJUSTMENTS = new DisplayAdjustments();
 
     private volatile CompatibilityInfo mCompatInfo = CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO;
-    private Configuration mConfiguration;
+    private final Configuration mConfiguration = new Configuration(Configuration.EMPTY);
 
     @UnsupportedAppUsage
     public DisplayAdjustments() {
     }
 
-    public DisplayAdjustments(Configuration configuration) {
-        mConfiguration = new Configuration(configuration != null
-                ? configuration : Configuration.EMPTY);
+    public DisplayAdjustments(@Nullable Configuration configuration) {
+        if (configuration != null) {
+            mConfiguration.setTo(configuration);
+        }
     }
 
-    public DisplayAdjustments(DisplayAdjustments daj) {
+    public DisplayAdjustments(@NonNull DisplayAdjustments daj) {
         setCompatibilityInfo(daj.mCompatInfo);
-        mConfiguration = new Configuration(daj.mConfiguration != null
-                ? daj.mConfiguration : Configuration.EMPTY);
+        mConfiguration.setTo(daj.getConfiguration());
     }
 
     @UnsupportedAppUsage
-    public void setCompatibilityInfo(CompatibilityInfo compatInfo) {
+    public void setCompatibilityInfo(@Nullable CompatibilityInfo compatInfo) {
         if (this == DEFAULT_DISPLAY_ADJUSTMENTS) {
             throw new IllegalArgumentException(
                     "setCompatbilityInfo: Cannot modify DEFAULT_DISPLAY_ADJUSTMENTS");
@@ -62,7 +64,13 @@
         return mCompatInfo;
     }
 
-    public void setConfiguration(Configuration configuration) {
+    /**
+     * Updates the configuration for the DisplayAdjustments with new configuration.
+     * Default to EMPTY configuration if new configuration is {@code null}
+     * @param configuration new configuration
+     * @throws IllegalArgumentException if trying to modify DEFAULT_DISPLAY_ADJUSTMENTS
+     */
+    public void setConfiguration(@Nullable Configuration configuration) {
         if (this == DEFAULT_DISPLAY_ADJUSTMENTS) {
             throw new IllegalArgumentException(
                     "setConfiguration: Cannot modify DEFAULT_DISPLAY_ADJUSTMENTS");
@@ -71,6 +79,7 @@
     }
 
     @UnsupportedAppUsage
+    @NonNull
     public Configuration getConfiguration() {
         return mConfiguration;
     }
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index b3b53f0..58597cf 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -161,6 +161,14 @@
     SurfaceControl addShellRoot(int displayId, IWindow client, int windowType);
 
     /**
+     * Sets the window token sent to accessibility for a particular shell root. The
+     * displayId and windowType identify which shell-root to update.
+     *
+     * @param target The IWindow that accessibility service interfaces with.
+     */
+    void setShellRootAccessibilityWindow(int displayId, int windowType, IWindow target);
+
+    /**
      * Like overridePendingAppTransitionMultiThumb, but uses a future to supply the specs. This is
      * used for recents, where generating the thumbnails of the specs takes a non-trivial amount of
      * time, so we want to move that off the critical path for starting the new activity.
diff --git a/core/java/android/view/ImeInsetsSourceConsumer.java b/core/java/android/view/ImeInsetsSourceConsumer.java
index df89130..38b6c03 100644
--- a/core/java/android/view/ImeInsetsSourceConsumer.java
+++ b/core/java/android/view/ImeInsetsSourceConsumer.java
@@ -217,6 +217,6 @@
     }
 
     private InputMethodManager getImm() {
-        return mController.getViewRoot().mContext.getSystemService(InputMethodManager.class);
+        return mController.getHost().getInputMethodManager();
     }
 }
diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java
index f135328..8876079 100644
--- a/core/java/android/view/InsetsController.java
+++ b/core/java/android/view/InsetsController.java
@@ -37,9 +37,7 @@
 import android.graphics.Rect;
 import android.os.CancellationSignal;
 import android.os.Handler;
-import android.os.RemoteException;
 import android.util.ArraySet;
-import android.util.Log;
 import android.util.Pair;
 import android.util.SparseArray;
 import android.view.InsetsSourceConsumer.ShowResult;
@@ -53,6 +51,7 @@
 import android.view.animation.Interpolator;
 import android.view.animation.LinearInterpolator;
 import android.view.animation.PathInterpolator;
+import android.view.inputmethod.InputMethodManager;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.graphics.SfVsyncFrameCallbackProvider;
@@ -72,6 +71,91 @@
  */
 public class InsetsController implements WindowInsetsController, InsetsAnimationControlCallbacks {
 
+    public interface Host {
+
+        Handler getHandler();
+
+        /**
+         * Notifies host that {@link InsetsController#getState()} has changed.
+         */
+        void notifyInsetsChanged();
+
+        void dispatchWindowInsetsAnimationPrepare(@NonNull WindowInsetsAnimation animation);
+        Bounds dispatchWindowInsetsAnimationStart(
+                @NonNull WindowInsetsAnimation animation, @NonNull Bounds bounds);
+        WindowInsets dispatchWindowInsetsAnimationProgress(@NonNull WindowInsets insets,
+                @NonNull List<WindowInsetsAnimation> runningAnimations);
+        void dispatchWindowInsetsAnimationEnd(@NonNull WindowInsetsAnimation animation);
+
+        /**
+         * Requests host to apply surface params in synchronized manner.
+         */
+        void applySurfaceParams(final SyncRtSurfaceTransactionApplier.SurfaceParams... params);
+
+        /**
+         * @see ViewRootImpl#updateCompatSysUiVisibility(int, boolean, boolean)
+         */
+        void updateCompatSysUiVisibility(@InternalInsetsType int type, boolean visible,
+                boolean hasControl);
+
+        /**
+         * Called when insets have been modified by the client and should be reported back to WM.
+         */
+        void onInsetsModified(InsetsState insetsState);
+
+        /**
+         * @return Whether the host has any callbacks it wants to synchronize the animations with.
+         *         If there are no callbacks, the animation will be off-loaded to another thread and
+         *         slightly different animation curves are picked.
+         */
+        boolean hasAnimationCallbacks();
+
+        /**
+         * @see WindowInsetsController#setSystemBarsAppearance
+         */
+        void setSystemBarsAppearance(@Appearance int appearance, @Appearance int mask);
+
+        /**
+         * @see WindowInsetsController#getSystemBarsAppearance()
+         */
+        @Appearance int getSystemBarsAppearance();
+
+        /**
+         * @see WindowInsetsController#setSystemBarsBehavior
+         */
+        void setSystemBarsBehavior(@Behavior int behavior);
+
+        /**
+         * @see WindowInsetsController#getSystemBarsBehavior
+         */
+        @Behavior int getSystemBarsBehavior();
+
+        /**
+         * Releases a surface and ensure that this is done after {@link #applySurfaceParams} has
+         * finished applying params.
+         */
+        void releaseSurfaceControlFromRt(SurfaceControl surfaceControl);
+
+        /**
+         * If this host is a view hierarchy, adds a pre-draw runnable to ensure proper ordering as
+         * described in {@link WindowInsetsAnimation.Callback#onPrepare}.
+         *
+         * If this host isn't a view hierarchy, the runnable can be executed immediately.
+         */
+        void addOnPreDrawRunnable(Runnable r);
+
+        /**
+         * Adds a runnbale to be executed during {@link Choreographer#CALLBACK_INSETS_ANIMATION}
+         * phase.
+         */
+        void postInsetsAnimationCallback(Runnable r);
+
+        /**
+         * Obtains {@link InputMethodManager} instance from host.
+         */
+        InputMethodManager getInputMethodManager();
+    }
+
     private static final int ANIMATION_DURATION_SHOW_MS = 275;
     private static final int ANIMATION_DURATION_HIDE_MS = 340;
 
@@ -346,7 +430,7 @@
     private final Rect mFrame = new Rect();
     private final BiFunction<InsetsController, Integer, InsetsSourceConsumer> mConsumerCreator;
     private final SparseArray<InsetsSourceConsumer> mSourceConsumers = new SparseArray<>();
-    private final ViewRootImpl mViewRoot;
+    private final Host mHost;
     private final Handler mHandler;
 
     private final SparseArray<InsetsSourceControl> mTmpControlArray = new SparseArray<>();
@@ -370,8 +454,6 @@
     private boolean mStartingAnimation;
     private int mCaptionInsetsHeight = 0;
 
-    private SyncRtSurfaceTransactionApplier mApplier;
-
     private Runnable mPendingControlTimeout = this::abortPendingImeControlRequest;
     private final ArrayList<OnControllableInsetsChangedListener> mControllableInsetsChangedListeners
             = new ArrayList<>();
@@ -379,22 +461,22 @@
     /** Set of inset types for which an animation was started since last resetting this field */
     private @InsetsType int mLastStartedAnimTypes;
 
-    public InsetsController(ViewRootImpl viewRoot) {
-        this(viewRoot, (controller, type) -> {
+    public InsetsController(Host host) {
+        this(host, (controller, type) -> {
             if (type == ITYPE_IME) {
                 return new ImeInsetsSourceConsumer(controller.mState, Transaction::new, controller);
             } else {
                 return new InsetsSourceConsumer(type, controller.mState, Transaction::new,
                         controller);
             }
-        }, viewRoot.mHandler);
+        }, host.getHandler());
     }
 
     @VisibleForTesting
-    public InsetsController(ViewRootImpl viewRoot,
+    public InsetsController(Host host,
             BiFunction<InsetsController, Integer, InsetsSourceConsumer> consumerCreator,
             Handler handler) {
-        mViewRoot = viewRoot;
+        mHost = host;
         mConsumerCreator = consumerCreator;
         mHandler = handler;
         mAnimCallback = () -> {
@@ -402,10 +484,6 @@
             if (mRunningAnimations.isEmpty()) {
                 return;
             }
-            if (mViewRoot.mView == null) {
-                // The view has already detached from window.
-                return;
-            }
 
             mTmpFinishedControls.clear();
             mTmpRunningAnims.clear();
@@ -433,8 +511,7 @@
                     mLastInsets.isRound(), mLastInsets.shouldAlwaysConsumeSystemBars(),
                     mLastDisplayCutout, mLastLegacySoftInputMode, mLastLegacySystemUiFlags,
                     null /* typeSideMap */);
-            mViewRoot.mView.dispatchWindowInsetsAnimationProgress(insets,
-                    mUnmodifiableTmpRunningAnims);
+            mHost.dispatchWindowInsetsAnimationProgress(insets, mUnmodifiableTmpRunningAnims);
 
             for (int i = mTmpFinishedControls.size() - 1; i >= 0; i--) {
                 dispatchAnimationEnd(mTmpFinishedControls.get(i).getAnimation());
@@ -447,7 +524,7 @@
         if (mFrame.equals(frame)) {
             return;
         }
-        mViewRoot.notifyInsetsChanged();
+        mHost.notifyInsetsChanged();
         mFrame.set(frame);
     }
 
@@ -476,7 +553,7 @@
         mLastDispachedState.set(state, true /* copySources */);
         applyLocalVisibilityOverride();
         if (localStateChanged) {
-            mViewRoot.notifyInsetsChanged();
+            mHost.notifyInsetsChanged();
         }
         if (!mState.equals(mLastDispachedState, true /* excludingCaptionInsets */)) {
             sendStateToWindowManager();
@@ -733,7 +810,7 @@
         final InsetsAnimationControlRunner runner = useInsetsAnimationThread
                 ? new InsetsAnimationThreadControlRunner(controls,
                         frame, mState, listener, typesReady, this, durationMs, interpolator,
-                        animationType, mViewRoot.mHandler)
+                        animationType, mHost.getHandler())
                 : new InsetsAnimationControlImpl(controls,
                         frame, mState, listener, typesReady, this, durationMs, interpolator,
                         animationType);
@@ -860,21 +937,7 @@
 
     @Override
     public void applySurfaceParams(final SyncRtSurfaceTransactionApplier.SurfaceParams... params) {
-        if (mApplier == null) {
-            if (mViewRoot.mView == null) {
-                throw new IllegalStateException("View of the ViewRootImpl is not initiated.");
-            }
-            mApplier = new SyncRtSurfaceTransactionApplier(mViewRoot.mView);
-        }
-        if (mViewRoot.mView.isHardwareAccelerated()) {
-            mApplier.scheduleApply(false /* earlyWakeup */, params);
-        } else {
-            // Window doesn't support hardware acceleration, no synchronization for now.
-            // TODO(b/149342281): use mViewRoot.mSurface.getNextFrameNumber() to sync on every
-            //  frame instead.
-            mApplier.applyParams(new Transaction(), -1 /* frame */, false /* earlyWakeup */,
-                    params);
-        }
+        mHost.applySurfaceParams(params);
     }
 
     void notifyControlRevoked(InsetsSourceConsumer consumer) {
@@ -900,7 +963,7 @@
                 ArraySet<Integer> types = toInternalType(control.getTypes());
                 for (int j = types.size() - 1; j >= 0; j--) {
                     if (getSourceConsumer(types.valueAt(j)).notifyAnimationFinished()) {
-                        mViewRoot.notifyInsetsChanged();
+                        mHost.notifyInsetsChanged();
                     }
                 }
                 break;
@@ -928,7 +991,7 @@
 
     @VisibleForTesting
     public void notifyVisibilityChanged() {
-        mViewRoot.notifyInsetsChanged();
+        mHost.notifyInsetsChanged();
         sendStateToWindowManager();
     }
 
@@ -937,7 +1000,7 @@
      */
     public void updateCompatSysUiVisibility(@InternalInsetsType int type, boolean visible,
             boolean hasControl) {
-        mViewRoot.updateCompatSysUiVisibility(type, visible, hasControl);
+        mHost.updateCompatSysUiVisibility(type, visible, hasControl);
     }
 
     /**
@@ -954,10 +1017,6 @@
         getSourceConsumer(ITYPE_IME).onWindowFocusLost();
     }
 
-    ViewRootImpl getViewRoot() {
-        return mViewRoot;
-    }
-
     /**
      * Used by {@link ImeInsetsSourceConsumer} when IME decides to be shown/hidden.
      * @hide
@@ -994,12 +1053,7 @@
                 tmpState.addSource(mState.getSource(consumer.getType()));
             }
         }
-
-        try {
-            mViewRoot.mWindowSession.insetsModified(mViewRoot.mWindow, tmpState);
-        } catch (RemoteException e) {
-            Log.e(TAG, "Failed to call insetsModified", e);
-        }
+        mHost.onInsetsModified(tmpState);
     }
 
     @VisibleForTesting
@@ -1009,7 +1063,7 @@
             return;
         }
 
-        boolean hasAnimationCallbacks = hasAnimationCallbacks();
+        boolean hasAnimationCallbacks = mHost.hasAnimationCallbacks();
         final InternalAnimationControlListener listener =
                 new InternalAnimationControlListener(show, hasAnimationCallbacks, types);
 
@@ -1024,13 +1078,6 @@
 
     }
 
-    private boolean hasAnimationCallbacks() {
-        if (mViewRoot.mView == null) {
-            return false;
-        }
-        return mViewRoot.mView.hasWindowInsetsAnimationCallback();
-    }
-
     private void hideDirectly(
             @InsetsType int types, boolean animationFinished, @AnimationType int animationType) {
         final ArraySet<Integer> internalTypes = InsetsState.toInternalType(types);
@@ -1064,37 +1111,28 @@
     public void startAnimation(InsetsAnimationControlImpl controller,
             WindowInsetsAnimationControlListener listener, int types,
             WindowInsetsAnimation animation, Bounds bounds) {
-        if (mViewRoot.mView == null) {
-            return;
-        }
-        mViewRoot.mView.dispatchWindowInsetsAnimationPrepare(animation);
-        mViewRoot.mView.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() {
-            @Override
-            public boolean onPreDraw() {
-                mViewRoot.mView.getViewTreeObserver().removeOnPreDrawListener(this);
-                if (controller.isCancelled()) {
-                    return true;
-                }
-                for (int i = mRunningAnimations.size() - 1; i >= 0; i--) {
-                    RunningAnimation runningAnimation = mRunningAnimations.get(i);
-                    if (runningAnimation.runner == controller) {
-                        runningAnimation.startDispatched = true;
-                    }
-                }
-                mViewRoot.mView.dispatchWindowInsetsAnimationStart(animation, bounds);
-                mStartingAnimation = true;
-                controller.mReadyDispatched = true;
-                listener.onReady(controller, types);
-                mStartingAnimation = false;
-                return true;
+        mHost.dispatchWindowInsetsAnimationPrepare(animation);
+        mHost.addOnPreDrawRunnable(() -> {
+            if (controller.isCancelled()) {
+                return;
             }
+            for (int i = mRunningAnimations.size() - 1; i >= 0; i--) {
+                RunningAnimation runningAnimation = mRunningAnimations.get(i);
+                if (runningAnimation.runner == controller) {
+                    runningAnimation.startDispatched = true;
+                }
+            }
+            mHost.dispatchWindowInsetsAnimationStart(animation, bounds);
+            mStartingAnimation = true;
+            controller.mReadyDispatched = true;
+            listener.onReady(controller, types);
+            mStartingAnimation = false;
         });
-        mViewRoot.mView.invalidate();
     }
 
     @VisibleForTesting
     public void dispatchAnimationEnd(WindowInsetsAnimation animation) {
-        mViewRoot.mView.dispatchWindowInsetsAnimationEnd(animation);
+        mHost.dispatchWindowInsetsAnimationEnd(animation);
     }
 
     @VisibleForTesting
@@ -1106,30 +1144,19 @@
             return;
         }
         if (!mAnimCallbackScheduled) {
-            mViewRoot.mChoreographer.postCallback(Choreographer.CALLBACK_INSETS_ANIMATION,
-                    mAnimCallback, null /* token*/);
+            mHost.postInsetsAnimationCallback(mAnimCallback);
             mAnimCallbackScheduled = true;
         }
     }
 
     @Override
     public void setSystemBarsAppearance(@Appearance int appearance, @Appearance int mask) {
-        mViewRoot.mWindowAttributes.privateFlags |= PRIVATE_FLAG_APPEARANCE_CONTROLLED;
-        final InsetsFlags insetsFlags = mViewRoot.mWindowAttributes.insetsFlags;
-        if (insetsFlags.appearance != appearance) {
-            insetsFlags.appearance = (insetsFlags.appearance & ~mask) | (appearance & mask);
-            mViewRoot.mWindowAttributesChanged = true;
-            mViewRoot.scheduleTraversals();
-        }
+        mHost.setSystemBarsAppearance(appearance, mask);
     }
 
     @Override
     public @Appearance int getSystemBarsAppearance() {
-        if ((mViewRoot.mWindowAttributes.privateFlags & PRIVATE_FLAG_APPEARANCE_CONTROLLED) == 0) {
-            // We only return the requested appearance, not the implied one.
-            return 0;
-        }
-        return mViewRoot.mWindowAttributes.insetsFlags.appearance;
+        return mHost.getSystemBarsAppearance();
     }
 
     @Override
@@ -1139,21 +1166,12 @@
 
     @Override
     public void setSystemBarsBehavior(@Behavior int behavior) {
-        mViewRoot.mWindowAttributes.privateFlags |= PRIVATE_FLAG_BEHAVIOR_CONTROLLED;
-        if (mViewRoot.mWindowAttributes.insetsFlags.behavior != behavior) {
-            mViewRoot.mWindowAttributes.insetsFlags.behavior = behavior;
-            mViewRoot.mWindowAttributesChanged = true;
-            mViewRoot.scheduleTraversals();
-        }
+        mHost.setSystemBarsBehavior(behavior);
     }
 
     @Override
     public @Appearance int getSystemBarsBehavior() {
-        if ((mViewRoot.mWindowAttributes.privateFlags & PRIVATE_FLAG_BEHAVIOR_CONTROLLED) == 0) {
-            // We only return the requested behavior, not the implied one.
-            return 0;
-        }
-        return mViewRoot.mWindowAttributes.insetsFlags.behavior;
+        return mHost.getSystemBarsBehavior();
     }
 
     private @InsetsType int calculateControllableTypes() {
@@ -1198,22 +1216,12 @@
         mControllableInsetsChangedListeners.remove(listener);
     }
 
-    /**
-     * At the time we receive new leashes (e.g. InsetsSourceConsumer is processing
-     * setControl) we need to release the old leash. But we may have already scheduled
-     * a SyncRtSurfaceTransaction applier to use it from the RenderThread. To avoid
-     * synchronization issues we also release from the RenderThread so this release
-     * happens after any existing items on the work queue.
-     */
+    @Override
     public void releaseSurfaceControlFromRt(SurfaceControl sc) {
-        if (mViewRoot.mView != null && mViewRoot.mView.isHardwareAccelerated()) {
-            mViewRoot.registerRtFrameCallback(frame -> {
-                  sc.release();
-            });
-            // Make sure a frame gets scheduled.
-            mViewRoot.mView.invalidate();
-        } else {
-            sc.release();
-        }
+        mHost.releaseSurfaceControlFromRt(sc);
+    }
+
+    Host getHost() {
+        return mHost;
     }
 }
diff --git a/core/java/android/view/SurfaceControlViewHost.java b/core/java/android/view/SurfaceControlViewHost.java
index cfceb03..3d6da6f 100644
--- a/core/java/android/view/SurfaceControlViewHost.java
+++ b/core/java/android/view/SurfaceControlViewHost.java
@@ -39,7 +39,7 @@
  * {@link SurfaceView#setChildSurfacePackage}.
  */
 public class SurfaceControlViewHost {
-    private ViewRootImpl mViewRoot;
+    private final ViewRootImpl mViewRoot;
     private WindowlessWindowManager mWm;
 
     private SurfaceControl mSurfaceControl;
@@ -226,6 +226,14 @@
     }
 
     /**
+     * @return the ViewRootImpl wrapped by this host.
+     * @hide
+     */
+    public IWindow getWindowToken() {
+        return mViewRoot.mWindow;
+    }
+
+    /**
      * @hide
      */
     @TestApi
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 8b1e6cb..b74c8f6 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -757,7 +757,7 @@
         mChoreographer = useSfChoreographer
                 ? Choreographer.getSfInstance() : Choreographer.getInstance();
         mDisplayManager = (DisplayManager)context.getSystemService(Context.DISPLAY_SERVICE);
-        mInsetsController = new InsetsController(this);
+        mInsetsController = new InsetsController(new ViewRootInsetsControllerHost(this));
 
         String processorOverrideName = context.getResources().getString(
                                     R.string.config_inputEventCompatProcessorOverrideClassName);
@@ -1793,8 +1793,9 @@
             // We only return the Surface the first time, as otherwise
             // it hasn't changed and there is no need to update.
             ret = mBlastBufferQueue.getSurface();
+        } else {
+            mBlastBufferQueue.update(mBlastSurfaceControl, width, height);
         }
-        mBlastBufferQueue.update(mBlastSurfaceControl, width, height);
 
         return ret;
     }
diff --git a/core/java/android/view/ViewRootInsetsControllerHost.java b/core/java/android/view/ViewRootInsetsControllerHost.java
new file mode 100644
index 0000000..d8bf58f
--- /dev/null
+++ b/core/java/android/view/ViewRootInsetsControllerHost.java
@@ -0,0 +1,215 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.view;
+
+import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_APPEARANCE_CONTROLLED;
+import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_BEHAVIOR_CONTROLLED;
+
+import android.annotation.NonNull;
+import android.os.Handler;
+import android.os.RemoteException;
+import android.util.Log;
+import android.view.inputmethod.InputMethodManager;
+
+import java.util.List;
+
+/**
+ * Implements {@link InsetsController.Host} for {@link ViewRootImpl}s.
+ * @hide
+ */
+public class ViewRootInsetsControllerHost implements InsetsController.Host {
+
+    private final String TAG = "VRInsetsControllerHost";
+
+    private final ViewRootImpl mViewRoot;
+    private SyncRtSurfaceTransactionApplier mApplier;
+
+    public ViewRootInsetsControllerHost(ViewRootImpl viewRoot) {
+        mViewRoot = viewRoot;
+    }
+
+    @Override
+    public Handler getHandler() {
+        return mViewRoot.mHandler;
+    }
+
+    @Override
+    public void notifyInsetsChanged() {
+        mViewRoot.notifyInsetsChanged();
+    }
+
+    @Override
+    public void addOnPreDrawRunnable(Runnable r) {
+        if (mViewRoot.mView == null) {
+            return;
+        }
+        mViewRoot.mView.getViewTreeObserver().addOnPreDrawListener(
+                new ViewTreeObserver.OnPreDrawListener() {
+                    @Override
+                    public boolean onPreDraw() {
+                        mViewRoot.mView.getViewTreeObserver().removeOnPreDrawListener(this);
+                        r.run();
+                        return true;
+                    }
+                });
+        mViewRoot.mView.invalidate();
+    }
+
+    @Override
+    public void dispatchWindowInsetsAnimationPrepare(@NonNull WindowInsetsAnimation animation) {
+        if (mViewRoot.mView == null) {
+            return;
+        }
+        mViewRoot.mView.dispatchWindowInsetsAnimationPrepare(animation);
+    }
+
+    @Override
+    public WindowInsetsAnimation.Bounds dispatchWindowInsetsAnimationStart(
+            @NonNull WindowInsetsAnimation animation,
+            @NonNull WindowInsetsAnimation.Bounds bounds) {
+        if (mViewRoot.mView == null) {
+            return null;
+        }
+        return mViewRoot.mView.dispatchWindowInsetsAnimationStart(animation, bounds);
+    }
+
+    @Override
+    public WindowInsets dispatchWindowInsetsAnimationProgress(@NonNull WindowInsets insets,
+            @NonNull List<WindowInsetsAnimation> runningAnimations) {
+        if (mViewRoot.mView == null) {
+            // The view has already detached from window.
+            return null;
+        }
+        return mViewRoot.mView.dispatchWindowInsetsAnimationProgress(insets, runningAnimations);
+    }
+
+    @Override
+    public void dispatchWindowInsetsAnimationEnd(@NonNull WindowInsetsAnimation animation) {
+        mViewRoot.mView.dispatchWindowInsetsAnimationEnd(animation);
+    }
+
+    @Override
+    public void applySurfaceParams(SyncRtSurfaceTransactionApplier.SurfaceParams... params) {
+        if (mApplier == null) {
+            if (mViewRoot.mView == null) {
+                throw new IllegalStateException("View of the ViewRootImpl is not initiated.");
+            }
+            mApplier = new SyncRtSurfaceTransactionApplier(mViewRoot.mView);
+        }
+        if (mViewRoot.mView.isHardwareAccelerated()) {
+            mApplier.scheduleApply(false /* earlyWakeup */, params);
+        } else {
+            // Window doesn't support hardware acceleration, no synchronization for now.
+            // TODO(b/149342281): use mViewRoot.mSurface.getNextFrameNumber() to sync on every
+            //  frame instead.
+            mApplier.applyParams(new SurfaceControl.Transaction(), -1 /* frame */,
+                    false /* earlyWakeup */, params);
+        }
+    }
+
+    @Override
+    public void postInsetsAnimationCallback(Runnable r) {
+        mViewRoot.mChoreographer.postCallback(Choreographer.CALLBACK_INSETS_ANIMATION, r,
+                null /* token */);
+    }
+
+    @Override
+    public void updateCompatSysUiVisibility(int type, boolean visible, boolean hasControl) {
+        mViewRoot.updateCompatSysUiVisibility(type, visible, hasControl);
+    }
+
+    @Override
+    public void onInsetsModified(InsetsState insetsState) {
+        try {
+            mViewRoot.mWindowSession.insetsModified(mViewRoot.mWindow, insetsState);
+        } catch (RemoteException e) {
+            Log.e(TAG, "Failed to call insetsModified", e);
+        }
+    }
+
+    @Override
+    public boolean hasAnimationCallbacks() {
+        if (mViewRoot.mView == null) {
+            return false;
+        }
+        return mViewRoot.mView.hasWindowInsetsAnimationCallback();
+    }
+
+    @Override
+    public void setSystemBarsAppearance(int appearance, int mask) {
+        mViewRoot.mWindowAttributes.privateFlags |= PRIVATE_FLAG_APPEARANCE_CONTROLLED;
+        final InsetsFlags insetsFlags = mViewRoot.mWindowAttributes.insetsFlags;
+        if (insetsFlags.appearance != appearance) {
+            insetsFlags.appearance = (insetsFlags.appearance & ~mask) | (appearance & mask);
+            mViewRoot.mWindowAttributesChanged = true;
+            mViewRoot.scheduleTraversals();
+        }
+    }
+
+    @Override
+    public int getSystemBarsAppearance() {
+        if ((mViewRoot.mWindowAttributes.privateFlags & PRIVATE_FLAG_APPEARANCE_CONTROLLED) == 0) {
+            // We only return the requested appearance, not the implied one.
+            return 0;
+        }
+        return mViewRoot.mWindowAttributes.insetsFlags.appearance;
+    }
+
+    @Override
+    public void setSystemBarsBehavior(int behavior) {
+        mViewRoot.mWindowAttributes.privateFlags |= PRIVATE_FLAG_BEHAVIOR_CONTROLLED;
+        if (mViewRoot.mWindowAttributes.insetsFlags.behavior != behavior) {
+            mViewRoot.mWindowAttributes.insetsFlags.behavior = behavior;
+            mViewRoot.mWindowAttributesChanged = true;
+            mViewRoot.scheduleTraversals();
+        }
+    }
+
+    @Override
+    public int getSystemBarsBehavior() {
+        if ((mViewRoot.mWindowAttributes.privateFlags & PRIVATE_FLAG_BEHAVIOR_CONTROLLED) == 0) {
+            // We only return the requested behavior, not the implied one.
+            return 0;
+        }
+        return mViewRoot.mWindowAttributes.insetsFlags.behavior;
+    }
+
+    @Override
+    public void releaseSurfaceControlFromRt(SurfaceControl surfaceControl) {
+
+         // At the time we receive new leashes (e.g. InsetsSourceConsumer is processing
+         // setControl) we need to release the old leash. But we may have already scheduled
+         // a SyncRtSurfaceTransaction applier to use it from the RenderThread. To avoid
+         // synchronization issues we also release from the RenderThread so this release
+         // happens after any existing items on the work queue.
+
+        if (mViewRoot.mView != null && mViewRoot.mView.isHardwareAccelerated()) {
+            mViewRoot.registerRtFrameCallback(frame -> {
+                surfaceControl.release();
+            });
+            // Make sure a frame gets scheduled.
+            mViewRoot.mView.invalidate();
+        } else {
+            surfaceControl.release();
+        }
+    }
+
+    @Override
+    public InputMethodManager getInputMethodManager() {
+        return mViewRoot.mContext.getSystemService(InputMethodManager.class);
+    }
+}
diff --git a/core/java/android/view/inputmethod/InlineSuggestion.java b/core/java/android/view/inputmethod/InlineSuggestion.java
index f50f0dea..6b1a480 100644
--- a/core/java/android/view/inputmethod/InlineSuggestion.java
+++ b/core/java/android/view/inputmethod/InlineSuggestion.java
@@ -29,6 +29,7 @@
 import android.util.Size;
 import android.util.Slog;
 import android.view.SurfaceControlViewHost;
+import android.view.ViewGroup;
 import android.widget.inline.InlineContentView;
 
 import com.android.internal.util.DataClass;
@@ -94,19 +95,26 @@
 
     /**
      * Inflates a view with the content of this suggestion at a specific size.
-     * The size must be between the
+     *
+     * <p> The size must be either 1) between the
      * {@link android.widget.inline.InlinePresentationSpec#getMinSize() min size} and the
      * {@link android.widget.inline.InlinePresentationSpec#getMaxSize() max size} of the
-     * presentation spec returned by {@link InlineSuggestionInfo#getInlinePresentationSpec()}.
+     * presentation spec returned by {@link InlineSuggestionInfo#getInlinePresentationSpec()},
+     * or 2) {@link ViewGroup.LayoutParams#WRAP_CONTENT}. If the size is set to
+     * {@link ViewGroup.LayoutParams#WRAP_CONTENT}, then the size of the inflated view will be just
+     * large enough to fit the content, while still conforming to the min / max size specified by
+     * the {@link android.widget.inline.InlinePresentationSpec}.
      *
      * <p> The caller can attach an {@link android.view.View.OnClickListener} and/or an
      * {@link android.view.View.OnLongClickListener} to the view in the
-     * {@code callback} to receive click and
-     * long click events on the view.
+     * {@code callback} to receive click and long click events on the view.
      *
      * @param context  Context in which to inflate the view.
-     * @param size     The size at which to inflate the suggestion.
-     * @param callback Callback for receiving the inflated view.
+     * @param size     The size at which to inflate the suggestion. For each dimension, it maybe
+     *                 an exact value or {@link ViewGroup.LayoutParams#WRAP_CONTENT}.
+     * @param callback Callback for receiving the inflated view, where the
+     *                 {@link ViewGroup.LayoutParams} of the view is set as the actual size of
+     *                 the underlying remote view.
      * @throws IllegalArgumentException If an invalid argument is passed.
      * @throws IllegalStateException    If this method is already called.
      */
@@ -115,10 +123,11 @@
             @NonNull Consumer<InlineContentView> callback) {
         final Size minSize = mInfo.getInlinePresentationSpec().getMinSize();
         final Size maxSize = mInfo.getInlinePresentationSpec().getMaxSize();
-        if (size.getHeight() < minSize.getHeight() || size.getHeight() > maxSize.getHeight()
-                || size.getWidth() < minSize.getWidth() || size.getWidth() > maxSize.getWidth()) {
-            throw new IllegalArgumentException("size not between min:"
-                    + minSize + " and max:" + maxSize);
+        if (!isValid(size.getWidth(), minSize.getWidth(), maxSize.getWidth())
+                || !isValid(size.getHeight(), minSize.getHeight(), maxSize.getHeight())) {
+            throw new IllegalArgumentException(
+                    "size is neither between min:" + minSize + " and max:" + maxSize
+                            + ", nor wrap_content");
         }
         mInlineContentCallback = getInlineContentCallback(context, callbackExecutor, callback);
         AsyncTask.THREAD_POOL_EXECUTOR.execute(() -> {
@@ -136,6 +145,17 @@
         });
     }
 
+    /**
+     * Returns true if the {@code actual} length is within [min, max] or is {@link
+     * ViewGroup.LayoutParams#WRAP_CONTENT}.
+     */
+    private static boolean isValid(int actual, int min, int max) {
+        if (actual == ViewGroup.LayoutParams.WRAP_CONTENT) {
+            return true;
+        }
+        return actual >= min && actual <= max;
+    }
+
     private synchronized InlineContentCallbackImpl getInlineContentCallback(Context context,
             Executor callbackExecutor, Consumer<InlineContentView> callback) {
         if (mInlineContentCallback != null) {
@@ -154,10 +174,11 @@
 
         @Override
         @BinderThread
-        public void onContent(SurfaceControlViewHost.SurfacePackage content) {
+        public void onContent(SurfaceControlViewHost.SurfacePackage content, int width,
+                int height) {
             final InlineContentCallbackImpl callbackImpl = mCallbackImpl.get();
             if (callbackImpl != null) {
-                callbackImpl.onContent(content);
+                callbackImpl.onContent(content, width, height);
             }
         }
 
@@ -196,11 +217,13 @@
         }
 
         @BinderThread
-        public void onContent(SurfaceControlViewHost.SurfacePackage content) {
+        public void onContent(SurfaceControlViewHost.SurfacePackage content, int width,
+                int height) {
             if (content == null) {
                 mCallbackExecutor.execute(() -> mCallback.accept(/* view */null));
             } else {
                 mView = new InlineContentView(mContext);
+                mView.setLayoutParams(new ViewGroup.LayoutParams(width, height));
                 mView.setChildSurfacePackage(content);
                 mCallbackExecutor.execute(() -> mCallback.accept(mView));
             }
@@ -398,10 +421,10 @@
     };
 
     @DataClass.Generated(
-            time = 1585180783541L,
+            time = 1587771173367L,
             codegenVersion = "1.0.15",
             sourceFile = "frameworks/base/core/java/android/view/inputmethod/InlineSuggestion.java",
-            inputSignatures = "private static final  java.lang.String TAG\nprivate final @android.annotation.NonNull android.view.inputmethod.InlineSuggestionInfo mInfo\nprivate final @android.annotation.Nullable com.android.internal.view.inline.IInlineContentProvider mContentProvider\nprivate @com.android.internal.util.DataClass.ParcelWith(android.view.inputmethod.InlineSuggestion.InlineContentCallbackImplParceling.class) @android.annotation.Nullable android.view.inputmethod.InlineSuggestion.InlineContentCallbackImpl mInlineContentCallback\npublic static @android.annotation.TestApi @android.annotation.NonNull android.view.inputmethod.InlineSuggestion newInlineSuggestion(android.view.inputmethod.InlineSuggestionInfo)\npublic  void inflate(android.content.Context,android.util.Size,java.util.concurrent.Executor,java.util.function.Consumer<android.widget.inline.InlineContentView>)\nprivate synchronized  android.view.inputmethod.InlineSuggestion.InlineContentCallbackImpl getInlineContentCallback(android.content.Context,java.util.concurrent.Executor,java.util.function.Consumer<android.widget.inline.InlineContentView>)\nclass InlineSuggestion extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genToString=true, genHiddenConstDefs=true, genHiddenConstructor=true)")
+            inputSignatures = "private static final  java.lang.String TAG\nprivate final @android.annotation.NonNull android.view.inputmethod.InlineSuggestionInfo mInfo\nprivate final @android.annotation.Nullable com.android.internal.view.inline.IInlineContentProvider mContentProvider\nprivate @com.android.internal.util.DataClass.ParcelWith(android.view.inputmethod.InlineSuggestion.InlineContentCallbackImplParceling.class) @android.annotation.Nullable android.view.inputmethod.InlineSuggestion.InlineContentCallbackImpl mInlineContentCallback\npublic static @android.annotation.TestApi @android.annotation.NonNull android.view.inputmethod.InlineSuggestion newInlineSuggestion(android.view.inputmethod.InlineSuggestionInfo)\npublic  void inflate(android.content.Context,android.util.Size,java.util.concurrent.Executor,java.util.function.Consumer<android.widget.inline.InlineContentView>)\nprivate static  boolean isValid(int,int,int)\nprivate synchronized  android.view.inputmethod.InlineSuggestion.InlineContentCallbackImpl getInlineContentCallback(android.content.Context,java.util.concurrent.Executor,java.util.function.Consumer<android.widget.inline.InlineContentView>)\nclass InlineSuggestion extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genToString=true, genHiddenConstDefs=true, genHiddenConstructor=true)")
     @Deprecated
     private void __metadata() {}
 
diff --git a/core/java/android/widget/ImeAwareEditText.java b/core/java/android/widget/ImeAwareEditText.java
new file mode 100644
index 0000000..9cd4585
--- /dev/null
+++ b/core/java/android/widget/ImeAwareEditText.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputConnection;
+import android.view.inputmethod.InputMethodManager;
+
+/**
+ * EditText that keeps track of the IME state, specifically its input connection. This is useful
+ * for clients who request the IME before the system has established a connection.
+ * @hide
+ */
+public class ImeAwareEditText extends EditText {
+    private boolean mHasPendingShowSoftInputRequest;
+    final Runnable mRunShowSoftInputIfNecessary = () -> showSoftInputIfNecessary();
+
+    public ImeAwareEditText(Context context) {
+        super(context, null);
+    }
+
+    public ImeAwareEditText(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public ImeAwareEditText(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    public ImeAwareEditText(Context context, AttributeSet attrs, int defStyleAttr,
+            int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    /**
+     * This method is called back by the system when the system is about to establish a connection
+     * to the current input method.
+     *
+     * <p>This is a good and reliable signal to schedule a pending task to call
+     * {@link InputMethodManager#showSoftInput(View, int)}.</p>
+     *
+     * @param editorInfo context about the text input field.
+     * @return {@link InputConnection} to be passed to the input method.
+     */
+    @Override
+    public InputConnection onCreateInputConnection(EditorInfo editorInfo) {
+        final InputConnection ic = super.onCreateInputConnection(editorInfo);
+        if (mHasPendingShowSoftInputRequest) {
+            removeCallbacks(mRunShowSoftInputIfNecessary);
+            post(mRunShowSoftInputIfNecessary);
+        }
+        return ic;
+    }
+
+    private void showSoftInputIfNecessary() {
+        if (mHasPendingShowSoftInputRequest) {
+            final InputMethodManager imm =
+                    getContext().getSystemService(InputMethodManager.class);
+            imm.showSoftInput(this, 0);
+            mHasPendingShowSoftInputRequest = false;
+        }
+    }
+
+    public void scheduleShowSoftInput() {
+        final InputMethodManager imm = getContext().getSystemService(InputMethodManager.class);
+        if (imm.isActive(this)) {
+            // This means that ImeAwareEditText is already connected to the IME.
+            // InputMethodManager#showSoftInput() is guaranteed to pass client-side focus check.
+            mHasPendingShowSoftInputRequest = false;
+            removeCallbacks(mRunShowSoftInputIfNecessary);
+            imm.showSoftInput(this, 0);
+            return;
+        }
+
+        // Otherwise, InputMethodManager#showSoftInput() should be deferred after
+        // onCreateInputConnection().
+        mHasPendingShowSoftInputRequest = true;
+    }
+}
diff --git a/core/java/com/android/internal/accessibility/dialog/AccessibilityTarget.java b/core/java/com/android/internal/accessibility/dialog/AccessibilityTarget.java
index 72ebc58..37871d0 100644
--- a/core/java/com/android/internal/accessibility/dialog/AccessibilityTarget.java
+++ b/core/java/com/android/internal/accessibility/dialog/AccessibilityTarget.java
@@ -74,7 +74,7 @@
         holder.mCheckBoxView.setVisibility(isEditMenuMode ? View.VISIBLE : View.GONE);
         holder.mIconView.setImageDrawable(getIcon());
         holder.mLabelView.setText(getLabel());
-        holder.mSwitchItem.setVisibility(View.GONE);
+        holder.mStatusView.setVisibility(View.GONE);
     }
 
     @Override
diff --git a/core/java/com/android/internal/accessibility/dialog/ShortcutTargetAdapter.java b/core/java/com/android/internal/accessibility/dialog/ShortcutTargetAdapter.java
index b7605b7..88e18db 100644
--- a/core/java/com/android/internal/accessibility/dialog/ShortcutTargetAdapter.java
+++ b/core/java/com/android/internal/accessibility/dialog/ShortcutTargetAdapter.java
@@ -68,8 +68,8 @@
             holder.mIconView = convertView.findViewById(R.id.accessibility_shortcut_target_icon);
             holder.mLabelView = convertView.findViewById(
                     R.id.accessibility_shortcut_target_label);
-            holder.mSwitchItem = convertView.findViewById(
-                    R.id.accessibility_shortcut_target_switch_item);
+            holder.mStatusView = convertView.findViewById(
+                    R.id.accessibility_shortcut_target_status);
             convertView.setTag(holder);
         } else {
             holder = (ViewHolder) convertView.getTag();
diff --git a/core/java/com/android/internal/accessibility/dialog/TargetAdapter.java b/core/java/com/android/internal/accessibility/dialog/TargetAdapter.java
index 1efa17e..28ac921 100644
--- a/core/java/com/android/internal/accessibility/dialog/TargetAdapter.java
+++ b/core/java/com/android/internal/accessibility/dialog/TargetAdapter.java
@@ -19,7 +19,6 @@
 import android.widget.BaseAdapter;
 import android.widget.CheckBox;
 import android.widget.ImageView;
-import android.widget.Switch;
 import android.widget.TextView;
 
 /**
@@ -30,6 +29,6 @@
         CheckBox mCheckBoxView;
         ImageView mIconView;
         TextView mLabelView;
-        Switch mSwitchItem;
+        TextView mStatusView;
     }
 }
diff --git a/core/java/com/android/internal/accessibility/dialog/ToggleAccessibilityServiceTarget.java b/core/java/com/android/internal/accessibility/dialog/ToggleAccessibilityServiceTarget.java
index 3a42f7e..239e531 100644
--- a/core/java/com/android/internal/accessibility/dialog/ToggleAccessibilityServiceTarget.java
+++ b/core/java/com/android/internal/accessibility/dialog/ToggleAccessibilityServiceTarget.java
@@ -24,6 +24,7 @@
 import android.view.View;
 import android.view.accessibility.AccessibilityManager.ShortcutType;
 
+import com.android.internal.R;
 import com.android.internal.accessibility.common.ShortcutConstants.AccessibilityFragmentType;
 import com.android.internal.accessibility.common.ShortcutConstants.ShortcutMenuMode;
 import com.android.internal.accessibility.dialog.TargetAdapter.ViewHolder;
@@ -49,7 +50,11 @@
 
         final boolean isEditMenuMode =
                 shortcutMenuMode == ShortcutMenuMode.EDIT;
-        holder.mSwitchItem.setVisibility(isEditMenuMode ? View.GONE : View.VISIBLE);
-        holder.mSwitchItem.setChecked(isAccessibilityServiceEnabled(getContext(), getId()));
+        holder.mStatusView.setVisibility(isEditMenuMode ? View.GONE : View.VISIBLE);
+
+        final int statusResId = isAccessibilityServiceEnabled(getContext(), getId())
+                ? R.string.accessibility_shortcut_menu_item_status_on
+                : R.string.accessibility_shortcut_menu_item_status_off;
+        holder.mStatusView.setText(getContext().getString(statusResId));
     }
 }
diff --git a/core/java/com/android/internal/accessibility/dialog/ToggleWhiteListingFeatureTarget.java b/core/java/com/android/internal/accessibility/dialog/ToggleWhiteListingFeatureTarget.java
index fcbf5ec..5ab9eb8 100644
--- a/core/java/com/android/internal/accessibility/dialog/ToggleWhiteListingFeatureTarget.java
+++ b/core/java/com/android/internal/accessibility/dialog/ToggleWhiteListingFeatureTarget.java
@@ -23,6 +23,7 @@
 import android.view.View;
 import android.view.accessibility.AccessibilityManager.ShortcutType;
 
+import com.android.internal.R;
 import com.android.internal.accessibility.common.ShortcutConstants.AccessibilityFragmentType;
 import com.android.internal.accessibility.common.ShortcutConstants.ShortcutMenuMode;
 import com.android.internal.accessibility.dialog.TargetAdapter.ViewHolder;
@@ -46,8 +47,12 @@
 
         final boolean isEditMenuMode =
                 shortcutMenuMode == ShortcutMenuMode.EDIT;
-        holder.mSwitchItem.setVisibility(isEditMenuMode ? View.GONE : View.VISIBLE);
-        holder.mSwitchItem.setChecked(isFeatureEnabled());
+        holder.mStatusView.setVisibility(isEditMenuMode ? View.GONE : View.VISIBLE);
+
+        final int statusResId = isFeatureEnabled()
+                ? R.string.accessibility_shortcut_menu_item_status_on
+                : R.string.accessibility_shortcut_menu_item_status_off;
+        holder.mStatusView.setText(getContext().getString(statusResId));
     }
 
     private boolean isFeatureEnabled() {
diff --git a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java
index bcb32fb..a47ad73 100644
--- a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java
+++ b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java
@@ -301,7 +301,7 @@
 
     private boolean rebuildTab(ResolverListAdapter activeListAdapter, boolean doPostProcessing) {
         if (shouldShowNoCrossProfileIntentsEmptyState(activeListAdapter)) {
-            activeListAdapter.postListReadyRunnable(doPostProcessing);
+            activeListAdapter.postListReadyRunnable(doPostProcessing, /* rebuildCompleted */ true);
             return false;
         }
         return activeListAdapter.rebuildList(doPostProcessing);
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index b671fa7..a144ffb 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -855,10 +855,11 @@
             Intent[] initialIntents,
             List<ResolveInfo> rList,
             boolean filterLastUsed) {
+        int selectedProfile = findSelectedProfile();
         ChooserGridAdapter personalAdapter = createChooserGridAdapter(
                 /* context */ this,
                 /* payloadIntents */ mIntents,
-                initialIntents,
+                selectedProfile == PROFILE_PERSONAL ? initialIntents : null,
                 rList,
                 filterLastUsed,
                 mUseLayoutForBrowsables,
@@ -866,12 +867,11 @@
         ChooserGridAdapter workAdapter = createChooserGridAdapter(
                 /* context */ this,
                 /* payloadIntents */ mIntents,
-                initialIntents,
+                selectedProfile == PROFILE_WORK ? initialIntents : null,
                 rList,
                 filterLastUsed,
                 mUseLayoutForBrowsables,
                 /* userHandle */ getWorkProfileUserHandle());
-        int selectedProfile = findSelectedProfile();
         return new ChooserMultiProfilePagerAdapter(
                 /* context */ this,
                 personalAdapter,
@@ -2404,10 +2404,9 @@
     public ChooserGridAdapter createChooserGridAdapter(Context context,
             List<Intent> payloadIntents, Intent[] initialIntents, List<ResolveInfo> rList,
             boolean filterLastUsed, boolean useLayoutForBrowsables, UserHandle userHandle) {
-        ChooserListAdapter chooserListAdapter = new ChooserListAdapter(context, payloadIntents,
-                initialIntents, rList,
-                filterLastUsed, createListController(userHandle), useLayoutForBrowsables,
-                this, this);
+        ChooserListAdapter chooserListAdapter = createChooserListAdapter(context, payloadIntents,
+                initialIntents, rList, filterLastUsed,
+                useLayoutForBrowsables, createListController(userHandle));
         AppPredictor.Callback appPredictorCallback = createAppPredictorCallback(chooserListAdapter);
         AppPredictor appPredictor = setupAppPredictorForUser(userHandle, appPredictorCallback);
         chooserListAdapter.setAppPredictor(appPredictor);
@@ -2416,6 +2415,16 @@
     }
 
     @VisibleForTesting
+    public ChooserListAdapter createChooserListAdapter(Context context,
+            List<Intent> payloadIntents, Intent[] initialIntents, List<ResolveInfo> rList,
+            boolean filterLastUsed, boolean useLayoutForBrowsables,
+            ResolverListController resolverListController) {
+        return new ChooserListAdapter(context, payloadIntents, initialIntents, rList,
+                filterLastUsed, resolverListController, useLayoutForBrowsables,
+                this, this, context.getPackageManager());
+    }
+
+    @VisibleForTesting
     protected ResolverListController createListController(UserHandle userHandle) {
         AppPredictor appPredictor = getAppPredictorForShareActivitiesIfEnabled(userHandle);
         AbstractResolverComparator resolverComparator;
diff --git a/core/java/com/android/internal/app/ChooserListAdapter.java b/core/java/com/android/internal/app/ChooserListAdapter.java
index 69a4927..73ee295 100644
--- a/core/java/com/android/internal/app/ChooserListAdapter.java
+++ b/core/java/com/android/internal/app/ChooserListAdapter.java
@@ -88,7 +88,7 @@
     private final int mMaxShortcutTargetsPerApp;
     private final ChooserListCommunicator mChooserListCommunicator;
     private final SelectableTargetInfo.SelectableTargetInfoCommunicator
-            mSelectableTargetInfoComunicator;
+            mSelectableTargetInfoCommunicator;
 
     private int mNumShortcutResults = 0;
 
@@ -117,7 +117,8 @@
             boolean filterLastUsed, ResolverListController resolverListController,
             boolean useLayoutForBrowsables,
             ChooserListCommunicator chooserListCommunicator,
-            SelectableTargetInfo.SelectableTargetInfoCommunicator selectableTargetInfoComunicator) {
+            SelectableTargetInfo.SelectableTargetInfoCommunicator selectableTargetInfoCommunicator,
+            PackageManager packageManager) {
         // Don't send the initial intents through the shared ResolverActivity path,
         // we want to separate them into a different section.
         super(context, payloadIntents, null, rList, filterLastUsed,
@@ -128,10 +129,9 @@
         mMaxShortcutTargetsPerApp =
                 context.getResources().getInteger(R.integer.config_maxShortcutTargetsPerApp);
         mChooserListCommunicator = chooserListCommunicator;
-        mSelectableTargetInfoComunicator = selectableTargetInfoComunicator;
+        mSelectableTargetInfoCommunicator = selectableTargetInfoCommunicator;
 
         if (initialIntents != null) {
-            final PackageManager pm = context.getPackageManager();
             for (int i = 0; i < initialIntents.length; i++) {
                 final Intent ii = initialIntents[i];
                 if (ii == null) {
@@ -147,7 +147,7 @@
                 final ComponentName cn = ii.getComponent();
                 if (cn != null) {
                     try {
-                        ai = pm.getActivityInfo(ii.getComponent(), 0);
+                        ai = packageManager.getActivityInfo(ii.getComponent(), 0);
                         ri = new ResolveInfo();
                         ri.activityInfo = ai;
                     } catch (PackageManager.NameNotFoundException ignored) {
@@ -155,7 +155,7 @@
                     }
                 }
                 if (ai == null) {
-                    ri = pm.resolveActivity(ii, PackageManager.MATCH_DEFAULT_ONLY);
+                    ri = packageManager.resolveActivity(ii, PackageManager.MATCH_DEFAULT_ONLY);
                     ai = ri != null ? ri.activityInfo : null;
                 }
                 if (ai == null) {
@@ -455,7 +455,7 @@
             UserHandle userHandle = getUserHandle();
             Context contextAsUser = mContext.createContextAsUser(userHandle, 0 /* flags */);
             boolean isInserted = insertServiceTarget(new SelectableTargetInfo(contextAsUser,
-                    origTarget, target, targetScore, mSelectableTargetInfoComunicator,
+                    origTarget, target, targetScore, mSelectableTargetInfoCommunicator,
                     (isShortcutResult ? directShareToShortcutInfos.get(target) : null)));
 
             if (isInserted && isShortcutResult) {
@@ -507,7 +507,7 @@
                     .map(target ->
                             new SelectableTargetInfo(
                                     contextAsUser, origTarget, target, target.getScore(),
-                                    mSelectableTargetInfoComunicator,
+                                    mSelectableTargetInfoCommunicator,
                                     (isShortcutResult ? directShareToShortcutInfos.get(target)
                                             : null))
                     )
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java
index 4ba6ce4..2f62f8e 100644
--- a/core/java/com/android/internal/app/ResolverActivity.java
+++ b/core/java/com/android/internal/app/ResolverActivity.java
@@ -459,28 +459,6 @@
             Intent[] initialIntents,
             List<ResolveInfo> rList,
             boolean filterLastUsed) {
-        // We only show the default app for the profile of the current user. The filterLastUsed
-        // flag determines whether to show a default app and that app is not shown in the
-        // resolver list. So filterLastUsed should be false for the other profile.
-        ResolverListAdapter personalAdapter = createResolverListAdapter(
-                /* context */ this,
-                /* payloadIntents */ mIntents,
-                initialIntents,
-                rList,
-                (filterLastUsed && UserHandle.myUserId()
-                        == getPersonalProfileUserHandle().getIdentifier()),
-                mUseLayoutForBrowsables,
-                /* userHandle */ getPersonalProfileUserHandle());
-        UserHandle workProfileUserHandle = getWorkProfileUserHandle();
-        ResolverListAdapter workAdapter = createResolverListAdapter(
-                /* context */ this,
-                /* payloadIntents */ mIntents,
-                initialIntents,
-                rList,
-                (filterLastUsed && UserHandle.myUserId()
-                        == workProfileUserHandle.getIdentifier()),
-                mUseLayoutForBrowsables,
-                /* userHandle */ workProfileUserHandle);
         // In the edge case when we have 0 apps in the current profile and >1 apps in the other,
         // the intent resolver is started in the other profile. Since this is the only case when
         // this happens, we check for it here and set the current profile's tab.
@@ -493,6 +471,28 @@
                 selectedProfile = PROFILE_WORK;
             }
         }
+        // We only show the default app for the profile of the current user. The filterLastUsed
+        // flag determines whether to show a default app and that app is not shown in the
+        // resolver list. So filterLastUsed should be false for the other profile.
+        ResolverListAdapter personalAdapter = createResolverListAdapter(
+                /* context */ this,
+                /* payloadIntents */ mIntents,
+                selectedProfile == PROFILE_PERSONAL ? initialIntents : null,
+                rList,
+                (filterLastUsed && UserHandle.myUserId()
+                        == getPersonalProfileUserHandle().getIdentifier()),
+                mUseLayoutForBrowsables,
+                /* userHandle */ getPersonalProfileUserHandle());
+        UserHandle workProfileUserHandle = getWorkProfileUserHandle();
+        ResolverListAdapter workAdapter = createResolverListAdapter(
+                /* context */ this,
+                /* payloadIntents */ mIntents,
+                selectedProfile == PROFILE_WORK ? initialIntents : null,
+                rList,
+                (filterLastUsed && UserHandle.myUserId()
+                        == workProfileUserHandle.getIdentifier()),
+                mUseLayoutForBrowsables,
+                /* userHandle */ workProfileUserHandle);
         return new ResolverMultiProfilePagerAdapter(
                 /* context */ this,
                 personalAdapter,
@@ -1026,7 +1026,8 @@
     }
 
     @Override // ResolverListCommunicator
-    public final void onPostListReady(ResolverListAdapter listAdapter, boolean doPostProcessing) {
+    public final void onPostListReady(ResolverListAdapter listAdapter, boolean doPostProcessing,
+            boolean rebuildCompleted) {
         if (isAutolaunching()) {
             return;
         }
@@ -1041,7 +1042,7 @@
         }
         // showEmptyResolverListEmptyState can mark the tab as loaded,
         // which is a precondition for auto launching
-        if (maybeAutolaunchActivity()) {
+        if (rebuildCompleted && maybeAutolaunchActivity()) {
             return;
         }
         if (doPostProcessing) {
diff --git a/core/java/com/android/internal/app/ResolverListAdapter.java b/core/java/com/android/internal/app/ResolverListAdapter.java
index 62bddb1..2fd938f 100644
--- a/core/java/com/android/internal/app/ResolverListAdapter.java
+++ b/core/java/com/android/internal/app/ResolverListAdapter.java
@@ -282,7 +282,7 @@
                 }
                 setPlaceholderCount(placeholderCount);
                 createSortingTask(doPostProcessing).execute(currentResolveList);
-                postListReadyRunnable(doPostProcessing);
+                postListReadyRunnable(doPostProcessing, /* rebuildCompleted */ false);
                 return false;
             } else {
                 processSortedList(currentResolveList, doPostProcessing);
@@ -370,7 +370,7 @@
         }
 
         mResolverListCommunicator.sendVoiceChoicesIfNeeded();
-        postListReadyRunnable(doPostProcessing);
+        postListReadyRunnable(doPostProcessing, /* rebuildCompleted */ true);
         mIsTabLoaded = true;
     }
 
@@ -380,14 +380,15 @@
      * handler thread to update after the current task is finished.
      * @param doPostProcessing Whether to update the UI and load additional direct share targets
      *                         after the list has been rebuilt
+     * @param rebuildCompleted Whether the list has been completely rebuilt
      */
-    void postListReadyRunnable(boolean doPostProcessing) {
+    void postListReadyRunnable(boolean doPostProcessing, boolean rebuildCompleted) {
         if (mPostListReadyRunnable == null) {
             mPostListReadyRunnable = new Runnable() {
                 @Override
                 public void run() {
                     mResolverListCommunicator.onPostListReady(ResolverListAdapter.this,
-                            doPostProcessing);
+                            doPostProcessing, rebuildCompleted);
                     mPostListReadyRunnable = null;
                 }
             };
@@ -649,7 +650,8 @@
 
         Intent getReplacementIntent(ActivityInfo activityInfo, Intent defIntent);
 
-        void onPostListReady(ResolverListAdapter listAdapter, boolean updateUi);
+        void onPostListReady(ResolverListAdapter listAdapter, boolean updateUi,
+                boolean rebuildCompleted);
 
         void sendVoiceChoicesIfNeeded();
 
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 6432475..415e210 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -4009,6 +4009,11 @@
             // Otherwise the parent's process state will get downgraded incorrectly
             return;
         }
+        // TODO(b/155216561): It is possible for isolated uids to be in a higher
+        // state than its parent uid. We should track the highest state within the union of host
+        // and isolated uids rather than only the parent uid.
+        FrameworkStatsLog.write(FrameworkStatsLog.UID_PROCESS_STATE_CHANGED, uid,
+                ActivityManager.processStateAmToProto(state));
         getUidStatsLocked(uid).updateUidProcessStateLocked(state);
     }
 
diff --git a/core/java/com/android/internal/view/inline/IInlineContentCallback.aidl b/core/java/com/android/internal/view/inline/IInlineContentCallback.aidl
index feb3f02..64f7fa7 100644
--- a/core/java/com/android/internal/view/inline/IInlineContentCallback.aidl
+++ b/core/java/com/android/internal/view/inline/IInlineContentCallback.aidl
@@ -23,7 +23,7 @@
  * {@hide}
  */
 oneway interface IInlineContentCallback {
-    void onContent(in SurfaceControlViewHost.SurfacePackage content);
+    void onContent(in SurfaceControlViewHost.SurfacePackage content, int width, int height);
     void onClick();
     void onLongClick();
 }
diff --git a/core/java/com/android/internal/widget/ConversationLayout.java b/core/java/com/android/internal/widget/ConversationLayout.java
index 297ebb0..688e00b 100644
--- a/core/java/com/android/internal/widget/ConversationLayout.java
+++ b/core/java/com/android/internal/widget/ConversationLayout.java
@@ -115,10 +115,9 @@
     private ImageResolver mImageResolver;
     private CachingIconView mConversationIconView;
     private View mConversationIconContainer;
-    private int mConversationIconTopPadding;
     private int mConversationIconTopPaddingExpandedGroup;
-    private int mConversationIconTopPaddingNoAppName;
-    private int mExpandedGroupMessagePaddingNoAppName;
+    private int mConversationIconTopPadding;
+    private int mExpandedGroupMessagePadding;
     private TextView mConversationText;
     private View mConversationIconBadge;
     private CachingIconView mConversationIconBadgeBg;
@@ -162,6 +161,7 @@
     private Rect mAppOpsTouchRect = new Rect();
     private float mMinTouchSize;
     private Icon mConversationIcon;
+    private View mAppNameDivider;
 
     public ConversationLayout(@NonNull Context context) {
         super(context);
@@ -261,14 +261,12 @@
                 R.dimen.conversation_avatar_size);
         mConversationAvatarSizeExpanded = getResources().getDimensionPixelSize(
                 R.dimen.conversation_avatar_size_group_expanded);
-        mConversationIconTopPadding = getResources().getDimensionPixelSize(
-                R.dimen.conversation_icon_container_top_padding);
         mConversationIconTopPaddingExpandedGroup = getResources().getDimensionPixelSize(
                 R.dimen.conversation_icon_container_top_padding_small_avatar);
-        mConversationIconTopPaddingNoAppName = getResources().getDimensionPixelSize(
-                R.dimen.conversation_icon_container_top_padding_no_app_name);
-        mExpandedGroupMessagePaddingNoAppName = getResources().getDimensionPixelSize(
-                R.dimen.expanded_group_conversation_message_padding_without_app_name);
+        mConversationIconTopPadding = getResources().getDimensionPixelSize(
+                R.dimen.conversation_icon_container_top_padding);
+        mExpandedGroupMessagePadding = getResources().getDimensionPixelSize(
+                R.dimen.expanded_group_conversation_message_padding);
         mExpandedGroupSideMargin = getResources().getDimensionPixelSize(
                 R.dimen.conversation_badge_side_margin_group_expanded);
         mExpandedGroupSideMarginFacePile = getResources().getDimensionPixelSize(
@@ -287,6 +285,7 @@
         mFallbackGroupChatName = getResources().getString(
                 R.string.conversation_title_fallback_group_chat);
         mAppName = findViewById(R.id.app_name_text);
+        mAppNameDivider = findViewById(R.id.app_name_divider);
         mAppNameGone = mAppName.getVisibility() == GONE;
         mAppName.setOnVisibilityChangedListener((visibility) -> {
             onAppNameVisibilityChanged();
@@ -524,6 +523,7 @@
         updateImageMessages();
         updatePaddingsBasedOnContentAvailability();
         updateActionListPadding();
+        updateAppNameDividerVisibility();
     }
 
     private void updateActionListPadding() {
@@ -685,27 +685,15 @@
     }
 
     private void updatePaddingsBasedOnContentAvailability() {
-        int containerTopPadding;
-        int messagingPadding = 0;
-        if (mIsOneToOne || mIsCollapsed) {
-            containerTopPadding = mConversationIconTopPadding;
-        } else {
-            if (mAppName.getVisibility() != GONE) {
-                // The app name is visible, let's center outselves in the two lines
-                containerTopPadding = mConversationIconTopPaddingExpandedGroup;
-            } else {
-                // App name is gone, let's center ourselves int he one remaining line
-                containerTopPadding = mConversationIconTopPaddingNoAppName;
-
-                // The app name is gone and we're a group, we'll need to add some extra padding
-                // to the messages, since otherwise it will overlap with the group
-                messagingPadding = mExpandedGroupMessagePaddingNoAppName;
-            }
-        }
+        int messagingPadding = mIsOneToOne || mIsCollapsed
+                ? 0
+                // Add some extra padding to the messages, since otherwise it will overlap with the
+                // group
+                : mExpandedGroupMessagePadding;
 
         mConversationIconContainer.setPaddingRelative(
                 mConversationIconContainer.getPaddingStart(),
-                containerTopPadding,
+                mConversationIconTopPadding,
                 mConversationIconContainer.getPaddingEnd(),
                 mConversationIconContainer.getPaddingBottom());
 
@@ -1214,10 +1202,14 @@
         boolean appNameGone = mAppName.getVisibility() == GONE;
         if (appNameGone != mAppNameGone) {
             mAppNameGone = appNameGone;
-            updatePaddingsBasedOnContentAvailability();
+            updateAppNameDividerVisibility();
         }
     }
 
+    private void updateAppNameDividerVisibility() {
+        mAppNameDivider.setVisibility(mAppNameGone ? GONE : VISIBLE);
+    }
+
     public void updateExpandability(boolean expandable, @Nullable OnClickListener onClickListener) {
         mExpandable = expandable;
         if (expandable) {
diff --git a/core/java/com/android/internal/widget/InlinePresentationStyleUtils.java b/core/java/com/android/internal/widget/InlinePresentationStyleUtils.java
index db1725f..9c1aa28 100644
--- a/core/java/com/android/internal/widget/InlinePresentationStyleUtils.java
+++ b/core/java/com/android/internal/widget/InlinePresentationStyleUtils.java
@@ -52,10 +52,10 @@
         for (String key : keys) {
             Object value1 = bundle1.get(key);
             Object value2 = bundle2.get(key);
-            if (value1 instanceof Bundle && value2 instanceof Bundle
-                    && !bundleEquals((Bundle) value1, (Bundle) value2)) {
-                return false;
-            } else if (!Objects.equals(value1, value2)) {
+            final boolean equal = value1 instanceof Bundle && value2 instanceof Bundle
+                    ? bundleEquals((Bundle) value1, (Bundle) value2)
+                    : Objects.equals(value1, value2);
+            if (!equal) {
                 return false;
             }
         }
diff --git a/core/jni/android_media_AudioRecord.cpp b/core/jni/android_media_AudioRecord.cpp
index 6cbc587..8d193bf 100644
--- a/core/jni/android_media_AudioRecord.cpp
+++ b/core/jni/android_media_AudioRecord.cpp
@@ -307,6 +307,9 @@
                     status);
             goto native_init_failure;
         }
+        // Set caller name so it can be logged in destructor.
+        // MediaMetricsConstants.h: AMEDIAMETRICS_PROP_CALLERNAME_VALUE_JAVA
+        lpRecorder->setCallerName("java");
     } else { // end if nativeRecordInJavaObj == 0)
         lpRecorder = (AudioRecord*)nativeRecordInJavaObj;
         // TODO: We need to find out which members of the Java AudioRecord might need to be
diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp
index 1351818..5c045b6 100644
--- a/core/jni/android_media_AudioTrack.cpp
+++ b/core/jni/android_media_AudioTrack.cpp
@@ -425,6 +425,9 @@
             ALOGE("Error %d initializing AudioTrack", status);
             goto native_init_failure;
         }
+        // Set caller name so it can be logged in destructor.
+        // MediaMetricsConstants.h: AMEDIAMETRICS_PROP_CALLERNAME_VALUE_JAVA
+        lpTrack->setCallerName("java");
     } else {  // end if (nativeAudioTrack == 0)
         lpTrack = (AudioTrack*)nativeAudioTrack;
         // TODO: We need to find out which members of the Java AudioTrack might
diff --git a/core/proto/android/app/settings_enums.proto b/core/proto/android/app/settings_enums.proto
index 997829e..bfa5d70 100644
--- a/core/proto/android/app/settings_enums.proto
+++ b/core/proto/android/app/settings_enums.proto
@@ -2678,4 +2678,15 @@
     // CATEGORY: SETTINGS
     // OS: R
     DEVICE_CONTROLS_SETTINGS = 1844;
+
+    // ACTION: Settings > Wi-Fi > Tap on Openroaming Wi-Fi
+    // CATEGORY: SETTINGS
+    // OS: R
+    OPENROAMING_TAP  = 1845;
+
+    // When device already using any Wi-Fi service, to track if user still want to use Openroaming
+    // ACTION: Settings > Wi-Fi > Tap on Openroaming Wi-Fi
+    // CATEGORY: SETTINGS
+    // OS: R
+    OPENROAMING_TAP_ON_WIFI_CONNECTION  = 1846;
 }
diff --git a/core/res/res/layout/accessibility_shortcut_chooser_item.xml b/core/res/res/layout/accessibility_shortcut_chooser_item.xml
index fff22d9..7cca129 100644
--- a/core/res/res/layout/accessibility_shortcut_chooser_item.xml
+++ b/core/res/res/layout/accessibility_shortcut_chooser_item.xml
@@ -49,12 +49,13 @@
         android:textColor="?attr/textColorPrimary"
         android:fontFamily="sans-serif-medium"/>
 
-    <Switch
-        android:id="@+id/accessibility_shortcut_target_switch_item"
+    <TextView
+        android:id="@+id/accessibility_shortcut_target_status"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:background="@null"
-        android:clickable="false"
-        android:focusable="false"/>
+        android:textSize="20sp"
+        android:textColor="?attr/colorAccent"
+        android:fontFamily="sans-serif-medium"/>
+
 </LinearLayout>
 
diff --git a/core/res/res/layout/notification_template_material_conversation.xml b/core/res/res/layout/notification_template_material_conversation.xml
index 8a57e05..d861f16 100644
--- a/core/res/res/layout/notification_template_material_conversation.xml
+++ b/core/res/res/layout/notification_template_material_conversation.xml
@@ -139,6 +139,32 @@
                         android:layout_weight="1"
                         />
 
+
+                    <TextView
+                        android:id="@+id/app_name_divider"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textAppearance="?attr/notificationHeaderTextAppearance"
+                        android:layout_marginStart="@dimen/notification_header_separating_margin"
+                        android:layout_marginEnd="@dimen/notification_header_separating_margin"
+                        android:text="@string/notification_header_divider_symbol"
+                        android:layout_gravity="center"
+                        android:paddingTop="1sp"
+                        android:singleLine="true"
+                        android:visibility="gone"
+                    />
+
+                    <!-- App Name -->
+                    <com.android.internal.widget.ObservableTextView
+                        android:id="@+id/app_name_text"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginStart="@dimen/conversation_content_start"
+                        android:textSize="12sp"
+                        android:layout_marginBottom="16dp"
+                        android:textAppearance="@style/TextAppearance.DeviceDefault.Notification.Info"
+                    />
+
                     <TextView
                         android:id="@+id/time_divider"
                         android:layout_width="wrap_content"
@@ -230,17 +256,6 @@
                     </LinearLayout>
                 </LinearLayout>
 
-                <!-- App Name -->
-                <com.android.internal.widget.ObservableTextView
-                    android:id="@+id/app_name_text"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="@dimen/conversation_content_start"
-                    android:textSize="12sp"
-                    android:layout_marginBottom="16dp"
-                    android:textAppearance="@style/TextAppearance.DeviceDefault.Notification"
-                />
-
                 <!-- Messages -->
                 <com.android.internal.widget.MessagingLinearLayout
                     android:id="@+id/notification_messaging"
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 9d152aa..b0ee1c8 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"As jy albei volumesleutels vir \'n paar sekondes hou, skakel dit <xliff:g id="SERVICE">%1$s</xliff:g>, \'n toeganklikheidkenmerk, aan. Dit kan verander hoe jou toestel werk.\n\nJy kan hierdie kortpad na \'n ander kenmerk in Instellings en Toeganklikheid verander."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Skakel aan"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Moenie aanskakel nie"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Gee <xliff:g id="SERVICE">%1$s</xliff:g> volle beheer oor jou toestel?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"As jy <xliff:g id="SERVICE">%1$s</xliff:g> aanskakel, sal jou toestel nie jou skermslot gebruik om data-enkripsie te verbeter nie."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Volle beheer is gepas vir programme wat jou help met toeganklikheidsbehoeftes, maar nie vir die meeste programme nie."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Kennisgewings"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Kitsinstellings"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Kragdialoog"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Wissel verdeelde skerm"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Sluitskerm"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Skermkiekie"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Toeganklikheid-kieslys"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> se onderskrifbalk."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> is in die BEPERK-groep geplaas"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Gesprek"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Groepsgesprek"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index af6e15f..d487269 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"ሁለቱንም የድምፅ ቁልፎች ወደ ታች ለጥቂት ሰከንዶች መያዝ የተደራሽነት ባሕሪያትን <xliff:g id="SERVICE">%1$s</xliff:g> ያበራል። ይህ የእርስዎ መሣሪያ እንዴት እንደሚሠራ ሊለውጥ ይችላል።\n\nበቅንብሮች &gt; ተደራሽነት ውስጥ ወደ ሌላ ባሕሪ ይህን አቋራጭ መለወጥ ይችላሉ።"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"አብራ"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"አታብራ"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> ሙሉ የመሣሪያዎ ቁጥጥር እንዲኖረው ይፈቀድለት?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g>ን ካበሩት መሳሪያዎ የውሂብ ምስጠራን ለማላቅ የማያ ገጽ መቆለፊያዎን አይጠቀምም።"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"ሙሉ ቁጥጥር ከተደራሽነት ፍላጎቶች ጋር እርስዎን ለሚያግዝዎት መተግበሪያዎች ተገቢ ነው ሆኖም ግን ለአብዛኛዎቹ መተግበሪያዎች አይሆንም።"</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"ማሳወቂያዎች"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"ፈጣን ቅንብሮች"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"የኃይል መገናኛ"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"የተከፈለ ማያን ቀያይር"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"የማያ ገጽ ቁልፍ"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ቅጽበታዊ ገጽ እይታ"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"የተደራሽነት ምናሌ"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"የ<xliff:g id="APP_NAME">%1$s</xliff:g> የሥዕል ገላጭ ጽሑፍ አሞሌ።"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ወደ የRESTRICTED ባልዲ ተከትቷል"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>፦"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"ውይይት"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"የቡድን ውይይት"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index dfd729e..051aa96 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -1719,6 +1719,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"‏يؤدي الضغط مع الاستمرار لبضع ثوانٍ على كلا مفتاحَي التحكّم في مستوى الصوت إلى تفعيل <xliff:g id="SERVICE">%1$s</xliff:g> وهي إحدى ميزات إمكانية الوصول. يمكن أن يؤدي هذا الإجراء إلى تغيير كيفية عمل جهازك.\n\nيمكنك تغيير هذا الاختصار لاستخدامه مع ميزة أخرى في الإعدادات &gt; أدوات تمكين الوصول."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"تفعيل"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"عدم التفعيل"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"هل تريد السماح لخدمة <xliff:g id="SERVICE">%1$s</xliff:g> بالتحكّم الكامل في جهازك؟"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"في حال تفعيل <xliff:g id="SERVICE">%1$s</xliff:g>، لن يستخدم جهازك ميزة قفل الشاشة لتحسين ترميز البيانات."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"إنّ التحكّم الكامل ليس ملائمًا لمعظم التطبيقات، باستثناء التطبيقات المعنية بسهولة الاستخدام."</string>
@@ -2174,13 +2178,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"الإشعارات"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"الإعدادات السريعة"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"مربّع حوار الطاقة"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"تبديل \"تقسيم الشاشة\""</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"شاشة القفل"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"لقطة شاشة"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"قائمة \"سهولة الاستخدام\""</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"شريط الشرح لتطبيق <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"تم وضع <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> في الحزمة \"محظورة\"."</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"محادثة"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"محادثة جماعية"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index ecf0394..755361a 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"দুয়োটা ভলিউম কী কিছুসময়ৰ বাবে ধৰি থাকিলে এটা সাধ্য- সুবিধা <xliff:g id="SERVICE">%1$s</xliff:g> অন কৰে। এইটোৱে আপোনাৰ ডিভাইচটোৱে কাম কৰাৰ ধৰণ সলনি কৰিব পাৰে।\n\nআপুনি ছেটিংসমূহ &gt; সাধ্য-সুবিধাসমূহত এই শ্বৰ্টকাটটো অন্য এটা সুবিধালৈ সলনি কৰিব পাৰে।"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"অন কৰক"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"অন নকৰিব"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g>ক আপোনাৰ ডিভাইচটোৰ সম্পূর্ণ নিয়ন্ত্ৰণ দিবনে?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"যদি আপুনি <xliff:g id="SERVICE">%1$s</xliff:g> অন কৰে, তেন্তে আপোনাৰ ডিভাইচটোৱে ডেটা এনক্ৰিপশ্বনৰ গুণগত মান উন্নত কৰিবলৈ স্ক্ৰীন লক ব্যৱহাৰ নকৰে।"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"আপোনাক সাধ্য সুবিধাৰ প্ৰয়োজনসমূহৰ জৰিয়তে সহায় কৰা এপ্‌সমূহৰ বাবে সম্পূর্ণ নিয়ন্ত্ৰণৰ সুবিধাটো সঠিক যদিও অধিকাংশ এপৰ বাবে এয়া সঠিক নহয়।"</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"জাননীসমূহ"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"ক্ষিপ্ৰ ছেটিংসমূহ"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"পাৱাৰ ডায়লগ"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"বিভাজিত স্ক্ৰীন ট’গল কৰক"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"লক স্ক্ৰীন"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"স্ক্ৰীণশ্বট"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"সাধ্য সুবিধাৰ মেনু"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>ৰ কেপশ্বন বাৰ।"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>ক সীমাবদ্ধ বাকেটটোত ৰখা হৈছে"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"বাৰ্তালাপ"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"গোটত কৰা বাৰ্তালাপ"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 1e633d3..049a846 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Hər iki səs səviyyəsi düyməsinə bir neçə saniyə basıb saxladıqda əlçatımlılıq funksiyası olan <xliff:g id="SERVICE">%1$s</xliff:g> aktiv olur. Bu, cihazınızın işləmə qaydasını dəyişə bilər.\n\nAyarlar və Əlçatımlılıq bölməsində bu qısayolu başqa bir funksiyata dəyişə bilərsiniz."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Aktiv edin"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Aktiv etməyin"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> xidmətinin cihaza tam nəzarət etməsinə icazə verilsin?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> aktiv olarsa, cihazınız data şifrələnməsini genişləndirmək üçün ekran kilidini istifadə etməyəcək."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Tam nəzarət əlçatımlılıq ehtiyaclarınızı ödəyən bəzi tətbiqlər üçün uyğundur."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Bildirişlər"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Sürətli Ayarlar"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Yandırıb-söndürmə dialoqu"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Bölünmüş Ekrana keçid"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Kilid Ekranı"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Ekran şəkli"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Əlçatımlılıq Menyusu"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> başlıq paneli."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> MƏHDUDLAŞDIRILMIŞ səbətinə yerləşdirilib"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Söhbət"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Qrup Söhbəti"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index abcecb7..181871f 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -1653,6 +1653,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ako zadržite oba tastera za jačinu zvuka par sekundi, uključuje se <xliff:g id="SERVICE">%1$s</xliff:g>, funkcija pristupačnosti. To može da promeni način rada uređaja.\n\nMožete da promenite funkciju na koju se odnosi ova prečica u odeljku Podešavanja &gt; Pristupačnost."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Uključi"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ne uključuj"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Želite li da dozvolite da usluga <xliff:g id="SERVICE">%1$s</xliff:g> ima potpunu kontrolu nad uređajem?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ako uključite uslugu <xliff:g id="SERVICE">%1$s</xliff:g>, uređaj neće koristiti zaključavanje ekrana da bi poboljšao šifrovanje podataka."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Potpuna kontrola je primerena za aplikacije koje vam pomažu kod usluga pristupačnosti, ali ne i za većinu aplikacija."</string>
@@ -2072,13 +2076,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Obaveštenja"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Brza podešavanja"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Dijalog napajanja"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Uključite/isključite podeljeni ekran"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Zaključani ekran"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Snimak ekrana"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Meni Pristupačnost"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Traka sa naslovima aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> je dodat u segment OGRANIČENO"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Konverzacija"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Grupna konverzacija"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index eb2f01b..306a25a 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -1675,6 +1675,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Утрымліванне націснутымі абедзвюх клавіш гучнасці на працягу некалькіх секунд уключае службу \"<xliff:g id="SERVICE">%1$s</xliff:g>\", якая з\'яўляецца спецыяльнай магчымасцю. У выніку ваша прылада можа пачаць працаваць па-іншаму.\n\nВы можаце задаць гэта спалучэнне клавіш для іншай функцыі ў меню \"Налады &gt; Спецыяльныя магчымасці\"."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Уключыць"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Не ўключаць"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Дазволіць сэрвісу \"<xliff:g id="SERVICE">%1$s</xliff:g>\" мець поўны кантроль над вашай прыладай?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Калі вы ўключыце сэрвіс \"<xliff:g id="SERVICE">%1$s</xliff:g>\", на прыладзе не будзе выкарыстоўвацца блакіроўка экрана для паляпшэння шыфравання даных."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Поўны кантроль прызначаны для сэрвісаў спецыяльных магчымасцей, аднак не падыходзіць для большасці праграм."</string>
@@ -2106,13 +2110,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Апавяшчэнні"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Хуткія налады"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Дыялогавае акно сілкавання"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Пераключальнік падзеленага экрана"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Экран блакіроўкі"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Здымак экрана"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Меню спецыяльных магчымасцей"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Панэль субцітраў праграмы \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакет \"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>\" дададзены ў АБМЕЖАВАНУЮ групу"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Размова"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Групавая размова"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 9e73d42..91f76cd 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Натиснете двата бутона за силата на звука и ги задръжте за няколко секунди, за да включите функцията за достъпност <xliff:g id="SERVICE">%1$s</xliff:g>. Това може да промени начина, по който работи устройството ви.\n\nМожете да зададете друга функция за този пряк път от „Настройки“ &gt; „Достъпност“."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Включване"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Без включване"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Искате ли да разрешите на <xliff:g id="SERVICE">%1$s</xliff:g> да има пълен контрол над устройството ви?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ако включите <xliff:g id="SERVICE">%1$s</xliff:g>, устройството ви няма да подобрява шифроването на данни посредством опцията ви за заключване на екрана."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Пълният контрол е подходящ за приложенията, които помагат на потребителите със специални нужди, но не и за повечето приложения."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Известия"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Бързи настройки"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Диалогов прозорец за захранването"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Превключване на разделения екран"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Заключен екран"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Екранна снимка"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Меню за достъпност"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Лента за надписи на <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакетът <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> е поставен в ОГРАНИЧЕНИЯ контейнер"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Разговор"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Групов разговор"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"Над <xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>"</string>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index 9f064a2..9ad8c81 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"উভয় ভলিউম কী কয়েক সেকেন্ড ধরে থাকলে <xliff:g id="SERVICE">%1$s</xliff:g> চালু হয়ে যাবে। এটি একটি অ্যাক্সেসিবিলিটি ফিচার। এর ফলে, আপনার ডিভাইস কীভাবে কাজ করবে সেটিতে পরিবর্তন হতে পারে।\n\nসেটিংস &gt; অ্যাক্সেসিবিলিটি থেকে আপনি এই শর্টকাট পরিবর্তন করতে পারবেন।"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"চালু করুন"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"চালু করবেন না"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> অ্যাপটিকে আপনার ডিভাইসে সম্পূর্ণ নিয়ন্ত্রণের অনুমতি দিতে চান?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> চালু করলে, ডেটা এনক্রিপশন উন্নত করার উদ্দেশ্যে আপনার ডিভাইস স্ক্রিন লক ব্যবহার করবে না।"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"যে অ্যাপগুলি আপনাকে অ্যাক্সেসিবিলিটির প্রয়োজন মেটাতে সাহায্য করে সেই অ্যাপগুলির জন্য সম্পূর্ণ নিয়ন্ত্রণের বিষয়টি উপযুক্ত, কিন্তু তা বলে সমস্ত অ্যাপের জন্য নয়।"</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"বিজ্ঞপ্তি"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"দ্রুত সেটিংস"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"পাওয়ার ডায়লগ"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"স্প্লিট স্ক্রিন টগল করুন"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"লক স্ক্রিন"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"স্ক্রিনশট"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"অ্যাক্সেসিবিলিটি মেনু"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>-এর ক্যাপশন বার।"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> সীমাবদ্ধ গ্রুপে অন্তর্ভুক্ত করা হয়েছে"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"কথোপকথন"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"গ্রুপ কথোপকথন"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index d4fee2e..ab305ba 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -1655,6 +1655,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ako nekoliko sekundi držite pritisnute obje tipke za jačinu zvuka, uključit ćete funkciju pristupačnosti <xliff:g id="SERVICE">%1$s</xliff:g>. Ovo može promijeniti način rada uređaja.\n\nOvu prečicu možete zamijeniti drugom funkcijom u odjeljku Postavke &gt; Pristupačnost."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Uključi"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nemoj uključivati"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Dozvoliti da usluga <xliff:g id="SERVICE">%1$s</xliff:g> ima punu kontrolu nad vašim uređajem?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ako uključite uslugu <xliff:g id="SERVICE">%1$s</xliff:g>, uređaj neće koristiti zaključavanje ekrana za poboljšanje šifriranja podataka."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Puna kontrola je prikladna za aplikacije koje vam pomažu kod potreba za pristupačnosti, ali nije za većinu aplikacija."</string>
@@ -2074,13 +2078,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Obavještenja"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Brze postavke"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Dijaloški okvir za napajanje"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Uključi/isključi podijeljeni ekran"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Zaključavanje ekrana"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Snimak ekrana"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Meni za pristupačnost"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Traka za natpis aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> je stavljen u odjeljak OGRANIČENO"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Razgovor"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Grupni razgovor"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index d7211bd..8cbd3ec 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Si mantens premudes les dues tecles de volum durant uns segons, la funció d\'accessibilitat <xliff:g id="SERVICE">%1$s</xliff:g> s\'activarà. Això podria canviar el funcionament del teu dispositiu.\n\nPots canviar la funció d\'aquesta drecera a Configuració &gt; Accessibilitat."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Activa"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"No activis"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vols permetre que <xliff:g id="SERVICE">%1$s</xliff:g> controli el teu dispositiu per complet?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si actives <xliff:g id="SERVICE">%1$s</xliff:g>, el dispositiu no farà servir el bloqueig de pantalla per millorar l\'encriptació de dades."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"El control total és adequat per a les aplicacions que t\'ajuden amb l\'accessibilitat, però no per a la majoria de les aplicacions."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Notificacions"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Configuració ràpida"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Quadre de diàleg d\'engegada"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Commuta Pantalla dividida"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Pantalla de bloqueig"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Captura de pantalla"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menú d\'accessibilitat"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de títol de l\'aplicació <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> s\'ha transferit al segment RESTRINGIT"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversa"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Conversa de grup"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 8de20cb..3f57bbf 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -1675,6 +1675,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Podržením obou tlačítek hlasitosti po dobu několika sekund zapnete funkci pro usnadnění přístupu <xliff:g id="SERVICE">%1$s</xliff:g>. Tato funkce může změnit fungování zařízení.\n\nZkratku můžete nastavit na jinou funkci v Nastavení &gt; Přístupnost."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Zapnout"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nezapínat"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Chcete službě <xliff:g id="SERVICE">%1$s</xliff:g> povolit, aby nad vaším zařízením měla plnou kontrolu?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Pokud zapnete službu <xliff:g id="SERVICE">%1$s</xliff:g>, zařízení nebude používat zámek obrazovky k vylepšení šifrování dat."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Plná kontrola je vhodná u aplikací, které vám pomáhají s usnadněním přístupu, nikoli u většiny aplikací."</string>
@@ -2106,13 +2110,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Oznámení"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Rychlé nastavení"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Dialogové okno k napájení"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Přepnout rozdělenou obrazovku"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Obrazovka uzamčení"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Snímek obrazovky"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Nabídka usnadnění přístupu"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Popisek aplikace <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Balíček <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> byl vložen do sekce OMEZENO"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Konverzace"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Skupinová konverzace"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 2c135fb..2a08386 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Hvis du holder begge lydstyrkeknapperne nede i et par sekunder, aktiveres hjælpefunktionen <xliff:g id="SERVICE">%1$s</xliff:g>. Det kan ændre på, hvordan din enhed fungerer.\n\nDu kan ændre denne genvej til en anden funktion i Indstillinger &gt; Hjælpefunktioner."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Aktivér"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Aktivér ikke"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vil du give <xliff:g id="SERVICE">%1$s</xliff:g> fuld kontrol over din enhed?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Hvis du aktiverer <xliff:g id="SERVICE">%1$s</xliff:g>, vil enheden ikke benytte skærmlåsen til at forbedre datakrypteringen."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Fuld kontrol er velegnet til apps, der hjælper dig med hjælpefunktioner, men ikke de fleste apps."</string>
@@ -1795,8 +1799,8 @@
     <string name="battery_saver_description_with_learn_more" msgid="1817385558636532621">"Batterisparefunktionen gør følgende for at spare på batteriet:\n·Aktiverer Mørkt tema\n·Deaktiverer eller begrænser aktivitet i baggrunden, visse visuelle effekter og andre funktioner som f.eks. \"Hey Google\"\n\n"<annotation id="url">"Få flere oplysninger"</annotation></string>
     <string name="battery_saver_description" msgid="7618492104632328184">"Batterisparefunktionen gør følgende for at spare på batteriet:\n·Aktiverer Mørkt tema\n·Deaktiverer eller begrænser aktivitet i baggrunden, visse visuelle effekter og andre funktioner som f.eks. \"Hey Google\""</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Datasparefunktionen forhindrer nogle apps i at sende eller modtage data i baggrunden for at reducere dataforbruget. En app, der er i brug, kan få adgang til data, men gør det måske ikke så ofte. Dette kan f.eks. betyde, at billeder ikke vises, før du trykker på dem."</string>
-    <string name="data_saver_enable_title" msgid="7080620065745260137">"Vil du slå Datasparefunktion til?"</string>
-    <string name="data_saver_enable_button" msgid="4399405762586419726">"Slå til"</string>
+    <string name="data_saver_enable_title" msgid="7080620065745260137">"Vil du aktivere Datasparefunktion?"</string>
+    <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivér"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="2877101784123058273">
       <item quantity="one">I %1$d minutter (indtil <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="other">I %1$d minutter (indtil <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Notifikationer"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Kvikmenu"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Dialogboks om strøm"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Slå Opdelt skærm til eller fra"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Låseskærm"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menuen Hjælpefunktioner"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Titellinje for <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> er blevet placeret i samlingen BEGRÆNSET"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Samtale"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Gruppesamtale"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 3567a96..fe344a1 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Wenn du beide Lautstärketasten einige Sekunden lang gedrückt hältst, aktivierst du die Bedienungshilfe \"<xliff:g id="SERVICE">%1$s</xliff:g>\". Dadurch kann sich die Funktionsweise deines Geräts ändern.\n\nUnter \"Einstellungen &gt; \"Bedienungshilfen\" kannst du dieser Verknüpfung eine andere Funktion zuweisen."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Aktivieren"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nicht aktivieren"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> die vollständige Kontrolle über dein Gerät geben?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Wenn du <xliff:g id="SERVICE">%1$s</xliff:g> aktivierst, verwendet dein Gerät nicht die Displaysperre, um die Datenverschlüsselung zu verbessern."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Die vollständige Kontrolle sollte nur für die Apps aktiviert werden, die dir den Zugang zu den App-Funktionen erleichtern. Das ist in der Regel nur ein kleiner Teil der Apps."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Benachrichtigungen"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Schnelleinstellungen"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Kleines Fenster für Akkustand"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"\"Bildschirm teilen\" ein-/ausschalten"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Sperrbildschirm"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menü \"Bedienungshilfen\""</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Untertitelleiste von <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> wurde in den BESCHRÄNKT-Bucket gelegt"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Unterhaltung"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Gruppenunterhaltung"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 05b5e52..7caaa67 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Μπορείτε να ενεργοποιήσετε τη λειτουργία <xliff:g id="SERVICE">%1$s</xliff:g>, η οποία είναι μία από τις λειτουργίες προσβασιμότητας, πατώντας παρατεταμένα ταυτόχρονα τα δύο πλήκτρα έντασης ήχου για μερικά δευτερόλεπτα. Αυτό ενδέχεται να αλλάξει τον τρόπο λειτουργίας της συσκευής σας.\n\nΜπορείτε να αλλάξετε αυτή τη συντόμευση σε μια άλλη λειτουργία στις Ρυθμίσεις &gt; Προσβασιμότητα."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Ενεργοποίηση"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Να μην ενεργοποιηθούν"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Να επιτρέπεται στην υπηρεσία <xliff:g id="SERVICE">%1$s</xliff:g> να έχει τον πλήρη έλεγχο της συσκευής σας;"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Εάν ενεργοποιήσετε την υπηρεσία <xliff:g id="SERVICE">%1$s</xliff:g>, η συσκευή σας δεν θα χρησιμοποιεί το κλείδωμα οθόνης για τη βελτίωση της κρυπτογράφησης δεδομένων."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Ο πλήρης έλεγχος είναι κατάλληλος για εφαρμογές που εξυπηρετούν τις ανάγκες προσβασιμότητάς σας, αλλά όχι για όλες τις εφαρμογές."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Ειδοποιήσεις"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Γρήγορες ρυθμίσεις"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Παράθυρο διαλόγου λειτουργίας συσκευής"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Εναλλαγή διαχωρισμού οθόνης"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Οθόνη κλειδώματος"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Στιγμιότυπο οθόνης"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Μενού προσβασιμότητας"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Γραμμή υποτίτλων για την εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Το πακέτο <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> τοποθετήθηκε στον κάδο ΠΕΡΙΟΡΙΣΜΕΝΗΣ ΠΡΟΣΒΑΣΗΣ."</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Συνομιλία"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Ομαδική συνομιλία"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index d7047c5..13c0820 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Holding down both volume keys for a few seconds turns on <xliff:g id="SERVICE">%1$s</xliff:g>, an accessibility feature. This may change how your device works.\n\nYou can change this shortcut to another feature in Settings &gt; Accessibility."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Turn on"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Don’t turn on"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Allow <xliff:g id="SERVICE">%1$s</xliff:g> to have full control of your device?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"If you turn on <xliff:g id="SERVICE">%1$s</xliff:g>, your device won’t use your screen lock to enhance data encryption."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full control is appropriate for apps that help you with accessibility needs, but not for most apps."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Notifications"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Quick Settings"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Power Dialogue"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Toggle Split Screen"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lock Screen"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Accessibility menu"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Caption bar of <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversation"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Group conversation"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index a7ab427..48ff9f3 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Holding down both volume keys for a few seconds turns on <xliff:g id="SERVICE">%1$s</xliff:g>, an accessibility feature. This may change how your device works.\n\nYou can change this shortcut to another feature in Settings &gt; Accessibility."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Turn on"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Don’t turn on"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Allow <xliff:g id="SERVICE">%1$s</xliff:g> to have full control of your device?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"If you turn on <xliff:g id="SERVICE">%1$s</xliff:g>, your device won’t use your screen lock to enhance data encryption."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full control is appropriate for apps that help you with accessibility needs, but not for most apps."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Notifications"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Quick Settings"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Power Dialogue"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Toggle Split Screen"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lock Screen"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Accessibility menu"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Caption bar of <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversation"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Group conversation"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index d7047c5..13c0820 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Holding down both volume keys for a few seconds turns on <xliff:g id="SERVICE">%1$s</xliff:g>, an accessibility feature. This may change how your device works.\n\nYou can change this shortcut to another feature in Settings &gt; Accessibility."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Turn on"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Don’t turn on"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Allow <xliff:g id="SERVICE">%1$s</xliff:g> to have full control of your device?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"If you turn on <xliff:g id="SERVICE">%1$s</xliff:g>, your device won’t use your screen lock to enhance data encryption."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full control is appropriate for apps that help you with accessibility needs, but not for most apps."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Notifications"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Quick Settings"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Power Dialogue"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Toggle Split Screen"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lock Screen"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Accessibility menu"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Caption bar of <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversation"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Group conversation"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index d7047c5..13c0820 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Holding down both volume keys for a few seconds turns on <xliff:g id="SERVICE">%1$s</xliff:g>, an accessibility feature. This may change how your device works.\n\nYou can change this shortcut to another feature in Settings &gt; Accessibility."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Turn on"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Don’t turn on"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Allow <xliff:g id="SERVICE">%1$s</xliff:g> to have full control of your device?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"If you turn on <xliff:g id="SERVICE">%1$s</xliff:g>, your device won’t use your screen lock to enhance data encryption."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full control is appropriate for apps that help you with accessibility needs, but not for most apps."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Notifications"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Quick Settings"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Power Dialogue"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Toggle Split Screen"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lock Screen"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Accessibility menu"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Caption bar of <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversation"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Group conversation"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml
index 77d2f31..67a0381 100644
--- a/core/res/res/values-en-rXC/strings.xml
+++ b/core/res/res/values-en-rXC/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‎‏‏‏‎‎‏‎‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‏‏‏‎‏‏‏‎‏‏‎‎‏‎‏‎‎‏‎‏‏‏‏‏‏‎‎‎‎‏‎Holding down both volume keys for a few seconds turns on ‎‏‎‎‏‏‎<xliff:g id="SERVICE">%1$s</xliff:g>‎‏‎‎‏‏‏‎, an accessibility feature. This may change how your device works.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎You can change this shortcut to another feature in Settings &gt; Accessibility.‎‏‎‎‏‎"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‏‎‏‎‎‏‎‏‎‏‎‏‏‎‎‎‎‎‎‏‎‎‎‎‏‎‎‏‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎Turn on‎‏‎‎‏‎"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‏‎‏‏‎‎‎‎‏‎‎‏‏‎‏‏‏‏‏‎‏‎‏‎‎‎‏‎‏‎‏‏‎‏‎‏‏‎‏‏‏‎‎‏‏‎‏‏‏‎‎‎‏‏‎Don’t turn on‎‏‎‎‏‎"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‏‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‎‏‏‏‏‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‏‎‎‎‏‏‏‏‎‎‎‏‎‏‏‎‎‎Allow ‎‏‎‎‏‏‎<xliff:g id="SERVICE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ to have full control of your device?‎‏‎‎‏‎"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‎‏‎‏‏‏‏‎‎‎‏‏‎‏‏‎‏‎‏‎‎‎‏‏‏‏‏‎‏‎‏‎‎‏‎‎‏‏‏‏‎‎‏‏‏‏‏‎‏‏‎‏‎If you turn on ‎‏‎‎‏‏‎<xliff:g id="SERVICE">%1$s</xliff:g>‎‏‎‎‏‏‏‎, your device won’t use your screen lock to enhance data encryption.‎‏‎‎‏‎"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‎‎‎‎‏‏‎‎‎‎‏‏‏‏‎‎‏‏‎‏‏‏‎‎‏‏‏‎‎‎‎‎‎‎‎‎‎‎‏‎‎‎‎‎‎‏‎‏‎‏‏‎‎‏‎‏‎Full control is appropriate for apps that help you with accessibility needs, but not for most apps.‎‏‎‎‏‎"</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‏‎‏‏‎‏‏‏‏‎‎‎‏‎‎‎‏‎‏‏‎‎‎‏‎‏‏‎‏‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‎‏‏‎‏‎‎Notifications‎‏‎‎‏‎"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‏‎‎‏‎‎‎‏‏‏‎‎‎‎‎‎‎‏‏‎‎‏‏‎‏‏‏‏‏‎‏‏‎‎‎‏‏‏‏‎‎‎‏‎‏‏‏‎Quick Settings‎‏‎‎‏‎"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‏‎‎‎‎‏‏‎‏‏‏‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‎‎‏‏‎‏‎‏‎‏‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‎Power Dialog‎‏‎‎‏‎"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‎‎‏‎‎‎‎‎‏‏‎‎‎‎‎‎‏‏‎‎‎‎‎‏‏‎‎‎‏‎‎‏‏‏‎‏‏‏‎‎‏‎‎‎Toggle Split Screen‎‏‎‎‏‎"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‎‏‏‎‏‏‏‏‎‎‎‎‏‎‎‏‏‎‎‎‎‎‏‎‏‏‏‎‎‏‏‏‏‎‏‎‏‏‎‏‎‎‎‏‏‎‏‎‏‏‏‏‏‎‎Lock Screen‎‏‎‎‏‎"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‏‏‎‏‏‎‏‎‎‎‏‎‎‎‏‏‏‏‏‎‎‎‏‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‏‎‎‏‏‎‏‎‏‎‏‎‏‏‎‎‎Screenshot‎‏‎‎‏‎"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‏‎‎‎‏‏‎‏‎‏‎‎‎‎‏‎‏‏‏‎‏‎‏‎‎‏‏‏‎‎‏‏‎‎‏‎‎‏‏‏‏‎‎‏‏‎‎‎‎‎‎‎Accessibility Menu‎‏‎‎‏‎"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‎‎‎‏‎‏‏‏‎‏‏‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‏‏‎‏‎‎‏‎‏‎‎Caption bar of ‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎.‎‏‎‎‏‎"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‎‏‎‎‏‎‎‏‎‏‏‎‎‏‎‏‎‎‎‎‎‎‎‏‎‎‎‎‎‎‏‏‏‎‏‎‎‎‎‎‏‎‏‏‏‏‎‏‎‏‎‎‎‎‏‎‎‏‏‎<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ has been put into the RESTRICTED bucket‎‏‎‎‏‎"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‎‎‏‎‎‏‎‏‎‎‎‎‎‎‎‏‏‎‎‎‏‎‏‎‎‎‎‏‏‎‎‏‏‎‎‎‏‎‎‎‏‎‏‎‏‏‏‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="SENDER_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎:‎‏‎‎‏‎"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‏‏‏‎‏‎‎‎‎‏‏‎‎‏‏‏‎‏‏‎‎‎‎‏‏‎‎‏‏‎‏‏‎‎‏‎‎‎‎‏‏‏‏‎‎‏‏‎‎‎‏‏‎‎Conversation‎‏‎‎‏‎"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‏‎‎‎‏‎‎‏‏‎‎‎‏‎‏‎‎‎‏‎‏‏‏‎‎‏‏‏‏‏‏‏‎‏‎‎‎‏‏‏‏‎‏‏‎‏‎‏‏‏‏‎Group Conversation‎‏‎‎‏‎"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‏‏‎‎‎‏‏‎‎‏‎‏‎‏‎‏‏‏‏‎‎‏‎‎‏‏‏‎‏‏‏‏‎‎‏‎‏‎‏‏‎‏‏‏‏‎‏‏‎‏‏‎‏‎‎‏‎‎‏‎‎‏‏‎<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>‎‏‎‎‏‏‏‎+‎‏‎‎‏‎"</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 0fc7ec5..6c0ebbd 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Si mantienes presionadas ambas teclas de volumen durante unos segundos, se activará la función de accesibilidad <xliff:g id="SERVICE">%1$s</xliff:g>. Esto podría cambiar la forma en que funciona tu dispositivo.\n\nPuedes cambiar este acceso directo a otra función en Configuración &gt; Accesibilidad."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Activar"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"No activar"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"¿Deseas permitir que <xliff:g id="SERVICE">%1$s</xliff:g> tenga el control total del dispositivo?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si activas <xliff:g id="SERVICE">%1$s</xliff:g>, el dispositivo no utilizará el bloqueo de pantalla para mejorar la encriptación de datos."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"El control total es apropiado para las apps que te ayudan con las necesidades de accesibilidad, pero no para la mayoría de las apps."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Notificaciones"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Configuración rápida"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Diálogo de encendido"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Activar o desactivar pantalla dividida"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Bloquear pantalla"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Captura de pantalla"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menú de accesibilidad"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de subtítulos de <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Se colocó <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> en el depósito RESTRICTED"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversación"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Conversación en grupo"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"+<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index b923564..541ca8a 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Al mantener pulsadas ambas teclas de volumen durante unos segundos se activa <xliff:g id="SERVICE">%1$s</xliff:g>, una función de accesibilidad. Esta función puede modificar el funcionamiento del dispositivo.\n\nPuedes asignar este acceso directo a otra función en Ajustes &gt; Accesibilidad."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Activar"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"No activar"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"¿Permitir que <xliff:g id="SERVICE">%1$s</xliff:g> pueda controlar totalmente tu dispositivo?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si activas <xliff:g id="SERVICE">%1$s</xliff:g>, el dispositivo no utilizará el bloqueo de pantalla para mejorar el cifrado de datos."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"El control total es adecuado para las aplicaciones de accesibilidad, pero no para la mayoría de las aplicaciones."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Notificaciones"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Ajustes rápidos"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Abrir cuadro de diálogo"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Activar o desactivar la pantalla dividida"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Pantalla de bloqueo"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Captura de pantalla"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menú de accesibilidad"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de subtítulos de <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> se ha incluido en el grupo de restringidos"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversación"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Conversación de grupo"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"+ <xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>"</string>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 518aa60..e36be2e 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Kui hoiate mõlemat helitugevuse nuppu mõni sekund all, lülitatakse sisse juurdepääsufunktsioon <xliff:g id="SERVICE">%1$s</xliff:g>. See võib teie seadme tööviisi muuta.\n\nSelle otsetee saab asendada muu otseteega jaotises Seaded &gt; Juurdepääsetavus."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Lülita sisse"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ära lülita sisse"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Kas anda teenusele <xliff:g id="SERVICE">%1$s</xliff:g> teie seadme üle täielik kontroll?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Kui lülitate sisse teenuse <xliff:g id="SERVICE">%1$s</xliff:g>, ei kasuta seade andmete krüpteerimise täiustamiseks ekraanilukku."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Täielik haldusõigus sobib rakendustele, mis pakuvad juurdepääsufunktsioone. Enamiku rakenduste puhul seda ei soovitata."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Märguanded"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Kiirseaded"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Energiasäästja dialoog"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Vaheta jagatud ekraanikuva"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lukustuskuva"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Ekraanipilt"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Juurdepääsetavuse menüü"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Rakenduse <xliff:g id="APP_NAME">%1$s</xliff:g> pealkirjariba."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> on lisatud salve PIIRANGUTEGA"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Vestlus"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Grupivestlus"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index a7777fd..10b3970 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Eduki sakatuta bolumen-teklak segundo batzuez <xliff:g id="SERVICE">%1$s</xliff:g> izeneko erabilerraztasun-eginbidea aktibatzeko. Honen bidez, baliteke zure mugikorraren funtzionamendua aldatzea.\n\nLasterbide hau beste eginbide batengatik aldatzeko, joan Ezarpenak &gt; Erabilerraztasuna atalera."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Aktibatu"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ez aktibatu"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Gailua guztiz kontrolatzeko baimena eman nahi diozu <xliff:g id="SERVICE">%1$s</xliff:g> zerbitzuari?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> aktibatzen baduzu, gailuak ez du pantailaren blokeoa erabiliko datuen enkriptatzea hobetzeko."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Erabilerraztasun-beharrak asetzen dituzten aplikazioetan da egokia kontrol osoa, baina ez aplikazio gehienetan."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Jakinarazpenak"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Ezarpen bizkorrak"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Piztu edo itzaltzeko leihoa"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Aktibatu/Desaktibatu pantaila zatitua"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Pantaila blokeatua"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Pantaila-argazkia"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Erabilerraztasun-menua"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioko azpitituluen barra."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Murriztuen edukiontzian ezarri da <xliff:g id="PACKAGE_NAME">%1$s</xliff:g>"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Elkarrizketa"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Taldeko elkarrizketa"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 474c803..c7fc1cb 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"با پایین نگه داشتن هردو کلید میزان صدا به‌مدت چند ثانیه، <xliff:g id="SERVICE">%1$s</xliff:g> (یکی از ویژگی‌های دسترس‌پذیری) روشن می‌شود. با این کار نحوه عملکرد دستگاهتان تغییر می‌کند.\n\nمی‌توانید در «تنظیمات &gt; دسترس‌پذیری»،‌این میان‌بر را به ویژگی دیگری تغییر دهید."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"روشن کردن"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"روشن نشود"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"به <xliff:g id="SERVICE">%1$s</xliff:g> اجازه می‌دهید بر دستگاهتان کنترل کامل داشته باشد؟"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"اگر <xliff:g id="SERVICE">%1$s</xliff:g> را روشن کنید، دستگاه شما از قفل صفحه شما جهت بهبود رمزگذاری اطلاعات استفاده نخواهد کرد."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"کنترل کامل برای بیشتر برنامه‌ها مناسب نیست، به‌جز برنامه‌هایی که به شما در زمینه نیازهای دسترس‌پذیری کمک می‌کند."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"اعلان‌ها"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"تنظیمات سریع"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"کادر گفتگوی روشن/خاموش"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"تغییر وضعیت صفحهٔ دونیمه"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"صفحه قفل"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"نماگرفت"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"منوی دسترس‌پذیری"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"نوار شرح <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> در سطل «محدودشده» قرار گرفت"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"مکالمه"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"مکالمه گروهی"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"+<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>"</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 2469327..fd682a4 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Molempien äänenvoimakkuuspainikkeiden pitkään painaminen laittaa päälle esteettömyysominaisuuden <xliff:g id="SERVICE">%1$s</xliff:g>. Tämä voi muuttaa laitteesi toimintaa.\n\nVoit muuttaa tätä pikanäppäintä kohdassa Asetukset &gt; Esteettömyys."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Laita päälle"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Älä laita päälle"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Saako <xliff:g id="SERVICE">%1$s</xliff:g> laitteesi täyden käyttöoikeuden?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jos <xliff:g id="SERVICE">%1$s</xliff:g> otetaan käyttöön, laitteesi ei käytä näytön lukitusta tiedon salauksen parantamiseen."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Täysi käyttöoikeus sopii esteettömyyssovelluksille, mutta ei useimmille sovelluksille."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Ilmoitukset"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Pika-asetukset"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Virran valintaikkuna"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Jaettu näyttö päälle/pois"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lukitusnäyttö"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Kuvakaappaus"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Esteettömyysvalikko"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Tekstityspalkki: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> on nyt rajoitettujen ryhmässä"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Keskustelu"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Ryhmäkeskustelu"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 515637d..efcee14 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Si vous maintenez enfoncées les deux touches de volume pendant quelques secondes, vous activez la fonctionnalité d\'accessibilité <xliff:g id="SERVICE">%1$s</xliff:g>. Cela peut modifier le fonctionnement de votre appareil.\n\nPour attribuer ce raccourci à une autre fonctionnalité, sélectionnez Paramètres &gt; Accessibilité."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Activer"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ne pas activer"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Permettre à <xliff:g id="SERVICE">%1$s</xliff:g> de commander complètement votre appareil?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si vous activez <xliff:g id="SERVICE">%1$s</xliff:g>, votre appareil n\'utilisera pas le verrouillage de l\'écran pour améliorer le chiffrement des données."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Le contrôle total convient aux applications qui répondent à vos besoins d\'accessibilité. Il ne convient pas à la plupart des applications."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Notifications"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Paramètres rapides"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Boîte de dialogue sur l\'alimentation"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Basculer l\'écran partagé"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Écran de verrouillage"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Capture d\'écran"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu d\'accessibilité"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barre de légende de l\'application <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> a été placé dans le compartiment RESTREINT"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g> :"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversation"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Conversation de groupe"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 86facd4..8d0687d 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Si vous appuyez sur les deux touches de volume pendant quelques secondes, vous activez la fonctionnalité d\'accessibilité <xliff:g id="SERVICE">%1$s</xliff:g>. Cela peut affecter le fonctionnement de votre appareil.\n\nPour attribuer ce raccourci à une autre fonctionnalité, accédez à Paramètres &gt; Accessibilité."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Activer"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ne pas activer"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Accorder le contrôle total de votre appareil au service <xliff:g id="SERVICE">%1$s</xliff:g> ?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si vous activez <xliff:g id="SERVICE">%1$s</xliff:g>, votre appareil n\'utilisera pas le verrouillage de l\'écran pour améliorer le chiffrement des données."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Le contrôle total convient aux applications qui répondent à vos besoins d\'accessibilité. Il ne convient pas à la plupart des applications."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Notifications"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Configuration rapide"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Boîte de dialogue Marche/Arrêt"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Activer/Désactiver l\'écran partagé"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Verrouiller l\'écran"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Capture d\'écran"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu d\'accessibilité"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barre de légende de l\'application <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> a été placé dans le bucket RESTRICTED"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g> :"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversation"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Conversation de groupe"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g> ou +"</string>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index c7cdd13..0496810 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ao manter as dúas teclas de volume premidas durante uns segundos actívase <xliff:g id="SERVICE">%1$s</xliff:g>, unha función de accesibilidade. Esta acción pode cambiar o funcionamento do dispositivo.\n\nPodes cambiar o uso deste atallo para outra función en Configuración &gt; Accesibilidade."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Activar"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Non activar"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Queres permitir que <xliff:g id="SERVICE">%1$s</xliff:g> poida controlar totalmente o teu dispositivo?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se activas <xliff:g id="SERVICE">%1$s</xliff:g>, o dispositivo non utilizará o teu bloqueo de pantalla para mellorar a encriptación de datos."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"O control total é adecuado para as aplicacións que che axudan coa accesibilidade, pero non para a maioría das aplicacións."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Notificacións"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Configuración rápida"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Cadro de diálogo de acendido/apagado"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Activar/desactivar pantalla dividida"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Pantalla de bloqueo"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Captura de pantalla"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menú de accesibilidade"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de subtítulos de <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> incluíuse no grupo RESTRINXIDO"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversa"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Conversa de grupo"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"&gt;<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>"</string>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index c35b7e6..e518096 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"બન્ને વૉલ્યૂમ કીને થોડી સેકન્ડ સુધી દબાવી રાખવાથી ઍક્સેસિબિલિટી સુવિધા એવી <xliff:g id="SERVICE">%1$s</xliff:g> ચાલુ થઈ જાય છે. આનાથી તમારા ડિવાઇસની કામ કરવાની રીત બદલાઈ શકે છે.\n\nતમે સેટિંગ &gt; ઍક્સેસિબિલિટીમાં જઈને આ શૉર્ટકટને બીજી સુવિધામાં બદલી શકો છો."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ચાલુ કરો"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"ચાલુ કરશો નહીં"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"શું <xliff:g id="SERVICE">%1$s</xliff:g>ને તમારા ડિવાઇસના સંપૂર્ણ નિયંત્રણની મંજૂરી આપીએ?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"જો તમે <xliff:g id="SERVICE">%1$s</xliff:g> ચાલુ કરશો, તો તમારું ડિવાઇસ ડેટા એન્ક્રિપ્શનને બહેતર બનાવવા તમારા સ્ક્રીન લૉકનો ઉપયોગ કરશે નહીં."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"ઍક્સેસિબિલિટી સંબંધિત આવશ્યકતા માટે સહાય કરતી ઍપ માટે સંપૂર્ણ નિયંત્રણ યોગ્ય છે, પણ મોટા ભાગની ઍપ માટે યોગ્ય નથી."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"નોટિફિકેશન"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"ઝડપી સેટિંગ"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"પાવર સંવાદ"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"સ્ક્રીનને વિભાજિત કરવાની ક્રિયા ટૉગલ કરો"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"લૉક સ્ક્રીન"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"સ્ક્રીનશૉટ"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ઍક્સેસિબિલિટી મેનૂ"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>નું કૅપ્શન બાર."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>ને પ્રતિબંધિત સમૂહમાં મૂકવામાં આવ્યું છે"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"વાતચીત"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"ગ્રૂપ વાતચીત"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 569b284..0d2c902 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"आवाज़ कम और ज़्यादा करने वाले दोनों बटन को कुछ सेकंड तक दबाकर रखने से <xliff:g id="SERVICE">%1$s</xliff:g> चालू हो जाती है, जो एक सुलभता सुविधा है. ऐसा करने से आपके डिवाइस के काम करने के तरीके में बदलाव हो सकता है.\n\nआप सेटिंग और सुलभता में जाकर इस शॉर्टकट को किसी दूसरी सुविधा के लिए बदल सकते हैं."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"चालू करें"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"चालू न करें"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> को अपना डिवाइस पूरी तरह कंट्रोल करने की मंज़ूरी दें?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"अगर आप <xliff:g id="SERVICE">%1$s</xliff:g> को चालू करते हैं, तो डेटा को एन्क्रिप्ट (सुरक्षित) करने के तरीके को बेहतर बनाने के लिए आपका डिवाइस सेट किए गए स्क्रीन लॉक का इस्तेमाल नहीं करेगा."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"पूरी तरह नियंत्रित करने की अनुमति उन ऐप्लिकेशन के लिए ठीक है जो सुलभता से जुड़ी ज़रूरतों के लिए बने हैं, लेकिन ज़्यादातर ऐप्लिकेशन के लिए यह ठीक नहीं है."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"सूचनाएं खोलें"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"फटाफट सेटिंग खोलें"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"पावर डायलॉग खोलें"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"स्प्लिट स्क्रीन पर टॉगल करें"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"स्क्रीन लॉक करें"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"स्क्रीनशॉट लें"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"सुलभता मेन्यू"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> का कैप्शन बार."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> को प्रतिबंधित बकेट में रखा गया है"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"बातचीत"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"ग्रुप में बातचीत"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index a7ae686..cab12f6 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -1653,6 +1653,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ako na nekoliko sekundi pritisnete obje tipke za glasnoću, uključuje se značajka pristupačnosti <xliff:g id="SERVICE">%1$s</xliff:g>. Time se može promijeniti način na koji vaš uređaj radi.\n\nZnačajku na koju se taj prečac odnosi možete promijeniti u odjeljku Postavke &gt; Pristupačnost."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Uključi"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nemoj uključiti"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Želite li dopustiti usluzi <xliff:g id="SERVICE">%1$s</xliff:g> potpunu kontrolu nad uređajem?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ako uključite <xliff:g id="SERVICE">%1$s</xliff:g>, vaš uređaj neće upotrebljavati zaključavanje zaslona za bolju enkripciju podataka."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Potpuna kontrola prikladna je za aplikacije koje vam pomažu s potrebama pristupačnosti, ali ne i za većinu aplikacija."</string>
@@ -2072,13 +2076,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Obavijesti"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Brze postavke"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Dijalog napajanja"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Uključite ili isključite podijeljeni zaslon"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Zaključajte zaslon"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Snimka zaslona"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Izbornik pristupačnosti"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Traka naslova aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> premješten je u spremnik OGRANIČENO"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Razgovor"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Grupni razgovor"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 1795315..fb2a5ad 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"A(z) <xliff:g id="SERVICE">%1$s</xliff:g> kisegítő lehetőség bekapcsolásához tartsa nyomva néhány másodpercig mindkét hangerőgombot. Ez hatással lehet az eszköz működésére.\n\nEzt a gyorsparancsot a Beállítások &gt; Kisegítő lehetőségek pontban módosíthatja másik funkció használatára."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Bekapcsolás"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nem kapcsolom be"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Teljes körű vezérlést biztosít eszköze felett a(z) <xliff:g id="SERVICE">%1$s</xliff:g> szolgáltatás számára?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ha engedélyezi a(z) <xliff:g id="SERVICE">%1$s</xliff:g> szolgáltatást, az eszköz nem fogja használni a képernyőzárat az adattitkosítás növelése érdekében."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"A teljes vezérlés indokolt olyan alkalmazásoknál, amelyek kisegítő lehetőségeket nyújtanak, a legtöbb alkalmazásnál azonban nem."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Értesítések"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Gyorsbeállítások"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Akkumulátorral kapcsolatos párbeszédpanel"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Osztott képernyő be- vagy kikapcsolása"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lezárási képernyő"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Képernyőkép"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Kisegítő lehetőségek menü"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> alkalmazás címsora."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"A következő csomag a KORLÁTOZOTT csoportba került: <xliff:g id="PACKAGE_NAME">%1$s</xliff:g>"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Beszélgetés"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Csoportos beszélgetés"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index 73c0c0c..019e989 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ձայնի կարգավորման երկու կոճակները մի քանի վայրկյան սեղմած պահելով կմիացնեք <xliff:g id="SERVICE">%1$s</xliff:g> ծառայությունը, որը հատուկ գործառույթ է։ Դրա արդյունքում սարքի աշխատաեղանակը կարող է փոխվել։\n\nԱյս դյուրանցումը մեկ այլ գործառույթով փոխելու համար անցեք Կարգավորումներ &gt; Հատուկ գործառույթներ։"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Միացնել"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Չմիացնել"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Թույլատրե՞լ <xliff:g id="SERVICE">%1$s</xliff:g> ծառայությանը կառավարել ձեր սարքը"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Եթե միացնեք <xliff:g id="SERVICE">%1$s</xliff:g> ծառայությունը, ձեր սարքը չի օգտագործի էկրանի կողպումը՝ տվյալների գաղտնագրումը բարելավելու համար:"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Ամբողջական վերահսկումն անհրաժեշտ է միայն այն հավելվածներին, որոնք օգնում են ձեզ հատուկ գործառույթներից օգտվելիս։"</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Ծանուցումներ"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Արագ կարգավորումներ"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Սնուցման պատուհան"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Միացնել/անջատել էկրանի տրոհումը"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Կողպէկրան"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Սքրինշոթ"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Հատուկ գործառույթների ընտրացանկ"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածի ենթագրերի գոտին։"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> փաթեթը գցվեց ՍԱՀՄԱՆԱՓԱԿՎԱԾ զամբյուղի մեջ"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>՝"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Նամակագրություն"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Խմբային նամակագրություն"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 338471d..f8af76c 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Menahan kedua tombol volume selama beberapa detik akan mengaktifkan <xliff:g id="SERVICE">%1$s</xliff:g>, yang merupakan fitur aksesibilitas. Tindakan ini dapat mengubah cara kerja perangkat Anda.\n\nAnda dapat mengubah pintasan ini ke fitur lain di Setelan &gt; Aksesibilitas."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Aktifkan"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Jangan aktifkan"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Izinkan <xliff:g id="SERVICE">%1$s</xliff:g> memiliki kontrol penuh atas perangkat Anda?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jika Anda mengaktifkan <xliff:g id="SERVICE">%1$s</xliff:g>, perangkat tidak akan menggunakan kunci layar untuk meningkatkan enkripsi data."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Kontrol penuh sesuai untuk aplikasi yang membantu Anda terkait kebutuhan aksesibilitas, tetapi tidak untuk sebagian besar aplikasi."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Notifikasi"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Setelan Cepat"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Dialog Daya"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Aktifkan/Nonaktifkan Layar Terpisah"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Layar Kunci"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu Aksesibilitas"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Kolom teks <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> telah dimasukkan ke dalam bucket DIBATASI"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Percakapan"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Percakapan Grup"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index 6c017e8..010186c 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ef báðum hljóðstyrkstökkunum er haldið inni í nokkrar sekúndur er kveikt á aðgengiseiginleikanum <xliff:g id="SERVICE">%1$s</xliff:g>. Þetta getur breytt því hvernig tækið virkar.\n\nÞú getur breytt þessari flýtileið í annan eiginleika í Stillingar &gt; Aðgengi."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Kveikja"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ekki kveikja"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Viltu leyfa <xliff:g id="SERVICE">%1$s</xliff:g> að hafa fulla stjórn yfir tækinu þínu?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ef þú kveikir á <xliff:g id="SERVICE">%1$s</xliff:g> mun tækið ekki nota skjálásinn til að efla dulkóðun gagna."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full stjórnun er viðeigandi fyrir forrit sem hjálpa þér ef þú hefur ekki aðgang, en ekki fyrir flest forrit."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Tilkynningar"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Flýtistillingar"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Gluggi til að slökkva/endurræsa"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Breyta skjáskiptingu"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lásskjár"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Skjámynd"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Aðgengisvalmynd"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Skjátextastika <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> var sett í flokkinn TAKMARKAÐ"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Samtal"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Hópsamtal"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index ed0a6bc..94ab2b4 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Se tieni premuti entrambi i tasti del volume per qualche secondo verrà attivata la funzione di accessibilità <xliff:g id="SERVICE">%1$s</xliff:g>. Questa operazione potrebbe modificare il funzionamento del dispositivo.\n\nPuoi associare questa scorciatoia a un\'altra funzionalità in Impostazioni &gt; Accessibilità."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Attiva"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Non attivare"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vuoi consentire a <xliff:g id="SERVICE">%1$s</xliff:g> di avere il controllo totale del tuo dispositivo?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se attivi <xliff:g id="SERVICE">%1$s</xliff:g>, il dispositivo non utilizzerà il blocco schermo per migliorare la crittografia dei dati."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Il pieno controllo è appropriato per le app che rispondono alle tue esigenze di accessibilità, ma non per gran parte delle app."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Notifiche"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Impostazioni rapide"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Finestra di dialogo Alimentazione"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Attiva/disattiva schermo diviso"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Schermata di blocco"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu Accessibilità"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra del titolo di <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> è stato inserito nel bucket RESTRICTED"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversazione"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Conversazione di gruppo"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 87b670a..71126c4 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -1675,6 +1675,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"‏ניתן ללחוץ על שני מקשי עוצמת הקול למשך מספר שניות כדי להפעיל את <xliff:g id="SERVICE">%1$s</xliff:g>, תכונת נגישות. בעקבות זאת, ייתכן שאופן הפעולה של המכשיר ישתנה.\n\nאפשר לשנות את מקשי הקיצור האלה לתכונה נוספת ב\'הגדרות\' &gt; \'נגישות\'."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"אני רוצה להפעיל"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"לא להפעיל"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"ברצונך להעניק לשירות <xliff:g id="SERVICE">%1$s</xliff:g> שליטה מלאה במכשיר?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"אם השירות <xliff:g id="SERVICE">%1$s</xliff:g> יופעל, המכשיר לא ישתמש בנעילת המסך כדי לשפר את הצפנת הנתונים."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"שליטה מלאה מתאימה לאפליקציות שעוזרות עם צורכי הנגישות שלך, אבל לא לרוב האפליקציות."</string>
@@ -2106,13 +2110,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"התראות"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"הגדרות מהירות"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"תיבת דו-שיח לגבי הסוללה"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"החלפת מצב של מסך מפוצל"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"מסך הנעילה"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"צילום מסך"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"תפריט נגישות"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"סרגל כיתוב של <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> התווספה לקטגוריה \'מוגבל\'"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"שיחה"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"שיחה קבוצתית"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 17924e4..4b16502 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"音量大と音量小の両方のボタンを数秒ほど長押しすると、ユーザー補助機能の <xliff:g id="SERVICE">%1$s</xliff:g> が ON になります。この機能が ON になると、デバイスの動作が変わることがあります。\n\nこのショートカットは [設定] &gt; [ユーザー補助] で別の機能に変更できます。"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ON にする"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"ON にしない"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> にデバイスのフル コントロールを許可しますか?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> をオンにすると、デバイスデータの暗号化の強化に画面ロックは使用されなくなります。"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"フル コントロールは、ユーザー補助機能を必要とするユーザーをサポートするアプリには適していますが、ほとんどのアプリには適していません。"</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"通知"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"クイック設定"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"電源ダイアログ"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"分割画面の切り替え"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ロック画面"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"スクリーンショット"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ユーザー補助機能メニュー"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> のキャプション バーです。"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> は RESTRICTED バケットに移動しました。"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"会話"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"グループの会話"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index 5dac9b6..3a205d9 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"ხმის ორივე ღილაკზე რამდენიმე წამის განმავლობაში დაჭერით ჩაირთვება <xliff:g id="SERVICE">%1$s</xliff:g>, რომელიც მარტივი წვდომის ფუნქციაა. ამან შეიძლება შეცვალოს თქვენი მოწყობილობის მუშაობის პრინციპი.\n\nამ მალსახმობის შეცვლა სხვა ფუნქციით შეგიძლიათ აქ: პარამეტრები &gt; აპები."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ჩართვა"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"არ ჩაირთოს"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"დართავთ ნებას <xliff:g id="SERVICE">%1$s</xliff:g>-ს, სრულად მართოს თქვენი მოწყობილობა?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g>-ს თუ ჩართავთ, მონაცემთა დაშიფვრის გასაძლიერებლად თქვენი მოწყობილობა ეკრანის დაბლოკვას არ გამოიყენებს."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"სრული კონტროლი გამოსადეგია აპებისთვის, რომლებიც მარტივი წვდომის საჭიროებისას გეხმარებათ, მაგრამ არა აპების უმრავლესობისთვის."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"შეტყობინებები"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"სწრაფი პარამეტრები"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"ელკვების დიალოგი"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"გაყოფილი ეკრანის გადართვა"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ჩაკეტილი ეკრანი"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ეკრანის ანაბეჭდი"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"მარტივი წვდომის მენიუ"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ის სუბტიტრების ზოლი."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> მოთავსდა კალათაში „შეზღუდული“"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"მიმოწერა"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"ჯგუფური მიმოწერა"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index d2773a2..255d6ae 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Дыбыс деңгейі пернелерін бірнеше секунд басып тұрсаңыз, <xliff:g id="SERVICE">%1$s</xliff:g> арнайы қызметі іске қосылады. Бұл – құрылғының жүмысына әсер етуі мүмкін.\n\nБұл таңбашаны басқа функцияға \"Параметрлер &gt; Арнайы мүмкіндіктер\" бөлімінен өзгерте аласыз."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Қосылсын"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Қосылмасын"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> қызметі құрылғыңызды толық басқаруына рұқсат етілсін бе?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> қоссаңыз, құрылғыңыз деректерді шифрлау үшін экранды бекітуді пайдаланбайды."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Арнайы мүмкіндіктер бойынша көмектесетін қолданбаларға ғана құрылғыны толық басқару рұқсатын берген дұрыс."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Хабарландырулар"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Жылдам параметрлер"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Қуат диалогтік терезесі"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Экранды бөлу мүмкіндігін қосу/өшіру"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Құлып экраны"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Скриншот"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Арнайы мүмкіндіктер мәзірі"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасының жазу жолағы."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ШЕКТЕЛГЕН себетке салынды."</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Чат"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Топтық чат"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index 48af340..1c32ec1 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -1633,6 +1633,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"ការសង្កត់​គ្រាប់ចុច​កម្រិតសំឡេង​ទាំងពីរ​ឱ្យជាប់​រយៈពេល​ពីរបីវិនាទី​នឹងបើក <xliff:g id="SERVICE">%1$s</xliff:g> ដែលជា​មុខងារ​ភាពងាយប្រើ។ ការធ្វើ​បែបនេះ​អាចផ្លាស់ប្ដូរ​របៀបដែល​ឧបករណ៍​របស់អ្នក​ដំណើរការ។\n\nអ្នកអាច​ប្ដូរផ្លូវកាត់​នេះទៅ​មុខងារ​ផ្សេងទៀត​នៅក្នុង​ការកំណត់ &gt; ភាពងាយស្រួល។"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"បើក"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"កុំបើក"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"អនុញ្ញាតឱ្យ <xliff:g id="SERVICE">%1$s</xliff:g> មានសិទ្ធិគ្រប់គ្រងឧបករណ៍​របស់អ្នក​ទាំងស្រុងឬ?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"បើ​អ្នក​បើក <xliff:g id="SERVICE">%1$s</xliff:g> ឧបករណ៍របស់​អ្នកនឹង​មិន​ប្រើ​ការចាក់សោអេក្រង់របស់​អ្នក​ ដើម្បី​បង្កើន​ប្រសិទ្ធភាពការ​អ៊ីនគ្រីប​ទិន្នន័យ​ទេ។"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"ការគ្រប់គ្រង​ទាំងស្រុងមានលក្ខណៈ​សមស្របសម្រាប់​កម្មវិធី ដែលជួយអ្នក​ទាក់ទងនឹងការប្រើមុខងារភាពងាយស្រួល ប៉ុន្តែមិនសមស្របសម្រាប់​កម្មវិធីភាគច្រើនទេ។"</string>
@@ -2040,13 +2044,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"ការជូនដំណឹង"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"ការកំណត់រហ័ស"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"ប្រអប់​ថាមពល"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"បិទ/បើក​មុខងារ​បំបែកអេក្រង់"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"អេក្រង់ចាក់សោ"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"រូបថតអេក្រង់"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ម៉ឺនុយ​ភាពងាយស្រួល"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"របារពណ៌នា​អំពី <xliff:g id="APP_NAME">%1$s</xliff:g>។"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ត្រូវបានដាក់​ទៅក្នុងធុង​ដែលបានដាក់កំហិត"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>៖"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"ការ​សន្ទនា"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"ការសន្ទនា​ជាក្រុម"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index 64002ef..75c4f1d 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"ಎರಡೂ ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಕೆಲವು ಸೆಕೆಂಡುಗಳ ಕಾಲ ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುವುದರಿಂದ ಪ್ರವೇಶಿಸುವಿಕೆ ವೈಶಿಷ್ಟ್ಯವಾದ <xliff:g id="SERVICE">%1$s</xliff:g> ಆನ್ ಆಗುತ್ತದೆ. ಇದು ನಿಮ್ಮ ಸಾಧನವು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಬದಲಾಯಿಸಬಹುದು.\n\nನೀವು ಈ ಶಾರ್ಟ್‌ಕಟ್ ಅನ್ನು ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಅಕ್ಸೆಸಿಬಿಲಿಟಿಯಲ್ಲಿನ ಮತ್ತೊಂದು ವೈಶಿಷ್ಟ್ಯಕ್ಕೆ ಬದಲಾಯಿಸಬಹುದು."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ಆನ್ ಮಾಡಿ"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"ಆನ್ ಮಾಡಬೇಡಿ"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"ನಿಮ್ಮ ಸಾಧನದ ಪೂರ್ಣ ನಿಯಂತ್ರಣ ಹೊಂದಲು <xliff:g id="SERVICE">%1$s</xliff:g> ಗೆ ಅನುಮತಿಸಬೇಕೆ?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"ನೀವು <xliff:g id="SERVICE">%1$s</xliff:g> ಅನ್ನು ಆನ್ ಮಾಡಿದರೆ, ನಿಮ್ಮ ಸಾಧನವು ಡೇಟಾ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಅನ್ನು ವರ್ಧಿಸಲು ನಿಮ್ಮ ಸ್ಕ್ರೀನ್‌ಲಾಕ್ ಅನ್ನು ಬಳಸುವುದಿಲ್ಲ."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"ಪ್ರವೇಶಿಸುವಿಕೆಯ ಅವಶ್ಯಕತೆಗಳಿಗೆ ಸಹಾಯ ಮಾಡುವ ಆ್ಯಪ್‌ಗಳಿಗೆ ಪೂರ್ಣ ನಿಯಂತ್ರಣ ನೀಡುವುದು ಸೂಕ್ತವಾಗಿರುತ್ತದೆ, ಆದರೆ ಬಹುತೇಕ ಆ್ಯಪ್‌ಗಳಿಗೆ ಇದು ಸೂಕ್ತವಲ್ಲ."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"ಅಧಿಸೂಚನೆಗಳು"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"ತ್ವರಿತ ಸೆಟ್ಟಿಂಗ್‍ಗಳು"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"ಪವರ್ ಡೈಲಾಗ್"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"ಸ್ಪ್ಲಿಟ್-ಸ್ಕ್ರೀನ್ ಟಾಗಲ್ ಮಾಡಿ"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ಲಾಕ್ ಸ್ಕ್ರೀನ್"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ಸ್ಕ್ರೀನ್‌ಶಾಟ್"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ಪ್ರವೇಶಿಸುವಿಕೆ ಮೆನು"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಆ್ಯಪ್‌ನ ಶೀರ್ಷಿಕೆಯ ಪಟ್ಟಿ."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ಅನ್ನು ನಿರ್ಬಂಧಿತ ಬಕೆಟ್‌ಗೆ ಹಾಕಲಾಗಿದೆ"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"ಸಂವಾದ"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"ಗುಂಪು ಸಂವಾದ"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index ac691ae..8437ab6 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"볼륨 키 2개를 몇 초 동안 길게 누르면 <xliff:g id="SERVICE">%1$s</xliff:g> 접근성 기능이 사용 설정됩니다. 이렇게 되면 기기 작동 방식이 달라질 수 있습니다.\n\n설정 &gt; 접근성에서 이 단축키를 다른 기능으로 변경할 수 있습니다."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"사용 설정"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"사용 안 함"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g>에서 기기를 완전히 제어하도록 허용하시겠습니까?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g>을(를) 사용 설정하면 기기에서 데이터 암호화를 개선하기 위해 화면 잠금을 사용하지 않습니다."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"접근성 관련 지원을 제공하는 앱에는 완벽한 제어권을 부여하는 것이 좋으나, 대부분의 앱에는 적합하지 않습니다."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"알림"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"빠른 설정"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"전원 대화상자"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"화면 분할 모드 전환"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"잠금 화면"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"스크린샷"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"접근성 메뉴"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>의 자막 표시줄입니다."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> 항목이 RESTRICTED 버킷으로 이동함"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"대화"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"그룹 대화"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index 31c723f..1ba6094 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Үндү чоңойтуп/кичирейтүү баскычтарын бир нече секунд коё бербей басып турса, <xliff:g id="SERVICE">%1$s</xliff:g>, атайын мүмкүнчүлүктөр күйгүзүлөт. Бул түзмөгүңүздүн ишин өзгөртүшү мүмкүн.\n\nБул ыкчам баскычты Жөндөөлөр &gt; Атайын мүмкүнчүлүктөр бөлүмүнөн башка функцияга өзгөртө аласыз."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Күйгүзүлсүн"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Күйгүзүлбөсүн"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> кызматына түзмөгүңүздү толугу менен көзөмөлдөөгө уруксат бересизби?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Эгер <xliff:g id="SERVICE">%1$s</xliff:g> күйгүзүлсө, түзмөгүңүз дайын-даректерди шифрлөөнү күчтөндүрүү үчүн экраныңыздын кулпусун пайдаланбайт."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Толук көзөмөл атайын мүмкүнчүлүктөрдү пайдаланууга керек, бирок калган көпчүлүк колдонмолорго кереги жок."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Билдирмелер"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Ыкчам жөндөөлөр"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Кубат диалогу"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Экранды бөлүүнү күйгүзүү же өчүрүү"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Кулпуланган экран"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Скриншот"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Атайын мүмкүнчүлүктөр менюсу"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосунун маалымат тилкеси."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ЧЕКТЕЛГЕН чакага коюлган"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Жазышуу"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Топтук маек"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index 5ff7a69..083e4cc1 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"ກົດປຸ່ມລະດັບສຽງທັງສອງຄ້າງໄວ້ສອງສາມວິນາທີເພື່ອເປີດໃຊ້ <xliff:g id="SERVICE">%1$s</xliff:g>, ຄຸນສົມບັດການຊ່ວຍເຂົ້າເຖິງ. ນີ້ອາດປ່ຽນວິທີການເຮັດວຽກຂອງອຸປະກອນທ່ານ.\n\nທ່ານສາມາດປ່ຽນທາງລັດນີ້ເປັນຄຸນສົມບັດອື່ນໄດ້ໃນການຕັ້ງຄ່າ &gt; ການຊ່ວຍເຂົ້າເຖິງ."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ເປີດໃຊ້"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"ບໍ່ເປີດ"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"ອະນຸຍາດໃຫ້ <xliff:g id="SERVICE">%1$s</xliff:g> ຄວບຄຸມອຸປະກອນທ່ານໄດ້ເຕັມຮູບແບບບໍ?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"ຫາກ​ທ່ານ​ເປີດ​ໃຊ້ <xliff:g id="SERVICE">%1$s</xliff:g>, ​ອຸ​ປະ​ກອນ​ຂອງ​ທ່ານ​ຈະ​ບໍ່​ໃຊ້​ການ​ລັອກ​ໜ້າ​ຈໍ​ຂອງ​ທ່ານ​ເພື່ອ​ເພີ່ມ​ການ​ເຂົ້າ​ລະ​ຫັດ​ຂໍ້​ມູນ."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"ການຄວບຄຸມແບບເຕັມຮູບແບບແມ່ນເໝາະສົມສຳລັບແອັບທີ່ຊ່ວຍທ່ານໃນດ້ານການຊ່ວຍເຂົ້າເຖິງ, ແຕ່ບໍ່ເໝາະສຳລັບທຸກແອັບ."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"ການແຈ້ງເຕືອນ"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"ການຕັ້ງຄ່າດ່ວນ"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"ກ່ອງໂຕ້ຕອບການເປີດປິດ"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"ເປີດ/ປິດການແບ່ງໜ້າຈໍ"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ໜ້າຈໍລັອກ"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ຮູບໜ້າຈໍ"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"​ເມ​ນູ​ການ​ຊ່ວຍ​ເຂົ້າ​ເຖິງ"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"ແຖບຄຳບັນຍາຍຂອງ <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ຖືກວາງໄວ້ໃນກະຕ່າ \"ຈຳກັດ\" ແລ້ວ"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"ການສົນທະນາ"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"ການສົນທະນາກຸ່ມ"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 2b04156..8dd7fa1 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -1675,6 +1675,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Paspaudus abu garsumo klavišus ir palaikius kelias sekundes įjungiama pritaikymo neįgaliesiems funkcija „<xliff:g id="SERVICE">%1$s</xliff:g>“. Tai gali pakeisti įrenginio veikimą.\n\nGalite pakeisti šį spartųjį klavišą į kitą funkciją skiltyje „Nustatymai“ &gt; „Pritaikomumas“."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Įjungti"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Neįjungti"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Leisti „<xliff:g id="SERVICE">%1$s</xliff:g>“ valdyti visas įrenginio funkcijas?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jei įjungsite „<xliff:g id="SERVICE">%1$s</xliff:g>“, įrenginyje nebus naudojamas ekrano užraktas siekiant patobulinti duomenų šifruotę."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Galimybę valdyti visas funkcijas patariama suteikti programoms, kurios padeda specialiųjų poreikių turintiems asmenims, bet ne daugumai programų."</string>
@@ -2106,13 +2110,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Pranešimai"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Spartieji nustatymai"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Maitinimo dialogo langas"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Perjungti išskaidyto ekrano režimą"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Užrakinimo ekranas"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Ekrano kopija"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Pritaikomumo meniu"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Programos „<xliff:g id="APP_NAME">%1$s</xliff:g>“ antraštės juosta."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"„<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>“ įkeltas į grupę APRIBOTA"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Pokalbis"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Grupės pokalbis"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index c80e3ac..07693a9 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -1653,6 +1653,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Turot nospiestus abus skaļuma taustiņus dažas sekundes, tiek ieslēgta pieejamības funkcija <xliff:g id="SERVICE">%1$s</xliff:g>. Tas var mainīt ierīces darbību.\n\nŠo saīsni uz citu funkciju varat mainīt šeit: Iestatījumi &gt; Pieejamība."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Ieslēgt"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Neieslēgt"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vai atļaut pakalpojumam <xliff:g id="SERVICE">%1$s</xliff:g> pilnībā kontrolēt jūsu ierīci?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ja ieslēgsiet pakalpojumu <xliff:g id="SERVICE">%1$s</xliff:g>, ierīce neizmantos ekrāna bloķēšanu datu šifrēšanas uzlabošanai."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Pilnīga kontrole ir piemērota lietotnēm, kas nepieciešamas lietotājiem ar īpašām vajadzībām, taču ne lielākajai daļai lietotņu."</string>
@@ -2072,13 +2076,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Paziņojumi"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Ātrie iestatījumi"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Barošanas dialoglodziņš"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Pārslēgt ekrāna sadalīšanu"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Bloķēt ekrānu"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Ekrānuzņēmums"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Pieejamības izvēlne"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Lietotnes <xliff:g id="APP_NAME">%1$s</xliff:g> subtitru josla."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Pakotne “<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>” ir ievietota ierobežotā kopā."</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Saruna"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Grupas saruna"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index f7e23a8..6988893 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -1633,6 +1633,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ако ги задржите притиснати двете копчиња за јачина на звук неколку секунди, ќе се вклучи функцијата за пристапност <xliff:g id="SERVICE">%1$s</xliff:g>. Ова може да го промени начинот на функционирање на уредот.\n\nМоже да ја измените кратенкава да биде за друга функција во „Поставки &gt; Пристапност“."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Вклучи"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Не вклучувај"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Дали дозволувате <xliff:g id="SERVICE">%1$s</xliff:g> да има целосна контрола врз вашиот уред?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ако вклучите <xliff:g id="SERVICE">%1$s</xliff:g>, уредот нема да го користи заклучувањето на екранот за да го подобри шифрирањето на податоците."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Целосната контрола е соодветна за апликации што ви помагаат со потребите за пристапност, но не и за повеќето апликации."</string>
@@ -2040,13 +2044,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Известувања"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Брзи поставки"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Дијалог за напојување"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Вклучи/исклучи поделен екран"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Заклучен екран"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Слика од екранот"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Мени за пристапност"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Насловна лента на <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> е ставен во корпата ОГРАНИЧЕНИ"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Разговор"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Групен разговор"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index 4d88c99..8fa33ee 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"രണ്ട് വോളിയം കീകളും അൽപ്പ നേരത്തേക്ക് അമർത്തിപ്പിടിക്കുന്നത് ഉപയോഗസഹായി ഫീച്ചറായ <xliff:g id="SERVICE">%1$s</xliff:g> എന്നതിനെ ഓണാക്കുന്നു. നിങ്ങളുടെ ഉപകരണം പ്രവർത്തിക്കുന്ന വിധം ഇത് മാറ്റിയേക്കാം.\n\nക്രമീകരണം &gt; ഉപയോഗസഹായി എന്നതിലെ മറ്റൊരു ഫീച്ചറിലേക്ക് നിങ്ങൾക്ക് ഈ കുറുക്കുവഴി മാറ്റാനാവും."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ഓണാക്കുക"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"ഓണാക്കരുത്"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> എന്നതിന് നിങ്ങളുടെ ഉപകരണത്തിന്മേൽ പൂർണ്ണ നിയന്ത്രണം അനുവദിക്കണോ?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> ഓണാക്കിയെങ്കിൽ, ഡാറ്റ എൻക്രിപ്‌ഷൻ മെച്ചപ്പെടുത്താൻ ഉപകരണം നിങ്ങളുടെ സ്‌ക്രീൻ ലോക്ക് ഉപയോഗിക്കില്ല."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"ഉപയോഗസഹായി ആവശ്യങ്ങൾക്കായി നിങ്ങളെ സഹായിക്കുന്ന ആപ്പുകൾക്ക് പൂർണ്ണ നിയന്ത്രണം അനുയോജ്യമാണെങ്കിലും മിക്ക ആപ്പുകൾക്കും അനുയോജ്യമല്ല."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"അറിയിപ്പുകൾ"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"ദ്രുത ക്രമീകരണം"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"പവർ ഡയലോഗ്"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"സ്‌ക്രീൻ വിഭജന മോഡ് മാറ്റുക"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ലോക്ക് സ്‌ക്രീൻ"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"സ്ക്രീൻഷോട്ട്"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ഉപയോഗസഹായി മെനു"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> എന്നതിന്റെ അടിക്കുറിപ്പ് ബാർ."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> നിയന്ത്രിത ബക്കറ്റിലേക്ക് നീക്കി"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"സംഭാഷണം"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"ഗ്രൂപ്പ് സംഭാഷണം"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index f996343..bbeb09c 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Дууны түвшний түлхүүрийг хэдэн секундийн турш зэрэг дарах нь хандалтын онцлог болох <xliff:g id="SERVICE">%1$s</xliff:g>-г асаадаг. Энэ нь таны төхөөрөмжийн ажиллах зарчмыг өөрчилж болзошгүй.\n\nТа Тохиргоо &gt; Хандалт хэсэгт энэ товчлолыг өөр онцлогт оноож өөрчлөх боломжтой."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Асаах"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Битгий асаа"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g>-д таны төхөөрөмжийг бүрэн хянахыг зөвшөөрөх үү?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Хэрэв та <xliff:g id="SERVICE">%1$s</xliff:g>-г асаавал таны төхөөрөмж өгөгдлийн шифрлэлтийг сайжруулахын тулд таны дэлгэцийн түгжээг ашиглахгүй."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Бүрэн хянах нь таны хандалтын үйлчилгээний шаардлагад тусалдаг аппуудад тохиромжтой боловч ихэнх аппад тохиромжгүй байдаг."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Мэдэгдэл"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Шуурхай тохиргоо"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Тэжээлийн харилцах цонх"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Дэлгэц хуваахыг унтраах/асаах"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Дэлгэцийг түгжих"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Дэлгэцийн зураг дарах"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Хандалтын цэс"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>-н гарчгийн талбар."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>-г ХЯЗГААРЛАСАН сагс руу орууллаа"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Харилцан яриа"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Бүлгийн харилцан яриа"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index c46cb8d..9ee9436 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"दोन्ही व्हॉल्यूम की काही सेकंद धरून ठेवल्याने <xliff:g id="SERVICE">%1$s</xliff:g>, एक अ‍ॅक्सेसिबिलिटी वैशिष्ट्य सुरू होते. यामुळे तुमचे डिव्हाइस कसे काम करते हे पूर्णपणे बदलते.\n\nतुम्ही हा शॉर्टकट सेटिंग्ज &gt; अ‍ॅक्सेसिबिलिटी मध्ये बदलू शकता."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"सुरू करा"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"सुरू करू नका"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> ला तुमचे डिव्हाइसच संपूर्णपणे नियंत्रित करायची अनुमती द्यायची का?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"तुम्ही <xliff:g id="SERVICE">%1$s</xliff:g> सुरू केल्‍यास, तुमचे डिव्हाइस डेटा एंक्रिप्शनमध्ये सुधारणा करण्‍यासाठी स्क्रीन लॉक वापरणार नाही."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"जी ॲप्स तुमच्या ॲक्सेसिबिलिटी गरजा पूर्ण करतात अशा ॲप्ससाठी संपूर्ण नियंत्रण योग्य आहे. पण ते सर्व ॲप्सना लागू होईल असे नाही."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"सूचना"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"क्विक सेटिंग्ज"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"पॉवर डायलॉग"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"विभाजित स्क्रीन टॉगल करा"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"स्‍क्रीन लॉक करा"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"स्क्रीनशॉट"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"अ‍ॅक्सेसिबिलिटी मेनू"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> चा शीर्षक बार."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> हे प्रतिबंधित बादलीमध्ये ठेवण्यात आले आहे"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"संभाषण"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"गट संभाषण"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 8a4148a..db9f4f2 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Tindakan menahan kedua-dua kekunci kelantangan selama beberapa saat akan menghidupkan <xliff:g id="SERVICE">%1$s</xliff:g>, iaitu satu ciri kebolehaksesan. Ini mungkin mengubah cara peranti anda berfungsi.\n\nAnda boleh menukar pintasan ini kepada ciri lain dalam Tetapan &gt; Kebolehaksesan."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Hidupkan"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Jangan hidupkan"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Benarkan <xliff:g id="SERVICE">%1$s</xliff:g> mempunyai kawalan penuh atas peranti anda?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jika anda menghidupkan <xliff:g id="SERVICE">%1$s</xliff:g>, peranti anda tidak akan menggunakan kunci skrin anda untuk meningkatkan penyulitan data."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Kawalan penuh sesuai untuk apl yang membantu anda dengan keperluan kebolehaksesan tetapi bukan untuk kebanyakan apl."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Pemberitahuan"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Tetapan Pantas"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Dialog Kuasa"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Togol Skrin Pisah"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Skrin Kunci"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Tangkapan skrin"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu Kebolehaksesan"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Bar kapsyen <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> telah diletakkan dalam baldi TERHAD"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Perbualan"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Perbualan Kumpulan"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index 7c6f3e7..c1f2b02 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"အသံခလုတ်နှစ်ခုလုံးကို စက္ကန့်အနည်းငယ် ဖိထားခြင်းက အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှုဖြစ်သော <xliff:g id="SERVICE">%1$s</xliff:g> ကို ဖွင့်ပေးသည်။ ဤလုပ်ဆောင်ချက်က သင့်စက်အလုပ်လုပ်ပုံကို ပြောင်းလဲနိုင်သည်။\n\nဤဖြတ်လမ်းလင့်ခ်ကို \'ဆက်တင်များ &gt; အများသုံးစွဲနိုင်မှု\' တွင် နောက်ဝန်ဆောင်မှုတစ်ခုသို့ ပြောင်းနိုင်သည်။"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ဖွင့်ရန်"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"မဖွင့်ပါနှင့်"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> ကို သင့်စက်အား အပြည့်အဝထိန်းချုပ်ခွင့် ပေးလိုပါသလား။"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> ဖွင့်လိုက်ပါက သင်၏စက်သည် ဒေတာအသွင်ဝှက်ခြင်း ပိုကောင်းမွန်စေရန် သင့်ဖန်သားပြင်လော့ခ်ကို သုံးမည်မဟုတ်ပါ။"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"အများသုံးစွဲနိုင်မှု လိုအပ်ချက်များအတွက် အထောက်အကူပြုသည့် အက်ပ်များကို အပြည့်အဝထိန်းချုပ်ခြင်းသည် သင့်လျော်သော်လည်း အက်ပ်အများစုအတွက် မသင့်လျော်ပါ။"</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"အကြောင်းကြားချက်များ"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"အမြန် ဆက်တင်များ"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"ပါဝါ ဒိုင်ယာလော့"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"မျက်နှာပြင် ခွဲ၍ပြသခြင်းကို နှိပ်ပါ"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"လော့ခ်မျက်နှာပြင်"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ဖန်သားပြင်ဓာတ်ပုံ"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"အများသုံးစွဲနိုင်မှု မီနူး"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>၏ ခေါင်းစီး ဘား။"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ကို တားမြစ်ထားသော သိမ်းဆည်းမှုအတွင်းသို့ ထည့်ပြီးပါပြီ"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>-"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"စကားဝိုင်း"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"အဖွဲ့စကားဝိုင်း"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 9f75ce2..a6ce0e1 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Hvis du holder inne begge volumtastene i noen sekunder, slår du på <xliff:g id="SERVICE">%1$s</xliff:g>, en tilgjengelighetsfunksjon. Dette kan endre hvordan enheten din fungerer.\n\nDu kan endre denne snarveien til en annen funksjon i Innstillinger &gt; Tilgjengelighet."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Slå på"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ikke slå på"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vil du gi <xliff:g id="SERVICE">%1$s</xliff:g> full kontroll over enheten din?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Hvis du slår på <xliff:g id="SERVICE">%1$s</xliff:g>, bruker ikke enheten skjermlåsen til å forbedre datakryptering."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full kontroll er passende for apper som hjelper deg med tilgjengelighetsbehov, men ikke for de fleste apper."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Varsler"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Hurtiginnstillinger"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Dialogboks for å slå av/på"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Slå delt skjerm av/på"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Låseskjerm"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Skjermdump"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Tilgjengelighet-meny"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Tekstingsfelt i <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> er blitt plassert i TILGANGSBEGRENSET-toppmappen"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Samtale"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Gruppesamtale"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index 81115f8..d58cbf0 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -1637,6 +1637,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"केही सेकेन्डसम्म दुवै भोल्युम बटन थिचिराख्नुले <xliff:g id="SERVICE">%1$s</xliff:g> नामक पहुँचसम्बन्धी सुविधा  सक्रिय गर्छ। यसले तपाईंको यन्त्रले काम गर्ने तरिका परिवर्तन गर्न सक्छ।\n\nतपाईं सेटिङ &gt; पहुँचमा गई यो सर्टकटमार्फत अर्को सुविधा खुल्ने बनाउन सक्नुहुन्छ।"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"सक्रिय गरियोस्"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"सक्रिय नगरियोस्"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> लाई तपाईंको यन्त्र पूर्ण रूपमा नियन्त्रण गर्न दिने हो?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"तपाईंले <xliff:g id="SERVICE">%1$s</xliff:g> सक्रिय गर्नुभयो भने तपाईंको यन्त्रले डेटा इन्क्रिप्ट गर्ने सुविधाको स्तरोन्नति गर्न तपाईंको स्क्रिन लक सुविधाको प्रयोग गर्ने छैन।"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"तपाईंलाई पहुँच राख्न आवश्यक पर्ने कुरामा सहयोग गर्ने अनुप्रयोगहरूमाथि पूर्ण नियन्त्रण गर्नु उपयुक्त हुन्छ तर अधिकांश अनुप्रयोगहरूका हकमा यस्तो नियन्त्रण उपयुक्त हुँदैन।"</string>
@@ -2044,13 +2048,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"सूचनाहरू"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"द्रुत सेटिङहरू"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"पावर संवाद"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"विभाजित स्क्रिन टगल गर्नुहोस्"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"लक स्क्रिन"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"स्क्रिनसट"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"पहुँचसम्बन्धी मेनु"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> को क्याप्सन बार।"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> लाई प्रतिबन्धित बाल्टीमा राखियो"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"वार्तालाप"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"सामूहिक वार्तालाप"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 17989bf..684af96 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Als je beide volumetoetsen een paar seconden ingedrukt houdt, wordt de toegankelijkheidsfunctie <xliff:g id="SERVICE">%1$s</xliff:g> ingeschakeld. Hierdoor kan de manier veranderen waarop je apparaat werkt.\n\nJe kunt deze sneltoets op een andere functie instellen via Instellingen &gt; Toegankelijkheid."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Inschakelen"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Niet inschakelen"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Toestaan dat <xliff:g id="SERVICE">%1$s</xliff:g> volledige controle over je apparaat heeft?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Als je <xliff:g id="SERVICE">%1$s</xliff:g> inschakelt, maakt je apparaat geen gebruik van schermvergrendeling om de gegevensversleuteling te verbeteren."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Volledige controle is gepast voor apps die je helpen met toegankelijkheid, maar voor de meeste apps is het ongepast."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Meldingen"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Snelle instellingen"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Voedingsdialoogvenster"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Gesplitst scherm schakelen"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Scherm vergrendelen"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Toegankelijkheidsmenu"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Ondertitelingsbalk van <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> is in de bucket RESTRICTED geplaatst"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Gesprek"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Groepsgesprek"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index a77845f..f041719 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -1108,7 +1108,7 @@
     <string name="inputMethod" msgid="1784759500516314751">"ଇନପୁଟ୍ ପଦ୍ଧତି"</string>
     <string name="editTextMenuTitle" msgid="857666911134482176">"ଟେକ୍ସଟ୍‌ କାର୍ଯ୍ୟ"</string>
     <string name="low_internal_storage_view_title" msgid="9024241779284783414">"ଷ୍ଟୋରେଜ୍‌ ସ୍ପେସ୍‌ ଶେଷ ହେବାରେ ଲାଗିଛି"</string>
-    <string name="low_internal_storage_view_text" msgid="8172166728369697835">"କିଛି ସିଷ୍ଟମ ଫଙ୍କଶନ୍‍ କାମ କରିନପାରେ"</string>
+    <string name="low_internal_storage_view_text" msgid="8172166728369697835">"କିଛି ସିଷ୍ଟମ ପ୍ରକାର୍ଯ୍ୟ କାମ କରିନପାରେ"</string>
     <string name="low_internal_storage_view_text_no_boot" msgid="7368968163411251788">"ସିଷ୍ଟମ୍ ପାଇଁ ପ୍ରର୍ଯ୍ୟାପ୍ତ ଷ୍ଟୋରେଜ୍‌ ନାହିଁ। ସୁନିଶ୍ଚିତ କରନ୍ତୁ ଯେ, ଆପଣଙ୍କ ପାଖରେ 250MB ଖାଲି ଜାଗା ଅଛି ଏବଂ ପୁନଃ ଆରମ୍ଭ କରନ୍ତୁ।"</string>
     <string name="app_running_notification_title" msgid="8985999749231486569">"<xliff:g id="APP_NAME">%1$s</xliff:g> ଚାଲୁଛି"</string>
     <string name="app_running_notification_text" msgid="5120815883400228566">"ଅଧିକ ସୂଚନା ପାଇଁ କିମ୍ବା ଆପ୍‍ ବନ୍ଦ କରିବାକୁ ଟାପ୍‍ କରନ୍ତୁ।"</string>
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"କିଛି ସେକେଣ୍ଡ ପାଇଁ ଉଭୟ ଭଲ୍ୟୁମ୍ କୀ’କୁ ଧରି ରଖିବା ଫଳରେ ଏକ ଆକ୍ସେସିବିଲିଟୀ ଫିଚର୍ <xliff:g id="SERVICE">%1$s</xliff:g> ଚାଲୁ ହୁଏ। ଏହା ଆପଣଙ୍କ ଡିଭାଇସ୍ କିପରି କାମ କରେ ତାହା ପରିବର୍ତ୍ତନ କରିପାରେ।\n\nଆପଣ ସେଟିଂସ୍ &amp;gt ଆକ୍ସେସିବିଲିଟୀରେ ଏହି ସର୍ଚକଟକୁ ଅନ୍ୟ ଏକ ଫିଚରରେ ପରିବର୍ତ୍ତନ କରିପାରିବେ।"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ଚାଲୁ କରନ୍ତୁ"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"ଚାଲୁ କରନ୍ତୁ ନାହିଁ"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g>କୁ ଆପଣଙ୍କ ଡିଭାଇସର ସମ୍ପୂର୍ଣ୍ଣ ନିୟନ୍ତ୍ରଣର ଅନୁମତି ଦେବେ?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"ଯଦି ଆପଣ <xliff:g id="SERVICE">%1$s</xliff:g> ଚାଲୁ କରନ୍ତି, ତେବେ ଆପଣଙ୍କ ଡିଭାଇସ୍ ଡାଟା ଏନକ୍ରିପ୍ସନ୍ ବୃଦ୍ଧି କରିବାକୁ ଆପଣଙ୍କର ସ୍କ୍ରିନ୍ ଲକ୍ ବ୍ୟବହାର କରିବ ନାହିଁ।"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"ଯେଉଁ ଆପ୍ସ ଆପଣଙ୍କୁ ଆକ୍ସେସିବିଲିଟୀ ଆବଶ୍ୟକତାରେ ସହାୟତା କରେ, ସେହି ଆପ୍ସ ପାଇଁ ସମ୍ପୂର୍ଣ୍ଣ ନିୟନ୍ତ୍ରଣ ଉପଯୁକ୍ତ ଅଟେ, କିନ୍ତୁ ଅଧିକାଂଶ ଆପ୍ସ ପାଇଁ ଉପଯୁକ୍ତ ନୁହେଁ।"</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ଖୋଲନ୍ତୁ"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"କ୍ୱିକ୍ ସେଟିଂସ୍ ଖୋଲନ୍ତୁ"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"ପାୱାର ଡାୟଲଗ୍ ଖୋଲନ୍ତୁ"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"ଦୁଇଟି ସ୍କ୍ରିନ୍ ମଧ୍ୟରେ ଟୋଗଲ୍ କରନ୍ତୁ"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ସ୍କ୍ରିନ୍ ଲକ୍ କରନ୍ତୁ"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ସ୍କ୍ରି‍ନ୍‍ସଟ୍ ନିଅନ୍ତୁ"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ଆକ୍ସେସିବିଲିଟୀ ମେନୁ"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>ର କ୍ୟାପ୍ସନ୍ ବାର୍।"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>କୁ ପ୍ରତିବନ୍ଧିତ ବକେଟରେ ରଖାଯାଇଛି"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"ବାର୍ତ୍ତାଳାପ"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"ଗୋଷ୍ଠୀ ବାର୍ତ୍ତାଳାପ"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index d2ae052..bdd9b0a9 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"ਕੁਝ ਸਕਿੰਟਾਂ ਲਈ ਦੋਵੇਂ ਅਵਾਜ਼ੀ ਕੁੰਜੀਆਂ ਨੂੰ ਦਬਾਈ ਰੱਖਣਾ <xliff:g id="SERVICE">%1$s</xliff:g>, ਇੱਕ ਪਹੁੰਚਯੋਗਤਾ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਚਾਲੂ ਕਰ ਦਿੰਦਾ ਹੈ। ਇਹ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦੇ ਕੰਮ ਕਰਨ ਦੇ ਤਰੀਕੇ ਨੂੰ ਬਦਲ ਸਕਦਾ ਹੈ।\n\nਸੈਟਿੰਗਾਂ ਅਤੇ ਪਹੁੰਚਯੋਗਤਾ ਵਿੱਚ ਤੁਸੀਂ ਇਸ ਸ਼ਾਰਟਕੱਟ ਨੂੰ ਕਿਸੇ ਹੋਰ ਵਿਸ਼ੇਸ਼ਤਾ ਵਿੱਚ ਬਦਲ ਸਕਦੇ ਹੋ।"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ਚਾਲੂ ਕਰੋ"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"ਚਾਲੂ ਨਾ ਕਰੋ"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"ਕੀ <xliff:g id="SERVICE">%1$s</xliff:g> ਨੂੰ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦਾ ਪੂਰਾ ਕੰਟਰੋਲ ਦੇਣਾ ਹੈ?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"ਜੇਕਰ ਤੁਸੀਂ <xliff:g id="SERVICE">%1$s</xliff:g> ਚਾਲੂ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡਾ ਡੀਵਾਈਸ ਇਨਕ੍ਰਿਪਸ਼ਨ ਦਾ ਵਿਸਤਾਰ ਕਰਨ ਲਈ ਤੁਹਾਡੇ ਸਕ੍ਰੀਨ ਲਾਕ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰੇਗਾ।"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"ਪੂਰਾ ਕੰਟਰੋਲ ਉਹਨਾਂ ਐਪਾਂ ਲਈ ਢੁਕਵਾਂ ਹੈ ਜੋ ਪਹੁੰਚਯੋਗਤਾ ਸੰਬੰਧੀ ਲੋੜਾਂ ਵਿੱਚ ਤੁਹਾਡੀ ਮਦਦ ਕਰਦੀਆਂ ਹਨ, ਪਰ ਜ਼ਿਆਦਾਤਰ ਐਪਾਂ ਲਈ ਢੁਕਵਾਂ ਨਹੀਂ ਹੁੰਦਾ।"</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"ਸੂਚਨਾਵਾਂ"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"ਤਤਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"ਪਾਵਰ ਵਿੰਡੋ"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"ਸਪਲਿਟ ਸਕ੍ਰੀਨ ਨੂੰ ਟੌਗਲ ਕਰੋ"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ਲਾਕ ਸਕ੍ਰੀਨ"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ਸਕ੍ਰੀਨਸ਼ਾਟ"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ਪਹੁੰਚਯੋਗਤਾ ਮੀਨੂ"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਦੀ ਸੁਰਖੀ ਪੱਟੀ।"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ਨੂੰ ਪ੍ਰਤਿਬੰਧਿਤ ਖਾਨੇ ਵਿੱਚ ਪਾਇਆ ਗਿਆ ਹੈ"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"ਗੱਲਬਾਤ"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"ਗੁਰੱਪ ਗੱਲਬਾਤ"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index f219bd3..15ec133 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -1675,6 +1675,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Przytrzymanie obu klawiszy głośności przez kilka sekund włącza usługę <xliff:g id="SERVICE">%1$s</xliff:g>, stanowiącą ułatwienie dostępu. Może to zmienić sposób działania urządzenia.\n\nAby zmienić ten skrót i wskazać inną funkcję, kliknij Ustawienia &gt; Ułatwienia dostępu."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Włącz"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nie włączaj"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Pozwolić usłudze <xliff:g id="SERVICE">%1$s</xliff:g> na pełną kontrolę nad urządzeniem?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jeśli włączysz usługę <xliff:g id="SERVICE">%1$s</xliff:g>, Twoje urządzenie nie będzie korzystać z blokady ekranu, by usprawnić szyfrowanie danych."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Pełna kontrola jest odpowiednia dla aplikacji, które pomagają Ci radzić sobie z niepełnosprawnością, ale nie należy jej przyznawać wszystkim aplikacjom."</string>
@@ -2106,13 +2110,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Powiadomienia"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Szybkie ustawienia"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Okno opcji zasilania"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Przełącz podzielony ekran"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Ekran blokady"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Zrzut ekranu"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu ułatwień dostępu"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Pasek napisów w aplikacji <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Umieszczono pakiet <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> w zasobniku danych RESTRICTED"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Rozmowa"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Rozmowa grupowa"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 624560e..ae2b521 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Manter as duas teclas de volume pressionadas por alguns segundos ativa o serviço <xliff:g id="SERVICE">%1$s</xliff:g>, um recurso de acessibilidade. Isso pode mudar a forma como seu dispositivo funciona.\n\nÉ possível trocar o uso desse atalho para outro recurso em \"Config. &gt; Acessibilidade\"."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Ativar"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Não ativar"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Permitir que o <xliff:g id="SERVICE">%1$s</xliff:g> tenha controle total do seu dispositivo?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se o <xliff:g id="SERVICE">%1$s</xliff:g> for ativado, o dispositivo não usará o bloqueio de tela para melhorar a criptografia de dados."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"O controle total é adequado para apps que ajudam você com as necessidades de acessibilidade, mas não para a maioria dos apps."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Notificações"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Configurações rápidas"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Caixa de diálogo de liga/desliga"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Ativar tela dividida"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Bloquear tela"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Capturar tela"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu de acessibilidade"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de legendas do app <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> foi colocado no intervalo \"RESTRITO\""</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversa"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Conversa em grupo"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"+ de <xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>"</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index b0ab726..0ae75ec 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Manter premidas ambas as teclas de volume durante alguns segundos ativa o serviço <xliff:g id="SERVICE">%1$s</xliff:g>, uma funcionalidade de acessibilidade. Esta pode alterar a forma como o seu dispositivo funciona.\n\nPode alterar este atalho para outra funcionalidade em Definições &gt; Acessibilidade."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Ativar"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Não ativar"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Permitir que o serviço <xliff:g id="SERVICE">%1$s</xliff:g> tenha controlo total sobre o seu dispositivo?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se ativar o serviço <xliff:g id="SERVICE">%1$s</xliff:g>, o dispositivo não utilizará o bloqueio de ecrã para otimizar a encriptação de dados."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"O controlo total é adequado para aplicações que ajudam nas necessidades de acessibilidade, mas não para a maioria das aplicações."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Notificações"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Definições rápidas"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Caixa de diálogo de energia"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Ativar/desativar o ecrã dividido"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Ecrã de bloqueio"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Captura de ecrã"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu Acessibilidade"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de legendas da aplicação <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> foi colocado no contentor RESTRITO."</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversa"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Conversa de grupo"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"&gt; <xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>"</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 624560e..ae2b521 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Manter as duas teclas de volume pressionadas por alguns segundos ativa o serviço <xliff:g id="SERVICE">%1$s</xliff:g>, um recurso de acessibilidade. Isso pode mudar a forma como seu dispositivo funciona.\n\nÉ possível trocar o uso desse atalho para outro recurso em \"Config. &gt; Acessibilidade\"."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Ativar"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Não ativar"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Permitir que o <xliff:g id="SERVICE">%1$s</xliff:g> tenha controle total do seu dispositivo?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se o <xliff:g id="SERVICE">%1$s</xliff:g> for ativado, o dispositivo não usará o bloqueio de tela para melhorar a criptografia de dados."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"O controle total é adequado para apps que ajudam você com as necessidades de acessibilidade, mas não para a maioria dos apps."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Notificações"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Configurações rápidas"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Caixa de diálogo de liga/desliga"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Ativar tela dividida"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Bloquear tela"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Capturar tela"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu de acessibilidade"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de legendas do app <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> foi colocado no intervalo \"RESTRITO\""</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversa"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Conversa em grupo"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"+ de <xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>"</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 73c3e42..7455e9e 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -1653,6 +1653,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Dacă apăsați ambele taste de volum câteva secunde, activați funcția de accesibilitate <xliff:g id="SERVICE">%1$s</xliff:g>. Acest lucru poate schimba funcționarea dispozitivului.\n\nPuteți alege altă funcție pentru această comandă în Setări &gt; Accesibilitate."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Activați"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nu activați"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Permiteți serviciului <xliff:g id="SERVICE">%1$s</xliff:g> să aibă control total asupra dispozitivului dvs.?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Dacă activați <xliff:g id="SERVICE">%1$s</xliff:g>, dispozitivul nu va folosi blocarea ecranului pentru a îmbunătăți criptarea datelor."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Controlul total este adecvat pentru aplicații care vă ajută cu accesibilitatea, însă nu pentru majoritatea aplicaților."</string>
@@ -2072,13 +2076,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Notificări"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Setări rapide"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Power Dialog"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Activați ecranul împărțit"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Ecran de blocare"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Captură de ecran"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Meniul Accesibilitate"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Bară cu legenda pentru <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> a fost adăugat la grupul RESTRICȚIONATE"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversație"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Conversație de grup"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index a6d8f25..dd32364 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -1675,6 +1675,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Чтобы включить функцию \"<xliff:g id="SERVICE">%1$s</xliff:g>\", нажмите обе кнопки регулировки громкости на несколько секунд. Обратите внимание, что в работе устройства могут произойти изменения.\n\nЧтобы назначить это сочетание клавиш другой функции, перейдите в настройки и выберите \"Специальные возможности\"."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Включить"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Не включать"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Предоставить сервису \"<xliff:g id="SERVICE">%1$s</xliff:g>\" полный контроль над устройством?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Если включить сервис \"<xliff:g id="SERVICE">%1$s</xliff:g>\", устройство не будет использовать блокировку экрана для защиты данных."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Полный контроль нужен приложениям для реализации специальных возможностей и не нужен большинству остальных."</string>
@@ -2106,13 +2110,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Уведомления"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Быстрые настройки"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Диалоговое окно питания"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Включить или выключить разделение экрана"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Заблокированный экран"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Скриншот"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Меню специальных возможностей"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Строка субтитров в приложении \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Приложение \"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>\" помещено в категорию с ограниченным доступом."</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Чат"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Групповой чат"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index 3a8639e..7a912fc 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -1633,6 +1633,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"හඬ පරිමා යතුරු දෙකම තත්පර කීපයකට පහළට අල්ලාගෙන සිටීම ප්‍රවේශ්‍යතා විශේෂාංගයක් වන <xliff:g id="SERVICE">%1$s</xliff:g> ක්‍රියාත්මක කරයි. මෙය ඔබේ උපාංගය ක්‍රියා කරන ආකාරය වෙනස් කළ හැකිය.\n\nඔබට මෙම කෙටිමග සැකසීම් &gt; ප්‍රවේශ්‍යතාව හි තවත් විශේෂාංගයකට වෙනස් කළ හැකිය."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ක්‍රියාත්මක කරන්න"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"ක්‍රියාත්මක නොකරන්න"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> හට ඔබේ උපාංගයේ සම්පූර්ණ පාලනය තබා ගැනීමට ඉඩ දෙන්නද?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"ඔබ <xliff:g id="SERVICE">%1$s</xliff:g> ක්‍රියාත්මක කරන්නේ නම්, දත්ත සංකේතනය වැඩිදියුණු කිරීමට ඔබේ උපාංගය ඔබේ තිර අගුල භාවිත නොකරනු ඇත."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"පූර්ණ පාලනය ඔබට ප්‍රවේශ්‍යතා අවශ්‍යතා සමඟ උදවු කරන යෙදුම් සඳහා සුදුසු වන නමුත් බොහෝ යෙදුම් සඳහා සුදුසු නොවේ."</string>
@@ -2040,13 +2044,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"දැනුම්දීම්"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"ඉක්මන් සැකසීම්"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"බල සංවාදය"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"බෙදුම් තිරය ටොගල කරන්න"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"අගුලු තිරය"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"තිර රුව"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ප්‍රවේශ්‍යතා මෙනුව"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> හි සිරස්තල තීරුව."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> අවහිර කළ බාල්දියට දමා ඇත"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"සංවාදය"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"සමූහ සංවාදය"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index dee51d5..0c0e2f5 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -1675,6 +1675,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Pridržaním oboch klávesov hlasitosti na niekoľko sekúnd zapnete funkciu dostupnosti <xliff:g id="SERVICE">%1$s</xliff:g>. Môže sa tým zmeniť spôsob fungovania vášho zariadenia.\n\nTúto skratku môžete zmeniť na inú funkciu v časti Nastavenia &gt; Dostupnosť."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Zapnúť"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nezapínať"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Chcete povoliť službe <xliff:g id="SERVICE">%1$s</xliff:g> úplnú kontrolu nad zariadením?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ak zapnete službu <xliff:g id="SERVICE">%1$s</xliff:g>, vaše zariadenie nezvýši úroveň šifrovania údajov zámkou obrazovky."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Úplná kontrola je vhodná pre aplikácie, ktoré vám pomáhajú s dostupnosťou, ale nie pre väčšinu aplikácií."</string>
@@ -2106,13 +2110,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Upozornenia"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Rýchle nastavenia"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Dialógové okno napájania"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Prepnúť rozdelenú obrazovku"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Uzamknúť obrazovku"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Snímka obrazovky"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Ponuka Dostupnosť"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Popis aplikácie <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Balík <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> bol vložený do kontajnera OBMEDZENÉ"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Konverzácia"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Skupinová konverzácia"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 3ac05cf..b37bece 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -1675,6 +1675,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Če za nekaj sekund pridržite obe tipki za glasnost, boste vklopili storitev <xliff:g id="SERVICE">%1$s</xliff:g>, ki je funkcija za ljudi s posebnimi potrebami. To lahko spremeni način delovanja naprave.\n\nTo bližnjico lahko v meniju »Nastavitve« &gt; »Funkcije za ljudi s posebnimi potrebami« spremenite, da bo uporabljena za drugo funkcijo."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Vklopi"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ne vklopi"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Ali storitvi <xliff:g id="SERVICE">%1$s</xliff:g> dovolite popoln nadzor nad svojo napravo?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Če vklopite storitev <xliff:g id="SERVICE">%1$s</xliff:g>, vaša naprava ne bo uporabljala zaklepanja zaslona za izboljšanje šifriranja podatkov."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Popoln nadzor je ustrezen za aplikacije, ki vam pomagajo pri funkcijah za ljudi s posebnimi potrebami, vendar ne za večino aplikacij."</string>
@@ -2106,13 +2110,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Obvestila"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Hitre nastavitve"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Pogovorno okno o porabi energije"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Preklop razdeljenega zaslona"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Zaklenjen zaslon"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Posnetek zaslona"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Meni s funkcijami za ljudi s posebnimi potrebami"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Vrstica s podnapisi aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> je bil dodan v segment OMEJENO"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Pogovor"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Skupinski pogovor"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index 6bf4306..f19d6e4 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Mbajtja shtypur e dy tasteve të volumit për pak sekonda aktivizon <xliff:g id="SERVICE">%1$s</xliff:g>, një veçori të qasshmërisë. Kjo mund të ndryshojë mënyrën se si funksionon pajisja jote.\n\nMund të ndryshosh këtë shkurtore te një veçori tjetër te Cilësimet &gt; Qasshmëria."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Aktivizo"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Mos e aktivizo"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Do të lejosh që <xliff:g id="SERVICE">%1$s</xliff:g> të ketë kontroll të plotë të pajisjes sate?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Nëse aktivizon <xliff:g id="SERVICE">%1$s</xliff:g>, pajisja nuk do të përdorë kyçjen e ekranit për të përmirësuar enkriptimin e të dhënave."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Kontrolli i plotë është i përshtatshëm për aplikacionet që të ndihmojnë me nevojat e qasshmërisë, por jo për shumicën e aplikacioneve."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Njoftimet"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Cilësimet e shpejta"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Dialogu i energjisë"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Kalo tek ekrani i ndarë"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Ekrani i kyçjes"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Pamja e ekranit"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menyja e qasshmërisë"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Shiriti i nëntitullit të <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> është vendosur në grupin E KUFIZUAR"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Biseda"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Bisedë në grup"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index e1e62b5..1599cf5 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -1653,6 +1653,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ако задржите оба тастера за јачину звука пар секунди, укључује се <xliff:g id="SERVICE">%1$s</xliff:g>, функција приступачности. То може да промени начин рада уређаја.\n\nМожете да промените функцију на коју се односи ова пречица у одељку Подешавања &gt; Приступачност."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Укључи"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Не укључуј"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Желите ли да дозволите да услуга <xliff:g id="SERVICE">%1$s</xliff:g> има потпуну контролу над уређајем?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ако укључите услугу <xliff:g id="SERVICE">%1$s</xliff:g>, уређај неће користити закључавање екрана да би побољшао шифровање података."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Потпуна контрола је примерена за апликације које вам помажу код услуга приступачности, али не и за већину апликација."</string>
@@ -2072,13 +2076,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Обавештења"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Брза подешавања"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Дијалог напајања"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Укључите/искључите подељени екран"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Закључани екран"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Снимак екрана"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Мени Приступачност"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Трака са насловима апликације <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакет <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> је додат у сегмент ОГРАНИЧЕНО"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Конверзација"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Групна конверзација"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 2e6a848..d545821 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Om du trycker ned båda volymknapparna i ett par sekunder aktiveras <xliff:g id="SERVICE">%1$s</xliff:g>, en tillgänglighetsfunktion. Det kan leda till att enheten fungerar annorlunda.\n\nDu kan ändra vilken funktion som ska aktiveras med genvägen under Inställningar &gt; Tillgänglighet."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Aktivera"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Aktivera inte"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vill du tillåta att <xliff:g id="SERVICE">%1$s</xliff:g> får fullständig kontroll över enheten?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Om du aktiverar <xliff:g id="SERVICE">%1$s</xliff:g> används inte skärmlåset för att förbättra datakryptering på enheten."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Fullständig kontroll lämpar sig för appar med tillgänglighetsfunktioner, men är inte lämplig för de flesta appar."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Aviseringar"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Snabbinställningar"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Dialogruta för ström"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Aktivera och inaktivera delad skärm"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Låsskärm"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Skärmdump"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Tillgänglighetsmenyn"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Textningsfält för <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> har placerats i hinken RESTRICTED"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Konversation"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Gruppkonversation"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 355ad13..c42aad0 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Hatua ya kushikilia chini vitufe vyote viwili vya sauti kwa sekunde chache huwasha <xliff:g id="SERVICE">%1$s</xliff:g>, kipengele cha ufikivu. Huenda hatua hii ikabadilisha jinsi kifaa chako kinavyofanya kazi.\n\nUnaweza kubadilisha njia hii ya mkato iwe kipengele kingine katika Mipangilio &gt; Ufikivu."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Washa"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Usiwashe"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Ungependa kuruhusu <xliff:g id="SERVICE">%1$s</xliff:g> idhibiti kifaa chako kikamilifu?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ukiwasha <xliff:g id="SERVICE">%1$s</xliff:g>, kifaa chako hakitatumia kipengele cha kufunga skrini yako ili kuboresha usimbaji wa data kwa njia fiche."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Udhibiti kamili unafaa kwa programu zinazokusaidia kwa mahitaji ya ufikivu, ila si kwa programu nyingi."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Arifa"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Mipangilio ya Haraka"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Kidirisha cha Nishati"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Geuza Skrini Iliyogawanywa"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Skrini Iliyofungwa"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Picha ya skrini"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menyu ya Ufikivu"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Upau wa manukuu wa <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> kimewekwa katika kikundi KILICHODHIBITIWA"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Mazungumzo"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Mazungumzo ya Kikundi"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index 2a03f36..87fa6c6 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"இரண்டு ஒலியளவு விசைகளையும் சில விநாடிகள் பிடித்திருப்பதால் அணுகல்தன்மை அம்சமான <xliff:g id="SERVICE">%1$s</xliff:g> ஆன் ஆகும். இதனால் உங்கள் சாதனம் வேலை செய்யும் முறை மாறக்கூடும்.\n\nஅமைப்புகள் &gt; அணுகல்தன்மைக்குச் சென்று இந்த ஷார்ட்கட்டை வேறு அம்சத்திற்கு மாற்ற முடியும்."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ஆன் செய்"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"ஆன் செய்யாதே"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"உங்கள் சாதனத்தை முழுமையாகக் கட்டுப்படுத்த <xliff:g id="SERVICE">%1$s</xliff:g> சேவையை அனுமதிக்க வேண்டுமா?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> சேவையை ஆன் செய்தால் தரவு என்க்ரிப்ஷனை மேம்படுத்த சாதனம் திரைப் பூட்டைப் பயன்படுத்தாது."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"உங்களுக்கு உதவக்கூடிய ஆப்ஸுக்குக் தேவையான அணுகல்தன்மையை அளித்து முழுக் கட்டுப்பாட்டையும் அளிக்கலாம், ஆனால் பெரும்பாலான ஆப்ஸுக்கு இது பொருந்தாது."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"அறிவிப்புகள்"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"விரைவு அமைப்புகள்"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"பவர் உரையாடல்"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"திரைப் பிரிப்பை நிலைமாற்று"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"பூட்டுத் திரை"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ஸ்கிரீன்ஷாட்"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"அணுகல்தன்மை மெனு"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸின் தலைப்புப் பட்டி."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> என்பதை வரம்பிடப்பட்ட பக்கெட்திற்குள் சேர்க்கப்பட்டது"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"உரையாடல்"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"குழு உரையாடல்"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index da5b77c..0773bd9 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"రెండు వాల్యూమ్ కీలను కొన్ని సెకన్ల పాటు నొక్కి పట్టుకోవడం ద్వారా యాక్సెసిబిలిటీ అయిన <xliff:g id="SERVICE">%1$s</xliff:g> ఆన్ అవుతుంది. ఇది మీ పరికరం పని చేసే విధానాన్ని మార్చవచ్చు.\n\nసెట్టింగ్‌లు &gt; యాక్సెసిబిలిటీలో, వేరొక ఫీచర్‌ను ప్రారంభించేలా ఈ షార్ట్ కట్‌ను మీరు మార్చవచ్చు."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ఆన్ చేయి"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"ఆన్ చేయకండి"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g>కి మీ పరికరంపై పూర్తి నియంత్రణను ఇవ్వాలనుకుంటున్నారా?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"మీరు <xliff:g id="SERVICE">%1$s</xliff:g>ని ఆన్ చేస్తే, డేటా ఎన్‌క్రిప్షన్‌ను మెరుగుపరచడానికి మీ పరికరం మీ స్క్రీన్ లాక్‌ను ఉపయోగించదు."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"అవసరమైన యాక్సెస్ సామర్ధ్యం కోసం యాప్‌లకు పూర్తి నియంత్రణ ఇవ్వడం తగిన పనే అయినా, అన్ని యాప్‌లకు అలా ఇవ్వడం సరికాదు."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"నోటిఫికేషన్‌లు"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"శీఘ్ర సెట్టింగ్‌లు"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"పవర్ డైలాగ్‌ను తెరువు"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"స్క్రీన్ విభజనను టోగుల్ చేయి"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"స్క్రీన్‌ను లాక్ చేయి"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"స్క్రీన్‌షాట్"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"యాక్సెసిబిలిటీ మెను"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> క్యాప్షన్ బార్."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> పరిమితం చేయబడిన బకెట్‌లో ఉంచబడింది"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"సంభాషణ"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"గ్రూప్ సంభాషణ"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index ff5557d..a700e75 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"การกดปุ่มปรับระดับเสียงทั้ง 2 ปุ่มค้างไว้ 2-3 วินาทีจะเปิด <xliff:g id="SERVICE">%1$s</xliff:g> ซึ่งเป็นฟีเจอร์การช่วยเหลือพิเศษ การดำเนินการนี้อาจเปลี่ยนแปลงลักษณะการทำงานของอุปกรณ์\n\nคุณแก้ไขทางลัดนี้ให้เปิดฟีเจอร์อื่นได้ในการตั้งค่า &gt; การช่วยเหลือพิเศษ"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"เปิด"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"ไม่ต้องเปิด"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"อนุญาตให้ <xliff:g id="SERVICE">%1$s</xliff:g> ควบคุมอุปกรณ์อย่างเต็มที่ไหม"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"หากคุณเปิด <xliff:g id="SERVICE">%1$s</xliff:g> อุปกรณ์ของคุณจะไม่ใช้ล็อกหน้าจอเพื่อปรับปรุงการเข้ารหัสข้อมูล"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"การควบคุมอย่างเต็มที่เหมาะสำหรับแอปที่ช่วยคุณในเรื่องความต้องการความช่วยเหลือพิเศษแต่ไม่เหมาะสำหรับแอปส่วนใหญ่"</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"การแจ้งเตือน"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"การตั้งค่าด่วน"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"กล่องโต้ตอบพลังงาน"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"เปิด/ปิดการแบ่งหน้าจอ"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"หน้าจอล็อก"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ภาพหน้าจอ"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"เมนูการช่วยเหลือพิเศษ"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"แถบคำบรรยาย <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"ใส่ <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ในที่เก็บข้อมูลที่ถูกจำกัดแล้ว"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"การสนทนา"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"บทสนทนากลุ่ม"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 5de4525..d85ceb0 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Mao-on ang feature ng pagiging accessible na <xliff:g id="SERVICE">%1$s</xliff:g> kapag pinindot nang matagal ang parehong volume key nang ilang segundo. Posibleng mabago nito ang paggana ng iyong device.\n\nPuwede mong palitan ng ibang feature ang shortcut na ito sa Mga Setting &gt; Pagiging Accessible."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"I-on"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Huwag i-on"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Bigyan ang <xliff:g id="SERVICE">%1$s</xliff:g> ng ganap na kontrol sa iyong device?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Kung io-on mo ang <xliff:g id="SERVICE">%1$s</xliff:g>, hindi gagamitin ng iyong device ang lock ng screen mo para pahusayin ang pag-encrypt ng data."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Naaangkop ang ganap na kontrol sa mga app na tumutulong sa mga pangangailangan mo sa accessibility, pero hindi sa karamihan ng mga app."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Mga Notification"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Mga Mabilisang Setting"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Dialog ng Power"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"I-toggle ang Split Screen"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lock Screen"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu ng Accessibility"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Caption bar ng <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Inilagay ang <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> sa PINAGHIHIGPITANG bucket"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Pag-uusap"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Panggrupong Pag-uusap"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index b10d193..d87a854 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ses tuşlarının ikisini birden birkaç saniyeliğine basılı tutmak <xliff:g id="SERVICE">%1$s</xliff:g> erişilebilirlik özelliğini etkinleştirir. Bu, cihazınızın çalışma şeklini değiştirebilir.\n\nBu kısayolu, Ayarlar &gt; Erişilebilirlik\'te başka bir özellikle değiştirebilirsiniz."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Etkinleştir"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Etkinleştirme"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> hizmetinin cihazınızı tamamen kontrol etmesine izin veriyor musunuz?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> hizmetini açarsanız cihazınız veri şifrelemeyi geliştirmek için ekran kilidinizi kullanmaz."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Erişebilirlik ihtiyaçlarınıza yardımcı olan uygulamalara tam kontrol verilmesi uygundur ancak diğer pek çok uygulama için uygun değildir."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Bildirimler"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Hızlı Ayarlar"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Güç İletişim Kutusu"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Bölünmüş Ekranı aç/kapat"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Kilit Ekranı"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Ekran görüntüsü"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Erişilebilirlik Menüsü"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> uygulamasının başlık çubuğu."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> KISITLANMIŞ gruba yerleştirildi"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Görüşme"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Grup Görüşmesi"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 55d6eca..ff8f1ec 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -1675,6 +1675,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Якщо втримувати обидві клавіші гучності впродовж кількох секунд, буде ввімкнено спеціальні можливості – <xliff:g id="SERVICE">%1$s</xliff:g>. Це може вплинути на роботу пристрою.\n\nДля цієї комбінації клавіш можна вибрати іншу функцію в меню \"Налаштування &gt; Спеціальні можливості\"."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Увімкнути"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Не вмикати"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Надати сервісу <xliff:g id="SERVICE">%1$s</xliff:g> повний доступ до вашого пристрою?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Якщо ви ввімкнете сервіс <xliff:g id="SERVICE">%1$s</xliff:g>, дані на пристрої не захищатимуться екраном блокування."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Повний доступ доречний для додатків, які надають спеціальні можливості, але його не варто відкривати для більшості інших додатків."</string>
@@ -2106,13 +2110,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Сповіщення"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Швидкі налаштування"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Відкрити вікно"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Розділити екран"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Заблокувати екран"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Знімок екрана"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Меню спеціальних можливостей"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Смуга із субтитрами для додатка <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакет \"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>\" додано в сегмент з обмеженнями"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Чат"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Груповий чат"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index d4728a1..14de695 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"والیوم کی دونوں کلیدوں کو کچھ سیکنڈز تک دبائے رکھنے سے <xliff:g id="SERVICE">%1$s</xliff:g> ایکسیسبیلٹی خصوصیت آن ہو جاتی ہے۔ اس سے آپ کے آلے کے کام کرنے کا طریقہ تبدیل ہو سکتا ہے۔\n\nآپ ترتیبات اور ایکسیسبیلٹی میں دیگر خصوصیت کے لیے اس شارٹ کٹ کو تبدیل کر سکتے ہیں۔"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"آن کریں"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"آن نہ کریں"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> کو آپ کے آلے کا مکمل کنٹرول حاصل کرنے کی اجازت دیں؟"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"اگر آپ <xliff:g id="SERVICE">%1$s</xliff:g> کو آن کرتے ہیں تو آپ کا آلہ ڈیٹا کی مرموزکاری کو بڑھانے کیلئے آپ کی اسکرین کا قفل استعمال نہیں کرے گا۔"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"مکمل کنٹرول ان ایپس کے لیے مناسب ہے جو ایکسیسبیلٹی کی ضروریات میں آپ کی مدد کرتی ہیں، لیکن زیادہ تر ایپس کیلئے مناسب نہیں۔"</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"اطلاعات"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"فوری ترتیبات"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"پاور ڈائیلاگ"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"اسپلٹ اسکرین ٹوگل کریں"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"مقفل اسکرین"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"اسکرین شاٹ"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ایکسیسبیلٹی مینو"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> کی کیپشن بار۔"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> کو پابند کردہ بکٹ میں رکھ دیا گیا ہے"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"گفتگو"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"گروپ گفتگو"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"+<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>"</string>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index c212627..5fc642e 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"<xliff:g id="SERVICE">%1$s</xliff:g> funksiyasini yoqish uchun ikkala tovush tugmalarini bir necha soniya bosib turing. Qurilmangiz ishlashida oʻzgarish yuz berishi mumkin.\n\nBu tezkor tugmalarni boshqa funksiyaga Sozlamalar ichidagi Maxsus imkoniyatlar orqali tayinlash mumkin."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Yoqilsin"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Yoqilmasin"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> xizmatiga qurilmangizni boshqarish uchun toʻliq ruxsat berilsinmi?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Agar <xliff:g id="SERVICE">%1$s</xliff:g> xizmatini yoqsangiz, qurilmangiz maʼlumotlarni shifrlashni kuchaytirish uchun ekran qulfidan foydalanmaydi."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Toʻliq nazorat maxsus imkoniyatlar bilan ishlovchi ilovalar uchun mos, lekin barcha ilovalar uchun emas."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Bildirishnomalar"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Tezkor sozlamalar"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Quvvat muloqot oynasi"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Ekranni ikkiga ajratish tugmasi"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Ekran qulfi"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Skrinshot"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Maxsus imkoniyatlar menyusi"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> taglavhalar paneli."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> cheklangan turkumga joylandi"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Suhbat"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Guruh suhbati"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 3b2de1c..b6e1f24 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Thao tác nhấn và giữ cả hai phím âm lượng trong vài giây sẽ bật <xliff:g id="SERVICE">%1$s</xliff:g>, một tính năng hỗ trợ tiếp cận. Việc bật tính năng này có thể thay đổi cách thiết bị của bạn hoạt động.\n\nBạn có thể chuyển phím tắt này thành một tính năng khác trong phần Cài đặt &gt; Hỗ trợ tiếp cận."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Bật"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Không bật"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Cho phép <xliff:g id="SERVICE">%1$s</xliff:g> toàn quyền kiểm soát thiết bị của bạn?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Nếu bạn bật <xliff:g id="SERVICE">%1$s</xliff:g>, thiết bị của bạn sẽ không dùng phương thức khóa màn hình để tăng cường mã hóa dữ liệu."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Bạn chỉ nên cấp toàn quyền kiểm soát cho những ứng dụng trợ giúp mình khi cần hỗ trợ tiếp cận, chứ không nên cấp cho hầu hết các ứng dụng."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Thông báo"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Cài đặt nhanh"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Hộp thoại thao tác với nguồn"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Bật/tắt chế độ chia đôi màn hình"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Khóa màn hình"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Chụp ảnh màn hình"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Trình đơn Hỗ trợ tiếp cận"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Thanh phụ đề của <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Đã đưa <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> vào bộ chứa BỊ HẠN CHẾ"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Cuộc trò chuyện"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Cuộc trò chuyện nhóm"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index dd88759..790ac9c 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"同时按住两个音量键几秒钟,即可开启<xliff:g id="SERVICE">%1$s</xliff:g>无障碍功能。这样做可能会改变您设备的工作方式。\n\n您可以在“设置”&gt;“无障碍”中将此快捷方式更改为开启另一项功能。"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"开启"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"不开启"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"要允许<xliff:g id="SERVICE">%1$s</xliff:g>完全控制您的设备吗?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"如果您开启<xliff:g id="SERVICE">%1$s</xliff:g>,您的设备将无法使用屏幕锁定功能来增强数据加密效果。"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"对于能满足您的无障碍功能需求的应用,可授予其完全控制权限;但对大部分应用来说,都不适合授予此权限。"</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"通知"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"快捷设置"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"电源对话框"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"开启/关闭分屏"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"锁定屏幕"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"屏幕截图"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"无障碍功能菜单"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>的标题栏。"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> 已被放入受限存储分区"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"对话"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"群组对话"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 4d790c46..57c1c66 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"同時按下兩個音量鍵幾秒,以開啟 <xliff:g id="SERVICE">%1$s</xliff:g> 無障礙功能。這可能會變更裝置的運作。\n\n您可在「設定」&gt;「無障礙功能」中變更此快速鍵。"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"開啟"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"不要開啟"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"要允許 <xliff:g id="SERVICE">%1$s</xliff:g> 完全控制您的裝置嗎?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"如果您開啟 <xliff:g id="SERVICE">%1$s</xliff:g>,裝置將無法使用螢幕鎖定功能加強資料加密。"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"為您提供所需無障礙功能的應用程式有權完全控制您的裝置,但大部分應用程式均沒有此權限。"</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"通知"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"快速設定"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"電源對話框"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"切換分割螢幕"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"將畫面上鎖"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"螢幕截圖"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"無障礙功能選單"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」的說明列。"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> 已納入受限制的儲存區"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"對話"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"群組對話"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index e18b51e..406b94f 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"同時按住音量調高鍵和調低鍵數秒,即可開啟「<xliff:g id="SERVICE">%1$s</xliff:g>」無障礙功能。這麼做可能會改變裝置的運作方式。\n\n你可以在 [設定] &gt; [無障礙設定] 中變更這個快速鍵觸發的功能。"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"開啟"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"不要開啟"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"要將裝置的完整控制權授予「<xliff:g id="SERVICE">%1$s</xliff:g>」嗎?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"如果你開啟「<xliff:g id="SERVICE">%1$s</xliff:g>」,裝置將無法使用螢幕鎖定功能強化資料加密。"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"如果你有無障礙服務需求,可以將完整控制權授予具有相關功能的應用程式,但請勿將完整控制權授予大多數的應用程式。"</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"通知"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"快速設定"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"開啟電源對話方塊"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"切換分割畫面模式"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"螢幕鎖定"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"擷取螢幕畫面"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"無障礙選單"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」的說明文字列。"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"已將「<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>」移入受限制的值區"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"對話"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"群組對話"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index a9af563..d7b3ee7 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -1631,6 +1631,10 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ukubambela phansi bobabili okhiye bevolumu amasekhondi ambalwa kuvula i-<xliff:g id="SERVICE">%1$s</xliff:g>, eyisici sokufinyelela Lokhu kungashintsha indlela idivayisi yakho esebenza ngayo.\n\nUngashintshela lesi sinqamuleli kwesinye isici Kuzilungiselelo &gt; Ukufinyeleleka."</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Vula"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ungavuli"</string>
+    <!-- no translation found for accessibility_shortcut_menu_item_status_on (6608392117189732543) -->
+    <skip />
+    <!-- no translation found for accessibility_shortcut_menu_item_status_off (5531598275559472393) -->
+    <skip />
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vumela i-<xliff:g id="SERVICE">%1$s</xliff:g> ukuthola ukulawula okuphelele kwedivayisi yakho?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Uma uvula i-<xliff:g id="SERVICE">%1$s</xliff:g>, idivayisi yakho ngeke isebenzise ukukhiya kwakho kwesikrini sakho ukuthuthukisa ukubethelwa kwedatha."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Ukulawula okugcwele kulungele izinhlelo zokusebenza ezikusiza ngezidingo zokufinyelela, kodwa hhayi izinhlelo zokusebenza eziningi."</string>
@@ -2038,13 +2042,17 @@
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Izaziso"</string>
     <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Izilungiselelo ezisheshayo"</string>
     <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Ibhokisi lamandla"</string>
-    <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Guqula ukuhlukanisa isikrini"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Khiya isikrini"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Isithombe-skrini"</string>
-    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Imenyu yokufinyeleleka"</string>
+    <!-- no translation found for accessibility_system_action_accessibility_button_label (5941347017132886642) -->
+    <skip />
+    <!-- no translation found for accessibility_system_action_accessibility_button_chooser_label (6973618519666227981) -->
+    <skip />
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Ibha yamazwibela we-<xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"I-<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ifakwe kubhakede LOKUKHAWULELWE"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+    <!-- no translation found for conversation_single_line_image_placeholder (6983271082911936900) -->
+    <skip />
     <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Ingxoxo"</string>
     <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Ingxoxo Yeqembu"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index ab79d2d..b91d35b 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -2864,7 +2864,6 @@
         <item>lockdown</item>
         <item>logout</item>
         <item>bugreport</item>
-        <item>screenshot</item>
     </string-array>
 
     <!-- Number of milliseconds to hold a wake lock to ensure that drawing is fully
diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml
index e4aef86..bbe547b 100644
--- a/core/res/res/values/dimens.xml
+++ b/core/res/res/values/dimens.xml
@@ -708,14 +708,11 @@
     <dimen name="conversation_face_pile_protection_width">2dp</dimen>
     <!-- The width of the protection of the face pile layout when expanded-->
     <dimen name="conversation_face_pile_protection_width_expanded">1dp</dimen>
-    <!-- The padding of the expanded message container when the app name is gone-->
-    <dimen name="expanded_group_conversation_message_padding_without_app_name">14dp</dimen>
+    <!-- The padding of the expanded message container-->
+    <dimen name="expanded_group_conversation_message_padding">14dp</dimen>
 
     <!-- The top padding of the conversation icon container in the regular state-->
-    <dimen name="conversation_icon_container_top_padding">12dp</dimen>
-
-    <!-- The top padding of the conversation icon container when there's no app name present in a group-->
-    <dimen name="conversation_icon_container_top_padding_no_app_name">9dp</dimen>
+    <dimen name="conversation_icon_container_top_padding">9dp</dimen>
 
     <!-- The top padding of the conversation icon container when the avatar is small-->
     <dimen name="conversation_icon_container_top_padding_small_avatar">17.5dp</dimen>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 9b7110b..c388f75 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -442,19 +442,19 @@
     <string name="printing_disabled_by">Printing disabled by <xliff:g id="owner_app">%s</xliff:g>.</string>
 
     <!-- Notification title. This notification lets a user know that their personal apps are
-        blocked due to a work policy from their IT admin, and tells them what they need to do
-        to unblock their apps.[CHAR LIMIT=29] -->
-    <string name="personal_apps_suspended_title">Unblock your personal apps</string>
-    <!-- Notification title. This notification lets a user know that their apps will be blocked
-        tomorrow due to a work policy from their IT admin, and tells them what they need to do to
-        prevent the apps from being blocked. [CHAR LIMIT=29] -->
-    <string name="personal_apps_suspended_tomorrow_title">Apps will be blocked tomorrow</string>
-    <!-- Notification text. This notification lets a user know that they need to turn on their
-        work profile due to a work policy from their IT admin. The number of days is at least 3.
-        [CHAR LIMIT=NONE] -->
-    <string name="personal_apps_suspended_text">Your IT admin doesn\u2019t allow your
-        work profile to be paused for more than <xliff:g id="days" example="3">%1$d</xliff:g>
-        days</string>
+        either blocked or will be blocked soon due to a work policy from their IT admin, and that
+        they need to turn on their work profile to unblock their apps.[CHAR LIMIT=29] -->
+    <string name="personal_apps_suspension_title">Turn on your work profile</string>
+    <!-- Notification text. This notification lets a user know that their personal apps are
+        blocked due to a work policy from their IT admin, and that they need to turn on their work
+        profile to unblock their apps.[CHAR LIMIT=NONE] -->
+    <string name="personal_apps_suspension_text">
+        Your personal apps are blocked until you turn on your work profile</string>
+    <!-- Notification text. This notification lets a user know that their apps will be blocked
+        tomorrow due to a work policy from their IT admin, and that they need to turn on their work
+        profile to prevent the apps from being blocked. [CHAR LIMIT=NONE] -->
+    <string name="personal_apps_suspension_tomorrow_text">
+        Your personal apps will be blocked tomorrow</string>
     <!-- Title for the button that turns work profile on. To be used in a notification
         [CHAR LIMIT=NONE] -->
     <string name="personal_apps_suspended_turn_profile_on">Turn on work profile</string>
@@ -4842,10 +4842,10 @@
     <string name="confirm_battery_saver">OK</string>
 
     <!-- [CHAR_LIMIT=NONE] Battery saver: Feature description, with a "learn more" link. -->
-    <string name="battery_saver_description_with_learn_more">To extend battery life, Battery Saver:\n&#183;Turns on Dark theme\n&#183;Turns off or restricts background activity, some visual effects, and other features like \u201cHey Google\u201d\n\n<annotation id="url">Learn more</annotation></string>
+    <string name="battery_saver_description_with_learn_more">To extend battery life, Battery Saver:\n\n\u2022Turns on Dark theme\n\u2022Turns off or restricts background activity, some visual effects, and other features like \u201cHey Google\u201d\n\n<annotation id="url">Learn more</annotation></string>
 
     <!-- [CHAR_LIMIT=NONE] Battery saver: Feature description, without a "learn more" link. -->
-    <string name="battery_saver_description">To extend battery life, Battery Saver:\n&#183;Turns on Dark theme\n&#183;Turns off or restricts background activity, some visual effects, and other features like \u201cHey Google\u201d</string>
+    <string name="battery_saver_description">To extend battery life, Battery Saver:\n\n\u2022Turns on Dark theme\n\u2022Turns off or restricts background activity, some visual effects, and other features like \u201cHey Google\u201d</string>
 
     <!-- [CHAR_LIMIT=NONE] Data saver: Feature description -->
     <string name="data_saver_description">To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app you’re currently using can access data, but may do so less frequently. This may mean, for example, that images don’t display until you tap them.</string>
@@ -5437,14 +5437,14 @@
     <string name="accessibility_system_action_quick_settings_label">Quick Settings</string>
     <!-- Label for opening power dialog action [CHAR LIMIT=NONE] -->
     <string name="accessibility_system_action_power_dialog_label">Power Dialog</string>
-    <!-- Label for toggle split screen action [CHAR LIMIT=NONE] -->
-    <string name="accessibility_system_action_toggle_split_screen_label">Toggle Split Screen</string>
     <!-- Label for lock screen action [CHAR LIMIT=NONE] -->
     <string name="accessibility_system_action_lock_screen_label">Lock Screen</string>
     <!-- Label for taking screenshot action [CHAR LIMIT=NONE] -->
     <string name="accessibility_system_action_screenshot_label">Screenshot</string>
-    <!-- Label for showing accessibility menu action [CHAR LIMIT=NONE] -->
-    <string name="accessibility_system_action_accessibility_menu_label">Accessibility Menu</string>
+    <!-- Label for showing accessibility shortcut action [CHAR LIMIT=NONE] -->
+    <string name="accessibility_system_action_accessibility_button_label">On-screen Accessibility Shortcut</string>
+    <!-- Label for showing accessibility shortcut menu action [CHAR LIMIT=NONE] -->
+    <string name="accessibility_system_action_accessibility_button_chooser_label">On-screen Accessibility Shortcut Chooser</string>
     <!-- Accessibility description of caption view -->
     <string name="accessibility_freeform_caption">Caption bar of <xliff:g id="app_name">%1$s</xliff:g>.</string>
 
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 288cf05..88161f6 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -1197,9 +1197,9 @@
   <java-symbol type="string" name="network_logging_notification_text" />
   <java-symbol type="string" name="location_changed_notification_title" />
   <java-symbol type="string" name="location_changed_notification_text" />
-  <java-symbol type="string" name="personal_apps_suspended_title" />
-  <java-symbol type="string" name="personal_apps_suspended_tomorrow_title" />
-  <java-symbol type="string" name="personal_apps_suspended_text" />
+  <java-symbol type="string" name="personal_apps_suspension_title" />
+  <java-symbol type="string" name="personal_apps_suspension_tomorrow_text" />
+  <java-symbol type="string" name="personal_apps_suspension_text" />
   <java-symbol type="string" name="factory_reset_warning" />
   <java-symbol type="string" name="factory_reset_message" />
   <java-symbol type="string" name="lockscreen_transport_play_description" />
@@ -2824,6 +2824,7 @@
 
   <java-symbol type="string" name="notification_hidden_text" />
   <java-symbol type="id" name="app_name_text" />
+  <java-symbol type="id" name="app_name_divider" />
   <java-symbol type="id" name="header_text" />
   <java-symbol type="id" name="header_text_secondary" />
   <java-symbol type="id" name="expand_button" />
@@ -3240,7 +3241,9 @@
   <java-symbol type="id" name="accessibility_shortcut_target_checkbox" />
   <java-symbol type="id" name="accessibility_shortcut_target_icon" />
   <java-symbol type="id" name="accessibility_shortcut_target_label" />
-  <java-symbol type="id" name="accessibility_shortcut_target_switch_item" />
+  <java-symbol type="id" name="accessibility_shortcut_target_status" />
+  <java-symbol type="string" name="accessibility_shortcut_menu_item_status_on" />
+  <java-symbol type="string" name="accessibility_shortcut_menu_item_status_off" />
 
   <!-- Accessibility Button -->
   <java-symbol type="layout" name="accessibility_button_chooser" />
@@ -3840,8 +3843,8 @@
   <java-symbol type="string" name="accessibility_system_action_quick_settings_label" />
   <java-symbol type="string" name="accessibility_system_action_recents_label" />
   <java-symbol type="string" name="accessibility_system_action_screenshot_label" />
-  <java-symbol type="string" name="accessibility_system_action_toggle_split_screen_label" />
-  <java-symbol type="string" name="accessibility_system_action_accessibility_menu_label" />
+  <java-symbol type="string" name="accessibility_system_action_accessibility_button_label" />
+  <java-symbol type="string" name="accessibility_system_action_accessibility_button_chooser_label" />
 
   <java-symbol type="string" name="accessibility_freeform_caption" />
 
@@ -3911,12 +3914,11 @@
   <java-symbol type="dimen" name="conversation_badge_side_margin_group_expanded" />
   <java-symbol type="dimen" name="conversation_badge_side_margin_group_expanded_face_pile" />
   <java-symbol type="dimen" name="conversation_content_start" />
-  <java-symbol type="dimen" name="expanded_group_conversation_message_padding_without_app_name" />
+  <java-symbol type="dimen" name="expanded_group_conversation_message_padding" />
   <java-symbol type="dimen" name="messaging_layout_margin_end" />
   <java-symbol type="dimen" name="conversation_header_expanded_padding_end" />
   <java-symbol type="dimen" name="conversation_icon_container_top_padding" />
   <java-symbol type="dimen" name="conversation_icon_container_top_padding_small_avatar" />
-  <java-symbol type="dimen" name="conversation_icon_container_top_padding_no_app_name" />
   <java-symbol type="layout" name="notification_template_material_conversation" />
   <java-symbol type="dimen" name="button_padding_horizontal_material" />
   <java-symbol type="dimen" name="button_inset_horizontal_material" />
diff --git a/core/tests/coretests/src/android/content/ContextTest.java b/core/tests/coretests/src/android/content/ContextTest.java
index aab39bf..2057a81 100644
--- a/core/tests/coretests/src/android/content/ContextTest.java
+++ b/core/tests/coretests/src/android/content/ContextTest.java
@@ -18,12 +18,15 @@
 
 import static android.view.Display.DEFAULT_DISPLAY;
 
+import static com.google.common.truth.Truth.assertThat;
+
 import static org.junit.Assert.assertEquals;
 
 import android.app.ActivityThread;
 import android.hardware.display.DisplayManager;
 import android.os.UserHandle;
 
+import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 import androidx.test.platform.app.InstrumentationRegistry;
@@ -32,7 +35,6 @@
 import org.junit.runner.RunWith;
 
 /**
- *
  *  Build/Install/Run:
  *   atest FrameworksCoreTests:ContextTest
  */
@@ -48,6 +50,14 @@
     }
 
     @Test
+    public void testDisplayIdForSystemUiContext() {
+        final Context systemUiContext =
+                ActivityThread.currentActivityThread().getSystemUiContext();
+
+        assertEquals(systemUiContext.getDisplay().getDisplayId(), systemUiContext.getDisplayId());
+    }
+
+    @Test
     public void testDisplayIdForTestContext() {
         final Context testContext =
                 InstrumentationRegistry.getInstrumentation().getTargetContext();
@@ -94,4 +104,27 @@
                 InstrumentationRegistry.getInstrumentation().getTargetContext();
         testContext.startActivityAsUser(new Intent(), new UserHandle(UserHandle.USER_ALL));
     }
+
+    @Test
+    public void testIsUiContext_appContext_returnsFalse() {
+        final Context appContext = ApplicationProvider.getApplicationContext();
+
+        assertThat(appContext.isUiContext()).isFalse();
+    }
+
+    @Test
+    public void testIsUiContext_systemContext_returnsTrue() {
+        final Context systemContext =
+                ActivityThread.currentActivityThread().getSystemContext();
+
+        assertThat(systemContext.isUiContext()).isTrue();
+    }
+
+    @Test
+    public void testIsUiContext_systemUiContext_returnsTrue() {
+        final Context systemUiContext =
+                ActivityThread.currentActivityThread().getSystemUiContext();
+
+        assertThat(systemUiContext.isUiContext()).isTrue();
+    }
 }
diff --git a/core/tests/coretests/src/android/content/pm/SigningDetailsTest.java b/core/tests/coretests/src/android/content/pm/SigningDetailsTest.java
new file mode 100644
index 0000000..51af048
--- /dev/null
+++ b/core/tests/coretests/src/android/content/pm/SigningDetailsTest.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.content.pm;
+
+import static android.content.pm.PackageParser.SigningDetails.SignatureSchemeVersion.SIGNING_BLOCK_V3;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import android.content.pm.PackageParser.SigningDetails;
+import android.util.ArraySet;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.security.PublicKey;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class SigningDetailsTest {
+    private static final String FIRST_SIGNATURE = "1234";
+    private static final String SECOND_SIGNATURE = "5678";
+    private static final String THIRD_SIGNATURE = "9abc";
+
+    @Test
+    public void hasAncestor_multipleSignersInLineageWithAncestor_returnsTrue() throws Exception {
+        SigningDetails twoSignersInLineageDetails = createSigningDetailsWithLineage(FIRST_SIGNATURE,
+                SECOND_SIGNATURE, THIRD_SIGNATURE);
+        SigningDetails oneSignerInLineageDetails = createSigningDetailsWithLineage(FIRST_SIGNATURE,
+                SECOND_SIGNATURE);
+
+        boolean result = twoSignersInLineageDetails.hasAncestor(oneSignerInLineageDetails);
+
+        assertTrue(result);
+    }
+
+    @Test
+    public void hasAncestor_oneSignerInLineageAgainstMultipleSignersInLineage_returnsFalse()
+            throws Exception {
+        SigningDetails twoSignersInLineageDetails = createSigningDetailsWithLineage(FIRST_SIGNATURE,
+                SECOND_SIGNATURE, THIRD_SIGNATURE);
+        SigningDetails oneSignerInLineageDetails = createSigningDetailsWithLineage(FIRST_SIGNATURE,
+                SECOND_SIGNATURE);
+
+        boolean result = oneSignerInLineageDetails.hasAncestor(twoSignersInLineageDetails);
+
+        assertFalse(result);
+    }
+
+    @Test
+    public void hasAncestor_multipleSignersInLineageAgainstSelf_returnsFalse() throws Exception {
+        SigningDetails twoSignersInLineageDetails = createSigningDetailsWithLineage(FIRST_SIGNATURE,
+                SECOND_SIGNATURE, THIRD_SIGNATURE);
+
+        boolean result = twoSignersInLineageDetails.hasAncestor(twoSignersInLineageDetails);
+
+        assertFalse(result);
+    }
+
+    @Test
+    public void hasAncestor_oneSignerInLineageWithAncestor_returnsTrue() throws Exception {
+        SigningDetails twoSignersInLineageDetails = createSigningDetailsWithLineage(FIRST_SIGNATURE,
+                SECOND_SIGNATURE, THIRD_SIGNATURE);
+        SigningDetails oneSignerDetails = createSigningDetails(FIRST_SIGNATURE);
+
+        boolean result = twoSignersInLineageDetails.hasAncestor(oneSignerDetails);
+
+        assertTrue(result);
+    }
+
+    @Test
+    public void hasAncestor_singleSignerAgainstLineage_returnsFalse() throws Exception {
+        SigningDetails oneSignerDetails = createSigningDetails(FIRST_SIGNATURE);
+        SigningDetails twoSignersInLineageDetails = createSigningDetailsWithLineage(FIRST_SIGNATURE,
+                SECOND_SIGNATURE, THIRD_SIGNATURE);
+
+        boolean result = oneSignerDetails.hasAncestor(twoSignersInLineageDetails);
+
+        assertFalse(result);
+    }
+
+    @Test
+    public void hasAncestor_multipleSigners_returnsFalse() throws Exception {
+        SigningDetails twoSignersDetails = createSigningDetails(FIRST_SIGNATURE, SECOND_SIGNATURE);
+        SigningDetails twoSignersInLineageDetails = createSigningDetailsWithLineage(FIRST_SIGNATURE,
+                SECOND_SIGNATURE, THIRD_SIGNATURE);
+
+        boolean result1 = twoSignersInLineageDetails.hasAncestor(twoSignersDetails);
+        boolean result2 = twoSignersDetails.hasAncestor(twoSignersInLineageDetails);
+
+        assertFalse(result1);
+        assertFalse(result2);
+    }
+
+    @Test
+    public void hasAncestor_unknownDetails_returnsFalse() throws Exception {
+        SigningDetails unknownDetails = SigningDetails.UNKNOWN;
+        SigningDetails twoSignersInLineageDetails = createSigningDetailsWithLineage(FIRST_SIGNATURE,
+                SECOND_SIGNATURE, THIRD_SIGNATURE);
+
+        boolean result1 = twoSignersInLineageDetails.hasAncestor(unknownDetails);
+        boolean result2 = unknownDetails.hasAncestor(twoSignersInLineageDetails);
+
+        assertFalse(result1);
+        assertFalse(result2);
+    }
+
+    private SigningDetails createSigningDetailsWithLineage(String... signers) {
+        Signature[] signingHistory = new Signature[signers.length];
+        for (int i = 0; i < signers.length; i++) {
+            signingHistory[i] = new Signature(signers[i]);
+        }
+        Signature[] currentSignature = new Signature[]{signingHistory[signers.length - 1]};
+        // TODO: Since the PublicKey ArraySet is not used by any of the tests a generic empty Set
+        // works for now, but if this is needed in the future consider creating mock PublicKeys that
+        // can respond as required for the method under test.
+        ArraySet<PublicKey> publicKeys = new ArraySet<>();
+        return new SigningDetails(currentSignature, SIGNING_BLOCK_V3, publicKeys, signingHistory);
+    }
+
+    private SigningDetails createSigningDetails(String... signers) {
+        Signature[] currentSignatures = new Signature[signers.length];
+        for (int i = 0; i < signers.length; i++) {
+            currentSignatures[i] = new Signature(signers[i]);
+        }
+        // TODO: Similar to above when tests are added that require this it should be updated to use
+        // mocked PublicKeys.
+        ArraySet<PublicKey> publicKeys = new ArraySet<>();
+        return new SigningDetails(currentSignatures, SIGNING_BLOCK_V3, publicKeys, null);
+    }
+}
diff --git a/core/tests/coretests/src/android/view/DisplayAdjustmentsTests.java b/core/tests/coretests/src/android/view/DisplayAdjustmentsTests.java
new file mode 100644
index 0000000..afbf8db
--- /dev/null
+++ b/core/tests/coretests/src/android/view/DisplayAdjustmentsTests.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.view;
+
+import static org.junit.Assert.assertEquals;
+
+import android.content.res.Configuration;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Tests for {@link DisplayAdjustmentsTests}.
+ *
+ * <p>Build/Install/Run:
+ *  atest FrameworksCoreTests:DisplayAdjustmentsTests
+ */
+@RunWith(AndroidJUnit4.class)
+public class DisplayAdjustmentsTests {
+
+    @Test
+    public void testDefaultConstructor_hasEmptyConfiguration() {
+        DisplayAdjustments emptyAdjustments = new DisplayAdjustments();
+
+        assertEquals(Configuration.EMPTY, emptyAdjustments.getConfiguration());
+    }
+
+    @Test
+    public void testConfigurationConstructor_nullConfigurationBecomesEmpty() {
+        DisplayAdjustments emptyAdjustments = new DisplayAdjustments((Configuration) null);
+
+        assertEquals(Configuration.EMPTY, emptyAdjustments.getConfiguration());
+    }
+
+    @Test
+    public void testConfigurationConstructor_copiesConfiguration() {
+        Configuration configuration = new Configuration();
+        configuration.colorMode = 1000;
+        DisplayAdjustments adjustments = new DisplayAdjustments(configuration);
+
+        assertEquals(configuration, adjustments.getConfiguration());
+    }
+
+    @Test
+    public void testDisplayAdjustmentsConstructor_copiesConfiguration() {
+        Configuration configuration = new Configuration();
+        configuration.colorMode = 1000;
+        DisplayAdjustments oldAdjustments = new DisplayAdjustments(configuration);
+
+        DisplayAdjustments newAdjustments = new DisplayAdjustments(oldAdjustments);
+
+        assertEquals(configuration, newAdjustments.getConfiguration());
+    }
+}
diff --git a/core/tests/coretests/src/android/view/ImeInsetsSourceConsumerTest.java b/core/tests/coretests/src/android/view/ImeInsetsSourceConsumerTest.java
index 5c9e339..164c372 100644
--- a/core/tests/coretests/src/android/view/ImeInsetsSourceConsumerTest.java
+++ b/core/tests/coretests/src/android/view/ImeInsetsSourceConsumerTest.java
@@ -78,7 +78,8 @@
             } catch (BadTokenException e) {
                 // activity isn't running, we will ignore BadTokenException.
             }
-            mController = Mockito.spy(new InsetsController(viewRootImpl));
+            mController = Mockito.spy(new InsetsController(
+                    new ViewRootInsetsControllerHost(viewRootImpl)));
             final Rect rect = new Rect(5, 5, 5, 5);
             mController.calculateInsets(
                     false,
diff --git a/core/tests/coretests/src/android/view/InsetsControllerTest.java b/core/tests/coretests/src/android/view/InsetsControllerTest.java
index ade31d8..ccf4192 100644
--- a/core/tests/coretests/src/android/view/InsetsControllerTest.java
+++ b/core/tests/coretests/src/android/view/InsetsControllerTest.java
@@ -123,7 +123,8 @@
             }
             mTestClock = new OffsettableClock();
             mTestHandler = new TestHandler(null, mTestClock);
-            mController = new InsetsController(mViewRoot, (controller, type) -> {
+            mController = new InsetsController(new ViewRootInsetsControllerHost(mViewRoot),
+                    (controller, type) -> {
                 if (type == ITYPE_IME) {
                     return new InsetsSourceConsumer(type, controller.getState(),
                             Transaction::new, controller) {
diff --git a/core/tests/coretests/src/android/view/InsetsSourceConsumerTest.java b/core/tests/coretests/src/android/view/InsetsSourceConsumerTest.java
index cc93f9a..25f9413 100644
--- a/core/tests/coretests/src/android/view/InsetsSourceConsumerTest.java
+++ b/core/tests/coretests/src/android/view/InsetsSourceConsumerTest.java
@@ -89,7 +89,8 @@
             state.addSource(mSpyInsetsSource);
 
             mConsumer = new InsetsSourceConsumer(ITYPE_STATUS_BAR, state,
-                    () -> mMockTransaction, new InsetsController(viewRootImpl));
+                    () -> mMockTransaction,
+                    new InsetsController(new ViewRootInsetsControllerHost(viewRootImpl)));
         });
         instrumentation.waitForIdleSync();
 
diff --git a/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java b/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java
index c52555b..80fb358 100644
--- a/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java
+++ b/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java
@@ -34,6 +34,7 @@
 import static com.android.internal.app.ChooserWrapperActivity.sOverrides;
 import static com.android.internal.app.MatcherUtils.first;
 
+import static junit.framework.Assert.assertNull;
 import static junit.framework.Assert.assertTrue;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -41,6 +42,8 @@
 import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.atLeastOnce;
 import static org.mockito.Mockito.mock;
@@ -55,6 +58,8 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.pm.ShortcutInfo;
@@ -302,7 +307,7 @@
         waitForIdle();
         UsageStatsManager usm = activity.getUsageStatsManager();
         verify(sOverrides.resolverListController, times(1))
-                .topK(Mockito.any(List.class), Mockito.anyInt());
+                .topK(any(List.class), anyInt());
         assertThat(activity.getIsSelected(), is(false));
         sOverrides.onSafelyStartCallback = targetInfo -> {
             return true;
@@ -312,7 +317,7 @@
                 .perform(click());
         waitForIdle();
         verify(sOverrides.resolverListController, times(1))
-                .updateChooserCounts(Mockito.anyString(), Mockito.anyInt(), Mockito.anyString());
+                .updateChooserCounts(Mockito.anyString(), anyInt(), Mockito.anyString());
         verify(sOverrides.resolverListController, times(1))
                 .updateModel(toChoose.activityInfo.getComponentName());
         assertThat(activity.getIsSelected(), is(true));
@@ -1750,6 +1755,83 @@
         assertThat(chosen[0], is(personalResolvedComponentInfos.get(1).getResolveInfoAt(0)));
     }
 
+    @Test
+    public void testOneInitialIntent_noAutolaunch() {
+        List<ResolvedComponentInfo> personalResolvedComponentInfos =
+                createResolvedComponentsForTest(1);
+        when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
+                Mockito.anyBoolean(),
+                Mockito.isA(List.class)))
+                .thenReturn(new ArrayList<>(personalResolvedComponentInfos));
+        Intent chooserIntent = createChooserIntent(new Intent[] {new Intent("action.fake")});
+        ResolveInfo[] chosen = new ResolveInfo[1];
+        sOverrides.onSafelyStartCallback = targetInfo -> {
+            chosen[0] = targetInfo.getResolveInfo();
+            return true;
+        };
+        sOverrides.packageManager = mock(PackageManager.class);
+        ResolveInfo ri = createFakeResolveInfo();
+        when(sOverrides.packageManager.resolveActivity(any(Intent.class), anyInt())).thenReturn(ri);
+        waitForIdle();
+
+        ChooserWrapperActivity activity = mActivityRule.launchActivity(chooserIntent);
+        waitForIdle();
+
+        assertNull(chosen[0]);
+        assertThat(activity.getPersonalListAdapter().getCallerTargetCount(), is(1));
+    }
+
+    @Test
+    public void testWorkTab_withInitialIntents_workTabDoesNotIncludePersonalInitialIntents() {
+        // enable the work tab feature flag
+        ResolverActivity.ENABLE_TABBED_VIEW = true;
+        markWorkProfileUserAvailable();
+        int workProfileTargets = 1;
+        List<ResolvedComponentInfo> personalResolvedComponentInfos =
+                createResolvedComponentsForTestWithOtherProfile(2, /* userId */ 10);
+        List<ResolvedComponentInfo> workResolvedComponentInfos =
+                createResolvedComponentsForTest(workProfileTargets);
+        setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
+        Intent[] initialIntents = {
+                new Intent("action.fake1"),
+                new Intent("action.fake2")
+        };
+        Intent chooserIntent = createChooserIntent(initialIntents);
+        sOverrides.packageManager = mock(PackageManager.class);
+        when(sOverrides.packageManager.resolveActivity(any(Intent.class), anyInt()))
+                .thenReturn(createFakeResolveInfo());
+        waitForIdle();
+
+        ChooserWrapperActivity activity = mActivityRule.launchActivity(chooserIntent);
+        waitForIdle();
+
+        assertThat(activity.getPersonalListAdapter().getCallerTargetCount(), is(2));
+        assertThat(activity.getWorkListAdapter().getCallerTargetCount(), is(0));
+    }
+
+    private Intent createChooserIntent(Intent[] initialIntents) {
+        Intent chooserIntent = new Intent();
+        chooserIntent.setAction(Intent.ACTION_CHOOSER);
+        chooserIntent.putExtra(Intent.EXTRA_TEXT, "testing intent sending");
+        chooserIntent.putExtra(Intent.EXTRA_TITLE, "some title");
+        chooserIntent.putExtra(Intent.EXTRA_INTENT, createSendTextIntent());
+        chooserIntent.setType("text/plain");
+        if (initialIntents != null) {
+            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, initialIntents);
+        }
+        return chooserIntent;
+    }
+
+    private ResolveInfo createFakeResolveInfo() {
+        ResolveInfo ri = new ResolveInfo();
+        ri.activityInfo = new ActivityInfo();
+        ri.activityInfo.name = "FakeActivityName";
+        ri.activityInfo.packageName = "fake.package.name";
+        ri.activityInfo.applicationInfo = new ApplicationInfo();
+        ri.activityInfo.applicationInfo.packageName = "fake.package.name";
+        return ri;
+    }
+
     private Intent createSendTextIntent() {
         Intent sendIntent = new Intent();
         sendIntent.setAction(Intent.ACTION_SEND);
diff --git a/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java b/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java
index 5b83f95..071b225 100644
--- a/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java
+++ b/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java
@@ -58,6 +58,18 @@
         return multiProfilePagerAdapter;
     }
 
+    @Override
+    public ChooserListAdapter createChooserListAdapter(Context context, List<Intent> payloadIntents,
+            Intent[] initialIntents, List<ResolveInfo> rList, boolean filterLastUsed,
+            boolean useLayoutForBrowsables, ResolverListController resolverListController) {
+        PackageManager packageManager =
+                sOverrides.packageManager == null ? context.getPackageManager()
+                        : sOverrides.packageManager;
+        return new ChooserListAdapter(context, payloadIntents, initialIntents, rList,
+                filterLastUsed, resolverListController, useLayoutForBrowsables,
+                this, this, packageManager);
+    }
+
     ChooserListAdapter getAdapter() {
         return mChooserMultiProfilePagerAdapter.getActiveListAdapter();
     }
@@ -217,6 +229,7 @@
         public boolean hasCrossProfileIntents;
         public boolean isQuietModeEnabled;
         public AbstractMultiProfilePagerAdapter.Injector multiPagerAdapterInjector;
+        public PackageManager packageManager;
 
         public void reset() {
             onSafelyStartCallback = null;
@@ -235,6 +248,7 @@
             workProfileUserHandle = null;
             hasCrossProfileIntents = true;
             isQuietModeEnabled = false;
+            packageManager = null;
             multiPagerAdapterInjector = new AbstractMultiProfilePagerAdapter.Injector() {
                 @Override
                 public boolean hasCrossProfileIntents(List<Intent> intents, int sourceUserId,
diff --git a/core/tests/utiltests/src/com/android/internal/util/InlinePresentationStyleUtilsTest.java b/core/tests/utiltests/src/com/android/internal/util/InlinePresentationStyleUtilsTest.java
new file mode 100644
index 0000000..8e4f38e
--- /dev/null
+++ b/core/tests/utiltests/src/com/android/internal/util/InlinePresentationStyleUtilsTest.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.internal.util;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import android.os.Bundle;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.internal.widget.InlinePresentationStyleUtils;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class InlinePresentationStyleUtilsTest {
+    @Test
+    public void testBundleEquals_empty() {
+        Bundle bundle1 = new Bundle();
+        Bundle bundle2 = new Bundle();
+
+        assertTrue(InlinePresentationStyleUtils.bundleEquals(bundle1, bundle2));
+
+        bundle1 = Bundle.EMPTY;
+        assertTrue(InlinePresentationStyleUtils.bundleEquals(bundle1, bundle2));
+
+        bundle2 = Bundle.EMPTY;
+        assertTrue(InlinePresentationStyleUtils.bundleEquals(bundle1, bundle2));
+    }
+
+    @Test
+    public void testBundleEquals_oneIsEmpty() {
+        Bundle bundle1 = Bundle.EMPTY;
+        Bundle bundle2 = new Bundle();
+        bundle2.putString("KEY", "value");
+        assertFalse(InlinePresentationStyleUtils.bundleEquals(bundle1, bundle2));
+    }
+
+    @Test
+    public void testBundleEquals_nestedBundle_equal() {
+        Bundle bundle1 = new Bundle();
+        Bundle bundle11 = new Bundle();
+        bundle11.putString("KEY", "VALUE");
+        bundle1.putBundle("KEY_B", bundle11);
+
+        Bundle bundle2 = new Bundle();
+        Bundle bundle21 = new Bundle();
+        bundle21.putString("KEY", "VALUE");
+        bundle2.putBundle("KEY_B", bundle21);
+
+        assertTrue(InlinePresentationStyleUtils.bundleEquals(bundle1, bundle2));
+    }
+
+    @Test
+    public void testBundleEquals_nestedBundle_unequal() {
+        Bundle bundle1 = new Bundle();
+        Bundle bundle11 = new Bundle();
+        bundle11.putString("KEY", "VALUE");
+        bundle1.putBundle("KEY_B", bundle11);
+
+        Bundle bundle2 = new Bundle();
+        bundle2.putBundle("KEY_B", new Bundle());
+
+        assertFalse(InlinePresentationStyleUtils.bundleEquals(bundle1, bundle2));
+    }
+
+    @Test
+    public void testBundleEquals_sameKeyDifferentType() {
+        Bundle bundle1 = new Bundle();
+        bundle1.putBundle("KEY_B", new Bundle());
+
+        Bundle bundle2 = new Bundle();
+        bundle2.putInt("KEY_B", 12);
+
+        assertFalse(InlinePresentationStyleUtils.bundleEquals(bundle1, bundle2));
+    }
+
+    @Test
+    public void testBundleEquals_primitiveValue_equal() {
+        Bundle bundle1 = new Bundle();
+        bundle1.putInt("KEY", 11);
+        Bundle bundle2 = new Bundle();
+        bundle2.putInt("KEY", 11);
+        assertTrue(InlinePresentationStyleUtils.bundleEquals(bundle1, bundle2));
+    }
+
+    @Test
+    public void testBundleEquals_primitiveValue_unequal() {
+        Bundle bundle1 = new Bundle();
+        bundle1.putInt("KEY", 11);
+        Bundle bundle2 = new Bundle();
+        bundle2.putInt("KEY", 22);
+        assertFalse(InlinePresentationStyleUtils.bundleEquals(bundle1, bundle2));
+    }
+}
diff --git a/graphics/java/android/graphics/ImageDecoder.java b/graphics/java/android/graphics/ImageDecoder.java
index 83432c3..97b448a 100644
--- a/graphics/java/android/graphics/ImageDecoder.java
+++ b/graphics/java/android/graphics/ImageDecoder.java
@@ -270,7 +270,7 @@
         public ImageDecoder createImageDecoder(boolean preferAnimation) throws IOException {
             AssetFileDescriptor assetFd = null;
             try {
-                if (mUri.getScheme().equals(ContentResolver.SCHEME_CONTENT)) {
+                if (ContentResolver.SCHEME_CONTENT.equals(mUri.getScheme())) {
                     assetFd = mResolver.openTypedAssetFileDescriptor(mUri,
                             "image/*", null);
                 } else {
diff --git a/identity/java/android/security/identity/AccessControlProfileId.java b/identity/java/android/security/identity/AccessControlProfileId.java
index 3d59450..6caac0a 100644
--- a/identity/java/android/security/identity/AccessControlProfileId.java
+++ b/identity/java/android/security/identity/AccessControlProfileId.java
@@ -25,6 +25,8 @@
     /**
      * Constructs a new object holding a numerical identifier.
      *
+     * <p>The identifier must be a non-negative number and less than 32.
+     *
      * @param id the identifier.
      */
     public AccessControlProfileId(int id) {
diff --git a/identity/java/android/security/identity/IdentityCredentialStore.java b/identity/java/android/security/identity/IdentityCredentialStore.java
index 4f834d2..3843d92 100644
--- a/identity/java/android/security/identity/IdentityCredentialStore.java
+++ b/identity/java/android/security/identity/IdentityCredentialStore.java
@@ -46,7 +46,7 @@
  * access control profile IDs.  Names are strings and values are typed and can be any
  * value supported by <a href="http://cbor.io/">CBOR</a>.</li>
  *
- * <li>A set of access control profiles, each with a profile ID and a specification
+ * <li>A set of access control profiles (up to 32), each with a profile ID and a specification
  * of the conditions which satisfy the profile's requirements.</li>
  *
  * <li>An asymmetric key pair which is used to authenticate the credential to the Issuing
diff --git a/media/java/android/media/MediaRoute2ProviderService.java b/media/java/android/media/MediaRoute2ProviderService.java
index fb95e98..72162c4 100644
--- a/media/java/android/media/MediaRoute2ProviderService.java
+++ b/media/java/android/media/MediaRoute2ProviderService.java
@@ -519,6 +519,7 @@
                     requestCreateSession));
         }
 
+        //TODO: Ignore requests with unknown session ID.
         @Override
         public void selectRoute(long requestId, String sessionId, String routeId) {
             if (!checkCallerisSystem()) {
diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java
index 2c65cc4..7d14ef5 100644
--- a/media/java/android/media/MediaRouter2.java
+++ b/media/java/android/media/MediaRouter2.java
@@ -604,7 +604,8 @@
 
         RoutingController oldController = getCurrentController();
         if (!oldController.releaseInternal(
-                /* shouldReleaseSession= */ true, /* shouldNotifyStop= */ false)) {
+                /* shouldReleaseSession= */ matchingRequest != null,
+                /* shouldNotifyStop= */ false)) {
             // Could not release the controller since it was just released by other thread.
             oldController = getSystemController();
         }
diff --git a/media/java/android/media/MediaRouter2Manager.java b/media/java/android/media/MediaRouter2Manager.java
index 3b570b6..5d61dd0 100644
--- a/media/java/android/media/MediaRouter2Manager.java
+++ b/media/java/android/media/MediaRouter2Manager.java
@@ -314,7 +314,6 @@
 
         //TODO: Ignore unknown route.
         if (sessionInfo.getTransferableRoutes().contains(route.getId())) {
-            //TODO: callbacks must be called after this.
             transferToRoute(sessionInfo, route);
             return;
         }
@@ -340,7 +339,6 @@
             } catch (RemoteException ex) {
                 Log.e(TAG, "Unable to select media route", ex);
             }
-            releaseSession(sessionInfo);
         }
     }
 
@@ -489,6 +487,7 @@
             notifyTransferFailed(matchingRequest.mOldSessionInfo, requestedRoute);
             return;
         }
+        releaseSession(matchingRequest.mOldSessionInfo);
         notifyTransferred(matchingRequest.mOldSessionInfo, sessionInfo);
     }
 
diff --git a/media/jni/soundpool/Stream.cpp b/media/jni/soundpool/Stream.cpp
index 809e81b..e3152d6 100644
--- a/media/jni/soundpool/Stream.cpp
+++ b/media/jni/soundpool/Stream.cpp
@@ -330,7 +330,9 @@
                     AudioTrack::TRANSFER_DEFAULT,
                     nullptr /*offloadInfo*/, -1 /*uid*/, -1 /*pid*/,
                     mStreamManager->getAttributes());
-
+            // Set caller name so it can be logged in destructor.
+            // MediaMetricsConstants.h: AMEDIAMETRICS_PROP_CALLERNAME_VALUE_SOUNDPOOL
+            newTrack->setCallerName("soundpool");
             oldTrack = mAudioTrack;
             status = newTrack->initCheck();
             if (status != NO_ERROR) {
diff --git a/mime/java-res/android.mime.types b/mime/java-res/android.mime.types
index c1f8b3f..05a2e92 100644
--- a/mime/java-res/android.mime.types
+++ b/mime/java-res/android.mime.types
@@ -72,7 +72,7 @@
 ?application/x-x509-server-cert crt
 ?application/x-x509-user-cert crt
 
-?audio/3gpp 3gpp 3ga
+?audio/3gpp 3ga 3gpp
 ?audio/aac-adts aac
 ?audio/ac3 ac3 a52
 ?audio/amr amr
diff --git a/packages/CarSystemUI/res/layout/car_left_navigation_bar.xml b/packages/CarSystemUI/res/layout/car_left_navigation_bar.xml
index d0916b5..a8c7098 100644
--- a/packages/CarSystemUI/res/layout/car_left_navigation_bar.xml
+++ b/packages/CarSystemUI/res/layout/car_left_navigation_bar.xml
@@ -33,7 +33,6 @@
         android:gravity="top"
         android:paddingTop="30dp"
         android:layout_weight="1"
-        android:background="@drawable/system_bar_background"
         android:animateLayoutChanges="true">
 
         <com.android.systemui.car.navigationbar.CarNavigationButton
diff --git a/packages/CarSystemUI/res/layout/car_left_navigation_bar_unprovisioned.xml b/packages/CarSystemUI/res/layout/car_left_navigation_bar_unprovisioned.xml
index de5a150..9e6dd11 100644
--- a/packages/CarSystemUI/res/layout/car_left_navigation_bar_unprovisioned.xml
+++ b/packages/CarSystemUI/res/layout/car_left_navigation_bar_unprovisioned.xml
@@ -33,7 +33,6 @@
         android:gravity="top"
         android:paddingTop="30dp"
         android:layout_weight="1"
-        android:background="@drawable/system_bar_background"
         android:animateLayoutChanges="true">
 
         <com.android.systemui.car.navigationbar.CarNavigationButton
diff --git a/packages/CarSystemUI/res/layout/car_right_navigation_bar.xml b/packages/CarSystemUI/res/layout/car_right_navigation_bar.xml
index d386ce3..fd75570 100644
--- a/packages/CarSystemUI/res/layout/car_right_navigation_bar.xml
+++ b/packages/CarSystemUI/res/layout/car_right_navigation_bar.xml
@@ -36,7 +36,6 @@
         android:gravity="top"
         android:paddingTop="30dp"
         android:layout_weight="1"
-        android:background="@drawable/system_bar_background"
         android:animateLayoutChanges="true">
 
         <com.android.systemui.car.navigationbar.CarNavigationButton
diff --git a/packages/CarSystemUI/res/layout/car_right_navigation_bar_unprovisioned.xml b/packages/CarSystemUI/res/layout/car_right_navigation_bar_unprovisioned.xml
index de5a150..9e6dd11 100644
--- a/packages/CarSystemUI/res/layout/car_right_navigation_bar_unprovisioned.xml
+++ b/packages/CarSystemUI/res/layout/car_right_navigation_bar_unprovisioned.xml
@@ -33,7 +33,6 @@
         android:gravity="top"
         android:paddingTop="30dp"
         android:layout_weight="1"
-        android:background="@drawable/system_bar_background"
         android:animateLayoutChanges="true">
 
         <com.android.systemui.car.navigationbar.CarNavigationButton
diff --git a/packages/CarSystemUI/res/values/config.xml b/packages/CarSystemUI/res/values/config.xml
index 050db32..67066d7 100644
--- a/packages/CarSystemUI/res/values/config.xml
+++ b/packages/CarSystemUI/res/values/config.xml
@@ -92,35 +92,28 @@
         <item>com.android.vending</item>
     </string-array>
 
-    <!-- SystemUI Services: The classes of the stuff to start. -->
-    <string-array name="config_systemUIServiceComponents" translatable="false">
-        <item>com.android.systemui.util.NotificationChannels</item>
-        <item>com.android.systemui.keyguard.KeyguardViewMediator</item>
-<!--        <item>com.android.systemui.recents.Recents</item>-->
-<!--        <item>com.android.systemui.volume.VolumeUI</item>-->
-<!--        <item>com.android.systemui.stackdivider.Divider</item>-->
-<!--        <item>com.android.systemui.statusbar.phone.StatusBar</item>-->
-        <item>com.android.systemui.usb.StorageNotification</item>
-        <item>com.android.systemui.power.PowerUI</item>
-        <item>com.android.systemui.media.RingtonePlayer</item>
-<!--        <item>com.android.systemui.keyboard.KeyboardUI</item>-->
-<!--        <item>com.android.systemui.pip.PipUI</item>-->
-<!--        <item>com.android.systemui.shortcut.ShortcutKeyDispatcher</item>-->
-        <item>@string/config_systemUIVendorServiceComponent</item>
-        <item>com.android.systemui.util.leak.GarbageMonitor$Service</item>
-<!--        <item>com.android.systemui.LatencyTester</item>-->
-<!--        <item>com.android.systemui.globalactions.GlobalActionsComponent</item>-->
-        <item>com.android.systemui.ScreenDecorations</item>
-        <item>com.android.systemui.biometrics.AuthController</item>
-<!--        <item>com.android.systemui.SliceBroadcastRelayHandler</item>-->
-        <item>com.android.systemui.SizeCompatModeActivityController</item>
-<!--        <item>com.android.systemui.statusbar.notification.InstantAppNotifier</item>-->
-        <item>com.android.systemui.theme.ThemeOverlayController</item>
-        <item>com.android.systemui.toast.ToastUI</item>
+    <!-- The list of components to exclude from config_systemUIServiceComponents. -->
+    <string-array name="config_systemUIServiceComponentsExclude" translatable="false">
+        <item>com.android.systemui.recents.Recents</item>
+        <item>com.android.systemui.volume.VolumeUI</item>
+        <item>com.android.systemui.stackdivider.Divider</item>
+        <item>com.android.systemui.statusbar.phone.StatusBar</item>
+        <item>com.android.systemui.keyboard.KeyboardUI</item>
+        <item>com.android.systemui.pip.PipUI</item>
+        <item>com.android.systemui.shortcut.ShortcutKeyDispatcher</item>
+        <item>com.android.systemui.LatencyTester</item>
+        <item>com.android.systemui.globalactions.GlobalActionsComponent</item>
+        <item>com.android.systemui.SliceBroadcastRelayHandler</item>
+        <item>com.android.systemui.statusbar.notification.InstantAppNotifier</item>
+        <item>com.android.systemui.accessibility.WindowMagnification</item>
+        <item>com.android.systemui.accessibility.SystemActions</item>
+    </string-array>
+
+    <!-- The list of components to append to config_systemUIServiceComponents. -->
+    <string-array name="config_systemUIServiceComponentsInclude" translatable="false">
         <item>com.android.systemui.car.navigationbar.CarNavigationBar</item>
         <item>com.android.systemui.car.voicerecognition.ConnectedDeviceVoiceRecognitionNotifier</item>
         <item>com.android.systemui.car.window.SystemUIOverlayWindowManager</item>
         <item>com.android.systemui.car.volume.VolumeUI</item>
-        <item>com.android.systemui.car.sideloaded.SideLoadedAppController</item>
     </string-array>
 </resources>
diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIFactory.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIFactory.java
index 2bd5fe2..1a1b93b 100644
--- a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIFactory.java
+++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIFactory.java
@@ -17,9 +17,13 @@
 package com.android.systemui;
 
 import android.content.Context;
+import android.content.res.Resources;
 
 import com.android.systemui.dagger.SystemUIRootComponent;
 
+import java.util.HashSet;
+import java.util.Set;
+
 /**
  * Class factory to provide car specific SystemUI components.
  */
@@ -31,4 +35,26 @@
                 .contextHolder(new ContextHolder(context))
                 .build();
     }
+
+    @Override
+    public String[] getSystemUIServiceComponents(Resources resources) {
+        Set<String> names = new HashSet<>();
+
+        for (String s : super.getSystemUIServiceComponents(resources)) {
+            names.add(s);
+        }
+
+        for (String s : resources.getStringArray(R.array.config_systemUIServiceComponentsExclude)) {
+            names.remove(s);
+        }
+
+        for (String s : resources.getStringArray(R.array.config_systemUIServiceComponentsInclude)) {
+            names.add(s);
+        }
+
+        String[] finalNames = new String[names.size()];
+        names.toArray(finalNames);
+
+        return finalNames;
+    }
 }
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/keyguard/CarKeyguardViewController.java b/packages/CarSystemUI/src/com/android/systemui/car/keyguard/CarKeyguardViewController.java
index 6a0a31b..6d659f1 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/keyguard/CarKeyguardViewController.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/keyguard/CarKeyguardViewController.java
@@ -51,6 +51,8 @@
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
+import dagger.Lazy;
+
 /**
  * Automotive implementation of the {@link KeyguardViewController}. It controls the Keyguard View
  * that is mounted to the SystemUIOverlayWindow.
@@ -66,9 +68,10 @@
     private final CarServiceProvider mCarServiceProvider;
     private final KeyguardStateController mKeyguardStateController;
     private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
+    private final Lazy<BiometricUnlockController> mBiometricUnlockControllerLazy;
     private final LockPatternUtils mLockPatternUtils;
     private final FalsingManager mFalsingManager;
-    private final KeyguardBypassController mKeyguardBypassController;
+    private final Lazy<KeyguardBypassController> mKeyguardBypassControllerLazy;
     private final DismissCallbackRegistry mDismissCallbackRegistry;
     private final ViewMediatorCallback mViewMediatorCallback;
     private final CarNavigationBarController mCarNavigationBarController;
@@ -109,14 +112,14 @@
             OverlayViewGlobalStateController overlayViewGlobalStateController,
             KeyguardStateController keyguardStateController,
             KeyguardUpdateMonitor keyguardUpdateMonitor,
-            BiometricUnlockController biometricUnlockController,
+            Lazy<BiometricUnlockController> biometricUnlockControllerLazy,
             ViewMediatorCallback viewMediatorCallback,
             CarNavigationBarController carNavigationBarController,
             /* The params below are only used to reuse KeyguardBouncer */
             LockPatternUtils lockPatternUtils,
             DismissCallbackRegistry dismissCallbackRegistry,
             FalsingManager falsingManager,
-            KeyguardBypassController keyguardBypassController) {
+            Lazy<KeyguardBypassController> keyguardBypassControllerLazy) {
 
         super(R.id.keyguard_stub, overlayViewGlobalStateController);
 
@@ -125,14 +128,14 @@
         mCarServiceProvider = carServiceProvider;
         mKeyguardStateController = keyguardStateController;
         mKeyguardUpdateMonitor = keyguardUpdateMonitor;
+        mBiometricUnlockControllerLazy = biometricUnlockControllerLazy;
         mLockPatternUtils = lockPatternUtils;
         mFalsingManager = falsingManager;
-        mKeyguardBypassController = keyguardBypassController;
+        mKeyguardBypassControllerLazy = keyguardBypassControllerLazy;
         mDismissCallbackRegistry = dismissCallbackRegistry;
         mViewMediatorCallback = viewMediatorCallback;
         mCarNavigationBarController = carNavigationBarController;
 
-        biometricUnlockController.setKeyguardViewController(this);
         registerUserSwitchedListener();
     }
 
@@ -142,7 +145,8 @@
                 mViewMediatorCallback, mLockPatternUtils,
                 getLayout().findViewById(R.id.keyguard_container), mDismissCallbackRegistry,
                 mExpansionCallback, mKeyguardStateController, mFalsingManager,
-                mKeyguardBypassController);
+                mKeyguardBypassControllerLazy.get());
+        mBiometricUnlockControllerLazy.get().setKeyguardViewController(this);
     }
 
     @Override
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBar.java b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBar.java
index 29f309a..3b64369 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBar.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBar.java
@@ -19,7 +19,6 @@
 import static android.view.InsetsState.ITYPE_NAVIGATION_BAR;
 import static android.view.InsetsState.ITYPE_STATUS_BAR;
 import static android.view.InsetsState.containsType;
-import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
 
 import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT;
 import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT;
@@ -28,7 +27,6 @@
 import android.content.res.Resources;
 import android.graphics.PixelFormat;
 import android.inputmethodservice.InputMethodService;
-import android.os.Binder;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.RemoteException;
@@ -354,33 +352,38 @@
             WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
                     ViewGroup.LayoutParams.MATCH_PARENT,
                     height,
-                    WindowManager.LayoutParams.TYPE_STATUS_BAR,
+                    WindowManager.LayoutParams.TYPE_STATUS_BAR_ADDITIONAL,
                     WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
-                            | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH
-                            | WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS,
+                            | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
+                            | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
+                            | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH,
                     PixelFormat.TRANSLUCENT);
-            lp.token = new Binder();
-            lp.gravity = Gravity.TOP;
-            lp.setFitInsetsTypes(0 /* types */);
             lp.setTitle("TopCarNavigationBar");
-            lp.packageName = mContext.getPackageName();
-            lp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
+            lp.providesInsetsTypes = new int[]{ITYPE_STATUS_BAR};
+            lp.setFitInsetsTypes(0);
+            lp.windowAnimations = 0;
+            lp.gravity = Gravity.TOP;
             mWindowManager.addView(mTopNavigationBarWindow, lp);
         }
 
         if (mBottomNavigationBarWindow != null && !mBottomNavBarVisible) {
             mBottomNavBarVisible = true;
+            int height = mResources.getDimensionPixelSize(
+                    com.android.internal.R.dimen.navigation_bar_height);
 
             WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
-                    ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT,
-                    WindowManager.LayoutParams.TYPE_NAVIGATION_BAR,
+                    ViewGroup.LayoutParams.MATCH_PARENT,
+                    height,
+                    WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL,
                     WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                             | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                             | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
                             | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH,
                     PixelFormat.TRANSLUCENT);
             lp.setTitle("BottomCarNavigationBar");
+            lp.providesInsetsTypes = new int[]{ITYPE_NAVIGATION_BAR};
             lp.windowAnimations = 0;
+            lp.gravity = Gravity.BOTTOM;
             mWindowManager.addView(mBottomNavigationBarWindow, lp);
         }
 
@@ -397,11 +400,10 @@
                     PixelFormat.TRANSLUCENT);
             leftlp.setTitle("LeftCarNavigationBar");
             leftlp.windowAnimations = 0;
-            leftlp.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_IS_SCREEN_DECOR;
             leftlp.gravity = Gravity.LEFT;
-            leftlp.setFitInsetsTypes(0 /* types */);
             mWindowManager.addView(mLeftNavigationBarWindow, leftlp);
         }
+
         if (mRightNavigationBarWindow != null) {
             int width = mResources.getDimensionPixelSize(
                     R.dimen.car_right_navigation_bar_width);
@@ -415,9 +417,7 @@
                     PixelFormat.TRANSLUCENT);
             rightlp.setTitle("RightCarNavigationBar");
             rightlp.windowAnimations = 0;
-            rightlp.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_IS_SCREEN_DECOR;
             rightlp.gravity = Gravity.RIGHT;
-            rightlp.setFitInsetsTypes(0 /* types */);
             mWindowManager.addView(mRightNavigationBarWindow, rightlp);
         }
     }
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBarController.java b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBarController.java
index 55c1153..9e194fb 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBarController.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBarController.java
@@ -20,7 +20,6 @@
 import android.view.View;
 import android.view.ViewGroup;
 
-import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import com.android.systemui.R;
@@ -160,8 +159,12 @@
     }
 
     /** Gets the top navigation bar with the appropriate listeners set. */
-    @NonNull
+    @Nullable
     public CarNavigationBarView getTopBar(boolean isSetUp) {
+        if (!mShowTop) {
+            return null;
+        }
+
         mTopView = mNavigationBarViewFactory.getTopBar(isSetUp);
         setupBar(mTopView, mTopBarTouchListener, mNotificationsShadeController);
         return mTopView;
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBarView.java b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBarView.java
index 46a720b..20fc1bc 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBarView.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBarView.java
@@ -16,10 +16,14 @@
 
 package com.android.systemui.car.navigationbar;
 
+import static android.view.WindowInsets.Type.systemBars;
+
 import android.content.Context;
+import android.graphics.Insets;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.WindowInsets;
 import android.widget.LinearLayout;
 
 import com.android.systemui.Dependency;
@@ -44,7 +48,6 @@
     // used to wire in open/close gestures for notifications
     private OnTouchListener mStatusBarWindowTouchListener;
 
-
     public CarNavigationBarView(Context context, AttributeSet attrs) {
         super(context, attrs);
         mConsumeTouchWhenPanelOpen = getResources().getBoolean(
@@ -75,6 +78,30 @@
         setClickable(true);
     }
 
+    @Override
+    public WindowInsets onApplyWindowInsets(WindowInsets windowInsets) {
+        applyMargins(windowInsets.getInsets(systemBars()));
+        return windowInsets;
+    }
+
+    private void applyMargins(Insets insets) {
+        final int count = getChildCount();
+        for (int i = 0; i < count; i++) {
+            View child = getChildAt(i);
+            if (child.getLayoutParams() instanceof LayoutParams) {
+                LayoutParams lp = (LayoutParams) child.getLayoutParams();
+                if (lp.rightMargin != insets.right || lp.leftMargin != insets.left
+                        || lp.topMargin != insets.top || lp.bottomMargin != insets.bottom) {
+                    lp.rightMargin = insets.right;
+                    lp.leftMargin = insets.left;
+                    lp.topMargin = insets.top;
+                    lp.bottomMargin = insets.bottom;
+                    child.requestLayout();
+                }
+            }
+        }
+    }
+
     // Used to forward touch events even if the touch was initiated from a child component
     @Override
     public boolean onInterceptTouchEvent(MotionEvent ev) {
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/window/SystemUIOverlayWindowManager.java b/packages/CarSystemUI/src/com/android/systemui/car/window/SystemUIOverlayWindowManager.java
index 3f88422..8cca0ed 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/window/SystemUIOverlayWindowManager.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/window/SystemUIOverlayWindowManager.java
@@ -17,6 +17,7 @@
 package com.android.systemui.car.window;
 
 import android.content.Context;
+import android.util.Log;
 
 import com.android.systemui.R;
 import com.android.systemui.SystemUI;
@@ -35,7 +36,7 @@
  */
 @Singleton
 public class SystemUIOverlayWindowManager extends SystemUI {
-    private static final String TAG = "SystemUIOverlayWindowManager";
+    private static final String TAG = "SystemUIOverlayWM";
     private final Map<Class<?>, Provider<OverlayViewMediator>>
             mContentMediatorCreators;
     private final OverlayViewGlobalStateController mOverlayViewGlobalStateController;
@@ -59,6 +60,7 @@
 
     private void startServices(String[] services) {
         for (String clsName : services) {
+            long ti = System.currentTimeMillis();
             try {
                 OverlayViewMediator obj = resolveContentMediator(clsName);
                 if (obj == null) {
@@ -73,6 +75,12 @@
                     | InvocationTargetException ex) {
                 throw new RuntimeException(ex);
             }
+
+            // Warn if initialization of component takes too long
+            ti = System.currentTimeMillis() - ti;
+            if (ti > 200) {
+                Log.w(TAG, "Initialization of " + clsName + " took " + ti + " ms");
+            }
         }
     }
 
diff --git a/packages/CarSystemUI/tests/src/com/android/systemui/car/keyguard/CarKeyguardViewControllerTest.java b/packages/CarSystemUI/tests/src/com/android/systemui/car/keyguard/CarKeyguardViewControllerTest.java
index d40b1af..a2192af 100644
--- a/packages/CarSystemUI/tests/src/com/android/systemui/car/keyguard/CarKeyguardViewControllerTest.java
+++ b/packages/CarSystemUI/tests/src/com/android/systemui/car/keyguard/CarKeyguardViewControllerTest.java
@@ -54,6 +54,8 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import dagger.Lazy;
+
 @RunWith(AndroidTestingRunner.class)
 @TestableLooper.RunWithLooper
 public class CarKeyguardViewControllerTest extends SysuiTestCase {
@@ -88,13 +90,13 @@
                 mOverlayViewGlobalStateController,
                 mock(KeyguardStateController.class),
                 mock(KeyguardUpdateMonitor.class),
-                mock(BiometricUnlockController.class),
+                () -> mock(BiometricUnlockController.class),
                 mock(ViewMediatorCallback.class),
                 mock(CarNavigationBarController.class),
                 mock(LockPatternUtils.class),
                 mock(DismissCallbackRegistry.class),
                 mock(FalsingManager.class),
-                mock(KeyguardBypassController.class)
+                () -> mock(KeyguardBypassController.class)
         );
     }
 
@@ -186,17 +188,17 @@
                 OverlayViewGlobalStateController overlayViewGlobalStateController,
                 KeyguardStateController keyguardStateController,
                 KeyguardUpdateMonitor keyguardUpdateMonitor,
-                BiometricUnlockController biometricUnlockController,
+                Lazy<BiometricUnlockController> biometricUnlockControllerLazy,
                 ViewMediatorCallback viewMediatorCallback,
                 CarNavigationBarController carNavigationBarController,
                 LockPatternUtils lockPatternUtils,
                 DismissCallbackRegistry dismissCallbackRegistry,
                 FalsingManager falsingManager,
-                KeyguardBypassController keyguardBypassController) {
+                Lazy<KeyguardBypassController> keyguardBypassControllerLazy) {
             super(context, mainHandler, carServiceProvider, overlayViewGlobalStateController,
-                    keyguardStateController, keyguardUpdateMonitor, biometricUnlockController,
+                    keyguardStateController, keyguardUpdateMonitor, biometricUnlockControllerLazy,
                     viewMediatorCallback, carNavigationBarController, lockPatternUtils,
-                    dismissCallbackRegistry, falsingManager, keyguardBypassController);
+                    dismissCallbackRegistry, falsingManager, keyguardBypassControllerLazy);
         }
 
         @Override
diff --git a/packages/CtsShim/apk/arm/CtsShim.apk b/packages/CtsShim/apk/arm/CtsShim.apk
index 54ee0d0..7f5c948 100644
--- a/packages/CtsShim/apk/arm/CtsShim.apk
+++ b/packages/CtsShim/apk/arm/CtsShim.apk
Binary files differ
diff --git a/packages/CtsShim/apk/arm/CtsShimPriv.apk b/packages/CtsShim/apk/arm/CtsShimPriv.apk
index ca34af9..9dc2352 100644
--- a/packages/CtsShim/apk/arm/CtsShimPriv.apk
+++ b/packages/CtsShim/apk/arm/CtsShimPriv.apk
Binary files differ
diff --git a/packages/CtsShim/apk/x86/CtsShim.apk b/packages/CtsShim/apk/x86/CtsShim.apk
index 54ee0d0..7f5c948 100644
--- a/packages/CtsShim/apk/x86/CtsShim.apk
+++ b/packages/CtsShim/apk/x86/CtsShim.apk
Binary files differ
diff --git a/packages/CtsShim/apk/x86/CtsShimPriv.apk b/packages/CtsShim/apk/x86/CtsShimPriv.apk
index edbb151..388e939 100644
--- a/packages/CtsShim/apk/x86/CtsShimPriv.apk
+++ b/packages/CtsShim/apk/x86/CtsShimPriv.apk
Binary files differ
diff --git a/packages/CtsShim/build/Android.bp b/packages/CtsShim/build/Android.bp
index be79010..d41c672 100644
--- a/packages/CtsShim/build/Android.bp
+++ b/packages/CtsShim/build/Android.bp
@@ -76,6 +76,7 @@
         "com.android.apex.cts.shim.v2_no_hashtree",
         "com.android.apex.cts.shim.v2_legacy",
         "com.android.apex.cts.shim.v2_sdk_target_p",
+        "com.android.apex.cts.shim.v2_unsigned_payload",
         "com.android.apex.cts.shim.v3",
     ],
 }
@@ -148,6 +149,7 @@
         "com.android.apex.cts.shim.v2_no_hashtree",
         "com.android.apex.cts.shim.v2_legacy",
         "com.android.apex.cts.shim.v2_sdk_target_p",
+        "com.android.apex.cts.shim.v2_unsigned_payload",
         "com.android.apex.cts.shim.v3",
     ],
 }
diff --git a/packages/CtsShim/build/jni/Android.bp b/packages/CtsShim/build/jni/Android.bp
index 7a5b07e..4477582 100644
--- a/packages/CtsShim/build/jni/Android.bp
+++ b/packages/CtsShim/build/jni/Android.bp
@@ -25,6 +25,7 @@
         "com.android.apex.cts.shim.v2_no_hashtree",
         "com.android.apex.cts.shim.v2_legacy",
         "com.android.apex.cts.shim.v2_sdk_target_p",
+        "com.android.apex.cts.shim.v2_unsigned_payload",
         "com.android.apex.cts.shim.v3",
     ],
 }
diff --git a/packages/DynamicSystemInstallationService/res/values-af/strings.xml b/packages/DynamicSystemInstallationService/res/values-af/strings.xml
new file mode 100644
index 0000000..1829d34
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-af/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Voer asseblief jou wagwoord in en gaan voort na Dinamiese Steselopdaterings"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dinamiese stelsel is gereed. Herbegin jou toestel om dit te begin gebruik."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Installeer tans"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Kon nie installeer nie"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Kon nie prent bekragtig nie. Staak installering."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Laat loop tans \'n dinamiese stelsel. Herbegin om die oorspronklike Android-weergawe te gebruik."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Kanselleer"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Gooi weg"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Herbegin"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Herbegin"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Het dinamiese stelsel weggegooi"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Kan nie dinamiese stelsel herbegin of laai nie"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-am/strings.xml b/packages/DynamicSystemInstallationService/res/values-am/strings.xml
new file mode 100644
index 0000000..7fcc40d
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-am/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"እባክዎ የእርስዎን የይለፍ ቃል ያስገቡ እና ወደ የተለዋዋጭ ሥርዓት ዝማኔዎች ይቀጥሉ"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"የተለዋዋጭ ሥርዓት ዝግጁ ነው። እሱን መጠቀም ለመጀመር የእርስዎን መሣሪያ ዳግም ያስጀምሩ።"</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"ጭነት በሂደት ላይ ነው"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"መጫን አልተሳካም"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"የምስል ማረጋገጫ አልተሳካም። ጭነትን አጨናግፍ።"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"የተለዋዋጭ ሥርዓትን አሁን ላይ በማስሄድ ላይ ኦርጂናሉን የAndroid ስሪት በመጠቀም ዳግም ያስጀምሩ።"</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"ይቅር"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"አስወግድ"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"ዳግም ጀምር"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"ዳግም ጀምር"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"የተጣለ ተለዋዋጭ ሥርዓት"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"ዳግም ማስጀመር አይቻልም ወይም ተለዋዋጭ ሥርዓትን ይስቀሉ"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-ar/strings.xml b/packages/DynamicSystemInstallationService/res/values-ar/strings.xml
new file mode 100644
index 0000000..be705c3
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-ar/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"يُرجى إدخال كلمة مرور والمتابعة إلى \"تحديثات النظام الديناميكية\""</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"النظام الديناميكي جاهز. لبدء استخدامه، يجب إعادة تشغيل الجهاز."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"التثبيت قيد التقدّم."</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"تعذّر التثبيت."</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"تعذّر التحقّق من الصورة. يجب إلغاء التثبيت."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"‏يتم الآن تشغيل نظام ديناميكي. يجب إعادة التشغيل لاستخدام الإصدار الأصلي لنظام Android."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"إلغاء"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"تجاهل"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"إعادة التشغيل"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"إعادة التشغيل"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"تم تجاهل النظام الديناميكي."</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"لا يمكن إعادة التشغيل أو تحميل النظام الديناميكي."</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-as/strings.xml b/packages/DynamicSystemInstallationService/res/values-as/strings.xml
new file mode 100644
index 0000000..14eead9
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-as/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"অনুগ্ৰহ কৰি আপোনাৰ পাছৱৰ্ডটো দিয়ক আৰু ডায়নামিক ছিষ্টেম আপডে\'টসমূহলৈ অব্যাহত ৰাখক"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"ডায়নামিক ছিষ্টেমটো সাজু। এইটো ব্যৱহাৰ কৰা আৰম্ভ কৰিবলৈ আপোনাৰ ডিভাইচটো ৰিষ্টাৰ্ট কৰক।"</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"ইনষ্টল চলি আছে"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"ইনষ্টল কৰিব পৰা নগ’ল"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"প্ৰতিচ্ছবিখন সত্যাপন কৰিব পৰা নগ’ল। ইনষ্টলেশ্বন বাতিল কৰক।"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"বৰ্তমান এটা ডায়নামিক ছিষ্টেম চলি আছে। মূল Android সংস্কৰণটো ব্যৱহাৰ কৰিবলৈ ৰিষ্টাৰ্ট কৰক।"</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"বাতিল কৰক"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"বাতিল কৰক"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"ৰিষ্টাৰ্ট কৰক"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"ৰিষ্টাৰ্ট কৰক"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"বাতিল কৰা ডায়নামিক ছিষ্টেম"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"ডায়নামিক ছিষ্টেম ৰিষ্টার্ট অথবা ল\'ড কৰিব নোৱাৰি"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-az/strings.xml b/packages/DynamicSystemInstallationService/res/values-az/strings.xml
new file mode 100644
index 0000000..d1f0a4b
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-az/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Parolunuzu daxil edin və Dinamik Sistem Güncəlləməsinə keçin"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dinamik sistem hazırdır. İstifadəyə başlamaq üçün cihazınızı yenidən başladın."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Quraşdırılır"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Quraşdırılmadı"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Şəkil təsdiqlənmədi. Quraşdırmanı dayandırın."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Hazırda dinamik sistem icra olunur. Orijinal Android versiyasından istifadə etmək üçün yenidən başladın."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Ləğv edin"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"İmtina edin"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Yenidən başladın"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Yenidən başladın"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Dinamik sistemdən imtina edildi"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Dinamik sistemi yenidən başlatmaq və ya yükləmək mümkün deyil"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-b+sr+Latn/strings.xml b/packages/DynamicSystemInstallationService/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..ea23a28
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Unesite lozinku i nastavite do dinamičnih ažuriranja sistema"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dinamični sistem je spreman. Da biste počeli da ga koristite, restartujte uređaj."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Instalira se"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Instaliranje nije uspelo"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Validacija slike nije uspela. Otkažite instalaciju."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Trenutno je pokrenut dinamični sistem. Restartujte da biste koristili originalnu verziju Android-a."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Otkaži"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Odbaci"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Restartuj"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Restartuj"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Dinamični sistem je odbačen"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Restartovanje ili učitavanje dinamičnog sistema nije uspelo"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-be/strings.xml b/packages/DynamicSystemInstallationService/res/values-be/strings.xml
new file mode 100644
index 0000000..7eef297
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-be/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Увядзіце пароль і перайдзіце ў Дынамічныя абнаўленні сістэмы"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Дынамічная сістэма гатовая. Каб пачаць выкарыстоўваць яе, перазапусціце прыладу."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Ідзе ўсталёўка"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Збой усталёўкі"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Збой пры праверцы відарыса. Усталёўка спынена."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Цяпер запушчана дынамічная сістэма. Перазапусціце, каб скарыстаць арыгінальную версію Android."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Скасаваць"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Адхіліць"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Перазапусціць"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Перазапусціць"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Дынамічная сістэма адхілена"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Не ўдалося перазапусціць або загрузіць дынамічную сістэму"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-bg/strings.xml b/packages/DynamicSystemInstallationService/res/values-bg/strings.xml
new file mode 100644
index 0000000..9176676
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-bg/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Моля, въведете паролата си и продължете към функцията за динамични актуализации на системата"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Динамичната система е готова. Рестартирайте устройството си, за да я използвате."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Инсталиране – в ход"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Инсталирането не бе успешно"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Проверката на изображението не бе успешна. Прекратяване на инсталирането."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Понастоящем се изпълнява динамична система. Рестартирайте, за да използвате оригиналната версия на Android."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Отказ"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Отхвърляне"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Рестартиране"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Рестартиране"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Динамичната система е отхвърлена"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Динамичната система не може да се рестартира или зареди"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-bn/strings.xml b/packages/DynamicSystemInstallationService/res/values-bn/strings.xml
new file mode 100644
index 0000000..38ef649
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-bn/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"আপনার পাসওয়ার্ড লিখে ডায়নামিক সিস্টেম আপডেট করা চালিয়ে যান"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"ডায়নামিক সিস্টেম রেডি হয়ে গেছে। সেটি ব্যবহার করা শুরু করতে আপনার ডিভাইস রিস্টার্ট করুন।"</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"ইনস্টল করা হচ্ছে"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"ইনস্টল করা যায়নি"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"ছবি যাচাই করা যায়নি। ইনস্টলেশন বন্ধ করুন।"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"বর্তমানে ডায়নামিক সিস্টেম চালানো হচ্ছে। আসল Android ভার্সন ব্যবহার করার জন্য রিস্টার্ট করুন।"</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"বাতিল করুন"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"বাতিল করুন"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"রিস্টার্ট করুন"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"রিস্টার্ট করুন"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"ডায়নামিক সিস্টেম বাতিল করা হয়েছে"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"ডায়নামিক সিস্টেম রিস্টার্ট বা লোড করা যাচ্ছে না"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-bs/strings.xml b/packages/DynamicSystemInstallationService/res/values-bs/strings.xml
new file mode 100644
index 0000000..84ba540
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-bs/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Unesite lozinku i nastavite na dinamična ažuriranja sistema"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dinamični sistem je spreman. Da ga počnete koristiti, ponovo pokrenite uređaj."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Instaliranje je u toku"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Instaliranje nije uspjelo"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Potvrda slike sistema nije uspjela. Prekini instalaciju."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Dinamični sistem je sada aktivan. Ponovo pokrenite da koristite originalnu verziju Androida."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Otkaži"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Odbaci"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Ponovo pokreni"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Ponovo pokreni"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Dinamični sistem je odbačen"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Nije moguće ponovo pokrenuti ili učitati dinamični sistem"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-ca/strings.xml b/packages/DynamicSystemInstallationService/res/values-ca/strings.xml
new file mode 100644
index 0000000..787e496
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-ca/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Introdueix la contrasenya i continua cap a Actualització dinàmica del sistema"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"El sistema dinàmic ja està a punt. Per començar a utilitzar-lo, reinicia el teu dispositiu."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Instal·lació en curs"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Ha fallat la instal·lació"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"No s\'ha pogut validar la imatge. Anul·la la instal·lació."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"S\'està executant un sistema dinàmic. Reinicia per utilitzar la versió original d\'Android."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Cancel·la"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Descarta"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Reinicia"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Reinicia"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"S\'ha descartat el sistema dinàmic"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"No es pot reiniciar ni carregar el sistema dinàmic"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-cs/strings.xml b/packages/DynamicSystemInstallationService/res/values-cs/strings.xml
new file mode 100644
index 0000000..3dfb23f
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-cs/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Zadejte heslo a pokračujte k dynamickým aktualizacím systému"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dynamický systém je připraven. Chcete-li ho začít používat, restartujte zařízení."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Probíhá instalace"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Instalace se nezdařila"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Obraz se nepodařilo ověřit. Zrušte instalaci."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Je spuštěn dynamický systém. Chcete-li použít původní verzi systému Android, restartujte zařízení."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Zrušit"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Zahodit"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Restartovat"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Restartovat"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Zahodit dynamický systém"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Dynamický systém nelze znovu spustit nebo načíst"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-da/strings.xml b/packages/DynamicSystemInstallationService/res/values-da/strings.xml
new file mode 100644
index 0000000..20005e7
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-da/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Angiv din adgangskode, og fortsæt til Dynamiske systemopdateringer"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Det dynamiske system er klar. Hvis du vil begynde at bruge det, skal du genstarte din enhed."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Installation i gang"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Installationen mislykkedes"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Billedet kunne ikke valideres. Afbryd installationen."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Der køres i øjeblikket et dynamisk system. Genstart for at bruge den oprindelige Android-version."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Annuller"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Afbryd"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Genstart"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Genstart"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Det dynamiske system blev slettet"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Det dynamiske system kan ikke genstartes eller indlæses"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-de/strings.xml b/packages/DynamicSystemInstallationService/res/values-de/strings.xml
new file mode 100644
index 0000000..3f000ea
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-de/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Gib dein Passwort ein und fahre mit Dynamic System Updates fort"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Das dynamische System kann verwendet werden. Starte dazu dein Gerät neu."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Installation läuft"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Fehler bei der Installation"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Fehler bei der Imagevalidierung. Die Installation wird abgebrochen."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Momentan wird ein dynamisches System ausgeführt. Durch einen Neustart kannst du zur ursprünglichen Android-Version zurückkehren."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Abbrechen"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Verwerfen"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Neu starten"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Neu starten"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Dynamisches System verworfen"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Neustart und Laden des dynamischen Systems nicht möglich"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-el/strings.xml b/packages/DynamicSystemInstallationService/res/values-el/strings.xml
new file mode 100644
index 0000000..4d830dd
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-el/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Πληκτρολογήστε τον κωδικό σας και συνεχίστε στις Δυναμικές ενημερώσεις συστήματος."</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Οι δυναμικές συστήματος είναι έτοιμες. Για να ξεκινήσετε να τις χρησιμοποιείτε, επανεκκινήστε τη συσκευή σας."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Εγκατάσταση σε εξέλιξη"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Η εγκατάσταση απέτυχε."</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Η επαλήθευση εικόνας απέτυχε. Ακύρωση εγκατάστασης."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Αυτήν τη στιγμή εκτελούνται δυναμικές συστήματος. Επανεκκινήστε για να χρησιμοποιήσετε την αρχική έκδοση Android."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Ακύρωση"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Απόρριψη"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Επανεκκίνηση"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Επανεκκίνηση"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Οι δυναμικές συστήματος απορρίφθηκαν."</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Δεν είναι δυνατή η επανεκκίνηση ή η φόρτωση δυναμικών συστήματος"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-en-rAU/strings.xml b/packages/DynamicSystemInstallationService/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000..d728631
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-en-rAU/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Please enter your password and continue to Dynamic System Updates"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dynamic system is ready. To start using it, restart your device."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Installation in progress"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Installation failed"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Image validation failed. Abort installation."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Currently running a dynamic system. Restart to use the original Android version."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Cancel"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Discard"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Restart"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Restart"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Discarded dynamic system"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Can’t restart or load dynamic system"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-en-rCA/strings.xml b/packages/DynamicSystemInstallationService/res/values-en-rCA/strings.xml
new file mode 100644
index 0000000..d728631
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-en-rCA/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Please enter your password and continue to Dynamic System Updates"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dynamic system is ready. To start using it, restart your device."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Installation in progress"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Installation failed"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Image validation failed. Abort installation."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Currently running a dynamic system. Restart to use the original Android version."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Cancel"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Discard"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Restart"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Restart"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Discarded dynamic system"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Can’t restart or load dynamic system"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-en-rGB/strings.xml b/packages/DynamicSystemInstallationService/res/values-en-rGB/strings.xml
new file mode 100644
index 0000000..d728631
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-en-rGB/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Please enter your password and continue to Dynamic System Updates"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dynamic system is ready. To start using it, restart your device."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Installation in progress"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Installation failed"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Image validation failed. Abort installation."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Currently running a dynamic system. Restart to use the original Android version."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Cancel"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Discard"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Restart"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Restart"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Discarded dynamic system"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Can’t restart or load dynamic system"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-en-rIN/strings.xml b/packages/DynamicSystemInstallationService/res/values-en-rIN/strings.xml
new file mode 100644
index 0000000..d728631
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-en-rIN/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Please enter your password and continue to Dynamic System Updates"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dynamic system is ready. To start using it, restart your device."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Installation in progress"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Installation failed"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Image validation failed. Abort installation."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Currently running a dynamic system. Restart to use the original Android version."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Cancel"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Discard"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Restart"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Restart"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Discarded dynamic system"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Can’t restart or load dynamic system"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-en-rXC/strings.xml b/packages/DynamicSystemInstallationService/res/values-en-rXC/strings.xml
new file mode 100644
index 0000000..6ac3763
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-en-rXC/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‎‏‏‏‎‎‎‏‎‏‎‏‎‎‎‎‎‎‎‎‏‏‏‎‎‎‎‎‏‎‏‏‎‎‏‎‎‏‏‏‎‎‎‏‏‏‏‏‏‎‎‎Please enter your password and continue to Dynamic System Updates‎‏‎‎‏‎"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‏‎‎‎‎‏‏‏‎‏‏‏‏‎‎‎‏‏‎‏‎‎‏‎‏‎‏‏‎‏‏‏‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‏‎‎‎‏‏‎Dynamic system is ready. To start using it, restart your device.‎‏‎‎‏‎"</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‎‏‏‏‎‏‏‎‏‏‎‏‏‏‏‏‎‏‏‏‎‏‎‎‎‏‏‎‎‎‎‏‎‏‏‏‏‎‎‏‏‎‎‏‎‏‎‎‎‎‏‏‏‎‎‏‎Install in progress‎‏‎‎‏‎"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‏‎‏‏‎‏‎‏‏‏‏‎‎‏‎‎‎‏‏‏‏‎‎‏‏‏‎‏‎‏‏‏‎‎‏‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‎‎‎Install failed‎‏‎‎‏‎"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‏‎‎‏‏‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‎‎‏‏‎‎‎‎‏‎‎‏‎‏‏‏‎‎‏‏‎‏‏‎‎‎‎Image validation failed. Abort installation.‎‏‎‎‏‎"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‏‎‎‏‏‏‎‏‏‎‏‏‎‎‏‎‏‏‏‎‎‏‏‏‏‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‏‎‏‏‎‎‎Currently running a dynamic system. Restart to use the original Android version.‎‏‎‎‏‎"</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‎‏‎‎‏‎‎‎‏‏‎‏‎‎‏‏‎‎‏‎‏‏‎‏‏‎‏‎‏‎‏‎‏‎‎‎‎‏‏‎‏‎‏‎‎‎‏‏‏‎‏‎‏‎Cancel‎‏‎‎‏‎"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‎‎‏‏‏‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‏‏‏‎‎‏‎‎‏‏‏‏‎‎‎‎‏‎‎‎‏‎‎‎‎‏‎‏‎‎‏‎‏‎Discard‎‏‎‎‏‎"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‏‏‏‎‏‏‎‎‎‎‏‏‎‎‎‏‏‎‏‏‎‏‏‏‏‏‎‏‎‎‎‎‎‎‎‏‎‏‏‎‏‏‎‏‎‏‎‎‎‏‏‏‏‏‎Restart‎‏‎‎‏‎"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‏‏‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‏‎‏‎‎‎‎‎‏‎‎‎‏‎‏‏‏‎‎‎‎‏‎‎‎‎‏‏‏‏‏‎‏‎‎‏‎Restart‎‏‎‎‏‎"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‎‎‎‎‏‏‎‏‏‎‏‏‏‏‎‏‏‎‎‏‎‎‎‎‏‎‎‏‎‏‎‎‏‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‏‎‎‏‏‎‏‎‎Discarded dynamic system‎‏‎‎‏‎"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‏‏‎‎‎‎‏‎‎‏‏‏‎‎‏‏‏‏‏‎‏‎‎‏‎‏‎‎‎‏‎‎‎‎‎‏‏‎‏‏‏‎‏‎‎‎‎‎‏‎‎‎‏‏‎Can’t restart or load dynamic system‎‏‎‎‏‎"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-es-rUS/strings.xml b/packages/DynamicSystemInstallationService/res/values-es-rUS/strings.xml
new file mode 100644
index 0000000..9ec8196
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-es-rUS/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Ingresa la contraseña y continúa en Actualizaciones dinámicas del sistema"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"El sistema dinámico está listo. Para comenzar a usarlo, reinicia el dispositivo."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Instalación en curso"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Error de instalación"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Se produjo un error con la validación de la imagen. Anula la instalación."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Se está ejecutando el sistema dinámico. Reinicia para usar la versión original de Android."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Cancelar"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Descartar"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Reiniciar"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Reiniciar"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Se descartó el sistema dinámico"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"No se puede reiniciar o cargar el sistema dinámico"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-es/strings.xml b/packages/DynamicSystemInstallationService/res/values-es/strings.xml
new file mode 100644
index 0000000..cd9db07
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-es/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Introduce la contraseña y entra en Actualización Dinámica del Sistema"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"El sistema dinámico está listo. Para comenzar a usarlo, reinicia el dispositivo."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Instalación en curso"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"No se ha podido instalar"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"No se ha podido validar la imagen. Anula la instalación."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Se está ejecutando el sistema dinámico. Reinícialo para usar la versión original de Android."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Cancelar"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Descartar"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Reiniciar"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Reiniciar"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Se ha descartado el sistema dinámico"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"No se ha podido reiniciar o cargar el sistema dinámico"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-et/strings.xml b/packages/DynamicSystemInstallationService/res/values-et/strings.xml
new file mode 100644
index 0000000..64968b60
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-et/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Sisestage oma parool ja minge edasi rakendusse Dünaamiline süsteemivärskendus"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dünaamiline süsteem on valmis. Selle kasutamise alustamiseks taaskäivitage seade."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Installimine on pooleli"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Installimine ebaõnnestus"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Kujutise kinnitamine ebaõnnestus. Katkestage installimine."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Praegu kasutatakse dünaamilist süsteemi. Algse Androidi versiooni kasutamiseks taaskäivitage."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Tühista"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Loobu"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Taaskäivita"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Taaskäivita"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Dünaamilisest süsteemist loobuti"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Dünaamilist süsteemi ei saa taaskäivitada ega laadida"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-eu/strings.xml b/packages/DynamicSystemInstallationService/res/values-eu/strings.xml
new file mode 100644
index 0000000..7c4a67d
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-eu/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Idatzi pasahitza eta joan Sistemaren eguneratze dinamikoa eginbidera"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Prest dago sistema dinamikoa. Erabiltzen hasteko, berrabiarazi gailua."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Instalatzen"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Ezin izan da instalatu"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Ezin izan da balidatu irudia. Utzi bertan behera instalazioa."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Sistema dinamiko bat abian da. Berrabiarazi Android-en jatorrizko bertsioa erabiltzeko."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Utzi"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Baztertu"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Berrabiarazi"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Berrabiarazi"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Baztertu da sistema dinamikoa"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Ezin da berrabiarazi edo kargatu sistema dinamikoa"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-fa/strings.xml b/packages/DynamicSystemInstallationService/res/values-fa/strings.xml
new file mode 100644
index 0000000..7533e71
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-fa/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"لطفاً گذرواژه را وارد کنید و «به‌روزرسانی‌های سیستم پویا» را ادامه دهید"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"سیستم پویا آماده است. برای استفاده از آن، دستگاه را بازراه‌اندازی کنید."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"درحال نصب"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"نصب نشد"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"راستی‌آزمایی تصویر انجام نشد. نصب را لغو کنید."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"‏درحال‌حاضر سیستم پویا اجرا می‌شود. برای استفاده از نسخه اصلی Android، بازراه‌اندازی کنید."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"لغو کردن"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"صرف‌نظر کردن"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"بازراه‌اندازی"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"بازراه‌اندازی"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"از سیستم پویا صرف‌نظر شد"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"نمی‌توان سیستم پویا را بازراه‌اندازی یا بار کرد"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-fi/strings.xml b/packages/DynamicSystemInstallationService/res/values-fi/strings.xml
new file mode 100644
index 0000000..948c333
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-fi/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Lisää salasanasi ja jatka dynaamisiin järjestelmäpäivityksiin"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dynaaminen järjestelmä on valmis. Aloita sen käyttö käynnistämällä laite uudelleen."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Asennus käynnissä"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Asennus epäonnistui"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Kuvavahvistus epäonnistui. Keskeytä asennus."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Käyttää tällä hetkellä dynaamista järjestelmää. Käynnistä uudelleen käyttääksesi alkuperäistä Android-versiota."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Peruuta"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Hylkää"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Käynn. uudelleen"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Käynn. uudelleen"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Dynaaminen järjestelmä hylätty"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Dynaamista järjestelmää ei voi käynnistää uudelleen tai ladata"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-fr-rCA/strings.xml b/packages/DynamicSystemInstallationService/res/values-fr-rCA/strings.xml
new file mode 100644
index 0000000..6e2f235
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-fr-rCA/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Veuillez entrer votre mot de passe et continuer vers les mises à jour système dynamiques"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Le système dynamique est prêt. Pour commencer à l\'utiliser, redémarrez votre appareil."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Installation en cours…"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Échec de l\'installation"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Impossible de valider l\'image. Annulation de l\'installation."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Un système dynamique est en cours d\'exécution. Pour utiliser la version originale d\'Android, redémarrez l\'appareil."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Annuler"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Annuler"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Redémarrer"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Redémarrer"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Système dynamique supprimé"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Impossible de redémarrer ou de charger le système dynamique"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-fr/strings.xml b/packages/DynamicSystemInstallationService/res/values-fr/strings.xml
new file mode 100644
index 0000000..67f7997
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-fr/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Veuillez saisir votre mot de passe pour accéder aux Mises à jour système dynamiques"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Le système dynamique est prêt. Pour commencer à l\'utiliser, redémarrez votre appareil."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Installation…"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Échec de l\'installation"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Échec de la validation de l\'image. Annulez l\'installation."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Un système dynamique est en cours d\'exécution. Redémarrez pour utiliser la version Android d\'origine."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Annuler"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Supprimer"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Redémarrer"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Redémarrer"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Système dynamique supprimé"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Impossible de redémarrer ou de charger le système dynamique"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-gl/strings.xml b/packages/DynamicSystemInstallationService/res/values-gl/strings.xml
new file mode 100644
index 0000000..8ea6d1c
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-gl/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Pon o teu contrasinal e vai a Dynamic System Updates"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"O sistema dinámico está listo. Para utilizalo, reinicia o dispositivo."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Instalación en curso"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Produciuse un erro durante a instalación"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Produciuse un erro ao validar a imaxe. Aborta a instalación."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Estase executando un sistema dinámico. Reinicia o dispositivo para utilizar a versión de Android orixinal."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Cancelar"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Descartar"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Reiniciar"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Reiniciar"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Descartouse o sistema dinámico"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Non se puido reiniciar nin cargar o sistema dinámico"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-gu/strings.xml b/packages/DynamicSystemInstallationService/res/values-gu/strings.xml
new file mode 100644
index 0000000..aec1804
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-gu/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"કૃપા કરીને તમારો પાસવર્ડ દાખલ કરો અને ડાઇનૅમિક સિસ્ટમ અપડેટ પર ચાલુ રાખો"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"ડાઇનૅમિક સિસ્ટમ તૈયાર છે. તેનો ઉપયોગ કરવા માટે, તમારા ડિવાઇસને ફરી શરૂ કરો."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"ઇન્સ્ટૉલ થઈ રહ્યું છે"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"ઇન્સ્ટૉલ કરવામાં નિષ્ફળ રહ્યાં"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"છબીની ચકાસણી નિષ્ફળ રહી. ઇન્સ્ટૉલેશન રદ કરો."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"હાલમાં ડાઇનૅમિક સિસ્ટમ ચાલી રહી છે. ઑરિજિનલ Android વર્ઝનનો ઉપયોગ કરવા માટે ફરી શરૂ કરો."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"રદ કરો"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"કાઢી નાખો"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"ફરી શરૂ કરો"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"ફરી શરૂ કરો"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"ડાઇનૅમિક સિસ્ટમ કાઢી નાખવામાં આવી"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"ડાઇનૅમિક સિસ્ટમને ફરી શરૂ અથવા લોડ કરી શકાતી નથી"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-hi/strings.xml b/packages/DynamicSystemInstallationService/res/values-hi/strings.xml
new file mode 100644
index 0000000..efedbe8
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-hi/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"डाइनैमिक सिस्टम अपडेट की सुविधा जारी रखने के लिए कृपया अपना पासवर्ड डालें"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"डाइनैमिक सिस्टम तैयार है. इसका इस्तेमाल करने के लिए, अपना डिवाइस रीस्टार्ट करें."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"इंस्टॉल हो रहा है"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"इंस्टॉल नहीं हो सका"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"इमेज की पुष्टि नहीं हो सकी. इंस्टॉल करने की प्रक्रिया रद्द करें."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"फ़िलहाल, हम एक डाइनैमिक सिस्टम चला रहे हैं. Android का मूल वर्शन इस्तेमाल करने के लिए रीस्टार्ट करें."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"रद्द करें"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"खारिज करें"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"रीस्टार्ट करें"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"रीस्टार्ट करें"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"डाइनैमिक सिस्टम खारिज किया गया"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"डाइनैमिक सिस्टम रीस्टार्ट या लोड नहीं हो सका"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-hr/strings.xml b/packages/DynamicSystemInstallationService/res/values-hr/strings.xml
new file mode 100644
index 0000000..50ceaa1
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-hr/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Unesite zaporku i nastavite do dinamičnih ažuriranja sustava"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dinamični sustav je spreman. Da biste ga počeli upotrebljavati, ponovno pokrenite svoj uređaj."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Instalacija u tijeku"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Instaliranje nije uspjelo"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Provjera slike nije uspjela. Prekini instalaciju."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Trenutačno je pokrenut dinamični sustav. Ponovno pokrenite kako biste upotrebljavali izvornu verziju Androida."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Otkaži"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Odbaci"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Pokreni"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Pokreni"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Odbačeni dinamični sustav"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Nije moguće ponovno pokretanje ili učitavanje dinamičnog sustava"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-hu/strings.xml b/packages/DynamicSystemInstallationService/res/values-hu/strings.xml
new file mode 100644
index 0000000..94afa3b
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-hu/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Adja meg jelszavát, hogy használhassa a Dinamikus rendszerfrissítések funkciót"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"A dinamikus rendszer készen áll. A használatához indítsa újra az eszközt."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Telepítés…"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Sikertelen telepítés"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"A kép ellenőrzése nem sikerült. A telepítés megszakad."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Jelenleg dinamikus rendszert futtat. Az eredeti Android-verzió használatához indítsa újra az eszközt."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Mégse"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Elvetés"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Újraindítás"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Újraindítás"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Elvetett dinamikus rendszer"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Nem lehet újraindítani vagy betölteni a dinamikus rendszert"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-hy/strings.xml b/packages/DynamicSystemInstallationService/res/values-hy/strings.xml
new file mode 100644
index 0000000..b0cd740
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-hy/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Մուտքագրեք ձեր գաղտնաբառը և անցեք համակարգի դինամիկ թարմացումների էջ"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Դինամիկ համակարգը պատրաստ է։ Այն օգտագործելու համար վերագործարկեք ձեր սարքը։"</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Տեղադրում"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Չհաջողվեց տեղադրել"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Չհաջողվեց հաստատել պատկերը։ Չեղարկել տեղադրումը։"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Աշխատեցվում է դինամիկ համակարգը։ Վերագործարկեք՝ Android-ի նախկին տարբերակին անցնելու համար։"</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Չեղարկել"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Հրաժարվել"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"վերականգնել"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Վերագործարկել"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Դինամիկ համակարգի գործարկումը չեղարկվեց"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Չհաջողվեց վերագործարկել կամ բեռնել դինամիկ համակարգը"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-in/strings.xml b/packages/DynamicSystemInstallationService/res/values-in/strings.xml
new file mode 100644
index 0000000..44b4aee
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-in/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Masukkan sandi Anda dan lanjutkan ke Dynamic System Updates"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dynamic System sudah siap. Mulai ulang perangkat untuk mulai menggunakannya."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Sedang diinstal"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Penginstalan gagal"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Validasi image gagal. Batalkan penginstalan."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Saat ini sedang menjalankan Dynamic System. Mulai ulang untuk menggunakan Android versi asli."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Batal"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Hapus"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Mulai ulang"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Mulai ulang"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Dynamic System dihapus"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Tidak dapat memulai ulang atau memuat Dynamic System"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-is/strings.xml b/packages/DynamicSystemInstallationService/res/values-is/strings.xml
new file mode 100644
index 0000000..048d1bc
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-is/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Sláðu inn aðgangsorð og haltu áfram í „Breytilegar kerfisuppfærslur“"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Breytilegt kerfi er tilbúið. Endurræstu tækið til að byrja að nota það."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Uppsetning stendur yfir"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Uppsetning mistókst"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Ekki tókst að staðfesta mynd. Hættu við uppsetninguna."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Tækið keyrir á breytilegu kerfi. Endurræstu til að nota upprunalega Android útgáfu."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Hætta við"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Fleygja"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Endurræsa"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Endurræsa"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Breytilegu kerfi fleygt"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Ekki tókst að endurræsa eða hlaða breytilegu kerfi"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-it/strings.xml b/packages/DynamicSystemInstallationService/res/values-it/strings.xml
new file mode 100644
index 0000000..f70b3817
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-it/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Inserisci la password e continua su Aggiornamenti di sistema dinamici"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Sistema dinamico pronto. Per iniziare a usarlo, riavvia il dispositivo."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Installazione in corso"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Installazione non riuscita"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Impossibile convalidare l\'immagine. Interrompi l\'installazione."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Sistema dinamico in uso. Riavvia per usare la versione di Android originale."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Annulla"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Annulla"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Riavvia"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Riavvia"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Sistema dinamico annullato"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Impossibile riavviare o caricare il sistema dinamico"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-iw/strings.xml b/packages/DynamicSystemInstallationService/res/values-iw/strings.xml
new file mode 100644
index 0000000..aff7c82
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-iw/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"יש להזין את הסיסמה ולהמשיך אל עדכוני המערכת הדינמיים"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"המערכת הדינמית מוכנה. כדי להתחיל להשתמש בה, יש להפעיל מחדש את המכשיר."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"ההתקנה מתבצעת"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"ההתקנה נכשלה"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"אימות התמונה נכשל. יש לבטל את ההתקנה."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"‏בשלב זה פועלת מערכת דינמית. כדי להשתמש בגרסת Android המקורית, יש לבצע הפעלה מחדש."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"ביטול"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"סגירה"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"הפעלה מחדש"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"הפעלה מחדש"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"המערכת הדינמית נסגרה"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"לא ניתן להפעיל מחדש או לטעון את המערכת הדינמית"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-ja/strings.xml b/packages/DynamicSystemInstallationService/res/values-ja/strings.xml
new file mode 100644
index 0000000..46c0930
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-ja/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"パスワードを入力し、Dynamic System Updates に移動してください"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"動的システムの準備ができました。使い始めるには、デバイスを再起動してください。"</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"インストールしています"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"インストールに失敗しました"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"イメージの検証に失敗しました。インストールを中止してください。"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"現在、動的システムを実行しています。元の Android バージョンを使用するには再起動してください。"</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"キャンセル"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"破棄"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"再起動"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"再起動"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"動的システムを破棄しました"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"動的システムの再起動や読み込みを行えません"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-ka/strings.xml b/packages/DynamicSystemInstallationService/res/values-ka/strings.xml
new file mode 100644
index 0000000..f841a59
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-ka/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"გთხოვთ, შეიყვანოთ პაროლი სისტემის დინამიურ განახლებებზე გადასასვლელად"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"დინამიური სისტემა მზადაა. გადატვირთეთ მოწყობილობა მის გამოსაყენებლად."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"ინსტალირდება"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"ინსტალაცია ვერ მოხერხდა"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"სურათის ვალიდაცია ვერ მოხერხდა. ინსტალაციის შეწყვეტა."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"ამჟამად გამოიყენება დინამიური სისტემა. გადატვირთეთ Android-ის ორიგინალი ვერსიის გამოსაყენებლად."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"გაუქმება"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"გაუქმება"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"გადატვირთვა"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"გადატვირთვა"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"გაუქმებული დინამიური სისტემა"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"დინამიური სისტემის გადატვირთვა ან ჩატვირთვა ვერ ხერხდება"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-kk/strings.xml b/packages/DynamicSystemInstallationService/res/values-kk/strings.xml
new file mode 100644
index 0000000..d367b61
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-kk/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Құпия сөзіңізді енгізіңіз және Dynamic System Updates функциясына өтіңіз."</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Динамикалық жүйе дайын. Оны пайдалану үшін құрылғыңызды қайта қосыңыз."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Орнатылып жатыр."</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Орнатылмады."</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Кескін тексерілмеді. Орнатуды доғарыңыз."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Әзірге динамикалық жүйе пайдаланылуда. Бастапқы Android нұсқасын пайдалану үшін қайта қосыңыз."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Бас тарту"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Жабу"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Қайта қосу"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Қайта қосу"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Динамикалық жүйе өшірілді."</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Динамикалық жүйені қайта қосу не жүктеу мүмкін емес."</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-km/strings.xml b/packages/DynamicSystemInstallationService/res/values-km/strings.xml
new file mode 100644
index 0000000..56a3716
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-km/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"សូមបញ្ចូល​ពាក្យសម្ងាត់​របស់អ្នក រួចបន្តទៅ​ការដំឡើងកំណែប្រព័ន្ធឌីណាមិច"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"ប្រព័ន្ធឌីណាមិច​អាចប្រើ​បានហើយ។ ដើម្បីចាប់ផ្ដើមប្រើ​ប្រព័ន្ធឌីណាមិច សូមចាប់ផ្ដើម​ឧបករណ៍របស់អ្នក​ឡើងវិញ។"</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"ការដំឡើងកំពុង​ដំណើរការ"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"ការដំឡើង​មិនបានសម្រេច"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"បញ្ជាក់​ភាពត្រឹមត្រូវ​នៃរូបភាព​មិនបានសម្រេច។ បោះបង់​ការដំឡើង។"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"បច្ចុប្បន្ន​កំពុងដំណើរការ​ប្រព័ន្ធឌីណាមិច។ ចាប់ផ្ដើម​ឡើងវិញ ដើម្បីប្រើ​កំណែ Android ដើម។"</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"បោះបង់"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"លុបចោល"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"ចាប់ផ្ដើមឡើងវិញ"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"ចាប់ផ្ដើមឡើងវិញ"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"បានលុបចោល​ប្រព័ន្ធឌីណាមិច"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"មិនអាច​ចាប់ផ្ដើមឡើងវិញ ឬផ្ទុក​ប្រព័ន្ធឌីណាមិច​បានទេ"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-kn/strings.xml b/packages/DynamicSystemInstallationService/res/values-kn/strings.xml
new file mode 100644
index 0000000..b4063df
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-kn/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ನಮೂದಿಸಿ ನಂತರ ಡೈನಾಮಿಕ್ ಸಿಸ್ಟಂ ಅಪ್‌ಡೇಟ್‌ಗಳಿಗೆ ಮುಂದುವರಿಯಿರಿ"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"ಡೈನಾಮಿಕ್ ಸಿಸ್ಟಂ ಸಿದ್ದವಾಗಿದೆ. ಇದನ್ನು ಬಳಸಲು, ನಿಮ್ಮ ಸಾಧನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"ಇನ್‌ಸ್ಟಾಲ್ ಆಗುತ್ತಿದೆ"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ವಿಫಲವಾಗಿದೆ"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"ಚಿತ್ರದ ಮೌಲ್ಯೀಕರಣ ವಿಫಲವಾಗಿದೆ. ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುವಿಕೆಯನ್ನು ರದ್ದುಗೊಳಿಸಿ."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"ಪ್ರಸ್ತುತವಾಗಿ ಡೈನಾಮಿಕ್ ಸಿಸ್ಟಂ ರನ್ ಆಗುತ್ತಿದೆ ಮೂಲ Android ಆವೃತ್ತಿ ಬಳಸಲು, ಮರುಪ್ರಾರಂಭಿಸಿ."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"ರದ್ದುಗೊಳಿಸಿ"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"ತ್ಯಜಿಸಿ"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"ಮರುಪ್ರಾರಂಭಿಸಿ"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"ಮರುಪ್ರಾರಂಭಿಸಿ"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"ಡೈನಮಿಕ್ ಸಿಸ್ಟಂ ಅನ್ನು ತ್ಯಜಿಸಲಾಗಿದೆ"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"ಡೈನಾಮಿಕ್ ಸಿಸ್ಟಂ ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಲು ಅಥವಾ ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-ko/strings.xml b/packages/DynamicSystemInstallationService/res/values-ko/strings.xml
new file mode 100644
index 0000000..24ac924
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-ko/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"비밀번호를 입력하고 동적 시스템 업데이트를 계속 진행하세요."</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"동적 시스템이 준비되었습니다. 사용을 시작하려면 기기를 다시 시작하세요."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"설치 진행 중"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"설치할 수 없음"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"이미지를 확인할 수 없습니다. 설치를 취소합니다."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"현재 동적 시스템을 실행 중입니다. 기존의 Android 버전을 사용하려면 다시 시작하세요."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"취소"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"삭제"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"다시 시작"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"다시 시작"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"동적 시스템 삭제됨"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"동적 시스템을 다시 시작하거나 로드할 수 없음"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-ky/strings.xml b/packages/DynamicSystemInstallationService/res/values-ky/strings.xml
new file mode 100644
index 0000000..a4387e7
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-ky/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Сырсөзүңүздү киргизип, системаны динамикалык жаңыртууга өтүңүз"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Динамикалык система даяр. Аны колдонуу үчүн, түзмөктү өчүрүп күйгүзүңүз."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Орнотулууда"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Орнотулбай койду"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Сүрөт текшерилбей калды. Орнотууну токтотуңуз."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Учурда динамикалык система колдонулууда. Android\'дин түпнуска версиясын колдонуу үчүн, өчүрүп күйгүзүңүз."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Жок"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Жоюу"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Өчүрүп күйгүзүү"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Өчүрүп күйгүзүү"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Динамикалык система жоюлду"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Динамикалык система өчүрүлүп күйгүзүлбөй же жүктөлбөй жатат"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-lo/strings.xml b/packages/DynamicSystemInstallationService/res/values-lo/strings.xml
new file mode 100644
index 0000000..f17ca16
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-lo/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"ກະລຸນາໃສ່ລະຫັດຜ່ານຂອງທ່ານ ແລະ ດຳເນີນການຕໍ່ຫາອັບເດດລະບົບແບບໄດນາມິກ"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"ລະບົບໄດນາມິກພ້ອມແລ້ວ. ກະລຸນາຣີສະຕາດອຸປະກອນຂອງທ່ານເພື່ອເລີ່ມນຳໃຊ້ມັນ."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"ກຳລັງຕິດຕັ້ງຢູ່"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"ຕິດຕັ້ງບໍ່ສຳເລັດ"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"ການກວດສອບໄຟລ໌ຮູບບໍ່ສຳເລັດ. ຍົກເລີກການຕິດຕັ້ງ."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"ຕອນນີ້ກຳລັງໃຊ້ລະບົບໄດນາມິກ. ກະລຸນາຣີສະຕາດເພື່ອໃຊ້ເວີຊັນ Android ຕົ້ນສະບັບ."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"ຍົກເລີກ"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"ປິດໄວ້"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"ຣີສະຕາດ"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"ຣີສະຕາດ"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"ລະບົບໄດນາມິກທີ່ຍົກເລີກແລ້ວ"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"ບໍ່ສາມາດຣີສະຕາດ ຫຼື ໂຫຼດລະບົບໄດນາມິກໄດ້"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-lt/strings.xml b/packages/DynamicSystemInstallationService/res/values-lt/strings.xml
new file mode 100644
index 0000000..8128eb7
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-lt/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Įveskite slaptažodį ir eikite į Dinaminių sistemos atnaujinimų funkciją"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dinaminė sistema paruošta. Jei norite pradėti ją naudoti, paleiskite įrenginį iš naujo."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Diegiama"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Įdiegti nepavyko"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Nepavyko patvirtinti vaizdo. Nutraukti diegimą."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Šiuo metu paleista dinaminė sistema. Paleiskite iš naujo, jei norite naudoti pradinę „Android“ versiją."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Atšaukti"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Atmesti"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Pal. iš naujo"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Pal. iš naujo"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Dinaminė sistema atmesta"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Nepavyko paleisti iš naujo ar įkelti dinaminės sistemos"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-lv/strings.xml b/packages/DynamicSystemInstallationService/res/values-lv/strings.xml
new file mode 100644
index 0000000..cfe7a08
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-lv/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Ievadiet paroli un pārejiet uz funkciju Dinamiskie sistēmas atjauninājumi"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dinamiskā sistēma ir gatava. Lai sāktu to izmantot, restartējiet ierīci."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Notiek instalēšana"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Instalēšana neizdevās"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Attēla validācija neizdevās. Instalācija tiek priekšlaikus pārtraukta."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Pašlaik darbojas dinamiska sistēma. Lai izmantotu sākotnējo Android versiju, restartējiet ierīci."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Atcelt"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Atmest"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Restartēt"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Restartēt"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Dinamiskā sistēma tika atmesta"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Nevar restartēt vai ielādēt dinamisko sistēmu"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-mk/strings.xml b/packages/DynamicSystemInstallationService/res/values-mk/strings.xml
new file mode 100644
index 0000000..21215aa
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-mk/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Внесете ја вашата лозинка и продолжете на „Динамични системски ажурирања“"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Динамичниот систем е подготвен. За да започнете со користење, рестартирајте го уредот."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Инсталирањето е во тек"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Неуспешно инсталирање"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Проверката на сликата не успеа. Прекини ја инсталацијата."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Во моментов се извршува динамичен систем. Рестартирајте за да ја користите оригиналната верзија на Android."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Откажи"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Отфрли"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Рестартирај"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Рестартирај"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Отфрлен динамичен систем"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Не може да го рестартира или вчита динамичниот систем"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-ml/strings.xml b/packages/DynamicSystemInstallationService/res/values-ml/strings.xml
new file mode 100644
index 0000000..951a0b9
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-ml/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"നിങ്ങളുടെ പാസ്‌വേഡ് നൽകി ഡൈനാമിക് സിസ്റ്റം അപ്ഡേറ്റുകളിലേക്ക് പോകുക"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"ഡെെനാമിക് സിസ്റ്റം തയ്യാറാണ്. അത് ഉപയോഗിച്ച് തുടങ്ങാൻ നിങ്ങളുടെ ഉപകരണം റീസ്റ്റാർട്ട് ചെയ്യുക."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"ഇൻസ്‌റ്റാൾ ചെയ്യൽ പുരോഗതിയിലാണ്"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"ഇൻസ്‌റ്റാൾ ചെയ്യാനായില്ല"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"ചിത്രത്തിന്റെ മൂല്യനിർണ്ണയം നടത്താനായില്ല. ഇൻസ്‌റ്റലേഷൻ റദ്ദാക്കുക."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"നിലവിൽ ഒരു ഡെെനാമിക് സിസ്റ്റം റൺ ചെയ്യുന്നുണ്ട്. ഒറിജിനൽ Android പതിപ്പ് ഉപയോഗിക്കാൻ റീസ്റ്റാർട്ട് ചെയ്യുക."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"റദ്ദാക്കുക"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"നിരസിക്കുക"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"റീസ്റ്റാർട്ട് ചെയ്യൂ"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"റീസ്റ്റാർട്ട് ചെയ്യൂ"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"ഡെെനാമിക് സിസ്റ്റം നിരസിച്ചു"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"റീസ്റ്റാർട്ട് ചെയ്യാനോ ഡെെനാമിക് സിസ്റ്റം ലോഡ് ചെയ്യാനോ ആവില്ല"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-mn/strings.xml b/packages/DynamicSystemInstallationService/res/values-mn/strings.xml
new file mode 100644
index 0000000..d0965d0
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-mn/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Нууц үгээ оруулаад Динамик системийн шинэчлэлтийг үргэлжлүүлнэ үү"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Динамик систем бэлэн боллоо. Түүнийг ашиглаж эхлэхийн тулд төхөөрөмжөө дахин эхлүүлнэ үү."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Суулгаж байна"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Суулгаж чадсангүй"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Системийн хуулбарын баталгаажуулалт амжилтгүй боллоо. Суулгах үйлдлийг зогсооно уу."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Одоогоор динамик системийг ажиллуулж байна. Android-н эх хувилбарыг ашиглахын тулд дахин эхлүүлнэ үү."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Болих"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Болих"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Дахин эхлүүлэх"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Дахин эхлүүлэх"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Динамик системийг устгасан"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Динамик системийг дахин эхлүүлэх эсвэл ачаалах боломжгүй байна"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-mr/strings.xml b/packages/DynamicSystemInstallationService/res/values-mr/strings.xml
new file mode 100644
index 0000000..268e1d3
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-mr/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"कृपया तुमचा पासवर्ड एंटर करा आणि डायनॅमिक सिस्टम अपडेट वर जा"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"डायनॅमिक सिस्टम तयार आहे. ती वापरणे सुरू करण्यासाठी, तुमचे डिव्हाइस रीस्टार्ट करा."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"इंस्टॉल प्रगतीपथावर आहे"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"इंस्टॉल करता आली नाही"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"इमेज प्रमाणीकरण करता आले नाही. इंस्टॉलेशन रद्द करा."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"सध्या डायनॅमिक सिस्टम रन करत आहे. मूळ Android आवृत्ती वापरण्यासाठी रीस्टार्ट करा."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"रद्द करा"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"काढून टाका"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"रीस्टार्ट करा"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"रीस्टार्ट करा"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"डायनॅमिक सिस्टम काढून टाकली"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"डायनॅमिक सिस्टम रीस्टार्ट किंवा लोड करू शकत नाही"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-ms/strings.xml b/packages/DynamicSystemInstallationService/res/values-ms/strings.xml
new file mode 100644
index 0000000..bba8b97
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-ms/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Sila masukkan kata laluan dan teruskan ke Kemas Kini Sistem Dinamik"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Sistem dinamik sudah sedia. Untuk mula menggunakan sistem ini, mulakan semula peranti anda"</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Pemasangan sedang dijalankan"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Pemasangan gagal"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Gagal mengesahkan imej. Henti paksa pemasangan."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Sedang menjalankan sistem dinamik. Mulakan semula peranti untuk menggunakan versi asal Android."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Batal"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Buang"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Mulakan semula"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Mulakan semula"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Sistem dinamik dibuang"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Tidak dapat memulakan semula atau memuatkan sistem dinamik"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-my/strings.xml b/packages/DynamicSystemInstallationService/res/values-my/strings.xml
new file mode 100644
index 0000000..b2488ec
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-my/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"သင့်စကားဝှက်ထည့်ပြီး ပြောင်းလဲနိုင်သော စနစ်အပ်ဒိတ်များသို့ ရှေ့ဆက်ပါ"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"ပြောင်းလဲနိုင်သောစနစ် အသင့်ဖြစ်ပါပြီ။ ၎င်းကို စတင်အသုံးပြုရန် သင့်စက်ကို ပြန်စပါ။"</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"ထည့်သွင်းနေဆဲဖြစ်သည်"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"ထည့်သွင်း၍မရပါ"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"ပုံအတည်ပြု၍ မရပါ။ ထည့်သွင်းမှုကို ရပ်ပါ။"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"လက်ရှိတွင် ပြောင်းလဲနိုင်သောစနစ်ကို အသုံးပြုနေသည်။ မူလ Android ဗားရှင်း အသုံးပြုရန် ပြန်စတင်ပါ။"</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"မလုပ်တော့"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"ဖယ်ပစ်ရန်"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"ပြန်စရန်"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"ပြန်စရန်"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"ပြောင်းလဲနိုင်သောစနစ်ကို ဖယ်လိုက်သည်"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"ပြန်စ၍ မရပါ (သို့) ပြောင်းလဲနိုင်သောစနစ် ဖွင့်၍မရပါ"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-nb/strings.xml b/packages/DynamicSystemInstallationService/res/values-nb/strings.xml
new file mode 100644
index 0000000..36e3d69
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-nb/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Skriv inn passordet ditt, og fortsett til dynamiske systemoppdateringer"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Det dynamiske systemet er klart. Start enheten din på nytt for å begynne å bruke det."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Installeringen pågår"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Installeringen mislyktes"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Bildebekreftelsen mislyktes. Avbryt installeringen."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Kjører et dynamisk system nå. Start på nytt for å bruke den opprinnelige Android-versjonen."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Avbryt"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Forkast"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Start på nytt"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Start på nytt"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Det dynamiske systemet er forkastet"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Det dynamiske systemet kan ikke startes på nytt eller lastes inn"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-ne/strings.xml b/packages/DynamicSystemInstallationService/res/values-ne/strings.xml
new file mode 100644
index 0000000..ee92678
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-ne/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"कृपया आफ्नो पासवर्ड प्रविष्टि गर्नुहोस् र Dynamic System Updates को प्रक्रियालाई निरन्तरता दिनुहोस्"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dynamic System तयार छ। यसको प्रयोग सुरु गर्न आफ्नो यन्त्र रिस्टार्ट गर्नुहोस्।"</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"इन्स्टल हुँदै छ"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"स्थापना गर्न सकिएन"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"छवि पुष्टि गर्न सकिएन। स्थापना गर्ने प्रक्रिया रद्द गर्नुहोस्।"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"हाल Dynamic System चलिरहेको छ। Android को मूल संस्करण प्रयोग गर्न यन्त्र रिस्टार्ट गर्नुहोस्।"</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"रद्द गर्नुहोस्"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"खारेज गर्नुहोस्"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"रिस्टार्ट गर्नु…"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"रिस्टार्ट गर्नु…"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Dynamic System खारेज गरियो"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"रिस्टार्ट गर्न वा Dynamic System लोड गर्न सकिएन"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-nl/strings.xml b/packages/DynamicSystemInstallationService/res/values-nl/strings.xml
new file mode 100644
index 0000000..47eeb83
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-nl/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Geef je wachtwoord op en ga door naar \'Dynamische systeemupdates\'"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dynamisch systeem is gereed. Start je apparaat opnieuw op om het te gebruiken."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Installatie wordt uitgevoerd"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Installatie mislukt"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Valideren van afbeelding mislukt. Installatie afbreken."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Er is momenteel een dynamisch systeem actief. Start je apparaat opnieuw op om de oorspronkelijke Android-versie te gebruiken."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Annuleren"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Niet opslaan"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Herstarten"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Herstarten"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Dynamisch systeem niet opgeslagen"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Kan dynamisch systeem niet opnieuw opstarten of laden"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-or/strings.xml b/packages/DynamicSystemInstallationService/res/values-or/strings.xml
new file mode 100644
index 0000000..e0c8470
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-or/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"ଦୟାକରି ଆପଣଙ୍କ ପାସୱାର୍ଡ ଲେଖନ୍ତୁ ଏବଂ ଡାଇନାମିକ୍ ସିଷ୍ଟମ୍ ଅପଡେଟ୍ ଜାରି ରଖନ୍ତୁ"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"ଡାଇନାମିକ୍ ସିଷ୍ଟମ୍ ପ୍ରସ୍ତୁତ ଅଛି। ଏହାକୁ ବ୍ୟବହାର କରିବା ଆରମ୍ଭ କରିବାକୁ, ଆପଣଙ୍କ ଡିଭାଇସକୁ ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ।"</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"ଇନଷ୍ଟଲ୍ ହେଉଛି"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"ଇନଷ୍ଟଲ୍ କରିବା ବିଫଳ ହୋଇଛି"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"ଛବି ବୈଧକରଣ ବିଫଳ ହୋଇଛି। ଇନଷ୍ଟଲେସନ୍ ରଦ୍ଦ କରନ୍ତୁ।"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"ବର୍ତ୍ତମାନ ଏକ ଡାଇନାମିକ୍ ସିଷ୍ଟମ୍ ଚାଲୁଛି। ମୂଳ Android ସଂସ୍କରଣ ବ୍ୟବହାର କରିବାକୁ ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ।"</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"ବାତିଲ୍ କରନ୍ତୁ"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"ଖାରଜ କରନ୍ତୁ"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"ଡାଇନାମିକ୍ ସିଷ୍ଟମ୍ ଖାରଜ କରାଯାଇଛି"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"ଡାଇନାମିକ୍ ସିଷ୍ଟମ୍ ରିଷ୍ଟାର୍ଟ କିମ୍ବା ଲୋଡ୍ କରାଯାଇପାରିବ ନାହିଁ"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-pa/strings.xml b/packages/DynamicSystemInstallationService/res/values-pa/strings.xml
new file mode 100644
index 0000000..c5f7a3d
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-pa/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"ਕਿਰਪਾ ਕਰਕੇ ਆਪਣਾ ਪਾਸਵਰਡ ਦਾਖਲ ਕਰੋ ਅਤੇ ਪਰਿਵਰਤਨਸ਼ੀਲ ਸਿਸਟਮ ਅੱਪਡੇਟ \'ਤੇ ਜਾਰੀ ਰੱਖੋ"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"ਪਰਿਵਰਤਨਸ਼ੀਲ ਸਿਸਟਮ ਤਿਆਰ ਹੈ। ਇਸ ਦੀ ਵਰਤੋਂ ਸ਼ੁਰੂ ਕਰਨ ਲਈ, ਆਪਣਾ ਡੀਵਾਈਸ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ।"</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"ਸਥਾਪਨਾ ਜਾਰੀ ਹੈ"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"ਸਥਾਪਤ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"ਚਿੱਤਰ ਪ੍ਰਮਾਣਿਕਤਾ ਅਸਫਲ ਰਹੀ। ਸਥਾਪਨਾ ਨੂੰ ਰੱਦ ਕਰੋ।"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"ਫ਼ਿਲਹਾਲ ਪਰਿਵਰਤਨਸ਼ੀਲ ਸਿਸਟਮ ਚੱਲ ਰਿਹਾ ਹੈ। ਮੂਲ Android ਵਰਜਨ ਵਰਤਣ ਲਈ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ।"</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"ਰੱਦ ਕਰੋ"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"ਖਾਰਜ ਕਰੋ"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"ਪਰਿਵਰਤਨਸ਼ੀਲ ਸਿਸਟਮ ਰੱਦ ਕੀਤਾ ਗਿਆ"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"ਪਰਿਵਰਤਨਸ਼ੀਲ ਸਿਸਟਮ ਮੁੜ-ਸ਼ੁਰੂ ਜਾਂ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-pl/strings.xml b/packages/DynamicSystemInstallationService/res/values-pl/strings.xml
new file mode 100644
index 0000000..bc7d5fe
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-pl/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Wpisz hasło i przejdź do dynamicznych aktualizacji systemu"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"System dynamiczny jest gotowy. Aby zacząć go używać, uruchom urządzenie ponownie."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Instaluję"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Nie udało się zainstalować"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Nie udało się zweryfikować obrazu. Przerwij instalację."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Obecnie urządzenie korzysta z systemu dynamicznego. Aby powrócić do oryginalnej wersji Androida, uruchom urządzenie ponownie."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Anuluj"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Odrzuć"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Uruchom ponownie"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Uruchom ponownie"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Usunięto system dynamiczny"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Nie można ponownie uruchomić lub wczytać systemu dynamicznego"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-pt-rBR/strings.xml b/packages/DynamicSystemInstallationService/res/values-pt-rBR/strings.xml
new file mode 100644
index 0000000..31a9bb4
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-pt-rBR/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Digite sua senha e prossiga para Atualizações dinâmicas do sistema"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"O sistema dinâmico está pronto. Para começar a usá-lo, reinicie o dispositivo."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Instalação em andamento"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Falha na instalação"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Falha ao validar imagem. Cancele a instalação."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Um sistema dinâmico está sendo executado no momento. Reinicie para usar a versão original do Android."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Cancelar"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Descartar"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Reiniciar"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Reiniciar"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Sistema dinâmico descartado"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Não é possível reiniciar ou carregar o sistema dinâmico"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-pt-rPT/strings.xml b/packages/DynamicSystemInstallationService/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000..d917c6a
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-pt-rPT/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Introduza a sua palavra-passe e continue para a Atualização Dinâmica do Sistema."</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"O sistema dinâmico está pronto. Para o começar a utilizar, reinicie o dispositivo."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Instalação em curso"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Falha na instalação"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Falha ao validar a imagem. A instalação foi interrompida."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Está atualmente em execução um sistema dinâmico. Reinicie para utilizar a versão original do Android."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Cancelar"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Rejeitar"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Reiniciar"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Reiniciar"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Sistema dinâmico rejeitado"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Não é possível reiniciar ou carregar o sistema dinâmico."</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-pt/strings.xml b/packages/DynamicSystemInstallationService/res/values-pt/strings.xml
new file mode 100644
index 0000000..31a9bb4
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-pt/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Digite sua senha e prossiga para Atualizações dinâmicas do sistema"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"O sistema dinâmico está pronto. Para começar a usá-lo, reinicie o dispositivo."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Instalação em andamento"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Falha na instalação"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Falha ao validar imagem. Cancele a instalação."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Um sistema dinâmico está sendo executado no momento. Reinicie para usar a versão original do Android."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Cancelar"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Descartar"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Reiniciar"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Reiniciar"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Sistema dinâmico descartado"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Não é possível reiniciar ou carregar o sistema dinâmico"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-ro/strings.xml b/packages/DynamicSystemInstallationService/res/values-ro/strings.xml
new file mode 100644
index 0000000..c211318
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-ro/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Introduceți parola și accesați Actualizările de sistem dinamice"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Sistemul dinamic este pregătit. Ca să începeți să-l folosiți, reporniți dispozitivul."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Se instalează"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Instalarea nu a reușit"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Nu s-a validat imaginea. Abandonați instalarea."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Rulăm un sistem dinamic. Reporniți pentru a folosi versiunea Android inițială."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Anulați"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Renunțați"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Reporniți"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Reporniți"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"S-a renunțat la sistemul dinamic"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Nu se poate reporni sau încărca sistemul dinamic"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-ru/strings.xml b/packages/DynamicSystemInstallationService/res/values-ru/strings.xml
new file mode 100644
index 0000000..bf94c99
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-ru/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Введите пароль и перейдите к динамическим обновлениям системы."</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Динамическая система готова. Чтобы использовать ее, перезапустите устройство."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Идет установка…"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Ошибка установки."</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Не удалось проверить образ. Отмените установку."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Используется динамическая система. Чтобы вернуться к исходной версии Android, перезапустите устройство."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Отмена"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Отменить"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Перезапустить"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Перезапустить"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Динамическая система удалена."</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Не удается запустить или загрузить динамическую систему."</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-si/strings.xml b/packages/DynamicSystemInstallationService/res/values-si/strings.xml
new file mode 100644
index 0000000..e6a6ea2
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-si/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"කරුණාකර ඔබගේ මුරපදය ඇතුළත් කර ගතික පද්ධති යාවත්කාලීන කිරීම් වෙත යන්න"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"ගතික පද්ධතිය සූදානම්ය. එය භාවිතා කිරීම ආරම්භ කිරීමට, ඔබගේ උපාංගය නැවත ආරම්භ කරන්න."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"ස්ථාපනය කෙරෙමින් පවතී"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"ස්ථාපනය අසාර්ථක විය"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"රූප වලංගු කිරීම අසාර්ථක විය. ස්ථාපනය අවලංගු කරන්න"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"දැනට ගතික පද්ධතියක් ක්‍රියාත්මක කරයි. මුල් Android අනුවාදය භාවිතා කිරීමට නැවත ආරම්භ කරන්න."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"අවලංගු කරන්න"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"ඉවත ලන්න"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"යළි අරඹන්න"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"යළි අරඹන්න"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"ගතික පද්ධතිය ඉවත දමන ලදි"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"ගතික පද්ධතිය නැවත ආරම්භ කිරීමට හෝ පූරණය කිරීමට නොහැක"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-sk/strings.xml b/packages/DynamicSystemInstallationService/res/values-sk/strings.xml
new file mode 100644
index 0000000..99390cf
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-sk/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Zadajte svoje heslo a pokračujte na dynamické aktualizácie systému"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dynamický systém je k dispozícii. Ak ho chcete začať používať, reštartujte zariadenie."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Prebieha inštalácia"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Nepodarilo sa nainštalovať"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Obrázok sa nepodarilo overiť. Prerušte inštaláciu."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Momentálne je spustený dynamický systém. Ak chcete používať pôvodnú verziu Androidu, reštartujte."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Zrušiť"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Zahodiť"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Reštartovať"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Reštartovať"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Zahodený dynamický systém"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Nie je možné reštartovať alebo načítať dynamický systém"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-sl/strings.xml b/packages/DynamicSystemInstallationService/res/values-sl/strings.xml
new file mode 100644
index 0000000..3ffd741
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-sl/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Vnesite geslo in nadaljujte na dinamične posodobitve sistema"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dinamični sistem je pripravljen. Znova zaženite napravo, da ga boste lahko začeli uporabljati."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Namestitev poteka"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Namestitev ni uspela"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Preverjanje slike ni uspelo. Prekinite namestitev."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Trenutno se izvaja dinamični sistem. Znova zaženite, če želite uporabljati prvotno različico Androida."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Prekliči"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Zavrzi"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Znova zaženi"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Znova zaženi"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Dinamični sistem je bil zavržen"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Dinamičnega sistema ni mogoče znova zagnati ali naložiti"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-sq/strings.xml b/packages/DynamicSystemInstallationService/res/values-sq/strings.xml
new file mode 100644
index 0000000..704b512
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-sq/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Fut fjalëkalimin tënd dhe vazhdo te përditësimet e sistemit dinamik"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Sistemi dinamik është gati. Për të nisur përdorimin e tij, rinise pajisjen."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Instalimi në vazhdim"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Instalimi dështoi"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Verifikimi i imazhit dështoi. Ndërprit instalimin."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Aktualisht po ekzekutohet në një sistem dinamik. Rinise për të përdorur versionin origjinal të Android."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Anulo"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Hiq"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Rinis"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Rinis"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Sistemi dinamik u hoq"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Sistemi dinamik nuk mund të rinisej ose të ngarkohej"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-sr/strings.xml b/packages/DynamicSystemInstallationService/res/values-sr/strings.xml
new file mode 100644
index 0000000..5e4540a
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-sr/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Унесите лозинку и наставите до динамичних ажурирања система"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Динамични систем је спреман. Да бисте почели да га користите, рестартујте уређај."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Инсталира се"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Инсталирање није успело"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Валидација слике није успела. Откажите инсталацију."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Тренутно је покренут динамични систем. Рестартујте да бисте користили оригиналну верзију Android-а."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Откажи"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Одбаци"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Рестартуј"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Рестартуј"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Динамични систем је одбачен"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Рестартовање или учитавање динамичног система није успело"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-sv/strings.xml b/packages/DynamicSystemInstallationService/res/values-sv/strings.xml
new file mode 100644
index 0000000..546ffdd
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-sv/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Ange lösenordet och fortsätt till Dynamiska systemuppdateringar"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Det dynamiska systemet är klart. Om du vill använda det startar du om enheten."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Installation pågår"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Installationen misslyckades"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Bildvalideringen misslyckades. Avbryt installationen."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Ett dynamiskt system körs. Om du vill använda den ursprungliga Android-versionen startar du om."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Avbryt"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Ignorera"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Starta om"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Starta om"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Det dynamiska systemet ignorerades"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Det gick inte att starta om eller läsa in det dynamiska systemet"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-sw/strings.xml b/packages/DynamicSystemInstallationService/res/values-sw/strings.xml
new file mode 100644
index 0000000..53414d5
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-sw/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Tafadhali weka nenosiri lako na uende kwenye Dynamic System Updates"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dynamic system iko tayari. Ili uanze kuitumia, zima kisha uwashe kifaa chako."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Inasakinisha"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Imeshindwa kusakinisha"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Imeshindwa kuthibitisha picha. Ghairi usakinishaji."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Inatumia Dynamic System kwa sasa. Zima kisha uwashe ili utumie toleo halisi la Android."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Ghairi"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Ondoa"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Zima kisha uwashe"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Zima kisha uwashe"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Umeondoa Dynamic System"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Imeshindwa kuzima na kuwasha au kupakia Dynamic System"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-ta/strings.xml b/packages/DynamicSystemInstallationService/res/values-ta/strings.xml
new file mode 100644
index 0000000..e0aaaf7
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-ta/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Dynamic System Updatesஸுக்குத் தொடர உங்கள் கடவுச்சொல்லை உள்ளிடவும்"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dynamic system தயாராக உள்ளது. இதைப் பயன்படுத்தத் தொடங்க உங்கள் சாதனத்தை மீண்டும் தொடங்கவும்."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"நிறுவப்படுகிறது"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"நிறுவ முடியவில்லை"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"படத்தைச் சரிபார்க்க முடியவில்லை. நிறுவலை ரத்துசெய்யவும்."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Dynamic system தற்போது இயக்கத்தில் உள்ளது. அசல் Android பதிப்பைப் பயன்படுத்த மீண்டும் தொடங்கவும்."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"ரத்துசெய்"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"நிராகரி"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"மீண்டும் தொடங்கு"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"மீண்டும் தொடங்கு"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Dynamic system நிராகரிக்கப்பட்டது"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Dynamic systemமை மீண்டும் தொடங்கவோ ஏற்றவோ முடியவில்லை"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-te/strings.xml b/packages/DynamicSystemInstallationService/res/values-te/strings.xml
new file mode 100644
index 0000000..d497630
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-te/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"దయచేసి మీ పాస్‌వర్డ్‌ను ఎంటర్ చేసి, డైనమిక్ సిస్టమ్ అప్‌డేట్స్‌ను కొనసాగించండి"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"డైనమిక్ సిస్టమ్ సిద్ధంగా ఉంది. దీనిని ఉపయోగించడానికి, మీ పరికరాన్ని రీస్టార్ట్ చేయండి."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"ఇన్‌స్టాల్ అవుతోంది"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"ఇన్‌స్టాల్ చేయడం విఫలమైంది"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"ఇమేజ్ నిర్ధారణ విఫలమైంది. ఇన్‌స్టాలేషన్‌ను రద్దు చేయండి."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"ప్రస్తుతం డైనమిక్ సిస్టమ్ రన్నవుతోంది. ఒరిజినల్ Android వెర్షన్‌ను ఉపయోగించడానికి రీస్టార్ట్ చేయండి."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"రద్దు చేయండి"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"విస్మరించండి"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"రీస్టార్ట్ చేయి"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"రీస్టార్ట్ చేయి"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"డైనమిక్ సిస్టమ్ విస్మరించబడింది"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"డైనమిక్ సిస్టమ్‌ను రీస్టార్ట్ చేయడం లేదా లోడ్ చేయడం సాధ్యపడలేదు"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-th/strings.xml b/packages/DynamicSystemInstallationService/res/values-th/strings.xml
new file mode 100644
index 0000000..786324f
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-th/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"โปรดป้อนรหัสผ่านแล้วไปที่ \"อัปเดตระบบแบบไดนามิก\""</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"ระบบแบบไดนามิกพร้อมแล้ว โปรดรีสตาร์ทอุปกรณ์เพื่อเริ่มใช้"</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"กำลังติดตั้ง"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"ติดตั้งไม่สำเร็จ"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"ตรวจสอบรูปภาพไม่สำเร็จ ล้มเลิกการติดตั้ง"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"ปัจจุบันใช้ระบบแบบไดนามิกอยู่ รีสตาร์ทเพื่อใช้ Android เวอร์ชันดั้งเดิม"</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"ยกเลิก"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"ยกเลิก"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"รีสตาร์ท"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"รีสตาร์ท"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"ยกเลิกระบบแบบไดนามิกแล้ว"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"รีสตาร์ทหรือโหลดระบบแบบไดนามิกไม่ได้"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-tl/strings.xml b/packages/DynamicSystemInstallationService/res/values-tl/strings.xml
new file mode 100644
index 0000000..df39f7b
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-tl/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Pakilagay ang iyong password at ipagpatuloy ang Dynamic System Updates"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Handa na ang dynamic system. Para simulang gamitin ito, i-restart ang iyong device."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Ini-install"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Hindi na-install"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Hindi na-validate ang image. I-abort ang pag-install."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Kasalukuyang pinapatakbo ang dynamic system. Mag-restart para gamitin ang orihinal na Android na bersyon."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Kanselahin"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"I-discard"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"I-restart"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"I-restart"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Na-discard ang dynamic system"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Hindi ma-restart o ma-load ang dynamic system"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-tr/strings.xml b/packages/DynamicSystemInstallationService/res/values-tr/strings.xml
new file mode 100644
index 0000000..1446f96
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-tr/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Lütfen şifrenizi girip Dinamik Sistem Güncellemesi\'ne gidin"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dinamik sistem hazır. Kullanmaya başlamak için cihazınızı yeniden başlatın."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Yükleme devam ediyor"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Yükleme başarısız oldu"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Resim doğrulanamadı. Yüklemeyi iptal edin."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Şu anda dinamik sistem çalıştırılıyor. Orijinal Android sürümünü kullanmak için cihazı yeniden başlatın."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"İptal"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Sil"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Yeniden başlat"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Yeniden başlat"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Dinamik sistem silindi"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Dinamik sistem yeniden başlatılamıyor veya yüklenemiyor"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-uk/strings.xml b/packages/DynamicSystemInstallationService/res/values-uk/strings.xml
new file mode 100644
index 0000000..9a44d97
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-uk/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Введіть пароль і перейдіть до Динамічних оновлень системи"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Динамічна система готова. Щоб перейти до неї, перезапустіть пристрій."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Триває встановлення"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Не вдалося встановити"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Не вдалося перевірити образ. Встановлення скасовано."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Запущено динамічну систему. Перезапустіть пристрій, щоб повернутися до попередньої версії Android."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Скасувати"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Видалити"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Перезапустити"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Перезапустити"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Динамічну систему видалено"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Не вдається перезапустити пристрій або завантажити динамічну систему"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-ur/strings.xml b/packages/DynamicSystemInstallationService/res/values-ur/strings.xml
new file mode 100644
index 0000000..48dddbe
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-ur/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"براہ کرم اپنا پاس ورڈ درج کریں اور ڈائنیمک سسٹم اپ ڈیٹس پر جائیں"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"ڈائنیمک سسٹم تیار ہے۔ اس کا استعمال شروع کرنے کے لیے، اپنا آلہ ری سٹارٹ کریں۔"</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"انسٹال جاری ہے"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"انسٹال ناکام ہو گیا"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"تصویر کی توثیق ناکام ہو گئی۔ انسٹالیشن منسوخ کریں-"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"‏فی الحال ہم ایک ڈائنیمک سسٹم چلا رہے ہیں۔ Android کا اصل ورژن استعمال کرنے کے لیے ری سٹارٹ کریں۔"</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"منسوخ کریں"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"مسترد کریں"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"ری سٹارٹ کریں"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"ری سٹارٹ کریں"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"مسترد کردہ ڈائنیمک سسٹم"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"ڈائنیمک سسٹم کو ری سٹارٹ یا لوڈ نہیں کر سکتے"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-uz/strings.xml b/packages/DynamicSystemInstallationService/res/values-uz/strings.xml
new file mode 100644
index 0000000..3f0227c
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-uz/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Parolni kiriting va dinamik tizim yangilanishlarini davom ettiring"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dinamik tizim tayyor. Foydalanishni boshlash uchun qurilmani qayta ishga tushiring."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Oʻrnatilmoqda"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Oʻrnatilmadi"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Rasm tekshiruvi amalga oshmadi Oʻrnatishni bekor qilish."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Hozirda dinamik tizim ishga tushirilgan. Asl Android versiyasidan foydlanish uchun qayta ishga tushiring."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Bekor qilish"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Bekor qilish"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Boshidan"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Boshidan"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Dinamik tizim bekor qilindi"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Dinamik tizim qayta ishga tushmadi yoki yuklanmadi"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-vi/strings.xml b/packages/DynamicSystemInstallationService/res/values-vi/strings.xml
new file mode 100644
index 0000000..18c051c
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-vi/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Vui lòng nhập mật khẩu và tiếp tục dùng Bản cập nhật hệ thống động"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Hệ thống động đã sẵn sàng. Để bắt đầu sử dụng hệ thống này, hãy khởi động lại thiết bị của bạn."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Đang cài đặt"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Không cài đặt được"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Không xác thực được hình ảnh. Hủy cài đặt."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Thiết bị đang chạy một hệ thống động. Hãy khởi động lại để sử dụng Android phiên bản gốc."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Hủy"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Hủy"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Khởi động lại"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Khởi động lại"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Đã hủy hệ thống động"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Không thể khởi động lại hoặc tải hệ thống động"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-zh-rCN/strings.xml b/packages/DynamicSystemInstallationService/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..b41d4e2
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-zh-rCN/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"请输入您的密码,以便继续使用动态系统更新"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"动态系统已准备就绪。重启您的设备即可开始使用动态系统。"</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"正在安装"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"安装失败"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"图片验证失败。安装将中止。"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"目前正在运行动态系统。需重启才能使用原 Android 版本。"</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"取消"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"舍弃"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"重启"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"重启"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"已舍弃动态系统"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"无法重启或加载动态系统"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-zh-rHK/strings.xml b/packages/DynamicSystemInstallationService/res/values-zh-rHK/strings.xml
new file mode 100644
index 0000000..c830dae
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-zh-rHK/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"請輸入密碼,以使用「動態系統更新」"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"動態系統已可供使用。如要開始使用,請重新啟動裝置。"</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"安裝中"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"無法安裝"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"圖片驗證失敗,系統將取消安裝。"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"系統目前正在執行動態系統。如要使用原本的 Android 版本,請重新啟動裝置。"</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"取消"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"捨棄"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"重新啟動"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"重新啟動"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"已捨棄動態系統"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"無法重新啟動或載入動態系統"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-zh-rTW/strings.xml b/packages/DynamicSystemInstallationService/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..e43c0f2
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-zh-rTW/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"請輸入密碼,以便繼續使用動態系統更新"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"動態系統已可供使用。如要開始使用,請重新啟動裝置。"</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"安裝中"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"無法安裝"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"圖片驗證失敗,系統將取消安裝作業。"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"系統目前正在執行動態系統。如要使用原本的 Android 版本,請重新啟動裝置。"</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"取消"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"捨棄"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"重新啟動"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"重新啟動"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"已捨棄動態系統"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"無法重新啟動或載入動態系統"</string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/res/values-zu/strings.xml b/packages/DynamicSystemInstallationService/res/values-zu/strings.xml
new file mode 100644
index 0000000..4a48444
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/res/values-zu/strings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="keyguard_description" msgid="8582605799129954556">"Sicela ufake iphasiwedi yakho uphinde uqhubekele Ekubuyekezweni Kohlole Okunhlobonhlobo"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Uhlole Okunhlobonhlobo kulungile. Ukuze uqale ukuyisebenzisa, qalisa kabusha idivayisi yakho."</string>
+    <string name="notification_install_inprogress" msgid="7383334330065065017">"Ukufaka kuyaqhubeka"</string>
+    <string name="notification_install_failed" msgid="4066039210317521404">"Ukufaka kwehlulekile"</string>
+    <string name="notification_image_validation_failed" msgid="2720357826403917016">"Ukuqinisekiswa kwesithombe kuhlulekile. Yekisa ukufakwa."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Manje iqalisa uhlole olunhlobonhlobo. Qalisa kabusha ukuze usebenzise inguqulo yangempela ye-Android."</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Khansela"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"Lahla"</string>
+    <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Qala kabusha"</string>
+    <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Qala kabusha"</string>
+    <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Kulahlwe uhlole olunhlobonhlobo"</string>
+    <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Ayikwazi ukuqalisa kabusha noma ukulayisha uhlole olunhlobonhlobo"</string>
+</resources>
diff --git a/packages/PackageInstaller/res/values-ne/strings.xml b/packages/PackageInstaller/res/values-ne/strings.xml
index dffaba5..30f6a21 100644
--- a/packages/PackageInstaller/res/values-ne/strings.xml
+++ b/packages/PackageInstaller/res/values-ne/strings.xml
@@ -22,30 +22,30 @@
     <string name="cancel" msgid="1018267193425558088">"रद्द गर्नुहोस्"</string>
     <string name="installing" msgid="4921993079741206516">"स्थापना गर्दै…"</string>
     <string name="installing_app" msgid="1165095864863849422">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> स्थापना गर्दै…"</string>
-    <string name="install_done" msgid="5987363587661783896">"अनुप्रयोग स्थापना गरियो।"</string>
-    <string name="install_confirm_question" msgid="8176284075816604590">"तपाईं यो अनुप्रयोग स्थापना गर्न चाहनुहुन्छ?"</string>
+    <string name="install_done" msgid="5987363587661783896">"एप स्थापना गरियो।"</string>
+    <string name="install_confirm_question" msgid="8176284075816604590">"तपाईं यो एप स्थापना गर्न चाहनुहुन्छ?"</string>
     <string name="install_confirm_question_update" msgid="7942235418781274635">"तपाईं यो पहिलेदेखि नै विद्यमान अनुप्रयोगको साटो यसको अद्यावधिक संस्करण स्थापना गर्न चाहनुहुन्छ? तपाईंको विद्यमान डेटा गुम्ने छैन।"</string>
     <string name="install_confirm_question_update_system" msgid="4713001702777910263">"तपाईं यो अन्तर्निर्मित अनुप्रयोगको साटो यसको अद्यावधिक संस्करण स्थापना गर्न चाहनुहुन्छ? तपाईंको विद्यमान डेटा गुम्ने छैन।"</string>
-    <string name="install_failed" msgid="5777824004474125469">"अनुप्रयोग स्थापना गरिएन।"</string>
+    <string name="install_failed" msgid="5777824004474125469">"एप स्थापना गरिएन।"</string>
     <string name="install_failed_blocked" msgid="8512284352994752094">"यो प्याकेज स्थापना गर्ने क्रममा अवरोध गरियो।"</string>
-    <string name="install_failed_conflict" msgid="3493184212162521426">"प्याकेजका रूपमा स्थापना नगरिएको अनुप्रयोग विद्यमान प्याकेजसँग मेल खाँदैन।"</string>
-    <string name="install_failed_incompatible" product="tablet" msgid="6019021440094927928">"अनुप्रयोगका रूपमा स्थापना नगरिएको अनुप्रयोग तपाईंको ट्याब्लेटसँग मिल्दो छैन।"</string>
-    <string name="install_failed_incompatible" product="tv" msgid="2890001324362291683">"यो अनुप्रयोग तपाईंको TV सँग मिल्दो छैन।"</string>
-    <string name="install_failed_incompatible" product="default" msgid="7254630419511645826">"अनुप्रयोगका रूपमा स्थापना नगरिएको अनुप्रयोग तपाईंको फोनसँग मिल्दो छैन।"</string>
-    <string name="install_failed_invalid_apk" msgid="8581007676422623930">"प्याकेजका रूपमा स्थापना नगरिएको अनुप्रयोग अमान्य जस्तो देखिन्छ।"</string>
+    <string name="install_failed_conflict" msgid="3493184212162521426">"प्याकेजका रूपमा स्थापना नगरिएको एप विद्यमान प्याकेजसँग मेल खाँदैन।"</string>
+    <string name="install_failed_incompatible" product="tablet" msgid="6019021440094927928">"एपका रूपमा स्थापना नगरिएको एप तपाईंको ट्याब्लेटसँग मिल्दो छैन।"</string>
+    <string name="install_failed_incompatible" product="tv" msgid="2890001324362291683">"यो एप तपाईंको TV सँग मिल्दो छैन।"</string>
+    <string name="install_failed_incompatible" product="default" msgid="7254630419511645826">"एपका रूपमा स्थापना नगरिएको एप तपाईंको फोनसँग मिल्दो छैन।"</string>
+    <string name="install_failed_invalid_apk" msgid="8581007676422623930">"प्याकेजका रूपमा स्थापना नगरिएको एप अमान्य जस्तो देखिन्छ।"</string>
     <string name="install_failed_msg" product="tablet" msgid="6298387264270562442">"तपाईंको ट्याब्लेटमा <xliff:g id="APP_NAME">%1$s</xliff:g> स्थापना गर्न सकिएन।"</string>
     <string name="install_failed_msg" product="tv" msgid="1920009940048975221">"तपाईंको TV मा <xliff:g id="APP_NAME">%1$s</xliff:g> स्थापना गर्न सकिएन।"</string>
     <string name="install_failed_msg" product="default" msgid="6484461562647915707">"तपाईंको फोनमा <xliff:g id="APP_NAME">%1$s</xliff:g> स्थापना गर्न सकिएन।"</string>
     <string name="launch" msgid="3952550563999890101">"खोल्नुहोस्"</string>
     <string name="unknown_apps_admin_dlg_text" msgid="4456572224020176095">"तपाईंका प्रशासकले अज्ञात स्रोतहरूबाट प्राप्त अनुप्रयोगहरूलाई स्थापना गर्ने अनुमति दिनुहुन्न"</string>
-    <string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"यी प्रयोगकर्ता अज्ञात अनुप्रयोगहरू स्थापना गर्न सक्नुहुन्न"</string>
-    <string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"यो प्रयोगकर्तालाई अनुप्रयोगहरू स्थापना गर्ने अनुमति छैन"</string>
+    <string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"यी प्रयोगकर्ता अज्ञात एपहरू स्थापना गर्न सक्नुहुन्न"</string>
+    <string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"यो प्रयोगकर्तालाई एपहरू स्थापना गर्ने अनुमति छैन"</string>
     <string name="ok" msgid="7871959885003339302">"ठिक छ"</string>
     <string name="manage_applications" msgid="5400164782453975580">"एपको प्रबन्ध गर्नु…"</string>
     <string name="out_of_space_dlg_title" msgid="4156690013884649502">"खाली ठाउँ छैन"</string>
     <string name="out_of_space_dlg_text" msgid="8727714096031856231">"<xliff:g id="APP_NAME">%1$s</xliff:g> स्थापना गर्न सकिएन। केही ठाउँ खाली गरेर फेरि प्रयास गर्नुहोस्।"</string>
-    <string name="app_not_found_dlg_title" msgid="5107924008597470285">"अनुप्रयोग फेला परेन"</string>
-    <string name="app_not_found_dlg_text" msgid="5219983779377811611">"स्थापना गरिएका अनुप्रयोगहरूको सूचीमा उक्त अनुप्रयोग भेटिएन।"</string>
+    <string name="app_not_found_dlg_title" msgid="5107924008597470285">"एप फेला परेन"</string>
+    <string name="app_not_found_dlg_text" msgid="5219983779377811611">"स्थापना गरिएका एपहरूको सूचीमा उक्त एप भेटिएन।"</string>
     <string name="user_is_not_allowed_dlg_title" msgid="6915293433252210232">"अनुमति छैन"</string>
     <string name="user_is_not_allowed_dlg_text" msgid="3468447791330611681">"हालका प्रयोगकर्तालाई यो स्थापना रद्द गर्ने कार्य गर्ने अनुमति छैन।"</string>
     <string name="generic_error_dlg_title" msgid="5863195085927067752">"त्रुटि"</string>
@@ -54,7 +54,7 @@
     <string name="uninstall_update_title" msgid="824411791011583031">"अद्यावधिकको स्थापना रद्द गर्नु…"</string>
     <string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> निम्न अनुप्रयोगको अंश हो:"</string>
     <string name="uninstall_application_text" msgid="3816830743706143980">"तपाईं यो अनुप्रयोगको स्थापना रद्द गर्न चाहनुहुन्छ?"</string>
-    <string name="uninstall_application_text_all_users" msgid="575491774380227119">"तपाईं "<b>"सबै"</b>" प्रयोगकर्ताका लागि यो अनुप्रयोगको स्थापना रद्द गर्न चाहनुहुन्छ? यन्त्रका "<b>"सबै"</b>" प्रयोगकर्ताहरूबाट उक्त अनुप्रयोग र यसको डेटा हटाइने छ।"</string>
+    <string name="uninstall_application_text_all_users" msgid="575491774380227119">"तपाईं "<b>"सबै"</b>" प्रयोगकर्ताका लागि यो एपको स्थापना रद्द गर्न चाहनुहुन्छ? यन्त्रका "<b>"सबै"</b>" प्रयोगकर्ताहरूबाट उक्त एप र यसको डेटा हटाइने छ।"</string>
     <string name="uninstall_application_text_user" msgid="498072714173920526">"तपाईं प्रयोगकर्ता <xliff:g id="USERNAME">%1$s</xliff:g> का लागि यो अनुप्रयोगको स्थापना रद्द गर्न चाहनुहुन्छ?"</string>
     <string name="uninstall_update_text" msgid="863648314632448705">"यस अनुप्रयोगलाई फ्याक्ट्रीको संस्करणले बदल्ने हो? सबै डेटा हटाइने छ।"</string>
     <string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"यस अनुप्रयोगलाई फ्याक्ट्रीको संस्करणले बदल्ने हो? सबै डेटा हटाइने छ। यसले यस यन्त्रका कार्य प्रोफाइल भएका लगायत सबै प्रयोगकर्ताहरूमा असर पार्छ।"</string>
@@ -70,22 +70,22 @@
     <string name="uninstall_failed_device_policy_manager" msgid="785293813665540305">"यन्त्रको सक्रिय प्रशासकीय अनुप्रयोगको स्थापना रद्द गर्न मिल्दैन"</string>
     <string name="uninstall_failed_device_policy_manager_of_user" msgid="4813104025494168064">"<xliff:g id="USERNAME">%1$s</xliff:g> को यन्त्रको सक्रिय प्रशासकीय अनुप्रयोगको स्थापना रद्द गर्न मिल्दैन"</string>
     <string name="uninstall_all_blocked_profile_owner" msgid="2009393666026751501">"अन्य प्रयोगकर्ताहरूका लागि यस अनुप्रयोगको स्थापना रद्द गरे पनि केही प्रयोगकर्ता वा प्रोफाइलहरूलाई यसको आवश्यकता पर्दछ"</string>
-    <string name="uninstall_blocked_profile_owner" msgid="6373897407002404848">"यो अनुप्रयोग तपाईंको प्रोफाइलका लागि आवश्यक छ र यसको स्थापना रद्द गर्न सकिँदैन।"</string>
-    <string name="uninstall_blocked_device_owner" msgid="6724602931761073901">"यो अनुप्रयोग तपाईंको यन्त्रका प्रशासकका लागि आवश्यक छ र यसको स्थापना रद्द गर्न सकिँदैन।"</string>
+    <string name="uninstall_blocked_profile_owner" msgid="6373897407002404848">"यो एप तपाईंको प्रोफाइलका लागि आवश्यक छ र यसको स्थापना रद्द गर्न सकिँदैन।"</string>
+    <string name="uninstall_blocked_device_owner" msgid="6724602931761073901">"यो एप तपाईंको यन्त्रका प्रशासकका लागि आवश्यक छ र यसको स्थापना रद्द गर्न सकिँदैन।"</string>
     <string name="manage_device_administrators" msgid="3092696419363842816">"यन्त्रका व्यवस्थापकीय अनुप्रयोगको व्यवस्थापन गर्नु…"</string>
     <string name="manage_users" msgid="1243995386982560813">"प्रयोगकर्ताहरूको व्यवस्थापन गर्नुहोस्"</string>
     <string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> को स्थापना रद्द गर्न सकिएन।"</string>
     <string name="Parse_error_dlg_text" msgid="1661404001063076789">"प्याकेजलाई पार्स गर्ने क्रममा समस्या भयो।"</string>
     <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
     <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear मा स्थापना/स्थापना रद्द गर्ने कारबाहीहरू समर्थित छैनन्।"</string>
-    <string name="message_staging" msgid="8032722385658438567">"अनुप्रयोग स्थापना गर्न तयारी गर्दै…"</string>
+    <string name="message_staging" msgid="8032722385658438567">"एप स्थापना गर्न तयारी गर्दै…"</string>
     <string name="app_name_unknown" msgid="6881210203354323926">"अज्ञात"</string>
-    <string name="untrusted_external_source_warning" product="tablet" msgid="6539403649459942547">"तपाईंको सुरक्षाका लागि, तपाईंको ट्याब्लेटलाई यो स्रोतबाट प्राप्त हुने अज्ञात अनुप्रयोगहरू स्थापना गर्ने अनुमति छैन।"</string>
-    <string name="untrusted_external_source_warning" product="tv" msgid="1206648674551321364">"तपाईंको सुरक्षाका लागि, तपाईंको TV लाई यस स्रोतबाट प्राप्त हुने अज्ञात अनुप्रयोगहरू स्थापना गर्ने अनुमति छैन।"</string>
-    <string name="untrusted_external_source_warning" product="default" msgid="7279739265754475165">"तपाईंको सुरक्षाका लागि, तपाईंको फोनलाई यो स्रोतबाट प्राप्त हुने अज्ञात अनुप्रयोगहरू स्थापना गर्ने अनुमति छैन।"</string>
-    <string name="anonymous_source_warning" product="default" msgid="2784902545920822500">"तपाईंको फोन तथा व्यक्तिगत डेटा अज्ञात अनुप्रयोगहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो अनुप्रयोग स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको फोनमा हुन सक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुने कुरामा सहमत हुनुहुन्छ।"</string>
-    <string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"तपाईंको ट्याब्लेट तथा व्यक्तिगत डेटा अज्ञात अनुप्रयोगहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो अनुप्रयोग स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको ट्याब्लेटमा हुन सक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुने कुरामा सहमत हुनुहुन्छ।"</string>
-    <string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"तपाईंको TV तथा व्यक्तिगत डेटा अज्ञात अनुप्रयोगहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो अनुप्रयोग स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको TV मा हुन सक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुने कुरामा सहमत हुनुहुन्छ।"</string>
+    <string name="untrusted_external_source_warning" product="tablet" msgid="6539403649459942547">"तपाईंको सुरक्षाका लागि, तपाईंको ट्याब्लेटलाई यो स्रोतबाट प्राप्त हुने अज्ञात एपहरू स्थापना गर्ने अनुमति छैन।"</string>
+    <string name="untrusted_external_source_warning" product="tv" msgid="1206648674551321364">"तपाईंको सुरक्षाका लागि, तपाईंको TV लाई यस स्रोतबाट प्राप्त हुने अज्ञात एपहरू स्थापना गर्ने अनुमति छैन।"</string>
+    <string name="untrusted_external_source_warning" product="default" msgid="7279739265754475165">"तपाईंको सुरक्षाका लागि, तपाईंको फोनलाई यो स्रोतबाट प्राप्त हुने अज्ञात एपहरू स्थापना गर्ने अनुमति छैन।"</string>
+    <string name="anonymous_source_warning" product="default" msgid="2784902545920822500">"तपाईंको फोन तथा व्यक्तिगत डेटा अज्ञात एपहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो एप स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको फोनमा हुन सक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुने कुरामा सहमत हुनुहुन्छ।"</string>
+    <string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"तपाईंको ट्याब्लेट तथा व्यक्तिगत डेटा अज्ञात एपहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो एप स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको ट्याब्लेटमा हुन सक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुने कुरामा सहमत हुनुहुन्छ।"</string>
+    <string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"तपाईंको TV तथा व्यक्तिगत डेटा अज्ञात एपहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो एप स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको TV मा हुन सक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुने कुरामा सहमत हुनुहुन्छ।"</string>
     <string name="anonymous_source_continue" msgid="4375745439457209366">"जारी राख्नुहोस्"</string>
     <string name="external_sources_settings" msgid="4046964413071713807">"सेटिङहरू"</string>
     <string name="wear_app_channel" msgid="1960809674709107850">"वेयर एपहरूको स्थापना/स्थापना रद्द गर्दै"</string>
diff --git a/packages/PackageInstaller/res/values-or/strings.xml b/packages/PackageInstaller/res/values-or/strings.xml
index 8c89ce9..b9908d2 100644
--- a/packages/PackageInstaller/res/values-or/strings.xml
+++ b/packages/PackageInstaller/res/values-or/strings.xml
@@ -87,7 +87,7 @@
     <string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"ଅଜଣା ଆପ୍‌ ଦ୍ୱାରା ଆପଣଙ୍କ ଟାବଲେଟ୍‍ ଏବଂ ବ୍ୟକ୍ତିଗତ ଡାଟାକୁ ନଷ୍ଟ କରାଯାଇପାରିବାର ସମ୍ଭାବନା ବହୁତ ଅଧିକ। ଏହି ଆପ୍‌କୁ ଇନଷ୍ଟଲ୍‌ କରିବାର ଅର୍ଥ ହେଉଛି ଆପଣଙ୍କ ଟାବ୍‌ଲେଟ୍‌ରେ ଘଟିବା କୌଣସି ପ୍ରକାର କ୍ଷତି କିମ୍ବା ସେଗୁଡ଼ିକର ବ୍ୟବହାରରୁ ହେବା କୌଣସି ପ୍ରକାର ଡାଟାର ହାନୀ ପାଇଁ ଆପଣ ଦାୟୀ ରହିବାକୁ ରାଜି ହୁଅନ୍ତି।"</string>
     <string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"ଅଜଣା ଆପ୍‌ ଦ୍ୱାରା ଆପଣଙ୍କ ଟିଭି ଏବଂ ବ୍ୟକ୍ତିଗତ ଡାଟାକୁ ନଷ୍ଟ କରାଯାଇପାରିବାର ସମ୍ଭାବନା ବହୁତ ଅଧିକ। ଏହି ଆପ୍‌କୁ ଇନଷ୍ଟଲ୍‌ କରିବାର ଅର୍ଥ ହେଉଛି ଆପଣଙ୍କ ଟିଭିରେ ଘଟିବା କୌଣସି ପ୍ରକାର କ୍ଷତି କିମ୍ବା ସେଗୁଡ଼ିକର ବ୍ୟବହାରରୁ ହେବା କୌଣସି ପ୍ରକାର ଡାଟାର ହାନୀ ପାଇଁ ଆପଣ ଦାୟୀ ରହିବାକୁ ରାଜି ହୁଅନ୍ତି।"</string>
     <string name="anonymous_source_continue" msgid="4375745439457209366">"ଜାରି ରଖନ୍ତୁ"</string>
-    <string name="external_sources_settings" msgid="4046964413071713807">"ସେଟିଙ୍ଗ"</string>
+    <string name="external_sources_settings" msgid="4046964413071713807">"ସେଟିଂସ୍"</string>
     <string name="wear_app_channel" msgid="1960809674709107850">"ୱିଅର୍‍ ଆପ୍‍ ଇନଷ୍ଟଲ୍‌/ଅନଇନଷ୍ଟଲ୍‍ କରାଯାଉଛି"</string>
     <string name="app_installed_notification_channel_description" msgid="2695385797601574123">"ଆପ୍ ଇନ୍‌ଷ୍ଟଲ୍‌ କରାଯାଇଥିବା ବିଜ୍ଞପ୍ତି"</string>
     <string name="notification_installation_success_message" msgid="6450467996056038442">"ସଫଳତାପୂର୍ବକ ଇନ୍‌ଷ୍ଟଲ୍‌ କରାଗଲା"</string>
diff --git a/packages/PrintSpooler/AndroidManifest.xml b/packages/PrintSpooler/AndroidManifest.xml
index e47aa05..54b4492 100644
--- a/packages/PrintSpooler/AndroidManifest.xml
+++ b/packages/PrintSpooler/AndroidManifest.xml
@@ -36,16 +36,11 @@
     <uses-permission android:name="android.permission.START_PRINT_SERVICE_CONFIG_ACTIVITY"/>
     <uses-permission android:name="android.permission.READ_PRINT_SERVICES" />
     <uses-permission android:name="android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS" />
+    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
 
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 
-    <queries>
-        <intent>
-            <action android:name="android.printservice.PrintService" />
-        </intent>
-    </queries>
-
     <application
         android:allowClearUserData="true"
         android:label="@string/app_label"
diff --git a/packages/PrintSpooler/res/values-be/strings.xml b/packages/PrintSpooler/res/values-be/strings.xml
index c04756c..15d3c78 100644
--- a/packages/PrintSpooler/res/values-be/strings.xml
+++ b/packages/PrintSpooler/res/values-be/strings.xml
@@ -49,7 +49,7 @@
     <string name="print_options_collapsed" msgid="7455930445670414332">"Параметры друку згорнуты"</string>
     <string name="search" msgid="5421724265322228497">"Пошук"</string>
     <string name="all_printers_label" msgid="3178848870161526399">"Усе прынтары"</string>
-    <string name="add_print_service_label" msgid="5356702546188981940">"Дадаць службу"</string>
+    <string name="add_print_service_label" msgid="5356702546188981940">"Дадаць сэрвіс"</string>
     <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Паказваецца поле пошуку"</string>
     <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Поле пошуку схавана"</string>
     <string name="print_add_printer" msgid="1088656468360653455">"Дадаць прынтар"</string>
@@ -66,9 +66,9 @@
     <string name="notification_channel_progress" msgid="872788690775721436">"Заданні друку, якія выконваюцца"</string>
     <string name="notification_channel_failure" msgid="9042250774797916414">"Заданні друку са збоямі"</string>
     <string name="could_not_create_file" msgid="3425025039427448443">"Не ўдалося стварыць файл"</string>
-    <string name="print_services_disabled_toast" msgid="9089060734685174685">"Некаторыя службы друку адключаны"</string>
+    <string name="print_services_disabled_toast" msgid="9089060734685174685">"Некаторыя сэрвісы друку адключаны"</string>
     <string name="print_searching_for_printers" msgid="6550424555079932867">"Пошук прынтараў"</string>
-    <string name="print_no_print_services" msgid="8561247706423327966">"Службы друку не ўключаны"</string>
+    <string name="print_no_print_services" msgid="8561247706423327966">"Сэрвісы друку не ўключаны"</string>
     <string name="print_no_printers" msgid="4869403323900054866">"Прынтараў не знойдзена"</string>
     <string name="cannot_add_printer" msgid="7840348733668023106">"Немагчыма дадаць прынтары"</string>
     <string name="select_to_add_printers" msgid="3800709038689830974">"Выберыце, каб дадаць прынтар"</string>
diff --git a/packages/PrintSpooler/res/values-is/strings.xml b/packages/PrintSpooler/res/values-is/strings.xml
index eb7f01d..a75cbfe 100644
--- a/packages/PrintSpooler/res/values-is/strings.xml
+++ b/packages/PrintSpooler/res/values-is/strings.xml
@@ -49,7 +49,7 @@
     <string name="print_options_collapsed" msgid="7455930445670414332">"Prentvalkostir minnkaðir"</string>
     <string name="search" msgid="5421724265322228497">"Leita"</string>
     <string name="all_printers_label" msgid="3178848870161526399">"Allir prentarar"</string>
-    <string name="add_print_service_label" msgid="5356702546188981940">"Bæta við þjónustu"</string>
+    <string name="add_print_service_label" msgid="5356702546188981940">"Bæta prentara við"</string>
     <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Leitarreitur sýndur"</string>
     <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Leitarreitur falinn"</string>
     <string name="print_add_printer" msgid="1088656468360653455">"Bæta við prentara"</string>
diff --git a/packages/PrintSpooler/res/values-ky/strings.xml b/packages/PrintSpooler/res/values-ky/strings.xml
index a7150d5..2f57233 100644
--- a/packages/PrintSpooler/res/values-ky/strings.xml
+++ b/packages/PrintSpooler/res/values-ky/strings.xml
@@ -84,7 +84,7 @@
     <string name="failed_notification_title_template" msgid="2256217208186530973">"Принтерде ката кетти: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
     <string name="blocked_notification_title_template" msgid="1175435827331588646">"Принтер бөгөттөдү: <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
     <string name="cancel" msgid="4373674107267141885">"Айнуу"</string>
-    <string name="restart" msgid="2472034227037808749">"Кайра баштоо"</string>
+    <string name="restart" msgid="2472034227037808749">"Өчүрүп күйгүзүү"</string>
     <string name="no_connection_to_printer" msgid="2159246915977282728">"Принтер менен байланыш жок"</string>
     <string name="reason_unknown" msgid="5507940196503246139">"белгисиз"</string>
     <string name="print_service_security_warning_title" msgid="2160752291246775320">"<xliff:g id="SERVICE">%1$s</xliff:g> колдоносузбу?"</string>
diff --git a/packages/PrintSpooler/res/values-ne/strings.xml b/packages/PrintSpooler/res/values-ne/strings.xml
index 154364d..d0b7a5e4 100644
--- a/packages/PrintSpooler/res/values-ne/strings.xml
+++ b/packages/PrintSpooler/res/values-ne/strings.xml
@@ -33,11 +33,11 @@
     <string name="pages_range_example" msgid="8558694453556945172">"उदाहरण १-५,८,११-१३"</string>
     <string name="print_preview" msgid="8010217796057763343">"प्रिन्ट पूर्वावलोकन"</string>
     <string name="install_for_print_preview" msgid="6366303997385509332">"पूर्वावलोकनको लागि PDF भ्यूअर स्थापना गर्नुहोस्"</string>
-    <string name="printing_app_crashed" msgid="854477616686566398">"प्रिन्टिङ अनुप्रयोग क्र्यास भयो"</string>
+    <string name="printing_app_crashed" msgid="854477616686566398">"प्रिन्टिङ एप क्र्यास भयो"</string>
     <string name="generating_print_job" msgid="3119608742651698916">"प्रिन्ट कार्य निर्माण गरिँदै"</string>
     <string name="save_as_pdf" msgid="5718454119847596853">"PDF को रूपमा सुरक्षित गर्नुहोस्"</string>
     <string name="all_printers" msgid="5018829726861876202">"सबै प्रिन्टरहरू..."</string>
-    <string name="print_dialog" msgid="32628687461331979">"सम्वाद छाप्नुहोस्"</string>
+    <string name="print_dialog" msgid="32628687461331979">"सम्वाद प्रिन्ट गर्नुहोस्"</string>
     <string name="current_page_template" msgid="5145005201131935302">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
     <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="PAGE_COUNT">%2$d</xliff:g> को <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> पृष्ठ"</string>
     <string name="summary_template" msgid="8899734908625669193">"सारांश, प्रतिहरू <xliff:g id="COPIES">%1$s</xliff:g> , कागज आकार <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
diff --git a/packages/PrintSpooler/res/values-or/strings.xml b/packages/PrintSpooler/res/values-or/strings.xml
index f385391..86c5351 100644
--- a/packages/PrintSpooler/res/values-or/strings.xml
+++ b/packages/PrintSpooler/res/values-or/strings.xml
@@ -49,10 +49,10 @@
     <string name="print_options_collapsed" msgid="7455930445670414332">"ପ୍ରିଣ୍ଟ ବିକଳ୍ପକୁ ଛୋଟ କରାଯାଇଛି"</string>
     <string name="search" msgid="5421724265322228497">"ସର୍ଚ୍ଚ କରନ୍ତୁ"</string>
     <string name="all_printers_label" msgid="3178848870161526399">"ସମସ୍ତ ପ୍ରିଣ୍ଟର୍‌"</string>
-    <string name="add_print_service_label" msgid="5356702546188981940">"ସେବା ଯୋଡ଼ନ୍ତୁ"</string>
+    <string name="add_print_service_label" msgid="5356702546188981940">"ସେବା ଯୋଗ କରନ୍ତୁ"</string>
     <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"ସର୍ଚ୍ଚ ବକ୍ସ ଦେଖାଯାଇଛି"</string>
     <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"ସର୍ଚ୍ଚ ବକ୍ସ ଲୁଚି ରହିଛି"</string>
-    <string name="print_add_printer" msgid="1088656468360653455">"ପ୍ରିଣ୍ଟର୍‌ ଯୋଡ଼ନ୍ତୁ"</string>
+    <string name="print_add_printer" msgid="1088656468360653455">"ପ୍ରିଣ୍ଟର୍‌ ଯୋଗ କରନ୍ତୁ"</string>
     <string name="print_select_printer" msgid="7388760939873368698">"ପ୍ରିଣ୍ଟର୍‍ ଚୟନ କରନ୍ତୁ"</string>
     <string name="print_forget_printer" msgid="5035287497291910766">"ପ୍ରିଣ୍ଟର୍‍ ଭୁଲିଯାଆନ୍ତୁ"</string>
     <plurals name="print_search_result_count_utterance" formatted="false" msgid="6997663738361080868">
diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-ar/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-ar/strings.xml
index e26af95..42cf761 100644
--- a/packages/SettingsLib/RestrictedLockUtils/res/values-ar/strings.xml
+++ b/packages/SettingsLib/RestrictedLockUtils/res/values-ar/strings.xml
@@ -17,6 +17,6 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="enabled_by_admin" msgid="6630472777476410137">"فعَّل المشرف هذا الإعداد."</string>
+    <string name="enabled_by_admin" msgid="6630472777476410137">"يفعِّل المشرف هذا الإعداد."</string>
     <string name="disabled_by_admin" msgid="4023569940620832713">"أوقف المشرف هذا الإعداد."</string>
 </resources>
diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-es/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-es/strings.xml
index 4a6f73f..351f16c 100644
--- a/packages/SettingsLib/RestrictedLockUtils/res/values-es/strings.xml
+++ b/packages/SettingsLib/RestrictedLockUtils/res/values-es/strings.xml
@@ -17,6 +17,6 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="enabled_by_admin" msgid="6630472777476410137">"Habilitada por el administrador"</string>
-    <string name="disabled_by_admin" msgid="4023569940620832713">"Inhabilitada por el administrador"</string>
+    <string name="enabled_by_admin" msgid="6630472777476410137">"Habilitado por el administrador"</string>
+    <string name="disabled_by_admin" msgid="4023569940620832713">"Inhabilitado por el administrador"</string>
 </resources>
diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-ja/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-ja/strings.xml
index 7fcdbdf..490efd0 100644
--- a/packages/SettingsLib/RestrictedLockUtils/res/values-ja/strings.xml
+++ b/packages/SettingsLib/RestrictedLockUtils/res/values-ja/strings.xml
@@ -17,6 +17,6 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="enabled_by_admin" msgid="6630472777476410137">"管理者が有効にしました"</string>
-    <string name="disabled_by_admin" msgid="4023569940620832713">"管理者が無効にしました"</string>
+    <string name="enabled_by_admin" msgid="6630472777476410137">"管理者によって有効にされています"</string>
+    <string name="disabled_by_admin" msgid="4023569940620832713">"管理者により無効にされています"</string>
 </resources>
diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-mr/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-mr/strings.xml
index d4bac70..9c225f9 100644
--- a/packages/SettingsLib/RestrictedLockUtils/res/values-mr/strings.xml
+++ b/packages/SettingsLib/RestrictedLockUtils/res/values-mr/strings.xml
@@ -17,6 +17,6 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="enabled_by_admin" msgid="6630472777476410137">"प्रशासकाने सुरू केलेले"</string>
+    <string name="enabled_by_admin" msgid="6630472777476410137">"अ‍ॅडमिनने सुरू केलेले"</string>
     <string name="disabled_by_admin" msgid="4023569940620832713">"प्रशासकाने बंद केलेले"</string>
 </resources>
diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-pt-rPT/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-pt-rPT/strings.xml
index 5cf0b29..e57d1cc 100644
--- a/packages/SettingsLib/RestrictedLockUtils/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/RestrictedLockUtils/res/values-pt-rPT/strings.xml
@@ -17,6 +17,6 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="enabled_by_admin" msgid="6630472777476410137">"Ativada pelo administrador"</string>
+    <string name="enabled_by_admin" msgid="6630472777476410137">"Ativado pelo administrador"</string>
     <string name="disabled_by_admin" msgid="4023569940620832713">"Desativada pelo administrador"</string>
 </resources>
diff --git a/packages/SettingsLib/SearchWidget/res/values-fr-rCA/strings.xml b/packages/SettingsLib/SearchWidget/res/values-fr-rCA/strings.xml
index 6b2364d..9977138 100644
--- a/packages/SettingsLib/SearchWidget/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-fr-rCA/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="search_menu" msgid="1914043873178389845">"Paramètres de recherche"</string>
+    <string name="search_menu" msgid="1914043873178389845">"Rechercher dans les paramètres"</string>
 </resources>
diff --git a/packages/SettingsLib/SearchWidget/res/values-hi/strings.xml b/packages/SettingsLib/SearchWidget/res/values-hi/strings.xml
index 975c320..88c3831 100644
--- a/packages/SettingsLib/SearchWidget/res/values-hi/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-hi/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="search_menu" msgid="1914043873178389845">"खोज की सेटिंग"</string>
+    <string name="search_menu" msgid="1914043873178389845">"सेटिंग में खोजें"</string>
 </resources>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index 4f1024b..51eae81 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -511,7 +511,7 @@
     <string name="alarm_template" msgid="3346777418136233330">"الساعة <xliff:g id="WHEN">%1$s</xliff:g>"</string>
     <string name="alarm_template_far" msgid="6382760514842998629">"يوم <xliff:g id="WHEN">%1$s</xliff:g>"</string>
     <string name="zen_mode_duration_settings_title" msgid="1553451650289651489">"المدة"</string>
-    <string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"الطلب في كل مرة"</string>
+    <string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"السؤال في كل مرة"</string>
     <string name="zen_mode_forever" msgid="3339224497605461291">"إلى أن يتم إيقاف الوضع"</string>
     <string name="time_unit_just_now" msgid="3006134267292728099">"للتو"</string>
     <string name="media_transfer_this_device_name" msgid="2716555073132169240">"مكبر صوت الهاتف"</string>
diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml
index bf08319..587151f 100644
--- a/packages/SettingsLib/res/values-as/strings.xml
+++ b/packages/SettingsLib/res/values-as/strings.xml
@@ -436,14 +436,10 @@
     <string name="power_discharge_by_only" msgid="92545648425937000">"বেটাৰি আনুমানিকভাৱে <xliff:g id="TIME">%1$s</xliff:g> লৈকে চলিব"</string>
     <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> পৰ্যন্ত"</string>
     <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"<xliff:g id="TIME">%1$s</xliff:g>ৰ ভিতৰত বেটাৰী শেষ হ\'ব পাৰে"</string>
-    <!-- no translation found for power_remaining_less_than_duration_only (8956656616031395152) -->
-    <skip />
-    <!-- no translation found for power_remaining_less_than_duration (318215464914990578) -->
-    <skip />
-    <!-- no translation found for power_remaining_more_than_subtext (446388082266121894) -->
-    <skip />
-    <!-- no translation found for power_remaining_only_more_than_subtext (4873750633368888062) -->
-    <skip />
+    <string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"<xliff:g id="THRESHOLD">%1$s</xliff:g>তকৈ কম বাকী আছে"</string>
+    <string name="power_remaining_less_than_duration" msgid="318215464914990578">"<xliff:g id="THRESHOLD">%1$s</xliff:g>তকৈ কম বাকী আছে (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_more_than_subtext" msgid="446388082266121894">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>তকৈ বেছি বাকী আছে (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_only_more_than_subtext" msgid="4873750633368888062">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>তকৈ বেছি বাকী আছে"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"ফ’নটো সোনকালে বন্ধ হৈ যাব পাৰে"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"টেবলেটটো সোনকালে বন্ধ হৈ যাব পাৰে"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"ডিভাইচটো সোনকালে বন্ধ হৈ যাব পাৰে"</string>
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index decb3da..bdc9338 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -436,14 +436,10 @@
     <string name="power_discharge_by_only" msgid="92545648425937000">"আনুমানিক <xliff:g id="TIME">%1$s</xliff:g> পর্যন্ত চলবে"</string>
     <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> পর্যন্ত"</string>
     <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"ব্যাটারির চার্জ <xliff:g id="TIME">%1$s</xliff:g>-এ শেষ হয়ে যেতে পারে"</string>
-    <!-- no translation found for power_remaining_less_than_duration_only (8956656616031395152) -->
-    <skip />
-    <!-- no translation found for power_remaining_less_than_duration (318215464914990578) -->
-    <skip />
-    <!-- no translation found for power_remaining_more_than_subtext (446388082266121894) -->
-    <skip />
-    <!-- no translation found for power_remaining_only_more_than_subtext (4873750633368888062) -->
-    <skip />
+    <string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"<xliff:g id="THRESHOLD">%1$s</xliff:g>-এরও কম সময় চলবে"</string>
+    <string name="power_remaining_less_than_duration" msgid="318215464914990578">"<xliff:g id="THRESHOLD">%1$s</xliff:g>-এরও কম সময় চলবে (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_more_than_subtext" msgid="446388082266121894">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>-এরও বেশি সময় চলবে (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_only_more_than_subtext" msgid="4873750633368888062">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>-এরও বেশি সময় চলবে"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"ফোন শীঘ্রই বন্ধ হয়ে যেতে পারে"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"ট্যাবলেটটি শীঘ্রই বন্ধ হয়ে যেতে পারে"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"ডিভাইসটি শীঘ্রই বন্ধ হয়ে যেতে পারে"</string>
diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml
index 7838a0c..59c5b1d 100644
--- a/packages/SettingsLib/res/values-de/strings.xml
+++ b/packages/SettingsLib/res/values-de/strings.xml
@@ -436,14 +436,10 @@
     <string name="power_discharge_by_only" msgid="92545648425937000">"Sollte etwa bis <xliff:g id="TIME">%1$s</xliff:g> reichen"</string>
     <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Bis <xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Der Akku ist voraussichtlich um <xliff:g id="TIME">%1$s</xliff:g> leer"</string>
-    <!-- no translation found for power_remaining_less_than_duration_only (8956656616031395152) -->
-    <skip />
-    <!-- no translation found for power_remaining_less_than_duration (318215464914990578) -->
-    <skip />
-    <!-- no translation found for power_remaining_more_than_subtext (446388082266121894) -->
-    <skip />
-    <!-- no translation found for power_remaining_only_more_than_subtext (4873750633368888062) -->
-    <skip />
+    <string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"Weniger als <xliff:g id="THRESHOLD">%1$s</xliff:g> verbleibend"</string>
+    <string name="power_remaining_less_than_duration" msgid="318215464914990578">"Weniger als <xliff:g id="THRESHOLD">%1$s</xliff:g> verbleibend (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_more_than_subtext" msgid="446388082266121894">"Mehr als <xliff:g id="TIME_REMAINING">%1$s</xliff:g> verbleibend (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_only_more_than_subtext" msgid="4873750633368888062">"Mehr als <xliff:g id="TIME_REMAINING">%1$s</xliff:g> verbleibend"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"Smartphone wird eventuell bald ausgeschaltet"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"Tablet wird eventuell bald ausgeschaltet"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"Gerät wird eventuell bald ausgeschaltet"</string>
diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml
index aece31f..5e60928 100644
--- a/packages/SettingsLib/res/values-kn/strings.xml
+++ b/packages/SettingsLib/res/values-kn/strings.xml
@@ -436,14 +436,10 @@
     <string name="power_discharge_by_only" msgid="92545648425937000">"<xliff:g id="TIME">%1$s</xliff:g> ಸಮಯದವರೆಗೆ ಫೋನ್‌ ರನ್‌ ಆಗಬೇಕು"</string>
     <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> ರವರೆಗೆ"</string>
     <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"<xliff:g id="TIME">%1$s</xliff:g> ಗಳಲ್ಲಿ ಬ್ಯಾಟರಿ ಮುಕ್ತಾಯವಾಗಬಹುದು"</string>
-    <!-- no translation found for power_remaining_less_than_duration_only (8956656616031395152) -->
-    <skip />
-    <!-- no translation found for power_remaining_less_than_duration (318215464914990578) -->
-    <skip />
-    <!-- no translation found for power_remaining_more_than_subtext (446388082266121894) -->
-    <skip />
-    <!-- no translation found for power_remaining_only_more_than_subtext (4873750633368888062) -->
-    <skip />
+    <string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"<xliff:g id="THRESHOLD">%1$s</xliff:g> ಕ್ಕಿಂತ ಕಡಿಮೆ ಸಮಯ ಉಳಿದಿದೆ"</string>
+    <string name="power_remaining_less_than_duration" msgid="318215464914990578">"<xliff:g id="THRESHOLD">%1$s</xliff:g> ಕ್ಕಿಂತ ಕಡಿಮೆ ಸಮಯ ಉಳಿದಿದೆ (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_more_than_subtext" msgid="446388082266121894">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ಕ್ಕಿಂತ ಹೆಚ್ಚು ಸಮಯ ಉಳಿದಿದೆ (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_only_more_than_subtext" msgid="4873750633368888062">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ಕ್ಕಿಂತ ಹೆಚ್ಚು ಸಮಯ ಉಳಿದಿದೆ"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"ಫೋನ್ ಶೀಘ್ರದಲ್ಲೇ ಶಟ್ ಡೌನ್ ಆಗಬಹುದು"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"ಟ್ಯಾಬ್ಲೆಟ್‌‌ ಶೀಘ್ರದಲ್ಲೇ ಶಟ್ ಡೌನ್ ಆಗಬಹುದು"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"ಸಾಧನವು ಶೀಘ್ರದಲ್ಲೇ ಶಟ್ ಡೌನ್ ಆಗಬಹುದು"</string>
diff --git a/packages/SettingsLib/res/values-mk/arrays.xml b/packages/SettingsLib/res/values-mk/arrays.xml
index 90956ad..85ca0cb 100644
--- a/packages/SettingsLib/res/values-mk/arrays.xml
+++ b/packages/SettingsLib/res/values-mk/arrays.xml
@@ -26,7 +26,7 @@
     <item msgid="6050951078202663628">"Се поврзува..."</item>
     <item msgid="8356618438494652335">"Автентицирање..."</item>
     <item msgid="2837871868181677206">"Добивање ИП адреса..."</item>
-    <item msgid="4613015005934755724">"Поврзана"</item>
+    <item msgid="4613015005934755724">"Поврзано"</item>
     <item msgid="3763530049995655072">"Суспендирана"</item>
     <item msgid="7852381437933824454">"Се исклучува..."</item>
     <item msgid="5046795712175415059">"Исклучено"</item>
diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml
index f61c44c..156d941 100644
--- a/packages/SettingsLib/res/values-ml/strings.xml
+++ b/packages/SettingsLib/res/values-ml/strings.xml
@@ -436,14 +436,10 @@
     <string name="power_discharge_by_only" msgid="92545648425937000">"ഏകദേശം <xliff:g id="TIME">%1$s</xliff:g> വരെ നീണ്ടുനിൽക്കേണ്ടതാണ്"</string>
     <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> വരെ"</string>
     <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"<xliff:g id="TIME">%1$s</xliff:g> ആവുമ്പോഴേക്ക് ബാറ്ററി തീർന്നേക്കാം"</string>
-    <!-- no translation found for power_remaining_less_than_duration_only (8956656616031395152) -->
-    <skip />
-    <!-- no translation found for power_remaining_less_than_duration (318215464914990578) -->
-    <skip />
-    <!-- no translation found for power_remaining_more_than_subtext (446388082266121894) -->
-    <skip />
-    <!-- no translation found for power_remaining_only_more_than_subtext (4873750633368888062) -->
-    <skip />
+    <string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"<xliff:g id="THRESHOLD">%1$s</xliff:g> എന്നതിൽ കുറവ് സമയം ശേഷിക്കുന്നു"</string>
+    <string name="power_remaining_less_than_duration" msgid="318215464914990578">"<xliff:g id="THRESHOLD">%1$s</xliff:g> എന്നതിൽ കുറവ് സമയം ശേഷിക്കുന്നു (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_more_than_subtext" msgid="446388082266121894">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>-ൽ കൂടുതൽ ശേഷിക്കുന്നു (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_only_more_than_subtext" msgid="4873750633368888062">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>-ൽ കൂടുതൽ ശേഷിക്കുന്നു"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"ഫോൺ ഉടൻ ഷട്ട് ഡൗൺ ആയേക്കാം"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"ടാബ്‌ലെറ്റ് ഉടൻ ഷട്ട് ഡൗൺ ആയേക്കാം"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"ഉപകരണം ഉടൻ ഷട്ട് ഡൗൺ ആയേക്കാം"</string>
diff --git a/packages/SettingsLib/res/values-mn/arrays.xml b/packages/SettingsLib/res/values-mn/arrays.xml
index ce868af..c5e87bc 100644
--- a/packages/SettingsLib/res/values-mn/arrays.xml
+++ b/packages/SettingsLib/res/values-mn/arrays.xml
@@ -40,7 +40,7 @@
     <item msgid="8339720953594087771">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> руу холбогдож байна…"</item>
     <item msgid="3028983857109369308">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>-тай гэрчилж байна…"</item>
     <item msgid="4287401332778341890">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>-с IP хаягийг авч байна…"</item>
-    <item msgid="1043944043827424501">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> руу холбогдсон"</item>
+    <item msgid="1043944043827424501">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>-д холбогдсон"</item>
     <item msgid="7445993821842009653">"Түр хаасан"</item>
     <item msgid="1175040558087735707">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>-с салгагдаж байна…"</item>
     <item msgid="699832486578171722">"Салгагдсан"</item>
diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml
index b382f75..b2e4c0a 100644
--- a/packages/SettingsLib/res/values-mr/strings.xml
+++ b/packages/SettingsLib/res/values-mr/strings.xml
@@ -436,14 +436,10 @@
     <string name="power_discharge_by_only" msgid="92545648425937000">"सुमारे <xliff:g id="TIME">%1$s</xliff:g> पर्यंत टिकावी"</string>
     <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> पर्यंत"</string>
     <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"<xliff:g id="TIME">%1$s</xliff:g> वाजेपर्यंत बॅटरी संपू शकते"</string>
-    <!-- no translation found for power_remaining_less_than_duration_only (8956656616031395152) -->
-    <skip />
-    <!-- no translation found for power_remaining_less_than_duration (318215464914990578) -->
-    <skip />
-    <!-- no translation found for power_remaining_more_than_subtext (446388082266121894) -->
-    <skip />
-    <!-- no translation found for power_remaining_only_more_than_subtext (4873750633368888062) -->
-    <skip />
+    <string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"<xliff:g id="THRESHOLD">%1$s</xliff:g> पेक्षा कमी शिल्लक आहे"</string>
+    <string name="power_remaining_less_than_duration" msgid="318215464914990578">"<xliff:g id="THRESHOLD">%1$s</xliff:g> पेक्षा कमी (<xliff:g id="LEVEL">%2$s</xliff:g>) शिल्लक आहे"</string>
+    <string name="power_remaining_more_than_subtext" msgid="446388082266121894">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> पेक्षा जास्त (<xliff:g id="LEVEL">%2$s</xliff:g>) शिल्लक आहे"</string>
+    <string name="power_remaining_only_more_than_subtext" msgid="4873750633368888062">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> पेक्षा जास्त शिल्लक आहे"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"फोन लवकरच बंद होऊ शकतो"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"टॅबलेट लवकरच बंद होऊ शकतो"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"डिव्हाइस लवकरच बंद होऊ शकते"</string>
diff --git a/packages/SettingsLib/res/values-ne/arrays.xml b/packages/SettingsLib/res/values-ne/arrays.xml
index 5d79e80..2895a02 100644
--- a/packages/SettingsLib/res/values-ne/arrays.xml
+++ b/packages/SettingsLib/res/values-ne/arrays.xml
@@ -40,7 +40,7 @@
     <item msgid="8339720953594087771">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>सँग जडान हुँदै..."</item>
     <item msgid="3028983857109369308">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>को साथ प्रमाणित गर्दै…"</item>
     <item msgid="4287401332778341890">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>बाट IP ठेगाना प्राप्त गर्दै…"</item>
-    <item msgid="1043944043827424501">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>सँग जडित"</item>
+    <item msgid="1043944043827424501">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> मा जोडिएको छ"</item>
     <item msgid="7445993821842009653">"निलम्बित"</item>
     <item msgid="1175040558087735707">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>बाट विच्छेदन गर्दै..."</item>
     <item msgid="699832486578171722">"विच्छेदन भएको"</item>
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index d6856a7..870a6d1 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -436,14 +436,10 @@
     <string name="power_discharge_by_only" msgid="92545648425937000">"लगभग <xliff:g id="TIME">%1$s</xliff:g> सम्म टिक्नु पर्छ"</string>
     <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> सम्म"</string>
     <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"ब्याट्री <xliff:g id="TIME">%1$s</xliff:g> बजेसम्ममा सकिन सक्छ"</string>
-    <!-- no translation found for power_remaining_less_than_duration_only (8956656616031395152) -->
-    <skip />
-    <!-- no translation found for power_remaining_less_than_duration (318215464914990578) -->
-    <skip />
-    <!-- no translation found for power_remaining_more_than_subtext (446388082266121894) -->
-    <skip />
-    <!-- no translation found for power_remaining_only_more_than_subtext (4873750633368888062) -->
-    <skip />
+    <string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"<xliff:g id="THRESHOLD">%1$s</xliff:g> भन्दा कम समय बाँकी छ"</string>
+    <string name="power_remaining_less_than_duration" msgid="318215464914990578">"<xliff:g id="THRESHOLD">%1$s</xliff:g> भन्दा कम समय बाँकी छ (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_more_than_subtext" msgid="446388082266121894">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> भन्दा बढी समय बाँकी छ (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_only_more_than_subtext" msgid="4873750633368888062">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> भन्दा बढी समय बाँकी छ"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"फोन चाँडै बन्द हुन सक्छ"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"ट्याब्लेट चाँडै बन्द हुन सक्छ"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"यन्त्र चाँडै बन्द हुन सक्छ"</string>
diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml
index cedf0bf..4341845 100644
--- a/packages/SettingsLib/res/values-or/strings.xml
+++ b/packages/SettingsLib/res/values-or/strings.xml
@@ -436,14 +436,10 @@
     <string name="power_discharge_by_only" msgid="92545648425937000">"ବ୍ୟାଟେରୀ <xliff:g id="TIME">%1$s</xliff:g> ପର୍ଯ୍ୟନ୍ତ ଚାଲିବ"</string>
     <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> ପର୍ଯ୍ୟନ୍ତ"</string>
     <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"<xliff:g id="TIME">%1$s</xliff:g> ସୁଦ୍ଧା ବ୍ୟାଟେରୀର ଚାର୍ଜ ଶେଷ ହୋଇ ଯାଇପାରେ"</string>
-    <!-- no translation found for power_remaining_less_than_duration_only (8956656616031395152) -->
-    <skip />
-    <!-- no translation found for power_remaining_less_than_duration (318215464914990578) -->
-    <skip />
-    <!-- no translation found for power_remaining_more_than_subtext (446388082266121894) -->
-    <skip />
-    <!-- no translation found for power_remaining_only_more_than_subtext (4873750633368888062) -->
-    <skip />
+    <string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"<xliff:g id="THRESHOLD">%1$s</xliff:g>ରୁ କମ୍ ବ୍ୟାଟେରୀ ବାକି ଅଛି"</string>
+    <string name="power_remaining_less_than_duration" msgid="318215464914990578">"<xliff:g id="THRESHOLD">%1$s</xliff:g>ରୁ କମ୍ ବ୍ୟାଟେରୀ ବାକି ଅଛି (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_more_than_subtext" msgid="446388082266121894">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>ରୁ ଅଧିକ ବ୍ୟାଟେରୀ ବାକି ଅଛି (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_only_more_than_subtext" msgid="4873750633368888062">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>ରୁ ଅଧିକ ବ୍ୟାଟେରୀ ବାକି ଅଛି"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"ଫୋନ୍ ଶୀଘ୍ର ବନ୍ଦ ହୋଇଯାଇପାରେ"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"ଟାବଲେଟ୍ ଶୀଘ୍ର ବନ୍ଦ ହୋଇଯାଇପାରେ"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"ଡିଭାଇସ୍ ଶୀଘ୍ର ବନ୍ଦ ହୋଇଯାଇପାରେ"</string>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index 4ba370b..b47b5fb 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -436,14 +436,10 @@
     <string name="power_discharge_by_only" msgid="92545648425937000">"ਲਗਭਗ <xliff:g id="TIME">%1$s</xliff:g> ਤੱਕ ਚੱਲੇਗੀ"</string>
     <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> ਤੱਕ"</string>
     <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"ਬੈਟਰੀ <xliff:g id="TIME">%1$s</xliff:g> ਤੱਕ ਖਤਮ ਹੋ ਸਕਦੀ ਹੈ"</string>
-    <!-- no translation found for power_remaining_less_than_duration_only (8956656616031395152) -->
-    <skip />
-    <!-- no translation found for power_remaining_less_than_duration (318215464914990578) -->
-    <skip />
-    <!-- no translation found for power_remaining_more_than_subtext (446388082266121894) -->
-    <skip />
-    <!-- no translation found for power_remaining_only_more_than_subtext (4873750633368888062) -->
-    <skip />
+    <string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"<xliff:g id="THRESHOLD">%1$s</xliff:g> ਤੋਂ ਘੱਟ ਬਾਕੀ"</string>
+    <string name="power_remaining_less_than_duration" msgid="318215464914990578">"<xliff:g id="THRESHOLD">%1$s</xliff:g> ਤੋਂ ਘੱਟ ਬਾਕੀ (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_more_than_subtext" msgid="446388082266121894">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ਤੋਂ ਵੱਧ ਬਾਕੀ (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_only_more_than_subtext" msgid="4873750633368888062">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ਤੋਂ ਵੱਧ ਬਾਕੀ"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"ਫ਼ੋਨ ਛੇਤੀ ਹੀ ਬੰਦ ਹੋ ਸਕਦਾ ਹੈ"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"ਟੈਬਲੈੱਟ ਛੇਤੀ ਹੀ ਬੰਦ ਹੋ ਸਕਦਾ ਹੈ"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"ਡੀਵਾਈਸ ਛੇਤੀ ਹੀ ਬੰਦ ਹੋ ਸਕਦਾ ਹੈ"</string>
diff --git a/packages/SettingsLib/res/values-pt-rBR/arrays.xml b/packages/SettingsLib/res/values-pt-rBR/arrays.xml
index 4658ffd..ca154e5 100644
--- a/packages/SettingsLib/res/values-pt-rBR/arrays.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/arrays.xml
@@ -61,7 +61,7 @@
   <string-array name="bt_hci_snoop_log_entries">
     <item msgid="695678520785580527">"Desativado"</item>
     <item msgid="6336372935919715515">"Filtro ativado"</item>
-    <item msgid="2779123106632690576">"Ativada"</item>
+    <item msgid="2779123106632690576">"Ativado"</item>
   </string-array>
   <string-array name="bluetooth_avrcp_versions">
     <item msgid="8036025277512210160">"AVRCP 1.4 (padrão)"</item>
diff --git a/packages/SettingsLib/res/values-pt/arrays.xml b/packages/SettingsLib/res/values-pt/arrays.xml
index 4658ffd..ca154e5 100644
--- a/packages/SettingsLib/res/values-pt/arrays.xml
+++ b/packages/SettingsLib/res/values-pt/arrays.xml
@@ -61,7 +61,7 @@
   <string-array name="bt_hci_snoop_log_entries">
     <item msgid="695678520785580527">"Desativado"</item>
     <item msgid="6336372935919715515">"Filtro ativado"</item>
-    <item msgid="2779123106632690576">"Ativada"</item>
+    <item msgid="2779123106632690576">"Ativado"</item>
   </string-array>
   <string-array name="bluetooth_avrcp_versions">
     <item msgid="8036025277512210160">"AVRCP 1.4 (padrão)"</item>
diff --git a/packages/SettingsLib/res/values-sl/arrays.xml b/packages/SettingsLib/res/values-sl/arrays.xml
index eb86074..80042a6 100644
--- a/packages/SettingsLib/res/values-sl/arrays.xml
+++ b/packages/SettingsLib/res/values-sl/arrays.xml
@@ -40,7 +40,7 @@
     <item msgid="8339720953594087771">"Vzpostavljanje povezave z omrežjem <xliff:g id="NETWORK_NAME">%1$s</xliff:g> …"</item>
     <item msgid="3028983857109369308">"Preverjanje pristnosti v omrežju <xliff:g id="NETWORK_NAME">%1$s</xliff:g> …"</item>
     <item msgid="4287401332778341890">"Pridobivanje naslova IP od <xliff:g id="NETWORK_NAME">%1$s</xliff:g> …"</item>
-    <item msgid="1043944043827424501">"Povezava z omrežjem <xliff:g id="NETWORK_NAME">%1$s</xliff:g> je vzpostavljena"</item>
+    <item msgid="1043944043827424501">"Povezava z: <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
     <item msgid="7445993821842009653">"Začasno ustavljeno"</item>
     <item msgid="1175040558087735707">"Prekinjanje povezave z omrežjem <xliff:g id="NETWORK_NAME">%1$s</xliff:g> …"</item>
     <item msgid="699832486578171722">"Prekinjena povezava"</item>
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index 4494d1a..a57fd0e 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -436,14 +436,10 @@
     <string name="power_discharge_by_only" msgid="92545648425937000">"<xliff:g id="TIME">%1$s</xliff:g> வரை பயன்படுத்த முடியும்"</string>
     <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> வரை"</string>
     <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"<xliff:g id="TIME">%1$s</xliff:g>க்கு பேட்டரி காலியாகிவிடக்கூடும்"</string>
-    <!-- no translation found for power_remaining_less_than_duration_only (8956656616031395152) -->
-    <skip />
-    <!-- no translation found for power_remaining_less_than_duration (318215464914990578) -->
-    <skip />
-    <!-- no translation found for power_remaining_more_than_subtext (446388082266121894) -->
-    <skip />
-    <!-- no translation found for power_remaining_only_more_than_subtext (4873750633368888062) -->
-    <skip />
+    <string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"<xliff:g id="THRESHOLD">%1$s</xliff:g> ஐ விடக் குறைவாக உள்ளது"</string>
+    <string name="power_remaining_less_than_duration" msgid="318215464914990578">"<xliff:g id="THRESHOLD">%1$s</xliff:g> ஐ விடக் குறைவாக உள்ளது (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_more_than_subtext" msgid="446388082266121894">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>க்கு மேல் உள்ளது (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_only_more_than_subtext" msgid="4873750633368888062">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>க்கு மேல் உள்ளது"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"மொபைல் விரைவில் ஆஃப் ஆகக்கூடும்"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"டேப்லெட் விரைவில் ஆஃப் ஆகக்கூடும்"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"சாதனம் விரைவில் ஆஃப் ஆகக்கூடும்"</string>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index ff958ea..b618610 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -436,14 +436,10 @@
     <string name="power_discharge_by_only" msgid="92545648425937000">"దాదాపు <xliff:g id="TIME">%1$s</xliff:g> వరకు ఉండాలి"</string>
     <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> వరకు"</string>
     <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"బ్యాటరీ <xliff:g id="TIME">%1$s</xliff:g> సమయానికి ఖాళీ అవ్వచ్చు"</string>
-    <!-- no translation found for power_remaining_less_than_duration_only (8956656616031395152) -->
-    <skip />
-    <!-- no translation found for power_remaining_less_than_duration (318215464914990578) -->
-    <skip />
-    <!-- no translation found for power_remaining_more_than_subtext (446388082266121894) -->
-    <skip />
-    <!-- no translation found for power_remaining_only_more_than_subtext (4873750633368888062) -->
-    <skip />
+    <string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"<xliff:g id="THRESHOLD">%1$s</xliff:g> కంటే తక్కువ సమయం మిగిలి ఉంది"</string>
+    <string name="power_remaining_less_than_duration" msgid="318215464914990578">"<xliff:g id="THRESHOLD">%1$s</xliff:g> కంటే తక్కువ సమయం మిగిలి ఉంది (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_more_than_subtext" msgid="446388082266121894">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> కంటే ఎక్కువ సమయం మిగిలి ఉంది (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_only_more_than_subtext" msgid="4873750633368888062">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> కంటే ఎక్కువ సమయం మిగిలి ఉంది"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"ఫోన్ త్వరలో షట్‌డౌన్ కావచ్చు"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"టాబ్లెట్ త్వరలో షట్‌డౌన్ కావచ్చు"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"పరికరం త్వరలో షట్‌డౌన్ కావచ్చు"</string>
diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml
index 32515ac..a425805 100644
--- a/packages/SettingsLib/res/values-ur/strings.xml
+++ b/packages/SettingsLib/res/values-ur/strings.xml
@@ -436,14 +436,10 @@
     <string name="power_discharge_by_only" msgid="92545648425937000">"تقریباً <xliff:g id="TIME">%1$s</xliff:g> تک بیٹری چلے گی"</string>
     <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> تک"</string>
     <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"<xliff:g id="TIME">%1$s</xliff:g> تک بیٹری ختم ہو سکتی ہے"</string>
-    <!-- no translation found for power_remaining_less_than_duration_only (8956656616031395152) -->
-    <skip />
-    <!-- no translation found for power_remaining_less_than_duration (318215464914990578) -->
-    <skip />
-    <!-- no translation found for power_remaining_more_than_subtext (446388082266121894) -->
-    <skip />
-    <!-- no translation found for power_remaining_only_more_than_subtext (4873750633368888062) -->
-    <skip />
+    <string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"<xliff:g id="THRESHOLD">%1$s</xliff:g> سے کم باقی ہے"</string>
+    <string name="power_remaining_less_than_duration" msgid="318215464914990578">"<xliff:g id="THRESHOLD">%1$s</xliff:g> سے کم باقی ہے (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_more_than_subtext" msgid="446388082266121894">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> سے زیادہ باقی ہے (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+    <string name="power_remaining_only_more_than_subtext" msgid="4873750633368888062">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> سے زیادہ باقی ہے"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"فون جلد ہی بند ہو سکتا ہے"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"ٹیبلیٹ جلد ہی بند ہو سکتا ہے"</string>
     <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"آلہ جلد ہی بند ہو سکتا ہے"</string>
diff --git a/packages/SettingsLib/res/values-uz/arrays.xml b/packages/SettingsLib/res/values-uz/arrays.xml
index 892ebe0..26153ad 100644
--- a/packages/SettingsLib/res/values-uz/arrays.xml
+++ b/packages/SettingsLib/res/values-uz/arrays.xml
@@ -40,7 +40,7 @@
     <item msgid="8339720953594087771">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> tarmog‘iga ulanilmoqda…"</item>
     <item msgid="3028983857109369308">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> bilan aloqa o‘rnatilyapti…"</item>
     <item msgid="4287401332778341890">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> IP manzil beryapti…"</item>
-    <item msgid="1043944043827424501">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> tarmog‘iga ulanildi"</item>
+    <item msgid="1043944043827424501">"Bunga ulangan: <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
     <item msgid="7445993821842009653">"Muzlatildi"</item>
     <item msgid="1175040558087735707">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> tarmog‘idan uzilmoqda…"</item>
     <item msgid="699832486578171722">"Uzildi"</item>
diff --git a/packages/SettingsLib/res/values-vi/arrays.xml b/packages/SettingsLib/res/values-vi/arrays.xml
index db29bc8..3a7e55a 100644
--- a/packages/SettingsLib/res/values-vi/arrays.xml
+++ b/packages/SettingsLib/res/values-vi/arrays.xml
@@ -152,7 +152,7 @@
   <string-array name="bluetooth_audio_active_device_summaries">
     <item msgid="8019740759207729126"></item>
     <item msgid="204248102837117183">", đang hoạt động"</item>
-    <item msgid="253388653486517049">", đang hoạt động (nội dung phương tiện)"</item>
+    <item msgid="253388653486517049">", đang hoạt động (nội dung nghe nhìn)"</item>
     <item msgid="5001852592115448348">", đang hoạt động (điện thoại)"</item>
   </string-array>
   <string-array name="select_logd_size_titles">
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index 43caf5a..6fefa31 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -253,7 +253,7 @@
     <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi-Fi 掃描調節"</string>
     <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi 加強型 MAC 隨機化"</string>
     <string name="mobile_data_always_on" msgid="8275958101875563572">"行動數據連線一律保持啟用狀態"</string>
-    <string name="tethering_hardware_offload" msgid="4116053719006939161">"數據連線硬體加速"</string>
+    <string name="tethering_hardware_offload" msgid="4116053719006939161">"網路共用硬體加速"</string>
     <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"顯示沒有名稱的藍牙裝置"</string>
     <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"停用絕對音量功能"</string>
     <string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"啟用 Gabeldorsche"</string>
@@ -299,7 +299,7 @@
     <string name="allow_mock_location_summary" msgid="179780881081354579">"允許模擬位置"</string>
     <string name="debug_view_attributes" msgid="3539609843984208216">"啟用檢視屬性檢查"</string>
     <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"即使 Wi‑Fi 連線已啟用,一律將行動數據連線保持啟用狀態 (以便快速切換網路)。"</string>
-    <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"使用數據連線硬體加速功能 (如果可用的話)"</string>
+    <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"使用網路共用硬體加速功能 (如果可用的話)"</string>
     <string name="adb_warning_title" msgid="7708653449506485728">"允許 USB 偵錯嗎?"</string>
     <string name="adb_warning_message" msgid="8145270656419669221">"USB 偵錯是針對應用程式開發而設計的功能,可讓你複製電腦和裝置中的資料、不需經由通知即可在裝置上安裝應用程式,以及讀取記錄資料。"</string>
     <string name="adbwifi_warning_title" msgid="727104571653031865">"要啟用無線偵錯嗎?"</string>
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index 7baaf49..7587cc1 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -937,11 +937,6 @@
     <!-- UI debug setting: show missing channel toasts summary [CHAR LIMIT=50] -->
     <string name="show_notification_channel_warnings_summary">Displays on-screen warning when an app posts a notification without a valid channel</string>
 
-    <!-- UI debug setting: enforce shortcut requirements for conversation space [CHAR LIMIT=25] -->
-    <string name="enforce_shortcuts_for_conversations">Enforce shortcuts for conversation notifications</string>
-    <!-- UI debug setting: enforce shortcut requirements for conversation space summary [CHAR LIMIT=50] -->
-    <string name="enforce_shortcuts_for_conversations_summary">Require notifications to be backed by a long-lived sharing shortcut in order to appear in the conversation section</string>
-
     <!-- UI debug setting: force allow apps on external storage [CHAR LIMIT=50] -->
     <string name="force_allow_on_external">Force allow apps on external</string>
     <!-- UI debug setting: force allow on external summary [CHAR LIMIT=150] -->
diff --git a/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java b/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java
index 57e6808..ab7b54d 100644
--- a/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java
+++ b/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java
@@ -159,6 +159,25 @@
         return null;
     }
 
+    /**
+     * Gets an icon from active dream.
+     */
+    public Drawable getActiveIcon() {
+        final ComponentName cn = getActiveDream();
+        if (cn != null) {
+            final PackageManager pm = mContext.getPackageManager();
+            try {
+                final ServiceInfo ri = pm.getServiceInfo(cn, 0);
+                if (ri != null) {
+                    return ri.loadIcon(pm);
+                }
+            } catch (PackageManager.NameNotFoundException exc) {
+                return null;
+            }
+        }
+        return null;
+    }
+
     public @WhenToDream int getWhenToDreamSetting() {
         if (!isEnabled()) {
             return NEVER;
diff --git a/packages/SettingsProvider/Android.bp b/packages/SettingsProvider/Android.bp
index d67bd8d..9d042a4 100644
--- a/packages/SettingsProvider/Android.bp
+++ b/packages/SettingsProvider/Android.bp
@@ -34,6 +34,7 @@
     ],
     static_libs: [
         "androidx.test.rules",
+        "mockito-target-minus-junit4",
         "SettingsLibDisplayDensityUtils",
         "platform-test-annotations",
         "truth-prebuilt",
diff --git a/packages/SettingsProvider/AndroidManifest.xml b/packages/SettingsProvider/AndroidManifest.xml
index 839899e..04d3f94 100644
--- a/packages/SettingsProvider/AndroidManifest.xml
+++ b/packages/SettingsProvider/AndroidManifest.xml
@@ -21,5 +21,10 @@
                   android:singleUser="true"
                   android:initOrder="100"
                   android:visibleToInstantApps="true" />
+
+        <service
+            android:name="WriteFallbackSettingsFilesJobService"
+            android:permission="android.permission.BIND_JOB_SERVICE"
+            android:exported="true"/>
     </application>
 </manifest>
diff --git a/packages/SettingsProvider/OWNERS b/packages/SettingsProvider/OWNERS
index 2054129..b2ac4f4 100644
--- a/packages/SettingsProvider/OWNERS
+++ b/packages/SettingsProvider/OWNERS
@@ -1,3 +1,5 @@
 hackbod@google.com
+narayan@google.com
 svetoslavganov@google.com
-moltmann@google.com
+schfan@google.com
+toddke@google.com
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
index b6e31d2..d023d98 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
@@ -48,6 +48,8 @@
 public class SettingsHelper {
     private static final String TAG = "SettingsHelper";
     private static final String SILENT_RINGTONE = "_silent";
+    private static final String SETTINGS_REPLACED_KEY = "backup_skip_user_facing_data";
+    private static final String SETTING_ORIGINAL_KEY_SUFFIX = "_original";
     private static final float FLOAT_TOLERANCE = 0.01f;
 
     private Context mContext;
@@ -121,6 +123,10 @@
      */
     public void restoreValue(Context context, ContentResolver cr, ContentValues contentValues,
             Uri destination, String name, String value, int restoredFromSdkInt) {
+        if (isReplacedSystemSetting(name)) {
+            return;
+        }
+
         // Will we need a post-restore broadcast for this element?
         String oldValue = null;
         boolean sendBroadcast = false;
@@ -203,7 +209,32 @@
             }
         }
         // Return the original value
-        return value;
+        return isReplacedSystemSetting(name) ? getRealValueForSystemSetting(name) : value;
+    }
+
+    /**
+     * The setting value might have been replaced temporarily. If that's the case, return the real
+     * value instead of the temporary one.
+     */
+    @VisibleForTesting
+    public String getRealValueForSystemSetting(String setting) {
+        return Settings.System.getString(mContext.getContentResolver(),
+                setting + SETTING_ORIGINAL_KEY_SUFFIX);
+    }
+
+    @VisibleForTesting
+    public boolean isReplacedSystemSetting(String setting) {
+        // This list should not be modified.
+        if (!Settings.System.MASTER_MONO.equals(setting)
+                && !Settings.System.SCREEN_OFF_TIMEOUT.equals(setting)) {
+            return false;
+        }
+        // If this flag is set, values for the system settings from the list above have been
+        // temporarily replaced. We don't want to back up the temporary value or run restore for
+        // such settings.
+        // TODO(154822946): Remove this logic in the next release.
+        return Settings.Secure.getInt(mContext.getContentResolver(), SETTINGS_REPLACED_KEY,
+                /* def */ 0) != 0;
     }
 
     /**
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 2245ee4..94509dd 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -23,12 +23,16 @@
 import static android.provider.Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_MAGNIFICATION_CONTROLLER;
 import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON_OVERLAY;
 
+import static com.android.providers.settings.SettingsState.FALLBACK_FILE_SUFFIX;
+
 import android.Manifest;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.ActivityManager;
 import android.app.AppGlobals;
 import android.app.backup.BackupManager;
+import android.app.job.JobInfo;
+import android.app.job.JobScheduler;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.ContentProvider;
@@ -55,12 +59,14 @@
 import android.os.Bundle;
 import android.os.DropBoxManager;
 import android.os.Environment;
+import android.os.FileUtils;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.IUserRestrictionsListener;
 import android.os.Looper;
 import android.os.Message;
 import android.os.ParcelFileDescriptor;
+import android.os.PersistableBundle;
 import android.os.Process;
 import android.os.RemoteCallback;
 import android.os.RemoteException;
@@ -95,6 +101,7 @@
 import java.io.File;
 import java.io.FileDescriptor;
 import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.io.PrintWriter;
 import java.nio.ByteBuffer;
 import java.security.InvalidKeyException;
@@ -154,9 +161,11 @@
 
     private static final String LOG_TAG = "SettingsProvider";
 
-    private static final String TABLE_SYSTEM = "system";
-    private static final String TABLE_SECURE = "secure";
-    private static final String TABLE_GLOBAL = "global";
+    public static final String TABLE_SYSTEM = "system";
+    public static final String TABLE_SECURE = "secure";
+    public static final String TABLE_GLOBAL = "global";
+    public static final String TABLE_SSAID = "ssaid";
+    public static final String TABLE_CONFIG = "config";
 
     // Old tables no longer exist.
     private static final String TABLE_FAVORITES = "favorites";
@@ -205,6 +214,10 @@
     public static final String RESULT_ROWS_DELETED = "result_rows_deleted";
     public static final String RESULT_SETTINGS_LIST = "result_settings_list";
 
+    // Used for scheduling jobs to make a copy for the settings files
+    public static final int WRITE_FALLBACK_SETTINGS_FILES_JOB_ID = 1;
+    public static final long ONE_DAY_INTERVAL_MILLIS = 24 * 60 * 60 * 1000L;
+
     // Overlay specified settings whitelisted for Instant Apps
     private static final Set<String> OVERLAY_ALLOWED_GLOBAL_INSTANT_APP_SETTINGS = new ArraySet<>();
     private static final Set<String> OVERLAY_ALLOWED_SYSTEM_INSTANT_APP_SETTINGS = new ArraySet<>();
@@ -2484,6 +2497,68 @@
         }
     }
 
+    /**
+     * Schedule the job service to make a copy of all the settings files.
+     */
+    public void scheduleWriteFallbackFilesJob() {
+        final Context context = getContext();
+        final JobScheduler jobScheduler =
+                (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+        if (jobScheduler == null) {
+            // Might happen: SettingsProvider is created before JobSchedulerService in system server
+            return;
+        }
+        // Check if the job is already scheduled. If so, skip scheduling another one
+        if (jobScheduler.getPendingJob(WRITE_FALLBACK_SETTINGS_FILES_JOB_ID) != null) {
+            return;
+        }
+        // Back up all settings files
+        final PersistableBundle bundle = new PersistableBundle();
+        final File globalSettingsFile = mSettingsRegistry.getSettingsFile(
+                makeKey(SETTINGS_TYPE_GLOBAL, UserHandle.USER_SYSTEM));
+        final File systemSettingsFile = mSettingsRegistry.getSettingsFile(
+                makeKey(SETTINGS_TYPE_SYSTEM, UserHandle.USER_SYSTEM));
+        final File secureSettingsFile = mSettingsRegistry.getSettingsFile(
+                makeKey(SETTINGS_TYPE_SECURE, UserHandle.USER_SYSTEM));
+        final File ssaidSettingsFile = mSettingsRegistry.getSettingsFile(
+                makeKey(SETTINGS_TYPE_SSAID, UserHandle.USER_SYSTEM));
+        final File configSettingsFile = mSettingsRegistry.getSettingsFile(
+                makeKey(SETTINGS_TYPE_CONFIG, UserHandle.USER_SYSTEM));
+        bundle.putString(TABLE_GLOBAL, globalSettingsFile.getAbsolutePath());
+        bundle.putString(TABLE_SYSTEM, systemSettingsFile.getAbsolutePath());
+        bundle.putString(TABLE_SECURE, secureSettingsFile.getAbsolutePath());
+        bundle.putString(TABLE_SSAID, ssaidSettingsFile.getAbsolutePath());
+        bundle.putString(TABLE_CONFIG, configSettingsFile.getAbsolutePath());
+        // Schedule the job to write the fallback files, once daily when phone is charging
+        jobScheduler.schedule(new JobInfo.Builder(WRITE_FALLBACK_SETTINGS_FILES_JOB_ID,
+                new ComponentName(context, WriteFallbackSettingsFilesJobService.class))
+                .setExtras(bundle)
+                .setPeriodic(ONE_DAY_INTERVAL_MILLIS)
+                .setRequiresCharging(true)
+                .setPersisted(true)
+                .build());
+    }
+
+    /**
+     * For each file in the given list, if it exists, copy it to a back up file. Ignore failures.
+     * @param filePaths List of paths of files that need to be backed up
+     */
+    public static void writeFallBackSettingsFiles(List<String> filePaths) {
+        final int numFiles = filePaths.size();
+        for (int i = 0; i < numFiles; i++) {
+            final String filePath = filePaths.get(i);
+            final File originalFile = new File(filePath);
+            if (SettingsState.stateFileExists(originalFile)) {
+                final File fallBackFile = new File(filePath + FALLBACK_FILE_SUFFIX);
+                try {
+                    FileUtils.copy(originalFile, fallBackFile);
+                } catch (IOException ex) {
+                    Slog.w(LOG_TAG, "Failed to write fallback file for: " + filePath);
+                }
+            }
+        }
+    }
+
     final class SettingsRegistry {
         private static final String DROPBOX_TAG_USERLOG = "restricted_profile_ssaid";
 
@@ -3431,6 +3506,7 @@
 
                     case MSG_NOTIFY_DATA_CHANGED: {
                         mBackupManager.dataChanged();
+                        scheduleWriteFallbackFilesJob();
                     } break;
                 }
             }
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
index 6b8219e..6678cf6 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
@@ -27,6 +27,7 @@
 import android.content.pm.Signature;
 import android.os.Binder;
 import android.os.Build;
+import android.os.FileUtils;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
@@ -101,6 +102,8 @@
 
     public static final int VERSION_UNDEFINED = -1;
 
+    public static final String FALLBACK_FILE_SUFFIX = ".fallback";
+
     private static final String TAG_SETTINGS = "settings";
     private static final String TAG_SETTING = "setting";
     private static final String ATTR_PACKAGE = "package";
@@ -266,7 +269,7 @@
     public SettingsState(Context context, Object lock, File file, int key,
             int maxBytesPerAppPackage, Looper looper) {
         // It is important that we use the same lock as the settings provider
-        // to ensure multiple mutations on this state are atomicaly persisted
+        // to ensure multiple mutations on this state are atomically persisted
         // as the async persistence should be blocked while we make changes.
         mContext = context;
         mLock = lock;
@@ -998,24 +1001,56 @@
     }
 
     @GuardedBy("mLock")
-    private void readStateSyncLocked() {
+    private void readStateSyncLocked() throws IllegalStateException {
         FileInputStream in;
+        AtomicFile file = new AtomicFile(mStatePersistFile);
         try {
-            in = new AtomicFile(mStatePersistFile).openRead();
+            in = file.openRead();
         } catch (FileNotFoundException fnfe) {
-            Slog.i(LOG_TAG, "No settings state " + mStatePersistFile);
+            Slog.w(LOG_TAG, "No settings state " + mStatePersistFile);
             logSettingsDirectoryInformation(mStatePersistFile);
             addHistoricalOperationLocked(HISTORICAL_OPERATION_INITIALIZE, null);
             return;
         }
+        if (parseStateFromXmlStreamLocked(in)) {
+            return;
+        }
+
+        // Settings file exists but is corrupted. Retry with the fallback file
+        final File statePersistFallbackFile = new File(
+                mStatePersistFile.getAbsolutePath() + FALLBACK_FILE_SUFFIX);
+        Slog.i(LOG_TAG, "Failed parsing settings file: " + mStatePersistFile
+                + ", retrying with fallback file: " + statePersistFallbackFile);
+        try {
+            in = new AtomicFile(statePersistFallbackFile).openRead();
+        } catch (FileNotFoundException fnfe) {
+            final String message = "No fallback file found for: " + mStatePersistFile;
+            Slog.wtf(LOG_TAG, message);
+            throw new IllegalStateException(message);
+        }
+        if (parseStateFromXmlStreamLocked(in)) {
+            // Parsed state from fallback file. Restore original file with fallback file
+            try {
+                FileUtils.copy(statePersistFallbackFile, mStatePersistFile);
+            } catch (IOException ignored) {
+                // Failed to copy, but it's okay because we already parsed states from fallback file
+            }
+        } else {
+            final String message = "Failed parsing settings file: " + mStatePersistFile;
+            Slog.wtf(LOG_TAG, message);
+            throw new IllegalStateException(message);
+        }
+    }
+
+    @GuardedBy("mLock")
+    private boolean parseStateFromXmlStreamLocked(FileInputStream in) {
         try {
             XmlPullParser parser = Xml.newPullParser();
             parser.setInput(in, StandardCharsets.UTF_8.name());
             parseStateLocked(parser);
+            return true;
         } catch (XmlPullParserException | IOException e) {
-            String message = "Failed parsing settings file: " + mStatePersistFile;
-            Slog.wtf(LOG_TAG, message);
-            throw new IllegalStateException(message, e);
+            return false;
         } finally {
             IoUtils.closeQuietly(in);
         }
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/WriteFallbackSettingsFilesJobService.java b/packages/SettingsProvider/src/com/android/providers/settings/WriteFallbackSettingsFilesJobService.java
new file mode 100644
index 0000000..6e5b889
--- /dev/null
+++ b/packages/SettingsProvider/src/com/android/providers/settings/WriteFallbackSettingsFilesJobService.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.providers.settings;
+
+import static com.android.providers.settings.SettingsProvider.TABLE_CONFIG;
+import static com.android.providers.settings.SettingsProvider.TABLE_GLOBAL;
+import static com.android.providers.settings.SettingsProvider.TABLE_SECURE;
+import static com.android.providers.settings.SettingsProvider.TABLE_SSAID;
+import static com.android.providers.settings.SettingsProvider.TABLE_SYSTEM;
+import static com.android.providers.settings.SettingsProvider.WRITE_FALLBACK_SETTINGS_FILES_JOB_ID;
+
+import android.app.job.JobParameters;
+import android.app.job.JobService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * JobService to make a copy of a list of files, given their paths.
+ */
+public class WriteFallbackSettingsFilesJobService extends JobService {
+    @Override
+    public boolean onStartJob(final JobParameters params) {
+        switch (params.getJobId()) {
+            case WRITE_FALLBACK_SETTINGS_FILES_JOB_ID:
+                final List<String> settingsFiles = new ArrayList<>();
+                settingsFiles.add(params.getExtras().getString(TABLE_GLOBAL, ""));
+                settingsFiles.add(params.getExtras().getString(TABLE_SYSTEM, ""));
+                settingsFiles.add(params.getExtras().getString(TABLE_SECURE, ""));
+                settingsFiles.add(params.getExtras().getString(TABLE_SSAID, ""));
+                settingsFiles.add(params.getExtras().getString(TABLE_CONFIG, ""));
+                SettingsProvider.writeFallBackSettingsFiles(settingsFiles);
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    @Override
+    public boolean onStopJob(JobParameters params) {
+        return false;
+    }
+
+}
diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
index 0dd7fb8..f5589d7 100644
--- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
+++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
@@ -420,7 +420,6 @@
                     Settings.Global.RECOMMENDED_NETWORK_EVALUATOR_CACHE_EXPIRY_MS,
                     Settings.Global.READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT,
                     Settings.Global.REQUIRE_PASSWORD_TO_DECRYPT,
-                    Settings.Global.REQUIRE_SHORTCUTS_FOR_CONVERSATIONS,
                     Settings.Global.SAFE_BOOT_DISALLOWED,
                     Settings.Global.SELINUX_STATUS,
                     Settings.Global.SELINUX_UPDATE_CONTENT_URL,
diff --git a/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsHelperTest.java b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsHelperTest.java
index d112fac..7baa226 100644
--- a/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsHelperTest.java
+++ b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsHelperTest.java
@@ -18,18 +18,79 @@
 
 import static junit.framework.Assert.assertEquals;
 
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
+
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.media.AudioManager;
+import android.net.Uri;
 import android.os.LocaleList;
+import android.telephony.TelephonyManager;
 
 import androidx.test.runner.AndroidJUnit4;
 
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
 
 /**
  * Tests for the SettingsHelperTest
  */
 @RunWith(AndroidJUnit4.class)
 public class SettingsHelperTest {
+    private static final String SETTING_KEY = "setting_key";
+    private static final String SETTING_VALUE = "setting_value";
+    private static final String SETTING_REAL_VALUE = "setting_real_value";
+
+    private SettingsHelper mSettingsHelper;
+
+    @Mock private Context mContext;
+    @Mock private ContentResolver mContentResolver;
+    @Mock private AudioManager mAudioManager;
+    @Mock private TelephonyManager mTelephonyManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mContext.getSystemService(eq(Context.AUDIO_SERVICE))).thenReturn(mAudioManager);
+        when(mContext.getSystemService(eq(Context.TELEPHONY_SERVICE))).thenReturn(
+                mTelephonyManager);
+
+        mSettingsHelper = spy(new SettingsHelper(mContext));
+    }
+
+    @Test
+    public void testOnBackupValue_settingReplaced_returnsRealValue() {
+        when(mSettingsHelper.isReplacedSystemSetting(eq(SETTING_KEY))).thenReturn(true);
+        doReturn(SETTING_REAL_VALUE).when(mSettingsHelper).getRealValueForSystemSetting(
+                eq(SETTING_KEY));
+
+        assertEquals(SETTING_REAL_VALUE, mSettingsHelper.onBackupValue(SETTING_KEY, SETTING_VALUE));
+    }
+
+    @Test
+    public void testGetRealValue_settingNotReplaced_returnsSameValue() {
+        when(mSettingsHelper.isReplacedSystemSetting(eq(SETTING_KEY))).thenReturn(false);
+
+        assertEquals(SETTING_VALUE, mSettingsHelper.onBackupValue(SETTING_KEY, SETTING_VALUE));
+    }
+
+    @Test
+    public void testRestoreValue_settingReplaced_doesNotRestore() {
+        when(mSettingsHelper.isReplacedSystemSetting(eq(SETTING_KEY))).thenReturn(true);
+        mSettingsHelper.restoreValue(mContext, mContentResolver, new ContentValues(), Uri.EMPTY,
+                SETTING_KEY, SETTING_VALUE, /* restoredFromSdkInt */ 0);
+
+        verifyZeroInteractions(mContentResolver);
+    }
+
     @Test
     public void testResolveLocales() throws Exception {
         // Empty string from backup server
diff --git a/packages/SimAppDialog/res/values-af/strings.xml b/packages/SimAppDialog/res/values-af/strings.xml
new file mode 100644
index 0000000..143bc67
--- /dev/null
+++ b/packages/SimAppDialog/res/values-af/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"SIM-programdialoog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Aktiveer mobiele diens"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Jy sal die <xliff:g id="ID_1">%1$s</xliff:g>-program moet installeer om jou nuwe SIM behoorlik te laat werk"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Jy sal die diensverskafferprogram moet installeer om jou nuwe SIM behoorlik te laat werk"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Nie nou nie"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Laai program af"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-am/strings.xml b/packages/SimAppDialog/res/values-am/strings.xml
new file mode 100644
index 0000000..a2fc583
--- /dev/null
+++ b/packages/SimAppDialog/res/values-am/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"የሲም መተግበሪያ መገናኛ"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"የሞባይል አገልግሎትን አግብር"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"አዲሱ የእርስዎ ሲም በአግባቡ እንዲሰራ ለማድረግ የ<xliff:g id="ID_1">%1$s</xliff:g> መተግበሪያውን መጫን አለብዎት"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"አዲሱ የእርስዎ ሲም በአግባቡ እንዲሰራ ለማድረግ የአገልግሎት አቅራቢ መተግበሪያውን መጫን አለብዎት"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"አሁን አይደለም"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"መተግበሪያን አውርድ"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-ar/strings.xml b/packages/SimAppDialog/res/values-ar/strings.xml
new file mode 100644
index 0000000..4087d1e
--- /dev/null
+++ b/packages/SimAppDialog/res/values-ar/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"تفعيل خدمة الجوّال"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"‏لتعمل شريحة SIM الجديدة بشكل سليم، ستحتاج إلى تثبيت تطبيق <xliff:g id="ID_1">%1$s</xliff:g>."</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"‏لتعمل شريحة SIM الجديدة بشكل سليم، ستحتاج إلى تثبيت تطبيق مشغّل شبكة الجوّال."</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"لاحقًا"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"تنزيل التطبيق"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-as/strings.xml b/packages/SimAppDialog/res/values-as/strings.xml
new file mode 100644
index 0000000..8002c3f
--- /dev/null
+++ b/packages/SimAppDialog/res/values-as/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"ম’বাইল সেৱা সক্ৰিয় কৰক"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"আপোনাৰ নতুন ছিমখনে ভালকৈ কাম কৰিবলৈ হ’লে আপুনি <xliff:g id="ID_1">%1$s</xliff:g> এপ্‌টো ইনষ্টল কৰিব লাগিব"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"আপোনাৰ নতুন ছিমখনে ভালকৈ কাম কৰিবলৈ হ’লে আপুনি বাহকৰ এপ্‌টো ইনষ্টল কৰিব লাগিব"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"এতিয়া নহয়"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"এপ্‌টো ডাউনল’ড কৰক"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-az/strings.xml b/packages/SimAppDialog/res/values-az/strings.xml
new file mode 100644
index 0000000..f96ed7d
--- /dev/null
+++ b/packages/SimAppDialog/res/values-az/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim Tətbiq Dialoqu"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Mobil xidməti aktiv edin"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Yeni SIM kartınızın düzgün işləməsi üçün <xliff:g id="ID_1">%1$s</xliff:g> tətbiqini yükləməlisiniz"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Yeni SIM kartınızın düzgün işləməsi üçün operator tətbiqini yükləməlisiniz"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"İndi yox"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Tətbiqi endirin"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-b+sr+Latn/strings.xml b/packages/SimAppDialog/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..f7771c5
--- /dev/null
+++ b/packages/SimAppDialog/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Aktivirajte mobilnu uslugu"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Da bi nova SIM kartica ispravno radila, treba da instalirate aplikaciju <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Da bi nova SIM kartica ispravno radila, treba da instalirate aplikaciju mobilnog operatera"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Ne sada"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Preuzmi aplikaciju"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-be/strings.xml b/packages/SimAppDialog/res/values-be/strings.xml
new file mode 100644
index 0000000..7207f58
--- /dev/null
+++ b/packages/SimAppDialog/res/values-be/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Дыялогавае акно праграмы SIM-карты"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Уключыце мабільную сувязь"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Каб ваша новая SIM-карта працавала належным чынам, вам трэба ўсталяваць праграму \"<xliff:g id="ID_1">%1$s</xliff:g>\""</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Каб ваша новая SIM-карта працавала належным чынам, вам трэба ўсталяваць праграму ад аператара"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Не зараз"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Спампаваць праграму"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-bg/strings.xml b/packages/SimAppDialog/res/values-bg/strings.xml
new file mode 100644
index 0000000..a7b6602
--- /dev/null
+++ b/packages/SimAppDialog/res/values-bg/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Активиране на мобилната услуга"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"За да работи правилно новата ви SIM карта, трябва да инсталирате приложението <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"За да работи правилно новата ви SIM карта, трябва да инсталирате приложението на оператора"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Не сега"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Изтегляне на приложението"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-bn/strings.xml b/packages/SimAppDialog/res/values-bn/strings.xml
new file mode 100644
index 0000000..0659d37
--- /dev/null
+++ b/packages/SimAppDialog/res/values-bn/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"সিম অ্যাপ ডায়ালগ"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"মোবাইল পরিষেবা চালু করুন"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"আপনার নতুন সিম যাতে সঠিকভাবে কাজ করে, তার জন্য আপনাকে <xliff:g id="ID_1">%1$s</xliff:g> অ্যাপ ইনস্টল করতে হবে"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"আপনার নতুন সিম যাতে সঠিকভাবে কাজ করে, তার জন্য আপনাকে পরিষেবা প্রদানকারীর অ্যাপ ইনস্টল করতে হবে"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"এখন নয়"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"অ্যাপ ডাউনলোড করুন"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-bs/strings.xml b/packages/SimAppDialog/res/values-bs/strings.xml
new file mode 100644
index 0000000..b568f75
--- /dev/null
+++ b/packages/SimAppDialog/res/values-bs/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Aktivirajte mobilnu uslugu"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Da bi nova SIM kartica ispravno funkcionirala, morate instalirati aplikaciju <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Da bi nova SIM kartica ispravno funkcionirala, morate instalirati aplikaciju mobilnog operatera"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Ne sada"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Preuzmi aplikaciju"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-ca/strings.xml b/packages/SimAppDialog/res/values-ca/strings.xml
new file mode 100644
index 0000000..731f034
--- /dev/null
+++ b/packages/SimAppDialog/res/values-ca/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Activa el servei mòbil"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Si vols que la teva SIM nova funcioni correctament, has d\'instal·lar l\'aplicació <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Si vols que la teva SIM nova funcioni correctament, has d\'instal·lar l\'aplicació de l\'operador"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Ara no"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Baixa l\'aplicació"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-cs/strings.xml b/packages/SimAppDialog/res/values-cs/strings.xml
new file mode 100644
index 0000000..775fa79
--- /dev/null
+++ b/packages/SimAppDialog/res/values-cs/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Dialogové okno aplikace SIM karty"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Aktivovat mobilní službu"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Aby vaše nová SIM karta fungovala správně, je třeba nainstalovat aplikaci <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Aby vaše nová SIM karta fungovala správně, je třeba nainstalovat aplikaci operátora"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Teď ne"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Stáhnout aplikaci"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-da/strings.xml b/packages/SimAppDialog/res/values-da/strings.xml
new file mode 100644
index 0000000..44528f7
--- /dev/null
+++ b/packages/SimAppDialog/res/values-da/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Dialogboks for app til SIM-kort"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Aktivér mobilnetværk"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Du skal installere appen <xliff:g id="ID_1">%1$s</xliff:g>, før dit nye SIM-kort kan fungere korrekt."</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Du skal installere appen for dit mobilselskab, før dit nye SIM-kort kan fungere korrekt."</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Ikke nu"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Download app"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-de/strings.xml b/packages/SimAppDialog/res/values-de/strings.xml
new file mode 100644
index 0000000..7edecd4
--- /dev/null
+++ b/packages/SimAppDialog/res/values-de/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"SIM-App-Dialogfeld"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Mobilfunkdienst aktivieren"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Damit deine neue SIM-Karte richtig funktioniert, musst du die <xliff:g id="ID_1">%1$s</xliff:g> App installieren"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Damit deine neue SIM-Karte richtig funktioniert, musst du die Mobilfunkanbieter-App installieren"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Nicht jetzt"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"App herunterladen"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-el/strings.xml b/packages/SimAppDialog/res/values-el/strings.xml
new file mode 100644
index 0000000..71700dc
--- /dev/null
+++ b/packages/SimAppDialog/res/values-el/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Ενεργ. υπηρεσίας κιν. τηλεφ."</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Για την εύρυθμη λειτουργία της νέας σας SIM, θα πρέπει να εγκαταστήσετε την εφαρμογή <xliff:g id="ID_1">%1$s</xliff:g>."</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Για εύρυθμη λειτουργία της νέας SIM, πρέπει να εγκαταστήσετε την εφαρμογή της εταιρείας κιν. τηλεφ."</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Όχι τώρα"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Λήψη εφαρμογής"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-en-rAU/strings.xml b/packages/SimAppDialog/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000..6236a8f
--- /dev/null
+++ b/packages/SimAppDialog/res/values-en-rAU/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim app dialogue"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Activate mobile service"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"To get your new SIM working properly, you\'ll need to install the <xliff:g id="ID_1">%1$s</xliff:g> app"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"To get your new SIM working properly, you\'ll need to install the operator app"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Not now"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Download app"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-en-rCA/strings.xml b/packages/SimAppDialog/res/values-en-rCA/strings.xml
new file mode 100644
index 0000000..6236a8f
--- /dev/null
+++ b/packages/SimAppDialog/res/values-en-rCA/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim app dialogue"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Activate mobile service"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"To get your new SIM working properly, you\'ll need to install the <xliff:g id="ID_1">%1$s</xliff:g> app"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"To get your new SIM working properly, you\'ll need to install the operator app"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Not now"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Download app"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-en-rGB/strings.xml b/packages/SimAppDialog/res/values-en-rGB/strings.xml
new file mode 100644
index 0000000..6236a8f
--- /dev/null
+++ b/packages/SimAppDialog/res/values-en-rGB/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim app dialogue"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Activate mobile service"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"To get your new SIM working properly, you\'ll need to install the <xliff:g id="ID_1">%1$s</xliff:g> app"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"To get your new SIM working properly, you\'ll need to install the operator app"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Not now"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Download app"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-en-rIN/strings.xml b/packages/SimAppDialog/res/values-en-rIN/strings.xml
new file mode 100644
index 0000000..6236a8f
--- /dev/null
+++ b/packages/SimAppDialog/res/values-en-rIN/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim app dialogue"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Activate mobile service"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"To get your new SIM working properly, you\'ll need to install the <xliff:g id="ID_1">%1$s</xliff:g> app"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"To get your new SIM working properly, you\'ll need to install the operator app"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Not now"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Download app"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-en-rXC/strings.xml b/packages/SimAppDialog/res/values-en-rXC/strings.xml
new file mode 100644
index 0000000..471fdd0
--- /dev/null
+++ b/packages/SimAppDialog/res/values-en-rXC/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‎‎‎‏‎‎‏‎‏‎‏‎‎‎‎‏‎‏‏‎‏‎‎‏‏‏‏‎‎‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‎‏‎Sim App Dialog‎‏‎‎‏‎"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‎‏‎‎‏‏‎‎‏‎‎‏‎‏‏‎‎‎‏‏‏‎‏‏‏‏‎‏‎‏‎‎‎‏‎‏‎‎‏‎‎‏‎‎‎‏‏‎‎‏‎Activate mobile service‎‏‎‎‏‎"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‏‏‎‏‎‏‏‎‏‎‏‎‏‏‏‏‎‏‎‎‎‏‎‏‏‎‎‎‏‏‎‏‏‎‎‏‏‏‏‏‎‎‎‎‎‏‎‎‎‏‎‏‎‏‎To get your new SIM working properly, you\'ll need to install the ‎‏‎‎‏‏‎<xliff:g id="ID_1">%1$s</xliff:g>‎‏‎‎‏‏‏‎ app‎‏‎‎‏‎"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‏‏‎‎‎‏‎‏‏‎‏‏‎‎‎‏‎‎‎‎‏‎‎‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎‎‏‎‏‏‏‏‎‎‏‎‎‎‎‎‎To get your new SIM working properly, you\'ll need to install the carrier app‎‏‎‎‏‎"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‏‏‎‎‎‎‎‎‏‏‏‏‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‎‎‎‎‏‏‎‏‎‎‎‎‎‏‏‎‎‎‏‎Not now‎‏‎‎‏‎"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‎‏‎‎‎‏‏‎‎‏‎‏‏‏‎‏‏‎‏‎‎‏‏‏‏‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‏‎‏‎‎‎‎‎Download app‎‏‎‎‏‎"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-es-rUS/strings.xml b/packages/SimAppDialog/res/values-es-rUS/strings.xml
new file mode 100644
index 0000000..9543bd1
--- /dev/null
+++ b/packages/SimAppDialog/res/values-es-rUS/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Activa serv. de datos móviles"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Para que la tarjeta SIM funcione correctamente, deberás instalar la app de <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Para que la tarjeta SIM funcione correctamente, deberás instalar la app del proveedor"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Ahora no"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Descargar app"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-es/strings.xml b/packages/SimAppDialog/res/values-es/strings.xml
new file mode 100644
index 0000000..efc42e4
--- /dev/null
+++ b/packages/SimAppDialog/res/values-es/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Cuadro de diálogo de la aplicación de SIM"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Activar servicio móvil"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Para que tu nueva SIM funcione correctamente, tienes que instalar la aplicación <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Para que tu nueva SIM funcione correctamente, tienes que instalar la aplicación del operador"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Ahora no"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Descargar aplicación"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-et/strings.xml b/packages/SimAppDialog/res/values-et/strings.xml
new file mode 100644
index 0000000..6efac98
--- /dev/null
+++ b/packages/SimAppDialog/res/values-et/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Mobiilsideteenuse aktiveerimine"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Selleks, et uus SIM-kaart õigesti tööle hakkaks, peate installima operaatori <xliff:g id="ID_1">%1$s</xliff:g> rakenduse"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Selleks, et uus SIM-kaart õigesti tööle hakkaks, peate installima operaatori rakenduse"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Mitte praegu"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Laadi rakendus alla"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-eu/strings.xml b/packages/SimAppDialog/res/values-eu/strings.xml
new file mode 100644
index 0000000..ffd62f7
--- /dev/null
+++ b/packages/SimAppDialog/res/values-eu/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim aplikazioaren leihoa"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Aktibatu mugikorreko zerbitzua"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"SIM berriak behar bezala funtziona dezan, <xliff:g id="ID_1">%1$s</xliff:g> aplikazioa instalatu behar duzu"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"SIM berriak behar bezala funtziona dezan, operadorearen aplikazioa instalatu behar duzu"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Orain ez"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Deskargatu aplikazioa"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-fa/strings.xml b/packages/SimAppDialog/res/values-fa/strings.xml
new file mode 100644
index 0000000..7eb87dd
--- /dev/null
+++ b/packages/SimAppDialog/res/values-fa/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"‏کادر گفتگوی برنامه Sim"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"سرویس دستگاه همراه را فعال کنید"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"برای اینکه سیم‌کارت جدیدتان به‌درستی کار کند، باید برنامه <xliff:g id="ID_1">%1$s</xliff:g> را نصب کنید"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"برای اینکه سیم‌کارت جدیدتان به‌درستی کار کند، باید برنامه شرکت مخابراتی را نصب کنید"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"الآن نه"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"بارگیری برنامه"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-fi/strings.xml b/packages/SimAppDialog/res/values-fi/strings.xml
new file mode 100644
index 0000000..a0535c5
--- /dev/null
+++ b/packages/SimAppDialog/res/values-fi/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Aktivoi mobiilipalvelu"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Jotta uusi SIM-korttisi toimii kunnolla, sinun on asennettava <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Jotta uusi SIM-korttisi toimii kunnolla, sinun on asennettava operaattorin sovellus"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Ei nyt"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Lataa sovellus"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-fr-rCA/strings.xml b/packages/SimAppDialog/res/values-fr-rCA/strings.xml
new file mode 100644
index 0000000..b607585
--- /dev/null
+++ b/packages/SimAppDialog/res/values-fr-rCA/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Boîte de dialogue de l\'application SIM"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Activer le service cellulaire"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Pour que le nouveau module SIM fonctionne correctement, vous devez installer l\'application <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Pour que le nouveau module SIM fonctionne, vous devez installer l\'appli du fournisseur de services"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Pas maintenant"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Télécharger l\'application"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-fr/strings.xml b/packages/SimAppDialog/res/values-fr/strings.xml
new file mode 100644
index 0000000..b3fbdcc
--- /dev/null
+++ b/packages/SimAppDialog/res/values-fr/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Activer service données mobiles"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Pour que la nouvelle carte SIM fonctionne correctement, vous devez installer l\'application <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Pour que la nouvelle carte SIM fonctionne correctement, vous devez installer l\'appli de l\'opérateur"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Pas maintenant"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Télécharger l\'application"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-gl/strings.xml b/packages/SimAppDialog/res/values-gl/strings.xml
new file mode 100644
index 0000000..fba3d1c
--- /dev/null
+++ b/packages/SimAppDialog/res/values-gl/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Activa o servizo móbil"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Para conseguir que a túa SIM nova funcione correctamente, deberás instalar a aplicación <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Para conseguir que a túa SIM nova funcione correctamente, deberás instalar a aplicación do operador"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Agora non"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Descargar aplicación"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-gu/strings.xml b/packages/SimAppDialog/res/values-gu/strings.xml
new file mode 100644
index 0000000..deb3020
--- /dev/null
+++ b/packages/SimAppDialog/res/values-gu/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"મોબાઇલ સેવાને સક્રિય કરો"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"તમારું નવું સિમ યોગ્ય રીતે કામ કરે તે માટે, તમારે <xliff:g id="ID_1">%1$s</xliff:g> ઍપ ઇન્સ્ટૉલ કરવાની જરૂર રહેશે"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"તમારું નવું સિમ યોગ્ય રીતે કામ કરે તે માટે, તમારે મોબાઇલ ઑપરેટરની ઍપ ઇન્સ્ટૉલ કરવાની જરૂર રહેશે"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"હમણાં નહીં"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"ઍપ ડાઉનલોડ કરો"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-hi/strings.xml b/packages/SimAppDialog/res/values-hi/strings.xml
new file mode 100644
index 0000000..f5e3edf
--- /dev/null
+++ b/packages/SimAppDialog/res/values-hi/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"सिम ऐप डायलॉग"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"माेबाइल सेवा चालू करें"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"नया सिम ठीक से काम करे, इसके लिए आपको <xliff:g id="ID_1">%1$s</xliff:g> ऐप्लिकेशन इंस्टॉल करना होगा"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"नया सिम ठीक से काम करे, इसके लिए आपको मोबाइल और इंटरनेट सेवा देने वाली कंपनी का ऐप डाउनलोड करना होगा"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"अभी नहीं"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"ऐप्लिकेशन डाउनलोड करें"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-hr/strings.xml b/packages/SimAppDialog/res/values-hr/strings.xml
new file mode 100644
index 0000000..5e6d4f8
--- /dev/null
+++ b/packages/SimAppDialog/res/values-hr/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Aktivirajte mobilnu uslugu"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Da bi vaš novi SIM ispravno radio, morat ćete instalirati aplikaciju <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Da bi vaš novi SIM ispravno radio, morat ćete instalirati aplikaciju mobilnog operatera"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Ne sad"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Preuzmi aplikaciju"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-hu/strings.xml b/packages/SimAppDialog/res/values-hu/strings.xml
new file mode 100644
index 0000000..c96ce83
--- /dev/null
+++ b/packages/SimAppDialog/res/values-hu/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"SIM-alkalmazás dialógusa"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Mobilszolgáltatás aktiválása"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Az új SIM-kártya megfelelő működéséhez telepítenie kell a(z) <xliff:g id="ID_1">%1$s</xliff:g> alkalmazást"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Az új SIM-kártya megfelelő működéséhez telepítenie kell a szolgáltató alkalmazását"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Most nem"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Alkalmazás letöltése"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-hy/strings.xml b/packages/SimAppDialog/res/values-hy/strings.xml
new file mode 100644
index 0000000..fad0435
--- /dev/null
+++ b/packages/SimAppDialog/res/values-hy/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Ակտիվացրեք բջջային կապը"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Նոր SIM քարտի պատշաճ աշխատանքն ապահովելու համար տեղադրեք <xliff:g id="ID_1">%1$s</xliff:g> օպերատորի հավելվածը"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Նոր SIM քարտի պատշաճ աշխատանքն ապահովելու համար տեղադրեք օպերատորի հավելվածը"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Ոչ հիմա"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Ներբեռնել հավելվածը"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-in/strings.xml b/packages/SimAppDialog/res/values-in/strings.xml
new file mode 100644
index 0000000..fde9143
--- /dev/null
+++ b/packages/SimAppDialog/res/values-in/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Dialog Aplikasi SIM"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Aktifkan layanan seluler"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Agar SIM baru berfungsi dengan baik, Anda harus menginstal aplikasi <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Agar SIM baru berfungsi dengan baik, Anda harus menginstal aplikasi operator"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Lain kali"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Download aplikasi"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-is/strings.xml b/packages/SimAppDialog/res/values-is/strings.xml
new file mode 100644
index 0000000..7074140
--- /dev/null
+++ b/packages/SimAppDialog/res/values-is/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Gluggi SIM-forrits"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Virkja farsímaþjónustu"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Til að nýja SIM-kortið þitt virki eins og vera ber þarftu að setja upp forritið <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Til að nýja SIM-kortið þitt virki eins og vera ber þarftu að setja upp forrit frá símafyrirtækinu"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Ekki núna"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Sækja forritið"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-it/strings.xml b/packages/SimAppDialog/res/values-it/strings.xml
new file mode 100644
index 0000000..e597fa2
--- /dev/null
+++ b/packages/SimAppDialog/res/values-it/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Attiva il servizio dati mobile"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Affinché la tua nuova SIM possa funzionare correttamente, devi installare l\'app <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Affinché la tua nuova SIM possa funzionare correttamente, devi installare l\'app dell\'operatore"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Non ora"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Scarica app"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-iw/strings.xml b/packages/SimAppDialog/res/values-iw/strings.xml
new file mode 100644
index 0000000..3681911
--- /dev/null
+++ b/packages/SimAppDialog/res/values-iw/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"‏תיבת דו-שיח של אפליקציית כרטיס ה-SIM"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"הפעלה של השירות הסלולרי"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"‏כדי שכרטיס ה-SIM החדש יפעל כראוי, צריך להתקין את האפליקציה <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"‏כדי שכרטיס ה-SIM החדש יפעל כראוי, צריך להתקין את אפליקציית הספק"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"לא עכשיו"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"הורדת האפליקציה"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-ja/strings.xml b/packages/SimAppDialog/res/values-ja/strings.xml
new file mode 100644
index 0000000..209ed29
--- /dev/null
+++ b/packages/SimAppDialog/res/values-ja/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"SIM アプリのダイアログ"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"モバイル サービスを有効にする"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"新しい SIM を正常に機能させるには、<xliff:g id="ID_1">%1$s</xliff:g> アプリをインストールする必要があります"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"新しい SIM を正常に機能させるには、携帯通信会社のアプリをインストールする必要があります"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"後で"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"アプリをダウンロード"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-ka/strings.xml b/packages/SimAppDialog/res/values-ka/strings.xml
new file mode 100644
index 0000000..4c949c4
--- /dev/null
+++ b/packages/SimAppDialog/res/values-ka/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim აპის დიალოგი"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"გაააქტიურეთ მობილური სერვისი"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"ახალი SIM ბარათის გამართული მუშაობისთვის საჭიროა <xliff:g id="ID_1">%1$s</xliff:g> აპის ინსტალაცია"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"ახალი SIM ბარათის გამართული მუშაობისთვის საჭიროა ოპერატორის აპის ინსტალაცია"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"ახლა არა"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"აპის ჩამოტვირთვა"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-kk/strings.xml b/packages/SimAppDialog/res/values-kk/strings.xml
new file mode 100644
index 0000000..d7bf9ae
--- /dev/null
+++ b/packages/SimAppDialog/res/values-kk/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Мобильдік қызметті іске қосыңыз"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Жаңа SIM картаңыз дұрыс жұмыс істеуі үшін, <xliff:g id="ID_1">%1$s</xliff:g> қолданбасын орнатуыңыз қажет."</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Жаңа SIM картаңыз дұрыс жұмыс істеуі үшін, оператордың қолданбасын орнатуыңыз қажет."</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Қазір емес"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Қолданбаны жүктеп алу"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-km/strings.xml b/packages/SimAppDialog/res/values-km/strings.xml
new file mode 100644
index 0000000..9962aa6
--- /dev/null
+++ b/packages/SimAppDialog/res/values-km/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"បើកដំណើរការសេវាកម្មឧបករណ៍ចល័ត"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"ដើម្បីធ្វើឱ្យ​ស៊ីម​ថ្មីរបស់អ្នក​ដំណើរការ​បានត្រឹមត្រូវ អ្នកនឹងត្រូវ​ដំឡើង​កម្មវិធី <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"ដើម្បីធ្វើឱ្យស៊ីមថ្មីរបស់អ្នកដំណើរការ​បានត្រឹមត្រូវ អ្នកនឹងត្រូវដំឡើងកម្មវិធី​ក្រុមហ៊ុនសេវាទូរសព្ទ"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"កុំទាន់"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"ទាញយក​កម្មវិធី"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-kn/strings.xml b/packages/SimAppDialog/res/values-kn/strings.xml
new file mode 100644
index 0000000..c1c3b9a
--- /dev/null
+++ b/packages/SimAppDialog/res/values-kn/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"ಸಿಮ್ ಆ್ಯಪ್ ಡೈಲಾಗ್"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"ಮೊಬೈಲ್ ಸೇವೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"ನಿಮ್ಮ ಹೊಸ ಸಿಮ್ ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಹಾಗೆ ಮಾಡಲು, ನೀವು <xliff:g id="ID_1">%1$s</xliff:g> ಆ್ಯಪ್ ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಬೇಕು"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"ನಿಮ್ಮ ಹೊಸ ಸಿಮ್ ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಹಾಗೆ ಮಾಡಲು, ನೀವು ವಾಹಕ ಆ್ಯಪ್ ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಬೇಕು"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"ಈಗ ಬೇಡ"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"ಆ್ಯಪ್ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-ko/strings.xml b/packages/SimAppDialog/res/values-ko/strings.xml
new file mode 100644
index 0000000..ebecc80
--- /dev/null
+++ b/packages/SimAppDialog/res/values-ko/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"SIM 앱 대화상자"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"모바일 서비스 활성화"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"새로운 SIM을 정상적으로 사용하려면 <xliff:g id="ID_1">%1$s</xliff:g> 앱을 설치해야 합니다."</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"새로운 SIM을 정상적으로 사용하려면 이동통신사 앱을 설치해야 합니다."</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"나중에"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"앱 다운로드"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-ky/strings.xml b/packages/SimAppDialog/res/values-ky/strings.xml
new file mode 100644
index 0000000..32db421
--- /dev/null
+++ b/packages/SimAppDialog/res/values-ky/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"SIM-картанын колдонмосунун диалогу"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Мобилдик кызматты жандыруу"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Жаңы SIM-картаңыз талаптагыдай иштеши үчүн, <xliff:g id="ID_1">%1$s</xliff:g> колдонмосун орнотуп алышыңыз керек"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Жаңы SIM картаңыз талаптагыдай иштеши үчүн, байланыш операторунун колдонмосун орнотуп алышыңыз керек"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Азыр эмес"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Колдонмону жүктөп алуу"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-lo/strings.xml b/packages/SimAppDialog/res/values-lo/strings.xml
new file mode 100644
index 0000000..97eab86
--- /dev/null
+++ b/packages/SimAppDialog/res/values-lo/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"ກ່ອງໂຕ້ຕອບແອັບຊິມ"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"ເປີດໃຊ້ບໍລິການມືຖື"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"ເພື່ອເຮັດໃຫ້ຊິມໃໝ່ຂອງທ່ານເຮັດວຽກໄດ້ຕາມປົກກະຕິ, ທ່ານຕ້ອງຕິດຕັ້ງແອັບ <xliff:g id="ID_1">%1$s</xliff:g> ກ່ອນ"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"ເພື່ອເຮັດໃຫ້ຊິມໃໝ່ຂອງທ່ານເຮັດວຽກໄດ້ຕາມປົກກະຕິ, ທ່ານຕ້ອງຕິດຕັ້ງແອັບຜູ້ໃຫ້ບໍລິການກ່ອນ"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"ບໍ່ຟ້າວເທື່ອ"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"ດາວໂຫຼດແອັບ"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-lt/strings.xml b/packages/SimAppDialog/res/values-lt/strings.xml
new file mode 100644
index 0000000..ab0edbb
--- /dev/null
+++ b/packages/SimAppDialog/res/values-lt/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"SIM kortelės dialogo langas"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Įjungti mob. ryšio paslaugą"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Norint, kad naujoji SIM kortelė tinkamai veiktų, reikia įdiegti „<xliff:g id="ID_1">%1$s</xliff:g>“ programą"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Norint, kad naujoji SIM kortelė tinkamai veiktų, reikia įdiegti operatoriaus programą"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Ne dabar"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Atsisiųsti programą"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-lv/strings.xml b/packages/SimAppDialog/res/values-lv/strings.xml
new file mode 100644
index 0000000..17cb414
--- /dev/null
+++ b/packages/SimAppDialog/res/values-lv/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"SIM kartes lietotnes dialoglodziņš"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Aktivizējiet mobilo pakalpojumu"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Lai jaunā SIM karte darbotos pareizi, jums būs jāinstalē lietotne <xliff:g id="ID_1">%1$s</xliff:g>."</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Lai jaunā SIM karte darbotos pareizi, jums būs jāinstalē mobilo sakaru operatora lietotne."</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Vēlāk"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Lejupielādēt lietotni"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-mk/strings.xml b/packages/SimAppDialog/res/values-mk/strings.xml
new file mode 100644
index 0000000..481dfae
--- /dev/null
+++ b/packages/SimAppDialog/res/values-mk/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Активирајте мобилна услуга"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"За да работи правилно вашата нова SIM-картичка, треба да ја инсталирате апликацијата <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"За да работи правилно вашата нова SIM-картичка, треба да ја инсталирате апликацијата на операторот"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Не сега"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Преземете апликација"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-ml/strings.xml b/packages/SimAppDialog/res/values-ml/strings.xml
new file mode 100644
index 0000000..8e0b465
--- /dev/null
+++ b/packages/SimAppDialog/res/values-ml/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"സിം ആപ്പ് ഡയലോഗ്"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"മൊബൈൽ സേവനം സജീവമാക്കുക"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"നിങ്ങളുടെ പുതിയ സിം ശരിയായി പ്രവർത്തിക്കുന്നതിന് <xliff:g id="ID_1">%1$s</xliff:g> ആപ്പ് ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതുണ്ട്"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"നിങ്ങളുടെ പുതിയ സിം ശരിയായി പ്രവർത്തിക്കുന്നതിന് കാരിയർ ആപ്പ് ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതുണ്ട്"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"ഇപ്പോൾ വേണ്ട"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"ആപ്പ് ഡൗൺലോഡ് ചെയ്യുക"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-mn/strings.xml b/packages/SimAppDialog/res/values-mn/strings.xml
new file mode 100644
index 0000000..f21b80b
--- /dev/null
+++ b/packages/SimAppDialog/res/values-mn/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim аппын харилцах цонх"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Мобайл үйлчилгээг идэвхжүүлэх"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Та шинэ СИМ-ээ зөв ажиллуулахын тулд <xliff:g id="ID_1">%1$s</xliff:g> аппыг суулгах хэрэгтэй болно"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Та шинэ СИМ-ээ зөв ажиллуулахын тулд оператор компанийхаа аппыг суулгах хэрэгтэй болно"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Одоо биш"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Апп татах"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-mr/strings.xml b/packages/SimAppDialog/res/values-mr/strings.xml
new file mode 100644
index 0000000..936abe9
--- /dev/null
+++ b/packages/SimAppDialog/res/values-mr/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"मोबाइल सेवा अ‍ॅक्टिव्हेट करा"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"तुमच्या नवीन सिम ने योग्यरीत्या काम करावे यासाठी तुम्हाला <xliff:g id="ID_1">%1$s</xliff:g> ॲप इंस्टॉल करणे आवश्यक आहे"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"तुमच्या नवीन सिम ने योग्यरीत्या काम करावे यासाठी तुम्हाला वाहकाचे ॲप इंस्टॉल करणे आवश्यक आहे"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"आता नको"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"अ‍ॅप डाउनलोड करा"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-ms/strings.xml b/packages/SimAppDialog/res/values-ms/strings.xml
new file mode 100644
index 0000000..2d9722b
--- /dev/null
+++ b/packages/SimAppDialog/res/values-ms/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Dialog Apl Sim"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Aktifkan perkhdmtn mudah alih"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Untuk memastikan SIM baharu anda berfungsi dengan betul, anda perlu memasang apl <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Untuk memastikan SIM baharu anda berfungsi dengan betul, anda perlu memasang apl pembawa"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Bukan sekarang"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Muat turun apl"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-my/strings.xml b/packages/SimAppDialog/res/values-my/strings.xml
new file mode 100644
index 0000000..55499e3
--- /dev/null
+++ b/packages/SimAppDialog/res/values-my/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"ဆင်းမ်အက်ပ် အကွက်"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"မိုဘိုင်းဝန်ဆောင်မှု စဖွင့်ရန်"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"သင့်ဆင်းမ်ကတ်အသစ်ကို ကောင်းမွန်စွာ အသုံးပြုနိုင်ရန် <xliff:g id="ID_1">%1$s</xliff:g> အက်ပ်ကို ထည့်သွင်းရပါမည်"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"သင့်ဆင်းမ်ကတ်အသစ်ကို ကောင်းမွန်စွာ အသုံးပြုနိုင်ရန် ဝန်ဆောင်မှုပေးသူအက်ပ်ကို ထည့်သွင်းရပါမည်"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"ယခုမလုပ်ပါ"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"အက်ပ် ဒေါင်းလုဒ်လုပ်ရန်"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-nb/strings.xml b/packages/SimAppDialog/res/values-nb/strings.xml
new file mode 100644
index 0000000..873830f
--- /dev/null
+++ b/packages/SimAppDialog/res/values-nb/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Dialogboks for SIM-kortapp"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Aktiver mobiltjeneste"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"For å få det nye SIM-kortet ditt til å fungere som det skal, må du installere <xliff:g id="ID_1">%1$s</xliff:g>-appen"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"For å få det nye SIM-kortet ditt til å fungere som det skal, må du installere operatørappen"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Ikke nå"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Last ned appen"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-ne/strings.xml b/packages/SimAppDialog/res/values-ne/strings.xml
new file mode 100644
index 0000000..ee69e4c
--- /dev/null
+++ b/packages/SimAppDialog/res/values-ne/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"सिम एपको डायलग"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"मोबाइल सेवा सक्रिय गर्नुहोस्"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"तपाईंको नयाँ SIM ले राम्रोसँग काम गर्न तपाईंले <xliff:g id="ID_1">%1$s</xliff:g> एप इन्स्टल गर्नु पर्ने हुन्छ"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"तपाईंको नयाँ SIM ले राम्रोसँग काम गर्न तपाईंले आफ्नो सेवा प्रदायकको एप इन्स्टल गर्नु पर्ने हुन्छ"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"अहिले होइन"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"एप डाउनलोड गर्नुहोस्"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-nl/strings.xml b/packages/SimAppDialog/res/values-nl/strings.xml
new file mode 100644
index 0000000..9a1ab22
--- /dev/null
+++ b/packages/SimAppDialog/res/values-nl/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Mobiele service activeren"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Als je je nieuwe simkaart wilt gaan gebruiken, moet je de <xliff:g id="ID_1">%1$s</xliff:g>-app installeren"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Als je je nieuwe simkaart wilt gaan gebruiken, moet je de app van je provider installeren"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Niet nu"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"App downloaden"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-or/strings.xml b/packages/SimAppDialog/res/values-or/strings.xml
new file mode 100644
index 0000000..9a79065
--- /dev/null
+++ b/packages/SimAppDialog/res/values-or/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"ମୋବାଇଲ୍ ସେବା ସକ୍ରିୟ କରନ୍ତୁ"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"ଆପଣଙ୍କ ନୂଆ SIM କାର୍ଡ ଠିକ୍ ଭାବେ କାମ କରିବା ପାଇଁ, ଆପଣଙ୍କୁ <xliff:g id="ID_1">%1$s</xliff:g> ଆପ୍ ଇନଷ୍ଟଲ୍ କରିବାକୁ ହେବ"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"ଆପଣଙ୍କ ନୂଆ SIM କାର୍ଡ ଠିକ୍ ଭାବେ କାମ କରିବା ପାଇଁ, ଆପଣଙ୍କୁ ମୋବାଇଲ୍ କମ୍ପାନୀ ଆପ୍ ଇନଷ୍ଟଲ୍ କରିବାକୁ ହେବ"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"ଏବେ ନୁହେଁ"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"ଆପ୍ ଡାଉନଲୋଡ୍ କରନ୍ତୁ"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-pa/strings.xml b/packages/SimAppDialog/res/values-pa/strings.xml
new file mode 100644
index 0000000..04be7a5
--- /dev/null
+++ b/packages/SimAppDialog/res/values-pa/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"ਮੋਬਾਈਲ ਸੇਵਾ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਕਰੋ"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"ਤੁਹਾਡੀ ਨਵੀਂ ਸਿਮ ਦੇ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ <xliff:g id="ID_1">%1$s</xliff:g> ਐਪ ਸਥਾਪਤ ਕਰਨ ਦੀ ਲੋੜ ਪਵੇਗੀ"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"ਤੁਹਾਡੀ ਨਵੀਂ ਸਿਮ ਦੇ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਕੈਰੀਅਰ ਐਪ ਸਥਾਪਤ ਕਰਨ ਦੀ ਲੋੜ ਪਵੇਗੀ"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"ਹਾਲੇ ਨਹੀਂ"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"ਐਪ ਡਾਊਨਲੋਡ ਕਰੋ"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-pl/strings.xml b/packages/SimAppDialog/res/values-pl/strings.xml
new file mode 100644
index 0000000..fcd765a
--- /dev/null
+++ b/packages/SimAppDialog/res/values-pl/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Okno aplikacji do obsługi karty SIM"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Aktywuj usługę sieci"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Aby nowa karta SIM działała prawidłowo, musisz zainstalować aplikację <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Aby nowa karta SIM działała prawidłowo, musisz zainstalować aplikację operatora"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Nie teraz"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Pobierz aplikację"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-pt-rBR/strings.xml b/packages/SimAppDialog/res/values-pt-rBR/strings.xml
new file mode 100644
index 0000000..abf8dbd
--- /dev/null
+++ b/packages/SimAppDialog/res/values-pt-rBR/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Caixa de diálogo do app do chip"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Ativar serviço móvel"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Para que o novo chip funcione corretamente, instale o app <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Para que o novo chip funcione corretamente, instale o app da operadora"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Agora não"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Fazer o download do app"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-pt-rPT/strings.xml b/packages/SimAppDialog/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000..788ab8d
--- /dev/null
+++ b/packages/SimAppDialog/res/values-pt-rPT/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Caixa de diálogo da app do SIM"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Ative o serviço móvel"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Para que o novo SIM funcione corretamente, terá de instalar a app <xliff:g id="ID_1">%1$s</xliff:g>."</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Para que o novo SIM funcione corretamente, terá de instalar a app do operador."</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Agora não"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Transferir app"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-pt/strings.xml b/packages/SimAppDialog/res/values-pt/strings.xml
new file mode 100644
index 0000000..abf8dbd
--- /dev/null
+++ b/packages/SimAppDialog/res/values-pt/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Caixa de diálogo do app do chip"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Ativar serviço móvel"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Para que o novo chip funcione corretamente, instale o app <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Para que o novo chip funcione corretamente, instale o app da operadora"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Agora não"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Fazer o download do app"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-ro/strings.xml b/packages/SimAppDialog/res/values-ro/strings.xml
new file mode 100644
index 0000000..21663d1
--- /dev/null
+++ b/packages/SimAppDialog/res/values-ro/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Activați serviciul mobil"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Pentru ca noul card SIM să funcționeze corect, va trebui să instalați aplicația <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Pentru ca noul card SIM să funcționeze corect, va trebui să instalați aplicația operatorului"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Nu acum"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Descărcați aplicația"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-ru/strings.xml b/packages/SimAppDialog/res/values-ru/strings.xml
new file mode 100644
index 0000000..7a32a7a
--- /dev/null
+++ b/packages/SimAppDialog/res/values-ru/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Приложение для SIM-карты"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Активируйте мобильную связь"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Чтобы новая SIM-карта работала корректно, установите приложение оператора \"<xliff:g id="ID_1">%1$s</xliff:g>\"."</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Чтобы новая SIM-карта работала корректно, установите приложение оператора связи."</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Позже"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Скачать приложение"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-si/strings.xml b/packages/SimAppDialog/res/values-si/strings.xml
new file mode 100644
index 0000000..a4be55f
--- /dev/null
+++ b/packages/SimAppDialog/res/values-si/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"ජංගම සේවාව සක්‍රිය කරන්න"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"ඔබේ නව SIM නිසි ලෙස වැඩ කිරීමට, ඔබට <xliff:g id="ID_1">%1$s</xliff:g> යෙදුම ස්ථාපනය කිරීමට අවශ්‍ය වනු ඇත"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"ඔබේ නව SIM නිසි ලෙස වැඩ කිරීමට, ඔබට වාහක යෙදුම ස්ථාපනය කිරීමට අවශ්‍ය වනු ඇත"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"දැන් නොවේ"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"යෙදුම බාගන්න"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-sk/strings.xml b/packages/SimAppDialog/res/values-sk/strings.xml
new file mode 100644
index 0000000..bafb6dd
--- /dev/null
+++ b/packages/SimAppDialog/res/values-sk/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Dialógové okno aplikácie SIM karty"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Aktivujte mobilnú službu"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Musíte nainštalovať aplikáciu <xliff:g id="ID_1">%1$s</xliff:g>, aby nová SIM karta fungovala správne"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Musíte nainštalovať aplikáciu operátora, aby nová SIM karta fungovala správne"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Teraz nie"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Stiahnuť aplikáciu"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-sl/strings.xml b/packages/SimAppDialog/res/values-sl/strings.xml
new file mode 100644
index 0000000..4a8659a
--- /dev/null
+++ b/packages/SimAppDialog/res/values-sl/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Pogovorno okno aplikacije za SIM"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Aktivirajte mobilno storitev"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Če želite, da bo nova kartica SIM pravilno delovala, morate namestiti aplikac. operaterja <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Če želite, da bo nova kartica SIM pravilno delovala, morate namestiti aplikacijo operaterja"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Ne zdaj"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Prenos aplikacije"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-sq/strings.xml b/packages/SimAppDialog/res/values-sq/strings.xml
new file mode 100644
index 0000000..4ba1b8a
--- /dev/null
+++ b/packages/SimAppDialog/res/values-sq/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Dialogu i aplikacionit të kartës SIM"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Aktivizo shërbimin celular"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Që karta e re SIM të funksionojë siç duhet, duhet të instalosh aplikacionin <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Që karta e re SIM të funksionojë siç duhet, duhet të instalosh aplikacionin e operatorit celular"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Jo tani"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Shkarko aplikacionin"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-sr/strings.xml b/packages/SimAppDialog/res/values-sr/strings.xml
new file mode 100644
index 0000000..5d5921e4
--- /dev/null
+++ b/packages/SimAppDialog/res/values-sr/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Активирајте мобилну услугу"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Да би нова SIM картица исправно радила, треба да инсталирате апликацију <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Да би нова SIM картица исправно радила, треба да инсталирате апликацију мобилног оператера"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Не сада"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Преузми апликацију"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-sv/strings.xml b/packages/SimAppDialog/res/values-sv/strings.xml
new file mode 100644
index 0000000..1da5de1
--- /dev/null
+++ b/packages/SimAppDialog/res/values-sv/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Aktivera mobiltjänst"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Du måste installera <xliff:g id="ID_1">%1$s</xliff:g>-appen om ditt nya SIM-kort ska fungera ordentligt"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Du måste installera operatörens app om ditt nya SIM-kort ska fungera ordentligt"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Inte nu"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Ladda ned app"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-sw/strings.xml b/packages/SimAppDialog/res/values-sw/strings.xml
new file mode 100644
index 0000000..b897927
--- /dev/null
+++ b/packages/SimAppDialog/res/values-sw/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Kidirisha cha Programu ya SIM"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Washa huduma ya simu za mkononi"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Ili SIM yako mpya ifanye kazi vizuri, utahitajika kusakinisha programu ya <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Ili SIM yako mpya ifanye kazi vizuri, utahitajika kusakinisha programu ya mtoa huduma"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Si sasa"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Pakua programu"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-te/strings.xml b/packages/SimAppDialog/res/values-te/strings.xml
new file mode 100644
index 0000000..8a05fe4
--- /dev/null
+++ b/packages/SimAppDialog/res/values-te/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"సిమ్ యాప్ డైలాగ్"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"మొబైల్ సేవను యాక్టివేట్ చేయండి"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"మీ SIM సరిగ్గా పనిచేయడానికి, మీరు <xliff:g id="ID_1">%1$s</xliff:g> యాప్‌ను ఇన్‌స్టాల్ చేయాల్సి ఉంటుంది"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"మీ SIM సరిగ్గా పనిచేయడానికి, మీరు క్యారియర్ యాప్‌ని ఇన్‌స్టాల్ చేయాల్సి ఉంటుంది"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"ఇప్పుడు కాదు"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"యాప్‌ని డౌన్‌లోడ్ చేయండి"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-th/strings.xml b/packages/SimAppDialog/res/values-th/strings.xml
new file mode 100644
index 0000000..00b7258
--- /dev/null
+++ b/packages/SimAppDialog/res/values-th/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"เปิดใช้งานบริการมือถือ"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"คุณจะต้องติดตั้งแอป <xliff:g id="ID_1">%1$s</xliff:g> เพื่อให้ซิมใหม่ทำงานได้อย่างถูกต้อง"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"คุณจะต้องติดตั้งแอปของผู้ให้บริการเพื่อให้ซิมใหม่ทำงานได้อย่างถูกต้อง"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"ไว้ทีหลัง"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"ดาวน์โหลดแอป"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-tl/strings.xml b/packages/SimAppDialog/res/values-tl/strings.xml
new file mode 100644
index 0000000..f6c304f
--- /dev/null
+++ b/packages/SimAppDialog/res/values-tl/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"I-activate ang mobile service"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Para mapagana nang maayos ang iyong bagong SIM, kakailanganin mong i-install ang <xliff:g id="ID_1">%1$s</xliff:g> app"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Para mapagana nang maayos ang iyong bagong SIM, kakailanganin mong i-install ang app ng carrier"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Huwag ngayon"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"I-download ang app"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-tr/strings.xml b/packages/SimAppDialog/res/values-tr/strings.xml
new file mode 100644
index 0000000..c33fa27
--- /dev/null
+++ b/packages/SimAppDialog/res/values-tr/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Mobil hizmeti etkinleştirin"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Yeni SIM\'inizin düzgün çalışması için <xliff:g id="ID_1">%1$s</xliff:g> uygulamasını yüklemeniz gerekir"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Yeni SIM\'inizin düzgün çalışması için operatör uygulamasını yüklemeniz gerekir"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Şimdi değil"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Uygulama indir"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-uk/strings.xml b/packages/SimAppDialog/res/values-uk/strings.xml
new file mode 100644
index 0000000..e86f49e
--- /dev/null
+++ b/packages/SimAppDialog/res/values-uk/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Активувати мобільний сервіс"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Установіть додаток <xliff:g id="ID_1">%1$s</xliff:g>, щоб нова SIM-карта працювала належним чином"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Установіть додаток оператора, щоб нова SIM-карта працювала належним чином"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Не зараз"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Завантажити додаток"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-ur/strings.xml b/packages/SimAppDialog/res/values-ur/strings.xml
new file mode 100644
index 0000000..1e071d8
--- /dev/null
+++ b/packages/SimAppDialog/res/values-ur/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"‏Sim ایپ ڈائیلاگ"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"موبائل سروس فعال کریں"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"‏آپ کی نئی SIM کو ٹھیک طرح سے کام کرنے کے لیے آپ کو <xliff:g id="ID_1">%1$s</xliff:g> ایپ انسٹال کرنے کی ضرورت ہو گی"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"‏آپ کی نئی SIM کو ٹھیک طرح سے کام کرنے کے لیے آپ کو کیریئر ایپ انسٹال کرنے کی ضرورت ہو گی"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"ابھی نہیں"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"ایپ ڈاؤن لوڈ کریں"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-uz/strings.xml b/packages/SimAppDialog/res/values-uz/strings.xml
new file mode 100644
index 0000000..49a54a2
--- /dev/null
+++ b/packages/SimAppDialog/res/values-uz/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Mobil xizmatni faollashtirish"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Yangi SIM karta bexato ishlashi uchun <xliff:g id="ID_1">%1$s</xliff:g> ilovasini oʻrnatishingiz lozim"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Yangi SIM karta bexato ishlashi uchun aloqa operatori ilovasini oʻrnatishingiz lozim"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Keyinroq"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Ilovani yuklab olish"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-vi/strings.xml b/packages/SimAppDialog/res/values-vi/strings.xml
new file mode 100644
index 0000000..6ff3c3b
--- /dev/null
+++ b/packages/SimAppDialog/res/values-vi/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Hộp thoại ứng dụng SIM"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Kích hoạt dịch vụ di động"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Để SIM mới hoạt động đúng cách, bạn cần phải cài đặt ứng dụng <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Để SIM mới hoạt động đúng cách, bạn cần phải cài đặt ứng dụng của nhà mạng"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Để sau"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Tải ứng dụng xuống"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-zh-rCN/strings.xml b/packages/SimAppDialog/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..4b3fc5f
--- /dev/null
+++ b/packages/SimAppDialog/res/values-zh-rCN/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"激活移动网络服务"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"您需要安装<xliff:g id="ID_1">%1$s</xliff:g>应用,新 SIM 卡才能正常运行"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"您需要安装运营商应用,新 SIM 卡才能正常运行"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"以后再说"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"下载应用"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-zh-rHK/strings.xml b/packages/SimAppDialog/res/values-zh-rHK/strings.xml
new file mode 100644
index 0000000..bc490f0
--- /dev/null
+++ b/packages/SimAppDialog/res/values-zh-rHK/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"啟動流動服務"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"為確保新的 SIM 卡正常運作,您必須先安裝「<xliff:g id="ID_1">%1$s</xliff:g>」應用程式"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"為確保新的 SIM 卡正常運作,您必須先安裝流動網絡供應商應用程式"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"暫時不要"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"下載應用程式"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-zh-rTW/strings.xml b/packages/SimAppDialog/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..14ec10f
--- /dev/null
+++ b/packages/SimAppDialog/res/values-zh-rTW/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Sim App Dialog"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"啟用行動服務"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"你必須安裝「<xliff:g id="ID_1">%1$s</xliff:g>」應用程式,新的 SIM 卡才能正常運作"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"你必須安裝電信業者應用程式,新的 SIM 卡才能正常運作"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"暫時不要"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"下載應用程式"</string>
+</resources>
diff --git a/packages/SimAppDialog/res/values-zu/strings.xml b/packages/SimAppDialog/res/values-zu/strings.xml
new file mode 100644
index 0000000..cf3b935
--- /dev/null
+++ b/packages/SimAppDialog/res/values-zu/strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright (C) 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name" msgid="8898068901680117589">"Ibhokisi Lohlelo Lokusebenza le-Sim"</string>
+    <string name="install_carrier_app_title" msgid="334729104862562585">"Yenza kusebenze isevisi yeselula"</string>
+    <string name="install_carrier_app_description" msgid="4014303558674923797">"Ukuze i-SIM yakho entsha isebenze kahle, kuzodingeka ufake uhlelo lokusebenza le-<xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="install_carrier_app_description_default" msgid="7356830245205847840">"Ukuze i-SIM yakho entsha isebenze kahle, kuzodingeka ufake uhlelo lokusebenza lenkampini yenethiwekhi"</string>
+    <string name="install_carrier_app_defer_action" msgid="2558576736886876209">"Hhayi manje"</string>
+    <string name="install_carrier_app_download_action" msgid="7859229305958538064">"Landa uhlelo lokusebenza"</string>
+</resources>
diff --git a/packages/SoundPicker/res/values-af/strings.xml b/packages/SoundPicker/res/values-af/strings.xml
index cf64146..10110f6 100644
--- a/packages/SoundPicker/res/values-af/strings.xml
+++ b/packages/SoundPicker/res/values-af/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Verstekluitoon"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Verstekkennisgewingklank"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Verstekwekkerklank"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Voeg luitoon by"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Voeg wekker by"</string>
diff --git a/packages/SoundPicker/res/values-am/strings.xml b/packages/SoundPicker/res/values-am/strings.xml
index 9026d36..57f7897 100644
--- a/packages/SoundPicker/res/values-am/strings.xml
+++ b/packages/SoundPicker/res/values-am/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"ነባሪ የስልክ ላይ ጥሪ"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"ነባሪ የማሳወቂያ ድምጽ"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"ነባሪ የማንቂያ ድምፅ"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"የጥሪ ቅላጼ አክል"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"የማንቂያ ደውል አክል"</string>
diff --git a/packages/SoundPicker/res/values-ar/strings.xml b/packages/SoundPicker/res/values-ar/strings.xml
index 0af7ff5..57740ef6 100644
--- a/packages/SoundPicker/res/values-ar/strings.xml
+++ b/packages/SoundPicker/res/values-ar/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"نغمة الرنين التلقائية"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"الصوت التلقائي للإشعارات"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"الصوت التلقائي للمنبّه"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"إضافة نغمة رنين"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"إضافة منبه"</string>
diff --git a/packages/SoundPicker/res/values-as/strings.xml b/packages/SoundPicker/res/values-as/strings.xml
index 6cbea07..659f2d5 100644
--- a/packages/SoundPicker/res/values-as/strings.xml
+++ b/packages/SoundPicker/res/values-as/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"পূর্বনিধার্ৰিত ৰিংট\'ন"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"জাননীৰ ডিফ’ল্ট ধ্বনি"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"এলাৰ্মৰ ডিফ\'ল্ট ধ্বনি"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"ৰিংট\'ন যোগ কৰক"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"এলাৰ্ম যোগ কৰক"</string>
diff --git a/packages/SoundPicker/res/values-az/strings.xml b/packages/SoundPicker/res/values-az/strings.xml
index 16f739d..93f4d79 100644
--- a/packages/SoundPicker/res/values-az/strings.xml
+++ b/packages/SoundPicker/res/values-az/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Defolt rinqton"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Defolt bildiriş səsi"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Defolt siqnal səsi"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Zəng səsi daxil edin"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Siqnal əlavə edin"</string>
diff --git a/packages/SoundPicker/res/values-b+sr+Latn/strings.xml b/packages/SoundPicker/res/values-b+sr+Latn/strings.xml
index 03fd58a..ba8e87f 100644
--- a/packages/SoundPicker/res/values-b+sr+Latn/strings.xml
+++ b/packages/SoundPicker/res/values-b+sr+Latn/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Podrazumevani zvuk zvona"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Podrazumevani zvuk obaveštenja"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Podrazumevani zvuk alarma"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Dodaj melodiju zvona"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Dodajte alarm"</string>
diff --git a/packages/SoundPicker/res/values-be/strings.xml b/packages/SoundPicker/res/values-be/strings.xml
index 55f6ab3..81b9987 100644
--- a/packages/SoundPicker/res/values-be/strings.xml
+++ b/packages/SoundPicker/res/values-be/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Стандартны рынгтон"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Стандартны гук апавяшчэння"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Стандартны сігнал будзільніка"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Дадаць рынгтон"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Дадаць будзільнік"</string>
diff --git a/packages/SoundPicker/res/values-bg/strings.xml b/packages/SoundPicker/res/values-bg/strings.xml
index c31f35f..e1cd2a6 100644
--- a/packages/SoundPicker/res/values-bg/strings.xml
+++ b/packages/SoundPicker/res/values-bg/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Стандартна мелодия"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Стандартен звук за известяване"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Стандартен звук за будилника"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Добавяне на мелодия"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Добавяне на будилник"</string>
diff --git a/packages/SoundPicker/res/values-bn/strings.xml b/packages/SoundPicker/res/values-bn/strings.xml
index ebbed15..e248c2c 100644
--- a/packages/SoundPicker/res/values-bn/strings.xml
+++ b/packages/SoundPicker/res/values-bn/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"ডিফল্ট রিংটোন"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"ডিফল্ট বিজ্ঞপ্তির সাউন্ড"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"ডিফল্ট অ্যালার্মের সাউন্ড"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"রিংটোন যোগ করুন"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"অ্যালার্ম যোগ করুন"</string>
diff --git a/packages/SoundPicker/res/values-bs/strings.xml b/packages/SoundPicker/res/values-bs/strings.xml
index ad4fe57..fdabd5d 100644
--- a/packages/SoundPicker/res/values-bs/strings.xml
+++ b/packages/SoundPicker/res/values-bs/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Zadana melodija zvona"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Zadani zvuk obavještenja"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Zadani zvuk alarma"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Dodaj melodiju zvona"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Dodajte alarm"</string>
diff --git a/packages/SoundPicker/res/values-ca/strings.xml b/packages/SoundPicker/res/values-ca/strings.xml
index 5b32429..9170740 100644
--- a/packages/SoundPicker/res/values-ca/strings.xml
+++ b/packages/SoundPicker/res/values-ca/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"So predeterminat"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"So de notificació predeterminat"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"So d\'alarma predeterminat"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Afegeix un so de trucada"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Afegeix una alarma"</string>
diff --git a/packages/SoundPicker/res/values-cs/strings.xml b/packages/SoundPicker/res/values-cs/strings.xml
index d60e217..899277e 100644
--- a/packages/SoundPicker/res/values-cs/strings.xml
+++ b/packages/SoundPicker/res/values-cs/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Výchozí vyzváněcí tón"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Výchozí zvuk oznámení"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Výchozí zvuk budíku"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Přidat vyzváněcí tón"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Přidat budík"</string>
diff --git a/packages/SoundPicker/res/values-da/strings.xml b/packages/SoundPicker/res/values-da/strings.xml
index c4ba8ee..fb3b164 100644
--- a/packages/SoundPicker/res/values-da/strings.xml
+++ b/packages/SoundPicker/res/values-da/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Standardringetone"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Standardlyd for notifikationer"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Standardlyd for alarmer"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Tilføj ringetone"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Tilføj alarm"</string>
diff --git a/packages/SoundPicker/res/values-de/strings.xml b/packages/SoundPicker/res/values-de/strings.xml
index ca7e498..b707874 100644
--- a/packages/SoundPicker/res/values-de/strings.xml
+++ b/packages/SoundPicker/res/values-de/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Standard-Klingelton"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Standard-Benachrichtigungston"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Standard-Weckton"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Klingelton hinzufügen"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Weckruf hinzufügen"</string>
diff --git a/packages/SoundPicker/res/values-el/strings.xml b/packages/SoundPicker/res/values-el/strings.xml
index b600e88..05c69fe 100644
--- a/packages/SoundPicker/res/values-el/strings.xml
+++ b/packages/SoundPicker/res/values-el/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Προεπιλεγμένος ήχος κλήσης"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Προεπιλεγμένος ήχος ειδοποίησης"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Προεπιλεγμένος ήχος ειδοποίησης"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Προσθήκη ήχου κλήσης"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Προσθήκη ξυπνητηριού"</string>
diff --git a/packages/SoundPicker/res/values-es-rUS/strings.xml b/packages/SoundPicker/res/values-es-rUS/strings.xml
index e6cb5ff..96c5e84 100644
--- a/packages/SoundPicker/res/values-es-rUS/strings.xml
+++ b/packages/SoundPicker/res/values-es-rUS/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Tono predeterminado"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Sonido de notificación predeterminado"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Sonido de alarma predeterminado"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Agregar tono"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Agregar alarma"</string>
diff --git a/packages/SoundPicker/res/values-es/strings.xml b/packages/SoundPicker/res/values-es/strings.xml
index c7e8be2..feccaef 100644
--- a/packages/SoundPicker/res/values-es/strings.xml
+++ b/packages/SoundPicker/res/values-es/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Tono por defecto"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Sonido de notificación predeterminado"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Sonido de alarma predeterminado"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Añadir tono de llamada"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Añadir alarma"</string>
diff --git a/packages/SoundPicker/res/values-eu/strings.xml b/packages/SoundPicker/res/values-eu/strings.xml
index 33133b0..ae3fb99 100644
--- a/packages/SoundPicker/res/values-eu/strings.xml
+++ b/packages/SoundPicker/res/values-eu/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Tonu lehenetsia"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Jakinarazpenen soinu lehenetsia"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Alarmaren soinu lehenetsia"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Gehitu tonua"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Gehitu alarma"</string>
diff --git a/packages/SoundPicker/res/values-fa/strings.xml b/packages/SoundPicker/res/values-fa/strings.xml
index 908efaf..bc39f74 100644
--- a/packages/SoundPicker/res/values-fa/strings.xml
+++ b/packages/SoundPicker/res/values-fa/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"آهنگ زنگ پیش‌فرض"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"صدای اعلان پیش‌فرض"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"صدای زنگ پیش‌فرض"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"افزودن آهنگ زنگ"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"افزودن زنگ"</string>
diff --git a/packages/SoundPicker/res/values-fi/strings.xml b/packages/SoundPicker/res/values-fi/strings.xml
index 812e0ec..2d60263 100644
--- a/packages/SoundPicker/res/values-fi/strings.xml
+++ b/packages/SoundPicker/res/values-fi/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Oletussoittoääni"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Ilmoituksen oletusääni"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Herätyksen oletusääni"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Lisää soittoääni"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Lisää hälytys"</string>
diff --git a/packages/SoundPicker/res/values-fr/strings.xml b/packages/SoundPicker/res/values-fr/strings.xml
index ece6a13..63182df 100644
--- a/packages/SoundPicker/res/values-fr/strings.xml
+++ b/packages/SoundPicker/res/values-fr/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Sonnerie par défaut"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Son de notification par défaut"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Son de l\'alarme par défaut"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Ajouter une sonnerie"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Ajouter une alarme"</string>
diff --git a/packages/SoundPicker/res/values-gl/strings.xml b/packages/SoundPicker/res/values-gl/strings.xml
index 2d75f22..70194c7 100644
--- a/packages/SoundPicker/res/values-gl/strings.xml
+++ b/packages/SoundPicker/res/values-gl/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Ton de chamada predeterminado"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Son de notificación predeterminado"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Son de alarma predeterminado"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Engadir ton de chamada"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Engadir alarma"</string>
diff --git a/packages/SoundPicker/res/values-gu/strings.xml b/packages/SoundPicker/res/values-gu/strings.xml
index 0505b46..70d5c2c 100644
--- a/packages/SoundPicker/res/values-gu/strings.xml
+++ b/packages/SoundPicker/res/values-gu/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"ડિફોલ્ટ રિંગટોન"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"ડિફૉલ્ટ નોટિફિકેશન સાઉન્ડ"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"ડિફૉલ્ટ એલાર્મ સાઉન્ડ"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"રિંગટોન ઉમેરો"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"અલાર્મ ઉમેરો"</string>
diff --git a/packages/SoundPicker/res/values-hi/strings.xml b/packages/SoundPicker/res/values-hi/strings.xml
index 1d18da2..316447c 100644
--- a/packages/SoundPicker/res/values-hi/strings.xml
+++ b/packages/SoundPicker/res/values-hi/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"डिफ़ॉल्‍ट रिंगटोन"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"सूचना की डिफ़ॉल्ट आवाज़"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"डिफ़ॉल्ट अलार्म आवाज़"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"रिंगटोन जोड़ेंं"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"अलार्म जोड़ें"</string>
diff --git a/packages/SoundPicker/res/values-hr/strings.xml b/packages/SoundPicker/res/values-hr/strings.xml
index 1a39817..ed0a27d 100644
--- a/packages/SoundPicker/res/values-hr/strings.xml
+++ b/packages/SoundPicker/res/values-hr/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Zadana melodija zvona"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Zadani zvuk obavijesti"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Zadani zvuk alarma"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Dodaj melodiju zvona"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Dodaj alarm"</string>
diff --git a/packages/SoundPicker/res/values-hu/strings.xml b/packages/SoundPicker/res/values-hu/strings.xml
index 6b83509..da0b1c4 100644
--- a/packages/SoundPicker/res/values-hu/strings.xml
+++ b/packages/SoundPicker/res/values-hu/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Alapértelmezett csengőhang"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Alapértelmezett értesítőhang"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Alapértelmezett ébresztési hang"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Csengőhang hozzáadása"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Ébresztés hozzáadása"</string>
diff --git a/packages/SoundPicker/res/values-is/strings.xml b/packages/SoundPicker/res/values-is/strings.xml
index 68994aa..ee4ca2e 100644
--- a/packages/SoundPicker/res/values-is/strings.xml
+++ b/packages/SoundPicker/res/values-is/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Sjálfgefinn hringitónn"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Sjálfgefið hljóð tilkynninga"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Sjálfgefið hljóð í vekjara"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Bæta hringitóni við"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Bæta vekjara við"</string>
diff --git a/packages/SoundPicker/res/values-it/strings.xml b/packages/SoundPicker/res/values-it/strings.xml
index e9302c1..f3fa569 100644
--- a/packages/SoundPicker/res/values-it/strings.xml
+++ b/packages/SoundPicker/res/values-it/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Suoneria predefinita"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Suono di notifica predefinito"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Suono sveglia predefinito"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Aggiungi suoneria"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Aggiungi sveglia"</string>
diff --git a/packages/SoundPicker/res/values-iw/strings.xml b/packages/SoundPicker/res/values-iw/strings.xml
index 2bed8e0..efe6f1e 100644
--- a/packages/SoundPicker/res/values-iw/strings.xml
+++ b/packages/SoundPicker/res/values-iw/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"רינגטון ברירת מחדל"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"צליל ברירת מחדל להתראות"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"צליל לשעון מעורר"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"רינגטון חדש"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"הוספת התראה"</string>
diff --git a/packages/SoundPicker/res/values-ja/strings.xml b/packages/SoundPicker/res/values-ja/strings.xml
index d3ebccc..22f4e50 100644
--- a/packages/SoundPicker/res/values-ja/strings.xml
+++ b/packages/SoundPicker/res/values-ja/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"プリセット着信音"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"デフォルトの通知音"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"デフォルトの警告音"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"着信音を追加"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"アラームの追加"</string>
diff --git a/packages/SoundPicker/res/values-ka/strings.xml b/packages/SoundPicker/res/values-ka/strings.xml
index c097d91..5016208 100644
--- a/packages/SoundPicker/res/values-ka/strings.xml
+++ b/packages/SoundPicker/res/values-ka/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"ნაგულისხმევი ზარი"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"შეტყობინების ნაგულისხმევი ხმა"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"მაღვიძარას ნაგულისხმევი ხმა"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"ზარის დამატება"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"მაღვიძარას დამატება"</string>
diff --git a/packages/SoundPicker/res/values-kk/strings.xml b/packages/SoundPicker/res/values-kk/strings.xml
index a2ddf5e..1c74567 100644
--- a/packages/SoundPicker/res/values-kk/strings.xml
+++ b/packages/SoundPicker/res/values-kk/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Әдепкі рингтон"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Әдепкі хабарландыру дыбысы"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Әдепкі дабыл дыбысы"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Рингтон енгізу"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Оятқыш енгізу"</string>
diff --git a/packages/SoundPicker/res/values-km/strings.xml b/packages/SoundPicker/res/values-km/strings.xml
index dcc202a..d512bc6 100644
--- a/packages/SoundPicker/res/values-km/strings.xml
+++ b/packages/SoundPicker/res/values-km/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"សំឡេង​រោទ៍​លំនាំដើម"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"សំឡេង​ជូន​ដំណឹង​លំនាំដើម"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"សំឡេងម៉ោងរោទិ៍លំនាំដើម"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"បន្ថែម​សំឡេង​រោទ៍"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"បញ្ចូល​ម៉ោងរោទ៍"</string>
diff --git a/packages/SoundPicker/res/values-kn/strings.xml b/packages/SoundPicker/res/values-kn/strings.xml
index 705dd0d..030d3f2 100644
--- a/packages/SoundPicker/res/values-kn/strings.xml
+++ b/packages/SoundPicker/res/values-kn/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"ಡಿಫಾಲ್ಟ್ ರಿಂಗ್‌ಟೋನ್"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"ಡೀಫಾಲ್ಟ್ ಅಧಿಸೂಚನೆ ಧ್ವನಿ"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"ಡೀಫಾಲ್ಟ್ ಅಲಾರಾಂ ಧ್ವನಿ"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"ರಿಂಗ್‌ಟೋನ್ ಸೇರಿಸಿ"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"ಅಲಾರಾಂ ಸೇರಿಸಿ"</string>
diff --git a/packages/SoundPicker/res/values-ko/strings.xml b/packages/SoundPicker/res/values-ko/strings.xml
index 6d59034..555434f 100644
--- a/packages/SoundPicker/res/values-ko/strings.xml
+++ b/packages/SoundPicker/res/values-ko/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"기본 벨소리"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"기본 알림 소리"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"기본 알람 소리"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"벨소리 추가"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"알람 추가"</string>
diff --git a/packages/SoundPicker/res/values-ky/strings.xml b/packages/SoundPicker/res/values-ky/strings.xml
index bd6c17d..5a3ef90 100644
--- a/packages/SoundPicker/res/values-ky/strings.xml
+++ b/packages/SoundPicker/res/values-ky/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Демейки шыңгыр"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Билдирменин демейки үнү"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Ойготкучтун демейки үнү"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Шыңгыр кошуу"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Ойготкуч кошуу"</string>
diff --git a/packages/SoundPicker/res/values-lo/strings.xml b/packages/SoundPicker/res/values-lo/strings.xml
index f225a6c..983ff72 100644
--- a/packages/SoundPicker/res/values-lo/strings.xml
+++ b/packages/SoundPicker/res/values-lo/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"ຣິງໂທນເລີ່ມຕົ້ນ"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"ສຽງແຈ້ງເຕືອນເລີ່ມຕົ້ນ"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"ສຽງໂມງປຸກຕາມຄ່າເລີ່ມຕົ້ນ"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"ເພີ່ມຣິງໂທນ"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"ເພີ່ມໂມງປຸກ"</string>
diff --git a/packages/SoundPicker/res/values-lt/strings.xml b/packages/SoundPicker/res/values-lt/strings.xml
index cc1b0e6..0789ea1 100644
--- a/packages/SoundPicker/res/values-lt/strings.xml
+++ b/packages/SoundPicker/res/values-lt/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Numatytasis skambėjimo tonas"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Numatytasis pranešimo garsas"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Numatytasis signalo garsas"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Pridėti skambėjimo toną"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Pridėti signalą"</string>
diff --git a/packages/SoundPicker/res/values-lv/strings.xml b/packages/SoundPicker/res/values-lv/strings.xml
index 421ad0b..3d0c5ca 100644
--- a/packages/SoundPicker/res/values-lv/strings.xml
+++ b/packages/SoundPicker/res/values-lv/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Noklusējuma zvana signāls"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Paziņojuma noklusējuma skaņa"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Signāla noklusējuma skaņa"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Pievienot zvana signālu"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Pievienot signālu"</string>
diff --git a/packages/SoundPicker/res/values-mk/strings.xml b/packages/SoundPicker/res/values-mk/strings.xml
index b5008ce..f39c386 100644
--- a/packages/SoundPicker/res/values-mk/strings.xml
+++ b/packages/SoundPicker/res/values-mk/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Стандардна мелодија"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Стандарден звук за известување"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Стандарден звук за аларм"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Додај мелодија"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Додајте аларм"</string>
diff --git a/packages/SoundPicker/res/values-ml/strings.xml b/packages/SoundPicker/res/values-ml/strings.xml
index f2d51f53..738d7ab 100644
--- a/packages/SoundPicker/res/values-ml/strings.xml
+++ b/packages/SoundPicker/res/values-ml/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"ഡിഫോൾട്ട് റിംഗ്‌ടോൺ"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"ഡിഫോൾട്ട് അറിയിപ്പ് ശബ്‌ദം"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"ഡിഫോൾട്ട് അലാറം ശബ്ദം"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"റിംഗ്‌ടോൺ ചേർക്കുക"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"അലാറം ചേർക്കുക"</string>
diff --git a/packages/SoundPicker/res/values-mn/strings.xml b/packages/SoundPicker/res/values-mn/strings.xml
index e996d19..cfc81d6 100644
--- a/packages/SoundPicker/res/values-mn/strings.xml
+++ b/packages/SoundPicker/res/values-mn/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Үндсэн хонхны ая"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Мэдэгдлийн өгөгдмөл ая"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Сэрүүлгийн өгөгдмөл дуу"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Хонхны ая нэмэх"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Сэрүүлэг нэмэх"</string>
diff --git a/packages/SoundPicker/res/values-mr/strings.xml b/packages/SoundPicker/res/values-mr/strings.xml
index 19ab294..e759eb3 100644
--- a/packages/SoundPicker/res/values-mr/strings.xml
+++ b/packages/SoundPicker/res/values-mr/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"डीफॉल्ट रिंगटोन"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"डीफॉल्ट सूचना आवाज"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"डीफॉल्ट अलार्म ध्वनी"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"रिंगटोन जोडा"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"अलार्म जोडा"</string>
diff --git a/packages/SoundPicker/res/values-ms/strings.xml b/packages/SoundPicker/res/values-ms/strings.xml
index bda0bde..a65f8bc 100644
--- a/packages/SoundPicker/res/values-ms/strings.xml
+++ b/packages/SoundPicker/res/values-ms/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Nada dering lalai"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Bunyi pemberitahuan lalai"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Bunyi penggera lalai"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Tambah nada dering"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Tambah penggera"</string>
diff --git a/packages/SoundPicker/res/values-my/strings.xml b/packages/SoundPicker/res/values-my/strings.xml
index 36225d7..83c4414 100644
--- a/packages/SoundPicker/res/values-my/strings.xml
+++ b/packages/SoundPicker/res/values-my/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"မူရင်းမြည်သံ"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"မူရင်းအကြောင်းကြားသံ"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"မူရင်းနှိုးစက်သံ"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"ဖုန်းမြည်သံကို ထည့်ရန်"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"နှိုးစက်ထည့်ရန်"</string>
diff --git a/packages/SoundPicker/res/values-nb/strings.xml b/packages/SoundPicker/res/values-nb/strings.xml
index 726e716..37d3ee0 100644
--- a/packages/SoundPicker/res/values-nb/strings.xml
+++ b/packages/SoundPicker/res/values-nb/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Standard ringetone"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Standard varsellyd"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Standard alarmlyd"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Legg til ringelyd"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Legg til en alarm"</string>
diff --git a/packages/SoundPicker/res/values-ne/strings.xml b/packages/SoundPicker/res/values-ne/strings.xml
index d5f0bf60..0f787cf 100644
--- a/packages/SoundPicker/res/values-ne/strings.xml
+++ b/packages/SoundPicker/res/values-ne/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"पूर्वनिर्धारित रिङटोन"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"सूचनाको पूर्वनिर्धारित ध्वनि"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"अलार्मका लागि पूर्वनिर्धारित ध्वनि"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"रिङटोन थप्नुहोस्"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"अलार्म थप्नुहोस्"</string>
diff --git a/packages/SoundPicker/res/values-nl/strings.xml b/packages/SoundPicker/res/values-nl/strings.xml
index 998f908..90f2f78 100644
--- a/packages/SoundPicker/res/values-nl/strings.xml
+++ b/packages/SoundPicker/res/values-nl/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Standaardbeltoon"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Standaard meldingsgeluid"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Standaard alarmgeluid"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Ringtone toevoegen"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Wekker toevoegen"</string>
diff --git a/packages/SoundPicker/res/values-or/strings.xml b/packages/SoundPicker/res/values-or/strings.xml
index d06f70b..89dd760 100644
--- a/packages/SoundPicker/res/values-or/strings.xml
+++ b/packages/SoundPicker/res/values-or/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"ଡିଫଲ୍ଟ ରିଙ୍ଗଟୋନ୍‌"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"ଡିଫଲ୍ଟ ବିଜ୍ଞପ୍ତି ସାଉଣ୍ଡ"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"ଡିଫଲ୍ଟ ଆଲାର୍ମ ଶବ୍ଦ"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"ରିଙ୍ଗଟୋନ୍‍ ଯୋଡ଼ନ୍ତୁ"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"ଆଲାର୍ମ ଯୋଗ କରନ୍ତୁ"</string>
diff --git a/packages/SoundPicker/res/values-pa/strings.xml b/packages/SoundPicker/res/values-pa/strings.xml
index bdd66ed..6946f18 100644
--- a/packages/SoundPicker/res/values-pa/strings.xml
+++ b/packages/SoundPicker/res/values-pa/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"ਪੂਰਵ-ਨਿਰਧਾਰਤ ਰਿੰਗਟੋਨ"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"ਪੂਰਵ-ਨਿਰਧਾਰਤ ਸੂਚਨਾ ਧੁਨੀ"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"ਪੂਰਵ-ਨਿਰਧਾਰਤ ਅਲਾਰਮ ਧੁਨੀ"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"ਰਿੰਗਟੋਨ ਸ਼ਾਮਲ ਕਰੋ"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"ਅਲਾਰਮ ਸ਼ਾਮਲ ਕਰੋ"</string>
diff --git a/packages/SoundPicker/res/values-pl/strings.xml b/packages/SoundPicker/res/values-pl/strings.xml
index 0a5b0e6..f172659 100644
--- a/packages/SoundPicker/res/values-pl/strings.xml
+++ b/packages/SoundPicker/res/values-pl/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Dzwonek domyślny"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Domyślny dźwięk powiadomienia"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Domyślny dźwięk alarmu"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Dodaj dzwonek"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Dodaj alarm"</string>
diff --git a/packages/SoundPicker/res/values-pt-rBR/strings.xml b/packages/SoundPicker/res/values-pt-rBR/strings.xml
index ab71842..4fad127 100644
--- a/packages/SoundPicker/res/values-pt-rBR/strings.xml
+++ b/packages/SoundPicker/res/values-pt-rBR/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Toque padrão"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Som de notificação padrão"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Som de alarme padrão"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Adicionar toque"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Adicionar alarme"</string>
diff --git a/packages/SoundPicker/res/values-pt-rPT/strings.xml b/packages/SoundPicker/res/values-pt-rPT/strings.xml
index 59d35a7..c93ec85 100644
--- a/packages/SoundPicker/res/values-pt-rPT/strings.xml
+++ b/packages/SoundPicker/res/values-pt-rPT/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Toque predefinido"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Som de notificação predefinido"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Som de alarme predefinido"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Adicionar toque"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Adicionar alarme"</string>
diff --git a/packages/SoundPicker/res/values-pt/strings.xml b/packages/SoundPicker/res/values-pt/strings.xml
index ab71842..4fad127 100644
--- a/packages/SoundPicker/res/values-pt/strings.xml
+++ b/packages/SoundPicker/res/values-pt/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Toque padrão"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Som de notificação padrão"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Som de alarme padrão"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Adicionar toque"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Adicionar alarme"</string>
diff --git a/packages/SoundPicker/res/values-ro/strings.xml b/packages/SoundPicker/res/values-ro/strings.xml
index e072880..db39f67 100644
--- a/packages/SoundPicker/res/values-ro/strings.xml
+++ b/packages/SoundPicker/res/values-ro/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Ton de apel prestabilit"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Sunet de notificare prestabilit"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Sunet de alarmă prestabilit"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Adăugați un ton de sonerie"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Adăugați o alarmă"</string>
diff --git a/packages/SoundPicker/res/values-ru/strings.xml b/packages/SoundPicker/res/values-ru/strings.xml
index 92668ae..5185bde 100644
--- a/packages/SoundPicker/res/values-ru/strings.xml
+++ b/packages/SoundPicker/res/values-ru/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Мелодия по умолчанию"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Звук уведомления по умолчанию"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Звук будильника по умолчанию"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Добавить рингтон"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Добавить будильник"</string>
diff --git a/packages/SoundPicker/res/values-si/strings.xml b/packages/SoundPicker/res/values-si/strings.xml
index b375091..c8949a9 100644
--- a/packages/SoundPicker/res/values-si/strings.xml
+++ b/packages/SoundPicker/res/values-si/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"සුපුරුදු රින්ටෝනය සකසන්න"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"පෙරනිමි දැනුම් දීම් හඬ"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"පෙරනිමි එලාම හඬ"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"නාද රිද්මය එක් කරන්න"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"ඇඟවීමක් එක් කරන්න"</string>
diff --git a/packages/SoundPicker/res/values-sk/strings.xml b/packages/SoundPicker/res/values-sk/strings.xml
index 6838af0..9e401be 100644
--- a/packages/SoundPicker/res/values-sk/strings.xml
+++ b/packages/SoundPicker/res/values-sk/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Predvolený tón zvonenia"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Predvolený zvuk upozornení"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Predvolený zvuk budíkov"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Pridať tón zvonenia"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Pridať budík"</string>
diff --git a/packages/SoundPicker/res/values-sl/strings.xml b/packages/SoundPicker/res/values-sl/strings.xml
index a050787..2261b03 100644
--- a/packages/SoundPicker/res/values-sl/strings.xml
+++ b/packages/SoundPicker/res/values-sl/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Privzeta melodija zvonjenja"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Privzeti zvok obvestila"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Privzeti zvok alarma"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Dodaj ton zvonjenja"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Dodaj alarm"</string>
diff --git a/packages/SoundPicker/res/values-sr/strings.xml b/packages/SoundPicker/res/values-sr/strings.xml
index 01db396..89fffa8 100644
--- a/packages/SoundPicker/res/values-sr/strings.xml
+++ b/packages/SoundPicker/res/values-sr/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Подразумевани звук звона"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Подразумевани звук обавештења"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Подразумевани звук аларма"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Додај мелодију звона"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Додајте аларм"</string>
diff --git a/packages/SoundPicker/res/values-sv/strings.xml b/packages/SoundPicker/res/values-sv/strings.xml
index f6acdd4..5eb2455 100644
--- a/packages/SoundPicker/res/values-sv/strings.xml
+++ b/packages/SoundPicker/res/values-sv/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Standardringsignal"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Standardljud för aviseringar"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Standardljud för alarm"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Lägg till ringsignal"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Lägg till alarm"</string>
diff --git a/packages/SoundPicker/res/values-sw/strings.xml b/packages/SoundPicker/res/values-sw/strings.xml
index beb8780..7a426c4 100644
--- a/packages/SoundPicker/res/values-sw/strings.xml
+++ b/packages/SoundPicker/res/values-sw/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Mlio chaguomsingi"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Sauti chaguomsingi ya arifa"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Sauti chaguomsingi ya kengele"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Ongeza mlio wa simu"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Ongeza kengele"</string>
diff --git a/packages/SoundPicker/res/values-ta/strings.xml b/packages/SoundPicker/res/values-ta/strings.xml
index 3c9cc54..b1b8046 100644
--- a/packages/SoundPicker/res/values-ta/strings.xml
+++ b/packages/SoundPicker/res/values-ta/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"இயல்புநிலை ரிங்டோன்"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"இயல்புநிலை அறிவிப்பு ஒலி"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"இயல்பு அலார ஒலி"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"ரிங்டோனைச் சேர்"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"அலாரத்தைச் சேர்"</string>
diff --git a/packages/SoundPicker/res/values-te/strings.xml b/packages/SoundPicker/res/values-te/strings.xml
index e0baa59..142c73c 100644
--- a/packages/SoundPicker/res/values-te/strings.xml
+++ b/packages/SoundPicker/res/values-te/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"డిఫాల్ట్ రింగ్‌టోన్"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"డిఫాల్ట్ నోటిఫికేషన్ ధ్వని"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"డిఫాల్ట్ అలారం ధ్వని"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"రింగ్‌టోన్‌ను జోడించు"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"అలారాన్ని జోడించు"</string>
diff --git a/packages/SoundPicker/res/values-th/strings.xml b/packages/SoundPicker/res/values-th/strings.xml
index 098e4dd..ae98c3c 100644
--- a/packages/SoundPicker/res/values-th/strings.xml
+++ b/packages/SoundPicker/res/values-th/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"เสียงเรียกเข้าเริ่มต้น"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"เสียงแจ้งเตือนเริ่มต้น"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"เสียงปลุกเริ่มต้น"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"เพิ่มเสียงเรียกเข้า"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"เพิ่มการปลุก"</string>
diff --git a/packages/SoundPicker/res/values-tl/strings.xml b/packages/SoundPicker/res/values-tl/strings.xml
index 80b93de..e35c8aa 100644
--- a/packages/SoundPicker/res/values-tl/strings.xml
+++ b/packages/SoundPicker/res/values-tl/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Default na ringtone"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Default na notification sound"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Default na tunog ng alarm"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Magdagdag ng ringtone"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Magdagdag ng alarm"</string>
diff --git a/packages/SoundPicker/res/values-uk/strings.xml b/packages/SoundPicker/res/values-uk/strings.xml
index 4ec70c0..bb71ad0 100644
--- a/packages/SoundPicker/res/values-uk/strings.xml
+++ b/packages/SoundPicker/res/values-uk/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Мелодія за умовчанням"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Стандартний сигнал сповіщень"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Сигнал будильника за умовчанням"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Додати сигнал"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Додати сигнал"</string>
diff --git a/packages/SoundPicker/res/values-ur/strings.xml b/packages/SoundPicker/res/values-ur/strings.xml
index 0c2dc7a..0a4f5ed 100644
--- a/packages/SoundPicker/res/values-ur/strings.xml
+++ b/packages/SoundPicker/res/values-ur/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"ڈیفالٹ رنگ ٹون"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"اطلاع کی ڈیفالٹ آواز"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"الارم کی ڈیفالٹ آواز"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"رنگ ٹون شامل کریں"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"الارم شامل کریں"</string>
diff --git a/packages/SoundPicker/res/values-uz/strings.xml b/packages/SoundPicker/res/values-uz/strings.xml
index 3c7693b..17d7ed8 100644
--- a/packages/SoundPicker/res/values-uz/strings.xml
+++ b/packages/SoundPicker/res/values-uz/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Standart rington"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Standart bildirishnoma tovushi"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Standart signal tovushi"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Rington qo‘shish"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Signal qo‘shish"</string>
diff --git a/packages/SoundPicker/res/values-vi/strings.xml b/packages/SoundPicker/res/values-vi/strings.xml
index e27b692..c167442 100644
--- a/packages/SoundPicker/res/values-vi/strings.xml
+++ b/packages/SoundPicker/res/values-vi/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Nhạc chuông mặc định"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Âm thanh thông báo mặc định"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Âm thanh báo thức mặc định"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Thêm nhạc chuông"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Thêm báo thức"</string>
diff --git a/packages/SoundPicker/res/values-zh-rCN/strings.xml b/packages/SoundPicker/res/values-zh-rCN/strings.xml
index 3199803..d380a8e 100644
--- a/packages/SoundPicker/res/values-zh-rCN/strings.xml
+++ b/packages/SoundPicker/res/values-zh-rCN/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"默认铃声"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"默认通知提示音"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"默认闹钟铃声"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"添加铃声"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"添加闹钟"</string>
diff --git a/packages/SoundPicker/res/values-zh-rHK/strings.xml b/packages/SoundPicker/res/values-zh-rHK/strings.xml
index 6c3b2f8..ccc5692 100644
--- a/packages/SoundPicker/res/values-zh-rHK/strings.xml
+++ b/packages/SoundPicker/res/values-zh-rHK/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"預設鈴聲"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"預設通知音效"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"預設鬧鐘音效"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"加入鈴聲"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"新增鬧鐘"</string>
diff --git a/packages/SoundPicker/res/values-zh-rTW/strings.xml b/packages/SoundPicker/res/values-zh-rTW/strings.xml
index 379c1d5..b920f7c 100644
--- a/packages/SoundPicker/res/values-zh-rTW/strings.xml
+++ b/packages/SoundPicker/res/values-zh-rTW/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"預設鈴聲"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"預設通知音效"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"預設鬧鐘音效"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"新增鈴聲"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"新增鬧鐘"</string>
diff --git a/packages/SoundPicker/res/values-zu/strings.xml b/packages/SoundPicker/res/values-zu/strings.xml
index 6c11dc5..fb75d93 100644
--- a/packages/SoundPicker/res/values-zu/strings.xml
+++ b/packages/SoundPicker/res/values-zu/strings.xml
@@ -17,8 +17,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Iringithoni emisiwe"</string>
-    <!-- no translation found for notification_sound_default (8133121186242636840) -->
-    <skip />
+    <string name="notification_sound_default" msgid="8133121186242636840">"Umsindo wesaziso ozenzakalelayo"</string>
     <string name="alarm_sound_default" msgid="4787646764557462649">"Umsindo we-alamu ozenzakalelayo"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Engeza ithoni yokukhala"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Engeza i-alamu"</string>
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index 37900fb..1306657 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -674,8 +674,9 @@
                   android:label="@string/controls_providers_title"
                   android:theme="@style/Theme.ControlsManagement"
                   android:showForAllUsers="true"
-                  android:clearTaskOnLaunch="true"
+                  android:finishOnTaskLaunch="true"
                   android:excludeFromRecents="true"
+                  android:launchMode="singleInstance"
                   android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboard|keyboardHidden"
                   android:visibleToInstantApps="true">
         </activity>
@@ -683,6 +684,7 @@
         <activity android:name=".controls.management.ControlsEditingActivity"
                   android:theme="@style/Theme.ControlsManagement"
                   android:excludeFromRecents="true"
+                  android:noHistory="true"
                   android:showForAllUsers="true"
                   android:finishOnTaskLaunch="true"
                   android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboard|keyboardHidden"
@@ -694,6 +696,7 @@
                   android:excludeFromRecents="true"
                   android:showForAllUsers="true"
                   android:finishOnTaskLaunch="true"
+                  android:launchMode="singleInstance"
                   android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboard|keyboardHidden"
                   android:visibleToInstantApps="true">
         </activity>
diff --git a/packages/SystemUI/docs/broadcasts.md b/packages/SystemUI/docs/broadcasts.md
index 28657f2..6c8488b 100644
--- a/packages/SystemUI/docs/broadcasts.md
+++ b/packages/SystemUI/docs/broadcasts.md
@@ -30,10 +30,21 @@
 
 If introducing a new `BroadcastReceiver` (not declared in `AndroidManifest`) that satisfies the constraints above, use the dispatcher to reduce the load on `system_server`.
 
-Do not use the dispatcher to obtain the last broadcast (by passing a null `BroadcastReceiver`). `BroadcastDispatcher#registerReceiver` **does not** return the last sticky Intent.
-
 Additionally, if listening to some broadcast is latency critical (beyond 100ms of latency), consider registering with Context instead.
 
+### A note on sticky broadcasts
+
+Sticky broadcasts are those that have been sent using `Context#sendStickyBroadcast` or `Context#sendStickyBroadcastAsUser`. In general they behave like regular broadcasts, but they are also cached (they may be replaced later) to provide the following two features:
+ * They may be returned by `Context#registerReceiver` if the broadcast is matched by the `IntentFilter`. In case that multiple cached broadcast match the filter, any one of those may be returned.
+ * All cached sticky broadcasts that match the filter will be sent to the just registered `BroadcastReceiver#onReceive`.
+
+Sticky broadcasts are `@Deprecated` since API 24 and the general recommendation is to use regular broadcasts and API that allows to retrieve last known state.
+
+Because of this and in order to provide the necessary optimizations, `BroadcastDispatcher` does not offer support for sticky intents:
+
+* Do not use the dispatcher to obtain the last broadcast (by passing a null `BroadcastReceiver`). `BroadcastDispatcher#registerReceiver` **does not** return the last sticky Intent.
+* Do not expect cached sticky broadcasts to be delivered on registration. This may happen but it's not guaranteed.
+
 ## How do I use the dispatcher?
 
 Acquire the dispatcher by using `@Inject` to obtain a `BroadcastDispatcher`. Then, use the following methods in that instance. 
diff --git a/packages/SystemUI/res-keyguard/values-kk/strings.xml b/packages/SystemUI/res-keyguard/values-kk/strings.xml
index 4989e91..4560881 100644
--- a/packages/SystemUI/res-keyguard/values-kk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-kk/strings.xml
@@ -70,7 +70,7 @@
     <string name="kg_pattern_instructions" msgid="5376036737065051736">"Өрнекті енгізіңіз"</string>
     <string name="kg_sim_pin_instructions" msgid="1942424305184242951">"SIM PIN кодын енгізіңіз."</string>
     <string name="kg_sim_pin_instructions_multi" msgid="3639863309953109649">"\"<xliff:g id="CARRIER">%1$s</xliff:g>\" үшін SIM PIN кодын енгізіңіз."</string>
-    <string name="kg_sim_lock_esim_instructions" msgid="5577169988158738030">"<xliff:g id="PREVIOUS_MSG">%1$s</xliff:g> Құрылығыны мобильдік байланыс қызметінсіз пайдалану үшін eSIM картасын өшіріңіз."</string>
+    <string name="kg_sim_lock_esim_instructions" msgid="5577169988158738030">"<xliff:g id="PREVIOUS_MSG">%1$s</xliff:g> Құрылғыны мобильдік байланыс қызметінсіз пайдалану үшін eSIM картасын өшіріңіз."</string>
     <string name="kg_pin_instructions" msgid="822353548385014361">"PIN кодын енгізіңіз"</string>
     <string name="kg_password_instructions" msgid="324455062831719903">"Кілтсөзді енгізіңіз"</string>
     <string name="kg_puk_enter_puk_hint" msgid="3005288372875367017">"SIM картасы өшірілді. Жалғастыру үшін PUK кодын енгізіңіз. Толығырақ ақпаратты оператордан алыңыз."</string>
diff --git a/packages/SystemUI/res-keyguard/values-ky/strings.xml b/packages/SystemUI/res-keyguard/values-ky/strings.xml
index d956a79..d7f4015 100644
--- a/packages/SystemUI/res-keyguard/values-ky/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ky/strings.xml
@@ -80,7 +80,7 @@
     <string name="kg_sim_unlock_progress_dialog_message" msgid="4251352015304070326">"SIM-карта бөгөттөн чыгарылууда…"</string>
     <string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4–8 сандан турган PIN-кодду териңиз."</string>
     <string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK-код 8 же андан көп сандан турушу керек."</string>
-    <string name="kg_invalid_puk" msgid="1774337070084931186">"PUK-кодду кайрадан туура киргизиңиз. Кайталанган аракеттер SIM-картаны биротоло жараксыз кылат."</string>
+    <string name="kg_invalid_puk" msgid="1774337070084931186">"PUK-кодду кайрадан туура киргизиңиз. Кайталанган аракеттер SIM картаны биротоло жараксыз кылат."</string>
     <string name="kg_login_too_many_attempts" msgid="4519957179182578690">"Өтө көп графикалык ачкычты тартуу аракети болду"</string>
     <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"PIN-кодуңузду <xliff:g id="NUMBER_0">%1$d</xliff:g> жолу туура эмес тердиңиз. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секунддан кийин дагы аракет кылып көрүңүз."</string>
     <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="190984061975729494">"Сырсөзүңүздү <xliff:g id="NUMBER_0">%1$d</xliff:g> жолу туура эмес тердиңиз. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секунддан кийин дагы аракет кылып көрүңүз."</string>
diff --git a/packages/SystemUI/res-product/values-fr-rCA/strings.xml b/packages/SystemUI/res-product/values-fr-rCA/strings.xml
index e56234b..a056b87 100644
--- a/packages/SystemUI/res-product/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res-product/values-fr-rCA/strings.xml
@@ -20,7 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="dock_alignment_slow_charging" product="default" msgid="6997633396534416792">"Réalignez le téléphone pour le recharger plus rapidement"</string>
-    <string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Réalignez le téléphone pour effectuer la recharge sans fil"</string>
+    <string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Réalignez le téléphone pour le recharger sans fil"</string>
     <string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"L\'appareil Android TV va bientôt s\'éteindre. Appuyez sur un bouton pour le laisser allumé."</string>
     <string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"L\'appareil va bientôt s\'éteindre. Interagissez avec lui pour le laisser allumé."</string>
     <string name="keyguard_missing_sim_message" product="tablet" msgid="5018086454277963787">"Aucune carte SIM n\'est insérée dans la tablette."</string>
diff --git a/packages/SystemUI/res-product/values-fr/strings.xml b/packages/SystemUI/res-product/values-fr/strings.xml
index 075d5ef..8325fb8 100644
--- a/packages/SystemUI/res-product/values-fr/strings.xml
+++ b/packages/SystemUI/res-product/values-fr/strings.xml
@@ -19,7 +19,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="dock_alignment_slow_charging" product="default" msgid="6997633396534416792">"Réalignez le téléphone pour le recharger plus rapidement"</string>
+    <string name="dock_alignment_slow_charging" product="default" msgid="6997633396534416792">"Réalignez le téléphone pour une recharge plus rapide"</string>
     <string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Réalignez le téléphone pour le recharger sans fil"</string>
     <string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"L\'appareil Android TV va bientôt passer en mode Veille. Appuyez sur un bouton pour qu\'il reste allumé."</string>
     <string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"L\'appareil va bientôt passer en mode Veille. Appuyez dessus pour qu\'il reste allumé."</string>
diff --git a/packages/SystemUI/res-product/values-hi/strings.xml b/packages/SystemUI/res-product/values-hi/strings.xml
index 188a410..c0ff7d8 100644
--- a/packages/SystemUI/res-product/values-hi/strings.xml
+++ b/packages/SystemUI/res-product/values-hi/strings.xml
@@ -19,8 +19,8 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="dock_alignment_slow_charging" product="default" msgid="6997633396534416792">"फ़ोन को फ़ास्ट चार्ज करने के लिए डॉक पर ठीक तरह से रखें"</string>
-    <string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"फ़ोन को वायरलेस चार्जिंग के लिए डॉक पर ठीक तरह से रखें"</string>
+    <string name="dock_alignment_slow_charging" product="default" msgid="6997633396534416792">"फ़ोन को फ़ास्ट चार्ज करने के लिए, डॉक पर ठीक तरह से रखें"</string>
+    <string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"वायरलेस चार्जिंग के लिए, फ़ोन को डॉक पर ठीक तरह से रखें"</string>
     <string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV डिवाइस जल्द ही बंद हो जाएगा. इसे चालू रखने के लिए किसी बटन को दबाएं."</string>
     <string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"डिवाइस जल्द ही बंद हो जाएगा. इसे चालू रखने के लिए किसी बटन को दबाएं."</string>
     <string name="keyguard_missing_sim_message" product="tablet" msgid="5018086454277963787">"टैबलेट में कोई SIM कार्ड नहीं है."</string>
diff --git a/packages/SystemUI/res-product/values-zh-rCN/strings.xml b/packages/SystemUI/res-product/values-zh-rCN/strings.xml
index 56c461c..09d84ff 100644
--- a/packages/SystemUI/res-product/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res-product/values-zh-rCN/strings.xml
@@ -20,7 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="dock_alignment_slow_charging" product="default" msgid="6997633396534416792">"请重新调整手机位置以便更快速地充电"</string>
-    <string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"请重新调整手机位置以便进行无线充电"</string>
+    <string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"请调整手机位置以便进行无线充电"</string>
     <string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV 设备即将关闭;按一下相应的按钮即可让设备保持开启状态。"</string>
     <string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"设备即将关闭;按一下即可让设备保持开启状态。"</string>
     <string name="keyguard_missing_sim_message" product="tablet" msgid="5018086454277963787">"平板电脑中没有 SIM 卡。"</string>
diff --git a/packages/SystemUI/res-product/values-zh-rTW/strings.xml b/packages/SystemUI/res-product/values-zh-rTW/strings.xml
index 8b3b121..1575d27 100644
--- a/packages/SystemUI/res-product/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res-product/values-zh-rTW/strings.xml
@@ -20,7 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="dock_alignment_slow_charging" product="default" msgid="6997633396534416792">"請調整手機的位置,以便提高充電效率"</string>
-    <string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"請調整手機的位置,以便進行無線充電"</string>
+    <string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"請調整手機位置,即可無線充電"</string>
     <string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV 裝置即將關閉。如要讓裝置保持開啟狀態,請按下任一按鈕。"</string>
     <string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"裝置即將關閉。如要讓裝置保持開啟狀態,請輕觸螢幕或按下任一按鈕。"</string>
     <string name="keyguard_missing_sim_message" product="tablet" msgid="5018086454277963787">"平板電腦中沒有 SIM 卡。"</string>
diff --git a/packages/SystemUI/res/drawable/ic_device_lock_off.xml b/packages/SystemUI/res/drawable/ic_device_lock_off.xml
index a2662ff..15ac524 100644
--- a/packages/SystemUI/res/drawable/ic_device_lock_off.xml
+++ b/packages/SystemUI/res/drawable/ic_device_lock_off.xml
@@ -20,7 +20,7 @@
     android:viewportWidth="24"
     android:viewportHeight="24">
   <path
-      android:pathData="M18,8H17V6C17,4.6739 16.4732,3.402 15.5355,2.4644C14.5979,1.5267 13.3261,1 12,1C10.6739,1 9.4021,1.5267 8.4645,2.4644C7.5268,3.402 7,4.6739 7,6V8H6C5.47,8.0016 4.9623,8.2127 4.5875,8.5874C4.2128,8.9621 4.0016,9.47 4,10V20C4.0016,20.5299 4.2128,21.0379 4.5875,21.4126C4.9623,21.7873 5.47,21.9984 6,22H18C18.5299,21.9984 19.0377,21.7873 19.4125,21.4126C19.7872,21.0379 19.9984,20.5299 20,20V10C19.9984,9.47 19.7872,8.9621 19.4125,8.5874C19.0377,8.2127 18.5299,8.0016 18,8ZM9,6C9,5.2043 9.3161,4.4415 9.8787,3.8789C10.4413,3.3163 11.2044,3 12,3C12.7956,3 13.5587,3.3163 14.1213,3.8789C14.6839,4.4415 15,5.2043 15,6V8H9V6ZM18,20H6V10H18V20Z"
+      android:pathData="M18,8H17V6C17,4.6739 16.4732,3.402 15.5355,2.4644C14.5979,1.5267 13.3261,1 12,1C10.6739,1 9.4021,1.5267 8.4645,2.4644C7.5268,3.402 7,4.6739 7,6H8.9C8.9,5.1778 9.2266,4.3892 9.808,3.8079C10.3893,3.2265 11.1778,2.8999 12,2.8999C12.8222,2.8999 13.6107,3.2265 14.192,3.8079C14.7734,4.3892 15.1,5.1778 15.1,6V8H6C5.47,8.0016 4.9623,8.2129 4.5875,8.5877C4.2128,8.9624 4.0016,9.47 4,10V20C4.0016,20.5299 4.2128,21.0376 4.5875,21.4124C4.9623,21.7871 5.47,21.9984 6,22H18C18.5299,21.9984 19.0377,21.7871 19.4125,21.4124C19.7872,21.0376 19.9984,20.5299 20,20V10C19.9984,9.47 19.7872,8.9624 19.4125,8.5877C19.0377,8.2129 18.5299,8.0016 18,8ZM18,20H6V10H18V20Z"
       android:fillColor="#FF000000" />
   <path
       android:pathData="M12,17C13.1046,17 14,16.1046 14,15C14,13.8954 13.1046,13 12,13C10.8954,13 10,13.8954 10,15C10,16.1046 10.8954,17 12,17Z"
diff --git a/packages/SystemUI/res/drawable/ic_hardware_speaker.xml b/packages/SystemUI/res/drawable/ic_hardware_speaker.xml
new file mode 100644
index 0000000..0081e56
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_hardware_speaker.xml
@@ -0,0 +1,24 @@
+<!--
+    Copyright (C) 2020 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="18dp"
+    android:height="18dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:pathData="M17,2L7,2c-1.1,0 -2,0.9 -2,2v16c0,1.1 0.9,1.99 2,1.99L17,22c1.1,0 2,-0.9 2,-2L19,4c0,-1.1 -0.9,-2 -2,-2zM7,20L7,4h10v16L7,20zM12,9c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2c-1.11,0 -2,0.9 -2,2s0.89,2 2,2zM12,11c-2.21,0 -4,1.79 -4,4s1.79,4 4,4 4,-1.79 4,-4 -1.79,-4 -4,-4zM12,17c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2z"
+      android:fillColor="#000000"/>
+</vector>
diff --git a/packages/SystemUI/res/layout/auth_credential_password_view.xml b/packages/SystemUI/res/layout/auth_credential_password_view.xml
index 45638ce..1e0ce00 100644
--- a/packages/SystemUI/res/layout/auth_credential_password_view.xml
+++ b/packages/SystemUI/res/layout/auth_credential_password_view.xml
@@ -55,7 +55,7 @@
         android:layout_height="0dp"
         android:layout_weight="1"/>
 
-    <EditText
+    <ImeAwareEditText
         android:id="@+id/lockPassword"
         android:layout_width="208dp"
         android:layout_height="wrap_content"
diff --git a/packages/SystemUI/res/layout/controls_dialog_pin.xml b/packages/SystemUI/res/layout/controls_dialog_pin.xml
index afef5ea..832c48e 100644
--- a/packages/SystemUI/res/layout/controls_dialog_pin.xml
+++ b/packages/SystemUI/res/layout/controls_dialog_pin.xml
@@ -26,7 +26,6 @@
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:minHeight="48dp"
-      android:hint="@string/controls_pin_instructions"
       android:inputType="numberPassword" />
   <CheckBox
       android:id="@+id/controls_pin_use_alpha"
diff --git a/packages/SystemUI/res/layout/global_actions_grid_v2.xml b/packages/SystemUI/res/layout/global_actions_grid_v2.xml
index 66f57fd..fb57b47 100644
--- a/packages/SystemUI/res/layout/global_actions_grid_v2.xml
+++ b/packages/SystemUI/res/layout/global_actions_grid_v2.xml
@@ -30,6 +30,7 @@
     >
       <RelativeLayout
           android:id="@+id/global_actions_overflow_button"
+          android:contentDescription="@string/accessibility_menu"
           android:layout_width="48dp"
           android:layout_height="48dp"
       >
diff --git a/packages/SystemUI/res/layout/global_screenshot.xml b/packages/SystemUI/res/layout/global_screenshot.xml
index db109fe..94a6bc5 100644
--- a/packages/SystemUI/res/layout/global_screenshot.xml
+++ b/packages/SystemUI/res/layout/global_screenshot.xml
@@ -38,6 +38,7 @@
         android:elevation="1dp"
         android:fillViewport="true"
         android:layout_marginHorizontal="@dimen/screenshot_action_container_margin_horizontal"
+        android:layout_marginBottom="@dimen/screenshot_action_container_offset_y"
         android:gravity="center"
         android:paddingLeft="@dimen/screenshot_action_container_padding_left"
         android:paddingRight="@dimen/screenshot_action_container_padding_right"
diff --git a/packages/SystemUI/res/layout/global_screenshot_action_chip.xml b/packages/SystemUI/res/layout/global_screenshot_action_chip.xml
index 6b94bef..bd91ddb 100644
--- a/packages/SystemUI/res/layout/global_screenshot_action_chip.xml
+++ b/packages/SystemUI/res/layout/global_screenshot_action_chip.xml
@@ -16,14 +16,15 @@
   -->
 <com.android.systemui.screenshot.ScreenshotActionChip
     xmlns:android="http://schemas.android.com/apk/res/android"
-              android:id="@+id/global_screenshot_action_chip"
-              android:layout_width="wrap_content"
-              android:layout_height="wrap_content"
-              android:layout_marginRight="@dimen/screenshot_action_chip_margin_right"
-              android:layout_gravity="center"
-              android:paddingVertical="@dimen/screenshot_action_chip_padding_vertical"
-              android:background="@drawable/action_chip_background"
-              android:gravity="center">
+    android:id="@+id/global_screenshot_action_chip"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_marginRight="@dimen/screenshot_action_chip_margin_right"
+    android:layout_gravity="center"
+    android:paddingVertical="@dimen/screenshot_action_chip_padding_vertical"
+    android:background="@drawable/action_chip_background"
+    android:alpha="0"
+    android:gravity="center">
     <ImageView
         android:id="@+id/screenshot_action_chip_icon"
         android:layout_width="@dimen/screenshot_action_chip_icon_size"
diff --git a/packages/SystemUI/res/layout/partial_conversation_info.xml b/packages/SystemUI/res/layout/partial_conversation_info.xml
new file mode 100644
index 0000000..2401dfb
--- /dev/null
+++ b/packages/SystemUI/res/layout/partial_conversation_info.xml
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2020, The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<com.android.systemui.statusbar.notification.row.PartialConversationInfo
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/notification_guts"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:focusable="true"
+    android:clipChildren="false"
+    android:clipToPadding="true"
+    android:orientation="vertical"
+    android:paddingStart="@*android:dimen/notification_content_margin_start">
+
+    <!-- Package Info -->
+    <LinearLayout
+        android:id="@+id/header"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/notification_guts_conversation_header_height"
+        android:gravity="center_vertical"
+        android:clipChildren="false"
+        android:clipToPadding="false">
+        <ImageView
+            android:id="@+id/conversation_icon"
+            android:layout_width="@dimen/notification_guts_conversation_icon_size"
+            android:layout_height="@dimen/notification_guts_conversation_icon_size"
+            android:layout_centerVertical="true"
+            android:layout_alignParentStart="true"
+            android:layout_marginEnd="15dp" />
+        <LinearLayout
+            android:id="@+id/names"
+            android:layout_weight="1"
+            android:layout_width="0dp"
+            android:orientation="vertical"
+
+            android:layout_height="wrap_content"
+            android:minHeight="@dimen/notification_guts_conversation_icon_size"
+            android:layout_centerVertical="true"
+            android:gravity="center_vertical"
+            android:layout_alignEnd="@id/conversation_icon"
+            android:layout_toEndOf="@id/conversation_icon">
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="start"
+                android:orientation="horizontal">
+                <TextView
+                    android:id="@+id/name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    style="@style/TextAppearance.NotificationImportanceChannel"/>
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_centerVertical="true"
+                    style="@style/TextAppearance.NotificationImportanceHeader"
+                    android:layout_marginStart="2dp"
+                    android:layout_marginEnd="2dp"
+                    android:text="@*android:string/notification_header_divider_symbol" />
+                <TextView
+                    android:id="@+id/parent_channel_name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    style="@style/TextAppearance.NotificationImportanceChannel"/>
+
+            </LinearLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="start"
+                android:orientation="horizontal">
+                <TextView
+                    android:id="@+id/pkg_name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    style="@style/TextAppearance.NotificationImportanceChannelGroup"
+                    android:ellipsize="end"
+                    android:maxLines="1"/>
+                <TextView
+                    android:id="@+id/group_divider"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_centerVertical="true"
+                    style="@style/TextAppearance.NotificationImportanceHeader"
+                    android:layout_marginStart="2dp"
+                    android:layout_marginEnd="2dp"
+                    android:text="@*android:string/notification_header_divider_symbol" />
+                <TextView
+                    android:id="@+id/group_name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    style="@style/TextAppearance.NotificationImportanceChannelGroup"/>
+            </LinearLayout>
+            <TextView
+                android:id="@+id/delegate_name"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                style="@style/TextAppearance.NotificationImportanceHeader"
+                android:layout_marginStart="2dp"
+                android:layout_marginEnd="2dp"
+                android:ellipsize="end"
+                android:text="@string/notification_delegate_header"
+                android:maxLines="1" />
+
+        </LinearLayout>
+
+        <!-- end aligned fields -->
+        <ImageButton
+            android:id="@+id/info"
+            android:layout_width="@dimen/notification_importance_toggle_size"
+            android:layout_height="@dimen/notification_importance_toggle_size"
+            android:layout_centerVertical="true"
+            android:background="@drawable/ripple_drawable"
+            android:contentDescription="@string/notification_more_settings"
+            android:src="@drawable/ic_settings"
+            android:layout_alignParentEnd="true"
+            android:tint="@color/notification_guts_link_icon_tint"/>
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/inline_controls"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingEnd="@*android:dimen/notification_content_margin_end"
+        android:layout_marginTop="@dimen/notification_guts_option_vertical_padding"
+        android:clipChildren="false"
+        android:clipToPadding="false"
+        android:orientation="vertical">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:clipChildren="false"
+            android:clipToPadding="false"
+            android:orientation="horizontal">
+            <ImageView
+                android:layout_height="wrap_content"
+                android:layout_width="wrap_content"
+                android:contentDescription="@null"
+                android:src="@drawable/ic_info"
+                android:tint="?android:attr/textColorPrimary"
+                android:layout_marginEnd="8dp"/>
+            <TextView
+                android:id="@+id/non_configurable_text"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                style="@style/TextAppearance.NotificationImportanceChannelGroup" />
+        </LinearLayout>
+
+        <RelativeLayout
+            android:id="@+id/bottom_buttons"
+            android:layout_width="match_parent"
+            android:layout_height="60dp"
+            android:gravity="center_vertical"
+            android:paddingStart="4dp"
+            android:paddingEnd="4dp"
+            >
+            <TextView
+                android:id="@+id/turn_off_notifications"
+                android:text="@string/inline_turn_off_notifications"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentStart="true"
+                android:gravity="start|center_vertical"
+                android:minWidth="@dimen/notification_importance_toggle_size"
+                android:minHeight="@dimen/notification_importance_toggle_size"
+                android:maxWidth="200dp"
+                style="@style/TextAppearance.NotificationInfo.Button"/>
+            <TextView
+                android:id="@+id/done"
+                android:text="@string/inline_done_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentEnd="true"
+                android:gravity="end|center_vertical"
+                android:minWidth="@dimen/notification_importance_toggle_size"
+                android:minHeight="@dimen/notification_importance_toggle_size"
+                android:maxWidth="125dp"
+                style="@style/TextAppearance.NotificationInfo.Button"/>
+        </RelativeLayout>
+
+    </LinearLayout>
+</com.android.systemui.statusbar.notification.row.PartialConversationInfo>
diff --git a/packages/SystemUI/res/layout/qs_media_panel.xml b/packages/SystemUI/res/layout/qs_media_panel.xml
index e5ac5f8..a194569 100644
--- a/packages/SystemUI/res/layout/qs_media_panel.xml
+++ b/packages/SystemUI/res/layout/qs_media_panel.xml
@@ -119,6 +119,7 @@
                 android:id="@+id/media_seamless"
                 android:background="@*android:drawable/media_seamless_background"
                 android:layout_weight="1"
+                android:forceHasOverlappingRendering="false"
             >
                 <ImageView
                     android:layout_width="@dimen/qs_seamless_icon_size"
diff --git a/packages/SystemUI/res/values-ar/strings_tv.xml b/packages/SystemUI/res/values-ar/strings_tv.xml
index 4b50055..76403ab 100644
--- a/packages/SystemUI/res/values-ar/strings_tv.xml
+++ b/packages/SystemUI/res/values-ar/strings_tv.xml
@@ -19,7 +19,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="notification_channel_tv_pip" msgid="844249465483874817">"صورة داخل صورة"</string>
+    <string name="notification_channel_tv_pip" msgid="844249465483874817">"نافذة ضمن النافذة"</string>
     <string name="pip_notification_unknown_title" msgid="4413256731340767259">"(ليس هناك عنوان للبرنامج)"</string>
     <string name="pip_close" msgid="5775212044472849930">"‏إغلاق PIP"</string>
     <string name="pip_fullscreen" msgid="3877997489869475181">"ملء الشاشة"</string>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index 5e0f65c..64d8912 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -999,8 +999,7 @@
     <string name="bubbles_user_education_manage_title" msgid="2848511858160342320">"যিকোনো সময়তে bubbles নিয়ন্ত্ৰণ কৰক"</string>
     <string name="bubbles_user_education_manage" msgid="1391639189507036423">"এই এপ্‌টোৰ পৰা bubbles অফ কৰিবলৈ পৰিচালনা কৰকত টিপক"</string>
     <string name="bubbles_user_education_got_it" msgid="8282812431953161143">"বুজি পালোঁ"</string>
-    <!-- no translation found for bubbles_app_settings (5779443644062348657) -->
-    <skip />
+    <string name="bubbles_app_settings" msgid="5779443644062348657">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ছেটিংসমূহ"</string>
     <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"ছিষ্টেম নেভিগেশ্বন আপডে’ট কৰা হ’ল। সলনি কৰিবলৈ ছেটিংসমূহ-লৈ যাওক।"</string>
     <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ছিষ্টেম নেভিগেশ্বন আপডে’ট কৰিবলৈ ছেটিংসমূহ-লৈ যাওক"</string>
     <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ষ্টেণ্ডবাই"</string>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index 452a4ae..a04f5c2 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -999,8 +999,7 @@
     <string name="bubbles_user_education_manage_title" msgid="2848511858160342320">"যেকোনও সময় বাবল নিয়ন্ত্রণ করুন"</string>
     <string name="bubbles_user_education_manage" msgid="1391639189507036423">"এই অ্যাপ থেকে বাবল বন্ধ করতে ম্যানেজ করুন বিকল্প ট্যাপ করুন"</string>
     <string name="bubbles_user_education_got_it" msgid="8282812431953161143">"বুঝেছি"</string>
-    <!-- no translation found for bubbles_app_settings (5779443644062348657) -->
-    <skip />
+    <string name="bubbles_app_settings" msgid="5779443644062348657">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> সেটিংস"</string>
     <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"সিস্টেম নেভিগেশন আপডেট হয়েছে। পরিবর্তন করার জন্য সেটিংসে যান।"</string>
     <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"সিস্টেম নেভিগেশন আপডেট করতে সেটিংসে যান"</string>
     <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"স্ট্যান্ডবাই"</string>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index f228e80..76390f0 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -33,7 +33,7 @@
     <string name="invalid_charger_title" msgid="938685362320735167">"Enheden kan ikke oplades via USB"</string>
     <string name="invalid_charger_text" msgid="2339310107232691577">"Brug den oplader, der fulgte med din enhed"</string>
     <string name="battery_low_why" msgid="2056750982959359863">"Indstillinger"</string>
-    <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Vil du slå Batterisparefunktion til?"</string>
+    <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Vil du aktivere Batterisparefunktion?"</string>
     <string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"Om Batterisparefunktion"</string>
     <string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"Aktivér"</string>
     <string name="battery_saver_start_action" msgid="4553256017945469937">"Aktivér batterisparefunktion"</string>
@@ -961,7 +961,7 @@
     <string name="qs_dnd_replace" msgid="7712119051407052689">"Erstat"</string>
     <string name="running_foreground_services_title" msgid="5137313173431186685">"Apps, der kører i baggrunden"</string>
     <string name="running_foreground_services_msg" msgid="3009459259222695385">"Tryk for at se info om batteri- og dataforbrug"</string>
-    <string name="mobile_data_disable_title" msgid="5366476131671617790">"Vil du slå mobildata fra?"</string>
+    <string name="mobile_data_disable_title" msgid="5366476131671617790">"Vil du deaktivere mobildata?"</string>
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"Du vil ikke have data- eller internetadgang via <xliff:g id="CARRIER">%s</xliff:g>. Der vil kun være adgang til internettet via Wi-Fi."</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"dit mobilselskab"</string>
     <string name="touch_filtered_warning" msgid="8119511393338714836">"Indstillinger kan ikke bekræfte dit svar, da en app dækker for en anmodning om tilladelse."</string>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 31837ed..82b778e 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -999,8 +999,7 @@
     <string name="bubbles_user_education_manage_title" msgid="2848511858160342320">"Bubble-Einstellungen festlegen"</string>
     <string name="bubbles_user_education_manage" msgid="1391639189507036423">"Tippe auf \"Verwalten\", um Bubbles für diese App zu deaktivieren"</string>
     <string name="bubbles_user_education_got_it" msgid="8282812431953161143">"OK"</string>
-    <!-- no translation found for bubbles_app_settings (5779443644062348657) -->
-    <skip />
+    <string name="bubbles_app_settings" msgid="5779443644062348657">"Einstellungen für <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Systemsteuerungseinstellungen wurden angepasst. Änderungen kannst du in den Einstellungen vornehmen."</string>
     <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Gehe zu den Einstellungen, um die Systemsteuerung anzupassen"</string>
     <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index 6fb7a1f..9b411da 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -999,8 +999,7 @@
     <string name="bubbles_user_education_manage_title" msgid="2848511858160342320">"ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ಬಬಲ್ಸ್ ಅನ್ನು ನಿಯಂತ್ರಿಸಿ"</string>
     <string name="bubbles_user_education_manage" msgid="1391639189507036423">"ಈ ಆ್ಯಪ್‌ನಿಂದ ಬಬಲ್ಸ್ ಅನ್ನು ಆಫ್ ಮಾಡಲು ನಿರ್ವಹಿಸಿ ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
     <string name="bubbles_user_education_got_it" msgid="8282812431953161143">"ಅರ್ಥವಾಯಿತು"</string>
-    <!-- no translation found for bubbles_app_settings (5779443644062348657) -->
-    <skip />
+    <string name="bubbles_app_settings" msgid="5779443644062348657">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"ಸಿಸ್ಟಂ ನ್ಯಾವಿಗೇಷನ ಅಪ್‌ಡೇಟ್ ಮಾಡಲಾಗಿದೆ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲು, ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಹೋಗಿ."</string>
     <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ಸಿಸ್ಟಂ ನ್ಯಾವಿಗೇಷನ್ ಅಪ್‌ಡೇಟ್ ಮಾಡಲು ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಹೋಗಿ"</string>
     <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ಸ್ಟ್ಯಾಂಡ್‌ಬೈ"</string>
diff --git a/packages/SystemUI/res/values-ky-ldrtl/strings.xml b/packages/SystemUI/res/values-ky-ldrtl/strings.xml
index b01a195..2bc0fe4 100644
--- a/packages/SystemUI/res/values-ky-ldrtl/strings.xml
+++ b/packages/SystemUI/res/values-ky-ldrtl/strings.xml
@@ -19,5 +19,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="recents_quick_scrub_onboarding" msgid="2452671841151577157">"Колдонмолорду тез которуштуруу үчүн солго сүйрөңүз"</string>
+    <string name="recents_quick_scrub_onboarding" msgid="2452671841151577157">"Колдонмолорду тез которуштуруу үчүн, солго сүйрөңүз"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index da4dae0..d7e6b3b 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -999,8 +999,7 @@
     <string name="bubbles_user_education_manage_title" msgid="2848511858160342320">"ബബിളുകൾ ഏതുസമയത്തും നിയന്ത്രിക്കുക"</string>
     <string name="bubbles_user_education_manage" msgid="1391639189507036423">"ഈ ആപ്പിൽ നിന്നുള്ള ബബിളുകൾ ഓഫാക്കാൻ മാനേജ് ചെയ്യുക ടാപ്പ് ചെയ്യുക"</string>
     <string name="bubbles_user_education_got_it" msgid="8282812431953161143">"ലഭിച്ചു"</string>
-    <!-- no translation found for bubbles_app_settings (5779443644062348657) -->
-    <skip />
+    <string name="bubbles_app_settings" msgid="5779443644062348657">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ക്രമീകരണം"</string>
     <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"സിസ്‌റ്റം നാവിഗേഷൻ അപ്‌ഡേറ്റ് ചെയ്‌തു. മാറ്റങ്ങൾ വരുത്താൻ ക്രമീകരണത്തിലേക്ക് പോവുക."</string>
     <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"സിസ്‌റ്റം നാവിഗേഷൻ അപ്‌ഡേറ്റ് ചെയ്യാൻ ക്രമീകരണത്തിലേക്ക് പോവുക"</string>
     <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"സ്‌റ്റാൻഡ്‌ബൈ"</string>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index cd6aa2a..af8a52d 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -999,8 +999,7 @@
     <string name="bubbles_user_education_manage_title" msgid="2848511858160342320">"बबल कधीही नियंत्रित करा"</string>
     <string name="bubbles_user_education_manage" msgid="1391639189507036423">"या अ‍ॅपमधून बबल बंद करण्यासाठी व्यवस्थापित करा वर टॅप करा"</string>
     <string name="bubbles_user_education_got_it" msgid="8282812431953161143">"समजले"</string>
-    <!-- no translation found for bubbles_app_settings (5779443644062348657) -->
-    <skip />
+    <string name="bubbles_app_settings" msgid="5779443644062348657">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> सेटिंग्ज"</string>
     <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"सिस्टम नेव्हिगेशन अपडेट केले. बदल करण्यासाठी, सेटिंग्जवर जा."</string>
     <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"सिस्टम नेव्हिगेशन अपडेट करण्यासाठी सेटिंग्जवर जा"</string>
     <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"स्टँडबाय"</string>
diff --git a/packages/SystemUI/res/values-ne-ldrtl/strings.xml b/packages/SystemUI/res/values-ne-ldrtl/strings.xml
index b154443..4594c55 100644
--- a/packages/SystemUI/res/values-ne-ldrtl/strings.xml
+++ b/packages/SystemUI/res/values-ne-ldrtl/strings.xml
@@ -19,5 +19,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="recents_quick_scrub_onboarding" msgid="2452671841151577157">"अनुप्रयोगहरू द्रुत गतिमा बदल्न बायाँतिर ड्र्याग गर्नुहोस्"</string>
+    <string name="recents_quick_scrub_onboarding" msgid="2452671841151577157">"एपहरू द्रुत गतिमा बदल्न बायाँतिर ड्र्याग गर्नुहोस्"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index f072dc4..04cdeaf 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -999,8 +999,7 @@
     <string name="bubbles_user_education_manage_title" msgid="2848511858160342320">"जुनसुकै बेला बबलहरू नियन्त्रण गर्नुहोस्"</string>
     <string name="bubbles_user_education_manage" msgid="1391639189507036423">"यो अनुप्रयोगबाट आएका बबलहरू निष्क्रिय पार्न व्यवस्थापन गर्नुहोस् नामक बटनमा ट्याप गर्नुहोस्"</string>
     <string name="bubbles_user_education_got_it" msgid="8282812431953161143">"बुझेँ"</string>
-    <!-- no translation found for bubbles_app_settings (5779443644062348657) -->
-    <skip />
+    <string name="bubbles_app_settings" msgid="5779443644062348657">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> का सेटिङहरू"</string>
     <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"प्रणालीको नेभिगेसन अद्यावधिक गरियो। परिवर्तन गर्न सेटिङमा जानुहोस्।"</string>
     <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"प्रणालीको नेभिगेसन अद्यावधिक गर्न सेटिङमा जानुहोस्"</string>
     <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"स्ट्यान्डबाई"</string>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index 8acd97c..5c06796 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -36,7 +36,7 @@
     <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"ବ୍ୟାଟେରୀ ସେଭର୍‌ ଚାଲୁ କରିବେ?"</string>
     <string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"ବ୍ୟାଟେରୀ ସେଭର୍ ବିଷୟରେ"</string>
     <string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"ଅନ୍‌ କରନ୍ତୁ"</string>
-    <string name="battery_saver_start_action" msgid="4553256017945469937">"ବ୍ୟାଟେରୀ ସେଭର୍‌ ଅନ୍ କରନ୍ତୁ"</string>
+    <string name="battery_saver_start_action" msgid="4553256017945469937">"ବ୍ୟାଟେରୀ ସେଭର୍‌ ଚାଲୁ କରନ୍ତୁ"</string>
     <string name="status_bar_settings_settings_button" msgid="534331565185171556">"ସେଟିଂସ୍"</string>
     <string name="status_bar_settings_wifi_button" msgid="7243072479837270946">"ୱାଇ-ଫାଇ"</string>
     <string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"ଅଟୋ-ରୋଟେଟ୍‌ ସ୍କ୍ରିନ୍"</string>
@@ -999,8 +999,7 @@
     <string name="bubbles_user_education_manage_title" msgid="2848511858160342320">"ଯେ କୌଣସି ସମୟରେ ବବଲଗୁଡ଼ିକ ନିୟନ୍ତ୍ରଣ କରନ୍ତୁ"</string>
     <string name="bubbles_user_education_manage" msgid="1391639189507036423">"ଏହି ଆପର ବବଲଗୁଡ଼ିକ ବନ୍ଦ କରିବା ପାଇଁ \'ପରିଚାଳନା କରନ୍ତୁ\' ବଟନରେ ଟାପ୍ କରନ୍ତୁ"</string>
     <string name="bubbles_user_education_got_it" msgid="8282812431953161143">"ବୁଝିଗଲି"</string>
-    <!-- no translation found for bubbles_app_settings (5779443644062348657) -->
-    <skip />
+    <string name="bubbles_app_settings" msgid="5779443644062348657">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ସେଟିଂସ୍"</string>
     <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"ସିଷ୍ଟମ୍ ନାଭିଗେସନ୍ ଅପ୍‌ଡେଟ୍ ହୋଇଛି। ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ, ସେଟିଂସ୍‌କୁ ଯାଆନ୍ତୁ।"</string>
     <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ସିଷ୍ଟମ୍ ନାଭିଗେସନ୍ ଅପ୍‌ଡେଟ୍ କରିବା ପାଇଁ ସେଟିଂସ୍‍କୁ ଯାଆନ୍ତୁ"</string>
     <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ଷ୍ଟାଣ୍ଡବାଏ"</string>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index 4602968..88ae036 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -999,8 +999,7 @@
     <string name="bubbles_user_education_manage_title" msgid="2848511858160342320">"ਬਬਲ ਨੂੰ ਕਿਸੇ ਵੇਲੇ ਵੀ ਕੰਟਰੋਲ ਕਰੋ"</string>
     <string name="bubbles_user_education_manage" msgid="1391639189507036423">"ਇਸ ਐਪ \'ਤੇ ਬਬਲ ਬੰਦ ਕਰਨ ਲਈ \'ਪ੍ਰਬੰਧਨ ਕਰੋ\' \'ਤੇ ਟੈਪ ਕਰੋ"</string>
     <string name="bubbles_user_education_got_it" msgid="8282812431953161143">"ਸਮਝ ਲਿਆ"</string>
-    <!-- no translation found for bubbles_app_settings (5779443644062348657) -->
-    <skip />
+    <string name="bubbles_app_settings" msgid="5779443644062348657">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ਸੈਟਿੰਗਾਂ"</string>
     <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"ਸਿਸਟਮ ਨੈਵੀਗੇਸ਼ਨ ਅੱਪਡੇਟ ਹੋ ਗਿਆ। ਤਬਦੀਲੀਆਂ ਕਰਨ ਲਈ, ਸੈਟਿੰਗਾਂ \'ਤੇ ਜਾਓ।"</string>
     <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ਸਿਸਟਮ ਨੈਵੀਗੇਸ਼ਨ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਸੈਟਿੰਗਾਂ \'ਤੇ ਜਾਓ"</string>
     <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ਸਟੈਂਡਬਾਈ"</string>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index 4d90e78..9a2b77f 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -999,8 +999,7 @@
     <string name="bubbles_user_education_manage_title" msgid="2848511858160342320">"బబుల్స్‌ను ఎప్పుడైనా నియంత్రించండి"</string>
     <string name="bubbles_user_education_manage" msgid="1391639189507036423">"ఈ యాప్ నుండి వచ్చే బబుల్స్‌ను ఆఫ్ చేయడానికి మేనేజ్ బటన్‌ను ట్యాప్ చేయండి"</string>
     <string name="bubbles_user_education_got_it" msgid="8282812431953161143">"అర్థమైంది"</string>
-    <!-- no translation found for bubbles_app_settings (5779443644062348657) -->
-    <skip />
+    <string name="bubbles_app_settings" msgid="5779443644062348657">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> సెట్టింగ్‌లు"</string>
     <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"సిస్టమ్ నావిగేషన్ అప్‌డేట్ చేయబడింది. మార్పులు చేయడానికి, సెట్టింగ్‌లకు వెళ్లండి."</string>
     <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"సిస్టమ్ నావిగేషన్‌ను అప్‌డేట్ చేయడానికి సెట్టింగ్‌లకు వెళ్లండి"</string>
     <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"స్టాండ్‌బై"</string>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index b9cc796..a993cb3 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -999,8 +999,7 @@
     <string name="bubbles_user_education_manage_title" msgid="2848511858160342320">"کسی بھی وقت بلبلے کو کنٹرول کریں"</string>
     <string name="bubbles_user_education_manage" msgid="1391639189507036423">"اس ایپ سے بلبلوں کو آف کرنے کے لیے نظم کریں پر تھپتھپائیں"</string>
     <string name="bubbles_user_education_got_it" msgid="8282812431953161143">"سمجھ آ گئی"</string>
-    <!-- no translation found for bubbles_app_settings (5779443644062348657) -->
-    <skip />
+    <string name="bubbles_app_settings" msgid="5779443644062348657">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ترتیبات"</string>
     <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"سسٹم نیویگیشن اپ ڈیٹ کیا گیا۔ تبدیلیاں کرنے کے لیے، ترتیبات پر جائیں۔"</string>
     <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"سسٹم نیویگیشن اپ ڈیٹ کرنے کے لیے ترتیبات پر جائیں"</string>
     <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"اسٹینڈ بائی"</string>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index eca2557..5d625a8 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -757,7 +757,7 @@
     <!-- The top padding of the clear all button -->
     <dimen name="clear_all_padding_top">12dp</dimen>
 
-    <dimen name="notification_section_header_height">56dp</dimen>
+    <dimen name="notification_section_header_height">48dp</dimen>
     <dimen name="notification_section_header_padding_left">16dp</dimen>
 
     <!-- Largest size an avatar might need to be drawn in the user picker, status bar, or
@@ -1304,4 +1304,9 @@
 
     <!-- Opacity at which the background for the shutdown UI will be drawn. -->
     <item name="shutdown_scrim_behind_alpha" format="float" type="dimen">0.95</item>
+
+    <!--  Allow CornerHandleView and PathSpecCornerPathRenderer to decouple from corner-radius -->
+    <dimen name="config_rounded_mask_size">@*android:dimen/rounded_corner_radius</dimen>
+    <dimen name="config_rounded_mask_size_top">@*android:dimen/rounded_corner_radius_top</dimen>
+    <dimen name="config_rounded_mask_size_bottom">@*android:dimen/rounded_corner_radius_bottom</dimen>
 </resources>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index d639ed0..96b8c1c 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -1021,6 +1021,9 @@
     <!-- QuickSettings: Text to prompt the user to stop an ongoing recording [CHAR LIMIT=20] -->
     <string name="quick_settings_screen_record_stop">Stop</string>
 
+    <!-- Default name for the media device shown in the output switcher when the name is not available [CHAR LIMIT=30] -->
+    <string name="media_seamless_remote_device">Device</string>
+
     <!-- Recents: Text that shows above the navigation bar after launching a few apps. [CHAR LIMIT=NONE] -->
     <string name="recents_swipe_up_onboarding">Swipe up to switch apps</string>
     <!-- Recents: Text that shows above the navigation bar after launching several apps. [CHAR LIMIT=NONE] -->
@@ -1844,6 +1847,9 @@
     <!-- [CHAR LIMIT=150] Notification Importance title: important conversation level -->
     <string name="notification_priority_title">Priority</string>
 
+    <!-- Text shown in notification guts for conversation notifications that don't implement the full feature -->
+    <string name="no_shortcut"><xliff:g id="app_name" example="YouTube">%1$s</xliff:g> does not support conversation specific settings</string>
+
     <!-- [CHAR LIMIT=NONE] Empty overflow title -->
     <string name="bubble_overflow_empty_title">No recent bubbles</string>
 
@@ -2690,6 +2696,9 @@
     <!-- Controls management editing screen, text to indicate that all the favorites have been removed [CHAR LIMIT=NONE] -->
     <string name="controls_favorite_removed">All controls removed</string>
 
+    <!-- Controls management favorites screen, See other apps with changes made [CHAR LIMIT=NONE] -->
+    <string name="controls_favorite_toast_no_changes">Changes not saved</string>
+
     <!-- Controls management controls screen error on load message [CHAR LIMIT=60] -->
     <string name="controls_favorite_load_error">The list of all controls could not be loaded.</string>
     <!-- Controls management controls screen header for Other zone [CHAR LIMIT=60] -->
@@ -2708,6 +2717,8 @@
     <string name="controls_pin_use_alphanumeric">PIN contains letters or symbols</string>
     <!-- Controls PIN entry dialog, title [CHAR LIMIT=30] -->
     <string name="controls_pin_verify">Verify <xliff:g id="device" example="Backdoor lock">%s</xliff:g></string>
+    <!-- Controls PIN entry dialog, title when 1st attempt failed [CHAR LIMIT=30] -->
+    <string name="controls_pin_wrong">Wrong PIN</string>
     <!-- Controls PIN entry dialog, waiting to verify [CHAR LIMIT=30] -->
     <string name="controls_pin_verifying">Verifying\u2026</string>
     <!-- Controls PIN entry dialog, text hint [CHAR LIMIT=30] -->
@@ -2731,6 +2742,13 @@
 
     <!-- Error message indicating that a control timed out while waiting for an update [CHAR_LIMIT=30] -->
     <string name="controls_error_timeout">Inactive, check app</string>
+    <!-- Error message indicating that an unspecified error occurred while getting the status, and
+         a retry will be attempted [CHAR LIMIT=30] -->
+    <string name="controls_error_retryable">Error, retrying\u2026</string>
+    <!-- Error message indicating that the control is no longer available in the application [CHAR LIMIT=30] -->
+    <string name="controls_error_removed">Device removed</string>
+    <!-- Error message indicating that an unspecified error occurred while getting the status [CHAR LIMIT=30] -->
+    <string name="controls_error_generic">Can\u2019t load status</string>
     <!-- Error message indicating that a control action failed [CHAR_LIMIT=30] -->
     <string name="controls_error_failed">Error, try again</string>
     <!-- Stateless control message informing the user that a routine has started [CHAR_LIMIT=30] -->
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index 13f3600..f67bb6b 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -572,7 +572,7 @@
         parent="@android:style/Widget.Material.Button.Borderless">
         <item name="android:textColor">?attr/wallpaperTextColor</item>
         <item name="android:textAllCaps">false</item>
-        <item name="android:textSize">16sp</item>
+        <item name="android:textSize">14sp</item>
     </style>
 
     <style name="TextAppearance.HeadsUpStatusBarText"
@@ -669,6 +669,7 @@
         <item name="android:colorBackground">@android:color/black</item>
         <item name="android:windowAnimationStyle">@null</item>
         <item name="android:statusBarColor">@*android:color/transparent</item>
+        <item name="wallpaperTextColor">@*android:color/primary_text_material_dark</item>
     </style>
 
     <style name="TextAppearance.Control">
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java
index b8997c2..c8607df 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java
@@ -256,13 +256,9 @@
                 case QUERY_ALL:
                     if (DEBUG) Log.d(TAG, "queryAll " + mAction);
                     for (int i = mPlugins.size() - 1; i >= 0; i--) {
-                        PluginInfo<T> plugin = mPlugins.get(i);
-                        mListener.onPluginDisconnected(plugin.mPlugin);
-                        if (!(plugin.mPlugin instanceof PluginFragment)) {
-                            // Only call onDestroy for plugins that aren't fragments, as fragments
-                            // will get the onDestroy as part of the fragment lifecycle.
-                            plugin.mPlugin.onDestroy();
-                        }
+                        PluginInfo<T> pluginInfo = mPlugins.get(i);
+                        mMainHandler.obtainMessage(
+                                MainHandler.PLUGIN_DISCONNECTED, pluginInfo.mPlugin).sendToTarget();
                     }
                     mPlugins.clear();
                     handleQueryPlugins(null);
diff --git a/packages/SystemUI/src/com/android/systemui/CornerHandleView.java b/packages/SystemUI/src/com/android/systemui/CornerHandleView.java
index 85ce313..cf7ee3a 100644
--- a/packages/SystemUI/src/com/android/systemui/CornerHandleView.java
+++ b/packages/SystemUI/src/com/android/systemui/CornerHandleView.java
@@ -168,14 +168,14 @@
         // Attempt to get the bottom corner radius, otherwise fall back on the generic or top
         // values. If none are available, use the FALLBACK_RADIUS_DP.
         int radius = getResources().getDimensionPixelSize(
-                com.android.internal.R.dimen.rounded_corner_radius_bottom);
+                com.android.systemui.R.dimen.config_rounded_mask_size_bottom);
         if (radius == 0) {
             radius = getResources().getDimensionPixelSize(
-                    com.android.internal.R.dimen.rounded_corner_radius);
+                    com.android.systemui.R.dimen.config_rounded_mask_size);
         }
         if (radius == 0) {
             radius = getResources().getDimensionPixelSize(
-                    com.android.internal.R.dimen.rounded_corner_radius_top);
+                    com.android.systemui.R.dimen.config_rounded_mask_size_top);
         }
         if (radius == 0) {
             radius = (int) convertDpToPixel(FALLBACK_RADIUS_DP, mContext);
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
index cbdae4e..c84701c 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
@@ -139,7 +139,7 @@
      */
 
     public void startServicesIfNeeded() {
-        String[] names = getResources().getStringArray(R.array.config_systemUIServiceComponents);
+        String[] names = SystemUIFactory.getInstance().getSystemUIServiceComponents(getResources());
         startServicesIfNeeded(/* metricsPrefix= */ "StartServices", names);
     }
 
@@ -150,8 +150,8 @@
      * <p>This method must only be called from the main thread.</p>
      */
     void startSecondaryUserServicesIfNeeded() {
-        String[] names =
-                  getResources().getStringArray(R.array.config_systemUIServiceComponentsPerUser);
+        String[] names = SystemUIFactory.getInstance().getSystemUIServiceComponentsPerUser(
+                getResources());
         startServicesIfNeeded(/* metricsPrefix= */ "StartSecondaryServices", names);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
index fb40774..be82a2d 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
@@ -18,6 +18,7 @@
 
 import android.annotation.NonNull;
 import android.content.Context;
+import android.content.res.Resources;
 import android.os.Handler;
 import android.os.Looper;
 import android.util.Log;
@@ -120,6 +121,16 @@
         return mRootComponent;
     }
 
+    /** Returns the list of system UI components that should be started. */
+    public String[] getSystemUIServiceComponents(Resources resources) {
+        return resources.getStringArray(R.array.config_systemUIServiceComponents);
+    }
+
+    /** Returns the list of system UI components that should be started per user. */
+    public String[] getSystemUIServiceComponentsPerUser(Resources resources) {
+        return resources.getStringArray(R.array.config_systemUIServiceComponentsPerUser);
+    }
+
     /**
      * Creates an instance of ScreenshotNotificationSmartActionsProvider.
      * This method is overridden in vendor specific implementation of Sys UI.
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/SystemActions.java b/packages/SystemUI/src/com/android/systemui/accessibility/SystemActions.java
index 1f27ae2..73dfd32 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/SystemActions.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/SystemActions.java
@@ -18,6 +18,8 @@
 
 import static android.view.WindowManager.ScreenshotSource.SCREENSHOT_GLOBAL_ACTIONS;
 
+import static com.android.internal.accessibility.common.ShortcutConstants.CHOOSER_PACKAGE_NAME;
+
 import android.accessibilityservice.AccessibilityService;
 import android.app.PendingIntent;
 import android.app.RemoteAction;
@@ -25,6 +27,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.res.Configuration;
 import android.graphics.drawable.Icon;
 import android.hardware.input.InputManager;
 import android.os.Handler;
@@ -32,6 +35,7 @@
 import android.os.PowerManager;
 import android.os.RemoteException;
 import android.os.SystemClock;
+import android.os.UserHandle;
 import android.util.Log;
 import android.view.Display;
 import android.view.IWindowManager;
@@ -43,12 +47,15 @@
 import android.view.accessibility.AccessibilityManager;
 
 import com.android.internal.R;
+import com.android.internal.accessibility.dialog.AccessibilityButtonChooserActivity;
 import com.android.internal.util.ScreenshotHelper;
 import com.android.systemui.Dependency;
 import com.android.systemui.SystemUI;
 import com.android.systemui.recents.Recents;
 import com.android.systemui.statusbar.phone.StatusBar;
 
+import java.util.Locale;
+
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
@@ -58,7 +65,6 @@
 @Singleton
 public class SystemActions extends SystemUI {
     private static final String TAG = "SystemActions";
-    // TODO(b/147916452): add implementation on launcher side to register this action.
 
     /**
      * Action ID to go back.
@@ -96,12 +102,6 @@
             AccessibilityService.GLOBAL_ACTION_POWER_DIALOG; // = 6
 
     /**
-     * Action ID to toggle docking the current app's window
-     */
-    private static final int SYSTEM_ACTION_ID_TOGGLE_SPLIT_SCREEN =
-            AccessibilityService.GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN; // = 7
-
-    /**
      * Action ID to lock the screen
      */
     private static final int SYSTEM_ACTION_ID_LOCK_SCREEN =
@@ -114,13 +114,22 @@
             AccessibilityService.GLOBAL_ACTION_TAKE_SCREENSHOT; // = 9
 
     /**
-     * Action ID to show accessibility menu
+     * Action ID to trigger the accessibility button
      */
-    private static final int SYSTEM_ACTION_ID_ACCESSIBILITY_MENU = 10;
+    public static final int SYSTEM_ACTION_ID_ACCESSIBILITY_BUTTON =
+            AccessibilityService.GLOBAL_ACTION_ACCESSIBILITY_BUTTON; // 11
+
+    /**
+     * Action ID to show accessibility button's menu of services
+     */
+    public static final int SYSTEM_ACTION_ID_ACCESSIBILITY_BUTTON_CHOOSER =
+            AccessibilityService.GLOBAL_ACTION_ACCESSIBILITY_BUTTON_CHOOSER; // 12
 
     private Recents mRecents;
     private StatusBar mStatusBar;
     private SystemActionsBroadcastReceiver mReceiver;
+    private Locale mLocale;
+    private AccessibilityManager mA11yManager;
 
     @Inject
     public SystemActions(Context context) {
@@ -128,96 +137,139 @@
         mRecents = Dependency.get(Recents.class);
         mStatusBar = Dependency.get(StatusBar.class);
         mReceiver = new SystemActionsBroadcastReceiver();
+        mLocale = mContext.getResources().getConfiguration().getLocales().get(0);
+        mA11yManager = (AccessibilityManager) mContext.getSystemService(
+                Context.ACCESSIBILITY_SERVICE);
     }
 
     @Override
     public void start() {
         mContext.registerReceiverForAllUsers(mReceiver, mReceiver.createIntentFilter(), null, null);
+        registerActions();
+    }
 
+    @Override
+    public void onConfigurationChanged(Configuration newConfig) {
+        super.onConfigurationChanged(newConfig);
+        final Locale locale = mContext.getResources().getConfiguration().getLocales().get(0);
+        if (!locale.equals(mLocale)) {
+            mLocale = locale;
+            registerActions();
+        }
+    }
+
+    private void registerActions() {
+        RemoteAction actionBack = createRemoteAction(
+                R.string.accessibility_system_action_back_label,
+                SystemActionsBroadcastReceiver.INTENT_ACTION_BACK);
+
+        RemoteAction actionHome = createRemoteAction(
+                R.string.accessibility_system_action_home_label,
+                SystemActionsBroadcastReceiver.INTENT_ACTION_HOME);
+
+        RemoteAction actionRecents = createRemoteAction(
+                R.string.accessibility_system_action_recents_label,
+                SystemActionsBroadcastReceiver.INTENT_ACTION_RECENTS);
+
+        RemoteAction actionNotifications = createRemoteAction(
+                R.string.accessibility_system_action_notifications_label,
+                SystemActionsBroadcastReceiver.INTENT_ACTION_NOTIFICATIONS);
+
+        RemoteAction actionQuickSettings = createRemoteAction(
+                R.string.accessibility_system_action_quick_settings_label,
+                SystemActionsBroadcastReceiver.INTENT_ACTION_QUICK_SETTINGS);
+
+        RemoteAction actionPowerDialog = createRemoteAction(
+                R.string.accessibility_system_action_power_dialog_label,
+                SystemActionsBroadcastReceiver.INTENT_ACTION_POWER_DIALOG);
+
+        RemoteAction actionLockScreen = createRemoteAction(
+                R.string.accessibility_system_action_lock_screen_label,
+                SystemActionsBroadcastReceiver.INTENT_ACTION_LOCK_SCREEN);
+
+        RemoteAction actionTakeScreenshot = createRemoteAction(
+                R.string.accessibility_system_action_screenshot_label,
+                SystemActionsBroadcastReceiver.INTENT_ACTION_TAKE_SCREENSHOT);
+
+        mA11yManager.registerSystemAction(actionBack, SYSTEM_ACTION_ID_BACK);
+        mA11yManager.registerSystemAction(actionHome, SYSTEM_ACTION_ID_HOME);
+        mA11yManager.registerSystemAction(actionRecents, SYSTEM_ACTION_ID_RECENTS);
+        mA11yManager.registerSystemAction(actionNotifications, SYSTEM_ACTION_ID_NOTIFICATIONS);
+        mA11yManager.registerSystemAction(actionQuickSettings, SYSTEM_ACTION_ID_QUICK_SETTINGS);
+        mA11yManager.registerSystemAction(actionPowerDialog, SYSTEM_ACTION_ID_POWER_DIALOG);
+        mA11yManager.registerSystemAction(actionLockScreen, SYSTEM_ACTION_ID_LOCK_SCREEN);
+        mA11yManager.registerSystemAction(actionTakeScreenshot, SYSTEM_ACTION_ID_TAKE_SCREENSHOT);
+    }
+
+    /**
+     * Register a system action.
+     * @param actionId the action ID to register.
+     */
+    public void register(int actionId) {
+        int labelId;
+        String intent;
+        switch (actionId) {
+            case SYSTEM_ACTION_ID_BACK:
+                labelId = R.string.accessibility_system_action_back_label;
+                intent = SystemActionsBroadcastReceiver.INTENT_ACTION_BACK;
+                break;
+            case SYSTEM_ACTION_ID_HOME:
+                labelId = R.string.accessibility_system_action_home_label;
+                intent = SystemActionsBroadcastReceiver.INTENT_ACTION_HOME;
+                break;
+            case SYSTEM_ACTION_ID_RECENTS:
+                labelId = R.string.accessibility_system_action_recents_label;
+                intent = SystemActionsBroadcastReceiver.INTENT_ACTION_RECENTS;
+                break;
+            case SYSTEM_ACTION_ID_NOTIFICATIONS:
+                labelId = R.string.accessibility_system_action_notifications_label;
+                intent = SystemActionsBroadcastReceiver.INTENT_ACTION_NOTIFICATIONS;
+                break;
+            case SYSTEM_ACTION_ID_QUICK_SETTINGS:
+                labelId = R.string.accessibility_system_action_quick_settings_label;
+                intent = SystemActionsBroadcastReceiver.INTENT_ACTION_QUICK_SETTINGS;
+                break;
+            case SYSTEM_ACTION_ID_POWER_DIALOG:
+                labelId = R.string.accessibility_system_action_power_dialog_label;
+                intent = SystemActionsBroadcastReceiver.INTENT_ACTION_POWER_DIALOG;
+                break;
+            case SYSTEM_ACTION_ID_LOCK_SCREEN:
+                labelId = R.string.accessibility_system_action_lock_screen_label;
+                intent = SystemActionsBroadcastReceiver.INTENT_ACTION_LOCK_SCREEN;
+                break;
+            case SYSTEM_ACTION_ID_TAKE_SCREENSHOT:
+                labelId = R.string.accessibility_system_action_screenshot_label;
+                intent = SystemActionsBroadcastReceiver.INTENT_ACTION_TAKE_SCREENSHOT;
+                break;
+            case SYSTEM_ACTION_ID_ACCESSIBILITY_BUTTON:
+                labelId = R.string.accessibility_system_action_accessibility_button_label;
+                intent = SystemActionsBroadcastReceiver.INTENT_ACTION_ACCESSIBILITY_BUTTON;
+                break;
+            case SYSTEM_ACTION_ID_ACCESSIBILITY_BUTTON_CHOOSER:
+                labelId = R.string.accessibility_system_action_accessibility_button_chooser_label;
+                intent = SystemActionsBroadcastReceiver.INTENT_ACTION_ACCESSIBILITY_BUTTON_CHOOSER;
+                break;
+            default:
+                return;
+        }
+        mA11yManager.registerSystemAction(createRemoteAction(labelId, intent), actionId);
+    }
+
+    private RemoteAction createRemoteAction(int labelId, String intent) {
         // TODO(b/148087487): update the icon used below to a valid one
-        RemoteAction actionBack = new RemoteAction(
+        return new RemoteAction(
                 Icon.createWithResource(mContext, R.drawable.ic_info),
-                mContext.getString(R.string.accessibility_system_action_back_label),
-                mContext.getString(R.string.accessibility_system_action_back_label),
-                mReceiver.createPendingIntent(
-                        mContext, SystemActionsBroadcastReceiver.INTENT_ACTION_BACK));
-        RemoteAction actionHome = new RemoteAction(
-                Icon.createWithResource(mContext, R.drawable.ic_info),
-                mContext.getString(R.string.accessibility_system_action_home_label),
-                mContext.getString(R.string.accessibility_system_action_home_label),
-                mReceiver.createPendingIntent(
-                        mContext, SystemActionsBroadcastReceiver.INTENT_ACTION_HOME));
+                mContext.getString(labelId),
+                mContext.getString(labelId),
+                mReceiver.createPendingIntent(mContext, intent));
+    }
 
-        RemoteAction actionRecents = new RemoteAction(
-                Icon.createWithResource(mContext, R.drawable.ic_info),
-                mContext.getString(R.string.accessibility_system_action_recents_label),
-                mContext.getString(R.string.accessibility_system_action_recents_label),
-                mReceiver.createPendingIntent(
-                        mContext, SystemActionsBroadcastReceiver.INTENT_ACTION_RECENTS));
-
-        RemoteAction actionNotifications = new RemoteAction(
-                Icon.createWithResource(mContext, R.drawable.ic_info),
-                mContext.getString(R.string.accessibility_system_action_notifications_label),
-                mContext.getString(R.string.accessibility_system_action_notifications_label),
-                mReceiver.createPendingIntent(
-                        mContext, SystemActionsBroadcastReceiver.INTENT_ACTION_NOTIFICATIONS));
-
-        RemoteAction actionQuickSettings = new RemoteAction(
-                Icon.createWithResource(mContext, R.drawable.ic_info),
-                mContext.getString(R.string.accessibility_system_action_quick_settings_label),
-                mContext.getString(R.string.accessibility_system_action_quick_settings_label),
-                mReceiver.createPendingIntent(
-                        mContext, SystemActionsBroadcastReceiver.INTENT_ACTION_QUICK_SETTINGS));
-
-        RemoteAction actionPowerDialog = new RemoteAction(
-                Icon.createWithResource(mContext, R.drawable.ic_info),
-                mContext.getString(R.string.accessibility_system_action_power_dialog_label),
-                mContext.getString(R.string.accessibility_system_action_power_dialog_label),
-                mReceiver.createPendingIntent(
-                        mContext, SystemActionsBroadcastReceiver.INTENT_ACTION_POWER_DIALOG));
-
-        RemoteAction actionToggleSplitScreen = new RemoteAction(
-                Icon.createWithResource(mContext, R.drawable.ic_info),
-                mContext.getString(R.string.accessibility_system_action_toggle_split_screen_label),
-                mContext.getString(R.string.accessibility_system_action_toggle_split_screen_label),
-                mReceiver.createPendingIntent(
-                        mContext,
-                        SystemActionsBroadcastReceiver.INTENT_ACTION_TOGGLE_SPLIT_SCREEN));
-
-        RemoteAction actionLockScreen = new RemoteAction(
-                Icon.createWithResource(mContext, R.drawable.ic_info),
-                mContext.getString(R.string.accessibility_system_action_lock_screen_label),
-                mContext.getString(R.string.accessibility_system_action_lock_screen_label),
-                mReceiver.createPendingIntent(
-                        mContext, SystemActionsBroadcastReceiver.INTENT_ACTION_LOCK_SCREEN));
-
-        RemoteAction actionTakeScreenshot = new RemoteAction(
-                Icon.createWithResource(mContext, R.drawable.ic_info),
-                mContext.getString(R.string.accessibility_system_action_screenshot_label),
-                mContext.getString(R.string.accessibility_system_action_screenshot_label),
-                mReceiver.createPendingIntent(
-                        mContext, SystemActionsBroadcastReceiver.INTENT_ACTION_TAKE_SCREENSHOT));
-
-        RemoteAction actionAccessibilityMenu = new RemoteAction(
-                Icon.createWithResource(mContext, R.drawable.ic_info),
-                mContext.getString(R.string.accessibility_system_action_accessibility_menu_label),
-                mContext.getString(R.string.accessibility_system_action_accessibility_menu_label),
-                mReceiver.createPendingIntent(
-                        mContext, SystemActionsBroadcastReceiver.INTENT_ACTION_ACCESSIBILITY_MENU));
-
-        AccessibilityManager am = (AccessibilityManager) mContext.getSystemService(
-                Context.ACCESSIBILITY_SERVICE);
-
-        am.registerSystemAction(actionBack, SYSTEM_ACTION_ID_BACK);
-        am.registerSystemAction(actionHome, SYSTEM_ACTION_ID_HOME);
-        am.registerSystemAction(actionRecents, SYSTEM_ACTION_ID_RECENTS);
-        am.registerSystemAction(actionNotifications, SYSTEM_ACTION_ID_NOTIFICATIONS);
-        am.registerSystemAction(actionQuickSettings, SYSTEM_ACTION_ID_QUICK_SETTINGS);
-        am.registerSystemAction(actionPowerDialog, SYSTEM_ACTION_ID_POWER_DIALOG);
-        am.registerSystemAction(actionToggleSplitScreen, SYSTEM_ACTION_ID_TOGGLE_SPLIT_SCREEN);
-        am.registerSystemAction(actionLockScreen, SYSTEM_ACTION_ID_LOCK_SCREEN);
-        am.registerSystemAction(actionTakeScreenshot, SYSTEM_ACTION_ID_TAKE_SCREENSHOT);
-        am.registerSystemAction(actionAccessibilityMenu, SYSTEM_ACTION_ID_ACCESSIBILITY_MENU);
+    /**
+     * Unregister a system action.
+     * @param actionId the action ID to unregister.
+     */
+    public void unregister(int actionId) {
+        mA11yManager.unregisterSystemAction(actionId);
     }
 
     private void handleBack() {
@@ -266,10 +318,6 @@
         }
     }
 
-    private void handleToggleSplitScreen() {
-        mStatusBar.toggleSplitScreen();
-    }
-
     private void handleLockScreen() {
         IWindowManager windowManager = WindowManagerGlobal.getWindowManagerService();
 
@@ -288,11 +336,19 @@
                 SCREENSHOT_GLOBAL_ACTIONS, new Handler(Looper.getMainLooper()), null);
     }
 
-    private void handleAccessibilityMenu() {
+    private void handleAccessibilityButton() {
         AccessibilityManager.getInstance(mContext).notifyAccessibilityButtonClicked(
                 Display.DEFAULT_DISPLAY);
     }
 
+    private void handleAccessibilityButtonChooser() {
+        final Intent intent = new Intent(AccessibilityManager.ACTION_CHOOSE_ACCESSIBILITY_BUTTON);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+        final String chooserClassName = AccessibilityButtonChooserActivity.class.getName();
+        intent.setClassName(CHOOSER_PACKAGE_NAME, chooserClassName);
+        mContext.startActivityAsUser(intent, UserHandle.CURRENT);
+    }
+
     private class SystemActionsBroadcastReceiver extends BroadcastReceiver {
         private static final String INTENT_ACTION_BACK = "SYSTEM_ACTION_BACK";
         private static final String INTENT_ACTION_HOME = "SYSTEM_ACTION_HOME";
@@ -300,12 +356,12 @@
         private static final String INTENT_ACTION_NOTIFICATIONS = "SYSTEM_ACTION_NOTIFICATIONS";
         private static final String INTENT_ACTION_QUICK_SETTINGS = "SYSTEM_ACTION_QUICK_SETTINGS";
         private static final String INTENT_ACTION_POWER_DIALOG = "SYSTEM_ACTION_POWER_DIALOG";
-        private static final String INTENT_ACTION_TOGGLE_SPLIT_SCREEN =
-                "SYSTEM_ACTION_TOGGLE_SPLIT_SCREEN";
         private static final String INTENT_ACTION_LOCK_SCREEN = "SYSTEM_ACTION_LOCK_SCREEN";
         private static final String INTENT_ACTION_TAKE_SCREENSHOT = "SYSTEM_ACTION_TAKE_SCREENSHOT";
-        private static final String INTENT_ACTION_ACCESSIBILITY_MENU =
-                "SYSTEM_ACTION_ACCESSIBILITY_MENU";
+        private static final String INTENT_ACTION_ACCESSIBILITY_BUTTON =
+                "SYSTEM_ACTION_ACCESSIBILITY_BUTTON";
+        private static final String INTENT_ACTION_ACCESSIBILITY_BUTTON_CHOOSER =
+                "SYSTEM_ACTION_ACCESSIBILITY_BUTTON_MENU";
 
         private PendingIntent createPendingIntent(Context context, String intentAction) {
             switch (intentAction) {
@@ -315,10 +371,10 @@
                 case INTENT_ACTION_NOTIFICATIONS:
                 case INTENT_ACTION_QUICK_SETTINGS:
                 case INTENT_ACTION_POWER_DIALOG:
-                case INTENT_ACTION_TOGGLE_SPLIT_SCREEN:
                 case INTENT_ACTION_LOCK_SCREEN:
                 case INTENT_ACTION_TAKE_SCREENSHOT:
-                case INTENT_ACTION_ACCESSIBILITY_MENU: {
+                case INTENT_ACTION_ACCESSIBILITY_BUTTON:
+                case INTENT_ACTION_ACCESSIBILITY_BUTTON_CHOOSER: {
                     Intent intent = new Intent(intentAction);
                     return PendingIntent.getBroadcast(context, 0, intent, 0);
                 }
@@ -336,10 +392,10 @@
             intentFilter.addAction(INTENT_ACTION_NOTIFICATIONS);
             intentFilter.addAction(INTENT_ACTION_QUICK_SETTINGS);
             intentFilter.addAction(INTENT_ACTION_POWER_DIALOG);
-            intentFilter.addAction(INTENT_ACTION_TOGGLE_SPLIT_SCREEN);
             intentFilter.addAction(INTENT_ACTION_LOCK_SCREEN);
             intentFilter.addAction(INTENT_ACTION_TAKE_SCREENSHOT);
-            intentFilter.addAction(INTENT_ACTION_ACCESSIBILITY_MENU);
+            intentFilter.addAction(INTENT_ACTION_ACCESSIBILITY_BUTTON);
+            intentFilter.addAction(INTENT_ACTION_ACCESSIBILITY_BUTTON_CHOOSER);
             return intentFilter;
         }
 
@@ -371,10 +427,6 @@
                     handlePowerDialog();
                     break;
                 }
-                case INTENT_ACTION_TOGGLE_SPLIT_SCREEN: {
-                    handleToggleSplitScreen();
-                    break;
-                }
                 case INTENT_ACTION_LOCK_SCREEN: {
                     handleLockScreen();
                     break;
@@ -383,8 +435,12 @@
                     handleTakeScreenshot();
                     break;
                 }
-                case INTENT_ACTION_ACCESSIBILITY_MENU: {
-                    handleAccessibilityMenu();
+                case INTENT_ACTION_ACCESSIBILITY_BUTTON: {
+                    handleAccessibilityButton();
+                    break;
+                }
+                case INTENT_ACTION_ACCESSIBILITY_BUTTON_CHOOSER: {
+                    handleAccessibilityButtonChooser();
                     break;
                 }
                 default:
diff --git a/packages/SystemUI/src/com/android/systemui/assist/ui/DisplayUtils.java b/packages/SystemUI/src/com/android/systemui/assist/ui/DisplayUtils.java
index 251229f..33e6ca4 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/ui/DisplayUtils.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/ui/DisplayUtils.java
@@ -84,8 +84,8 @@
     public static int getCornerRadiusBottom(Context context) {
         int radius = 0;
 
-        int resourceId = context.getResources().getIdentifier("rounded_corner_radius_bottom",
-                "dimen", "android");
+        int resourceId = context.getResources().getIdentifier("config_rounded_mask_size_bottom",
+                "dimen", "com.android.systemui");
         if (resourceId > 0) {
             radius = context.getResources().getDimensionPixelSize(resourceId);
         }
@@ -103,8 +103,8 @@
     public static int getCornerRadiusTop(Context context) {
         int radius = 0;
 
-        int resourceId = context.getResources().getIdentifier("rounded_corner_radius_top",
-                "dimen", "android");
+        int resourceId = context.getResources().getIdentifier("config_rounded_mask_size_top",
+                "dimen", "com.android.systemui");
         if (resourceId > 0) {
             radius = context.getResources().getDimensionPixelSize(resourceId);
         }
@@ -118,8 +118,8 @@
     private static int getCornerRadiusDefault(Context context) {
         int radius = 0;
 
-        int resourceId = context.getResources().getIdentifier("rounded_corner_radius", "dimen",
-                "android");
+        int resourceId = context.getResources().getIdentifier("config_rounded_mask_size",
+                "dimen", "com.android.systemui");
         if (resourceId > 0) {
             radius = context.getResources().getDimensionPixelSize(resourceId);
         }
diff --git a/packages/SystemUI/src/com/android/systemui/assist/ui/PathSpecCornerPathRenderer.java b/packages/SystemUI/src/com/android/systemui/assist/ui/PathSpecCornerPathRenderer.java
index 2bad7fc..523378e 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/ui/PathSpecCornerPathRenderer.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/ui/PathSpecCornerPathRenderer.java
@@ -45,8 +45,8 @@
         mWidth = DisplayUtils.getWidth(context);
         mHeight = DisplayUtils.getHeight(context);
 
-        mBottomCornerRadius = DisplayUtils.getCornerRadiusBottom(context);
-        mTopCornerRadius = DisplayUtils.getCornerRadiusTop(context);
+        mBottomCornerRadius =  DisplayUtils.getCornerRadiusBottom(context);
+        mTopCornerRadius =  DisplayUtils.getCornerRadiusTop(context);
 
         String pathData = context.getResources().getString(R.string.config_rounded_mask);
         Path path = PathParser.createPathFromPathData(pathData);
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialPasswordView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialPasswordView.java
index e6a62c2..95bbea1 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialPasswordView.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialPasswordView.java
@@ -23,7 +23,7 @@
 import android.view.KeyEvent;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputMethodManager;
-import android.widget.EditText;
+import android.widget.ImeAwareEditText;
 import android.widget.TextView;
 
 import com.android.internal.widget.LockPatternChecker;
@@ -39,7 +39,7 @@
     private static final String TAG = "BiometricPrompt/AuthCredentialPasswordView";
 
     private final InputMethodManager mImm;
-    private EditText mPasswordField;
+    private ImeAwareEditText mPasswordField;
 
     public AuthCredentialPasswordView(Context context,
             AttributeSet attrs) {
@@ -75,11 +75,8 @@
                     InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
         }
 
-        // Wait a bit to focus the field so the focusable flag on the window is already set then.
-        postDelayed(() -> {
-            mPasswordField.requestFocus();
-            mImm.showSoftInput(mPasswordField, InputMethodManager.SHOW_IMPLICIT);
-        }, 100);
+        mPasswordField.requestFocus();
+        mPasswordField.scheduleShowSoftInput();
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/broadcast/BroadcastDispatcher.kt b/packages/SystemUI/src/com/android/systemui/broadcast/BroadcastDispatcher.kt
index 319a6e0..4269605 100644
--- a/packages/SystemUI/src/com/android/systemui/broadcast/BroadcastDispatcher.kt
+++ b/packages/SystemUI/src/com/android/systemui/broadcast/BroadcastDispatcher.kt
@@ -60,7 +60,7 @@
  *
  * Use only for IntentFilters with actions and optionally categories. It does not support,
  * permissions, schemes, data types, data authorities or priority different than 0.
- * Cannot be used for getting sticky broadcasts.
+ * Cannot be used for getting sticky broadcasts (either as return of registering or as re-delivery).
  */
 @Singleton
 open class BroadcastDispatcher @Inject constructor (
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
index 89c45f6..da2a56d 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
@@ -54,7 +54,6 @@
 import android.content.pm.PackageManager;
 import android.content.res.Configuration;
 import android.graphics.Rect;
-import android.os.Handler;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.service.notification.NotificationListenerService;
@@ -177,9 +176,6 @@
     private IStatusBarService mBarService;
     private SysUiState mSysUiState;
 
-    // Used to post to main UI thread
-    private Handler mHandler = new Handler();
-
     // Used for determining view rect for touch interaction
     private Rect mTempRect = new Rect();
 
@@ -669,8 +665,11 @@
             mStackView.onThemeChanged();
         }
         mBubbleIconFactory = new BubbleIconFactory(mContext);
+        // Reload each bubble
         for (Bubble b: mBubbleData.getBubbles()) {
-            // Reload each bubble
+            b.inflate(null /* callback */, mContext, mStackView, mBubbleIconFactory);
+        }
+        for (Bubble b: mBubbleData.getOverflowBubbles()) {
             b.inflate(null /* callback */, mContext, mStackView, mBubbleIconFactory);
         }
     }
@@ -809,17 +808,7 @@
         Bubble bubble = mBubbleData.getOrCreateBubble(notif);
         bubble.setInflateSynchronously(mInflateSynchronously);
         bubble.inflate(
-                b -> {
-                    mBubbleData.notificationEntryUpdated(b, suppressFlyout, showInShade);
-                    if (bubble.getBubbleIntent() == null) {
-                        return;
-                    }
-                    bubble.getBubbleIntent().registerCancelListener(pendingIntent -> {
-                        mHandler.post(
-                                () -> removeBubble(bubble.getEntry(),
-                                        BubbleController.DISMISS_INVALID_INTENT));
-                    });
-                },
+                b -> mBubbleData.notificationEntryUpdated(b, suppressFlyout, showInShade),
                 mContext, mStackView, mBubbleIconFactory);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflowActivity.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflowActivity.java
index 37841f2..13bc55c 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflowActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflowActivity.java
@@ -21,6 +21,7 @@
 import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME;
 
 import android.app.Activity;
+import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
@@ -60,6 +61,16 @@
     private RecyclerView mRecyclerView;
     private List<Bubble> mOverflowBubbles = new ArrayList<>();
 
+    private class NoScrollGridLayoutManager extends GridLayoutManager {
+        NoScrollGridLayoutManager(Context context, int columns) {
+            super(context, columns);
+        }
+        @Override
+        public boolean canScrollVertically() {
+            return false;
+        }
+    }
+
     @Inject
     public BubbleOverflowActivity(BubbleController controller) {
         mBubbleController = controller;
@@ -78,7 +89,7 @@
         Resources res = getResources();
         final int columns = res.getInteger(R.integer.bubbles_overflow_columns);
         mRecyclerView.setLayoutManager(
-                new GridLayoutManager(getApplicationContext(), columns));
+                new NoScrollGridLayoutManager(getApplicationContext(), columns));
 
         DisplayMetrics displayMetrics = new DisplayMetrics();
         getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
diff --git a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsAnimations.kt b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsAnimations.kt
index 4ca47d1..cad166d 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsAnimations.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsAnimations.kt
@@ -76,6 +76,8 @@
                     allowEnterTransitionOverlap = true
                     enterTransition = enterWindowTransition(view.getId())
                     exitTransition = exitWindowTransition(view.getId())
+                    reenterTransition = enterWindowTransition(view.getId())
+                    returnTransition = exitWindowTransition(view.getId())
                 }
             }
 
@@ -86,6 +88,11 @@
                     showAnimation = false
                 }
             }
+
+            @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
+            fun resetAnimation() {
+                view.translationY = 0f
+            }
         }
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsEditingActivity.kt b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsEditingActivity.kt
index 640c90d..4e9c550 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsEditingActivity.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsEditingActivity.kt
@@ -16,7 +16,6 @@
 
 package com.android.systemui.controls.management
 
-import android.app.ActivityOptions
 import android.content.ComponentName
 import android.content.Intent
 import android.os.Bundle
@@ -70,10 +69,6 @@
         }
     }
 
-    override fun onBackPressed() {
-        finish()
-    }
-
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
 
@@ -102,6 +97,23 @@
         currentUserTracker.stopTracking()
     }
 
+    override fun onBackPressed() {
+        globalActionsComponent.handleShowGlobalActionsMenu()
+        animateExitAndFinish()
+    }
+
+    private fun animateExitAndFinish() {
+        val rootView = requireViewById<ViewGroup>(R.id.controls_management_root)
+        ControlsAnimations.exitAnimation(
+                rootView,
+                object : Runnable {
+                    override fun run() {
+                        finish()
+                    }
+                }
+        ).start()
+    }
+
     private fun bindViews() {
         setContentView(R.layout.controls_management)
 
@@ -124,35 +136,13 @@
     }
 
     private fun bindButtons() {
-        requireViewById<Button>(R.id.other_apps).apply {
-            visibility = View.VISIBLE
-            setText(R.string.controls_menu_add)
-            setOnClickListener {
-                saveFavorites()
-                val intent = Intent(this@ControlsEditingActivity,
-                        ControlsFavoritingActivity::class.java).apply {
-                    putExtras(this@ControlsEditingActivity.intent)
-                    putExtra(ControlsFavoritingActivity.EXTRA_SINGLE_STRUCTURE, true)
-                }
-                startActivity(intent, ActivityOptions
-                    .makeSceneTransitionAnimation(this@ControlsEditingActivity).toBundle())
-            }
-        }
-
         val rootView = requireViewById<ViewGroup>(R.id.controls_management_root)
         saveButton = requireViewById<Button>(R.id.done).apply {
             isEnabled = false
             setText(R.string.save)
             setOnClickListener {
                 saveFavorites()
-                ControlsAnimations.exitAnimation(
-                    rootView,
-                    object : Runnable {
-                        override fun run() {
-                            finish()
-                        }
-                    }
-                ).start()
+                animateExitAndFinish()
                 globalActionsComponent.handleShowGlobalActionsMenu()
             }
         }
diff --git a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsFavoritingActivity.kt b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsFavoritingActivity.kt
index 9a2ccb5..e3175aa 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsFavoritingActivity.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsFavoritingActivity.kt
@@ -16,6 +16,8 @@
 
 package com.android.systemui.controls.management
 
+import android.animation.Animator
+import android.animation.AnimatorListenerAdapter
 import android.app.ActivityOptions
 import android.content.ComponentName
 import android.content.Intent
@@ -29,6 +31,7 @@
 import android.widget.Button
 import android.widget.FrameLayout
 import android.widget.TextView
+import android.widget.Toast
 import androidx.viewpager2.widget.ViewPager2
 import com.android.systemui.Prefs
 import com.android.systemui.R
@@ -63,6 +66,7 @@
         // If provided, show this structure page first
         const val EXTRA_STRUCTURE = "extra_structure"
         const val EXTRA_SINGLE_STRUCTURE = "extra_single_structure"
+        internal const val EXTRA_FROM_PROVIDER_SELECTOR = "extra_from_provider_selector"
         private const val TOOLTIP_PREFS_KEY = Prefs.Key.CONTROLS_STRUCTURE_SWIPE_TOOLTIP_COUNT
         private const val TOOLTIP_MAX_SHOWN = 2
     }
@@ -70,6 +74,7 @@
     private var component: ComponentName? = null
     private var appName: CharSequence? = null
     private var structureExtra: CharSequence? = null
+    private var fromProviderSelector = false
 
     private lateinit var structurePager: ViewPager2
     private lateinit var statusText: TextView
@@ -105,7 +110,10 @@
     }
 
     override fun onBackPressed() {
-        finish()
+        if (!fromProviderSelector) {
+            globalActionsComponent.handleShowGlobalActionsMenu()
+        }
+        animateExitAndFinish()
     }
 
     override fun onCreate(savedInstanceState: Bundle?) {
@@ -116,6 +124,7 @@
         appName = intent.getCharSequenceExtra(EXTRA_APP)
         structureExtra = intent.getCharSequenceExtra(EXTRA_STRUCTURE) ?: ""
         component = intent.getParcelableExtra<ComponentName>(Intent.EXTRA_COMPONENT_NAME)
+        fromProviderSelector = intent.getBooleanExtra(EXTRA_FROM_PROVIDER_SELECTOR, false)
 
         bindViews()
     }
@@ -163,7 +172,23 @@
                     pageIndicator.visibility =
                         if (listOfStructures.size > 1) View.VISIBLE else View.GONE
 
-                    ControlsAnimations.enterAnimation(pageIndicator).start()
+                    ControlsAnimations.enterAnimation(pageIndicator).apply {
+                        addListener(object : AnimatorListenerAdapter() {
+                            override fun onAnimationEnd(animation: Animator?) {
+                                // Position the tooltip if necessary after animations are complete
+                                // so we can get the position on screen. The tooltip is not
+                                // rooted in the layout root.
+                                if (pageIndicator.visibility == View.VISIBLE &&
+                                        mTooltipManager != null) {
+                                    val p = IntArray(2)
+                                    pageIndicator.getLocationOnScreen(p)
+                                    val x = p[0] + pageIndicator.width / 2
+                                    val y = p[1] + pageIndicator.height
+                                    mTooltipManager?.show(R.string.controls_structure_tooltip, x, y)
+                                }
+                            }
+                        })
+                    }.start()
                     ControlsAnimations.enterAnimation(structurePager).start()
                 }
             }, Consumer { runnable -> cancelLoadRunnable = runnable })
@@ -225,27 +250,6 @@
         }
         pageIndicator = requireViewById<ManagementPageIndicator>(
             R.id.structure_page_indicator).apply {
-            addOnLayoutChangeListener(object : View.OnLayoutChangeListener {
-                override fun onLayoutChange(
-                    v: View,
-                    left: Int,
-                    top: Int,
-                    right: Int,
-                    bottom: Int,
-                    oldLeft: Int,
-                    oldTop: Int,
-                    oldRight: Int,
-                    oldBottom: Int
-                ) {
-                    if (v.visibility == View.VISIBLE && mTooltipManager != null) {
-                        val p = IntArray(2)
-                        v.getLocationOnScreen(p)
-                        val x = p[0] + (right - left) / 2
-                        val y = p[1] + bottom - top
-                        mTooltipManager?.show(R.string.controls_structure_tooltip, x, y)
-                    }
-                }
-            })
             visibilityListener = {
                 if (it != View.VISIBLE) {
                     mTooltipManager?.hide(true)
@@ -271,18 +275,38 @@
         bindButtons()
     }
 
+    private fun animateExitAndFinish() {
+        val rootView = requireViewById<ViewGroup>(R.id.controls_management_root)
+        ControlsAnimations.exitAnimation(
+                rootView,
+                object : Runnable {
+                    override fun run() {
+                        finish()
+                    }
+                }
+        ).start()
+    }
+
     private fun bindButtons() {
         otherAppsButton = requireViewById<Button>(R.id.other_apps).apply {
             setOnClickListener {
-                val i = Intent()
-                i.setComponent(
-                    ComponentName(context, ControlsProviderSelectorActivity::class.java))
+                val i = Intent().apply {
+                    component = ComponentName(context, ControlsProviderSelectorActivity::class.java)
+                }
+                if (doneButton.isEnabled) {
+                    // The user has made changes
+                    Toast.makeText(
+                            applicationContext,
+                            R.string.controls_favorite_toast_no_changes,
+                            Toast.LENGTH_SHORT
+                            ).show()
+                }
                 startActivity(i, ActivityOptions
                     .makeSceneTransitionAnimation(this@ControlsFavoritingActivity).toBundle())
+                animateExitAndFinish()
             }
         }
 
-        val rootView = requireViewById<ViewGroup>(R.id.controls_management_root)
         doneButton = requireViewById<Button>(R.id.done).apply {
             isEnabled = false
             setOnClickListener {
@@ -293,15 +317,7 @@
                         StructureInfo(component!!, it.structureName, favoritesForStorage)
                     )
                 }
-
-                ControlsAnimations.exitAnimation(
-                    rootView,
-                    object : Runnable {
-                        override fun run() {
-                            finish()
-                        }
-                    }
-                ).start()
+                animateExitAndFinish()
                 globalActionsComponent.handleShowGlobalActionsMenu()
             }
         }
diff --git a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsProviderSelectorActivity.kt b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsProviderSelectorActivity.kt
index 0044854..0814774 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsProviderSelectorActivity.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsProviderSelectorActivity.kt
@@ -34,6 +34,7 @@
 import com.android.systemui.controls.controller.ControlsController
 import com.android.systemui.dagger.qualifiers.Background
 import com.android.systemui.dagger.qualifiers.Main
+import com.android.systemui.globalactions.GlobalActionsComponent
 import com.android.systemui.settings.CurrentUserTracker
 import com.android.systemui.util.LifecycleActivity
 import java.util.concurrent.Executor
@@ -47,6 +48,7 @@
     @Background private val backExecutor: Executor,
     private val listingController: ControlsListingController,
     private val controlsController: ControlsController,
+    private val globalActionsComponent: GlobalActionsComponent,
     broadcastDispatcher: BroadcastDispatcher
 ) : LifecycleActivity() {
 
@@ -95,12 +97,17 @@
             visibility = View.VISIBLE
             setText(com.android.internal.R.string.cancel)
             setOnClickListener {
-                this@ControlsProviderSelectorActivity.finishAffinity()
+                onBackPressed()
             }
         }
         requireViewById<View>(R.id.done).visibility = View.GONE
     }
 
+    override fun onBackPressed() {
+        globalActionsComponent.handleShowGlobalActionsMenu()
+        animateExitAndFinish()
+    }
+
     override fun onStart() {
         super.onStart()
         currentUserTracker.startTracking()
@@ -144,7 +151,7 @@
                     putExtra(ControlsFavoritingActivity.EXTRA_APP,
                             listingController.getAppLabel(it))
                     putExtra(Intent.EXTRA_COMPONENT_NAME, it)
-                    flags = Intent.FLAG_ACTIVITY_SINGLE_TOP
+                    putExtra(ControlsFavoritingActivity.EXTRA_FROM_PROVIDER_SELECTOR, true)
                 }
                 startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this).toBundle())
             }
@@ -155,4 +162,16 @@
         currentUserTracker.stopTracking()
         super.onDestroy()
     }
+
+    private fun animateExitAndFinish() {
+        val rootView = requireViewById<ViewGroup>(R.id.controls_management_root)
+        ControlsAnimations.exitAnimation(
+                rootView,
+                object : Runnable {
+                    override fun run() {
+                        finish()
+                    }
+                }
+        ).start()
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ChallengeDialogs.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ChallengeDialogs.kt
index a7a4103..1f07e37 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ui/ChallengeDialogs.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ChallengeDialogs.kt
@@ -47,16 +47,31 @@
      * [ControlAction#RESPONSE_CHALLENGE_PIN] responses, decided by the useAlphaNumeric
      * parameter.
      */
-    fun createPinDialog(cvh: ControlViewHolder, useAlphaNumeric: Boolean): Dialog? {
+    fun createPinDialog(
+        cvh: ControlViewHolder,
+        useAlphaNumeric: Boolean,
+        useRetryStrings: Boolean
+    ): Dialog? {
         val lastAction = cvh.lastAction
         if (lastAction == null) {
             Log.e(ControlsUiController.TAG,
                 "PIN Dialog attempted but no last action is set. Will not show")
             return null
         }
+        val res = cvh.context.resources
+        val (title, instructions) = if (useRetryStrings) {
+            Pair(
+                res.getString(R.string.controls_pin_wrong),
+                R.string.controls_pin_instructions_retry
+            )
+        } else {
+            Pair(
+                res.getString(R.string.controls_pin_verify, cvh.title.getText()),
+                R.string.controls_pin_instructions
+            )
+        }
         val builder = AlertDialog.Builder(cvh.context, STYLE).apply {
-            val res = cvh.context.resources
-            setTitle(res.getString(R.string.controls_pin_verify, cvh.title.getText()))
+            setTitle(title)
             setView(R.layout.controls_dialog_pin)
             setPositiveButton(
                 android.R.string.ok,
@@ -81,6 +96,7 @@
             }
             setOnShowListener(DialogInterface.OnShowListener { _ ->
                 val editText = requireViewById<EditText>(R.id.controls_pin_input)
+                editText.setHint(instructions)
                 val useAlphaCheckBox = requireViewById<CheckBox>(R.id.controls_pin_use_alpha)
                 useAlphaCheckBox.setChecked(useAlphaNumeric)
                 setInputType(editText, useAlphaCheckBox.isChecked())
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlViewHolder.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlViewHolder.kt
index ba053a8..f5acc28 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlViewHolder.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlViewHolder.kt
@@ -19,6 +19,7 @@
 import android.animation.Animator
 import android.animation.AnimatorListenerAdapter
 import android.animation.ValueAnimator
+import android.app.Dialog
 import android.content.Context
 import android.graphics.drawable.ClipDrawable
 import android.graphics.drawable.GradientDrawable
@@ -82,6 +83,8 @@
     var cancelUpdate: Runnable? = null
     var behavior: Behavior? = null
     var lastAction: ControlAction? = null
+    private var lastChallengeDialog: Dialog? = null
+
     val deviceType: Int
         get() = cws.control?.let { it.getDeviceType() } ?: cws.ci.deviceType
     var dimmed: Boolean = false
@@ -140,7 +143,37 @@
     }
 
     fun actionResponse(@ControlAction.ResponseResult response: Int) {
-        // TODO: b/150931809 - handle response codes
+        // OK responses signal normal behavior, and the app will provide control updates
+        val failedAttempt = lastChallengeDialog != null
+        when (response) {
+            ControlAction.RESPONSE_OK ->
+                lastChallengeDialog = null
+            ControlAction.RESPONSE_UNKNOWN -> {
+                lastChallengeDialog = null
+                setTransientStatus(context.resources.getString(R.string.controls_error_failed))
+            }
+            ControlAction.RESPONSE_FAIL -> {
+                lastChallengeDialog = null
+                setTransientStatus(context.resources.getString(R.string.controls_error_failed))
+            }
+            ControlAction.RESPONSE_CHALLENGE_PIN -> {
+                lastChallengeDialog = ChallengeDialogs.createPinDialog(this, false, failedAttempt)
+                lastChallengeDialog?.show()
+            }
+            ControlAction.RESPONSE_CHALLENGE_PASSPHRASE -> {
+                lastChallengeDialog = ChallengeDialogs.createPinDialog(this, true, failedAttempt)
+                lastChallengeDialog?.show()
+            }
+            ControlAction.RESPONSE_CHALLENGE_ACK -> {
+                lastChallengeDialog = ChallengeDialogs.createConfirmationDialog(this)
+                lastChallengeDialog?.show()
+            }
+        }
+    }
+
+    fun dismiss() {
+        lastChallengeDialog?.dismiss()
+        lastChallengeDialog = null
     }
 
     fun setTransientStatus(tempStatus: String) {
@@ -166,7 +199,9 @@
         deviceType: Int
     ): KClass<out Behavior> {
         return when {
-            status == Control.STATUS_UNKNOWN -> UnknownBehavior::class
+            status == Control.STATUS_UNKNOWN -> StatusBehavior::class
+            status == Control.STATUS_ERROR -> StatusBehavior::class
+            status == Control.STATUS_NOT_FOUND -> StatusBehavior::class
             deviceType == DeviceTypes.TYPE_CAMERA -> TouchBehavior::class
             template is ToggleTemplate -> ToggleBehavior::class
             template is StatelessTemplate -> TouchBehavior::class
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt
index f3693c1..25f4940 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt
@@ -20,7 +20,6 @@
 import android.animation.AnimatorListenerAdapter
 import android.animation.ObjectAnimator
 import android.app.AlertDialog
-import android.app.Dialog
 import android.content.ComponentName
 import android.content.Context
 import android.content.DialogInterface
@@ -32,7 +31,6 @@
 import android.os.Process
 import android.os.Vibrator
 import android.service.controls.Control
-import android.service.controls.actions.ControlAction
 import android.util.Log
 import android.util.TypedValue
 import android.view.ContextThemeWrapper
@@ -101,7 +99,6 @@
     private lateinit var parent: ViewGroup
     private lateinit var lastItems: List<SelectionItem>
     private var popup: ListPopupWindow? = null
-    private var activeDialog: Dialog? = null
     private var hidden = true
     private lateinit var dismissGlobalActions: Runnable
 
@@ -170,11 +167,17 @@
     private fun reload(parent: ViewGroup) {
         if (hidden) return
 
+        controlsListingController.get().removeCallback(listingCallback)
+        controlsController.get().unsubscribe()
+
         val fadeAnim = ObjectAnimator.ofFloat(parent, "alpha", 1.0f, 0.0f)
         fadeAnim.setInterpolator(AccelerateInterpolator(1.0f))
         fadeAnim.setDuration(FADE_IN_MILLIS)
         fadeAnim.addListener(object : AnimatorListenerAdapter() {
             override fun onAnimationEnd(animation: Animator) {
+                controlViewsById.clear()
+                controlsById.clear()
+
                 show(parent, dismissGlobalActions)
                 val showAnim = ObjectAnimator.ofFloat(parent, "alpha", 0.0f, 1.0f)
                 showAnim.setInterpolator(DecelerateInterpolator(1.0f))
@@ -448,21 +451,23 @@
         val listView = parent.requireViewById(R.id.global_actions_controls_list) as ViewGroup
         var lastRow: ViewGroup = createRow(inflater, listView)
         selectedStructure.controls.forEach {
-            if (lastRow.getChildCount() == maxColumns) {
-                lastRow = createRow(inflater, listView)
-            }
-            val baseLayout = inflater.inflate(
-                R.layout.controls_base_item, lastRow, false) as ViewGroup
-            lastRow.addView(baseLayout)
-            val cvh = ControlViewHolder(
-                baseLayout,
-                controlsController.get(),
-                uiExecutor,
-                bgExecutor
-            )
             val key = ControlKey(selectedStructure.componentName, it.controlId)
-            cvh.bindData(controlsById.getValue(key))
-            controlViewsById.put(key, cvh)
+            controlsById.get(key)?.let {
+                if (lastRow.getChildCount() == maxColumns) {
+                    lastRow = createRow(inflater, listView)
+                }
+                val baseLayout = inflater.inflate(
+                    R.layout.controls_base_item, lastRow, false) as ViewGroup
+                lastRow.addView(baseLayout)
+                val cvh = ControlViewHolder(
+                    baseLayout,
+                    controlsController.get(),
+                    uiExecutor,
+                    bgExecutor
+                )
+                cvh.bindData(it)
+                controlViewsById.put(key, cvh)
+            }
         }
 
         // add spacers if necessary to keep control size consistent
@@ -528,7 +533,6 @@
         if (newSelection != selectedStructure) {
             selectedStructure = newSelection
             updatePreferences(selectedStructure)
-            controlsListingController.get().removeCallback(listingCallback)
             reload(parent)
         }
     }
@@ -537,7 +541,11 @@
         Log.d(ControlsUiController.TAG, "hide()")
         hidden = true
         popup?.dismissImmediate()
-        activeDialog?.dismiss()
+
+        controlViewsById.forEach {
+            it.value.dismiss()
+        }
+
         ControlActionCoordinator.closeDialog()
 
         controlsController.get().unsubscribe()
@@ -545,13 +553,13 @@
         parent.removeAllViews()
         controlsById.clear()
         controlViewsById.clear()
+
         controlsListingController.get().removeCallback(listingCallback)
 
         RenderInfo.clearCache()
     }
 
     override fun onRefreshState(componentName: ComponentName, controls: List<Control>) {
-        Log.d(ControlsUiController.TAG, "onRefreshState()")
         controls.forEach { c ->
             controlsById.get(ControlKey(componentName, c.getControlId()))?.let {
                 Log.d(ControlsUiController.TAG, "onRefreshState() for id: " + c.getControlId())
@@ -569,23 +577,7 @@
     override fun onActionResponse(componentName: ComponentName, controlId: String, response: Int) {
         val key = ControlKey(componentName, controlId)
         uiExecutor.execute {
-            controlViewsById.get(key)?.let { cvh ->
-                when (response) {
-                    ControlAction.RESPONSE_CHALLENGE_PIN -> {
-                        activeDialog = ChallengeDialogs.createPinDialog(cvh, false)
-                        activeDialog?.show()
-                    }
-                    ControlAction.RESPONSE_CHALLENGE_PASSPHRASE -> {
-                        activeDialog = ChallengeDialogs.createPinDialog(cvh, true)
-                        activeDialog?.show()
-                    }
-                    ControlAction.RESPONSE_CHALLENGE_ACK -> {
-                        activeDialog = ChallengeDialogs.createConfirmationDialog(cvh)
-                        activeDialog?.show()
-                    }
-                    else -> cvh.actionResponse(response)
-                }
-            }
+            controlViewsById.get(key)?.actionResponse(response)
         }
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/UnknownBehavior.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/StatusBehavior.kt
similarity index 65%
rename from packages/SystemUI/src/com/android/systemui/controls/ui/UnknownBehavior.kt
rename to packages/SystemUI/src/com/android/systemui/controls/ui/StatusBehavior.kt
index c357249..49c4408 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ui/UnknownBehavior.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/StatusBehavior.kt
@@ -16,7 +16,11 @@
 
 package com.android.systemui.controls.ui
 
-class UnknownBehavior : Behavior {
+import android.service.controls.Control
+
+import com.android.systemui.R
+
+class StatusBehavior : Behavior {
     lateinit var cvh: ControlViewHolder
 
     override fun initialize(cvh: ControlViewHolder) {
@@ -24,7 +28,13 @@
     }
 
     override fun bind(cws: ControlWithState) {
-        cvh.status.setText(cvh.context.getString(com.android.internal.R.string.loading))
+        val status = cws.control?.status ?: Control.STATUS_UNKNOWN
+        val msg = when (status) {
+            Control.STATUS_ERROR -> R.string.controls_error_generic
+            Control.STATUS_NOT_FOUND -> R.string.controls_error_removed
+            else -> com.android.internal.R.string.loading
+        }
+        cvh.status.setText(cvh.context.getString(msg))
         cvh.applyRenderInfo(false)
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeDockHandler.java b/packages/SystemUI/src/com/android/systemui/doze/DozeDockHandler.java
index 3f88f25..554457b 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeDockHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeDockHandler.java
@@ -75,6 +75,12 @@
         public void onEvent(int dockState) {
             if (DEBUG) Log.d(TAG, "dock event = " + dockState);
 
+            // Only act upon state changes, otherwise we might overwrite other transitions,
+            // like proximity sensor initialization.
+            if (mDockState == dockState) {
+                return;
+            }
+
             mDockState = dockState;
             if (isPulsing()) {
                 return;
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java b/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java
index 18bfd89..490890f 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java
@@ -159,6 +159,15 @@
         mDozeHost = dozeHost;
     }
 
+    /**
+     * Clean ourselves up.
+     */
+    public void destroy() {
+        for (Part part : mParts) {
+            part.destroy();
+        }
+    }
+
     /** Initializes the set of {@link Part}s. Must be called exactly once after construction. */
     public void setParts(Part[] parts) {
         Preconditions.checkState(mParts == null);
@@ -411,6 +420,9 @@
 
         /** Dump current state. For debugging only. */
         default void dump(PrintWriter pw) {}
+
+        /** Give the Part a chance to clean itself up. */
+        default void destroy() {}
     }
 
     /** A wrapper interface for {@link android.service.dreams.DreamService} */
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
index 700a861..10776c9 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
@@ -164,6 +164,17 @@
     }
 
     /**
+     *  Unregister any sensors.
+     */
+    public void destroy() {
+        // Unregisters everything, which is enough to allow gc.
+        for (TriggerSensor triggerSensor : mSensors) {
+            triggerSensor.setListening(false);
+        }
+        mProximitySensor.pause();
+    }
+
+    /**
      * Temporarily disable some sensors to avoid turning on the device while the user is
      * turning it off.
      */
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
index 7cbbdd7..529b016 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
@@ -65,6 +65,7 @@
             mPluginManager.removePluginListener(this);
         }
         super.onDestroy();
+        mDozeMachine.destroy();
         mDozeMachine = null;
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
index b329991..1be4d43 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
@@ -111,6 +111,11 @@
         mBroadcastDispatcher = broadcastDispatcher;
     }
 
+    @Override
+    public void destroy() {
+        mDozeSensors.destroy();
+    }
+
     private void onNotification(Runnable onPulseSuppressedListener) {
         if (DozeMachine.DEBUG) {
             Log.d(TAG, "requestNotificationPulse");
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
index 9bd32ff..80ebe57 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
@@ -485,7 +485,15 @@
     @VisibleForTesting
     protected int getMaxShownPowerItems() {
         if (shouldUseControlsLayout()) {
-            return mResources.getInteger(com.android.systemui.R.integer.power_menu_max_columns);
+            int maxColumns =
+                    mResources.getInteger(com.android.systemui.R.integer.power_menu_max_columns);
+            // TODO: Overflow temporarily disabled on keyguard to prevent touch issues.
+            // Show an extra item on the keyguard because the overflow button currently disabled.
+            if (mKeyguardShowing) {
+                return maxColumns + 1;
+            } else {
+                return maxColumns;
+            }
         } else {
             return Integer.MAX_VALUE;
         }
@@ -608,10 +616,8 @@
                 getWalletPanelViewController(), mDepthController, mSysuiColorExtractor,
                 mStatusBarService, mNotificationShadeWindowController,
                 shouldShowControls() ? mControlsUiController : null, mBlurUtils,
-                shouldUseControlsLayout(), this::onRotate);
+                shouldUseControlsLayout(), this::onRotate, mKeyguardShowing);
         dialog.setCanceledOnTouchOutside(false); // Handled by the custom class.
-        dialog.setKeyguardShowing(mKeyguardShowing);
-
         dialog.setOnDismissListener(this);
         dialog.setOnShowListener(this);
 
@@ -1904,7 +1910,7 @@
                 SysuiColorExtractor sysuiColorExtractor, IStatusBarService statusBarService,
                 NotificationShadeWindowController notificationShadeWindowController,
                 ControlsUiController controlsUiController, BlurUtils blurUtils,
-                boolean useControlsLayout, Runnable onRotateCallback) {
+                boolean useControlsLayout, Runnable onRotateCallback, boolean keyguardShowing) {
             super(context, com.android.systemui.R.style.Theme_SystemUI_Dialog_GlobalActions);
             mContext = context;
             mAdapter = adapter;
@@ -1917,6 +1923,7 @@
             mBlurUtils = blurUtils;
             mUseControlsLayout = useControlsLayout;
             mOnRotateCallback = onRotateCallback;
+            mKeyguardShowing = keyguardShowing;
 
             // Window initialization
             Window window = getWindow();
@@ -2059,7 +2066,8 @@
             View overflowButton = findViewById(
                     com.android.systemui.R.id.global_actions_overflow_button);
             if (overflowButton != null) {
-                if (mOverflowAdapter.getCount() > 0) {
+                // TODO: Overflow button hidden on keyguard to temporarily prevent touch issues.
+                if (mOverflowAdapter.getCount() > 0 && !mKeyguardShowing) {
                     overflowButton.setOnClickListener((view) -> showPowerOverflowMenu());
                     LinearLayout.LayoutParams params =
                             (LinearLayout.LayoutParams) mGlobalActionsLayout.getLayoutParams();
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java
index ad848eb..b12d02d 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java
@@ -19,6 +19,7 @@
 import android.annotation.LayoutRes;
 import android.app.PendingIntent;
 import android.content.ComponentName;
+import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
@@ -35,10 +36,12 @@
 import android.media.MediaMetadata;
 import android.media.ThumbnailUtils;
 import android.media.session.MediaController;
+import android.media.session.MediaController.PlaybackInfo;
 import android.media.session.MediaSession;
 import android.media.session.PlaybackState;
 import android.net.Uri;
 import android.service.media.MediaBrowserService;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -94,6 +97,7 @@
     public static final String MEDIA_PREFERENCE_KEY = "browser_components";
     private SharedPreferences mSharedPrefs;
     private boolean mCheckedForResumption = false;
+    private boolean mIsRemotePlayback;
 
     // Button IDs used in notifications
     protected static final int[] NOTIF_ACTION_IDS = {
@@ -298,6 +302,13 @@
                 Log.d(TAG, "LocalMediaManager is null. Not binding output chip for pkg=" + pkgName);
             }
         }
+        PlaybackInfo playbackInfo = mController.getPlaybackInfo();
+        if (playbackInfo != null) {
+            mIsRemotePlayback = playbackInfo.getPlaybackType() == PlaybackInfo.PLAYBACK_TYPE_REMOTE;
+        } else {
+            Log.d(TAG, "PlaybackInfo was null. Defaulting to local playback.");
+            mIsRemotePlayback = false;
+        }
 
         makeActive();
 
@@ -435,7 +446,7 @@
         // First look in URI fields
         for (String field : ART_URIS) {
             String uriString = metadata.getString(field);
-            if (uriString != null) {
+            if (!TextUtils.isEmpty(uriString)) {
                 albumArt = loadBitmapFromUri(Uri.parse(uriString));
                 if (albumArt != null) {
                     Log.d(TAG, "loaded art from " + field);
@@ -463,6 +474,17 @@
      * @return bitmap, or null if couldn't be loaded
      */
     private Bitmap loadBitmapFromUri(Uri uri) {
+        // ImageDecoder requires a scheme of the following types
+        if (uri.getScheme() == null) {
+            return null;
+        }
+
+        if (!uri.getScheme().equals(ContentResolver.SCHEME_CONTENT)
+                && !uri.getScheme().equals(ContentResolver.SCHEME_ANDROID_RESOURCE)
+                && !uri.getScheme().equals(ContentResolver.SCHEME_FILE)) {
+            return null;
+        }
+
         ImageDecoder.Source source = ImageDecoder.createSource(mContext.getContentResolver(), uri);
         try {
             return ImageDecoder.decodeBitmap(source);
@@ -532,7 +554,16 @@
         TextView deviceName = mSeamless.findViewById(R.id.media_seamless_text);
         deviceName.setTextColor(fgTintList);
 
-        if (device != null) {
+        if (mIsRemotePlayback) {
+            mSeamless.setEnabled(false);
+            mSeamless.setAlpha(0.38f);
+            iconView.setImageResource(R.drawable.ic_hardware_speaker);
+            iconView.setVisibility(View.VISIBLE);
+            iconView.setImageTintList(fgTintList);
+            deviceName.setText(R.string.media_seamless_remote_device);
+        } else if (device != null) {
+            mSeamless.setEnabled(true);
+            mSeamless.setAlpha(1f);
             Drawable icon = device.getIcon();
             iconView.setVisibility(View.VISIBLE);
             iconView.setImageTintList(fgTintList);
@@ -548,6 +579,8 @@
         } else {
             // Reset to default
             Log.d(TAG, "device is null. Not binding output chip.");
+            mSeamless.setEnabled(true);
+            mSeamless.setAlpha(1f);
             iconView.setVisibility(View.GONE);
             deviceName.setText(com.android.internal.R.string.ext_media_seamless_action);
         }
diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java b/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java
index e24d29f..9d9e74a 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java
@@ -126,6 +126,10 @@
         mCurrentMinSize = minEdgeSize;
     }
 
+    protected float getAspectRatio() {
+        return mAspectRatio;
+    }
+
     /**
      * Sets both shelf visibility and its height if applicable.
      * @return {@code true} if the internal shelf state is changed, {@code false} otherwise.
@@ -419,7 +423,7 @@
     /**
      * Populates the bounds on the screen that the PIP can be visible in.
      */
-    private void getInsetBounds(Rect outRect) {
+    protected void getInsetBounds(Rect outRect) {
         try {
             mWindowManager.getStableInsets(mContext.getDisplayId(), mTmpInsets);
             outRect.set(mTmpInsets.left + mScreenEdgeInsets.x,
diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java b/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java
index 9eae3ca..9c8fb7c 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java
@@ -285,6 +285,8 @@
      * Meanwhile this callback is invoked whenever the task is removed. For instance:
      *   - as a result of removeStacksInWindowingModes from WM
      *   - activity itself is died
+     * Nevertheless, we simply update the internal state here as all the heavy lifting should
+     * have been done in WM.
      */
     @Override
     public void onTaskVanished(ActivityManager.RunningTaskInfo info) {
@@ -297,10 +299,6 @@
             Log.wtf(TAG, "Unrecognized token: " + token);
             return;
         }
-        final Rect boundsToRestore = mBoundsToRestore.remove(token.asBinder());
-        scheduleAnimateResizePip(mLastReportedBounds, boundsToRestore,
-                TRANSITION_DIRECTION_TO_FULLSCREEN, mEnterExitAnimationDuration,
-                null /* updateBoundsCallback */);
         mInPip = false;
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
index 290816b..fdf2c34 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
@@ -82,6 +82,7 @@
 import com.android.systemui.shared.system.ActivityManagerWrapper;
 import com.android.systemui.statusbar.phone.StatusBar;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.ExecutionException;
@@ -162,6 +163,9 @@
     private static final long SCREENSHOT_TO_CORNER_X_DURATION_MS = 234;
     private static final long SCREENSHOT_TO_CORNER_Y_DURATION_MS = 500;
     private static final long SCREENSHOT_TO_CORNER_SCALE_DURATION_MS = 234;
+    private static final long SCREENSHOT_ACTIONS_EXPANSION_DURATION_MS = 400;
+    private static final long SCREENSHOT_ACTIONS_ALPHA_DURATION_MS = 100;
+    private static final float SCREENSHOT_ACTIONS_START_SCALE_X = .7f;
     private static final float ROUNDED_CORNER_RADIUS = .05f;
     private static final long SCREENSHOT_CORNER_TIMEOUT_MILLIS = 6000;
     private static final int MESSAGE_CORNER_TIMEOUT = 2;
@@ -263,6 +267,7 @@
         mScreenshotSelectorView.setFocusableInTouchMode(true);
         mScreenshotView.setPivotX(0);
         mScreenshotView.setPivotY(0);
+        mActionsContainer.setPivotX(0);
 
         // Setup the window that we are going to use
         mWindowLayoutParams = new WindowManager.LayoutParams(
@@ -661,6 +666,8 @@
         } catch (RemoteException e) {
         }
 
+        ArrayList<ScreenshotActionChip> chips = new ArrayList<>();
+
         for (Notification.Action smartAction : imageData.smartActions) {
             ScreenshotActionChip actionChip = (ScreenshotActionChip) inflater.inflate(
                     R.layout.global_screenshot_action_chip, mActionsView, false);
@@ -673,6 +680,7 @@
                         mOnCompleteRunnable.run();
                     });
             mActionsView.addView(actionChip);
+            chips.add(actionChip);
         }
 
         ScreenshotActionChip shareChip = (ScreenshotActionChip) inflater.inflate(
@@ -685,6 +693,7 @@
             mOnCompleteRunnable.run();
         });
         mActionsView.addView(shareChip);
+        chips.add(shareChip);
 
         ScreenshotActionChip editChip = (ScreenshotActionChip) inflater.inflate(
                 R.layout.global_screenshot_action_chip, mActionsView, false);
@@ -696,6 +705,7 @@
             mOnCompleteRunnable.run();
         });
         mActionsView.addView(editChip);
+        chips.add(editChip);
 
         mScreenshotView.setOnClickListener(v -> {
             try {
@@ -709,7 +719,6 @@
         });
         mScreenshotView.setContentDescription(imageData.editAction.title);
 
-
         if (DeviceConfig.getBoolean(NAMESPACE_SYSTEMUI, SCREENSHOT_SCROLLING_ENABLED, false)) {
             ScreenshotActionChip scrollChip = (ScreenshotActionChip) inflater.inflate(
                     R.layout.global_screenshot_action_chip, mActionsView, false);
@@ -723,18 +732,27 @@
                 scrollNotImplemented.show();
             });
             mActionsView.addView(scrollChip);
+            chips.add(scrollChip);
         }
 
         ValueAnimator animator = ValueAnimator.ofFloat(0, 1);
-        mActionsContainer.setY(mDisplayMetrics.heightPixels);
+        animator.setDuration(SCREENSHOT_ACTIONS_EXPANSION_DURATION_MS);
+        float alphaFraction = (float) SCREENSHOT_ACTIONS_ALPHA_DURATION_MS
+                / SCREENSHOT_ACTIONS_EXPANSION_DURATION_MS;
         mActionsContainer.setVisibility(VISIBLE);
-        mActionsContainer.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
-        float actionsViewHeight = mActionsContainer.getMeasuredHeight() + mScreenshotHeightPx;
+        mActionsContainer.setAlpha(0);
 
         animator.addUpdateListener(animation -> {
             float t = animation.getAnimatedFraction();
             mBackgroundProtection.setAlpha(t);
-            mActionsContainer.setY(mDisplayMetrics.heightPixels - actionsViewHeight * t);
+            mActionsContainer.setAlpha(t < alphaFraction ? t / alphaFraction : 1);
+            float containerScale = SCREENSHOT_ACTIONS_START_SCALE_X
+                    + (t * (1 - SCREENSHOT_ACTIONS_START_SCALE_X));
+            mActionsContainer.setScaleX(containerScale);
+            for (ScreenshotActionChip chip : chips) {
+                chip.setAlpha(t);
+                chip.setScaleX(1 / containerScale); // invert to keep size of children constant
+            }
         });
         return animator;
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationChannelHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationChannelHelper.java
index ff945d1..1c2a00e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationChannelHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationChannelHelper.java
@@ -26,7 +26,6 @@
 import android.text.TextUtils;
 import android.util.Slog;
 
-import com.android.systemui.R;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 
 /**
@@ -44,32 +43,18 @@
         if (!TextUtils.isEmpty(channel.getConversationId())) {
             return channel;
         }
-        final String conversationId = entry.getSbn().getShortcutId(context);
+        final String conversationId = entry.getSbn().getShortcutId();
         final String pkg = entry.getSbn().getPackageName();
         final int appUid = entry.getSbn().getUid();
-        if (TextUtils.isEmpty(conversationId) || TextUtils.isEmpty(pkg)) {
+        if (TextUtils.isEmpty(conversationId) || TextUtils.isEmpty(pkg)
+            || entry.getRanking().getShortcutInfo() == null) {
             return channel;
         }
 
-        String name;
-        if (entry.getRanking().getShortcutInfo() != null) {
-            name = entry.getRanking().getShortcutInfo().getShortLabel().toString();
-        } else {
-            Bundle extras = entry.getSbn().getNotification().extras;
-            String nameString = extras.getString(Notification.EXTRA_CONVERSATION_TITLE);
-            if (TextUtils.isEmpty(nameString)) {
-                nameString = extras.getString(Notification.EXTRA_TITLE);
-            }
-            name = nameString;
-        }
-
         // If this channel is not already a customized conversation channel, create
         // a custom channel
         try {
-            // TODO: When shortcuts are enforced remove this and use the shortcut label for naming
-            channel.setName(context.getString(
-                    R.string.notification_summary_message_format,
-                    name, channel.getName()));
+            channel.setName(getName(entry));
             notificationManager.createConversationNotificationChannelForPackage(
                     pkg, appUid, entry.getSbn().getKey(), channel,
                     conversationId);
@@ -81,4 +66,19 @@
         }
         return channel;
     }
+
+    private static String getName(NotificationEntry entry) {
+        if (entry.getRanking().getShortcutInfo().getShortLabel() != null) {
+            return entry.getRanking().getShortcutInfo().getShortLabel().toString();
+        }
+        Bundle extras = entry.getSbn().getNotification().extras;
+        String nameString = extras.getString(Notification.EXTRA_CONVERSATION_TITLE);
+        if (TextUtils.isEmpty(nameString)) {
+            nameString = extras.getString(Notification.EXTRA_TITLE);
+        }
+        if (TextUtils.isEmpty(nameString)) {
+            nameString = "fallback";
+        }
+        return nameString;
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
index a9bb416..f8844c7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
@@ -1141,6 +1141,7 @@
         if (mMenuRow.shouldUseDefaultMenuItems()) {
             ArrayList<MenuItem> items = new ArrayList<>();
             items.add(NotificationMenuRow.createConversationItem(mContext));
+            items.add(NotificationMenuRow.createPartialConversationItem(mContext));
             items.add(NotificationMenuRow.createInfoItem(mContext));
             items.add(NotificationMenuRow.createSnoozeItem(mContext));
             items.add(NotificationMenuRow.createAppOpsItem(mContext));
@@ -1837,6 +1838,10 @@
     }
 
     public void resetTranslation() {
+        if (mMenuRow != null && mMenuRow.isMenuVisible()) {
+            return;
+        }
+
         if (mTranslateAnim != null) {
             mTranslateAnim.cancel();
         }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java
index f23f3bf..e9849ec 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java
@@ -1347,11 +1347,11 @@
         if (bubbleButton == null || actionContainer == null) {
             return;
         }
-        boolean isPerson =
+        boolean isPersonWithShortcut =
                 mPeopleIdentifier.getPeopleNotificationType(entry.getSbn(), entry.getRanking())
-                        != PeopleNotificationIdentifier.TYPE_NON_PERSON;
+                        >= PeopleNotificationIdentifier.TYPE_FULL_PERSON;
         boolean showButton = isBubblesEnabled()
-                && isPerson
+                && isPersonWithShortcut
                 && entry.getBubbleMetadata() != null;
         if (showButton) {
             Drawable d = mContext.getResources().getDrawable(entry.isBubble()
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java
index 23b911b..863951e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java
@@ -97,7 +97,6 @@
     private String mDelegatePkg;
     private NotificationChannel mNotificationChannel;
     private ShortcutInfo mShortcutInfo;
-    private String mConversationId;
     private StatusBarNotification mSbn;
     @Nullable private Notification.BubbleMetadata mBubbleMetadata;
     private Context mUserContext;
@@ -233,14 +232,10 @@
         mBuilderProvider = builderProvider;
 
         mShortcutManager = shortcutManager;
-        mConversationId = mNotificationChannel.getConversationId();
-        if (TextUtils.isEmpty(mNotificationChannel.getConversationId())) {
-            mConversationId = mSbn.getShortcutId(mContext);
-        }
-        if (TextUtils.isEmpty(mConversationId)) {
+        mShortcutInfo = entry.getRanking().getShortcutInfo();
+        if (mShortcutInfo == null) {
             throw new IllegalArgumentException("Does not have required information");
         }
-        mShortcutInfo = entry.getRanking().getShortcutInfo();
 
         mNotificationChannel = NotificationChannelHelper.createConversationChannelIfNeeded(
                 getContext(), mINotificationManager, entry, mNotificationChannel);
@@ -319,31 +314,9 @@
 
     private void bindIcon(boolean important) {
         ImageView image = findViewById(R.id.conversation_icon);
-        if (mShortcutInfo != null) {
-            image.setImageDrawable(mIconFactory.getConversationDrawable(
-                    mShortcutInfo, mPackageName, mAppUid,
-                    important));
-        } else {
-            if (mSbn.getNotification().extras.getBoolean(EXTRA_IS_GROUP_CONVERSATION, false)) {
-                // TODO: maybe use a generic group icon, or a composite of recent senders
-                image.setImageDrawable(mPm.getDefaultActivityIcon());
-            } else {
-                final List<Notification.MessagingStyle.Message> messages =
-                        Notification.MessagingStyle.Message.getMessagesFromBundleArray(
-                                (Parcelable[]) mSbn.getNotification().extras.get(
-                                        Notification.EXTRA_MESSAGES));
+        image.setImageDrawable(mIconFactory.getConversationDrawable(
+                mShortcutInfo, mPackageName, mAppUid, important));
 
-                final Notification.MessagingStyle.Message latestMessage =
-                        Notification.MessagingStyle.findLatestIncomingMessage(messages);
-                Icon personIcon = latestMessage.getSenderPerson().getIcon();
-                if (personIcon != null) {
-                    image.setImageIcon(latestMessage.getSenderPerson().getIcon());
-                } else {
-                    // TODO: choose something better
-                    image.setImageDrawable(mPm.getDefaultActivityIcon());
-                }
-            }
-        }
     }
 
     private void bindPackage() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
index 1c808cf9..9c7de2b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
@@ -252,6 +252,9 @@
             } else if (gutsView instanceof NotificationConversationInfo) {
                 initializeConversationNotificationInfo(
                         row, (NotificationConversationInfo) gutsView);
+            } else if (gutsView instanceof PartialConversationInfo) {
+                initializePartialConversationNotificationInfo(row,
+                        (PartialConversationInfo) gutsView);
             }
             return true;
         } catch (Exception e) {
@@ -357,7 +360,47 @@
     }
 
     /**
-     * Sets up the {@link NotificationConversationInfo} inside the notification row's guts.
+     * Sets up the {@link PartialConversationInfo} inside the notification row's guts.
+     * @param row view to set up the guts for
+     * @param notificationInfoView view to set up/bind within {@code row}
+     */
+    @VisibleForTesting
+    void initializePartialConversationNotificationInfo(
+            final ExpandableNotificationRow row,
+            PartialConversationInfo notificationInfoView) throws Exception {
+        NotificationGuts guts = row.getGuts();
+        StatusBarNotification sbn = row.getEntry().getSbn();
+        String packageName = sbn.getPackageName();
+        // Settings link is only valid for notifications that specify a non-system user
+        NotificationInfo.OnSettingsClickListener onSettingsClick = null;
+        UserHandle userHandle = sbn.getUser();
+        PackageManager pmUser = StatusBar.getPackageManagerForUser(
+                mContext, userHandle.getIdentifier());
+
+        if (!userHandle.equals(UserHandle.ALL)
+                || mLockscreenUserManager.getCurrentUserId() == UserHandle.USER_SYSTEM) {
+            onSettingsClick = (View v, NotificationChannel channel, int appUid) -> {
+                mMetricsLogger.action(MetricsProto.MetricsEvent.ACTION_NOTE_INFO);
+                guts.resetFalsingCheck();
+                mOnSettingsClickListener.onSettingsClick(sbn.getKey());
+                startAppNotificationSettingsActivity(packageName, appUid, channel, row);
+            };
+        }
+
+        notificationInfoView.bindNotification(
+                pmUser,
+                mNotificationManager,
+                packageName,
+                row.getEntry().getChannel(),
+                row.getUniqueChannels(),
+                row.getEntry(),
+                onSettingsClick,
+                mDeviceProvisionedController.isDeviceProvisioned(),
+                row.getIsNonblockable());
+    }
+
+    /**
+     * Sets up the {@link ConversationInfo} inside the notification row's guts.
      * @param row view to set up the guts for
      * @param notificationInfoView view to set up/bind within {@code row}
      */
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java
index 83a6eb2..5e1e3b2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java
@@ -268,7 +268,9 @@
         NotificationEntry entry = mParent.getEntry();
         int personNotifType = mPeopleNotificationIdentifier
                 .getPeopleNotificationType(entry.getSbn(), entry.getRanking());
-        if (personNotifType != PeopleNotificationIdentifier.TYPE_NON_PERSON) {
+        if (personNotifType == PeopleNotificationIdentifier.TYPE_PERSON) {
+            mInfoItem = createPartialConversationItem(mContext);
+        } else if (personNotifType >= PeopleNotificationIdentifier.TYPE_FULL_PERSON) {
             mInfoItem = createConversationItem(mContext);
         } else {
             mInfoItem = createInfoItem(mContext);
@@ -667,6 +669,16 @@
                 R.drawable.ic_settings);
     }
 
+    static NotificationMenuItem createPartialConversationItem(Context context) {
+        Resources res = context.getResources();
+        String infoDescription = res.getString(R.string.notification_menu_gear_description);
+        PartialConversationInfo infoContent =
+                (PartialConversationInfo) LayoutInflater.from(context).inflate(
+                        R.layout.partial_conversation_info, null, false);
+        return new NotificationMenuItem(context, infoDescription, infoContent,
+                R.drawable.ic_settings);
+    }
+
     static NotificationMenuItem createInfoItem(Context context) {
         Resources res = context.getResources();
         String infoDescription = res.getString(R.string.notification_menu_gear_description);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PartialConversationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PartialConversationInfo.java
new file mode 100644
index 0000000..2189b87
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PartialConversationInfo.java
@@ -0,0 +1,376 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.systemui.statusbar.notification.row;
+
+import static android.app.Notification.EXTRA_IS_GROUP_CONVERSATION;
+import static android.app.NotificationManager.IMPORTANCE_LOW;
+import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED;
+
+import static com.android.systemui.Interpolators.FAST_OUT_SLOW_IN;
+
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
+import android.annotation.IntDef;
+import android.app.INotificationManager;
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationChannelGroup;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.Icon;
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.os.RemoteException;
+import android.service.notification.StatusBarNotification;
+import android.text.TextUtils;
+import android.transition.ChangeBounds;
+import android.transition.Fade;
+import android.transition.TransitionManager;
+import android.transition.TransitionSet;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.accessibility.AccessibilityEvent;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.systemui.Dependency;
+import com.android.systemui.R;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+
+import java.lang.annotation.Retention;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * The guts of a conversation notification that doesn't use valid shortcuts that is revealed when
+ * performing a long press.
+ */
+public class PartialConversationInfo extends LinearLayout implements
+        NotificationGuts.GutsContent {
+    private static final String TAG = "PartialConvoGuts";
+
+    private INotificationManager mINotificationManager;
+    private PackageManager mPm;
+    private String mPackageName;
+    private String mAppName;
+    private int mAppUid;
+    private String mDelegatePkg;
+    private NotificationChannel mNotificationChannel;
+    private StatusBarNotification mSbn;
+    private boolean mIsDeviceProvisioned;
+    private boolean mIsNonBlockable;
+    private Set<NotificationChannel> mUniqueChannelsInRow;
+    private Drawable mPkgIcon;
+
+    private @Action int mSelectedAction = -1;
+    private boolean mPressedApply;
+    private boolean mPresentingChannelEditorDialog = false;
+
+    private NotificationInfo.OnSettingsClickListener mOnSettingsClickListener;
+    private NotificationGuts mGutsContainer;
+    private ChannelEditorDialogController mChannelEditorDialogController;
+
+    @VisibleForTesting
+    boolean mSkipPost = false;
+
+    @Retention(SOURCE)
+    @IntDef({ACTION_SETTINGS})
+    private @interface Action {}
+    static final int ACTION_SETTINGS = 5;
+
+    private OnClickListener mOnDone = v -> {
+        mPressedApply = true;
+        closeControls(v, true);
+    };
+
+    public PartialConversationInfo(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public void bindNotification(
+            PackageManager pm,
+            INotificationManager iNotificationManager,
+            String pkg,
+            NotificationChannel notificationChannel,
+            Set<NotificationChannel> uniqueChannelsInRow,
+            NotificationEntry entry,
+            NotificationInfo.OnSettingsClickListener onSettingsClick,
+            boolean isDeviceProvisioned,
+            boolean isNonBlockable) {
+        mSelectedAction = -1;
+        mINotificationManager = iNotificationManager;
+        mPackageName = pkg;
+        mSbn = entry.getSbn();
+        mPm = pm;
+        mAppName = mPackageName;
+        mOnSettingsClickListener = onSettingsClick;
+        mNotificationChannel = notificationChannel;
+        mAppUid = mSbn.getUid();
+        mDelegatePkg = mSbn.getOpPkg();
+        mIsDeviceProvisioned = isDeviceProvisioned;
+        mIsNonBlockable = isNonBlockable;
+        mChannelEditorDialogController = Dependency.get(ChannelEditorDialogController.class);
+        mUniqueChannelsInRow = uniqueChannelsInRow;
+
+        bindHeader();
+        bindActions();
+
+        View turnOffButton = findViewById(R.id.turn_off_notifications);
+        turnOffButton.setOnClickListener(getTurnOffNotificationsClickListener());
+        turnOffButton.setVisibility(turnOffButton.hasOnClickListeners() && !mIsNonBlockable
+                ? VISIBLE : GONE);
+
+        View done = findViewById(R.id.done);
+        done.setOnClickListener(mOnDone);
+    }
+
+    private void bindActions() {
+        final View settingsButton = findViewById(R.id.info);
+        settingsButton.setOnClickListener(getSettingsOnClickListener());
+        settingsButton.setVisibility(settingsButton.hasOnClickListeners() ? VISIBLE : GONE);
+
+        TextView msg = findViewById(R.id.non_configurable_text);
+        msg.setText(getResources().getString(R.string.no_shortcut, mAppName));
+    }
+
+    private void bindHeader() {
+        bindConversationDetails();
+
+        // Delegate
+        bindDelegate();
+    }
+
+    private OnClickListener getSettingsOnClickListener() {
+        if (mAppUid >= 0 && mOnSettingsClickListener != null && mIsDeviceProvisioned) {
+            final int appUidF = mAppUid;
+            return ((View view) -> {
+                mOnSettingsClickListener.onClick(view, mNotificationChannel, appUidF);
+            });
+        }
+        return null;
+    }
+
+    private OnClickListener getTurnOffNotificationsClickListener() {
+        return ((View view) -> {
+            if (!mPresentingChannelEditorDialog && mChannelEditorDialogController != null) {
+                mPresentingChannelEditorDialog = true;
+
+                mChannelEditorDialogController.prepareDialogForApp(mAppName, mPackageName, mAppUid,
+                        mUniqueChannelsInRow, mPkgIcon, mOnSettingsClickListener);
+                mChannelEditorDialogController.setOnFinishListener(() -> {
+                    mPresentingChannelEditorDialog = false;
+                    closeControls(this, false);
+                });
+                mChannelEditorDialogController.show();
+            }
+        });
+    }
+
+    private void bindConversationDetails() {
+        final TextView channelName = findViewById(R.id.parent_channel_name);
+        channelName.setText(mNotificationChannel.getName());
+
+        bindGroup();
+        bindName();
+        bindPackage();
+        bindIcon();
+    }
+
+    private void bindName() {
+        TextView name = findViewById(R.id.name);
+        Bundle extras = mSbn.getNotification().extras;
+        String nameString = extras.getString(Notification.EXTRA_CONVERSATION_TITLE);
+        if (TextUtils.isEmpty(nameString)) {
+            nameString = extras.getString(Notification.EXTRA_TITLE);
+        }
+        name.setText(nameString);
+    }
+
+    private void bindIcon() {
+        ImageView image = findViewById(R.id.conversation_icon);
+        if (mSbn.getNotification().extras.getBoolean(EXTRA_IS_GROUP_CONVERSATION, false)) {
+            // TODO: maybe use a generic group icon, or a composite of recent senders
+            image.setImageDrawable(mPkgIcon);
+        } else {
+            final List<Notification.MessagingStyle.Message> messages =
+                    Notification.MessagingStyle.Message.getMessagesFromBundleArray(
+                            (Parcelable[]) mSbn.getNotification().extras.get(
+                                    Notification.EXTRA_MESSAGES));
+
+            final Notification.MessagingStyle.Message latestMessage =
+                    Notification.MessagingStyle.findLatestIncomingMessage(messages);
+            Icon personIcon = null;
+            if (latestMessage != null && latestMessage.getSenderPerson() != null) {
+                personIcon = latestMessage.getSenderPerson().getIcon();
+            }
+            if (personIcon != null) {
+                image.setImageIcon(latestMessage.getSenderPerson().getIcon());
+            } else {
+                image.setImageDrawable(mPkgIcon);
+            }
+        }
+    }
+
+    private void bindPackage() {
+        ApplicationInfo info;
+        try {
+            info = mPm.getApplicationInfo(
+                    mPackageName,
+                    PackageManager.MATCH_UNINSTALLED_PACKAGES
+                            | PackageManager.MATCH_DISABLED_COMPONENTS
+                            | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
+                            | PackageManager.MATCH_DIRECT_BOOT_AWARE);
+            if (info != null) {
+                mAppName = String.valueOf(mPm.getApplicationLabel(info));
+                mPkgIcon = mPm.getApplicationIcon(info);
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+            mPkgIcon = mPm.getDefaultActivityIcon();
+        }
+        ((TextView) findViewById(R.id.pkg_name)).setText(mAppName);
+    }
+
+    private void bindDelegate() {
+        TextView delegateView = findViewById(R.id.delegate_name);
+
+        if (!TextUtils.equals(mPackageName, mDelegatePkg)) {
+            // this notification was posted by a delegate!
+            delegateView.setVisibility(View.VISIBLE);
+        } else {
+            delegateView.setVisibility(View.GONE);
+        }
+    }
+
+    private void bindGroup() {
+        // Set group information if this channel has an associated group.
+        CharSequence groupName = null;
+        if (mNotificationChannel != null && mNotificationChannel.getGroup() != null) {
+            try {
+                final NotificationChannelGroup notificationChannelGroup =
+                        mINotificationManager.getNotificationChannelGroupForPackage(
+                                mNotificationChannel.getGroup(), mPackageName, mAppUid);
+                if (notificationChannelGroup != null) {
+                    groupName = notificationChannelGroup.getName();
+                }
+            } catch (RemoteException e) {
+            }
+        }
+        TextView groupNameView = findViewById(R.id.group_name);
+        View groupDivider = findViewById(R.id.group_divider);
+        if (groupName != null) {
+            groupNameView.setText(groupName);
+            groupNameView.setVisibility(VISIBLE);
+            groupDivider.setVisibility(VISIBLE);
+        } else {
+            groupNameView.setVisibility(GONE);
+            groupDivider.setVisibility(GONE);
+        }
+    }
+
+    @Override
+    public boolean post(Runnable action) {
+        if (mSkipPost) {
+            action.run();
+            return true;
+        } else {
+            return super.post(action);
+        }
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+    }
+
+    @Override
+    public void onFinishedClosing() {
+        // TODO: do we need to do anything here?
+    }
+
+    @Override
+    public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
+        super.onInitializeAccessibilityEvent(event);
+        if (mGutsContainer != null &&
+                event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
+            if (mGutsContainer.isExposed()) {
+                event.getText().add(mContext.getString(
+                        R.string.notification_channel_controls_opened_accessibility, mAppName));
+            } else {
+                event.getText().add(mContext.getString(
+                        R.string.notification_channel_controls_closed_accessibility, mAppName));
+            }
+        }
+    }
+
+    /**
+     * Closes the controls and commits the updated importance values (indirectly).
+     *
+     * <p><b>Note,</b> this will only get called once the view is dismissing. This means that the
+     * user does not have the ability to undo the action anymore.
+     */
+    @VisibleForTesting
+    void closeControls(View v, boolean save) {
+        int[] parentLoc = new int[2];
+        int[] targetLoc = new int[2];
+        mGutsContainer.getLocationOnScreen(parentLoc);
+        v.getLocationOnScreen(targetLoc);
+        final int centerX = v.getWidth() / 2;
+        final int centerY = v.getHeight() / 2;
+        final int x = targetLoc[0] - parentLoc[0] + centerX;
+        final int y = targetLoc[1] - parentLoc[1] + centerY;
+        mGutsContainer.closeControls(x, y, save, false /* force */);
+    }
+
+    @Override
+    public void setGutsParent(NotificationGuts guts) {
+        mGutsContainer = guts;
+    }
+
+    @Override
+    public boolean willBeRemoved() {
+        return false;
+    }
+
+    @Override
+    public boolean shouldBeSaved() {
+        return mPressedApply;
+    }
+
+    @Override
+    public View getContentView() {
+        return this;
+    }
+
+    @Override
+    public boolean handleCloseControls(boolean save, boolean force) {
+        return false;
+    }
+
+    @Override
+    public int getActualHeight() {
+        return getHeight();
+    }
+
+    @VisibleForTesting
+    public boolean isAnimating() {
+        return false;
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java
index f9119c7..ba8a634 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java
@@ -556,7 +556,8 @@
 
     private void updateDisabledForQuickstep() {
         int rotation = mContext.getResources().getConfiguration().windowConfiguration.getRotation();
-        mDisabledForQuickstep = mStartingQuickstepRotation != rotation;
+        mDisabledForQuickstep = mStartingQuickstepRotation > -1 &&
+                mStartingQuickstepRotation != rotation;
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
index 9ee204e..b2aa769 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
@@ -98,6 +98,7 @@
 import com.android.internal.util.LatencyTracker;
 import com.android.internal.view.AppearanceRegion;
 import com.android.systemui.R;
+import com.android.systemui.accessibility.SystemActions;
 import com.android.systemui.assist.AssistHandleViewController;
 import com.android.systemui.assist.AssistManager;
 import com.android.systemui.broadcast.BroadcastDispatcher;
@@ -185,6 +186,7 @@
     private WindowManager mWindowManager;
     private final CommandQueue mCommandQueue;
     private long mLastLockToAppLongPress;
+    private final SystemActions mSystemActions;
 
     private Locale mLocale;
     private int mLayoutDirection;
@@ -373,6 +375,7 @@
             Optional<Recents> recentsOptional, Lazy<StatusBar> statusBarLazy,
             ShadeController shadeController,
             NotificationRemoteInputManager notificationRemoteInputManager,
+            SystemActions systemActions,
             @Main Handler mainHandler) {
         mAccessibilityManagerWrapper = accessibilityManagerWrapper;
         mDeviceProvisionedController = deviceProvisionedController;
@@ -391,6 +394,7 @@
         mCommandQueue = commandQueue;
         mDivider = divider;
         mRecentsOptional = recentsOptional;
+        mSystemActions = systemActions;
         mHandler = mainHandler;
     }
 
@@ -1168,6 +1172,16 @@
                 .setFlag(SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE, longClickable)
                 .setFlag(SYSUI_STATE_NAV_BAR_HIDDEN, !isNavBarWindowVisible())
                 .commitUpdate(mDisplayId);
+        registerAction(clickable, SystemActions.SYSTEM_ACTION_ID_ACCESSIBILITY_BUTTON);
+        registerAction(longClickable, SystemActions.SYSTEM_ACTION_ID_ACCESSIBILITY_BUTTON_CHOOSER);
+    }
+
+    private void registerAction(boolean register, int actionId) {
+        if (register) {
+            mSystemActions.register(actionId);
+        } else {
+            mSystemActions.unregister(actionId);
+        }
     }
 
     /**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index 420b75c..a2afd9c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -116,6 +116,9 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.colorextraction.ColorExtractor;
 import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.UiEvent;
+import com.android.internal.logging.UiEventLogger;
+import com.android.internal.logging.UiEventLoggerImpl;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.internal.statusbar.IStatusBarService;
 import com.android.internal.statusbar.RegisterStatusBarResult;
@@ -301,6 +304,8 @@
     /** If true, the lockscreen will show a distinct wallpaper */
     public static final boolean ENABLE_LOCKSCREEN_WALLPAPER = true;
 
+    private static final UiEventLogger sUiEventLogger = new UiEventLoggerImpl();
+
     static {
         boolean onlyCoreApps;
         try {
@@ -459,6 +464,44 @@
         }
     };
 
+    @VisibleForTesting
+    public enum StatusBarUiEvent implements UiEventLogger.UiEventEnum {
+        @UiEvent(doc = "Secured lockscreen is opened.")
+        LOCKSCREEN_OPEN_SECURE(405),
+
+        @UiEvent(doc = "Lockscreen without security is opened.")
+        LOCKSCREEN_OPEN_INSECURE(406),
+
+        @UiEvent(doc = "Secured lockscreen is closed.")
+        LOCKSCREEN_CLOSE_SECURE(407),
+
+        @UiEvent(doc = "Lockscreen without security is closed.")
+        LOCKSCREEN_CLOSE_INSECURE(408),
+
+        @UiEvent(doc = "Secured bouncer is opened.")
+        BOUNCER_OPEN_SECURE(409),
+
+        @UiEvent(doc = "Bouncer without security is opened.")
+        BOUNCER_OPEN_INSECURE(410),
+
+        @UiEvent(doc = "Secured bouncer is closed.")
+        BOUNCER_CLOSE_SECURE(411),
+
+        @UiEvent(doc = "Bouncer without security is closed.")
+        BOUNCER_CLOSE_INSECURE(412);
+
+        private final int mId;
+
+        StatusBarUiEvent(int id) {
+            mId = id;
+        }
+
+        @Override
+        public int getId() {
+            return mId;
+        }
+    }
+
     protected final H mHandler = createHandler();
 
     private int mInteractingWindows;
@@ -2909,6 +2952,12 @@
                     isSecure ? 1 : 0,
                     unlocked ? 1 : 0);
             mLastLoggedStateFingerprint = stateFingerprint;
+
+            StringBuilder uiEventValueBuilder = new StringBuilder();
+            uiEventValueBuilder.append(isBouncerShowing ? "BOUNCER" : "LOCKSCREEN");
+            uiEventValueBuilder.append(isShowing ? "_OPEN" : "_CLOSE");
+            uiEventValueBuilder.append(isSecure ? "_SECURE" : "_INSECURE");
+            sUiEventLogger.log(StatusBarUiEvent.valueOf(uiEventValueBuilder.toString()));
         }
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java
index 6193a8e..428de9e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java
@@ -30,6 +30,7 @@
 import android.os.Handler;
 import android.os.RemoteException;
 import android.os.UserHandle;
+import android.util.Log;
 import android.view.View;
 import android.view.ViewParent;
 
@@ -47,6 +48,8 @@
 import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
 import com.android.systemui.statusbar.policy.KeyguardStateController;
 
+import java.util.concurrent.atomic.AtomicReference;
+
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
@@ -54,7 +57,8 @@
  */
 @Singleton
 public class StatusBarRemoteInputCallback implements Callback, Callbacks,
-        StatusBarStateController.StateListener {
+        StatusBarStateController.StateListener, KeyguardStateController.Callback {
+    private static final String TAG = StatusBarRemoteInputCallback.class.getSimpleName();
 
     private final KeyguardStateController mKeyguardStateController;
     private final SysuiStatusBarStateController mStatusBarStateController;
@@ -72,6 +76,7 @@
     private int mDisabled2;
     protected BroadcastReceiver mChallengeReceiver = new ChallengeReceiver();
     private Handler mMainHandler = new Handler();
+    private final AtomicReference<Intent> mPendingConfirmCredentialIntent = new AtomicReference();
 
     /**
      */
@@ -98,6 +103,9 @@
         mCommandQueue.addCallback(this);
         mActivityIntentHelper = new ActivityIntentHelper(mContext);
         mGroupManager = groupManager;
+        // Listen to onKeyguardShowingChanged in case a managed profile needs to be unlocked
+        // once the primary profile's keyguard is no longer shown.
+        mKeyguardStateController.addCallback(this);
     }
 
     @Override
@@ -201,12 +209,39 @@
         // Clear pending remote view, as we do not want to trigger pending remote input view when
         // it's called by other code
         mPendingWorkRemoteInputView = null;
-        // Begin old BaseStatusBar.startWorkChallengeIfNecessary.
-        final Intent newIntent = mKeyguardManager.createConfirmDeviceCredentialIntent(null,
-                null, userId);
+
+        final Intent newIntent = createConfirmDeviceCredentialIntent(
+                userId, intendSender, notificationKey);
         if (newIntent == null) {
+            Log.w(TAG, String.format("Cannot create intent to unlock user %d", userId));
             return false;
         }
+
+        mPendingConfirmCredentialIntent.set(newIntent);
+
+        // If the Keyguard is currently showing, starting the ConfirmDeviceCredentialActivity
+        // would cause it to pause, not letting the user actually unlock the managed profile.
+        // Instead, wait until we receive a callback indicating it is no longer showing and
+        // then start the pending intent.
+        if (mKeyguardStateController.isShowing()) {
+            // Do nothing, since the callback will get the pending intent and start it.
+            Log.w(TAG, String.format("Keyguard is showing, waiting until it's not"));
+        } else {
+            startPendingConfirmDeviceCredentialIntent();
+        }
+
+        return true;
+    }
+
+    private Intent createConfirmDeviceCredentialIntent(
+            int userId, IntentSender intendSender, String notificationKey) {
+        final Intent newIntent = mKeyguardManager.createConfirmDeviceCredentialIntent(null,
+                null, userId);
+
+        if (newIntent == null) {
+            return null;
+        }
+
         final Intent callBackIntent = new Intent(NOTIFICATION_UNLOCKED_BY_WORK_CHALLENGE_ACTION);
         callBackIntent.putExtra(Intent.EXTRA_INTENT, intendSender);
         callBackIntent.putExtra(Intent.EXTRA_INDEX, notificationKey);
@@ -222,14 +257,40 @@
         newIntent.putExtra(
                 Intent.EXTRA_INTENT,
                 callBackPendingIntent.getIntentSender());
+
+        return newIntent;
+    }
+
+    private void startPendingConfirmDeviceCredentialIntent() {
+        final Intent pendingIntent = mPendingConfirmCredentialIntent.getAndSet(null);
+        if (pendingIntent == null) {
+            return;
+        }
+
         try {
-            ActivityManager.getService().startConfirmDeviceCredentialIntent(newIntent,
+            if (mKeyguardStateController.isShowing()) {
+                Log.w(TAG, "Keyguard is showing while starting confirm device credential intent.");
+            }
+            ActivityManager.getService().startConfirmDeviceCredentialIntent(pendingIntent,
                     null /*options*/);
         } catch (RemoteException ex) {
             // ignore
         }
-        return true;
-        // End old BaseStatusBar.startWorkChallengeIfNecessary.
+    }
+
+    @Override
+    public void onKeyguardShowingChanged() {
+        if (mKeyguardStateController.isShowing()) {
+            // In order to avoid jarring UX where/ the managed profile challenge is shown and
+            // immediately dismissed, do not attempt to start the confirm device credential
+            // activity if the keyguard is still showing.
+            if (mPendingConfirmCredentialIntent.get() != null) {
+                Log.w(TAG, "There's a pending unlock intent but keyguard is still showing, abort.");
+            }
+            return;
+        }
+
+        startPendingConfirmDeviceCredentialIntent();
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/wm/SystemWindows.java b/packages/SystemUI/src/com/android/systemui/wm/SystemWindows.java
index 899aabb..0b6e4b2 100644
--- a/packages/SystemUI/src/com/android/systemui/wm/SystemWindows.java
+++ b/packages/SystemUI/src/com/android/systemui/wm/SystemWindows.java
@@ -201,6 +201,14 @@
             attrs.flags |= FLAG_HARDWARE_ACCELERATED;
             viewRoot.setView(view, attrs);
             mViewRoots.put(view, viewRoot);
+
+            try {
+                mWmService.setShellRootAccessibilityWindow(mDisplayId, windowType,
+                        viewRoot.getWindowToken());
+            } catch (RemoteException e) {
+                Slog.e(TAG, "Error setting accessibility window for " + mDisplayId + ":"
+                        + windowType, e);
+            }
         }
 
         SysUiWindowManager addRoot(int windowType) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeDockHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeDockHandlerTest.java
index 9985d21..dc02799 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeDockHandlerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeDockHandlerTest.java
@@ -19,6 +19,7 @@
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.clearInvocations;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.spy;
@@ -83,7 +84,16 @@
     }
 
     @Test
+    public void onEvent_noneWhileEnabledAod_ignoresIfAlreadyNone() {
+        mDockManagerFake.setDockEvent(DockManager.STATE_NONE);
+
+        verify(mMachine, never()).requestState(eq(State.DOZE_AOD));
+    }
+
+    @Test
     public void onEvent_noneWhileEnabledAod_requestsAodState() {
+        mDockManagerFake.setDockEvent(DockManager.STATE_DOCKED);
+        clearInvocations(mMachine);
         mDockManagerFake.setDockEvent(DockManager.STATE_NONE);
 
         verify(mMachine).requestState(eq(State.DOZE_AOD));
@@ -91,6 +101,8 @@
 
     @Test
     public void onEvent_noneWhileDisabledAod_requestsDozeState() {
+        mDockManagerFake.setDockEvent(DockManager.STATE_DOCKED);
+        clearInvocations(mMachine);
         doReturn(false).when(mConfig).alwaysOnEnabled(anyInt());
 
         mDockManagerFake.setDockEvent(DockManager.STATE_NONE);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
index ff03fba..317500c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
@@ -158,6 +158,13 @@
         verify(mTriggerSensor).setListening(eq(false));
     }
 
+    @Test
+    public void testDestroy() {
+        mDozeSensors.destroy();
+
+        verify(mTriggerSensor).setListening(false);
+    }
+
     private class TestableDozeSensors extends DozeSensors {
 
         TestableDozeSensors() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java
index 3847028..dbf40e4 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java
@@ -386,7 +386,10 @@
                 applicationInfo);
         when(mMockPackageManager.getApplicationLabel(any())).thenReturn("Other");
 
-        NotificationEntry entry = new NotificationEntryBuilder().setSbn(mSbn).build();
+        NotificationEntry entry = new NotificationEntryBuilder()
+                .setSbn(mSbn)
+                .setShortcutInfo(mShortcutInfo)
+                .build();
         mNotificationInfo.bindNotification(
                 mShortcutManager,
                 mMockPackageManager,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/PartialConversationInfoTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/PartialConversationInfoTest.java
new file mode 100644
index 0000000..c390e39
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/PartialConversationInfoTest.java
@@ -0,0 +1,397 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.systemui.statusbar.notification.row;
+
+import static android.app.Notification.EXTRA_IS_GROUP_CONVERSATION;
+import static android.app.NotificationManager.IMPORTANCE_LOW;
+import static android.print.PrintManager.PRINT_SPOOLER_PACKAGE_NAME;
+import static android.view.View.GONE;
+import static android.view.View.VISIBLE;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertTrue;
+
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.anyBoolean;
+import static org.mockito.Mockito.anyInt;
+import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.app.INotificationManager;
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationChannelGroup;
+import android.app.Person;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.Icon;
+import android.os.UserHandle;
+import android.service.notification.StatusBarNotification;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.internal.logging.MetricsLogger;
+import com.android.systemui.Dependency;
+import com.android.systemui.R;
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.concurrent.CountDownLatch;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+@TestableLooper.RunWithLooper
+public class PartialConversationInfoTest extends SysuiTestCase {
+    private static final String TEST_PACKAGE_NAME = "test_package";
+    private static final String TEST_SYSTEM_PACKAGE_NAME = PRINT_SPOOLER_PACKAGE_NAME;
+    private static final int TEST_UID = 1;
+    private static final String TEST_CHANNEL = "test_channel";
+    private static final String TEST_CHANNEL_NAME = "TEST CHANNEL NAME";
+
+    private TestableLooper mTestableLooper;
+    private PartialConversationInfo mInfo;
+    private NotificationChannel mNotificationChannel;
+    private NotificationChannel mDefaultNotificationChannel;
+    private Set<NotificationChannel> mNotificationChannelSet = new HashSet<>();
+    private Set<NotificationChannel> mDefaultNotificationChannelSet = new HashSet<>();
+    private StatusBarNotification mSbn;
+    private NotificationEntry mEntry;
+
+    @Rule
+    public MockitoRule mockito = MockitoJUnit.rule();
+    @Mock
+    private MetricsLogger mMetricsLogger;
+    @Mock
+    private INotificationManager mMockINotificationManager;
+    @Mock
+    private PackageManager mMockPackageManager;
+
+    @Mock
+    private Icon mIcon;
+    @Mock
+    private Drawable mDrawable;
+
+    @Before
+    public void setUp() throws Exception {
+        mTestableLooper = TestableLooper.get(this);
+
+        mDependency.injectTestDependency(Dependency.BG_LOOPER, mTestableLooper.getLooper());
+        mDependency.injectTestDependency(MetricsLogger.class, mMetricsLogger);
+        // Inflate the layout
+        final LayoutInflater layoutInflater = LayoutInflater.from(mContext);
+        mInfo = (PartialConversationInfo) layoutInflater.inflate(R.layout.partial_conversation_info,
+                null);
+        mInfo.setGutsParent(mock(NotificationGuts.class));
+        // Our view is never attached to a window so the View#post methods in NotificationInfo never
+        // get called. Setting this will skip the post and do the action immediately.
+        mInfo.mSkipPost = true;
+
+        // PackageManager must return a packageInfo and applicationInfo.
+        final PackageInfo packageInfo = new PackageInfo();
+        packageInfo.packageName = TEST_PACKAGE_NAME;
+        when(mMockPackageManager.getPackageInfo(eq(TEST_PACKAGE_NAME), anyInt()))
+                .thenReturn(packageInfo);
+        final ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.uid = TEST_UID;  // non-zero
+        when(mMockPackageManager.getApplicationInfo(eq(TEST_PACKAGE_NAME), anyInt())).thenReturn(
+                applicationInfo);
+        final PackageInfo systemPackageInfo = new PackageInfo();
+        systemPackageInfo.packageName = TEST_SYSTEM_PACKAGE_NAME;
+        when(mMockPackageManager.getPackageInfo(eq(TEST_SYSTEM_PACKAGE_NAME), anyInt()))
+                .thenReturn(systemPackageInfo);
+        when(mMockPackageManager.getPackageInfo(eq("android"), anyInt()))
+                .thenReturn(packageInfo);
+
+        // Package has one channel by default.
+        when(mMockINotificationManager.getNumNotificationChannelsForPackage(
+                eq(TEST_PACKAGE_NAME), eq(TEST_UID), anyBoolean())).thenReturn(1);
+
+        when(mIcon.loadDrawable(any())).thenReturn(mDrawable);
+
+        // Some test channels.
+        mNotificationChannel = new NotificationChannel(
+                TEST_CHANNEL, TEST_CHANNEL_NAME, IMPORTANCE_LOW);
+        mNotificationChannelSet.add(mNotificationChannel);
+        mDefaultNotificationChannel = new NotificationChannel(
+                NotificationChannel.DEFAULT_CHANNEL_ID, TEST_CHANNEL_NAME,
+                IMPORTANCE_LOW);
+        mDefaultNotificationChannelSet.add(mDefaultNotificationChannel);
+        mSbn = new StatusBarNotification(TEST_PACKAGE_NAME, TEST_PACKAGE_NAME, 0, null, TEST_UID, 0,
+                new Notification(), UserHandle.CURRENT, null, 0);
+        mEntry = new NotificationEntryBuilder().setSbn(mSbn).build();
+    }
+
+    @Test
+    public void testBindNotification_SetsTextApplicationName() throws Exception {
+        when(mMockPackageManager.getApplicationLabel(any())).thenReturn("App Name");
+        mInfo.bindNotification(
+                mMockPackageManager,
+                mMockINotificationManager,
+                TEST_PACKAGE_NAME,
+                mNotificationChannel,
+                mNotificationChannelSet,
+                mEntry,
+                null,
+                true,
+                false);
+        final TextView textView = mInfo.findViewById(R.id.pkg_name);
+        assertTrue(textView.getText().toString().contains("App Name"));
+        assertEquals(VISIBLE, mInfo.findViewById(R.id.header).getVisibility());
+    }
+
+    @Test
+    public void testBindNotification_groupSetsPackageIcon() {
+        mEntry.getSbn().getNotification().extras.putBoolean(EXTRA_IS_GROUP_CONVERSATION, true);
+        final Drawable iconDrawable = mock(Drawable.class);
+        when(mMockPackageManager.getApplicationIcon(any(ApplicationInfo.class)))
+                .thenReturn(iconDrawable);
+        mInfo.bindNotification(
+                mMockPackageManager,
+                mMockINotificationManager,
+                TEST_PACKAGE_NAME,
+                mNotificationChannel,
+                mNotificationChannelSet,
+                mEntry,
+                null,
+                true,
+                false);
+        final ImageView iconView = mInfo.findViewById(R.id.conversation_icon);
+        assertEquals(iconDrawable, iconView.getDrawable());
+    }
+
+    @Test
+    public void testBindNotification_notGroupSetsMessageIcon() {
+        Notification n = new Notification.Builder(mContext, TEST_CHANNEL_NAME)
+                .setStyle(new Notification.MessagingStyle(
+                        new Person.Builder().setName("me").build())
+                .addMessage(new Notification.MessagingStyle.Message("hello", 0,
+                        new Person.Builder().setName("friend").setIcon(mIcon).build())))
+                .build();
+        mSbn = new StatusBarNotification(TEST_PACKAGE_NAME, TEST_PACKAGE_NAME, 0, null, TEST_UID, 0,
+                n, UserHandle.CURRENT, null, 0);
+        mEntry.setSbn(mSbn);
+        mEntry.getSbn().getNotification().extras.putBoolean(EXTRA_IS_GROUP_CONVERSATION, false);
+        mInfo.bindNotification(
+                mMockPackageManager,
+                mMockINotificationManager,
+                TEST_PACKAGE_NAME,
+                mNotificationChannel,
+                mNotificationChannelSet,
+                mEntry,
+                null,
+                true,
+                false);
+        final ImageView iconView = mInfo.findViewById(R.id.conversation_icon);
+        assertEquals(mDrawable.hashCode() + "", mDrawable, iconView.getDrawable());
+    }
+
+    @Test
+    public void testBindNotification_noDelegate() {
+        mInfo.bindNotification(
+                mMockPackageManager,
+                mMockINotificationManager,
+                TEST_PACKAGE_NAME,
+                mNotificationChannel,
+                mNotificationChannelSet,
+                mEntry,
+                null,
+                true,
+                false);
+        final TextView nameView = mInfo.findViewById(R.id.delegate_name);
+        assertEquals(GONE, nameView.getVisibility());
+        final TextView dividerView = mInfo.findViewById(R.id.group_divider);
+        assertEquals(GONE, dividerView.getVisibility());
+    }
+
+    @Test
+    public void testBindNotification_delegate() throws Exception {
+        mSbn = new StatusBarNotification(TEST_PACKAGE_NAME, "other", 0, null, TEST_UID, 0,
+                new Notification(), UserHandle.CURRENT, null, 0);
+        final ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.uid = 7;  // non-zero
+        when(mMockPackageManager.getApplicationInfo(eq("other"), anyInt())).thenReturn(
+                applicationInfo);
+        when(mMockPackageManager.getApplicationLabel(any())).thenReturn("Other");
+
+        NotificationEntry entry = new NotificationEntryBuilder().setSbn(mSbn).build();
+        mInfo.bindNotification(
+                mMockPackageManager,
+                mMockINotificationManager,
+                TEST_PACKAGE_NAME,
+                mNotificationChannel,
+                mNotificationChannelSet,
+                entry,
+                null,
+                true,
+                false);
+        final TextView nameView = mInfo.findViewById(R.id.delegate_name);
+        assertEquals(VISIBLE, nameView.getVisibility());
+        assertTrue(nameView.getText().toString().contains("Proxied"));
+    }
+
+    @Test
+    public void testBindNotification_GroupNameHiddenIfNoGroup() throws Exception {
+        mInfo.bindNotification(
+                mMockPackageManager,
+                mMockINotificationManager,
+                TEST_PACKAGE_NAME,
+                mNotificationChannel,
+                mNotificationChannelSet,
+                mEntry,
+                null,
+                true,
+                false);
+        final TextView groupNameView = mInfo.findViewById(R.id.group_name);
+        assertEquals(GONE, groupNameView.getVisibility());
+        final TextView dividerView = mInfo.findViewById(R.id.group_divider);
+        assertEquals(GONE, dividerView.getVisibility());
+    }
+
+    @Test
+    public void testBindNotification_SetsGroupNameIfNonNull() throws Exception {
+        mNotificationChannel.setGroup("test_group_id");
+        final NotificationChannelGroup notificationChannelGroup =
+                new NotificationChannelGroup("test_group_id", "Test Group Name");
+        when(mMockINotificationManager.getNotificationChannelGroupForPackage(
+                eq("test_group_id"), eq(TEST_PACKAGE_NAME), eq(TEST_UID)))
+                .thenReturn(notificationChannelGroup);
+        mInfo.bindNotification(
+                mMockPackageManager,
+                mMockINotificationManager,
+                TEST_PACKAGE_NAME,
+                mNotificationChannel,
+                mNotificationChannelSet,
+                mEntry,
+                null,
+                true,
+                false);
+        final TextView groupNameView = mInfo.findViewById(R.id.group_name);
+        assertEquals(View.VISIBLE, groupNameView.getVisibility());
+        assertEquals("Test Group Name", groupNameView.getText());
+        final TextView dividerView = mInfo.findViewById(R.id.group_divider);
+        assertEquals(View.VISIBLE, dividerView.getVisibility());
+    }
+
+    @Test
+    public void testBindNotification_SetsTextChannelName() {
+        mInfo.bindNotification(
+                mMockPackageManager,
+                mMockINotificationManager,
+                TEST_PACKAGE_NAME,
+                mNotificationChannel,
+                mNotificationChannelSet,
+                mEntry,
+                null,
+                true,
+                false);
+        final TextView textView = mInfo.findViewById(R.id.parent_channel_name);
+        assertEquals(TEST_CHANNEL_NAME, textView.getText());
+    }
+
+    @Test
+    public void testBindNotification_SetsOnClickListenerForSettings() {
+        final CountDownLatch latch = new CountDownLatch(1);
+        mInfo.bindNotification(
+                mMockPackageManager,
+                mMockINotificationManager,
+                TEST_PACKAGE_NAME,
+                mNotificationChannel,
+                mNotificationChannelSet,
+                mEntry,
+                (View v, NotificationChannel c, int appUid) -> {
+                    assertEquals(mNotificationChannel, c);
+                    latch.countDown();
+                },
+                true,
+                false);
+
+        final View settingsButton = mInfo.findViewById(R.id.info);
+        settingsButton.performClick();
+        // Verify that listener was triggered.
+        assertEquals(0, latch.getCount());
+    }
+
+    @Test
+    public void testBindNotification_SettingsButtonInvisibleWhenNoClickListener() {
+        mInfo.bindNotification(
+                mMockPackageManager,
+                mMockINotificationManager,
+                TEST_PACKAGE_NAME,
+                mNotificationChannel,
+                mNotificationChannelSet,
+                mEntry,
+                null,
+                true,
+                false);
+        final View settingsButton = mInfo.findViewById(R.id.info);
+        assertTrue(settingsButton.getVisibility() != View.VISIBLE);
+    }
+
+    @Test
+    public void testBindNotification_SettingsButtonInvisibleWhenDeviceUnprovisioned() {
+        mInfo.bindNotification(
+                mMockPackageManager,
+                mMockINotificationManager,
+                TEST_PACKAGE_NAME,
+                mNotificationChannel,
+                mNotificationChannelSet,
+                mEntry,
+                (View v, NotificationChannel c, int appUid) -> {
+                    assertEquals(mNotificationChannel, c);
+                },
+                false,
+                false);
+        final View settingsButton = mInfo.findViewById(R.id.info);
+        assertTrue(settingsButton.getVisibility() != View.VISIBLE);
+    }
+
+    @Test
+    public void testBindNotification_whenAppUnblockable() {
+        mInfo.bindNotification(
+                mMockPackageManager,
+                mMockINotificationManager,
+                TEST_PACKAGE_NAME,
+                mNotificationChannel,
+                mNotificationChannelSet,
+                mEntry,
+                null,
+                true,
+                true);
+
+        assertEquals(GONE,
+                mInfo.findViewById(R.id.turn_off_notifications).getVisibility());
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java
index 9aa0fdd..a77f8c6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java
@@ -62,6 +62,7 @@
 import com.android.systemui.Dependency;
 import com.android.systemui.SysuiBaseFragmentTest;
 import com.android.systemui.SysuiTestableContext;
+import com.android.systemui.accessibility.SystemActions;
 import com.android.systemui.assist.AssistManager;
 import com.android.systemui.broadcast.BroadcastDispatcher;
 import com.android.systemui.model.SysUiState;
@@ -102,6 +103,8 @@
     private Divider mDivider;
     @Mock
     private Recents mRecents;
+    @Mock
+    private SystemActions mSystemActions;
 
     private AccessibilityManagerWrapper mAccessibilityWrapper =
             new AccessibilityManagerWrapper(mContext) {
@@ -257,6 +260,7 @@
                 () -> mock(StatusBar.class),
                 mock(ShadeController.class),
                 mock(NotificationRemoteInputManager.class),
+                mock(SystemActions.class),
                 mHandler);
     }
 
diff --git a/packages/Tethering/jarjar-rules.txt b/packages/Tethering/jarjar-rules.txt
index c6efa41..e90a2cc 100644
--- a/packages/Tethering/jarjar-rules.txt
+++ b/packages/Tethering/jarjar-rules.txt
@@ -8,7 +8,6 @@
 rule com.android.internal.util.IndentingPrintWriter.java* com.android.networkstack.tethering.util.IndentingPrintWriter.java@1
 rule com.android.internal.util.IState.java* com.android.networkstack.tethering.util.IState.java@1
 rule com.android.internal.util.MessageUtils* com.android.networkstack.tethering.util.MessageUtils@1
-rule com.android.internal.util.Preconditions* com.android.networkstack.tethering.util.Preconditions@1
 rule com.android.internal.util.State* com.android.networkstack.tethering.util.State@1
 rule com.android.internal.util.StateMachine* com.android.networkstack.tethering.util.StateMachine@1
 rule com.android.internal.util.TrafficStatsConstants* com.android.networkstack.tethering.util.TrafficStatsConstants@1
diff --git a/packages/Tethering/src/com/android/networkstack/tethering/UpstreamNetworkMonitor.java b/packages/Tethering/src/com/android/networkstack/tethering/UpstreamNetworkMonitor.java
index 25ddce4..320427c 100644
--- a/packages/Tethering/src/com/android/networkstack/tethering/UpstreamNetworkMonitor.java
+++ b/packages/Tethering/src/com/android/networkstack/tethering/UpstreamNetworkMonitor.java
@@ -43,7 +43,6 @@
 import android.util.SparseIntArray;
 
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.Preconditions;
 import com.android.internal.util.StateMachine;
 
 import java.util.HashMap;
@@ -591,7 +590,9 @@
         // Map from type to transports.
         final int notFound = -1;
         final int transport = sLegacyTypeToTransport.get(type, notFound);
-        Preconditions.checkArgument(transport != notFound, "unknown legacy type: " + type);
+        if (transport == notFound) {
+            throw new IllegalArgumentException("unknown legacy type: " + type);
+        }
         builder.addTransportType(transport);
 
         if (type == TYPE_MOBILE_DUN) {
diff --git a/packages/Tethering/tests/unit/jarjar-rules.txt b/packages/Tethering/tests/unit/jarjar-rules.txt
index 921fbed..1ea56cd 100644
--- a/packages/Tethering/tests/unit/jarjar-rules.txt
+++ b/packages/Tethering/tests/unit/jarjar-rules.txt
@@ -4,7 +4,6 @@
 rule com.android.internal.util.IndentingPrintWriter.java* com.android.networkstack.tethering.util.IndentingPrintWriter.java@1
 rule com.android.internal.util.IState.java* com.android.networkstack.tethering.util.IState.java@1
 rule com.android.internal.util.MessageUtils* com.android.networkstack.tethering.util.MessageUtils@1
-rule com.android.internal.util.Preconditions* com.android.networkstack.tethering.util.Preconditions@1
 rule com.android.internal.util.State* com.android.networkstack.tethering.util.State@1
 rule com.android.internal.util.StateMachine* com.android.networkstack.tethering.util.StateMachine@1
 rule com.android.internal.util.TrafficStatsConstants* com.android.networkstack.tethering.util.TrafficStatsConstants@1
diff --git a/packages/overlays/Android.mk b/packages/overlays/Android.mk
index dcdb80b..550b871 100644
--- a/packages/overlays/Android.mk
+++ b/packages/overlays/Android.mk
@@ -45,9 +45,11 @@
 	IconPackRoundedSettingsOverlay \
 	IconPackRoundedSystemUIOverlay \
 	IconPackRoundedThemePickerOverlay \
+	IconShapePebbleOverlay \
 	IconShapeRoundedRectOverlay \
 	IconShapeSquircleOverlay \
 	IconShapeTeardropOverlay \
+	IconShapeVesselOverlay \
 	NavigationBarMode3ButtonOverlay \
 	NavigationBarModeGesturalOverlay \
 	NavigationBarModeGesturalOverlayNarrowBack \
diff --git a/packages/overlays/IconShapeFlowerOverlay/Android.mk b/packages/overlays/IconShapeVesselOverlay/Android.mk
similarity index 90%
rename from packages/overlays/IconShapeFlowerOverlay/Android.mk
rename to packages/overlays/IconShapeVesselOverlay/Android.mk
index d410bb7..0816e6f 100644
--- a/packages/overlays/IconShapeFlowerOverlay/Android.mk
+++ b/packages/overlays/IconShapeVesselOverlay/Android.mk
@@ -17,13 +17,13 @@
 LOCAL_PATH:= $(call my-dir)
 include $(CLEAR_VARS)
 
-LOCAL_RRO_THEME := IconShapeFlower
+LOCAL_RRO_THEME := IconShapeVessel
 
 LOCAL_PRODUCT_MODULE := true
 
 LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
 
-LOCAL_PACKAGE_NAME := IconShapeFlowerOverlay
+LOCAL_PACKAGE_NAME := IconShapeVesselOverlay
 LOCAL_SDK_VERSION := current
 
 include $(BUILD_RRO_PACKAGE)
diff --git a/packages/overlays/IconShapeFlowerOverlay/AndroidManifest.xml b/packages/overlays/IconShapeVesselOverlay/AndroidManifest.xml
similarity index 89%
rename from packages/overlays/IconShapeFlowerOverlay/AndroidManifest.xml
rename to packages/overlays/IconShapeVesselOverlay/AndroidManifest.xml
index 9d20c6b..025ac69 100644
--- a/packages/overlays/IconShapeFlowerOverlay/AndroidManifest.xml
+++ b/packages/overlays/IconShapeVesselOverlay/AndroidManifest.xml
@@ -14,7 +14,7 @@
   ~ limitations under the License.
   -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.android.theme.icon.flower"
+          package="com.android.theme.icon.vessel"
           android:versionCode="1"
           android:versionName="1.0">
     <overlay
@@ -22,5 +22,5 @@
         android:category="android.theme.customization.adaptive_icon_shape"
         android:priority="1"/>
 
-    <application android:label="@string/icon_shape_flower_overlay" android:hasCode="false"/>
+    <application android:label="@string/icon_shape_vessel_overlay" android:hasCode="false"/>
 </manifest>
diff --git a/packages/overlays/IconShapeFlowerOverlay/res/values/config.xml b/packages/overlays/IconShapeVesselOverlay/res/values/config.xml
similarity index 67%
rename from packages/overlays/IconShapeFlowerOverlay/res/values/config.xml
rename to packages/overlays/IconShapeVesselOverlay/res/values/config.xml
index 73f4f21..86d31f6 100644
--- a/packages/overlays/IconShapeFlowerOverlay/res/values/config.xml
+++ b/packages/overlays/IconShapeVesselOverlay/res/values/config.xml
@@ -16,7 +16,7 @@
   -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <!-- Specifies the path that is used by AdaptiveIconDrawable class to crop launcher icons. -->
-    <string name="config_icon_mask" translatable="false">"M50,0 C60.6,0 69.9,5.3 75.6,13.5 78.5,17.8 82.3,21.5 86.6,24.5 94.7,30.1 100,39.4 100,50 100,60.6 94.7,69.9 86.5,75.6 82.2,78.5 78.5,82.3 75.5,86.6 69.9,94.7 60.6,100 50,100 39.4,100 30.1,94.7 24.4,86.5 21.5,82.2 17.7,78.5 13.4,75.5 5.3,69.9 0,60.6 0,50 0,39.4 5.3,30.1 13.5,24.4 17.8,21.5 21.5,17.7 24.5,13.4 30.1,5.3 39.4,0 50,0 Z"</string>
+    <string name="config_icon_mask" translatable="false">"M12.97,0 C8.41,0 4.14,2.55 2.21,6.68 -1.03,13.61 -0.71,21.78 3.16,28.46 4.89,31.46 4.89,35.2 3.16,38.2 -1.05,45.48 -1.05,54.52 3.16,61.8 4.89,64.8 4.89,68.54 3.16,71.54 -0.71,78.22 -1.03,86.39 2.21,93.32 4.14,97.45 8.41,100 12.97,100 21.38,100 78.62,100 87.03,100 91.59,100 95.85,97.45 97.79,93.32 101.02,86.39 100.71,78.22 96.84,71.54 95.1,68.54 95.1,64.8 96.84,61.8 101.05,54.52 101.05,45.48 96.84,38.2 95.1,35.2 95.1,31.46 96.84,28.46 100.71,21.78 101.02,13.61 97.79,6.68 95.85,2.55 91.59,0 87.03,0 78.62,0 21.38,0 12.97,0 Z"</string>
     <!-- Flag indicating whether round icons should be parsed from the application manifest. -->
     <bool name="config_useRoundIcon">false</bool>
     <!-- Corner radius of system dialogs -->
diff --git a/packages/overlays/IconShapeFlowerOverlay/res/values/strings.xml b/packages/overlays/IconShapeVesselOverlay/res/values/strings.xml
similarity index 86%
rename from packages/overlays/IconShapeFlowerOverlay/res/values/strings.xml
rename to packages/overlays/IconShapeVesselOverlay/res/values/strings.xml
index 47c1479..a50e7e9 100644
--- a/packages/overlays/IconShapeFlowerOverlay/res/values/strings.xml
+++ b/packages/overlays/IconShapeVesselOverlay/res/values/strings.xml
@@ -15,7 +15,7 @@
   ~ limitations under the License.
   -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- Flower icon overlay -->
-    <string name="icon_shape_flower_overlay" translatable="false">Flower</string>
+    <!-- Vessel icon overlay -->
+    <string name="icon_shape_vessel_overlay" translatable="false">Vessel</string>
 
 </resources>
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 20850af..02ab60b 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -201,7 +201,8 @@
 
     private final MainHandler mMainHandler;
 
-    private final SystemActionPerformer mSystemActionPerformer;
+    // Lazily initialized - access through getSystemActionPerfomer()
+    private SystemActionPerformer mSystemActionPerformer;
 
     private MagnificationController mMagnificationController;
 
@@ -299,8 +300,6 @@
         mActivityTaskManagerService = LocalServices.getService(ActivityTaskManagerInternal.class);
         mPackageManager = mContext.getPackageManager();
         mSecurityPolicy = new AccessibilitySecurityPolicy(mContext, this);
-        mSystemActionPerformer =
-                new SystemActionPerformer(mContext, mWindowManagerService, null, this);
         mA11yWindowManager = new AccessibilityWindowManager(mLock, mMainHandler,
                 mWindowManagerService, this, mSecurityPolicy, this);
         mA11yDisplayListener = new AccessibilityDisplayListener(mContext, mMainHandler);
@@ -677,7 +676,7 @@
         mSecurityPolicy.enforceCallerIsRecentsOrHasPermission(
                 Manifest.permission.MANAGE_ACCESSIBILITY,
                 FUNCTION_REGISTER_SYSTEM_ACTION);
-        mSystemActionPerformer.registerSystemAction(actionId, action);
+        getSystemActionPerformer().registerSystemAction(actionId, action);
     }
 
     /**
@@ -690,7 +689,15 @@
         mSecurityPolicy.enforceCallerIsRecentsOrHasPermission(
                 Manifest.permission.MANAGE_ACCESSIBILITY,
                 FUNCTION_UNREGISTER_SYSTEM_ACTION);
-        mSystemActionPerformer.unregisterSystemAction(actionId);
+        getSystemActionPerformer().unregisterSystemAction(actionId);
+    }
+
+    private SystemActionPerformer getSystemActionPerformer() {
+        if (mSystemActionPerformer == null) {
+            mSystemActionPerformer =
+                    new SystemActionPerformer(mContext, mWindowManagerService, null, this);
+        }
+        return mSystemActionPerformer;
     }
 
     @Override
@@ -802,7 +809,7 @@
         synchronized (mLock) {
             mUiAutomationManager.registerUiTestAutomationServiceLocked(owner, serviceClient,
                     mContext, accessibilityServiceInfo, sIdCounter++, mMainHandler,
-                    mSecurityPolicy, this, mWindowManagerService, mSystemActionPerformer,
+                    mSecurityPolicy, this, mWindowManagerService, getSystemActionPerformer(),
                     mA11yWindowManager, flags);
             onUserStateChangedLocked(getCurrentUserStateLocked());
         }
@@ -1522,7 +1529,7 @@
                 if (service == null) {
                     service = new AccessibilityServiceConnection(userState, mContext, componentName,
                             installedService, sIdCounter++, mMainHandler, mLock, mSecurityPolicy,
-                            this, mWindowManagerService, mSystemActionPerformer,
+                            this, mWindowManagerService, getSystemActionPerformer(),
                             mA11yWindowManager, mActivityTaskManagerService);
                 } else if (userState.mBoundServices.contains(service)) {
                     continue;
@@ -2804,7 +2811,7 @@
                     userState, mContext,
                     COMPONENT_NAME, info, sIdCounter++, mMainHandler, mLock, mSecurityPolicy,
                     AccessibilityManagerService.this, mWindowManagerService,
-                    mSystemActionPerformer, mA11yWindowManager, mActivityTaskManagerService) {
+                    getSystemActionPerformer(), mA11yWindowManager, mActivityTaskManagerService) {
                 @Override
                 public boolean supportsFlagForNotImportantViews(AccessibilityServiceInfo info) {
                     return true;
diff --git a/services/accessibility/java/com/android/server/accessibility/SystemActionPerformer.java b/services/accessibility/java/com/android/server/accessibility/SystemActionPerformer.java
index a1fc3fa..3505499 100644
--- a/services/accessibility/java/com/android/server/accessibility/SystemActionPerformer.java
+++ b/services/accessibility/java/com/android/server/accessibility/SystemActionPerformer.java
@@ -85,7 +85,6 @@
     private final AccessibilityAction mLegacyNotificationsAction;
     private final AccessibilityAction mLegacyQuickSettingsAction;
     private final AccessibilityAction mLegacyPowerDialogAction;
-    private final AccessibilityAction mLegacyToggleSplitScreenAction;
     private final AccessibilityAction mLegacyLockScreenAction;
     private final AccessibilityAction mLegacyTakeScreenshotAction;
 
@@ -142,10 +141,6 @@
                 AccessibilityService.GLOBAL_ACTION_POWER_DIALOG,
                 mContext.getResources().getString(
                         R.string.accessibility_system_action_power_dialog_label));
-        mLegacyToggleSplitScreenAction = new AccessibilityAction(
-                AccessibilityService.GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN,
-                mContext.getResources().getString(
-                        R.string.accessibility_system_action_toggle_split_screen_label));
         mLegacyLockScreenAction = new AccessibilityAction(
                 AccessibilityService.GLOBAL_ACTION_LOCK_SCREEN,
                 mContext.getResources().getString(
@@ -235,10 +230,6 @@
             systemActions.add(mLegacyPowerDialogAction);
         }
         if (!mRegisteredSystemActions.containsKey(
-                AccessibilityService.GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN)) {
-            systemActions.add(mLegacyToggleSplitScreenAction);
-        }
-        if (!mRegisteredSystemActions.containsKey(
                 AccessibilityService.GLOBAL_ACTION_LOCK_SCREEN)) {
             systemActions.add(mLegacyLockScreenAction);
         }
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java b/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java
index bc38fbf..4fee672 100644
--- a/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java
@@ -566,6 +566,7 @@
                     // a given distance perform a drag.
                     mState.startDragging();
                     mDraggingPointerId = pointerId;
+                    adjustEventLocationForDrag(event);
                     event.setEdgeFlags(mReceivedPointerTracker.getLastReceivedDownEdgeFlags());
                     mDispatcher.sendMotionEvent(
                             event, MotionEvent.ACTION_DOWN, rawEvent, pointerIdBits, policyFlags);
@@ -793,10 +794,6 @@
      */
     private void handleMotionEventStateDelegating(
             MotionEvent event, MotionEvent rawEvent, int policyFlags) {
-        if (mGestureDetector.isMultiFingerGesturesEnabled()) {
-            // Multi-finger gestures conflict with this functionality.
-            return;
-        }
         switch (event.getActionMasked()) {
             case MotionEvent.ACTION_DOWN: {
                 Slog.e(LOG_TAG, "Delegating state can only be reached if "
diff --git a/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionFactory.java b/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionFactory.java
index a86d34d..79c9efa 100644
--- a/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionFactory.java
+++ b/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionFactory.java
@@ -319,9 +319,10 @@
             }
 
             @Override
-            public void onContent(SurfaceControlViewHost.SurfacePackage surface)
+            public void onContent(SurfaceControlViewHost.SurfacePackage surface, int width,
+                    int height)
                     throws RemoteException {
-                callback.onContent(surface);
+                callback.onContent(surface, width, height);
                 surface.release();
             }
 
diff --git a/services/core/java/com/android/server/Watchdog.java b/services/core/java/com/android/server/Watchdog.java
index 58972a5..425a045 100644
--- a/services/core/java/com/android/server/Watchdog.java
+++ b/services/core/java/com/android/server/Watchdog.java
@@ -117,6 +117,7 @@
             "android.hardware.graphics.allocator@2.0::IAllocator",
             "android.hardware.graphics.composer@2.1::IComposer",
             "android.hardware.health@2.0::IHealth",
+            "android.hardware.light@2.0::ILight",
             "android.hardware.media.c2@1.0::IComponentStore",
             "android.hardware.media.omx@1.0::IOmx",
             "android.hardware.media.omx@1.0::IOmxStore",
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 0bd134c..bb0c0cf 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -5364,7 +5364,7 @@
             return false;
         }
 
-        if (!didSomething) {
+        if (didSomething) {
             updateOomAdjLocked(app, OomAdjuster.OOM_ADJ_REASON_PROCESS_BEGIN);
             checkTime(startTime, "attachApplicationLocked: after updateOomAdjLocked");
         }
diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java
index b647818..090ac54 100644
--- a/services/core/java/com/android/server/am/BatteryStatsService.java
+++ b/services/core/java/com/android/server/am/BatteryStatsService.java
@@ -16,7 +16,6 @@
 
 package com.android.server.am;
 
-import android.app.ActivityManager;
 import android.bluetooth.BluetoothActivityEnergyInfo;
 import android.content.ContentResolver;
 import android.content.Context;
@@ -376,9 +375,6 @@
     /** @param state Process state from ActivityManager.java. */
     void noteUidProcessState(int uid, int state) {
         synchronized (mStats) {
-            FrameworkStatsLog.write(FrameworkStatsLog.UID_PROCESS_STATE_CHANGED, uid,
-                    ActivityManager.processStateAmToProto(state));
-
             mStats.noteUidProcessStateLocked(uid, state);
         }
     }
diff --git a/services/core/java/com/android/server/biometrics/BiometricService.java b/services/core/java/com/android/server/biometrics/BiometricService.java
index d49b590..70fbca5 100644
--- a/services/core/java/com/android/server/biometrics/BiometricService.java
+++ b/services/core/java/com/android/server/biometrics/BiometricService.java
@@ -1504,11 +1504,17 @@
         try {
             switch (reason) {
                 case BiometricPrompt.DISMISSED_REASON_CREDENTIAL_CONFIRMED:
-                    mKeyStore.addAuthToken(credentialAttestation);
+                    if (credentialAttestation != null) {
+                        mKeyStore.addAuthToken(credentialAttestation);
+                    } else {
+                        Slog.e(TAG, "Credential confirmed but attestation is null");
+                    }
                 case BiometricPrompt.DISMISSED_REASON_BIOMETRIC_CONFIRMED:
                 case BiometricPrompt.DISMISSED_REASON_BIOMETRIC_CONFIRM_NOT_REQUIRED:
                     if (mCurrentAuthSession.mTokenEscrow != null) {
                         mKeyStore.addAuthToken(mCurrentAuthSession.mTokenEscrow);
+                    } else {
+                        Slog.e(TAG, "mTokenEscrow is null");
                     }
                     mCurrentAuthSession.mClientReceiver.onAuthenticationSucceeded(
                             Utils.getAuthenticationTypeForResult(reason));
diff --git a/services/core/java/com/android/server/dreams/DreamController.java b/services/core/java/com/android/server/dreams/DreamController.java
index 5320453..5bc69943 100644
--- a/services/core/java/com/android/server/dreams/DreamController.java
+++ b/services/core/java/com/android/server/dreams/DreamController.java
@@ -62,6 +62,7 @@
     private final Listener mListener;
     private final IWindowManager mIWindowManager;
     private long mDreamStartTime;
+    private String mSavedStopReason;
 
     private final Intent mDreamingStartedIntent = new Intent(Intent.ACTION_DREAMING_STARTED)
             .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
@@ -77,14 +78,15 @@
         public void run() {
             if (mCurrentDream != null && mCurrentDream.mBound && !mCurrentDream.mConnected) {
                 Slog.w(TAG, "Bound dream did not connect in the time allotted");
-                stopDream(true /*immediate*/);
+                stopDream(true /*immediate*/, "slow to connect");
             }
         }
     };
 
     private final Runnable mStopStubbornDreamRunnable = () -> {
         Slog.w(TAG, "Stubborn dream did not finish itself in the time allotted");
-        stopDream(true /*immediate*/);
+        stopDream(true /*immediate*/, "slow to finish");
+        mSavedStopReason = null;
     };
 
     public DreamController(Context context, Handler handler, Listener listener) {
@@ -116,7 +118,7 @@
 
     public void startDream(Binder token, ComponentName name,
             boolean isTest, boolean canDoze, int userId, PowerManager.WakeLock wakeLock) {
-        stopDream(true /*immediate*/);
+        stopDream(true /*immediate*/, "starting new dream");
 
         Trace.traceBegin(Trace.TRACE_TAG_POWER, "startDream");
         try {
@@ -141,12 +143,12 @@
                         Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE,
                         new UserHandle(userId))) {
                     Slog.e(TAG, "Unable to bind dream service: " + intent);
-                    stopDream(true /*immediate*/);
+                    stopDream(true /*immediate*/, "bindService failed");
                     return;
                 }
             } catch (SecurityException ex) {
                 Slog.e(TAG, "Unable to bind dream service: " + intent, ex);
-                stopDream(true /*immediate*/);
+                stopDream(true /*immediate*/, "unable to bind service: SecExp.");
                 return;
             }
 
@@ -157,7 +159,7 @@
         }
     }
 
-    public void stopDream(boolean immediate) {
+    public void stopDream(boolean immediate, String reason) {
         if (mCurrentDream == null) {
             return;
         }
@@ -173,6 +175,7 @@
                     // Give the dream a moment to wake up and finish itself gently.
                     mCurrentDream.mWakingGently = true;
                     try {
+                        mSavedStopReason = reason;
                         mCurrentDream.mService.wakeUp();
                         mHandler.postDelayed(mStopStubbornDreamRunnable, DREAM_FINISH_TIMEOUT);
                         return;
@@ -186,7 +189,9 @@
             mCurrentDream = null;
             Slog.i(TAG, "Stopping dream: name=" + oldDream.mName
                     + ", isTest=" + oldDream.mIsTest + ", canDoze=" + oldDream.mCanDoze
-                    + ", userId=" + oldDream.mUserId);
+                    + ", userId=" + oldDream.mUserId
+                    + ", reason='" + reason + "'"
+                    + (mSavedStopReason == null ? "" : "(from '" + mSavedStopReason + "')"));
             MetricsLogger.hidden(mContext,
                     oldDream.mCanDoze ? MetricsEvent.DOZING : MetricsEvent.DREAMING);
             MetricsLogger.histogram(mContext,
@@ -195,6 +200,7 @@
 
             mHandler.removeCallbacks(mStopUnconnectedDreamRunnable);
             mHandler.removeCallbacks(mStopStubbornDreamRunnable);
+            mSavedStopReason = null;
 
             if (oldDream.mSentStartBroadcast) {
                 mContext.sendBroadcastAsUser(mDreamingStoppedIntent, UserHandle.ALL);
@@ -233,7 +239,7 @@
                     mCurrentDream.mDreamingStartedCallback);
         } catch (RemoteException ex) {
             Slog.e(TAG, "The dream service died unexpectedly.", ex);
-            stopDream(true /*immediate*/);
+            stopDream(true /*immediate*/, "attach failed");
             return;
         }
 
@@ -287,7 +293,7 @@
             mHandler.post(() -> {
                 mService = null;
                 if (mCurrentDream == DreamRecord.this) {
-                    stopDream(true /*immediate*/);
+                    stopDream(true /*immediate*/, "binder died");
                 }
             });
         }
@@ -312,7 +318,7 @@
             mHandler.post(() -> {
                 mService = null;
                 if (mCurrentDream == DreamRecord.this) {
-                    stopDream(true /*immediate*/);
+                    stopDream(true /*immediate*/, "service disconnected");
                 }
             });
         }
diff --git a/services/core/java/com/android/server/dreams/DreamManagerService.java b/services/core/java/com/android/server/dreams/DreamManagerService.java
index bcf262d..769956d 100644
--- a/services/core/java/com/android/server/dreams/DreamManagerService.java
+++ b/services/core/java/com/android/server/dreams/DreamManagerService.java
@@ -121,7 +121,7 @@
                 public void onReceive(Context context, Intent intent) {
                     writePulseGestureEnabled();
                     synchronized (mLock) {
-                        stopDreamLocked(false /*immediate*/);
+                        stopDreamLocked(false /*immediate*/, "user switched");
                     }
                 }
             }, new IntentFilter(Intent.ACTION_USER_SWITCHED), null, mHandler);
@@ -180,7 +180,7 @@
         // for example when being undocked.
         long time = SystemClock.uptimeMillis();
         mPowerManager.userActivity(time, false /*noChangeLights*/);
-        stopDreamInternal(false /*immediate*/);
+        stopDreamInternal(false /*immediate*/, "request awaken");
     }
 
     private void finishSelfInternal(IBinder token, boolean immediate) {
@@ -197,7 +197,7 @@
         // device may simply go to sleep.
         synchronized (mLock) {
             if (mCurrentDreamToken == token) {
-                stopDreamLocked(immediate);
+                stopDreamLocked(immediate, "finished self");
             }
         }
     }
@@ -218,9 +218,9 @@
         }
     }
 
-    private void stopDreamInternal(boolean immediate) {
+    private void stopDreamInternal(boolean immediate, String reason) {
         synchronized (mLock) {
-            stopDreamLocked(immediate);
+            stopDreamLocked(immediate, reason);
         }
     }
 
@@ -373,7 +373,7 @@
             return;
         }
 
-        stopDreamLocked(true /*immediate*/);
+        stopDreamLocked(true /*immediate*/, "starting new dream");
 
         Slog.i(TAG, "Entering dreamland.");
 
@@ -392,7 +392,7 @@
         }));
     }
 
-    private void stopDreamLocked(final boolean immediate) {
+    private void stopDreamLocked(final boolean immediate, String reason) {
         if (mCurrentDreamToken != null) {
             if (immediate) {
                 Slog.i(TAG, "Leaving dreamland.");
@@ -408,7 +408,7 @@
                 @Override
                 public void run() {
                     Slog.i(TAG, "Performing gentle wake from dream.");
-                    mController.stopDream(immediate);
+                    mController.stopDream(immediate, reason);
                 }
             });
         }
@@ -696,7 +696,7 @@
 
         @Override
         public void stopDream(boolean immediate) {
-            stopDreamInternal(immediate);
+            stopDreamInternal(immediate, "requested stopDream");
         }
 
         @Override
diff --git a/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java
index 0d16ee0..0b73e4f 100644
--- a/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java
@@ -192,7 +192,6 @@
                                 InlineSuggestionsRequestInfo requestInfo,
                                 IInlineSuggestionsRequestCallback cb) {
                             try {
-                                //TODO(b/137800469): support multi client IMEs.
                                 cb.onInlineSuggestionsUnsupported();
                             } catch (RemoteException e) {
                                 Slog.w(TAG, "Failed to call onInlineSuggestionsUnsupported.", e);
diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
index d8bf9ed..5e865e7 100644
--- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
+++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
@@ -1574,8 +1574,15 @@
             }
 
             // Succeeded
-            notifySessionCreatedToRouter(matchingRequest.mRouterRecord,
-                    toOriginalRequestId(uniqueRequestId), sessionInfo);
+            if (sessionInfo.isSystemSession()
+                    && !matchingRequest.mRouterRecord.mHasModifyAudioRoutingPermission) {
+                notifySessionCreatedToRouter(matchingRequest.mRouterRecord,
+                        toOriginalRequestId(uniqueRequestId),
+                        mSystemProvider.getDefaultSessionInfo());
+            } else {
+                notifySessionCreatedToRouter(matchingRequest.mRouterRecord,
+                        toOriginalRequestId(uniqueRequestId), sessionInfo);
+            }
             mSessionToRouterMap.put(sessionInfo.getId(), routerRecord);
         }
 
diff --git a/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java b/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java
index 41d7fff..b585b49 100644
--- a/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java
+++ b/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java
@@ -36,6 +36,7 @@
 import android.media.IAudioService;
 import android.media.MediaRoute2Info;
 import android.media.MediaRoute2ProviderInfo;
+import android.media.MediaRoute2ProviderService;
 import android.media.RouteDiscoveryPreference;
 import android.media.RoutingSessionInfo;
 import android.os.Bundle;
@@ -47,6 +48,7 @@
 import android.util.Log;
 
 import com.android.internal.R;
+import com.android.internal.annotations.GuardedBy;
 
 import java.util.Objects;
 
@@ -80,6 +82,10 @@
     RoutingSessionInfo mDefaultSessionInfo;
     final AudioRoutesInfo mCurAudioRoutesInfo = new AudioRoutesInfo();
 
+    private final Object mRequestLock = new Object();
+    @GuardedBy("mRequestLock")
+    private volatile SessionCreationRequest mPendingSessionCreationRequest;
+
     final IAudioRoutesObserver.Stub mAudioRoutesObserver = new IAudioRoutesObserver.Stub() {
         @Override
         public void dispatchAudioRoutesChanged(final AudioRoutesInfo newRoutes) {
@@ -135,10 +141,27 @@
     @Override
     public void requestCreateSession(long requestId, String packageName, String routeId,
             Bundle sessionHints) {
+        // Assume a router without MODIFY_AUDIO_ROUTING permission can't request with
+        // a route ID different from the default route ID. The service should've filtered.
+        if (TextUtils.equals(routeId, DEFAULT_ROUTE_ID)) {
+            mCallback.onSessionCreated(this, requestId, mDefaultSessionInfo);
+            return;
+        }
+        if (TextUtils.equals(routeId, mSelectedRouteId)) {
+            mCallback.onSessionCreated(this, requestId, mSessionInfos.get(0));
+            return;
+        }
+
+        synchronized (mRequestLock) {
+            // Handle the previous request as a failure if exists.
+            if (mPendingSessionCreationRequest != null) {
+                mCallback.onRequestFailed(this, mPendingSessionCreationRequest.mRequestId,
+                        MediaRoute2ProviderService.REASON_UNKNOWN_ERROR);
+            }
+            mPendingSessionCreationRequest = new SessionCreationRequest(requestId, routeId);
+        }
 
         transferToRoute(requestId, SYSTEM_SESSION_ID, routeId);
-        mCallback.onSessionCreated(this, requestId, mSessionInfos.get(0));
-        //TODO: We should call after the session info is changed.
     }
 
     @Override
@@ -280,6 +303,24 @@
             }
 
             RoutingSessionInfo newSessionInfo = builder.setProviderId(mUniqueId).build();
+
+            if (mPendingSessionCreationRequest != null) {
+                SessionCreationRequest sessionCreationRequest;
+                synchronized (mRequestLock) {
+                    sessionCreationRequest = mPendingSessionCreationRequest;
+                    mPendingSessionCreationRequest = null;
+                }
+                if (sessionCreationRequest != null) {
+                    if (TextUtils.equals(mSelectedRouteId, sessionCreationRequest.mRouteId)) {
+                        mCallback.onSessionCreated(this,
+                                sessionCreationRequest.mRequestId, newSessionInfo);
+                    } else {
+                        mCallback.onRequestFailed(this, sessionCreationRequest.mRequestId,
+                                MediaRoute2ProviderService.REASON_UNKNOWN_ERROR);
+                    }
+                }
+            }
+
             if (Objects.equals(oldSessionInfo, newSessionInfo)) {
                 return false;
             } else {
@@ -310,6 +351,16 @@
         mCallback.onSessionUpdated(this, sessionInfo);
     }
 
+    private static class SessionCreationRequest {
+        final long mRequestId;
+        final String mRouteId;
+
+        SessionCreationRequest(long requestId, String routeId) {
+            this.mRequestId = requestId;
+            this.mRouteId = routeId;
+        }
+    }
+
     private class VolumeChangeReceiver extends BroadcastReceiver {
         // This will be called in the main thread.
         @Override
diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java
index 44173c6..1951fc0 100644
--- a/services/core/java/com/android/server/net/NetworkStatsService.java
+++ b/services/core/java/com/android/server/net/NetworkStatsService.java
@@ -47,6 +47,7 @@
 import static android.net.NetworkTemplate.buildTemplateWifiWildcard;
 import static android.net.TrafficStats.KB_IN_BYTES;
 import static android.net.TrafficStats.MB_IN_BYTES;
+import static android.net.TrafficStats.UNSUPPORTED;
 import static android.os.Trace.TRACE_TAG_NETWORK;
 import static android.provider.Settings.Global.NETSTATS_AUGMENT_ENABLED;
 import static android.provider.Settings.Global.NETSTATS_COMBINE_SUBTYPE_ENABLED;
@@ -1031,6 +1032,10 @@
 
     @Override
     public long getUidStats(int uid, int type) {
+        final int callingUid = Binder.getCallingUid();
+        if (callingUid != android.os.Process.SYSTEM_UID && callingUid != uid) {
+            return UNSUPPORTED;
+        }
         return nativeGetUidStat(uid, type, checkBpfStatsEnable());
     }
 
diff --git a/services/core/java/com/android/server/notification/BubbleExtractor.java b/services/core/java/com/android/server/notification/BubbleExtractor.java
index b1a09c1..d7d413c 100644
--- a/services/core/java/com/android/server/notification/BubbleExtractor.java
+++ b/services/core/java/com/android/server/notification/BubbleExtractor.java
@@ -17,7 +17,7 @@
 
 import static android.app.Notification.FLAG_BUBBLE;
 import static android.app.Notification.FLAG_FOREGROUND_SERVICE;
-import static android.app.NotificationChannel.USER_LOCKED_ALLOW_BUBBLE;
+import static android.app.NotificationChannel.ALLOW_BUBBLE_OFF;
 import static android.app.NotificationManager.BUBBLE_PREFERENCE_ALL;
 import static android.app.NotificationManager.BUBBLE_PREFERENCE_NONE;
 import static android.app.NotificationManager.BUBBLE_PREFERENCE_SELECTED;
@@ -82,10 +82,7 @@
             // the app is allowed but there's no channel to check
             record.setAllowBubble(true);
         } else if (bubblePreference == BUBBLE_PREFERENCE_ALL) {
-            // by default the channel is not allowed, only don't bubble if the user specified
-            boolean userLockedNoBubbles = !recordChannel.canBubble()
-                    && (recordChannel.getUserLockedFields() & USER_LOCKED_ALLOW_BUBBLE) != 0;
-            record.setAllowBubble(!userLockedNoBubbles);
+            record.setAllowBubble(recordChannel.getAllowBubbles() != ALLOW_BUBBLE_OFF);
         } else if (bubblePreference == BUBBLE_PREFERENCE_SELECTED) {
             record.setAllowBubble(recordChannel.canBubble());
         }
diff --git a/services/core/java/com/android/server/notification/NotificationChannelExtractor.java b/services/core/java/com/android/server/notification/NotificationChannelExtractor.java
index 83ca699..2f60e42 100644
--- a/services/core/java/com/android/server/notification/NotificationChannelExtractor.java
+++ b/services/core/java/com/android/server/notification/NotificationChannelExtractor.java
@@ -47,7 +47,7 @@
         NotificationChannel updatedChannel = mConfig.getConversationNotificationChannel(
                 record.getSbn().getPackageName(),
                 record.getSbn().getUid(), record.getChannel().getId(),
-                record.getSbn().getShortcutId(mContext), true, false);
+                record.getSbn().getShortcutId(), true, false);
         record.updateNotificationChannel(updatedChannel);
 
         return null;
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 6c3177f..2f76a1f 100755
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -2718,12 +2718,12 @@
         }
         return text == null ? null : String.valueOf(text);
     }
-    
+
     protected void maybeRegisterMessageSent(NotificationRecord r) {
         Context appContext = r.getSbn().getPackageContext(getContext());
-        Notification.Builder nb = 
+        Notification.Builder nb =
                 Notification.Builder.recoverBuilder(appContext, r.getNotification());
-        if (nb.getStyle() instanceof Notification.MessagingStyle) {
+        if (nb.getStyle() instanceof Notification.MessagingStyle && r.getShortcutInfo() == null) {
             mPreferencesHelper.setMessageSent(r.getSbn().getPackageName(), r.getUid());
             handleSavePolicyFile();
         }
@@ -5627,7 +5627,7 @@
         if (mIsTelevision && (new Notification.TvExtender(notification)).getChannelId() != null) {
             channelId = (new Notification.TvExtender(notification)).getChannelId();
         }
-        String shortcutId = n.getShortcutId(getContext());
+        String shortcutId = n.getShortcutId();
         final NotificationChannel channel = mPreferencesHelper.getConversationNotificationChannel(
                 pkg, notificationUid, channelId, shortcutId,
                 true /* parent ok */, false /* includeDeleted */);
diff --git a/services/core/java/com/android/server/notification/NotificationRecord.java b/services/core/java/com/android/server/notification/NotificationRecord.java
index e45b41d..8e3de15 100644
--- a/services/core/java/com/android/server/notification/NotificationRecord.java
+++ b/services/core/java/com/android/server/notification/NotificationRecord.java
@@ -1386,10 +1386,6 @@
                 || !Notification.MessagingStyle.class.equals(notification.getNotificationStyle())) {
             return false;
         }
-        if (mShortcutInfo == null && Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.REQUIRE_SHORTCUTS_FOR_CONVERSATIONS, 0) == 1) {
-            return false;
-        }
         if (mIsNotConversationOverride) {
             return false;
         }
diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java
index 6d7b410..a4b99b3 100644
--- a/services/core/java/com/android/server/notification/PreferencesHelper.java
+++ b/services/core/java/com/android/server/notification/PreferencesHelper.java
@@ -116,7 +116,7 @@
     private static final String ATT_ENABLED = "enabled";
     private static final String ATT_USER_ALLOWED = "allowed";
     private static final String ATT_HIDE_SILENT = "hide_gentle";
-    private static final String ATT_SENT_MESSAGE = "sent_msg";
+    private static final String ATT_SENT_MESSAGE = "sent_invalid_msg";
 
     private static final int DEFAULT_PRIORITY = Notification.PRIORITY_DEFAULT;
     private static final int DEFAULT_VISIBILITY = NotificationManager.VISIBILITY_NO_OVERRIDE;
@@ -194,8 +194,6 @@
         updateBadgingEnabled();
         updateBubblesEnabled();
         syncChannelsBypassingDnd(mContext.getUserId());
-        mAllowInvalidShortcuts = Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.REQUIRE_SHORTCUTS_FOR_CONVERSATIONS, 0) == 0;
     }
 
     public void readXml(XmlPullParser parser, boolean forRestore, int userId)
@@ -1313,7 +1311,9 @@
             int N = r.channels.size();
             for (int i = 0; i < N; i++) {
                 final NotificationChannel nc = r.channels.valueAt(i);
-                if (!TextUtils.isEmpty(nc.getConversationId()) && !nc.isDeleted()) {
+                if (!TextUtils.isEmpty(nc.getConversationId())
+                        && !nc.isDeleted()
+                        && !nc.isDemoted()) {
                     ConversationChannelWrapper conversation = new ConversationChannelWrapper();
                     conversation.setPkg(r.pkg);
                     conversation.setUid(r.uid);
diff --git a/services/core/java/com/android/server/notification/ShortcutHelper.java b/services/core/java/com/android/server/notification/ShortcutHelper.java
index 13892ba0..94f69e9 100644
--- a/services/core/java/com/android/server/notification/ShortcutHelper.java
+++ b/services/core/java/com/android/server/notification/ShortcutHelper.java
@@ -152,9 +152,13 @@
         if (shortcutInfo == null || !shortcutInfo.isLongLived() || !shortcutInfo.isEnabled()) {
             return false;
         }
-        return mShortcutServiceInternal.isSharingShortcut(callingUserId, "android",
+        // TODO (b/155016294) uncomment when sharing shortcuts are required
+        /*
+        mShortcutServiceInternal.isSharingShortcut(callingUserId, "android",
                 shortcutInfo.getPackage(), shortcutInfo.getId(), shortcutInfo.getUserId(),
                 SHARING_FILTER);
+         */
+        return true;
     }
 
     /**
diff --git a/services/core/java/com/android/server/om/IdmapDaemon.java b/services/core/java/com/android/server/om/IdmapDaemon.java
index 7df8fc7..910ed44 100644
--- a/services/core/java/com/android/server/om/IdmapDaemon.java
+++ b/services/core/java/com/android/server/om/IdmapDaemon.java
@@ -44,7 +44,7 @@
 
     // The amount of time in milliseconds to wait when attempting to connect to idmap service.
     private static final int SERVICE_CONNECT_TIMEOUT_MS = 5000;
-    private static final int SERVICE_CONNECT_INTERVAL_SLEEP_MS = 200;
+    private static final int SERVICE_CONNECT_INTERVAL_SLEEP_MS = 5;
 
     private static final String IDMAP_DAEMON = "idmap2d";
 
diff --git a/services/core/java/com/android/server/om/OverlayActorEnforcer.java b/services/core/java/com/android/server/om/OverlayActorEnforcer.java
index 9197956..ef6655d 100644
--- a/services/core/java/com/android/server/om/OverlayActorEnforcer.java
+++ b/services/core/java/com/android/server/om/OverlayActorEnforcer.java
@@ -23,7 +23,6 @@
 import android.content.pm.PackageInfo;
 import android.net.Uri;
 import android.os.Process;
-import android.os.RemoteException;
 import android.text.TextUtils;
 import android.util.Pair;
 
@@ -140,7 +139,7 @@
                         return ActorState.MISSING_LEGACY_PERMISSION;
                     }
                 }
-            } catch (RemoteException | IOException e) {
+            } catch (IOException e) {
                 return ActorState.ERROR_READING_OVERLAYABLE;
             }
         }
diff --git a/services/core/java/com/android/server/om/OverlayManagerService.java b/services/core/java/com/android/server/om/OverlayManagerService.java
index c81f7cd..6a8e465 100644
--- a/services/core/java/com/android/server/om/OverlayManagerService.java
+++ b/services/core/java/com/android/server/om/OverlayManagerService.java
@@ -1120,7 +1120,11 @@
 
         @Override
         public List<PackageInfo> getOverlayPackages(final int userId) {
-            return mPackageManagerInternal.getOverlayPackages(userId);
+            final List<PackageInfo> overlays = mPackageManagerInternal.getOverlayPackages(userId);
+            for (final PackageInfo info : overlays) {
+                cachePackageInfo(info.packageName, userId, info);
+            }
+            return overlays;
         }
 
         @Nullable
@@ -1151,9 +1155,8 @@
 
         @Override
         public boolean doesTargetDefineOverlayable(String targetPackageName, int userId)
-                throws RemoteException, IOException {
-            PackageInfo packageInfo = mPackageManager.getPackageInfo(targetPackageName, 0,
-                    userId);
+                throws IOException {
+            PackageInfo packageInfo = getPackageInfo(targetPackageName, userId);
             if (packageInfo == null) {
                 throw new IOException("Unable to get target package");
             }
diff --git a/services/core/java/com/android/server/om/OverlayableInfoCallback.java b/services/core/java/com/android/server/om/OverlayableInfoCallback.java
index 6b81884..5066ecd 100644
--- a/services/core/java/com/android/server/om/OverlayableInfoCallback.java
+++ b/services/core/java/com/android/server/om/OverlayableInfoCallback.java
@@ -22,7 +22,6 @@
 import android.content.om.OverlayableInfo;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
-import android.os.RemoteException;
 
 import com.android.server.pm.PackageManagerServiceUtils;
 
@@ -68,8 +67,7 @@
     /**
      * @return true if the target package has declared an overlayable
      */
-    boolean doesTargetDefineOverlayable(String targetPackageName, int userId)
-            throws RemoteException, IOException;
+    boolean doesTargetDefineOverlayable(String targetPackageName, int userId) throws IOException;
 
     /**
      * @throws SecurityException containing message if the caller doesn't have the given
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index 330f4b3..d9275f5 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -163,6 +163,7 @@
     private static final int MSG_STREAM_VALIDATE_AND_COMMIT = 1;
     private static final int MSG_INSTALL = 2;
     private static final int MSG_ON_PACKAGE_INSTALLED = 3;
+    private static final int MSG_SESSION_VERIFICATION_FAILURE = 4;
 
     /** XML constants used for persisting a session */
     static final String TAG_SESSION = "session";
@@ -449,6 +450,11 @@
                             packageName, returnCode, message, extras);
 
                     break;
+                case MSG_SESSION_VERIFICATION_FAILURE:
+                    final int error = msg.arg1;
+                    final String detailMessage = (String) msg.obj;
+                    onSessionVerificationFailure(error, detailMessage);
+                    break;
             }
 
             return true;
@@ -1479,12 +1485,15 @@
     }
 
     private PackageManagerException onSessionVerificationFailure(PackageManagerException e) {
+        onSessionVerificationFailure(e.error, ExceptionUtils.getCompleteMessage(e));
+        return e;
+    }
+
+    private void onSessionVerificationFailure(int error, String detailMessage) {
         // Session is sealed but could not be verified, we need to destroy it.
         destroyInternal();
         // Dispatch message to remove session from PackageInstallerService.
-        dispatchSessionFinished(e.error, ExceptionUtils.getCompleteMessage(e), null);
-
-        return e;
+        dispatchSessionFinished(error, detailMessage, null);
     }
 
     private void onDataLoaderUnrecoverable() {
@@ -2629,9 +2638,8 @@
                     IDataLoader dataLoader = dataLoaderManager.getDataLoader(dataLoaderId);
                     if (dataLoader == null) {
                         mDataLoaderFinished = true;
-                        onSessionVerificationFailure(
-                                new PackageManagerException(INSTALL_FAILED_MEDIA_UNAVAILABLE,
-                                        "Failure to obtain data loader"));
+                        dispatchSessionVerificationFailure(INSTALL_FAILED_MEDIA_UNAVAILABLE,
+                                "Failure to obtain data loader");
                         return;
                     }
 
@@ -2676,9 +2684,8 @@
                         }
                         case IDataLoaderStatusListener.DATA_LOADER_IMAGE_NOT_READY: {
                             mDataLoaderFinished = true;
-                            onSessionVerificationFailure(
-                                    new PackageManagerException(INSTALL_FAILED_MEDIA_UNAVAILABLE,
-                                            "Failed to prepare image."));
+                            dispatchSessionVerificationFailure(INSTALL_FAILED_MEDIA_UNAVAILABLE,
+                                    "Failed to prepare image.");
                             if (manualStartAndDestroy) {
                                 dataLoader.destroy(dataLoaderId);
                             }
@@ -2686,9 +2693,8 @@
                         }
                         case IDataLoaderStatusListener.DATA_LOADER_UNRECOVERABLE:
                             mDataLoaderFinished = true;
-                            onSessionVerificationFailure(
-                                    new PackageManagerException(INSTALL_FAILED_MEDIA_UNAVAILABLE,
-                                            "DataLoader reported unrecoverable failure."));
+                            dispatchSessionVerificationFailure(INSTALL_FAILED_MEDIA_UNAVAILABLE,
+                                    "DataLoader reported unrecoverable failure.");
                             return;
                     }
                 } catch (RemoteException e) {
@@ -2720,6 +2726,11 @@
         return false;
     }
 
+    private void dispatchSessionVerificationFailure(int error, String detailMessage) {
+        mHandler.obtainMessage(MSG_SESSION_VERIFICATION_FAILURE, error, -1,
+                detailMessage).sendToTarget();
+    }
+
     @Override
     public int[] getChildSessionIds() {
         final int[] childSessionIds = mChildSessionIds.copyKeys();
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
index f5fff7d..c425307 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -2499,24 +2499,10 @@
         synchronized (mLock) {
             ArraySet<String> newImplicitPermissions = new ArraySet<>();
 
-            // TODO ntmyren: Remove once propagated to droidfood
-            int flagMask = PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED
-                    | PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_DENIED;
-            int user = UserHandle.getUserId(pkg.getUid());
-
             final int N = pkg.getRequestedPermissions().size();
             for (int i = 0; i < N; i++) {
                 final String permName = pkg.getRequestedPermissions().get(i);
                 final BasePermission bp = mSettings.getPermissionLocked(permName);
-
-                // TODO ntmyren: Remove once propagated to droidfood
-                if (bp != null && !bp.isRuntime()) {
-                    PermissionState permState = permissionsState.getInstallPermissionState(bp.name);
-                    if (permState == null || (permState.getFlags() & flagMask) != 0) {
-                        permissionsState.updatePermissionFlags(bp, user, flagMask, 0);
-                    }
-                }
-
                 final boolean appSupportsRuntimePermissions =
                         pkg.getTargetSdkVersion() >= Build.VERSION_CODES.M;
                 String upgradedActivityRecognitionPermission = null;
diff --git a/services/core/java/com/android/server/policy/PermissionPolicyService.java b/services/core/java/com/android/server/policy/PermissionPolicyService.java
index 6ff1ba7..fdf7023 100644
--- a/services/core/java/com/android/server/policy/PermissionPolicyService.java
+++ b/services/core/java/com/android/server/policy/PermissionPolicyService.java
@@ -323,7 +323,7 @@
         // Force synchronization as permissions might have changed
         synchronizePermissionsAndAppOpsForUser(userId);
 
-        restoreReadPhoneStatePermissions();
+        restoreReadPhoneStatePermissions(userId);
 
         // Tell observers we are initialized for this user.
         if (callback != null) {
@@ -335,11 +335,12 @@
      * Ensure READ_PHONE_STATE user sensitive flags are assigned properly
      * TODO ntmyren: Remove once propagated, and state is repaired
      */
-    private void restoreReadPhoneStatePermissions() {
+    private void restoreReadPhoneStatePermissions(int userId) {
         PermissionControllerManager manager = new PermissionControllerManager(this.getContext(),
                 Handler.getMain());
         PackageManager pm = getContext().getPackageManager();
-        List<PackageInfo> packageInfos = pm.getInstalledPackages(MATCH_ALL | GET_PERMISSIONS);
+        List<PackageInfo> packageInfos = pm.getInstalledPackagesAsUser(
+                MATCH_ALL | GET_PERMISSIONS, userId);
         for (int i = packageInfos.size() - 1; i >= 0; i--) {
             PackageInfo pI = packageInfos.get(i);
             if (pI.requestedPermissions == null) {
diff --git a/services/core/java/com/android/server/rollback/Rollback.java b/services/core/java/com/android/server/rollback/Rollback.java
index 885f561..ece5a55 100644
--- a/services/core/java/com/android/server/rollback/Rollback.java
+++ b/services/core/java/com/android/server/rollback/Rollback.java
@@ -27,6 +27,7 @@
 import android.content.IntentSender;
 import android.content.pm.PackageInstaller;
 import android.content.pm.PackageManager;
+import android.content.pm.PackageManagerInternal;
 import android.content.pm.UserInfo;
 import android.content.pm.VersionedPackage;
 import android.content.rollback.PackageRollbackInfo;
@@ -36,14 +37,19 @@
 import android.os.ParcelFileDescriptor;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.os.ext.SdkExtensions;
 import android.text.TextUtils;
 import android.util.IntArray;
 import android.util.Slog;
+import android.util.SparseIntArray;
 import android.util.SparseLongArray;
 
 import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.IndentingPrintWriter;
+import com.android.server.LocalServices;
+import com.android.server.pm.parsing.pkg.AndroidPackage;
 
 import java.io.File;
 import java.io.IOException;
@@ -53,6 +59,7 @@
 import java.time.Instant;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 
 /**
@@ -174,6 +181,11 @@
     private int mNumPackageSessionsWithSuccess;
 
     /**
+     * The extension versions supported at the time of rollback creation.
+     */
+    @NonNull private final SparseIntArray mExtensionVersions;
+
+    /**
      * Constructs a new, empty Rollback instance.
      *
      * @param rollbackId the id of the rollback.
@@ -182,9 +194,11 @@
      * @param userId the user that performed the install with rollback enabled.
      * @param installerPackageName the installer package name from the original install session.
      * @param packageSessionIds the session ids for all packages in the install.
+     * @param extensionVersions the extension versions supported at the time of rollback creation
      */
     Rollback(int rollbackId, File backupDir, int stagedSessionId, int userId,
-            String installerPackageName, int[] packageSessionIds) {
+            String installerPackageName, int[] packageSessionIds,
+            SparseIntArray extensionVersions) {
         this.info = new RollbackInfo(rollbackId,
                 /* packages */ new ArrayList<>(),
                 /* isStaged */ stagedSessionId != -1,
@@ -197,11 +211,13 @@
         mState = ROLLBACK_STATE_ENABLING;
         mTimestamp = Instant.now();
         mPackageSessionIds = packageSessionIds != null ? packageSessionIds : new int[0];
+        mExtensionVersions = Objects.requireNonNull(extensionVersions);
     }
 
     Rollback(int rollbackId, File backupDir, int stagedSessionId, int userId,
              String installerPackageName) {
-        this(rollbackId, backupDir, stagedSessionId, userId, installerPackageName, null);
+        this(rollbackId, backupDir, stagedSessionId, userId, installerPackageName, null,
+                new SparseIntArray(0));
     }
 
     /**
@@ -209,7 +225,7 @@
      */
     Rollback(RollbackInfo info, File backupDir, Instant timestamp, int stagedSessionId,
             @RollbackState int state, int apkSessionId, boolean restoreUserDataInProgress,
-            int userId, String installerPackageName) {
+            int userId, String installerPackageName, SparseIntArray extensionVersions) {
         this.info = info;
         mUserId = userId;
         mInstallerPackageName = installerPackageName;
@@ -219,6 +235,7 @@
         mState = state;
         mApkSessionId = apkSessionId;
         mRestoreUserDataInProgress = restoreUserDataInProgress;
+        mExtensionVersions = Objects.requireNonNull(extensionVersions);
         // TODO(b/120200473): Include this field during persistence. This field will be used to
         // decide which rollback to expire when ACTION_PACKAGE_REPLACED is received. Note persisting
         // this field is not backward compatible. We won't fix b/120200473 until S to minimize the
@@ -283,6 +300,14 @@
     }
 
     /**
+     * Returns the extension versions that were supported at the time that the rollback was created,
+     * as a mapping from SdkVersion to ExtensionVersion.
+     */
+    SparseIntArray getExtensionVersions() {
+        return mExtensionVersions;
+    }
+
+    /**
      * Returns true if the rollback is in the ENABLING state.
      */
     boolean isEnabling() {
@@ -451,6 +476,15 @@
                 return;
             }
 
+            if (containsApex() && wasCreatedAtLowerExtensionVersion()) {
+                PackageManagerInternal pmi = LocalServices.getService(PackageManagerInternal.class);
+                if (extensionVersionReductionWouldViolateConstraint(mExtensionVersions, pmi)) {
+                    sendFailure(context, statusReceiver, RollbackManager.STATUS_FAILURE,
+                            "Rollback may violate a minExtensionVersion constraint");
+                    return;
+                }
+            }
+
             // Get a context to use to install the downgraded version of the package.
             Context pkgContext;
             try {
@@ -826,6 +860,56 @@
         }
     }
 
+    /**
+     * Returns true if there is an app installed that specifies a minExtensionVersion greater
+     * than what was present at the time this Rollback was created.
+     */
+    @VisibleForTesting
+    static boolean extensionVersionReductionWouldViolateConstraint(
+            SparseIntArray rollbackExtVers, PackageManagerInternal pmi) {
+        if (rollbackExtVers.size() == 0) {
+            return false;
+        }
+        List<String> packages = pmi.getPackageList().getPackageNames();
+        for (int i = 0; i < packages.size(); i++) {
+            AndroidPackage pkg = pmi.getPackage(packages.get(i));
+            SparseIntArray minExtVers = pkg.getMinExtensionVersions();
+            if (minExtVers == null) {
+                continue;
+            }
+            for (int j = 0; j < rollbackExtVers.size(); j++) {
+                int minExt = minExtVers.get(rollbackExtVers.keyAt(j), -1);
+                if (rollbackExtVers.valueAt(j) < minExt) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Returns true if for any SDK version, the extension version recorded at the time of rollback
+     * creation is lower than the current extension version.
+     */
+    private boolean wasCreatedAtLowerExtensionVersion() {
+        for (int i = 0; i < mExtensionVersions.size(); i++) {
+            if (SdkExtensions.getExtensionVersion(mExtensionVersions.keyAt(i))
+                    > mExtensionVersions.valueAt(i)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private boolean containsApex() {
+        for (PackageRollbackInfo pkgInfo : info.getPackages()) {
+            if (pkgInfo.isApex()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     void dump(IndentingPrintWriter ipw) {
         synchronized (mLock) {
             ipw.println(info.getRollbackId() + ":");
@@ -852,6 +936,12 @@
                 ipw.decreaseIndent();
                 ipw.println("-committedSessionId: " + info.getCommittedSessionId());
             }
+            if (mExtensionVersions.size() > 0) {
+                ipw.println("-extensionVersions:");
+                ipw.increaseIndent();
+                ipw.println(mExtensionVersions.toString());
+                ipw.decreaseIndent();
+            }
             ipw.decreaseIndent();
         }
     }
diff --git a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
index 83e99b0..6726cc8 100644
--- a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
+++ b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
@@ -41,6 +41,7 @@
 import android.content.rollback.RollbackInfo;
 import android.content.rollback.RollbackManager;
 import android.os.Binder;
+import android.os.Build;
 import android.os.Environment;
 import android.os.Handler;
 import android.os.HandlerExecutor;
@@ -49,12 +50,14 @@
 import android.os.SystemClock;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.os.ext.SdkExtensions;
 import android.provider.DeviceConfig;
 import android.util.IntArray;
 import android.util.Log;
 import android.util.LongArrayQueue;
 import android.util.Slog;
 import android.util.SparseBooleanArray;
+import android.util.SparseIntArray;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.util.DumpUtils;
@@ -1274,16 +1277,29 @@
 
         if (parentSession.isStaged()) {
             rollback = mRollbackStore.createStagedRollback(rollbackId, parentSessionId, userId,
-                    installerPackageName, packageSessionIds);
+                    installerPackageName, packageSessionIds, getExtensionVersions());
         } else {
             rollback = mRollbackStore.createNonStagedRollback(rollbackId, userId,
-                    installerPackageName, packageSessionIds);
+                    installerPackageName, packageSessionIds, getExtensionVersions());
         }
 
         mRollbacks.add(rollback);
         return rollback;
     }
 
+    private SparseIntArray getExtensionVersions() {
+        // This list must be updated whenever the current API level is increased, or should be
+        // replaced when we have another way of determining the relevant SDK versions.
+        final int[] relevantSdkVersions = { Build.VERSION_CODES.R };
+
+        SparseIntArray result = new SparseIntArray(relevantSdkVersions.length);
+        for (int i = 0; i < relevantSdkVersions.length; i++) {
+            result.put(relevantSdkVersions[i],
+                    SdkExtensions.getExtensionVersion(relevantSdkVersions[i]));
+        }
+        return result;
+    }
+
     /**
      * Returns the Rollback associated with the given session if parent or child session id matches.
      * Returns null if not found.
diff --git a/services/core/java/com/android/server/rollback/RollbackStore.java b/services/core/java/com/android/server/rollback/RollbackStore.java
index 7b046c1..c304302 100644
--- a/services/core/java/com/android/server/rollback/RollbackStore.java
+++ b/services/core/java/com/android/server/rollback/RollbackStore.java
@@ -28,6 +28,7 @@
 import android.content.rollback.RollbackInfo;
 import android.util.IntArray;
 import android.util.Slog;
+import android.util.SparseIntArray;
 import android.util.SparseLongArray;
 
 import com.android.internal.annotations.GuardedBy;
@@ -176,6 +177,32 @@
         return ceSnapshotInodes;
     }
 
+    private static @NonNull JSONArray extensionVersionsToJson(
+            SparseIntArray extensionVersions) throws JSONException {
+        JSONArray array = new JSONArray();
+        for (int i = 0; i < extensionVersions.size(); i++) {
+            JSONObject entryJson = new JSONObject();
+            entryJson.put("sdkVersion", extensionVersions.keyAt(i));
+            entryJson.put("extensionVersion", extensionVersions.valueAt(i));
+            array.put(entryJson);
+        }
+        return array;
+    }
+
+    private static @NonNull SparseIntArray extensionVersionsFromJson(JSONArray json)
+            throws JSONException {
+        if (json == null) {
+            return new SparseIntArray(0);
+        }
+        SparseIntArray extensionVersions = new SparseIntArray(json.length());
+        for (int i = 0; i < json.length(); i++) {
+            JSONObject entry = json.getJSONObject(i);
+            extensionVersions.append(
+                    entry.getInt("sdkVersion"), entry.getInt("extensionVersion"));
+        }
+        return extensionVersions;
+    }
+
     private static JSONObject rollbackInfoToJson(RollbackInfo rollback) throws JSONException {
         JSONObject json = new JSONObject();
         json.put("rollbackId", rollback.getRollbackId());
@@ -200,10 +227,10 @@
      * backupDir assigned.
      */
     Rollback createNonStagedRollback(int rollbackId, int userId, String installerPackageName,
-            int[] packageSessionIds) {
+            int[] packageSessionIds, SparseIntArray extensionVersions) {
         File backupDir = new File(mRollbackDataDir, Integer.toString(rollbackId));
         return new Rollback(rollbackId, backupDir, -1, userId, installerPackageName,
-                packageSessionIds);
+                packageSessionIds, extensionVersions);
     }
 
     /**
@@ -211,10 +238,11 @@
      * backupDir assigned.
      */
     Rollback createStagedRollback(int rollbackId, int stagedSessionId, int userId,
-            String installerPackageName, int[] packageSessionIds) {
+            String installerPackageName, int[] packageSessionIds,
+            SparseIntArray extensionVersions) {
         File backupDir = new File(mRollbackDataDir, Integer.toString(rollbackId));
         return new Rollback(rollbackId, backupDir, stagedSessionId, userId, installerPackageName,
-                packageSessionIds);
+                packageSessionIds, extensionVersions);
     }
 
     /**
@@ -272,6 +300,8 @@
             dataJson.put("restoreUserDataInProgress", rollback.isRestoreUserDataInProgress());
             dataJson.put("userId", rollback.getUserId());
             dataJson.putOpt("installerPackageName", rollback.getInstallerPackageName());
+            dataJson.putOpt(
+                    "extensionVersions", extensionVersionsToJson(rollback.getExtensionVersions()));
 
             PrintWriter pw = new PrintWriter(new File(rollback.getBackupDir(), "rollback.json"));
             pw.println(dataJson.toString());
@@ -316,7 +346,8 @@
                 dataJson.getInt("apkSessionId"),
                 dataJson.getBoolean("restoreUserDataInProgress"),
                 dataJson.optInt("userId", USER_SYSTEM),
-                dataJson.optString("installerPackageName", ""));
+                dataJson.optString("installerPackageName", ""),
+                extensionVersionsFromJson(dataJson.optJSONArray("extensionVersions")));
     }
 
     private static JSONObject toJson(VersionedPackage pkg) throws JSONException {
diff --git a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
index 299592d..373cb8b 100644
--- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
+++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
@@ -2951,7 +2951,7 @@
     }
 
     int processHistoricalOps(HistoricalOps histOps, int atomTag, List<StatsEvent> pulledData) {
-        int counter = 0;
+        int counter = 1;
         for (int uidIdx = 0; uidIdx < histOps.getUidCount(); uidIdx++) {
             final HistoricalUidOps uidOps = histOps.getUidOpsAt(uidIdx);
             final int uid = uidOps.getUid();
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 130da2d..dcdbfded 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -2669,15 +2669,28 @@
             return this;
         }
 
-        // Ensure activity visibilities and update lockscreen occluded/dismiss state when
-        // finishing the top activity that occluded keyguard. So that, the
-        // ActivityStack#mTopActivityOccludesKeyguard can be updated and the activity below won't
-        // be resumed.
-        if (isState(PAUSED)
-                && mStackSupervisor.getKeyguardController().isKeyguardLocked()
-                && getStack().topActivityOccludesKeyguard()) {
-            getDisplay().ensureActivitiesVisible(null /* starting */, 0 /* configChanges */,
-                    false /* preserveWindows */, false /* notifyClients */);
+        final boolean isCurrentVisible = mVisibleRequested || isState(PAUSED);
+        if (isCurrentVisible) {
+            final ActivityStack stack = getStack();
+            final ActivityRecord activity = stack.mResumedActivity;
+            boolean ensureVisibility = false;
+            if (activity != null && !activity.occludesParent()) {
+                // If the resume activity is not opaque, we need to make sure the visibilities of
+                // activities be updated, they may be seen by users.
+                ensureVisibility = true;
+            } else if (mStackSupervisor.getKeyguardController().isKeyguardLocked()
+                    && stack.topActivityOccludesKeyguard()) {
+                // Ensure activity visibilities and update lockscreen occluded/dismiss state when
+                // finishing the top activity that occluded keyguard. So that, the
+                // ActivityStack#mTopActivityOccludesKeyguard can be updated and the activity below
+                // won't be resumed.
+                ensureVisibility = true;
+            }
+
+            if (ensureVisibility) {
+                getDisplay().ensureActivitiesVisible(null /* starting */, 0 /* configChanges */,
+                        false /* preserveWindows */, true /* notifyClients */);
+            }
         }
 
         boolean activityRemoved = false;
@@ -2698,7 +2711,7 @@
         // than destroy immediately.
         final boolean isNextNotYetVisible = next != null
                 && (!next.nowVisible || !next.mVisibleRequested);
-        if ((mVisibleRequested || isState(PAUSED)) && isNextNotYetVisible) {
+        if (isCurrentVisible && isNextNotYetVisible) {
             // Add this activity to the list of stopping activities. It will be processed and
             // destroyed when the next activity reports idle.
             addToStopping(false /* scheduleIdle */, false /* idleDelayed */,
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index c41029b..c66ff33 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -494,10 +494,14 @@
      * The launching activity which is using fixed rotation transformation.
      *
      * @see #handleTopActivityLaunchingInDifferentOrientation
+     * @see #setFixedRotationLaunchingApp
      * @see DisplayRotation#shouldRotateSeamlessly
      */
     ActivityRecord mFixedRotationLaunchingApp;
 
+    final FixedRotationTransitionListener mFixedRotationTransitionListener =
+            new FixedRotationTransitionListener();
+
     /** Windows added since {@link #mCurrentFocus} was set to null. Used for ANR blaming. */
     final ArrayList<WindowState> mWinAddedSinceNullFocus = new ArrayList<>();
 
@@ -928,6 +932,7 @@
 
         mAppTransition = new AppTransition(mWmService.mContext, mWmService, this);
         mAppTransition.registerListenerLocked(mWmService.mActivityManagerAppTransitionNotifier);
+        mAppTransition.registerListenerLocked(mFixedRotationTransitionListener);
         mAppTransitionController = new AppTransitionController(mWmService, this);
         mUnknownAppVisibilityController = new UnknownAppVisibilityController(mWmService, this);
 
@@ -1266,6 +1271,12 @@
         if (configUpdated) {
             return;
         }
+
+        // The display configuration doesn't change. If there is a launching transformed app, that
+        // means its request to change display configuration has been discarded, then it should
+        // respect to the current configuration of display.
+        clearFixedRotationLaunchingApp();
+
         // Something changed (E.g. device rotation), but no configuration update is needed.
         // E.g. changing device rotation by 180 degrees. Go ahead and perform surface placement to
         // unfreeze the display since we froze it when the rotation was updated in
@@ -1383,7 +1394,6 @@
                 orientationSource != null ? orientationSource.asActivityRecord() : null;
         // Currently there is no use case from non-activity.
         if (r != null && handleTopActivityLaunchingInDifferentOrientation(r)) {
-            mFixedRotationLaunchingApp = r;
             // Display orientation should be deferred until the top fixed rotation is finished.
             return false;
         }
@@ -1448,47 +1458,66 @@
             return false;
         }
 
-        startFixedRotationTransform(r, rotation);
-        mAppTransition.registerListenerLocked(new WindowManagerInternal.AppTransitionListener() {
-            void done() {
-                r.finishFixedRotationTransform();
-                mAppTransition.unregisterListener(this);
-            }
-
-            @Override
-            public void onAppTransitionFinishedLocked(IBinder token) {
-                if (token == r.token) {
-                    done();
-                }
-            }
-
-            @Override
-            public void onAppTransitionCancelledLocked(int transit) {
-                done();
-            }
-
-            @Override
-            public void onAppTransitionTimeoutLocked() {
-                done();
-            }
-        });
+        setFixedRotationLaunchingApp(r, rotation);
         return true;
     }
 
-    /** @return {@code true} if the display orientation will be changed. */
-    boolean continueUpdateOrientationForDiffOrienLaunchingApp(WindowToken token) {
-        if (token != mFixedRotationLaunchingApp) {
-            return false;
+    /**
+     * Sets the provided record to {@link mFixedRotationLaunchingApp} if possible to apply fixed
+     * rotation transform to it and indicate that the display may be rotated after it is launched.
+     */
+    void setFixedRotationLaunchingApp(@NonNull ActivityRecord r, @Surface.Rotation int rotation) {
+        final WindowToken prevRotatedLaunchingApp = mFixedRotationLaunchingApp;
+        if (prevRotatedLaunchingApp != null
+                && prevRotatedLaunchingApp.getWindowConfiguration().getRotation() == rotation
+                // It is animating so we can expect there will have a transition callback.
+                && prevRotatedLaunchingApp.isAnimating(TRANSITION | PARENTS)) {
+            // It may be the case that multiple activities launch consecutively. Because their
+            // rotation are the same, the transformed state can be shared to avoid duplicating
+            // the heavy operations. This also benefits that the states of multiple activities
+            // are handled together.
+            r.linkFixedRotationTransform(prevRotatedLaunchingApp);
+            return;
+        }
+
+        if (!r.hasFixedRotationTransform()) {
+            startFixedRotationTransform(r, rotation);
+        }
+        mFixedRotationLaunchingApp = r;
+        if (prevRotatedLaunchingApp != null) {
+            prevRotatedLaunchingApp.finishFixedRotationTransform();
+        }
+    }
+
+    /**
+     * Continue updating the orientation change of display if it was deferred by a top activity
+     * launched in a different orientation.
+     */
+    void continueUpdateOrientationForDiffOrienLaunchingApp() {
+        if (mFixedRotationLaunchingApp == null) {
+            return;
         }
         // Update directly because the app which will change the orientation of display is ready.
         if (mDisplayRotation.updateOrientation(getOrientation(), false /* forceUpdate */)) {
             sendNewConfiguration();
-            return true;
+            return;
         }
-        // The display won't rotate (e.g. the orientation from sensor has updated again before
-        // applying rotation to display), so clear it to stop using seamless rotation.
+        // The orientation of display is not changed.
+        clearFixedRotationLaunchingApp();
+    }
+
+    /**
+     * Clears the {@link mFixedRotationLaunchingApp} without applying rotation to display. It is
+     * used when the display won't rotate (e.g. the orientation from sensor has updated again before
+     * applying rotation to display) but the launching app has been transformed. So the record need
+     * to be cleared and restored to stop using seamless rotation and rotated configuration.
+     */
+    private void clearFixedRotationLaunchingApp() {
+        if (mFixedRotationLaunchingApp == null) {
+            return;
+        }
+        mFixedRotationLaunchingApp.finishFixedRotationTransform();
         mFixedRotationLaunchingApp = null;
-        return false;
     }
 
     private void startFixedRotationTransform(WindowToken token, int rotation) {
@@ -2858,6 +2887,9 @@
             pw.print("  mLastStatusBarVisibility=0x");
             pw.println(Integer.toHexString(mLastStatusBarVisibility));
         }
+        if (mFixedRotationLaunchingApp != null) {
+            pw.println("  mFixedRotationLaunchingApp=" + mFixedRotationLaunchingApp);
+        }
 
         pw.println();
         mWallpaperController.dump(pw, "  ");
@@ -5184,7 +5216,7 @@
         final int currRotation = currOverrideConfig.windowConfiguration.getRotation();
         final int overrideRotation = overrideConfiguration.windowConfiguration.getRotation();
         if (currRotation != ROTATION_UNDEFINED && currRotation != overrideRotation) {
-            applyRotationAndClearFixedRotation(currRotation, overrideRotation);
+            applyRotationAndFinishFixedRotation(currRotation, overrideRotation);
         }
         mCurrentOverrideConfigurationChanges = currOverrideConfig.diff(overrideConfiguration);
         super.onRequestedOverrideConfigurationChanged(overrideConfiguration);
@@ -5200,7 +5232,7 @@
      * fixed rotation transform also needs to be cleared to make sure the rotated activity fits
      * the display naturally.
      */
-    private void applyRotationAndClearFixedRotation(int oldRotation, int newRotation) {
+    private void applyRotationAndFinishFixedRotation(int oldRotation, int newRotation) {
         if (mFixedRotationLaunchingApp == null) {
             applyRotation(oldRotation, newRotation);
             return;
@@ -5219,7 +5251,7 @@
             }
         });
 
-        mFixedRotationLaunchingApp.clearFixedRotationTransform(
+        mFixedRotationLaunchingApp.finishFixedRotationTransform(
                 () -> applyRotation(oldRotation, newRotation));
         mFixedRotationLaunchingApp = null;
     }
@@ -5494,6 +5526,75 @@
         });
     }
 
+    /** The entry for proceeding to handle {@link #mFixedRotationLaunchingApp}. */
+    class FixedRotationTransitionListener extends WindowManagerInternal.AppTransitionListener {
+
+        /**
+         * The animating activity which shows the recents task list. It is set between
+         * {@link RecentsAnimationController#initialize} and
+         * {@link RecentsAnimationController#cancelAnimation}.
+         */
+        private ActivityRecord mAnimatingRecents;
+
+        /**
+         * If the recents activity has a fixed orientation which is different from the current top
+         * activity, it will be rotated before being shown so we avoid a screen rotation animation
+         * when showing the Recents view.
+         */
+        void onStartRecentsAnimation(@NonNull ActivityRecord r) {
+            mAnimatingRecents = r;
+            rotateInDifferentOrientationIfNeeded(r);
+            if (r.hasFixedRotationTransform()) {
+                // Set the record so we can recognize it to continue to update display orientation
+                // if the recents activity becomes the top later.
+                setFixedRotationLaunchingApp(r, r.getWindowConfiguration().getRotation());
+            }
+        }
+
+        /**
+         * If {@link #mAnimatingRecents} still has fixed rotation, it should be moved to top so we
+         * don't clear {@link #mFixedRotationLaunchingApp} that will be handled by transition.
+         */
+        void onFinishRecentsAnimation() {
+            final ActivityRecord animatingRecents = mAnimatingRecents;
+            mAnimatingRecents = null;
+            if (animatingRecents != null && animatingRecents == mFixedRotationLaunchingApp
+                    && !animatingRecents.hasFixedRotationTransform()) {
+                // The recents activity won't be the top, such as giving up the swipe up gesture
+                // and return to the original top.
+                mFixedRotationLaunchingApp = null;
+            }
+        }
+
+        @Override
+        public void onAppTransitionFinishedLocked(IBinder token) {
+            final ActivityRecord r = getActivityRecord(token);
+            // Ignore the animating recents so the fixed rotation transform won't be switched twice
+            // by finishing the recents animation and moving it to top. That also avoids flickering
+            // due to wait for previous activity to be paused if it supports PiP that ignores the
+            // effect of resume-while-pausing.
+            if (r == null || r == mAnimatingRecents) {
+                return;
+            }
+            if (mFixedRotationLaunchingApp != null
+                    && mFixedRotationLaunchingApp.hasFixedRotationTransform(r)) {
+                continueUpdateOrientationForDiffOrienLaunchingApp();
+            } else {
+                r.finishFixedRotationTransform();
+            }
+        }
+
+        @Override
+        public void onAppTransitionCancelledLocked(int transit) {
+            continueUpdateOrientationForDiffOrienLaunchingApp();
+        }
+
+        @Override
+        public void onAppTransitionTimeoutLocked() {
+            continueUpdateOrientationForDiffOrienLaunchingApp();
+        }
+    }
+
     class RemoteInsetsControlTarget implements InsetsControlTarget {
         private final IDisplayWindowInsetsController mRemoteInsetsController;
 
diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java
index 6efa8de..dd761be 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimationController.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java
@@ -411,10 +411,7 @@
 
         mService.mWindowPlacerLocked.performSurfacePlacement();
 
-        // If the target activity has a fixed orientation which is different from the current top
-        // activity, it will be rotated before being shown so we avoid a screen rotation
-        // animation when showing the Recents view.
-        mDisplayContent.rotateInDifferentOrientationIfNeeded(mTargetActivityRecord);
+        mDisplayContent.mFixedRotationTransitionListener.onStartRecentsAnimation(targetActivity);
 
         // Notify that the animation has started
         if (mStatusBar != null) {
@@ -736,11 +733,13 @@
             if (reorderMode == REORDER_MOVE_TO_TOP || reorderMode == REORDER_KEEP_IN_PLACE) {
                 mDisplayContent.mAppTransition.notifyAppTransitionFinishedLocked(
                         mTargetActivityRecord.token);
-            }
-            if (mTargetActivityRecord.hasFixedRotationTransform()) {
+            } else {
+                // The target activity will be moved to original position (non-top). Since it won't
+                // affect display orientation, just finish the transform.
                 mTargetActivityRecord.finishFixedRotationTransform();
             }
         }
+        mDisplayContent.mFixedRotationTransitionListener.onFinishRecentsAnimation();
 
         // Notify that the animation has ended
         if (mStatusBar != null) {
diff --git a/services/core/java/com/android/server/wm/ShellRoot.java b/services/core/java/com/android/server/wm/ShellRoot.java
index 0b1760d..99f710b 100644
--- a/services/core/java/com/android/server/wm/ShellRoot.java
+++ b/services/core/java/com/android/server/wm/ShellRoot.java
@@ -43,6 +43,8 @@
     private WindowToken mToken;
     private final IBinder.DeathRecipient mDeathRecipient;
     private SurfaceControl mSurfaceControl = null;
+    private IWindow mAccessibilityWindow;
+    private IBinder.DeathRecipient mAccessibilityWindowDeath;
 
     ShellRoot(@NonNull IWindow client, @NonNull DisplayContent dc, final int windowType) {
         mDisplayContent = dc;
@@ -112,11 +114,14 @@
         if (!mDisplayContent.getDefaultTaskDisplayArea().isSplitScreenModeActivated()) {
             return null;
         }
+        if (mAccessibilityWindow == null) {
+            return null;
+        }
         WindowInfo windowInfo = WindowInfo.obtain();
         windowInfo.displayId = mToken.getDisplayArea().getDisplayContent().mDisplayId;
         windowInfo.type = mToken.windowType;
         windowInfo.layer = mToken.getWindowLayerFromType();
-        windowInfo.token = mClient.asBinder();
+        windowInfo.token = mAccessibilityWindow.asBinder();
         windowInfo.title = "Splitscreen Divider";
         windowInfo.focused = false;
         windowInfo.inPictureInPicture = false;
@@ -126,5 +131,29 @@
         windowInfo.regionInScreen.set(regionRect);
         return windowInfo;
     }
+
+    void setAccessibilityWindow(IWindow window) {
+        if (mAccessibilityWindow != null) {
+            mAccessibilityWindow.asBinder().unlinkToDeath(mAccessibilityWindowDeath, 0);
+        }
+        mAccessibilityWindow = window;
+        if (mAccessibilityWindow != null) {
+            try {
+                mAccessibilityWindowDeath = () -> {
+                    synchronized (mDisplayContent.mWmService.mGlobalLock) {
+                        mAccessibilityWindow = null;
+                        setAccessibilityWindow(null);
+                    }
+                };
+                mAccessibilityWindow.asBinder().linkToDeath(mAccessibilityWindowDeath, 0);
+            } catch (RemoteException e) {
+                mAccessibilityWindow = null;
+            }
+        }
+        if (mDisplayContent.mWmService.mAccessibilityController != null) {
+            mDisplayContent.mWmService.mAccessibilityController.onSomeWindowResizedOrMovedLocked(
+                    mDisplayContent.getDisplayId());
+        }
+    }
 }
 
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 44049b8..5a27f47 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -1431,15 +1431,15 @@
 
     @Override
     void removeChild(WindowContainer child) {
-        // A rootable child task that is now being removed from an organized task. Making sure
-        // the stack references is keep updated.
-        if (mTaskOrganizer != null && mCreatedByOrganizer && child.asTask() != null) {
-            getDisplayArea().removeStackReferenceIfNeeded((ActivityStack) child);
-        }
         removeChild(child, "removeChild");
     }
 
     void removeChild(WindowContainer r, String reason) {
+        // A rootable child task that is now being removed from an organized task. Making sure
+        // the stack references is keep updated.
+        if (mTaskOrganizer != null && mCreatedByOrganizer && r.asTask() != null) {
+            getDisplayArea().removeStackReferenceIfNeeded((ActivityStack) r);
+        }
         if (!mChildren.contains(r)) {
             Slog.e(TAG, "removeChild: r=" + r + " not found in t=" + this);
             return;
@@ -3112,7 +3112,8 @@
 
     @Override
     boolean showToCurrentUser() {
-        return mForceShowForAllUsers || showForAllUsers() || mWmService.isCurrentProfile(mUserId);
+        return mForceShowForAllUsers || showForAllUsers()
+                || mWmService.isCurrentProfile(getTopMostTask().mUserId);
     }
 
     void setForceShowForAllUsers(boolean forceShowForAllUsers) {
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 3068a58..84d749f 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -3911,6 +3911,30 @@
     }
 
     @Override
+    public void setShellRootAccessibilityWindow(int displayId, int windowType, IWindow target) {
+        if (mContext.checkCallingOrSelfPermission(MANAGE_APP_TOKENS)
+                != PackageManager.PERMISSION_GRANTED) {
+            throw new SecurityException("Must hold permission " + MANAGE_APP_TOKENS);
+        }
+        final long origId = Binder.clearCallingIdentity();
+        try {
+            synchronized (mGlobalLock) {
+                final DisplayContent dc = mRoot.getDisplayContent(displayId);
+                if (dc == null) {
+                    return;
+                }
+                ShellRoot root = dc.mShellRoots.get(windowType);
+                if (root == null) {
+                    return;
+                }
+                root.setAccessibilityWindow(target);
+            }
+        } finally {
+            Binder.restoreCallingIdentity(origId);
+        }
+    }
+
+    @Override
     public void setDisplayWindowInsetsController(
             int displayId, IDisplayWindowInsetsController insetsController) {
         if (mContext.checkCallingOrSelfPermission(MANAGE_APP_TOKENS)
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index a3387ab..f6473fd 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -3346,6 +3346,7 @@
 
         final ActivityStack stack = task.getStack();
         if (stack == null || inFreeformWindowingMode()) {
+            handle.setTouchableRegionCrop(null);
             return;
         }
 
diff --git a/services/core/java/com/android/server/wm/WindowToken.java b/services/core/java/com/android/server/wm/WindowToken.java
index 21c7687..472773e 100644
--- a/services/core/java/com/android/server/wm/WindowToken.java
+++ b/services/core/java/com/android/server/wm/WindowToken.java
@@ -119,7 +119,6 @@
      * rotated by the given rotated display info, frames and insets.
      */
     private static class FixedRotationTransformState {
-        final WindowToken mOwner;
         final DisplayInfo mDisplayInfo;
         final DisplayFrames mDisplayFrames;
         final InsetsState mInsetsState;
@@ -133,10 +132,9 @@
         final ArrayList<WindowContainer<?>> mRotatedContainers = new ArrayList<>(3);
         boolean mIsTransforming = true;
 
-        FixedRotationTransformState(WindowToken owner, DisplayInfo rotatedDisplayInfo,
+        FixedRotationTransformState(DisplayInfo rotatedDisplayInfo,
                 DisplayFrames rotatedDisplayFrames, InsetsState rotatedInsetsState,
                 Configuration rotatedConfig, int currentRotation) {
-            mOwner = owner;
             mDisplayInfo = rotatedDisplayInfo;
             mDisplayFrames = rotatedDisplayFrames;
             mInsetsState = rotatedInsetsState;
@@ -482,6 +480,14 @@
         return mFixedRotationTransformState != null;
     }
 
+    /** Returns {@code true} if the given token shares the same transform. */
+    boolean hasFixedRotationTransform(WindowToken token) {
+        if (mFixedRotationTransformState == null || token == null) {
+            return false;
+        }
+        return this == token || mFixedRotationTransformState == token.mFixedRotationTransformState;
+    }
+
     boolean isFinishingFixedRotationTransform() {
         return mFixedRotationTransformState != null
                 && !mFixedRotationTransformState.mIsTransforming;
@@ -520,15 +526,14 @@
         final InsetsState insetsState = new InsetsState();
         mDisplayContent.getDisplayPolicy().simulateLayoutDisplay(displayFrames, insetsState,
                 mDisplayContent.getConfiguration().uiMode);
-        mFixedRotationTransformState = new FixedRotationTransformState(this, info, displayFrames,
+        mFixedRotationTransformState = new FixedRotationTransformState(info, displayFrames,
                 insetsState, new Configuration(config), mDisplayContent.getRotation());
         onConfigurationChanged(getParent().getConfiguration());
     }
 
     /**
      * Reuses the {@link FixedRotationTransformState} (if any) from the other WindowToken to this
-     * one. This takes the same effect as {@link #applyFixedRotationTransform}, but the linked state
-     * can only be cleared by the state owner.
+     * one. This takes the same effect as {@link #applyFixedRotationTransform}.
      */
     void linkFixedRotationTransform(WindowToken other) {
         if (mFixedRotationTransformState != null) {
@@ -543,28 +548,15 @@
         onConfigurationChanged(getParent().getConfiguration());
     }
 
-    /**
-     * Finishes the transform and continue updating the orientation change of display. Only the
-     * state owner can finish the transform state.
-     */
     void finishFixedRotationTransform() {
-        if (mFixedRotationTransformState == null || mFixedRotationTransformState.mOwner != this) {
-            return;
-        }
-        final boolean changed =
-                mDisplayContent.continueUpdateOrientationForDiffOrienLaunchingApp(this);
-        // If it is not the launching app or the display is not rotated, make sure the transform is
-        // cleared and the configuration is restored from parent.
-        if (!changed) {
-            clearFixedRotationTransform(null /* applyDisplayRotation */);
-        }
+        finishFixedRotationTransform(null /* applyDisplayRotation */);
     }
 
     /**
-     * Clears the transform and apply display rotation if the action is given. If the display will
+     * Finishes the transform and apply display rotation if the action is given. If the display will
      * not rotate, the transformed containers are restored to their original states.
      */
-    void clearFixedRotationTransform(Runnable applyDisplayRotation) {
+    void finishFixedRotationTransform(Runnable applyDisplayRotation) {
         final FixedRotationTransformState state = mFixedRotationTransformState;
         if (state == null) {
             return;
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 7e4c8f3..a74706b 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -15948,22 +15948,31 @@
      */
     private void updatePersonalAppsSuspension(int profileUserId, boolean unlocked) {
         final boolean suspended;
+        final int deadlineState;
+        final String poPackage;
         synchronized (getLockObject()) {
             final ActiveAdmin profileOwner = getProfileOwnerAdminLocked(profileUserId);
             if (profileOwner != null) {
-                final int deadlineState =
+                deadlineState =
                         updateProfileOffDeadlineLocked(profileUserId, profileOwner, unlocked);
                 suspended = profileOwner.mSuspendPersonalApps
                         || deadlineState == PROFILE_OFF_DEADLINE_REACHED;
-                Slog.d(LOG_TAG, String.format("Personal apps suspended: %b, deadline state: %d",
-                            suspended, deadlineState));
-                updateProfileOffDeadlineNotificationLocked(profileUserId, profileOwner,
-                        unlocked ? PROFILE_OFF_DEADLINE_DEFAULT : deadlineState);
+                poPackage = profileOwner.info.getPackageName();
             } else {
+                poPackage = null;
                 suspended = false;
+                deadlineState = PROFILE_OFF_DEADLINE_DEFAULT;
             }
         }
 
+        Slog.d(LOG_TAG, String.format("Personal apps suspended: %b, deadline state: %d",
+                suspended, deadlineState));
+
+        if (poPackage != null) {
+            final int notificationState = unlocked ? PROFILE_OFF_DEADLINE_DEFAULT : deadlineState;
+            updateProfileOffDeadlineNotification(profileUserId, poPackage, notificationState);
+        }
+
         final int parentUserId = getProfileParentId(profileUserId);
         suspendPersonalAppsInternal(parentUserId, suspended);
     }
@@ -16067,38 +16076,34 @@
         }
     }
 
-    private void updateProfileOffDeadlineNotificationLocked(int profileUserId,
-            @Nullable ActiveAdmin profileOwner, int notificationState) {
+    private void updateProfileOffDeadlineNotification(
+            int profileUserId, String profileOwnerPackage, int notificationState) {
 
         if (notificationState == PROFILE_OFF_DEADLINE_DEFAULT) {
             mInjector.getNotificationManager().cancel(SystemMessage.NOTE_PERSONAL_APPS_SUSPENDED);
             return;
         }
 
-        final String profileOwnerPackageName = profileOwner.info.getPackageName();
-        final long maxTimeOffDays =
-                TimeUnit.MILLISECONDS.toDays(profileOwner.mProfileMaximumTimeOffMillis);
-
         final Intent intent = new Intent(DevicePolicyManager.ACTION_CHECK_POLICY_COMPLIANCE);
-        intent.setPackage(profileOwnerPackageName);
+        intent.setPackage(profileOwnerPackage);
 
         final PendingIntent pendingIntent = mInjector.pendingIntentGetActivityAsUser(mContext,
                 0 /* requestCode */, intent, PendingIntent.FLAG_UPDATE_CURRENT,
                 null /* options */, UserHandle.of(profileUserId));
 
         // TODO(b/149075510): Only the first of the notifications should be dismissible.
-        final String title = mContext.getString(
+        final String text = mContext.getString(
                 notificationState == PROFILE_OFF_DEADLINE_WARNING
-                ? R.string.personal_apps_suspended_tomorrow_title
-                : R.string.personal_apps_suspended_title);
+                ? R.string.personal_apps_suspension_tomorrow_text
+                : R.string.personal_apps_suspension_text);
 
         final Notification notification =
                 new Notification.Builder(mContext, SystemNotificationChannels.DEVICE_ADMIN)
                         .setSmallIcon(android.R.drawable.stat_sys_warning)
                         .setOngoing(true)
-                        .setContentTitle(title)
-                        .setContentText(mContext.getString(
-                            R.string.personal_apps_suspended_text, maxTimeOffDays))
+                        .setContentTitle(mContext.getString(
+                                R.string.personal_apps_suspension_title))
+                        .setContentText(text)
                         .setColor(mContext.getColor(R.color.system_notification_accent_color))
                         .setContentIntent(pendingIntent)
                         .build();
diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp
index cae5027..1036858 100644
--- a/services/incremental/IncrementalService.cpp
+++ b/services/incremental/IncrementalService.cpp
@@ -761,10 +761,7 @@
     std::unique_lock l2(ifs->lock);
     if (ifs->bindPoints.size() <= 1) {
         ifs->bindPoints.clear();
-        std::thread([this, ifs, l2 = std::move(l2)]() mutable {
-            mJni->initializeForCurrentThread();
-            deleteStorageLocked(*ifs, std::move(l2));
-        }).detach();
+        deleteStorageLocked(*ifs, std::move(l2));
     } else {
         const std::string savedFile = std::move(bindIt->second.savedFilename);
         ifs->bindPoints.erase(bindIt);
diff --git a/services/tests/servicestests/Android.bp b/services/tests/servicestests/Android.bp
index b457856..40a1706 100644
--- a/services/tests/servicestests/Android.bp
+++ b/services/tests/servicestests/Android.bp
@@ -99,6 +99,7 @@
         ":PackageParserTestApp1",
         ":PackageParserTestApp2",
         ":PackageParserTestApp3",
+        ":apex.test",
     ],
     resource_zips: [":FrameworksServicesTests_apks_as_resources"],
 }
diff --git a/services/tests/servicestests/res/raw/apex_test.apex b/services/tests/servicestests/res/raw/apex_test.apex
deleted file mode 100644
index 19b1c5e..0000000
--- a/services/tests/servicestests/res/raw/apex_test.apex
+++ /dev/null
Binary files differ
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/SystemActionPerformerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/SystemActionPerformerTest.java
index 064e348..98f4764 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/SystemActionPerformerTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/SystemActionPerformerTest.java
@@ -67,7 +67,7 @@
  */
 public class SystemActionPerformerTest {
     private static final int LATCH_TIMEOUT_MS = 500;
-    private static final int LEGACY_SYSTEM_ACTION_COUNT = 9;
+    private static final int LEGACY_SYSTEM_ACTION_COUNT = 8;
     private static final int NEW_ACTION_ID = 20;
     private static final String LABEL_1 = "label1";
     private static final String LABEL_2 = "label2";
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
index b042e77..c228508 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
@@ -15,6 +15,8 @@
  */
 package com.android.server.devicepolicy;
 
+import static android.app.Notification.EXTRA_TEXT;
+import static android.app.Notification.EXTRA_TITLE;
 import static android.app.admin.DevicePolicyManager.DELEGATION_APP_RESTRICTIONS;
 import static android.app.admin.DevicePolicyManager.DELEGATION_CERT_INSTALL;
 import static android.app.admin.DevicePolicyManager.ID_TYPE_BASE_INFO;
@@ -195,9 +197,10 @@
             PROFILE_OFF_START + PROFILE_OFF_TIMEOUT - TimeUnit.DAYS.toMillis(1);
     // Time when the apps should be suspended
     private static final long PROFILE_OFF_DEADLINE = PROFILE_OFF_START + PROFILE_OFF_TIMEOUT;
-    // Notification titles for setManagedProfileMaximumTimeOff tests:
-    private static final String PROFILE_OFF_WARNING_TITLE = "suspended_tomorrow";
-    private static final String PROFILE_OFF_SUSPENDED_TITLE = "suspended";
+    // Notification title and text for setManagedProfileMaximumTimeOff tests:
+    private static final String PROFILE_OFF_SUSPENSION_TITLE = "suspension_title";
+    private static final String PROFILE_OFF_SUSPENSION_TEXT = "suspension_text";
+    private static final String PROFILE_OFF_SUSPENSION_TOMORROW_TEXT = "suspension_tomorrow_text";
 
     @Override
     protected void setUp() throws Exception {
@@ -1576,7 +1579,9 @@
         dpms.approveCaCert(fourCerts.getList().get(1), userId, true);
         // a notification should be shown saying that there are two certificates left to approve.
         verify(getServices().notificationManager, timeout(1000))
-                .notifyAsUser(anyString(), anyInt(), argThat(hasTitle(TEST_STRING)), eq(user));
+                .notifyAsUser(anyString(), anyInt(), argThat(hasExtra(EXTRA_TITLE,
+                        TEST_STRING
+                )), eq(user));
     }
 
     /**
@@ -6317,7 +6322,8 @@
         verify(getServices().alarmManager, times(1)).set(anyInt(), eq(PROFILE_OFF_DEADLINE), any());
         // Now the user should see a warning notification.
         verify(getServices().notificationManager, times(1))
-                .notify(anyInt(), argThat(hasTitle(PROFILE_OFF_WARNING_TITLE)));
+                .notify(anyInt(), argThat(hasExtra(EXTRA_TITLE, PROFILE_OFF_SUSPENSION_TITLE,
+                        EXTRA_TEXT, PROFILE_OFF_SUSPENSION_TOMORROW_TEXT)));
         // Apps shouldn't be suspended yet.
         verifyZeroInteractions(getServices().ipackageManager);
         clearInvocations(getServices().alarmManager);
@@ -6331,7 +6337,8 @@
         verifyZeroInteractions(getServices().alarmManager);
         // Now the user should see a notification about suspended apps.
         verify(getServices().notificationManager, times(1))
-                .notify(anyInt(), argThat(hasTitle(PROFILE_OFF_SUSPENDED_TITLE)));
+                .notify(anyInt(), argThat(hasExtra(EXTRA_TITLE, PROFILE_OFF_SUSPENSION_TITLE,
+                        EXTRA_TEXT, PROFILE_OFF_SUSPENSION_TEXT)));
         // Verify that the apps are suspended.
         verify(getServices().ipackageManager, times(1)).setPackagesSuspendedAsUser(
                 any(), eq(true), any(), any(), any(), any(), anyInt());
@@ -6461,25 +6468,41 @@
 
         // Setup notification titles.
         when(mServiceContext.resources
-                .getString(R.string.personal_apps_suspended_tomorrow_title))
-                .thenReturn(PROFILE_OFF_WARNING_TITLE);
+                .getString(R.string.personal_apps_suspension_title))
+                .thenReturn(PROFILE_OFF_SUSPENSION_TITLE);
         when(mServiceContext.resources
-                .getString(R.string.personal_apps_suspended_title))
-                .thenReturn(PROFILE_OFF_SUSPENDED_TITLE);
+                .getString(R.string.personal_apps_suspension_text))
+                .thenReturn(PROFILE_OFF_SUSPENSION_TEXT);
+        when(mServiceContext.resources
+                .getString(R.string.personal_apps_suspension_tomorrow_text))
+                .thenReturn(PROFILE_OFF_SUSPENSION_TOMORROW_TEXT);
 
         clearInvocations(getServices().ipackageManager);
     }
 
-    private static Matcher<Notification> hasTitle(String expected) {
+    private static Matcher<Notification> hasExtra(String... extras) {
+        assertEquals("Odd numebr of extra key-values", 0, extras.length % 2);
         return new BaseMatcher<Notification>() {
             @Override
             public boolean matches(Object item) {
                 final Notification notification = (Notification) item;
-                return expected.equals(notification.extras.getString(Notification.EXTRA_TITLE));
+                for (int i = 0; i < extras.length / 2; i++) {
+                    if (!extras[i * 2 + 1].equals(notification.extras.getString(extras[i * 2]))) {
+                        return false;
+                    }
+                }
+                return true;
             }
             @Override
             public void describeTo(Description description) {
-                description.appendText("Notification{title=\"" + expected + "\"}");
+                description.appendText("Notification{");
+                for (int i = 0; i < extras.length / 2; i++) {
+                    if (i > 0) {
+                        description.appendText(",");
+                    }
+                    description.appendText(extras[i * 2] + "=\"" + extras[i * 2 + 1] + "\"");
+                }
+                description.appendText("}");
             }
         };
     }
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
index b8394e3..b762118 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
@@ -20,7 +20,12 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import android.content.Context;
+import android.os.Handler;
+import android.os.IPowerManager;
+import android.os.IThermalService;
 import android.os.Looper;
+import android.os.PowerManager;
 import android.os.test.TestLooper;
 import android.view.KeyEvent;
 
@@ -32,6 +37,8 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
 
 import java.util.ArrayList;
 
@@ -50,8 +57,17 @@
     private int mPlaybackPhysicalAddress;
     private boolean mWokenUp;
 
+    @Mock private IPowerManager mIPowerManagerMock;
+    @Mock private IThermalService mIThermalServiceMock;
+
     @Before
     public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        Context context = InstrumentationRegistry.getTargetContext();
+        mMyLooper = mTestLooper.getLooper();
+        PowerManager powerManager = new PowerManager(context, mIPowerManagerMock,
+                mIThermalServiceMock, new Handler(mMyLooper));
         mHdmiControlService =
             new HdmiControlService(InstrumentationRegistry.getTargetContext()) {
                 @Override
@@ -68,9 +84,13 @@
                 void writeStringSystemProperty(String key, String value) {
                     // do nothing
                 }
+
+                @Override
+                PowerManager getPowerManager() {
+                    return powerManager;
+                }
             };
 
-        mMyLooper = mTestLooper.getLooper();
         mHdmiCecLocalDevicePlayback = new HdmiCecLocalDevicePlayback(mHdmiControlService);
         mHdmiCecLocalDevicePlayback.init();
         mHdmiControlService.setIoLooper(mMyLooper);
@@ -140,7 +160,6 @@
     }
 
     @Test
-    @Ignore("b/151147315")
     public void doNotWakeUpOnHotPlug_PlugIn() {
         mWokenUp = false;
         mHdmiCecLocalDevicePlayback.onHotplug(0, true);
@@ -148,7 +167,6 @@
     }
 
     @Test
-    @Ignore("b/151147315")
     public void doNotWakeUpOnHotPlug_PlugOut() {
         mWokenUp = false;
         mHdmiCecLocalDevicePlayback.onHotplug(0, false);
@@ -156,7 +174,6 @@
     }
 
     @Test
-    @Ignore("b/151147315")
     public void sendVolumeKeyEvent_up_volumeEnabled() {
         mHdmiControlService.setHdmiCecVolumeControlEnabled(true);
         mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_UP, true);
@@ -166,7 +183,6 @@
     }
 
     @Test
-    @Ignore("b/151147315")
     public void sendVolumeKeyEvent_down_volumeEnabled() {
         mHdmiControlService.setHdmiCecVolumeControlEnabled(true);
         mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_DOWN, true);
@@ -176,7 +192,6 @@
     }
 
     @Test
-    @Ignore("b/151147315")
     public void sendVolumeKeyEvent_mute_volumeEnabled() {
         mHdmiControlService.setHdmiCecVolumeControlEnabled(true);
         mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_MUTE, true);
@@ -186,7 +201,6 @@
     }
 
     @Test
-    @Ignore("b/151147315")
     public void sendVolumeKeyEvent_up_volumeDisabled() {
         mHdmiControlService.setHdmiCecVolumeControlEnabled(false);
         mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_UP, true);
@@ -196,7 +210,6 @@
     }
 
     @Test
-    @Ignore("b/151147315")
     public void sendVolumeKeyEvent_down_volumeDisabled() {
         mHdmiControlService.setHdmiCecVolumeControlEnabled(false);
         mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_DOWN, true);
@@ -206,7 +219,6 @@
     }
 
     @Test
-    @Ignore("b/151147315")
     public void sendVolumeKeyEvent_mute_volumeDisabled() {
         mHdmiControlService.setHdmiCecVolumeControlEnabled(false);
         mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_MUTE, true);
diff --git a/services/tests/servicestests/src/com/android/server/pm/ApexManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/ApexManagerTest.java
index 3718c5c..0fbd1b6 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ApexManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ApexManagerTest.java
@@ -36,7 +36,6 @@
 import android.apex.IApexService;
 import android.content.Context;
 import android.content.pm.PackageInfo;
-import android.os.FileUtils;
 import android.os.RemoteException;
 import android.platform.test.annotations.Presubmit;
 
@@ -44,7 +43,6 @@
 import androidx.test.platform.app.InstrumentationRegistry;
 import androidx.test.runner.AndroidJUnit4;
 
-import com.android.frameworks.servicestests.R;
 import com.android.server.pm.parsing.PackageParser2;
 import com.android.server.pm.parsing.TestPackageParser2;
 
@@ -52,11 +50,12 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.io.BufferedOutputStream;
 import java.io.File;
-import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
 
 @SmallTest
 @Presubmit
@@ -64,6 +63,7 @@
 
 public class ApexManagerTest {
     private static final String TEST_APEX_PKG = "com.android.apex.test";
+    private static final String TEST_APEX_FILE_NAME = "apex.test.apex";
     private static final int TEST_SESSION_ID = 99999999;
     private static final int[] TEST_CHILD_SESSION_ID = {8888, 7777};
     private ApexManager mApexManager;
@@ -274,7 +274,7 @@
     }
 
     private ApexInfo[] createApexInfo(boolean isActive, boolean isFactory) {
-        File apexFile = copyRawResourceToFile(TEST_APEX_PKG, R.raw.apex_test);
+        File apexFile = extractResource(TEST_APEX_PKG,  TEST_APEX_FILE_NAME);
         ApexInfo apexInfo = new ApexInfo();
         apexInfo.isActive = isActive;
         apexInfo.isFactory = isFactory;
@@ -308,27 +308,29 @@
         return params;
     }
 
-    /**
-     * Copies a specified {@code resourceId} to a temp file. Returns a non-null file if the copy
-     * succeeded
-     */
-    File copyRawResourceToFile(String baseName, int resourceId) {
-        File outFile;
+    // Extracts the binary data from a resource and writes it to a temp file
+    private static File extractResource(String baseName, String fullResourceName) {
+        File file;
         try {
-            outFile = File.createTempFile(baseName, ".apex");
+            file = File.createTempFile(baseName, ".apex");
         } catch (IOException e) {
             throw new AssertionError("CreateTempFile IOException" + e);
         }
-
-        try (InputStream is = mContext.getResources().openRawResource(resourceId);
-             FileOutputStream os = new FileOutputStream(outFile)) {
-            assertThat(FileUtils.copy(is, os)).isGreaterThan(0L);
-        } catch (FileNotFoundException e) {
-            throw new AssertionError("File not found exception " + e);
+        try (
+                InputStream in = ApexManager.class.getClassLoader()
+                        .getResourceAsStream(fullResourceName);
+                OutputStream out = new BufferedOutputStream(new FileOutputStream(file))) {
+            if (in == null) {
+                throw new IllegalArgumentException("Resource not found: " + fullResourceName);
+            }
+            byte[] buf = new byte[65536];
+            int chunkSize;
+            while ((chunkSize = in.read(buf)) != -1) {
+                out.write(buf, 0, chunkSize);
+            }
+            return file;
         } catch (IOException e) {
-            throw new AssertionError("IOException" + e);
+            throw new AssertionError("Exception while converting stream to file" + e);
         }
-
-        return outFile;
     }
 }
diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java b/services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java
index acfe71a..fa9ee19 100644
--- a/services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java
+++ b/services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java
@@ -35,6 +35,7 @@
 import static org.junit.Assert.fail;
 
 import android.annotation.NonNull;
+import android.app.PropertyInvalidatedCache;
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
@@ -91,6 +92,12 @@
         MockitoAnnotations.initMocks(this);
     }
 
+    @Before
+    public void setup() {
+        // Disable binder caches in this process.
+        PropertyInvalidatedCache.disableForTestMode();
+    }
+
     /** make sure our initialized KeySetManagerService metadata matches packages.xml */
     @Test
     public void testReadKeySetSettings()
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceCreateProfileTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceCreateProfileTest.java
index 9eaf8b6..44b202d 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceCreateProfileTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceCreateProfileTest.java
@@ -21,6 +21,7 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
+import android.app.PropertyInvalidatedCache;
 import android.content.pm.UserInfo;
 import android.os.Looper;
 import android.os.ServiceSpecificException;
@@ -60,6 +61,9 @@
         if (Looper.myLooper() == null) {
             Looper.prepare();
         }
+        // Disable binder caches in this process.
+        PropertyInvalidatedCache.disableForTestMode();
+
         LocalServices.removeServiceForTest(UserManagerInternal.class);
         mUserManagerService = new UserManagerService(InstrumentationRegistry.getContext());
 
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceIdRecyclingTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceIdRecyclingTest.java
index a9ce618..5846fc11 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceIdRecyclingTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceIdRecyclingTest.java
@@ -20,6 +20,7 @@
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import android.app.PropertyInvalidatedCache;
 import android.content.pm.UserInfo;
 import android.os.Looper;
 import android.os.UserManagerInternal;
@@ -57,6 +58,9 @@
         if (Looper.myLooper() == null) {
             Looper.prepare();
         }
+        // Disable binder caches in this process.
+        PropertyInvalidatedCache.disableForTestMode();
+
         LocalServices.removeServiceForTest(UserManagerInternal.class);
         mUserManagerService = new UserManagerService(InstrumentationRegistry.getContext());
     }
@@ -122,4 +126,3 @@
         return new UserInfo(userId, "User " + userId, 0);
     }
 }
-
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserInfoTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserInfoTest.java
index 5df8568..66ca839 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserInfoTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserInfoTest.java
@@ -37,6 +37,7 @@
 import static org.junit.Assert.assertTrue;
 
 import android.annotation.UserIdInt;
+import android.app.PropertyInvalidatedCache;
 import android.content.pm.UserInfo;
 import android.content.pm.UserInfo.UserInfoFlag;
 import android.os.Looper;
@@ -78,6 +79,9 @@
         if (Looper.myLooper() == null) {
             Looper.prepare();
         }
+        // Disable binder caches in this process.
+        PropertyInvalidatedCache.disableForTestMode();
+
         LocalServices.removeServiceForTest(UserManagerInternal.class);
         mUserManagerService = new UserManagerService(InstrumentationRegistry.getContext());
 
diff --git a/services/tests/servicestests/src/com/android/server/rollback/RollbackStoreTest.java b/services/tests/servicestests/src/com/android/server/rollback/RollbackStoreTest.java
index 64d05f0..102d5bb 100644
--- a/services/tests/servicestests/src/com/android/server/rollback/RollbackStoreTest.java
+++ b/services/tests/servicestests/src/com/android/server/rollback/RollbackStoreTest.java
@@ -21,6 +21,7 @@
 import android.content.pm.VersionedPackage;
 import android.content.rollback.PackageRollbackInfo;
 import android.util.IntArray;
+import android.util.SparseIntArray;
 import android.util.SparseLongArray;
 
 import com.google.common.truth.Correspondence;
@@ -83,7 +84,7 @@
                 }
             };
 
-    private static final String JSON_ROLLBACK = "{'info':{'rollbackId':123,'packages':"
+    private static final String JSON_ROLLBACK_NO_EXT = "{'info':{'rollbackId':123,'packages':"
             + "[{'versionRolledBackFrom':{'packageName':'blah','longVersionCode':55},"
             + "'versionRolledBackTo':{'packageName':'blah1','longVersionCode':50},'pendingBackups':"
             + "[59,1245,124544],'pendingRestores':[{'userId':498,'appId':32322,'seInfo':'wombles'},"
@@ -103,6 +104,28 @@
             + "'restoreUserDataInProgress':true, 'userId':0,"
             + "'installerPackageName':'some.installer'}";
 
+    private static final String JSON_ROLLBACK = "{'info':{'rollbackId':123,'packages':"
+            + "[{'versionRolledBackFrom':{'packageName':'blah','longVersionCode':55},"
+            + "'versionRolledBackTo':{'packageName':'blah1','longVersionCode':50},'pendingBackups':"
+            + "[59,1245,124544],'pendingRestores':[{'userId':498,'appId':32322,'seInfo':'wombles'},"
+            + "{'userId':-895,'appId':1,'seInfo':'pingu'}],'isApex':false,'isApkInApex':false,"
+            + "'installedUsers':"
+            + "[498468432,1111,98464],'ceSnapshotInodes':[{'userId':1,'ceSnapshotInode':-6},"
+            + "{'userId':2222,'ceSnapshotInode':81641654445},{'userId':546546,"
+            + "'ceSnapshotInode':345689375}]},{'versionRolledBackFrom':{'packageName':'chips',"
+            + "'longVersionCode':28},'versionRolledBackTo':{'packageName':'com.chips.test',"
+            + "'longVersionCode':48},'pendingBackups':[5],'pendingRestores':[{'userId':18,"
+            + "'appId':-12,'seInfo':''}],'isApex':false,'isApkInApex':false,"
+            + "'installedUsers':[55,79],"
+            + "'ceSnapshotInodes':[]}],'isStaged':false,'causePackages':[{'packageName':'hello',"
+            + "'longVersionCode':23},{'packageName':'something','longVersionCode':999}],"
+            + "'committedSessionId':45654465},'timestamp':'2019-10-01T12:29:08.855Z',"
+            + "'stagedSessionId':-1,'state':'enabling','apkSessionId':-1,"
+            + "'restoreUserDataInProgress':true, 'userId':0,"
+            + "'installerPackageName':'some.installer',"
+            + "'extensionVersions':[{'sdkVersion':5,'extensionVersion':25},"
+            + "{'sdkVersion':30,'extensionVersion':71}]}";
+
     @Rule
     public TemporaryFolder mFolder = new TemporaryFolder();
 
@@ -119,7 +142,10 @@
 
     @Test
     public void createNonStaged() {
-        Rollback rollback = mRollbackStore.createNonStagedRollback(ID, USER, INSTALLER, null);
+        SparseIntArray extensionVersions = new SparseIntArray();
+        extensionVersions.put(30, 71);
+        Rollback rollback = mRollbackStore.createNonStagedRollback(
+                ID, USER, INSTALLER, null, extensionVersions);
 
         assertThat(rollback.getBackupDir().getAbsolutePath())
                 .isEqualTo(mFolder.getRoot().getAbsolutePath() + "/" + ID);
@@ -128,11 +154,16 @@
         assertThat(rollback.info.getRollbackId()).isEqualTo(ID);
         assertThat(rollback.info.getPackages()).isEmpty();
         assertThat(rollback.isEnabling()).isTrue();
+        assertThat(rollback.getExtensionVersions().toString())
+                .isEqualTo(extensionVersions.toString());
     }
 
     @Test
     public void createStaged() {
-        Rollback rollback = mRollbackStore.createStagedRollback(ID, 897, USER, INSTALLER, null);
+        SparseIntArray extensionVersions = new SparseIntArray();
+        extensionVersions.put(30, 71);
+        Rollback rollback = mRollbackStore.createStagedRollback(
+                ID, 897, USER, INSTALLER, null, extensionVersions);
 
         assertThat(rollback.getBackupDir().getAbsolutePath())
                 .isEqualTo(mFolder.getRoot().getAbsolutePath() + "/" + ID);
@@ -143,11 +174,17 @@
         assertThat(rollback.info.getRollbackId()).isEqualTo(ID);
         assertThat(rollback.info.getPackages()).isEmpty();
         assertThat(rollback.isEnabling()).isTrue();
+        assertThat(rollback.getExtensionVersions().toString())
+                .isEqualTo(extensionVersions.toString());
     }
 
     @Test
     public void saveAndLoadRollback() {
-        Rollback origRb = mRollbackStore.createNonStagedRollback(ID, USER, INSTALLER, null);
+        SparseIntArray extensionVersions = new SparseIntArray();
+        extensionVersions.put(5, 25);
+        extensionVersions.put(30, 71);
+        Rollback origRb = mRollbackStore.createNonStagedRollback(
+                ID, USER, INSTALLER, null, extensionVersions);
 
         origRb.setRestoreUserDataInProgress(true);
         origRb.info.getCausePackages().add(new VersionedPackage("com.made.up", 2));
@@ -196,8 +233,62 @@
     }
 
     @Test
+    public void loadFromJsonNoExtensionVersions() throws Exception {
+        Rollback expectedRb = mRollbackStore.createNonStagedRollback(
+                ID, USER, INSTALLER, null, new SparseIntArray(0));
+
+        expectedRb.setTimestamp(Instant.parse("2019-10-01T12:29:08.855Z"));
+        expectedRb.setRestoreUserDataInProgress(true);
+        expectedRb.info.getCausePackages().add(new VersionedPackage("hello", 23));
+        expectedRb.info.getCausePackages().add(new VersionedPackage("something", 999));
+        expectedRb.info.setCommittedSessionId(45654465);
+
+        PackageRollbackInfo pkgInfo1 = new PackageRollbackInfo(new VersionedPackage("blah", 55),
+                new VersionedPackage("blah1", 50), new IntArray(), new ArrayList<>(),
+                false, false, new IntArray(), new SparseLongArray());
+        pkgInfo1.getPendingBackups().add(59);
+        pkgInfo1.getPendingBackups().add(1245);
+        pkgInfo1.getPendingBackups().add(124544);
+        pkgInfo1.getCeSnapshotInodes().put(546546, 345689375);
+        pkgInfo1.getCeSnapshotInodes().put(2222, 81641654445L);
+        pkgInfo1.getCeSnapshotInodes().put(1, -6);
+
+        pkgInfo1.getPendingRestores().add(
+                new PackageRollbackInfo.RestoreInfo(498, 32322, "wombles"));
+        pkgInfo1.getPendingRestores().add(
+                new PackageRollbackInfo.RestoreInfo(-895, 1, "pingu"));
+
+        pkgInfo1.getSnapshottedUsers().add(498468432);
+        pkgInfo1.getSnapshottedUsers().add(1111);
+        pkgInfo1.getSnapshottedUsers().add(98464);
+
+        PackageRollbackInfo pkgInfo2 = new PackageRollbackInfo(new VersionedPackage("chips", 28),
+                new VersionedPackage("com.chips.test", 48), new IntArray(), new ArrayList<>(),
+                false, false, new IntArray(), new SparseLongArray());
+        pkgInfo2.getPendingBackups().add(5);
+
+        pkgInfo2.getPendingRestores().add(
+                new PackageRollbackInfo.RestoreInfo(18, -12, ""));
+
+        pkgInfo2.getSnapshottedUsers().add(55);
+        pkgInfo2.getSnapshottedUsers().add(79);
+
+        expectedRb.info.getPackages().add(pkgInfo1);
+        expectedRb.info.getPackages().add(pkgInfo2);
+
+        Rollback parsedRb = RollbackStore.rollbackFromJson(
+                new JSONObject(JSON_ROLLBACK_NO_EXT), expectedRb.getBackupDir());
+
+        assertRollbacksAreEquivalent(parsedRb, expectedRb);
+    }
+
+    @Test
     public void loadFromJson() throws Exception {
-        Rollback expectedRb = mRollbackStore.createNonStagedRollback(ID, USER, INSTALLER, null);
+        SparseIntArray extensionVersions = new SparseIntArray();
+        extensionVersions.put(5, 25);
+        extensionVersions.put(30, 71);
+        Rollback expectedRb = mRollbackStore.createNonStagedRollback(
+                ID, USER, INSTALLER, null, extensionVersions);
 
         expectedRb.setTimestamp(Instant.parse("2019-10-01T12:29:08.855Z"));
         expectedRb.setRestoreUserDataInProgress(true);
@@ -246,7 +337,8 @@
 
     @Test
     public void saveAndDelete() {
-        Rollback rollback = mRollbackStore.createNonStagedRollback(ID, USER, INSTALLER, null);
+        Rollback rollback = mRollbackStore.createNonStagedRollback(
+                ID, USER, INSTALLER, null, new SparseIntArray(0));
 
         RollbackStore.saveRollback(rollback);
 
@@ -294,6 +386,13 @@
 
         assertThat(a.getUserId()).isEqualTo(b.getUserId());
         assertThat(a.getInstallerPackageName()).isEqualTo(b.getInstallerPackageName());
+
+        if (a.getExtensionVersions() == null) {
+            assertThat(b.getExtensionVersions()).isNull();
+        } else {
+            assertThat(b.getExtensionVersions().toString())
+                    .isEqualTo(a.getExtensionVersions().toString());
+        }
     }
 
     private void assertPackageRollbacksAreEquivalent(PackageRollbackInfo b, PackageRollbackInfo a) {
diff --git a/services/tests/servicestests/src/com/android/server/rollback/RollbackUnitTest.java b/services/tests/servicestests/src/com/android/server/rollback/RollbackUnitTest.java
index 1a6c6b4..8667801 100644
--- a/services/tests/servicestests/src/com/android/server/rollback/RollbackUnitTest.java
+++ b/services/tests/servicestests/src/com/android/server/rollback/RollbackUnitTest.java
@@ -24,12 +24,18 @@
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
+import android.content.pm.PackageManagerInternal;
 import android.content.pm.VersionedPackage;
 import android.content.rollback.PackageRollbackInfo;
 import android.util.IntArray;
+import android.util.SparseIntArray;
 import android.util.SparseLongArray;
 
+import com.android.server.pm.PackageList;
+import com.android.server.pm.parsing.pkg.PackageImpl;
+
 import com.google.common.collect.Range;
 
 import org.junit.Before;
@@ -44,6 +50,7 @@
 import java.time.Instant;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.List;
 
 @RunWith(JUnit4.class)
 public class RollbackUnitTest {
@@ -56,10 +63,17 @@
     private static final String INSTALLER = "some.installer";
 
     @Mock private AppDataRollbackHelper mMockDataHelper;
+    @Mock private PackageManagerInternal mMockPmi;
+
+    private List<String> mPackages;
+    private PackageList mPackageList;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
+        mPackages = new ArrayList<>();
+        mPackageList = new PackageList(mPackages, null);
+        when(mMockPmi.getPackageList()).thenReturn(mPackageList);
     }
 
     @Test
@@ -317,7 +331,7 @@
     public void notifySessionWithSuccess() {
         int[] sessionIds = new int[]{ 7777, 8888 };
         Rollback rollback = new Rollback(123, new File("/test/testing"), -1, USER, INSTALLER,
-                sessionIds);
+                sessionIds, new SparseIntArray(0));
         // The 1st invocation returns false because not all child sessions are notified.
         assertThat(rollback.notifySessionWithSuccess()).isFalse();
         // The 2nd invocation returns true because now all child sessions are notified.
@@ -328,7 +342,7 @@
     public void allPackagesEnabled() {
         int[] sessionIds = new int[]{ 7777, 8888 };
         Rollback rollback = new Rollback(123, new File("/test/testing"), -1, USER, INSTALLER,
-                sessionIds);
+                sessionIds, new SparseIntArray(0));
         // #allPackagesEnabled returns false when 1 out of 2 packages is enabled.
         rollback.info.getPackages().add(newPkgInfoFor(PKG_1, 12, 10, false));
         assertThat(rollback.allPackagesEnabled()).isFalse();
@@ -340,6 +354,85 @@
         assertThat(rollback.allPackagesEnabled()).isTrue();
     }
 
+    @Test
+    public void minExtVerConstraintNotViolated() {
+        addPkgWithMinExtVersions("pkg0", new int[][] {{30, 4}});
+        addPkgWithMinExtVersions("pkg1", new int[][] {});
+        addPkgWithMinExtVersions("pkg2", new int[][] {{30, 5}, {31, 1}});
+        addPkgWithMinExtVersions("pkg3", new int[][] {{31, 7}, {32, 15}});
+
+        assertThat(Rollback.extensionVersionReductionWouldViolateConstraint(
+                sparseArrayFrom(new int[][] {{30, 5}}), mMockPmi)).isFalse();
+    }
+
+    @Test
+    public void minExtVerConstraintExists() {
+        addPkgWithMinExtVersions("pkg0", null);
+        addPkgWithMinExtVersions("pkg1", new int[][] {{30, 5}, {31, 1}});
+
+        assertThat(Rollback.extensionVersionReductionWouldViolateConstraint(
+                sparseArrayFrom(new int[][] {{30, 4}}), mMockPmi)).isTrue();
+    }
+
+    @Test
+    public void minExtVerConstraintExistsOnOnePackage() {
+        addPkgWithMinExtVersions("pkg0", new int[][] {{30, 4}});
+        addPkgWithMinExtVersions("pkg1", new int[][] {});
+        addPkgWithMinExtVersions("pkg2", new int[][] {{30, 5}, {31, 1}});
+        addPkgWithMinExtVersions("pkg3", new int[][] {{31, 7}, {32, 15}});
+
+        assertThat(Rollback.extensionVersionReductionWouldViolateConstraint(
+                sparseArrayFrom(new int[][] {{30, 4}}), mMockPmi)).isTrue();
+    }
+
+    @Test
+    public void minExtVerConstraintDifferentSdk() {
+        addPkgWithMinExtVersions("pkg0", null);
+        addPkgWithMinExtVersions("pkg1", new int[][] {{30, 5}, {31, 1}});
+
+        assertThat(Rollback.extensionVersionReductionWouldViolateConstraint(
+                sparseArrayFrom(new int[][] {{32, 4}}), mMockPmi)).isFalse();
+    }
+
+    @Test
+    public void minExtVerConstraintNoneRecordedOnRollback() {
+        addPkgWithMinExtVersions("pkg0", new int[][] {{30, 4}});
+        addPkgWithMinExtVersions("pkg1", new int[][] {});
+        addPkgWithMinExtVersions("pkg2", new int[][] {{30, 5}, {31, 1}});
+        addPkgWithMinExtVersions("pkg3", new int[][] {{31, 7}, {32, 15}});
+
+        assertThat(Rollback.extensionVersionReductionWouldViolateConstraint(
+                new SparseIntArray(0), mMockPmi)).isFalse();
+    }
+
+    @Test
+    public void minExtVerConstraintNoMinsRecorded() {
+        addPkgWithMinExtVersions("pkg0", null);
+        addPkgWithMinExtVersions("pkg1", null);
+
+        assertThat(Rollback.extensionVersionReductionWouldViolateConstraint(
+                sparseArrayFrom(new int[][] {{32, 4}}), mMockPmi)).isFalse();
+    }
+
+    private void addPkgWithMinExtVersions(String pkg, int[][] minExtVersions) {
+        mPackages.add(pkg);
+        PackageImpl pkgImpl = new PackageImpl(pkg, "baseCodePath", "codePath", null, false);
+        pkgImpl.setMinExtensionVersions(sparseArrayFrom(minExtVersions));
+
+        when(mMockPmi.getPackage(pkg)).thenReturn(pkgImpl);
+    }
+
+    private static SparseIntArray sparseArrayFrom(int[][] arr) {
+        if (arr == null) {
+            return null;
+        }
+        SparseIntArray result = new SparseIntArray(arr.length);
+        for (int[] pair : arr) {
+            result.put(pair[0], pair[1]);
+        }
+        return result;
+    }
+
     private static PackageRollbackInfo newPkgInfoFor(
             String packageName, long fromVersion, long toVersion, boolean isApex) {
         return new PackageRollbackInfo(new VersionedPackage(packageName, fromVersion),
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java b/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java
index 229bd3f..38b71b7 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java
@@ -15,10 +15,13 @@
  */
 package com.android.server.notification;
 
-import static android.app.NotificationChannel.USER_LOCKED_ALLOW_BUBBLE;
+import static android.app.NotificationChannel.ALLOW_BUBBLE_OFF;
+import static android.app.NotificationChannel.ALLOW_BUBBLE_ON;
+import static android.app.NotificationChannel.DEFAULT_ALLOW_BUBBLE;
 import static android.app.NotificationManager.BUBBLE_PREFERENCE_ALL;
 import static android.app.NotificationManager.BUBBLE_PREFERENCE_NONE;
 import static android.app.NotificationManager.BUBBLE_PREFERENCE_SELECTED;
+import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
 import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE;
 import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE;
 
@@ -59,6 +62,7 @@
 @RunWith(AndroidJUnit4.class)
 public class BubbleExtractorTest extends UiServiceTestCase {
 
+    private static final String CHANNEL_ID = "bubbleExtractorChannelId";
     private static final String SHORTCUT_ID = "shortcut";
     private static final String PKG = "com.android.server.notification";
     private static final String TAG = null;
@@ -68,12 +72,11 @@
     UserHandle mUser = UserHandle.of(ActivityManager.getCurrentUser());
 
     BubbleExtractor mBubbleExtractor;
+    NotificationChannel mChannel;
 
     @Mock
     RankingConfig mConfig;
     @Mock
-    NotificationChannel mChannel;
-    @Mock
     Notification.BubbleMetadata mBubbleMetadata;
     @Mock
     PendingIntent mPendingIntent;
@@ -95,7 +98,8 @@
         mBubbleExtractor.setShortcutHelper(mShortcutHelper);
         mBubbleExtractor.setActivityManager(mActivityManager);
 
-        when(mConfig.getNotificationChannel(PKG, UID, "a", false)).thenReturn(mChannel);
+        mChannel = new NotificationChannel(CHANNEL_ID, CHANNEL_ID, IMPORTANCE_DEFAULT);
+        when(mConfig.getNotificationChannel(PKG, UID, CHANNEL_ID, false)).thenReturn(mChannel);
         when(mShortcutInfo.getId()).thenReturn(SHORTCUT_ID);
     }
 
@@ -147,10 +151,10 @@
         when(mShortcutHelper.getValidShortcutInfo(SHORTCUT_ID, PKG, mUser)).thenReturn(answer);
     }
 
-    void setUpBubblesEnabled(boolean feature, int app, boolean channel) {
+    void setUpBubblesEnabled(boolean feature, int app, int channel) {
         when(mConfig.bubblesEnabled()).thenReturn(feature);
         when(mConfig.getBubblePreference(anyString(), anyInt())).thenReturn(app);
-        when(mChannel.canBubble()).thenReturn(channel);
+        mChannel.setAllowBubbles(channel);
     }
 
     //
@@ -161,9 +165,45 @@
     public void testAppYesChannelNo() {
         setUpBubblesEnabled(true /* feature */,
                 BUBBLE_PREFERENCE_ALL /* app */,
-                false /* channel */);
+                ALLOW_BUBBLE_OFF /* channel */);
         NotificationRecord r = getNotificationRecord(true /* bubble */);
-        when(mChannel.getUserLockedFields()).thenReturn(USER_LOCKED_ALLOW_BUBBLE);
+        mBubbleExtractor.process(r);
+
+        assertFalse(r.canBubble());
+        assertFalse(r.getNotification().isBubbleNotification());
+    }
+
+    @Test
+    public void testAppYesChannelDefault() {
+        setUpBubblesEnabled(true /* feature */,
+                BUBBLE_PREFERENCE_ALL /* app */,
+                DEFAULT_ALLOW_BUBBLE /* channel */);
+        NotificationRecord r = getNotificationRecord(true /* bubble */);
+
+        mBubbleExtractor.process(r);
+
+        assertTrue(r.canBubble());
+    }
+
+    @Test
+    public void testAppYesChannelYes() {
+        setUpBubblesEnabled(true /* feature */,
+                BUBBLE_PREFERENCE_ALL /* app */,
+                ALLOW_BUBBLE_ON /* channel */);
+        NotificationRecord r = getNotificationRecord(true /* bubble */);
+
+        mBubbleExtractor.process(r);
+
+        assertTrue(r.canBubble());
+    }
+
+    @Test
+    public void testAppYesChannelYesFeatureNo() {
+        setUpBubblesEnabled(false /* feature */,
+                BUBBLE_PREFERENCE_ALL /* app */,
+                ALLOW_BUBBLE_ON /* channel */);
+        NotificationRecord r = getNotificationRecord(true /* bubble */);
+
         mBubbleExtractor.process(r);
 
         assertFalse(r.canBubble());
@@ -174,7 +214,7 @@
     public void testAppNoChannelYes() throws Exception {
         setUpBubblesEnabled(true /* feature */,
                 BUBBLE_PREFERENCE_NONE /* app */,
-                true /* channel */);
+                ALLOW_BUBBLE_ON /* channel */);
         NotificationRecord r = getNotificationRecord(true /* bubble */);
 
         mBubbleExtractor.process(r);
@@ -184,22 +224,10 @@
     }
 
     @Test
-    public void testAppYesChannelYes() {
-        setUpBubblesEnabled(true /* feature */,
-                BUBBLE_PREFERENCE_ALL /* app */,
-                true /* channel */);
-        NotificationRecord r = getNotificationRecord(true /* bubble */);
-
-        mBubbleExtractor.process(r);
-
-        assertTrue(r.canBubble());
-    }
-
-    @Test
-    public void testAppNoChannelNo() {
+    public void testAppNoChannelDefault() {
         setUpBubblesEnabled(true /* feature */,
                 BUBBLE_PREFERENCE_NONE /* app */,
-                false /* channel */);
+                DEFAULT_ALLOW_BUBBLE /* channel */);
         NotificationRecord r = getNotificationRecord(true /* bubble */);
 
         mBubbleExtractor.process(r);
@@ -209,10 +237,10 @@
     }
 
     @Test
-    public void testAppYesChannelYesUserNo() {
-        setUpBubblesEnabled(false /* feature */,
-                BUBBLE_PREFERENCE_ALL /* app */,
-                true /* channel */);
+    public void testAppSelectedChannelDefault() {
+        setUpBubblesEnabled(true /* feature */,
+                BUBBLE_PREFERENCE_SELECTED /* app */,
+                DEFAULT_ALLOW_BUBBLE /* channel */);
         NotificationRecord r = getNotificationRecord(true /* bubble */);
 
         mBubbleExtractor.process(r);
@@ -225,7 +253,7 @@
     public void testAppSelectedChannelNo() {
         setUpBubblesEnabled(true /* feature */,
                 BUBBLE_PREFERENCE_SELECTED /* app */,
-                false /* channel */);
+                ALLOW_BUBBLE_OFF /* channel */);
         NotificationRecord r = getNotificationRecord(true /* bubble */);
 
         mBubbleExtractor.process(r);
@@ -238,15 +266,27 @@
     public void testAppSeletedChannelYes() {
         setUpBubblesEnabled(true /* feature */,
                 BUBBLE_PREFERENCE_SELECTED /* app */,
-                true /* channel */);
+                ALLOW_BUBBLE_ON /* channel */);
         NotificationRecord r = getNotificationRecord(true /* bubble */);
-        when(mChannel.getUserLockedFields()).thenReturn(USER_LOCKED_ALLOW_BUBBLE);
 
         mBubbleExtractor.process(r);
 
         assertTrue(r.canBubble());
     }
 
+    @Test
+    public void testAppSeletedChannelYesFeatureNo() {
+        setUpBubblesEnabled(false /* feature */,
+                BUBBLE_PREFERENCE_SELECTED /* app */,
+                ALLOW_BUBBLE_ON /* channel */);
+        NotificationRecord r = getNotificationRecord(true /* bubble */);
+
+        mBubbleExtractor.process(r);
+
+        assertFalse(r.canBubble());
+        assertFalse(r.getNotification().isBubbleNotification());
+    }
+
     //
     // Tests for flagging it as a bubble.
     //
@@ -255,7 +295,7 @@
     public void testFlagBubble_false_previouslyRemoved() {
         setUpBubblesEnabled(true /* feature */,
                 BUBBLE_PREFERENCE_ALL /* app */,
-                true /* channel */);
+                DEFAULT_ALLOW_BUBBLE /* channel */);
         when(mActivityManager.isLowRamDevice()).thenReturn(false);
         setUpShortcutBubble(true /* isValid */);
 
@@ -272,7 +312,7 @@
     public void testFlagBubble_true_shortcutBubble() {
         setUpBubblesEnabled(true /* feature */,
                 BUBBLE_PREFERENCE_ALL /* app */,
-                true /* channel */);
+                DEFAULT_ALLOW_BUBBLE /* channel */);
         when(mActivityManager.isLowRamDevice()).thenReturn(false);
         setUpShortcutBubble(true /* isValid */);
 
@@ -287,7 +327,7 @@
     public void testFlagBubble_true_intentBubble() {
         setUpBubblesEnabled(true /* feature */,
                 BUBBLE_PREFERENCE_ALL /* app */,
-                true /* channel */);
+                DEFAULT_ALLOW_BUBBLE /* channel */);
         when(mActivityManager.isLowRamDevice()).thenReturn(false);
         setUpIntentBubble(true /* isValid */);
 
@@ -302,7 +342,7 @@
     public void testFlagBubble_false_noIntentInvalidShortcut() {
         setUpBubblesEnabled(true /* feature */,
                 BUBBLE_PREFERENCE_ALL /* app */,
-                true /* channel */);
+                DEFAULT_ALLOW_BUBBLE /* channel */);
         when(mActivityManager.isLowRamDevice()).thenReturn(false);
         setUpShortcutBubble(false /* isValid */);
 
@@ -318,7 +358,7 @@
     public void testFlagBubble_false_invalidIntentNoShortcut() {
         setUpBubblesEnabled(true /* feature */,
                 BUBBLE_PREFERENCE_ALL /* app */,
-                true /* channel */);
+                DEFAULT_ALLOW_BUBBLE /* channel */);
         when(mActivityManager.isLowRamDevice()).thenReturn(false);
         setUpIntentBubble(false /* isValid */);
 
@@ -334,7 +374,7 @@
     public void testFlagBubble_false_noIntentNoShortcut() {
         setUpBubblesEnabled(true /* feature */,
                 BUBBLE_PREFERENCE_ALL /* app */,
-                true /* channel */);
+                DEFAULT_ALLOW_BUBBLE /* channel */);
         when(mActivityManager.isLowRamDevice()).thenReturn(false);
 
         // Shortcut here is for the notification not the bubble
@@ -349,7 +389,7 @@
     public void testFlagBubble_false_noMetadata() {
         setUpBubblesEnabled(true /* feature */,
                 BUBBLE_PREFERENCE_ALL /* app */,
-                true /* channel */);
+                DEFAULT_ALLOW_BUBBLE /* channel */);
         when(mActivityManager.isLowRamDevice()).thenReturn(false);
 
         NotificationRecord r = getNotificationRecord(false /* bubble */);
@@ -363,7 +403,7 @@
     public void testFlagBubble_false_notConversation() {
         setUpBubblesEnabled(true /* feature */,
                 BUBBLE_PREFERENCE_ALL /* app */,
-                true /* channel */);
+                DEFAULT_ALLOW_BUBBLE /* channel */);
         when(mActivityManager.isLowRamDevice()).thenReturn(false);
         setUpIntentBubble(true /* isValid */);
 
@@ -382,7 +422,7 @@
     public void testFlagBubble_false_lowRamDevice() {
         setUpBubblesEnabled(true /* feature */,
                 BUBBLE_PREFERENCE_ALL /* app */,
-                true /* channel */);
+                DEFAULT_ALLOW_BUBBLE /* channel */);
         when(mActivityManager.isLowRamDevice()).thenReturn(true);
         setUpIntentBubble(true /* isValid */);
 
@@ -397,7 +437,7 @@
     public void testFlagBubble_false_noIntent() {
         setUpBubblesEnabled(true /* feature */,
                 BUBBLE_PREFERENCE_ALL /* app */,
-                true /* channel */);
+                DEFAULT_ALLOW_BUBBLE /* channel */);
         when(mActivityManager.isLowRamDevice()).thenReturn(true);
         setUpIntentBubble(true /* isValid */);
         when(mPendingIntent.getIntent()).thenReturn(null);
@@ -413,7 +453,7 @@
     public void testFlagBubble_false_noActivityInfo() {
         setUpBubblesEnabled(true /* feature */,
                 BUBBLE_PREFERENCE_ALL /* app */,
-                true /* channel */);
+                DEFAULT_ALLOW_BUBBLE /* channel */);
         when(mActivityManager.isLowRamDevice()).thenReturn(true);
         setUpIntentBubble(true /* isValid */);
         when(mPendingIntent.getIntent()).thenReturn(mIntent);
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationChannelExtractorTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationChannelExtractorTest.java
index a23ade6..77ce2f0 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationChannelExtractorTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationChannelExtractorTest.java
@@ -76,8 +76,6 @@
 
     @Test
     public void testInvalidShortcutFlagEnabled_looksUpCorrectChannel() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.REQUIRE_SHORTCUTS_FOR_CONVERSATIONS, 0);
 
         NotificationChannelExtractor extractor = new NotificationChannelExtractor();
         extractor.setConfig(mConfig);
@@ -96,7 +94,7 @@
         NotificationChannel updatedChannel =
                 new NotificationChannel("a", "", IMPORTANCE_HIGH);
         when(mConfig.getConversationNotificationChannel(
-                any(), anyInt(), eq("a"), eq(r.getSbn().getShortcutId(mContext)),
+                any(), anyInt(), eq("a"), eq(r.getSbn().getShortcutId()),
                 eq(true), eq(false)))
                 .thenReturn(updatedChannel);
 
@@ -106,8 +104,6 @@
 
     @Test
     public void testInvalidShortcutFlagDisabled_looksUpCorrectChannel() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.REQUIRE_SHORTCUTS_FOR_CONVERSATIONS, 1);
 
         NotificationChannelExtractor extractor = new NotificationChannelExtractor();
         extractor.setConfig(mConfig);
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
index 41748b8..d5ecfeb 100755
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
@@ -6589,14 +6589,45 @@
     }
 
     @Test
-    public void testRecordMessages() throws RemoteException {
+    public void testRecordMessages_invalidMsg() throws RemoteException {
         NotificationRecord nr =
                 generateMessageBubbleNotifRecord(mTestNotificationChannel,
-                        "testRecordMessages");
+                        "testRecordMessages_invalidMsg");
         mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
                 nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         assertTrue(mBinderService.hasSentMessage(PKG, mUid));
     }
+
+    @Test
+    public void testRecordMessages_validMsg() throws RemoteException {
+        // Messaging notification with shortcut info
+        Notification.BubbleMetadata metadata =
+                new Notification.BubbleMetadata.Builder("id").build();
+        Notification.Builder nb = getMessageStyleNotifBuilder(false /* addDefaultMetadata */,
+                null /* groupKey */, false /* isSummary */);
+        nb.setShortcutId("id");
+        nb.setBubbleMetadata(metadata);
+        StatusBarNotification sbn = new StatusBarNotification(PKG, PKG, 1,
+                "testRecordMessages_validMsg", mUid, 0, nb.build(), new UserHandle(mUid), null, 0);
+        NotificationRecord nr = new NotificationRecord(mContext, sbn, mTestNotificationChannel);
+
+        // Pretend the shortcut exists
+        List<ShortcutInfo> shortcutInfos = new ArrayList<>();
+        ShortcutInfo info = mock(ShortcutInfo.class);
+        when(info.getPackage()).thenReturn(PKG);
+        when(info.getId()).thenReturn("id");
+        when(info.getUserId()).thenReturn(USER_SYSTEM);
+        when(info.isLongLived()).thenReturn(true);
+        when(info.isEnabled()).thenReturn(true);
+        shortcutInfos.add(info);
+        when(mLauncherApps.getShortcuts(any(), any())).thenReturn(shortcutInfos);
+
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
+        waitForIdle();
+
+        assertFalse(mBinderService.hasSentMessage(PKG, mUid));
+    }
 }
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordTest.java
index 3139bfa..9f593ce 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordTest.java
@@ -123,8 +123,6 @@
         when(mMockContext.getResources()).thenReturn(getContext().getResources());
         when(mMockContext.getPackageManager()).thenReturn(mPm);
         when(mMockContext.getContentResolver()).thenReturn(mContentResolver);
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.REQUIRE_SHORTCUTS_FOR_CONVERSATIONS, 1);
         ApplicationInfo appInfo = new ApplicationInfo();
         appInfo.targetSdkVersion = Build.VERSION_CODES.O;
         when(mMockContext.getApplicationInfo()).thenReturn(appInfo);
@@ -1127,18 +1125,7 @@
     }
 
     @Test
-    public void testIsConversation_nullShortcut() {
-        StatusBarNotification sbn = getMessagingStyleNotification();
-        NotificationRecord record = new NotificationRecord(mMockContext, sbn, channel);
-        record.setShortcutInfo(null);
-
-        assertFalse(record.isConversation());
-    }
-
-    @Test
-    public void testIsConversation_bypassShortcutFlagEnabled() {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.REQUIRE_SHORTCUTS_FOR_CONVERSATIONS, 0);
+    public void testIsConversation_noShortcut() {
         StatusBarNotification sbn = getMessagingStyleNotification();
         NotificationRecord record = new NotificationRecord(mMockContext, sbn, channel);
         record.setShortcutInfo(null);
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
index e11392b..4320f1c 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
@@ -3023,31 +3023,7 @@
     }
 
     @Test
-    public void testPlaceholderConversationId_shortcutNotRequired() throws Exception {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.REQUIRE_SHORTCUTS_FOR_CONVERSATIONS, 0);
-
-        mHelper = new PreferencesHelper(getContext(), mPm, mHandler, mMockZenModeHelper, mLogger,
-                mAppOpsManager);
-
-        final String xml = "<ranking version=\"1\">\n"
-                + "<package name=\"" + PKG_O + "\" uid=\"" + UID_O + "\" >\n"
-                + "<channel id=\"id\" name=\"hi\" importance=\"3\" conv_id=\"foo:placeholder_id\"/>"
-                + "</package>"
-                + "</ranking>";
-        XmlPullParser parser = Xml.newPullParser();
-        parser.setInput(new BufferedInputStream(new ByteArrayInputStream(xml.getBytes())),
-                null);
-        parser.nextTag();
-        mHelper.readXml(parser, false, UserHandle.USER_ALL);
-
-        assertNotNull(mHelper.getNotificationChannel(PKG_O, UID_O, "id", true));
-    }
-
-    @Test
     public void testPlaceholderConversationId_shortcutRequired() throws Exception {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.REQUIRE_SHORTCUTS_FOR_CONVERSATIONS, 1);
         mHelper = new PreferencesHelper(getContext(), mPm, mHandler, mMockZenModeHelper, mLogger,
                 mAppOpsManager);
 
@@ -3067,8 +3043,6 @@
 
     @Test
     public void testNormalConversationId_shortcutRequired() throws Exception {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.REQUIRE_SHORTCUTS_FOR_CONVERSATIONS, 1);
         mHelper = new PreferencesHelper(getContext(), mPm, mHandler, mMockZenModeHelper, mLogger,
                 mAppOpsManager);
 
@@ -3088,8 +3062,6 @@
 
     @Test
     public void testNoConversationId_shortcutRequired() throws Exception {
-        Settings.Global.putInt(mContext.getContentResolver(),
-                Settings.Global.REQUIRE_SHORTCUTS_FOR_CONVERSATIONS, 1);
         mHelper = new PreferencesHelper(getContext(), mPm, mHandler, mMockZenModeHelper, mLogger,
                 mAppOpsManager);
 
@@ -3276,6 +3248,19 @@
     }
 
     @Test
+    public void testGetConversations_noDemoted() {
+        NotificationChannel parent = new NotificationChannel("parent", "p", 1);
+        mHelper.createNotificationChannel(PKG_O, UID_O, parent, true, false);
+        NotificationChannel channel =
+                new NotificationChannel("convo", "convo", IMPORTANCE_DEFAULT);
+        channel.setConversationId("parent", "convo");
+        channel.setDemoted(true);
+        mHelper.createNotificationChannel(PKG_O, UID_O, channel, true, false);
+
+        assertThat(mHelper.getConversations(PKG_O, UID_O)).isEmpty();
+    }
+
+    @Test
     public void testGetConversations() {
         NotificationChannelGroup group = new NotificationChannelGroup("acct", "account_name");
         mHelper.createNotificationChannelGroup(PKG_O, UID_O, group, true);
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ShortcutHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ShortcutHelperTest.java
index 3095c87..eb2d9fe 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/ShortcutHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/ShortcutHelperTest.java
@@ -40,6 +40,7 @@
 import com.android.server.UiServiceTestCase;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
@@ -184,6 +185,7 @@
         assertThat(mShortcutHelper.getValidShortcutInfo("a", "p", UserHandle.SYSTEM)).isNull();
     }
 
+    @Ignore("b/155016294")
     @Test
     public void testGetValidShortcutInfo_notSharingShortcut() {
         ShortcutInfo si = mock(ShortcutInfo.class);
@@ -229,8 +231,9 @@
         ArrayList<ShortcutInfo> shortcuts = new ArrayList<>();
         shortcuts.add(si);
         when(mLauncherApps.getShortcuts(any(), any())).thenReturn(shortcuts);
-        when(mShortcutServiceInternal.isSharingShortcut(anyInt(), anyString(), anyString(),
-                anyString(), anyInt(), any())).thenReturn(true);
+        // TODO: b/155016294
+        //when(mShortcutServiceInternal.isSharingShortcut(anyInt(), anyString(), anyString(),
+         //       anyString(), anyInt(), any())).thenReturn(true);
 
         assertThat(mShortcutHelper.getValidShortcutInfo("a", "p", UserHandle.SYSTEM)).isSameAs(si);
     }
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
index 6a28918..8cfe96f 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
@@ -66,6 +66,7 @@
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.clearInvocations;
 import static org.mockito.Mockito.never;
 
 import android.app.ActivityOptions;
@@ -1083,6 +1084,46 @@
     }
 
     /**
+     * Verify that complete finish request for an activity which the resume activity is translucent
+     * must ensure the visibilities of activities being updated.
+     */
+    @Test
+    public void testCompleteFinishing_ensureActivitiesVisible() {
+        final ActivityRecord firstActivity = new ActivityBuilder(mService).setTask(mTask).build();
+        firstActivity.mVisibleRequested = false;
+        firstActivity.nowVisible = false;
+        firstActivity.setState(STOPPED, "true");
+
+        final ActivityRecord secondActivity = new ActivityBuilder(mService).setTask(mTask).build();
+        secondActivity.mVisibleRequested = true;
+        secondActivity.nowVisible = true;
+        secondActivity.setState(PAUSED, "true");
+
+        final ActivityRecord translucentActivity =
+                new ActivityBuilder(mService).setTask(mTask).build();
+        translucentActivity.mVisibleRequested = true;
+        translucentActivity.nowVisible = true;
+        translucentActivity.setState(RESUMED, "true");
+
+        doReturn(false).when(translucentActivity).occludesParent();
+
+        // Finish the second activity
+        secondActivity.finishing = true;
+        secondActivity.completeFinishing("test");
+        verify(secondActivity.getDisplay()).ensureActivitiesVisible(null /* starting */,
+                0 /* configChanges */ , false /* preserveWindows */,
+                true /* notifyClients */);
+
+        // Finish the first activity
+        firstActivity.finishing = true;
+        firstActivity.mVisibleRequested = true;
+        firstActivity.completeFinishing("test");
+        verify(firstActivity.getDisplay(), times(2)).ensureActivitiesVisible(null /* starting */,
+                0 /* configChanges */ , false /* preserveWindows */,
+                true /* notifyClients */);
+    }
+
+    /**
      * Verify destroy activity request completes successfully.
      */
     @Test
@@ -1362,6 +1403,7 @@
         final DisplayInfo rotatedInfo = mActivity.getFixedRotationTransformDisplayInfo();
         mActivity.finishFixedRotationTransform();
         final ScreenRotationAnimation rotationAnim = display.getRotationAnimation();
+        assertNotNull(rotationAnim);
         rotationAnim.setRotation(display.getPendingTransaction(), originalRotation);
 
         // Because the display doesn't rotate, the rotated activity needs to cancel the fixed
@@ -1369,8 +1411,18 @@
         verify(mActivity).onCancelFixedRotationTransform(rotatedInfo.rotation);
         assertTrue(mActivity.isFreezingScreen());
         assertFalse(displayRotation.isRotatingSeamlessly());
-        assertNotNull(rotationAnim);
         assertTrue(rotationAnim.isRotating());
+
+        // Simulate the remote rotation has completed and the configuration doesn't change, then
+        // the rotated activity should also be restored by clearing the transform.
+        displayRotation.updateRotationUnchecked(true /* forceUpdate */);
+        doReturn(false).when(displayRotation).isWaitingForRemoteRotation();
+        clearInvocations(mActivity);
+        display.mFixedRotationLaunchingApp = mActivity;
+        display.sendNewConfiguration();
+
+        assertNull(display.mFixedRotationLaunchingApp);
+        assertFalse(mActivity.hasFixedRotationTransform());
     }
 
     @Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java
index 6c209e4..5227f3c 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java
@@ -234,6 +234,25 @@
     }
 
     @Test
+    public void testRemoveOrganizedTask_UpdateStackReference() {
+        final ActivityStack rootHomeTask = mDefaultTaskDisplayArea.getRootHomeTask();
+        final ActivityRecord homeActivity = new ActivityBuilder(mService)
+                .setStack(rootHomeTask)
+                .setCreateTask(true)
+                .build();
+        final ActivityStack secondaryStack = (ActivityStack) WindowContainer.fromBinder(
+                mService.mTaskOrganizerController.createRootTask(rootHomeTask.getDisplayId(),
+                        WINDOWING_MODE_SPLIT_SCREEN_SECONDARY).token.asBinder());
+
+        rootHomeTask.reparent(secondaryStack, POSITION_TOP);
+        assertEquals(secondaryStack, rootHomeTask.getParent());
+
+        // This should call to {@link TaskDisplayArea#removeStackReferenceIfNeeded}.
+        homeActivity.removeImmediately();
+        assertNull(mDefaultTaskDisplayArea.getRootHomeTask());
+    }
+
+    @Test
     public void testStackInheritsDisplayWindowingMode() {
         final ActivityStack primarySplitScreen = mDefaultTaskDisplayArea.createStack(
                 WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_STANDARD, true /* onTop */);
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java
index 17dd26e..4b43ceb 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java
@@ -39,6 +39,7 @@
 import android.graphics.Rect;
 import android.os.IBinder;
 import android.os.RemoteException;
+import android.platform.test.annotations.Presubmit;
 import android.view.IDisplayWindowListener;
 
 import androidx.test.filters.MediumTest;
@@ -57,6 +58,7 @@
  * Build/Install/Run:
  *  atest WmTests:ActivityTaskManagerServiceTests
  */
+@Presubmit
 @MediumTest
 @RunWith(WindowTestRunner.class)
 public class ActivityTaskManagerServiceTests extends ActivityTestsBase {
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
index e02ea81..cba89d0 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
@@ -790,9 +790,7 @@
         final DisplayContent dc = createNewDisplay();
         dc.getDisplayRotation().setFixedToUserRotation(
                 IWindowManager.FIXED_TO_USER_ROTATION_DISABLED);
-        final int newOrientation = dc.getLastOrientation() == SCREEN_ORIENTATION_LANDSCAPE
-                ? SCREEN_ORIENTATION_PORTRAIT
-                : SCREEN_ORIENTATION_LANDSCAPE;
+        final int newOrientation = getRotatedOrientation(dc);
 
         final ActivityStack stack =
                 new ActivityTestsBase.StackBuilder(mWm.mAtmService.mRootWindowContainer)
@@ -812,9 +810,7 @@
         final DisplayContent dc = createNewDisplay();
         dc.getDisplayRotation().setFixedToUserRotation(
                 IWindowManager.FIXED_TO_USER_ROTATION_ENABLED);
-        final int newOrientation = dc.getLastOrientation() == SCREEN_ORIENTATION_LANDSCAPE
-                ? SCREEN_ORIENTATION_PORTRAIT
-                : SCREEN_ORIENTATION_LANDSCAPE;
+        final int newOrientation = getRotatedOrientation(dc);
 
         final ActivityStack stack =
                 new ActivityTestsBase.StackBuilder(mWm.mAtmService.mRootWindowContainer)
@@ -1083,7 +1079,8 @@
         mDisplayContent.prepareAppTransition(WindowManager.TRANSIT_ACTIVITY_OPEN,
                 false /* alwaysKeepCurrent */);
         mDisplayContent.mOpeningApps.add(app);
-        app.setRequestedOrientation(SCREEN_ORIENTATION_LANDSCAPE);
+        final int newOrientation = getRotatedOrientation(mDisplayContent);
+        app.setRequestedOrientation(newOrientation);
 
         assertTrue(app.isFixedRotationTransforming());
         assertTrue(mDisplayContent.getDisplayRotation().shouldRotateSeamlessly(
@@ -1124,12 +1121,25 @@
         mWallpaperWindow.mToken.onAnimationLeashCreated(t, null /* leash */);
         verify(t, never()).setPosition(any(), eq(0), eq(0));
 
+        // Launch another activity before the transition is finished.
+        final ActivityRecord app2 = new ActivityTestsBase.StackBuilder(mWm.mRoot)
+                .setDisplay(mDisplayContent).build().getTopMostActivity();
+        mDisplayContent.prepareAppTransition(WindowManager.TRANSIT_ACTIVITY_OPEN,
+                false /* alwaysKeepCurrent */);
+        mDisplayContent.mOpeningApps.add(app2);
+        app2.setRequestedOrientation(newOrientation);
+
+        // The activity should share the same transform state as the existing one.
+        assertTrue(app.hasFixedRotationTransform(app2));
+
+        // The display should be rotated after the launch is finished.
         mDisplayContent.mAppTransition.notifyAppTransitionFinishedLocked(app.token);
 
         // The animation in old rotation should be cancelled.
         assertFalse(closingApp.isAnimating());
-        // The display should be rotated after the launch is finished.
+        // The fixed rotation should be cleared and the new rotation is applied to display.
         assertFalse(app.hasFixedRotationTransform());
+        assertFalse(app2.hasFixedRotationTransform());
         assertEquals(config90.orientation, mDisplayContent.getConfiguration().orientation);
     }
 
@@ -1292,6 +1302,12 @@
         assertThat("topToBottom", actualWindows, is(reverseList(expectedWindowsBottomToTop)));
     }
 
+    private static int getRotatedOrientation(DisplayContent dc) {
+        return dc.getLastOrientation() == SCREEN_ORIENTATION_LANDSCAPE
+                ? SCREEN_ORIENTATION_PORTRAIT
+                : SCREEN_ORIENTATION_LANDSCAPE;
+    }
+
     private static List<WindowState> reverseList(List<WindowState> list) {
         final ArrayList<WindowState> result = new ArrayList<>(list);
         Collections.reverse(result);
diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java
index f19550c..9066468 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java
@@ -344,9 +344,17 @@
 
         mController.initialize(ACTIVITY_TYPE_HOME, new SparseBooleanArray(), homeActivity);
 
+        assertEquals(homeActivity, mDefaultDisplay.mFixedRotationLaunchingApp);
+
         // Check that the home app is in portrait
         assertEquals(Configuration.ORIENTATION_PORTRAIT,
                 homeActivity.getConfiguration().orientation);
+
+        // Home activity won't become top (return to landActivity), so its fixed rotation and the
+        // top rotated record should be cleared.
+        mController.cleanupAnimation(REORDER_MOVE_TO_ORIGINAL_POSITION);
+        assertFalse(homeActivity.hasFixedRotationTransform());
+        assertNull(mDefaultDisplay.mFixedRotationLaunchingApp);
     }
 
     @Test
@@ -401,12 +409,16 @@
         assertEquals(Configuration.ORIENTATION_PORTRAIT,
                 wallpapers.get(0).getConfiguration().orientation);
 
-        // Wallpaper's transform state is controlled by home, so the invocation should be no-op.
-        wallpaperWindowToken.finishFixedRotationTransform();
-        assertTrue(wallpaperWindowToken.hasFixedRotationTransform());
+        mController.cleanupAnimation(REORDER_MOVE_TO_TOP);
+        // The transform state should keep because we expect to listen the signal from the
+        // transition executed by moving the task to front.
+        assertTrue(homeActivity.hasFixedRotationTransform());
+        assertEquals(homeActivity, mDefaultDisplay.mFixedRotationLaunchingApp);
 
+        mDefaultDisplay.mFixedRotationTransitionListener.onAppTransitionFinishedLocked(
+                homeActivity.token);
         // Wallpaper's transform state should be cleared with home.
-        homeActivity.finishFixedRotationTransform();
+        assertFalse(homeActivity.hasFixedRotationTransform());
         assertFalse(wallpaperWindowToken.hasFixedRotationTransform());
     }
 
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java
index f354a04..9fdb9d8 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java
@@ -72,6 +72,13 @@
         stack.positionChildAt(WindowContainer.POSITION_TOP, task2, false /* includingParents */);
         assertEquals(stack.mChildren.get(0), task2);
         assertEquals(stack.mChildren.get(1), task1);
+
+        // Non-leaf task should be moved to top regardless of the user id.
+        createTaskInStack((ActivityStack) task2, 0 /* userId */);
+        createTaskInStack((ActivityStack) task2, 1 /* userId */);
+        stack.positionChildAt(WindowContainer.POSITION_TOP, task2, false /* includingParents */);
+        assertEquals(stack.mChildren.get(0), task1);
+        assertEquals(stack.mChildren.get(1), task2);
     }
 
     @Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowManagerSettingsTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowManagerSettingsTests.java
index 926bd8c..8d5363c 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowManagerSettingsTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowManagerSettingsTests.java
@@ -30,6 +30,7 @@
 
 import android.content.ContentResolver;
 import android.net.Uri;
+import android.platform.test.annotations.Presubmit;
 import android.provider.Settings;
 
 import androidx.test.filters.SmallTest;
@@ -43,6 +44,7 @@
  * Build/Install/Run:
  *  atest WmTests:WindowManagerSettingsTests
  */
+@Presubmit
 @SmallTest
 @RunWith(WindowTestRunner.class)
 public class WindowManagerSettingsTests extends WindowTestsBase {
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java
index 535d53e..23a097e 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java
@@ -136,7 +136,7 @@
     }
 
     @Test
-    public void testClearFixedRotationTransform() {
+    public void testFinishFixedRotationTransform() {
         final WindowToken appToken = mAppWindow.mToken;
         final WindowToken wallpaperToken = mWallpaperWindow.mToken;
         final Configuration config = new Configuration(mDisplayContent.getConfiguration());
@@ -152,7 +152,7 @@
         assertEquals(targetRotation, wallpaperToken.getWindowConfiguration().getRotation());
 
         // The display doesn't rotate, the transformation will be canceled.
-        mAppWindow.mToken.clearFixedRotationTransform(null /* applyDisplayRotation */);
+        mAppWindow.mToken.finishFixedRotationTransform();
 
         // The window tokens should restore to the original rotation.
         assertEquals(originalRotation, appToken.getWindowConfiguration().getRotation());
diff --git a/services/tests/wmtests/src/com/android/server/wm/utils/RotationAnimationUtilsTest.java b/services/tests/wmtests/src/com/android/server/wm/utils/RotationAnimationUtilsTest.java
index e5497a2..233e147 100644
--- a/services/tests/wmtests/src/com/android/server/wm/utils/RotationAnimationUtilsTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/utils/RotationAnimationUtilsTest.java
@@ -27,10 +27,12 @@
 import android.graphics.Matrix;
 import android.graphics.PointF;
 import android.view.Surface;
+import android.platform.test.annotations.Presubmit;
 
 import org.junit.Before;
 import org.junit.Test;
 
+@Presubmit
 public class RotationAnimationUtilsTest {
 
     private static final int BITMAP_HEIGHT = 100;
diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java
index 0983db6..eb553d3 100644
--- a/telecomm/java/android/telecom/TelecomManager.java
+++ b/telecomm/java/android/telecom/TelecomManager.java
@@ -2215,6 +2215,7 @@
      * @hide
      */
     @SystemApi
+    @TestApi
     @NonNull
     public Intent createLaunchEmergencyDialerIntent(@Nullable String number) {
         ITelecomService service = getTelecomService();
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index d2de19a..6b285d7 100755
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -3050,19 +3050,93 @@
     public static final String KEY_5G_ICON_CONFIGURATION_STRING = "5g_icon_configuration_string";
 
     /**
-     * Timeout in seconds for displaying 5G icon, default value is 0 which means the timer is
-     * disabled.
+     * This configuration allows the system UI to determine how long to continue to display 5G icons
+     * when the device switches between different 5G scenarios.
      *
-     * System UI will show the 5G icon and start a timer with the timeout from this config when the
-     * device connects to a 5G cell. System UI stops displaying 5G icon when both the device
-     * disconnects from 5G cell and the timer is expired.
+     * There are six 5G scenarios:
+     * 1. connected_mmwave: device currently connected to 5G cell as the secondary cell and using
+     *    millimeter wave.
+     * 2. connected: device currently connected to 5G cell as the secondary cell but not using
+     *    millimeter wave.
+     * 3. not_restricted_rrc_idle: device camped on a network that has 5G capability(not necessary
+     *    to connect a 5G cell as a secondary cell) and the use of 5G is not restricted and RRC
+     *    currently in IDLE state.
+     * 4. not_restricted_rrc_con: device camped on a network that has 5G capability(not necessary
+     *    to connect a 5G cell as a secondary cell) and the use of 5G is not restricted and RRC
+     *    currently in CONNECTED state.
+     * 5. restricted: device camped on a network that has 5G capability(not necessary to connect a
+     *    5G cell as a secondary cell) but the use of 5G is restricted.
+     * 6. any: any of the above scenarios, as well as none (not connected to 5G)
      *
-     * If 5G is reacquired during this timer, the timer is canceled and restarted when 5G is next
-     * lost. Allows us to momentarily lose 5G without blinking the icon.
+     * The configured string contains various timer rules separated by a semicolon.
+     * Each rule will have three items: prior 5G scenario, current 5G scenario, and grace period
+     * in seconds before changing the icon. When the 5G state changes from the prior to the current
+     * 5G scenario, the system UI will continue to show the icon for the prior 5G scenario (defined
+     * in {@link #KEY_5G_ICON_CONFIGURATION_STRING}) for the amount of time specified by the grace
+     * period. If the prior 5G scenario is reestablished, the timer will reset and start again if
+     * the UE changes 5G scenarios again. Defined states (5G scenarios #1-5) take precedence over
+     * 'any' (5G scenario #6), and unspecified transitions have a default grace period of 0.
+     * The order of rules in the configuration determines the priority (the first applicable timer
+     * rule will be used).
+     *
+     * Here is an example: "connected_mmwave,connected,30;connected_mmwave,any,10;connected,any,10"
+     * This configuration defines 3 timers:
+     * 1. When UE goes from 'connected_mmwave' to 'connected', system UI will continue to display
+     *    the 5G icon for 'connected_mmwave' for 30 seconds.
+     * 2. When UE goes from 'connected_mmwave' to any other state (except for connected, since
+     *    rule 1 would be used instead), system UI will continue to display the 5G icon for
+     *    'connected_mmwave' for 10 seconds.
+     * 3. When UE goes from 'connected' to any other state, system UI will continue to display the
+     *    5G icon for 'connected' for 10 seconds.
+     *
      * @hide
      */
-    public static final String KEY_5G_ICON_DISPLAY_GRACE_PERIOD_SEC_INT =
-            "5g_icon_display_grace_period_sec_int";
+    public static final String KEY_5G_ICON_DISPLAY_GRACE_PERIOD_STRING =
+            "5g_icon_display_grace_period_string";
+
+    /**
+     * This configuration extends {@link #KEY_5G_ICON_DISPLAY_GRACE_PERIOD_STRING} to allow the
+     * system UI to continue displaying 5G icons after the initial timer expires.
+     *
+     * There are six 5G scenarios:
+     * 1. connected_mmwave: device currently connected to 5G cell as the secondary cell and using
+     *    millimeter wave.
+     * 2. connected: device currently connected to 5G cell as the secondary cell but not using
+     *    millimeter wave.
+     * 3. not_restricted_rrc_idle: device camped on a network that has 5G capability(not necessary
+     *    to connect a 5G cell as a secondary cell) and the use of 5G is not restricted and RRC
+     *    currently in IDLE state.
+     * 4. not_restricted_rrc_con: device camped on a network that has 5G capability(not necessary
+     *    to connect a 5G cell as a secondary cell) and the use of 5G is not restricted and RRC
+     *    currently in CONNECTED state.
+     * 5. restricted: device camped on a network that has 5G capability(not necessary to connect a
+     *    5G cell as a secondary cell) but the use of 5G is restricted.
+     * 6. any: any of the above scenarios, as well as none (not connected to 5G)
+     *
+     * The configured string contains various timer rules separated by a semicolon.
+     * Each rule will have three items: primary 5G scenario, secondary 5G scenario, and
+     * grace period in seconds before changing the icon. When the timer for the primary 5G timer
+     * expires, the system UI will continue to show the icon for the primary 5G scenario (defined
+     * in {@link #KEY_5G_ICON_CONFIGURATION_STRING}) for the amount of time specified by the grace
+     * period. If the primary 5G scenario is reestablished, the timers will reset and the system UI
+     * will continue to display the icon for the primary 5G scenario without interruption. If the
+     * secondary 5G scenario is lost, the timer will reset and the icon will reflect the true state.
+     * Defined states (5G scenarios #1-5) take precedence over 'any' (5G scenario #6), and
+     * unspecified transitions have a default grace period of 0. The order of rules in the
+     * configuration determines the priority (the first applicable timer rule will be used).
+     *
+     * Here is an example: "connected,not_restricted_rrc_idle,30"
+     * This configuration defines a secondary timer that extends the primary 'connected' timer.
+     * When the primary 'connected' timer expires while the UE is in the 'not_restricted_rrc_idle'
+     * 5G state, system UI will continue to display the 5G icon for 'connected' for 30 seconds.
+     * If the 5G state returns to 'connected', the timer will be reset without change to the icon,
+     * and if the 5G state changes to neither 'connected' not 'not_restricted_rrc_idle', the icon
+     * will change to reflect the true state.
+     *
+     * @hide
+     */
+    public static final String KEY_5G_ICON_DISPLAY_SECONDARY_GRACE_PERIOD_STRING =
+            "5g_icon_display_secondary_grace_period_string";
 
     /**
      * Controls time in milliseconds until DcTracker reevaluates 5G connection state.
@@ -4148,7 +4222,8 @@
         sDefaults.putString(KEY_5G_ICON_CONFIGURATION_STRING,
                 "connected_mmwave:5G,connected:5G,not_restricted_rrc_idle:5G,"
                         + "not_restricted_rrc_con:5G");
-        sDefaults.putInt(KEY_5G_ICON_DISPLAY_GRACE_PERIOD_SEC_INT, 0);
+        sDefaults.putString(KEY_5G_ICON_DISPLAY_GRACE_PERIOD_STRING, "");
+        sDefaults.putString(KEY_5G_ICON_DISPLAY_SECONDARY_GRACE_PERIOD_STRING, "");
         /* Default value is 1 hour. */
         sDefaults.putLong(KEY_5G_WATCHDOG_TIME_MS_LONG, 3600000);
         sDefaults.putBoolean(KEY_UNMETERED_NR_NSA_BOOL, false);
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
index 801d639..45dc7af 100644
--- a/telephony/java/android/telephony/SubscriptionManager.java
+++ b/telephony/java/android/telephony/SubscriptionManager.java
@@ -135,29 +135,28 @@
     public static final String CACHE_KEY_DEFAULT_SUB_ID_PROPERTY =
             "cache_key.telephony.get_default_sub_id";
 
-    private static final int DEFAULT_SUB_ID_CACHE_SIZE = 1;
+    /** @hide */
+    public static final String CACHE_KEY_DEFAULT_DATA_SUB_ID_PROPERTY =
+            "cache_key.telephony.get_default_data_sub_id";
+
+    private static final int MAX_CACHE_SIZE = 4;
 
     private static PropertyInvalidatedCache<Void, Integer> sDefaultSubIdCache =
             new PropertyInvalidatedCache<Void, Integer>(
-                    DEFAULT_SUB_ID_CACHE_SIZE,
-                    CACHE_KEY_DEFAULT_SUB_ID_PROPERTY) {
-                @Override
-                protected Integer recompute(Void query) {
-                    int subId = INVALID_SUBSCRIPTION_ID;
+                    MAX_CACHE_SIZE, CACHE_KEY_DEFAULT_SUB_ID_PROPERTY) {
+            @Override
+            protected Integer recompute(Void query) {
+                return getDefaultSubscriptionIdInternal();
+            }};
 
-                    try {
-                        ISub iSub = TelephonyManager.getSubscriptionService();
-                        if (iSub != null) {
-                            subId = iSub.getDefaultSubId();
-                        }
-                    } catch (RemoteException ex) {
-                        // ignore it
-                    }
+    private static PropertyInvalidatedCache<Void, Integer> sDefaultDataSubIdCache =
+            new PropertyInvalidatedCache<Void, Integer>(
+                    MAX_CACHE_SIZE, CACHE_KEY_DEFAULT_DATA_SUB_ID_PROPERTY) {
+            @Override
+            protected Integer recompute(Void query) {
+                return getDefaultDataSubscriptionIdInternal();
+            }};
 
-                    if (VDBG) logd("getDefaultSubId=" + subId);
-                    return subId;
-                }
-            };
     /**
      * Generates a content {@link Uri} used to receive updates on simInfo change
      * on the given subscriptionId
@@ -1871,6 +1870,22 @@
         return sDefaultSubIdCache.query(null);
     }
 
+    private static int getDefaultSubscriptionIdInternal() {
+        int subId = INVALID_SUBSCRIPTION_ID;
+
+        try {
+            ISub iSub = TelephonyManager.getSubscriptionService();
+            if (iSub != null) {
+                subId = iSub.getDefaultSubId();
+            }
+        } catch (RemoteException ex) {
+            // ignore it
+        }
+
+        if (VDBG) logd("getDefaultSubId=" + subId);
+        return subId;
+    }
+
     /**
      * Returns the system's default voice subscription id.
      *
@@ -2021,6 +2036,10 @@
      * @return the default data subscription Id.
      */
     public static int getDefaultDataSubscriptionId() {
+        return sDefaultDataSubIdCache.query(null);
+    }
+
+    private static int getDefaultDataSubscriptionIdInternal() {
         int subId = INVALID_SUBSCRIPTION_ID;
 
         try {
@@ -3296,6 +3315,11 @@
         PropertyInvalidatedCache.invalidateCache(CACHE_KEY_DEFAULT_SUB_ID_PROPERTY);
     }
 
+    /** @hide */
+    public static void invalidateDefaultDataSubIdCaches() {
+        PropertyInvalidatedCache.invalidateCache(CACHE_KEY_DEFAULT_DATA_SUB_ID_PROPERTY);
+    }
+
     /**
      * Clears all process-local binder caches.
      *
@@ -3303,5 +3327,6 @@
      */
     public static void clearCaches() {
         sDefaultSubIdCache.clear();
+        sDefaultDataSubIdCache.clear();
     }
 }
diff --git a/telephony/java/android/telephony/euicc/EuiccManager.java b/telephony/java/android/telephony/euicc/EuiccManager.java
index 7488a1a..2edb564 100644
--- a/telephony/java/android/telephony/euicc/EuiccManager.java
+++ b/telephony/java/android/telephony/euicc/EuiccManager.java
@@ -269,10 +269,10 @@
      * only contains {@link #OPERATION_DOWNLOAD} and ErrorCode is 0 implies this is an unknown
      * Download error.
      *
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE}
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE}
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE}
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE}
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE
      */
     public static final String EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE =
             "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_DETAILED_CODE";
@@ -552,7 +552,7 @@
 
     /**
      * List of OperationCode corresponding to {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE}'s
-     * value, an integer. @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * value, an integer. @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      *
      * @hide
      */
@@ -575,44 +575,44 @@
 
     /**
      * Internal system error.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int OPERATION_SYSTEM = 1;
 
     /**
      * SIM slot error. Failed to switch slot, failed to access the physical slot etc.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int OPERATION_SIM_SLOT = 2;
 
     /**
      * eUICC card error.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int OPERATION_EUICC_CARD = 3;
 
     /**
      * Generic switching profile error
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int OPERATION_SWITCH = 4;
 
     /**
      * Download profile error.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int OPERATION_DOWNLOAD = 5;
 
     /**
      * Subscription's metadata error
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int OPERATION_METADATA = 6;
 
     /**
      * eUICC returned an error defined in GSMA (SGP.22 v2.2) while running one of the ES10x
      * functions.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int OPERATION_EUICC_GSMA = 7;
 
@@ -620,13 +620,13 @@
      * The exception of failing to execute an APDU command. It can be caused by an error
      * happening on opening the basic or logical channel, or the response of the APDU command is
      * not success (0x9000).
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int OPERATION_APDU = 8;
 
     /**
      * SMDX(SMDP/SMDS) error
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int OPERATION_SMDX = 9;
 
@@ -655,19 +655,19 @@
      * Thus the integer stored in {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} is
      * 0xA8B1051(176885841)
      *
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int OPERATION_SMDX_SUBJECT_REASON_CODE = 10;
 
     /**
      * HTTP error
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int OPERATION_HTTP = 11;
 
     /**
      * List of ErrorCode corresponding to {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE}
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      * @hide
      */
     @Retention(RetentionPolicy.SOURCE)
@@ -695,56 +695,56 @@
     /**
      * Operation such as downloading/switching to another profile failed due to device being
      * carrier locked.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int ERROR_CARRIER_LOCKED = 10000;
 
     /**
      * The activation code(SGP.22 v2.2 section[4.1]) is invalid.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int ERROR_INVALID_ACTIVATION_CODE = 10001;
 
     /**
      * The confirmation code(SGP.22 v2.2 section[4.7]) is invalid.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int ERROR_INVALID_CONFIRMATION_CODE = 10002;
 
     /**
      * The profile's carrier is incompatible with the LPA.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int ERROR_INCOMPATIBLE_CARRIER = 10003;
 
     /**
      * There is no more space available on the eUICC for new profiles.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int ERROR_EUICC_INSUFFICIENT_MEMORY = 10004;
 
     /**
      * Timed out while waiting for an operation to complete. i.e restart, disable,
      * switch reset etc.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int ERROR_TIME_OUT = 10005;
 
     /**
      * eUICC is missing or defective on the device.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int ERROR_EUICC_MISSING = 10006;
 
     /**
      * The eUICC card(hardware) version is incompatible with the software
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int ERROR_UNSUPPORTED_VERSION = 10007;
 
     /**
      * No SIM card is available in the device.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int ERROR_SIM_MISSING = 10008;
 
@@ -754,52 +754,52 @@
      * 2. GSMA(.22 v2.2) Profile Install Result - installFailedDueToDataMismatch
      * 3. operation was interrupted
      * 4. SIMalliance error in PEStatus(SGP.22 v2.2 section 2.5.6.1)
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int ERROR_INSTALL_PROFILE = 10009;
 
     /**
      * Failed to load profile onto eUICC due to Profile Poicly Rules.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int ERROR_DISALLOWED_BY_PPR = 10010;
 
 
     /**
      * Address is missing e.g SMDS/SMDP address is missing.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int ERROR_ADDRESS_MISSING = 10011;
 
     /**
      * Certificate needed for authentication is not valid or missing. E.g  SMDP/SMDS authentication
      * failed.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int ERROR_CERTIFICATE_ERROR = 10012;
 
 
     /**
      * No profiles available.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int ERROR_NO_PROFILES_AVAILABLE = 10013;
 
     /**
      * Failure to create a connection.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int ERROR_CONNECTION_ERROR = 10014;
 
     /**
      * Response format is invalid. e.g SMDP/SMDS response contains invalid json, header or/and ASN1.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int ERROR_INVALID_RESPONSE = 10015;
 
     /**
      * The operation is currently busy, try again later.
-     * @see {@link #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE} for details
+     * @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
      */
     public static final int ERROR_OPERATION_BUSY = 10016;
 
diff --git a/telephony/java/android/telephony/ims/feature/MmTelFeature.java b/telephony/java/android/telephony/ims/feature/MmTelFeature.java
index 7ff8735..0b25d6f 100644
--- a/telephony/java/android/telephony/ims/feature/MmTelFeature.java
+++ b/telephony/java/android/telephony/ims/feature/MmTelFeature.java
@@ -430,7 +430,6 @@
     /**
      * @param listener A {@link Listener} used when the MmTelFeature receives an incoming call and
      *     notifies the framework.
-     * @hide
      */
     private void setListener(IImsMmTelListener listener) {
         synchronized (mLock) {
@@ -442,6 +441,16 @@
     }
 
     /**
+     * @return the listener associated with this MmTelFeature. May be null if it has not been set
+     * by the framework yet.
+     */
+    private IImsMmTelListener getListener() {
+        synchronized (mLock) {
+            return mListener;
+        }
+    }
+
+    /**
      * The current capability status that this MmTelFeature has defined is available. This
      * configuration will be used by the platform to figure out which capabilities are CURRENTLY
      * available to be used.
@@ -489,15 +498,14 @@
             throw new IllegalArgumentException("ImsCallSessionImplBase and Bundle can not be "
                     + "null.");
         }
-        synchronized (mLock) {
-            if (mListener == null) {
-                throw new IllegalStateException("Session is not available.");
-            }
-            try {
-                mListener.onIncomingCall(c.getServiceImpl(), extras);
-            } catch (RemoteException e) {
-                throw new RuntimeException(e);
-            }
+        IImsMmTelListener listener = getListener();
+        if (listener == null) {
+            throw new IllegalStateException("Session is not available.");
+        }
+        try {
+            listener.onIncomingCall(c.getServiceImpl(), extras);
+        } catch (RemoteException e) {
+            throw new RuntimeException(e);
         }
     }
 
@@ -516,15 +524,14 @@
             throw new IllegalArgumentException("ImsCallProfile and ImsReasonInfo must not be "
                     + "null.");
         }
-        synchronized (mLock) {
-            if (mListener == null) {
-                throw new IllegalStateException("Session is not available.");
-            }
-            try {
-                mListener.onRejectedCall(callProfile, reason);
-            } catch (RemoteException e) {
-                throw new RuntimeException(e);
-            }
+        IImsMmTelListener listener = getListener();
+        if (listener == null) {
+            throw new IllegalStateException("Session is not available.");
+        }
+        try {
+            listener.onRejectedCall(callProfile, reason);
+        } catch (RemoteException e) {
+            throw new RuntimeException(e);
         }
     }
 
@@ -533,15 +540,14 @@
      * @hide
      */
     public final void notifyIncomingCallSession(IImsCallSession c, Bundle extras) {
-        synchronized (mLock) {
-            if (mListener == null) {
-                throw new IllegalStateException("Session is not available.");
-            }
-            try {
-                mListener.onIncomingCall(c, extras);
-            } catch (RemoteException e) {
-                throw new RuntimeException(e);
-            }
+        IImsMmTelListener listener = getListener();
+        if (listener == null) {
+            throw new IllegalStateException("Session is not available.");
+        }
+        try {
+            listener.onIncomingCall(c, extras);
+        } catch (RemoteException e) {
+            throw new RuntimeException(e);
         }
     }
 
@@ -552,15 +558,14 @@
      */
     @SystemApi @TestApi
     public final void notifyVoiceMessageCountUpdate(int count) {
-        synchronized (mLock) {
-            if (mListener == null) {
-                throw new IllegalStateException("Session is not available.");
-            }
-            try {
-                mListener.onVoiceMessageCountUpdate(count);
-            } catch (RemoteException e) {
-                throw new RuntimeException(e);
-            }
+        IImsMmTelListener listener = getListener();
+        if (listener == null) {
+            throw new IllegalStateException("Session is not available.");
+        }
+        try {
+            listener.onVoiceMessageCountUpdate(count);
+        } catch (RemoteException e) {
+            throw new RuntimeException(e);
         }
     }
 
diff --git a/telephony/java/com/android/internal/telephony/DctConstants.java b/telephony/java/com/android/internal/telephony/DctConstants.java
index 18e2592..76fc4f7 100644
--- a/telephony/java/com/android/internal/telephony/DctConstants.java
+++ b/telephony/java/com/android/internal/telephony/DctConstants.java
@@ -109,11 +109,10 @@
     public static final int EVENT_DATA_SERVICE_BINDING_CHANGED = BASE + 49;
     public static final int EVENT_DEVICE_PROVISIONED_CHANGE = BASE + 50;
     public static final int EVENT_DATA_ENABLED_OVERRIDE_RULES_CHANGED = BASE + 51;
-    public static final int EVENT_SERVICE_STATE_CHANGED = BASE + 52;
-    public static final int EVENT_5G_TIMER_HYSTERESIS = BASE + 53;
-    public static final int EVENT_5G_TIMER_WATCHDOG = BASE + 54;
-    public static final int EVENT_CARRIER_CONFIG_CHANGED = BASE + 55;
-    public static final int EVENT_SIM_STATE_UPDATED = BASE + 56;
+    public static final int EVENT_TELEPHONY_DISPLAY_INFO_CHANGED = BASE + 52;
+    public static final int EVENT_NR_TIMER_WATCHDOG = BASE + 53;
+    public static final int EVENT_CARRIER_CONFIG_CHANGED = BASE + 54;
+    public static final int EVENT_SIM_STATE_UPDATED = BASE + 55;
 
     /***** Constants *****/
 
diff --git a/tools/aapt2/cmd/Link.h b/tools/aapt2/cmd/Link.h
index e7be434..852b1244 100644
--- a/tools/aapt2/cmd/Link.h
+++ b/tools/aapt2/cmd/Link.h
@@ -263,6 +263,10 @@
         "Changes the name of the target package for instrumentation. Most useful\n"
             "when used in conjunction with --rename-manifest-package.",
         &options_.manifest_fixer_options.rename_instrumentation_target_package);
+    AddOptionalFlag("--rename-overlay-target-package",
+        "Changes the name of the target package for overlay. Most useful\n"
+            "when used in conjunction with --rename-manifest-package.",
+        &options_.manifest_fixer_options.rename_overlay_target_package);
     AddOptionalFlagList("-0", "File suffix not to compress.",
         &options_.extensions_to_not_compress);
     AddOptionalSwitch("--no-compress", "Do not compress any resources.",
diff --git a/tools/aapt2/link/ManifestFixer.cpp b/tools/aapt2/link/ManifestFixer.cpp
index bcfce66..c813a44 100644
--- a/tools/aapt2/link/ManifestFixer.cpp
+++ b/tools/aapt2/link/ManifestFixer.cpp
@@ -263,6 +263,16 @@
     }
   }
 
+  if (options_.rename_overlay_target_package) {
+    if (!util::IsJavaPackageName(options_.rename_overlay_target_package.value())) {
+      diag->Error(DiagMessage()
+                  << "invalid overlay target package override '"
+                  << options_.rename_overlay_target_package.value()
+                  << "'");
+      return false;
+    }
+  }
+
   // Common <intent-filter> actions.
   xml::XmlNodeAction intent_filter_action;
   intent_filter_action["action"].Action(RequiredNameIsNotEmpty);
@@ -373,7 +383,17 @@
   manifest_action["attribution"];
   manifest_action["attribution"]["inherit-from"];
   manifest_action["original-package"];
-  manifest_action["overlay"];
+  manifest_action["overlay"].Action([&](xml::Element* el) -> bool {
+    if (!options_.rename_overlay_target_package) {
+      return true;
+    }
+
+    if (xml::Attribute* attr =
+            el->FindAttribute(xml::kSchemaAndroid, "targetPackage")) {
+      attr->value = options_.rename_overlay_target_package.value();
+    }
+    return true;
+  });
   manifest_action["protected-broadcast"];
   manifest_action["adopt-permissions"];
   manifest_action["uses-permission"];
diff --git a/tools/aapt2/link/ManifestFixer.h b/tools/aapt2/link/ManifestFixer.h
index 3ef57d0..ec4367b 100644
--- a/tools/aapt2/link/ManifestFixer.h
+++ b/tools/aapt2/link/ManifestFixer.h
@@ -44,6 +44,10 @@
   // <instrumentation>.
   Maybe<std::string> rename_instrumentation_target_package;
 
+  // The Android package to use instead of the one defined in 'android:targetPackage' in
+  // <overlay>.
+  Maybe<std::string> rename_overlay_target_package;
+
   // The version name to set if 'android:versionName' is not defined in <manifest> or if
   // replace_version is set.
   Maybe<std::string> version_name_default;
diff --git a/tools/aapt2/link/ManifestFixer_test.cpp b/tools/aapt2/link/ManifestFixer_test.cpp
index 3af06f5..0791805 100644
--- a/tools/aapt2/link/ManifestFixer_test.cpp
+++ b/tools/aapt2/link/ManifestFixer_test.cpp
@@ -325,6 +325,32 @@
   EXPECT_THAT(attr->value, StrEq("com.android"));
 }
 
+TEST_F(ManifestFixerTest,
+       RenameManifestOverlayPackageAndFullyQualifyTarget) {
+  ManifestFixerOptions options;
+  options.rename_overlay_target_package = std::string("com.android");
+
+  std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF(
+      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
+                package="android">
+        <overlay android:targetName="Customization" android:targetPackage="android" />
+      </manifest>)EOF",
+                                                            options);
+  ASSERT_THAT(doc, NotNull());
+
+  xml::Element* manifest_el = doc->root.get();
+  ASSERT_THAT(manifest_el, NotNull());
+
+  xml::Element* overlay_el =
+      manifest_el->FindChild({}, "overlay");
+  ASSERT_THAT(overlay_el, NotNull());
+
+  xml::Attribute* attr =
+      overlay_el->FindAttribute(xml::kSchemaAndroid, "targetPackage");
+  ASSERT_THAT(attr, NotNull());
+  EXPECT_THAT(attr->value, StrEq("com.android"));
+}
+
 TEST_F(ManifestFixerTest, UseDefaultVersionNameAndCode) {
   ManifestFixerOptions options;
   options.version_name_default = std::string("Beta");