Merge "Dump display brightness followers" into udc-dev am: b61f14b846 am: 782af209f1

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22675383

Change-Id: Ib3a9ef5b9ec4e7d139b56f211001b8771bdb43c1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/Android.bp b/Android.bp
index 64d2c66..4c8c341 100644
--- a/Android.bp
+++ b/Android.bp
@@ -219,13 +219,14 @@
         "android.hardware.radio-V1.4-java",
         "android.hardware.radio-V1.5-java",
         "android.hardware.radio-V1.6-java",
-        "android.hardware.radio.data-V2-java",
-        "android.hardware.radio.ims-V1-java",
-        "android.hardware.radio.messaging-V2-java",
-        "android.hardware.radio.modem-V2-java",
-        "android.hardware.radio.network-V2-java",
-        "android.hardware.radio.sim-V2-java",
-        "android.hardware.radio.voice-V2-java",
+        "android.hardware.radio.data-V3-java",
+        "android.hardware.radio.ims-V2-java",
+        "android.hardware.radio.messaging-V3-java",
+        "android.hardware.radio.modem-V3-java",
+        "android.hardware.radio.network-V3-java",
+        "android.hardware.radio.satellite-V1-java",
+        "android.hardware.radio.sim-V3-java",
+        "android.hardware.radio.voice-V3-java",
         "android.hardware.thermal-V1.0-java-constants",
         "android.hardware.thermal-V1.0-java",
         "android.hardware.thermal-V1.1-java",
@@ -504,6 +505,13 @@
 }
 
 filegroup {
+    name: "framework-android-os-unit-testable-src",
+    srcs: [
+        "core/java/android/os/DdmSyncState.java",
+    ],
+}
+
+filegroup {
     name: "framework-networkstack-shared-srcs",
     srcs: [
         // TODO: remove these annotations as soon as we can use andoid.support.annotations.*
diff --git a/apct-tests/perftests/core/src/android/input/VelocityTrackerBenchmarkTest.kt b/apct-tests/perftests/core/src/android/input/VelocityTrackerBenchmarkTest.kt
new file mode 100644
index 0000000..530ca7b
--- /dev/null
+++ b/apct-tests/perftests/core/src/android/input/VelocityTrackerBenchmarkTest.kt
@@ -0,0 +1,258 @@
+/*
+ * Copyright (C) 2023 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.input
+
+import android.perftests.utils.PerfStatusReporter
+import android.view.InputDevice
+import android.view.MotionEvent
+import android.view.VelocityTracker
+
+import androidx.test.filters.LargeTest
+import androidx.test.runner.AndroidJUnit4
+
+import java.time.Duration
+
+import org.junit.Assert
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/**
+ * Helper class to maintain [MotionEvent]s for tests.
+ *
+ * This is primarily used to create [MotionEvent]s for tests, in a way where a sequence of
+ * [MotionEvent]s created in multiple test runs are exactly the same, as long as [reset] is called
+ * between consecutive sequences of [MotionEvent]s.
+ *
+ * Furthermore, it also contains convenience methods to run any queries/verifications of the
+ * generated [MotionEvent]s.
+ */
+abstract class MotionState {
+    /** Current time, in ms. */
+    protected var currentTime = START_TIME
+
+    /** Resets the state of this instance. */
+    open fun reset() {
+        currentTime = START_TIME
+    }
+
+    /** Creates a [MotionEvent]. */
+    abstract fun createMotionEvent(): MotionEvent
+
+    /** Asserts that the current velocity is not zero, just for verifying there's motion. */
+    abstract fun assertNonZeroVelocity(velocityTracker: VelocityTracker)
+
+    companion object {
+        /** Arbitrarily chosen start time. */
+        val START_TIME = Duration.ofMillis(100)
+        /**
+         * A small enough time jump, which won't be considered by the tracker as big enough to
+         * deduce that a pointer has stopped.
+         */
+        val DEFAULT_TIME_JUMP = Duration.ofMillis(2)
+    }
+}
+
+/** An implementation of [MotionState] for [MotionEvent.AXIS_SCROLL]. */
+private class ScrollMotionState : MotionState() {
+    override fun createMotionEvent(): MotionEvent {
+        val props = MotionEvent.PointerProperties()
+        props.id = 0
+        val coords = MotionEvent.PointerCoords()
+        coords.setAxisValue(MotionEvent.AXIS_SCROLL, DEFAULT_SCROLL_AMOUNT)
+        val motionEvent = MotionEvent.obtain(
+            /*downTime=*/0,
+            currentTime.toMillis(),
+            MotionEvent.ACTION_SCROLL,
+            /*pointerCount=*/1,
+            arrayOf(props),
+            arrayOf(coords),
+            /*metaState=*/0,
+            /*buttonState=*/0,
+            /*xPrecision=*/0f,
+            /*yPrecision=*/0f,
+            /*deviceId=*/1,
+            /*edgeFlags=*/0,
+            InputDevice.SOURCE_ROTARY_ENCODER,
+            /*flags=*/0
+        )
+
+        currentTime = currentTime.plus(DEFAULT_TIME_JUMP)
+
+        return motionEvent
+    }
+
+    override fun assertNonZeroVelocity(velocityTracker: VelocityTracker) {
+        Assert.assertTrue(velocityTracker.getAxisVelocity(MotionEvent.AXIS_SCROLL) != 0f)
+    }
+
+    companion object {
+        private val DEFAULT_SCROLL_AMOUNT: Float = 30f
+    }
+}
+
+/** An implementation of [MotionState] for [MotionEvent.AXIS_X] and [MotionEvent.AXIS_Y]. */
+private class PlanarMotionState : MotionState() {
+    private var x: Float = DEFAULT_X
+    private var y: Float = DEFAULT_Y
+    private var downEventCreated = false
+
+    override fun createMotionEvent(): MotionEvent {
+        val action: Int = if (downEventCreated) MotionEvent.ACTION_MOVE else MotionEvent.ACTION_DOWN
+        val motionEvent = MotionEvent.obtain(
+            /*downTime=*/START_TIME.toMillis(),
+            currentTime.toMillis(),
+            action,
+            x,
+            y,
+            /*metaState=*/0)
+
+        if (downEventCreated) {
+            x += INCREMENT
+            y += INCREMENT
+        } else {
+            downEventCreated = true
+        }
+        currentTime = currentTime.plus(DEFAULT_TIME_JUMP)
+
+        return motionEvent
+    }
+
+    override fun assertNonZeroVelocity(velocityTracker: VelocityTracker) {
+        Assert.assertTrue(velocityTracker.getAxisVelocity(MotionEvent.AXIS_X) != 0f)
+        Assert.assertTrue(velocityTracker.getAxisVelocity(MotionEvent.AXIS_Y) != 0f)
+    }
+
+    override fun reset() {
+        super.reset()
+        x = DEFAULT_X
+        y = DEFAULT_Y
+        downEventCreated = false
+    }
+
+    companion object {
+        /** Arbitrarily chosen constants. No need to have varying velocity for now. */
+        private val DEFAULT_X: Float = 2f
+        private val DEFAULT_Y: Float = 4f
+        private val INCREMENT: Float = 0.7f
+    }
+}
+
+/**
+ * Benchmark tests for [VelocityTracker]
+ *
+ * Build/Install/Run:
+ * atest VelocityTrackerBenchmarkTest
+ */
+@LargeTest
+@RunWith(AndroidJUnit4::class)
+class VelocityTrackerBenchmarkTest {
+    @get:Rule
+    val perfStatusReporter: PerfStatusReporter = PerfStatusReporter()
+
+    private val velocityTracker = VelocityTracker.obtain()
+    @Before
+    fun setup() {
+        velocityTracker.clear()
+    }
+
+    @Test
+    fun addMovement_axisScroll() {
+        testAddMovement(ScrollMotionState())
+    }
+
+    @Test
+    fun computeCurrentVelocity_computeAfterAllAdditions_axisScroll() {
+        testComputeCurrentVelocity_computeAfterAllAdditions(ScrollMotionState())
+    }
+
+    @Test
+    fun computeCurrentVelocity_computeAfterEachAdd_axisScroll() {
+        testComputeCurrentVelocity_computeAfterEachAdd(ScrollMotionState())
+    }
+
+    @Test
+    fun addMovement_planarAxes() {
+        testAddMovement(PlanarMotionState())
+    }
+
+    @Test
+    fun computeCurrentVelocity_computeAfterAllAdditions_planarAxes() {
+        testComputeCurrentVelocity_computeAfterAllAdditions(PlanarMotionState())
+    }
+
+    private fun testAddMovement(motionState: MotionState) {
+        val state = perfStatusReporter.getBenchmarkState()
+        while (state.keepRunning()) {
+            state.pauseTiming()
+            for (i in 0 until TEST_NUM_DATAPOINTS) {
+                val motionEvent = motionState.createMotionEvent()
+                state.resumeTiming()
+                velocityTracker.addMovement(motionEvent)
+                state.pauseTiming()
+            }
+            velocityTracker.computeCurrentVelocity(1000)
+            motionState.assertNonZeroVelocity(velocityTracker)
+            // Clear the tracker for the next run
+            velocityTracker.clear()
+            motionState.reset()
+            state.resumeTiming()
+        }
+    }
+
+    private fun testComputeCurrentVelocity_computeAfterAllAdditions(motionState: MotionState) {
+        val state = perfStatusReporter.getBenchmarkState()
+        while (state.keepRunning()) {
+            // Add the data points
+            state.pauseTiming()
+            for (i in 0 until TEST_NUM_DATAPOINTS) {
+                velocityTracker.addMovement(motionState.createMotionEvent())
+            }
+
+            // Do the velocity computation
+            state.resumeTiming()
+            velocityTracker.computeCurrentVelocity(1000)
+
+            state.pauseTiming()
+            motionState.assertNonZeroVelocity(velocityTracker)
+            // Clear the tracker for the next run
+            velocityTracker.clear()
+            state.resumeTiming()
+        }
+    }
+
+    private fun testComputeCurrentVelocity_computeAfterEachAdd(motionState: MotionState) {
+        val state = perfStatusReporter.getBenchmarkState()
+        while (state.keepRunning()) {
+            state.pauseTiming()
+            for (i in 0 until TEST_NUM_DATAPOINTS) {
+                velocityTracker.addMovement(motionState.createMotionEvent())
+                state.resumeTiming()
+                velocityTracker.computeCurrentVelocity(1000)
+                state.pauseTiming()
+            }
+            motionState.assertNonZeroVelocity(velocityTracker)
+            // Clear the tracker for the next run
+            velocityTracker.clear()
+            state.resumeTiming()
+        }
+    }
+
+    companion object {
+        private const val TEST_NUM_DATAPOINTS = 100
+    }
+}
\ No newline at end of file
diff --git a/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java b/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java
index b732da2..33d6ac4 100644
--- a/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java
+++ b/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java
@@ -1556,6 +1556,7 @@
     }
 
     private void waitCoolDownPeriod() {
+        // Heuristic value based on local tests. Stability increased compared to no waiting.
         final int tenSeconds = 1000 * 10;
         waitForBroadcastIdle();
         sleep(tenSeconds);
diff --git a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java
index df1b666..d1d33cc 100644
--- a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java
+++ b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java
@@ -45,7 +45,6 @@
 
 import static com.android.server.SystemClockTime.TIME_CONFIDENCE_HIGH;
 import static com.android.server.SystemTimeZone.TIME_ZONE_CONFIDENCE_HIGH;
-import static com.android.server.SystemTimeZone.getTimeZoneId;
 import static com.android.server.alarm.Alarm.APP_STANDBY_POLICY_INDEX;
 import static com.android.server.alarm.Alarm.BATTERY_SAVER_POLICY_INDEX;
 import static com.android.server.alarm.Alarm.DEVICE_IDLE_POLICY_INDEX;
@@ -139,7 +138,6 @@
 import android.util.proto.ProtoOutputStream;
 
 import com.android.internal.annotations.GuardedBy;
-import com.android.internal.annotations.Keep;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.app.IAppOpsCallback;
 import com.android.internal.app.IAppOpsService;
@@ -229,19 +227,6 @@
 
     private static final long TEMPORARY_QUOTA_DURATION = INTERVAL_DAY;
 
-    /*
-     * b/246256335: This compile-time constant controls whether Android attempts to sync the Kernel
-     * time zone offset via settimeofday(null, tz). For <= Android T behavior is the same as
-     * {@code true}, the state for future releases is the same as {@code false}.
-     * It is unlikely anything depends on this, but a compile-time constant has been used to limit
-     * the size of the revert if this proves to be invorrect. The guarded code and associated
-     * methods / native code can be removed after release testing has proved that removing the
-     * behavior doesn't break anything.
-     * TODO(b/246256335): After this change has soaked for a release, remove this constant and
-     * everything it affects.
-     */
-    private static final boolean KERNEL_TIME_ZONE_SYNC_ENABLED = false;
-
     private final Intent mBackgroundIntent
             = new Intent().addFlags(Intent.FLAG_FROM_BACKGROUND);
 
@@ -1955,13 +1940,6 @@
 
             mNextWakeup = mNextNonWakeup = 0;
 
-            if (KERNEL_TIME_ZONE_SYNC_ENABLED) {
-                // We set the current offset in kernel because the kernel doesn't keep this after a
-                // reboot. Keeping the kernel time zone in sync is "best effort" and can be wrong
-                // for a period after daylight savings transitions.
-                mInjector.syncKernelTimeZoneOffset();
-            }
-
             // Ensure that we're booting with a halfway sensible current time.
             mInjector.initializeTimeIfRequired();
 
@@ -2196,20 +2174,8 @@
             @CurrentTimeMillisLong long newSystemClockTimeMillis, @TimeConfidence int confidence,
             @NonNull String logMsg) {
         synchronized (mLock) {
-            final long oldSystemClockTimeMillis = mInjector.getCurrentTimeMillis();
             mInjector.setCurrentTimeMillis(newSystemClockTimeMillis, confidence, logMsg);
 
-            if (KERNEL_TIME_ZONE_SYNC_ENABLED) {
-                // Changing the time may cross a DST transition; sync the kernel offset if needed.
-                final TimeZone timeZone = TimeZone.getTimeZone(SystemTimeZone.getTimeZoneId());
-                final int currentTzOffset = timeZone.getOffset(oldSystemClockTimeMillis);
-                final int newTzOffset = timeZone.getOffset(newSystemClockTimeMillis);
-                if (currentTzOffset != newTzOffset) {
-                    Slog.i(TAG, "Timezone offset has changed, updating kernel timezone");
-                    mInjector.setKernelTimeZoneOffset(newTzOffset);
-                }
-            }
-
             // The native implementation of setKernelTime can return -1 even when the kernel
             // time was set correctly, so assume setting kernel time was successful and always
             // return true.
@@ -2231,12 +2197,6 @@
             // "GMT" if the ID is unrecognized). The parameter ID is used here rather than
             // newZone.getId(). It will be rejected if it is invalid.
             timeZoneWasChanged = SystemTimeZone.setTimeZoneId(tzId, confidence, logInfo);
-
-            if (KERNEL_TIME_ZONE_SYNC_ENABLED) {
-                // Update the kernel timezone information
-                int utcOffsetMillis = newZone.getOffset(mInjector.getCurrentTimeMillis());
-                mInjector.setKernelTimeZoneOffset(utcOffsetMillis);
-            }
         }
 
         // Clear the default time zone in the system server process. This forces the next call
@@ -4386,16 +4346,6 @@
     private static native void close(long nativeData);
     private static native int set(long nativeData, int type, long seconds, long nanoseconds);
     private static native int waitForAlarm(long nativeData);
-
-    /*
-     * b/246256335: The @Keep ensures that the native definition is kept even when the optimizer can
-     * tell no calls will be made due to a compile-time constant. Allowing this definition to be
-     * optimized away breaks loadLibrary("alarm_jni") at boot time.
-     * TODO(b/246256335): Remove this native method and the associated native code when it is no
-     * longer needed.
-     */
-    @Keep
-    private static native int setKernelTimezone(long nativeData, int minuteswest);
     private static native long getNextAlarm(long nativeData, int type);
 
     @GuardedBy("mLock")
@@ -4664,20 +4614,6 @@
             return AlarmManagerService.getNextAlarm(mNativeData, type);
         }
 
-        void setKernelTimeZoneOffset(int utcOffsetMillis) {
-            // Kernel tracks time offsets as 'minutes west of GMT'
-            AlarmManagerService.setKernelTimezone(mNativeData, -(utcOffsetMillis / 60000));
-        }
-
-        void syncKernelTimeZoneOffset() {
-            long currentTimeMillis = getCurrentTimeMillis();
-            TimeZone currentTimeZone = TimeZone.getTimeZone(getTimeZoneId());
-            // If the time zone ID is invalid, GMT will be returned and this will set a kernel
-            // offset of zero.
-            int utcOffsetMillis = currentTimeZone.getOffset(currentTimeMillis);
-            setKernelTimeZoneOffset(utcOffsetMillis);
-        }
-
         void initializeTimeIfRequired() {
             SystemClockTime.initializeIfRequired();
         }
@@ -5199,12 +5135,6 @@
         @Override
         public void onReceive(Context context, Intent intent) {
             if (intent.getAction().equals(Intent.ACTION_DATE_CHANGED)) {
-                if (KERNEL_TIME_ZONE_SYNC_ENABLED) {
-                    // Since the kernel does not keep track of DST, we reset the TZ information at
-                    // the beginning of each day. This may miss a DST transition, but it will
-                    // correct itself within 24 hours.
-                    mInjector.syncKernelTimeZoneOffset();
-                }
                 scheduleDateChangedEvent();
             }
         }
diff --git a/apex/jobscheduler/service/java/com/android/server/tare/InternalResourceService.java b/apex/jobscheduler/service/java/com/android/server/tare/InternalResourceService.java
index 2550a27..f5487dc7 100644
--- a/apex/jobscheduler/service/java/com/android/server/tare/InternalResourceService.java
+++ b/apex/jobscheduler/service/java/com/android/server/tare/InternalResourceService.java
@@ -1877,6 +1877,7 @@
                 pw.print(" None");
             }
             pw.decreaseIndent();
+            pw.println();
         }
     }
 }
diff --git a/apex/jobscheduler/service/jni/com_android_server_alarm_AlarmManagerService.cpp b/apex/jobscheduler/service/jni/com_android_server_alarm_AlarmManagerService.cpp
index b2ed4d4..3247da7 100644
--- a/apex/jobscheduler/service/jni/com_android_server_alarm_AlarmManagerService.cpp
+++ b/apex/jobscheduler/service/jni/com_android_server_alarm_AlarmManagerService.cpp
@@ -159,24 +159,6 @@
     return result;
 }
 
-static jint android_server_alarm_AlarmManagerService_setKernelTimezone(JNIEnv*, jobject, jlong, jint minswest)
-{
-    struct timezone tz;
-
-    tz.tz_minuteswest = minswest;
-    tz.tz_dsttime = 0;
-
-    int result = settimeofday(NULL, &tz);
-    if (result < 0) {
-        ALOGE("Unable to set kernel timezone to %d: %s\n", minswest, strerror(errno));
-        return -1;
-    } else {
-        ALOGD("Kernel timezone updated to %d minutes west of GMT\n", minswest);
-    }
-
-    return 0;
-}
-
 static void log_timerfd_create_error(clockid_t id)
 {
     if (errno == EINVAL) {
@@ -319,7 +301,6 @@
     {"close", "(J)V", (void*)android_server_alarm_AlarmManagerService_close},
     {"set", "(JIJJ)I", (void*)android_server_alarm_AlarmManagerService_set},
     {"waitForAlarm", "(J)I", (void*)android_server_alarm_AlarmManagerService_waitForAlarm},
-    {"setKernelTimezone", "(JI)I", (void*)android_server_alarm_AlarmManagerService_setKernelTimezone},
     {"getNextAlarm", "(JI)J", (void*)android_server_alarm_AlarmManagerService_getNextAlarm},
 };
 
diff --git a/cmds/am/src/com/android/commands/am/Am.java b/cmds/am/src/com/android/commands/am/Am.java
index b8d24e3..d79131c 100644
--- a/cmds/am/src/com/android/commands/am/Am.java
+++ b/cmds/am/src/com/android/commands/am/Am.java
@@ -193,6 +193,9 @@
                 instrument.alwaysCheckSignature = true;
             } else if (opt.equals("--instrument-sdk-sandbox")) {
                 instrument.instrumentSdkSandbox = true;
+            } else if (opt.equals("--instrument-sdk-in-sandbox")) {
+                instrument.instrumentSdkSandbox = true;
+                instrument.instrumentSdkInSandbox = true;
             } else {
                 System.err.println("Error: Unknown option: " + opt);
                 return;
diff --git a/cmds/am/src/com/android/commands/am/Instrument.java b/cmds/am/src/com/android/commands/am/Instrument.java
index 2604497..e60593e 100644
--- a/cmds/am/src/com/android/commands/am/Instrument.java
+++ b/cmds/am/src/com/android/commands/am/Instrument.java
@@ -20,6 +20,7 @@
 import static android.app.ActivityManager.INSTR_FLAG_DISABLE_HIDDEN_API_CHECKS;
 import static android.app.ActivityManager.INSTR_FLAG_DISABLE_ISOLATED_STORAGE;
 import static android.app.ActivityManager.INSTR_FLAG_DISABLE_TEST_API_CHECKS;
+import static android.app.ActivityManager.INSTR_FLAG_INSTRUMENT_SDK_IN_SANDBOX;
 import static android.app.ActivityManager.INSTR_FLAG_INSTRUMENT_SDK_SANDBOX;
 import static android.app.ActivityManager.INSTR_FLAG_NO_RESTART;
 
@@ -99,6 +100,7 @@
     public String componentNameArg;
     public boolean alwaysCheckSignature = false;
     public boolean instrumentSdkSandbox = false;
+    public boolean instrumentSdkInSandbox = false;
 
     /**
      * Construct the instrument command runner.
@@ -530,6 +532,9 @@
             if (instrumentSdkSandbox) {
                 flags |= INSTR_FLAG_INSTRUMENT_SDK_SANDBOX;
             }
+            if (instrumentSdkInSandbox) {
+                flags |= INSTR_FLAG_INSTRUMENT_SDK_IN_SANDBOX;
+            }
             if (!mAm.startInstrumentation(cn, profileFile, flags, args, watcher, connection, userId,
                         abi)) {
                 throw new AndroidException("INSTRUMENTATION_FAILED: " + cn.flattenToString());
diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp
index a8b6c0b..c216d16 100644
--- a/cmds/bootanimation/BootAnimation.cpp
+++ b/cmds/bootanimation/BootAnimation.cpp
@@ -16,6 +16,7 @@
 
 #define LOG_NDEBUG 0
 #define LOG_TAG "BootAnimation"
+#define ATRACE_TAG ATRACE_TAG_GRAPHICS
 
 #include <vector>
 
@@ -28,6 +29,7 @@
 #include <math.h>
 #include <fcntl.h>
 #include <utils/misc.h>
+#include <utils/Trace.h>
 #include <signal.h>
 #include <time.h>
 
@@ -200,6 +202,7 @@
 BootAnimation::BootAnimation(sp<Callbacks> callbacks)
         : Thread(false), mLooper(new Looper(false)), mClockEnabled(true), mTimeIsAccurate(false),
         mTimeFormat12Hour(false), mTimeCheckThread(nullptr), mCallbacks(callbacks) {
+    ATRACE_CALL();
     mSession = new SurfaceComposerClient();
 
     std::string powerCtl = android::base::GetProperty("sys.powerctl", "");
@@ -213,6 +216,7 @@
 }
 
 BootAnimation::~BootAnimation() {
+    ATRACE_CALL();
     if (mAnimation != nullptr) {
         releaseAnimation(mAnimation);
         mAnimation = nullptr;
@@ -222,6 +226,7 @@
 }
 
 void BootAnimation::onFirstRef() {
+    ATRACE_CALL();
     status_t err = mSession->linkToComposerDeath(this);
     SLOGE_IF(err, "linkToComposerDeath failed (%s) ", strerror(-err));
     if (err == NO_ERROR) {
@@ -240,6 +245,7 @@
 }
 
 void BootAnimation::binderDied(const wp<IBinder>&) {
+    ATRACE_CALL();
     // woah, surfaceflinger died!
     SLOGD("SurfaceFlinger died, exiting...");
 
@@ -251,6 +257,7 @@
 
 static void* decodeImage(const void* encodedData, size_t dataLength, AndroidBitmapInfo* outInfo,
     bool premultiplyAlpha) {
+    ATRACE_CALL();
     AImageDecoder* decoder = nullptr;
     AImageDecoder_createFromBuffer(encodedData, dataLength, &decoder);
     if (!decoder) {
@@ -282,6 +289,7 @@
 
 status_t BootAnimation::initTexture(Texture* texture, AssetManager& assets,
         const char* name, bool premultiplyAlpha) {
+    ATRACE_CALL();
     Asset* asset = assets.open(name, Asset::ACCESS_BUFFER);
     if (asset == nullptr)
         return NO_INIT;
@@ -338,6 +346,7 @@
 
 status_t BootAnimation::initTexture(FileMap* map, int* width, int* height,
     bool premultiplyAlpha) {
+    ATRACE_CALL();
     AndroidBitmapInfo bitmapInfo;
     void* pixels = decodeImage(map->getDataPtr(), map->getDataLength(), &bitmapInfo,
         premultiplyAlpha);
@@ -404,10 +413,12 @@
 
 public:
     DisplayEventCallback(BootAnimation* bootAnimation) {
+        ATRACE_CALL();
         mBootAnimation = bootAnimation;
     }
 
     int handleEvent(int /* fd */, int events, void* /* data */) {
+        ATRACE_CALL();
         if (events & (Looper::EVENT_ERROR | Looper::EVENT_HANGUP)) {
             ALOGE("Display event receiver pipe was closed or an error occurred. events=0x%x",
                     events);
@@ -492,6 +503,7 @@
 }
 
 status_t BootAnimation::readyToRun() {
+    ATRACE_CALL();
     mAssets.addDefaultAssets();
 
     const std::vector<PhysicalDisplayId> ids = SurfaceComposerClient::getPhysicalDisplayIds();
@@ -628,6 +640,7 @@
 }
 
 void BootAnimation::rotateAwayFromNaturalOrientationIfNeeded() {
+    ATRACE_CALL();
     const auto orientation = parseOrientationProperty();
 
     if (orientation == ui::ROTATION_0) {
@@ -650,6 +663,7 @@
 }
 
 ui::Rotation BootAnimation::parseOrientationProperty() {
+    ATRACE_CALL();
     const auto displayIds = SurfaceComposerClient::getPhysicalDisplayIds();
     if (displayIds.size() == 0) {
         return ui::ROTATION_0;
@@ -672,11 +686,13 @@
 }
 
 void BootAnimation::projectSceneToWindow() {
+    ATRACE_CALL();
     glViewport(0, 0, mWidth, mHeight);
     glScissor(0, 0, mWidth, mHeight);
 }
 
 void BootAnimation::resizeSurface(int newWidth, int newHeight) {
+    ATRACE_CALL();
     // We assume this function is called on the animation thread.
     if (newWidth == mWidth && newHeight == mHeight) {
         return;
@@ -704,6 +720,7 @@
 }
 
 bool BootAnimation::preloadAnimation() {
+    ATRACE_CALL();
     findBootAnimationFile();
     if (!mZipFileName.isEmpty()) {
         mAnimation = loadAnimation(mZipFileName);
@@ -714,6 +731,7 @@
 }
 
 bool BootAnimation::findBootAnimationFileInternal(const std::vector<std::string> &files) {
+    ATRACE_CALL();
     for (const std::string& f : files) {
         if (access(f.c_str(), R_OK) == 0) {
             mZipFileName = f.c_str();
@@ -724,6 +742,7 @@
 }
 
 void BootAnimation::findBootAnimationFile() {
+    ATRACE_CALL();
     const bool playDarkAnim = android::base::GetIntProperty("ro.boot.theme", 0) == 1;
     static const std::vector<std::string> bootFiles = {
         APEX_BOOTANIMATION_FILE, playDarkAnim ? PRODUCT_BOOTANIMATION_DARK_FILE : PRODUCT_BOOTANIMATION_FILE,
@@ -747,6 +766,7 @@
 }
 
 GLuint compileShader(GLenum shaderType, const GLchar *source) {
+    ATRACE_CALL();
     GLuint shader = glCreateShader(shaderType);
     glShaderSource(shader, 1, &source, 0);
     glCompileShader(shader);
@@ -765,6 +785,7 @@
 }
 
 GLuint linkShader(GLuint vertexShader, GLuint fragmentShader) {
+    ATRACE_CALL();
     GLuint program = glCreateProgram();
     glAttachShader(program, vertexShader);
     glAttachShader(program, fragmentShader);
@@ -780,6 +801,7 @@
 }
 
 void BootAnimation::initShaders() {
+    ATRACE_CALL();
     bool dynamicColoringEnabled = mAnimation != nullptr && mAnimation->dynamicColoringEnabled;
     GLuint vertexShader = compileShader(GL_VERTEX_SHADER, (const GLchar *)VERTEX_SHADER_SOURCE);
     GLuint imageFragmentShader =
@@ -813,6 +835,7 @@
 }
 
 bool BootAnimation::threadLoop() {
+    ATRACE_CALL();
     bool result;
     initShaders();
 
@@ -838,6 +861,7 @@
 }
 
 bool BootAnimation::android() {
+    ATRACE_CALL();
     glActiveTexture(GL_TEXTURE0);
 
     SLOGD("%sAnimationShownTiming start time: %" PRId64 "ms", mShuttingDown ? "Shutdown" : "Boot",
@@ -905,6 +929,7 @@
 }
 
 void BootAnimation::checkExit() {
+    ATRACE_CALL();
     // Allow surface flinger to gracefully request shutdown
     char value[PROPERTY_VALUE_MAX];
     property_get(EXIT_PROP_NAME, value, "0");
@@ -915,10 +940,12 @@
 }
 
 bool BootAnimation::validClock(const Animation::Part& part) {
+    ATRACE_CALL();
     return part.clockPosX != TEXT_MISSING_VALUE && part.clockPosY != TEXT_MISSING_VALUE;
 }
 
 bool parseTextCoord(const char* str, int* dest) {
+    ATRACE_CALL();
     if (strcmp("c", str) == 0) {
         *dest = TEXT_CENTER_VALUE;
         return true;
@@ -935,6 +962,7 @@
 
 // Parse two position coordinates. If only string is non-empty, treat it as the y value.
 void parsePosition(const char* str1, const char* str2, int* x, int* y) {
+    ATRACE_CALL();
     bool success = false;
     if (strlen(str1) == 0) {  // No values were specified
         // success = false
@@ -963,6 +991,7 @@
 // If the input string isn't valid, parseColor returns false and color is
 // left unchanged.
 static bool parseColor(const char str[7], float color[3]) {
+    ATRACE_CALL();
     float tmpColor[3];
     for (int i = 0; i < 3; i++) {
         int val = 0;
@@ -985,6 +1014,7 @@
 // If the input color string is empty, set color with values in defaultColor.
 static void parseColorDecimalString(const std::string& colorString,
     float color[3], float defaultColor[3]) {
+    ATRACE_CALL();
     if (colorString == "") {
         memcpy(color, defaultColor, sizeof(float) * 3);
         return;
@@ -996,6 +1026,7 @@
 }
 
 static bool readFile(ZipFileRO* zip, const char* name, String8& outString) {
+    ATRACE_CALL();
     ZipEntryRO entry = zip->findEntryByName(name);
     SLOGE_IF(!entry, "couldn't find %s", name);
     if (!entry) {
@@ -1018,6 +1049,7 @@
 // columns are the printable ASCII characters 0x20 - 0x7f.  The
 // top row is regular text; the bottom row is bold.
 status_t BootAnimation::initFont(Font* font, const char* fallback) {
+    ATRACE_CALL();
     status_t status = NO_ERROR;
 
     if (font->map != nullptr) {
@@ -1045,6 +1077,7 @@
 }
 
 void BootAnimation::drawText(const char* str, const Font& font, bool bold, int* x, int* y) {
+    ATRACE_CALL();
     glEnable(GL_BLEND);  // Allow us to draw on top of the animation
     glBindTexture(GL_TEXTURE_2D, font.texture.name);
     glUseProgram(mTextShader);
@@ -1092,6 +1125,7 @@
 
 // We render 12 or 24 hour time.
 void BootAnimation::drawClock(const Font& font, const int xPos, const int yPos) {
+    ATRACE_CALL();
     static constexpr char TIME_FORMAT_12[] = "%l:%M";
     static constexpr char TIME_FORMAT_24[] = "%H:%M";
     static constexpr int TIME_LENGTH = 6;
@@ -1117,6 +1151,7 @@
 }
 
 void BootAnimation::drawProgress(int percent, const Font& font, const int xPos, const int yPos) {
+    ATRACE_CALL();
     static constexpr int PERCENT_LENGTH = 5;
 
     char percentBuff[PERCENT_LENGTH];
@@ -1129,6 +1164,7 @@
 }
 
 bool BootAnimation::parseAnimationDesc(Animation& animation)  {
+    ATRACE_CALL();
     String8 desString;
 
     if (!readFile(animation.zip, "desc.txt", desString)) {
@@ -1252,6 +1288,7 @@
 }
 
 bool BootAnimation::preloadZip(Animation& animation) {
+    ATRACE_CALL();
     // read all the data structures
     const size_t pcount = animation.parts.size();
     void *cookie = nullptr;
@@ -1357,6 +1394,7 @@
 }
 
 bool BootAnimation::movie() {
+    ATRACE_CALL();
     if (mAnimation == nullptr) {
         mAnimation = loadAnimation(mZipFileName);
     }
@@ -1450,6 +1488,7 @@
 bool BootAnimation::shouldStopPlayingPart(const Animation::Part& part,
                                           const int fadedFramesCount,
                                           const int lastDisplayedProgress) {
+    ATRACE_CALL();
     // stop playing only if it is time to exit and it's a partial part which has been faded out
     return exitPending() && !part.playUntilComplete && fadedFramesCount >= part.framesToFadeCount &&
         (lastDisplayedProgress == 0 || lastDisplayedProgress == 100);
@@ -1461,6 +1500,7 @@
 }
 
 void BootAnimation::drawTexturedQuad(float xStart, float yStart, float width, float height) {
+    ATRACE_CALL();
     // Map coordinates from screen space to world space.
     float x0 = mapLinear(xStart, 0, mWidth, -1, 1);
     float y0 = mapLinear(yStart, 0, mHeight, -1, 1);
@@ -1484,6 +1524,7 @@
 }
 
 void BootAnimation::initDynamicColors() {
+    ATRACE_CALL();
     for (int i = 0; i < DYNAMIC_COLOR_COUNT; i++) {
         const auto syspropName = "persist.bootanim.color" + std::to_string(i + 1);
         const auto syspropValue = android::base::GetProperty(syspropName, "");
@@ -1510,6 +1551,7 @@
 }
 
 bool BootAnimation::playAnimation(const Animation& animation) {
+    ATRACE_CALL();
     const size_t pcount = animation.parts.size();
     nsecs_t frameDuration = s2ns(1) / animation.fps;
 
@@ -1720,12 +1762,14 @@
 }
 
 void BootAnimation::processDisplayEvents() {
+    ATRACE_CALL();
     // This will poll mDisplayEventReceiver and if there are new events it'll call
     // displayEventCallback synchronously.
     mLooper->pollOnce(0);
 }
 
 void BootAnimation::handleViewport(nsecs_t timestep) {
+    ATRACE_CALL();
     if (mShuttingDown || !mFlingerSurfaceControl || mTargetInset == 0) {
         return;
     }
@@ -1768,6 +1812,7 @@
 }
 
 void BootAnimation::releaseAnimation(Animation* animation) const {
+    ATRACE_CALL();
     for (Vector<Animation::Part>::iterator it = animation->parts.begin(),
          e = animation->parts.end(); it != e; ++it) {
         if (it->animation)
@@ -1779,6 +1824,7 @@
 }
 
 BootAnimation::Animation* BootAnimation::loadAnimation(const String8& fn) {
+    ATRACE_CALL();
     if (mLoadedFiles.indexOf(fn) >= 0) {
         SLOGE("File \"%s\" is already loaded. Cyclic ref is not allowed",
             fn.string());
@@ -1810,6 +1856,7 @@
 }
 
 bool BootAnimation::updateIsTimeAccurate() {
+    ATRACE_CALL();
     static constexpr long long MAX_TIME_IN_PAST =   60000LL * 60LL * 24LL * 30LL;  // 30 days
     static constexpr long long MAX_TIME_IN_FUTURE = 60000LL * 90LL;  // 90 minutes
 
@@ -1853,11 +1900,13 @@
     mInotifyFd(-1), mBootAnimWd(-1), mTimeWd(-1), mBootAnimation(bootAnimation) {}
 
 BootAnimation::TimeCheckThread::~TimeCheckThread() {
+    ATRACE_CALL();
     // mInotifyFd may be -1 but that's ok since we're not at risk of attempting to close a valid FD.
     close(mInotifyFd);
 }
 
 bool BootAnimation::TimeCheckThread::threadLoop() {
+    ATRACE_CALL();
     bool shouldLoop = doThreadLoop() && !mBootAnimation->mTimeIsAccurate
         && mBootAnimation->mClockEnabled;
     if (!shouldLoop) {
@@ -1868,6 +1917,7 @@
 }
 
 bool BootAnimation::TimeCheckThread::doThreadLoop() {
+    ATRACE_CALL();
     static constexpr int BUFF_LEN (10 * (sizeof(struct inotify_event) + NAME_MAX + 1));
 
     // Poll instead of doing a blocking read so the Thread can exit if requested.
@@ -1905,6 +1955,7 @@
 }
 
 void BootAnimation::TimeCheckThread::addTimeDirWatch() {
+        ATRACE_CALL();
         mTimeWd = inotify_add_watch(mInotifyFd, BOOTANIM_TIME_DIR_PATH,
                 IN_CLOSE_WRITE | IN_MOVED_TO | IN_ATTRIB);
         if (mTimeWd > 0) {
@@ -1915,6 +1966,7 @@
 }
 
 status_t BootAnimation::TimeCheckThread::readyToRun() {
+    ATRACE_CALL();
     mInotifyFd = inotify_init();
     if (mInotifyFd < 0) {
         SLOGE("Could not initialize inotify fd");
diff --git a/cmds/bootanimation/audioplay.cpp b/cmds/bootanimation/audioplay.cpp
index c5e16c6..9b95b04 100644
--- a/cmds/bootanimation/audioplay.cpp
+++ b/cmds/bootanimation/audioplay.cpp
@@ -20,6 +20,8 @@
 #define CHATTY ALOGD
 #define LOG_TAG "audioplay"
 
+#include <binder/IServiceManager.h>
+
 #include "audioplay.h"
 
 #include <string.h>
@@ -316,8 +318,13 @@
         : Thread(false),
           mExampleAudioData(exampleAudioData),
           mExampleAudioLength(exampleAudioLength) {}
+
 private:
     virtual bool threadLoop() {
+        if (defaultServiceManager()->checkService(String16("audio")) == nullptr) {
+            ALOGW("Audio service is not ready yet, ignore creating playback engine");
+            return false;
+        }
         audioplay::create(mExampleAudioData, mExampleAudioLength);
         // Exit immediately
         return false;
@@ -334,6 +341,11 @@
 public:
     void init(const Vector<Animation::Part>& parts) override {
         const Animation::Part* partWithAudio = nullptr;
+
+        if (!playSoundsAllowed()) {
+            return;
+        }
+
         for (const Animation::Part& part : parts) {
             if (part.audioData != nullptr) {
                 partWithAudio = &part;
@@ -401,14 +413,14 @@
 }
 
 bool playClip(const uint8_t* buf, int size) {
-    // Parse the WAV header
-    const ChunkFormat* chunkFormat;
-    if (!parseClipBuf(buf, size, &chunkFormat, &nextBuffer, &nextSize)) {
+    if (!hasPlayer()) {
+        ALOGE("cannot play clip %p without a player", buf);
         return false;
     }
 
-    if (!hasPlayer()) {
-        ALOGD("cannot play clip %p without a player", buf);
+    // Parse the WAV header
+    const ChunkFormat* chunkFormat;
+    if (!parseClipBuf(buf, size, &chunkFormat, &nextBuffer, &nextSize)) {
         return false;
     }
 
@@ -433,11 +445,9 @@
 void setPlaying(bool isPlaying) {
     if (!hasPlayer()) return;
 
-    SLresult result;
-
     if (nullptr != bqPlayerPlay) {
         // set the player's state
-        result = (*bqPlayerPlay)->SetPlayState(bqPlayerPlay,
+        (*bqPlayerPlay)->SetPlayState(bqPlayerPlay,
             isPlaying ? SL_PLAYSTATE_PLAYING : SL_PLAYSTATE_STOPPED);
     }
 
diff --git a/cmds/idmap2/idmap2/Lookup.cpp b/cmds/idmap2/idmap2/Lookup.cpp
index f41e57c..add0d8d 100644
--- a/cmds/idmap2/idmap2/Lookup.cpp
+++ b/cmds/idmap2/idmap2/Lookup.cpp
@@ -174,7 +174,7 @@
     return Error("failed to parse config");
   }
 
-  std::vector<std::unique_ptr<const ApkAssets>> apk_assets;
+  std::vector<AssetManager2::ApkAssetsPtr> apk_assets;
   std::string target_path;
   std::string target_package_name;
   for (size_t i = 0; i < idmap_paths.size(); i++) {
@@ -217,24 +217,21 @@
     apk_assets.push_back(std::move(overlay_apk));
   }
 
-  // AssetManager2::SetApkAssets requires raw ApkAssets pointers, not unique_ptrs
-  std::vector<const ApkAssets*> raw_pointer_apk_assets;
-  std::transform(apk_assets.cbegin(), apk_assets.cend(), std::back_inserter(raw_pointer_apk_assets),
-                 [](const auto& p) -> const ApkAssets* { return p.get(); });
-  AssetManager2 am;
-  am.SetApkAssets(raw_pointer_apk_assets);
-  am.SetConfiguration(config);
+  {
+    // Make sure |apk_assets| vector outlives the asset manager as it doesn't own the assets.
+    AssetManager2 am(apk_assets, config);
 
-  const Result<ResourceId> resid = ParseResReference(am, resid_str, target_package_name);
-  if (!resid) {
-    return Error(resid.GetError(), "failed to parse resource ID");
-  }
+    const Result<ResourceId> resid = ParseResReference(am, resid_str, target_package_name);
+    if (!resid) {
+      return Error(resid.GetError(), "failed to parse resource ID");
+    }
 
-  const Result<std::string> value = GetValue(&am, *resid);
-  if (!value) {
-    return Error(value.GetError(), "resource 0x%08x not found", *resid);
+    const Result<std::string> value = GetValue(&am, *resid);
+    if (!value) {
+      return Error(value.GetError(), "resource 0x%08x not found", *resid);
+    }
+    std::cout << *value << std::endl;
   }
-  std::cout << *value << std::endl;
 
   return Unit{};
 }
diff --git a/cmds/idmap2/libidmap2/ResourceContainer.cpp b/cmds/idmap2/libidmap2/ResourceContainer.cpp
index 0e35904..7869fbd 100644
--- a/cmds/idmap2/libidmap2/ResourceContainer.cpp
+++ b/cmds/idmap2/libidmap2/ResourceContainer.cpp
@@ -262,7 +262,7 @@
 }
 
 struct ResState {
-  std::unique_ptr<ApkAssets> apk_assets;
+  AssetManager2::ApkAssetsPtr apk_assets;
   const LoadedArsc* arsc;
   const LoadedPackage* package;
   std::unique_ptr<AssetManager2> am;
@@ -284,7 +284,7 @@
     }
 
     state.am = std::make_unique<AssetManager2>();
-    if (!state.am->SetApkAssets({state.apk_assets.get()})) {
+    if (!state.am->SetApkAssets({state.apk_assets})) {
       return Error("failed to create asset manager");
     }
 
diff --git a/cmds/idmap2/tests/ResourceUtilsTests.cpp b/cmds/idmap2/tests/ResourceUtilsTests.cpp
index 6914208..011040b 100644
--- a/cmds/idmap2/tests/ResourceUtilsTests.cpp
+++ b/cmds/idmap2/tests/ResourceUtilsTests.cpp
@@ -38,7 +38,7 @@
     apk_assets_ = ApkAssets::Load(GetTargetApkPath());
     ASSERT_THAT(apk_assets_, NotNull());
 
-    am_.SetApkAssets({apk_assets_.get()});
+    am_.SetApkAssets({apk_assets_});
   }
 
   const AssetManager2& GetAssetManager() {
@@ -47,7 +47,7 @@
 
  private:
   AssetManager2 am_;
-  std::unique_ptr<const ApkAssets> apk_assets_;
+  AssetManager2::ApkAssetsPtr apk_assets_;
 };
 
 TEST_F(ResourceUtilsTests, ResToTypeEntryName) {
diff --git a/cmds/locksettings/Android.bp b/cmds/locksettings/Android.bp
index 5ee5824..ee31aed 100644
--- a/cmds/locksettings/Android.bp
+++ b/cmds/locksettings/Android.bp
@@ -21,8 +21,7 @@
     default_applicable_licenses: ["frameworks_base_license"],
 }
 
-java_binary {
+sh_binary {
     name: "locksettings",
-    wrapper: "locksettings.sh",
-    srcs: ["**/*.java"],
+    src: "locksettings.sh",
 }
diff --git a/cmds/locksettings/locksettings.sh b/cmds/locksettings/locksettings.sh
index 0ef4fa9..2f8d868 100755
--- a/cmds/locksettings/locksettings.sh
+++ b/cmds/locksettings/locksettings.sh
@@ -1,6 +1,2 @@
 #!/system/bin/sh
-# Script to start "locksettings" on the device
-#
-base=/system
-export CLASSPATH=$base/framework/locksettings.jar
-exec app_process $base/bin com.android.commands.locksettings.LockSettingsCmd "$@"
+cmd lock_settings "$@"
diff --git a/cmds/locksettings/src/com/android/commands/locksettings/LockSettingsCmd.java b/cmds/locksettings/src/com/android/commands/locksettings/LockSettingsCmd.java
deleted file mode 100644
index 7d9260a..0000000
--- a/cmds/locksettings/src/com/android/commands/locksettings/LockSettingsCmd.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2016 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.commands.locksettings;
-
-import android.os.ResultReceiver;
-import android.os.ServiceManager;
-import android.os.ShellCallback;
-
-import com.android.internal.os.BaseCommand;
-import com.android.internal.widget.ILockSettings;
-
-import java.io.FileDescriptor;
-import java.io.PrintStream;
-
-public final class LockSettingsCmd extends BaseCommand {
-
-    public static void main(String[] args) {
-        (new LockSettingsCmd()).run(args);
-    }
-
-    @Override
-    public void onShowUsage(PrintStream out) {
-        main(new String[] { "help" });
-    }
-
-    @Override
-    public void onRun() throws Exception {
-        ILockSettings lockSettings = ILockSettings.Stub.asInterface(
-                ServiceManager.getService("lock_settings"));
-        lockSettings.asBinder().shellCommand(FileDescriptor.in, FileDescriptor.out,
-                FileDescriptor.err, getRawArgs(), new ShellCallback(), new ResultReceiver(null) {});
-    }
-}
diff --git a/core/api/current.txt b/core/api/current.txt
index 288ab47..12d55f4 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -3662,13 +3662,13 @@
   }
 
   public class Account implements android.os.Parcelable {
-    ctor public Account(String, String);
+    ctor public Account(@NonNull String, @NonNull String);
     ctor public Account(android.os.Parcel);
     method public int describeContents();
     method public void writeToParcel(android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.accounts.Account> CREATOR;
-    field public final String name;
-    field public final String type;
+    field @NonNull public final String name;
+    field @NonNull public final String type;
   }
 
   @Deprecated public class AccountAuthenticatorActivity extends android.app.Activity {
@@ -4505,6 +4505,7 @@
     method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
     method public final void runOnUiThread(Runnable);
     method public void setActionBar(@Nullable android.widget.Toolbar);
+    method public void setAllowCrossUidActivitySwitchFromBelow(boolean);
     method public void setContentTransitionManager(android.transition.TransitionManager);
     method public void setContentView(@LayoutRes int);
     method public void setContentView(android.view.View);
@@ -6658,6 +6659,21 @@
     field protected android.app.Notification.Builder mBuilder;
   }
 
+  public static final class Notification.TvExtender implements android.app.Notification.Extender {
+    ctor public Notification.TvExtender();
+    ctor public Notification.TvExtender(@NonNull android.app.Notification);
+    method @NonNull public android.app.Notification.Builder extend(@NonNull android.app.Notification.Builder);
+    method @Nullable public String getChannelId();
+    method @Nullable public android.app.PendingIntent getContentIntent();
+    method @Nullable public android.app.PendingIntent getDeleteIntent();
+    method public boolean isAvailableOnTv();
+    method public boolean isSuppressShowOverApps();
+    method @NonNull public android.app.Notification.TvExtender setChannelId(@Nullable String);
+    method @NonNull public android.app.Notification.TvExtender setContentIntent(@Nullable android.app.PendingIntent);
+    method @NonNull public android.app.Notification.TvExtender setDeleteIntent(@Nullable android.app.PendingIntent);
+    method @NonNull public android.app.Notification.TvExtender setSuppressShowOverApps(boolean);
+  }
+
   public static final class Notification.WearableExtender implements android.app.Notification.Extender {
     ctor public Notification.WearableExtender();
     ctor public Notification.WearableExtender(android.app.Notification);
@@ -9684,7 +9700,8 @@
     ctor public AttributionSource.Builder(@NonNull android.content.AttributionSource);
     method @NonNull public android.content.AttributionSource build();
     method @NonNull public android.content.AttributionSource.Builder setAttributionTag(@Nullable String);
-    method @NonNull public android.content.AttributionSource.Builder setNext(@Nullable android.content.AttributionSource);
+    method @Deprecated @NonNull public android.content.AttributionSource.Builder setNext(@Nullable android.content.AttributionSource);
+    method @NonNull public android.content.AttributionSource.Builder setNextAttributionSource(@NonNull android.content.AttributionSource);
     method @NonNull public android.content.AttributionSource.Builder setPackageName(@Nullable String);
     method @NonNull public android.content.AttributionSource.Builder setPid(int);
   }
@@ -14237,9 +14254,11 @@
 
   public final class SQLiteDatabase extends android.database.sqlite.SQLiteClosable {
     method public void beginTransaction();
+    method public void beginTransactionDeferred();
     method public void beginTransactionNonExclusive();
-    method public void beginTransactionWithListener(android.database.sqlite.SQLiteTransactionListener);
-    method public void beginTransactionWithListenerNonExclusive(android.database.sqlite.SQLiteTransactionListener);
+    method public void beginTransactionWithListener(@Nullable android.database.sqlite.SQLiteTransactionListener);
+    method public void beginTransactionWithListenerDeferred(@Nullable android.database.sqlite.SQLiteTransactionListener);
+    method public void beginTransactionWithListenerNonExclusive(@Nullable android.database.sqlite.SQLiteTransactionListener);
     method public android.database.sqlite.SQLiteStatement compileStatement(String) throws android.database.SQLException;
     method @NonNull public static android.database.sqlite.SQLiteDatabase create(@Nullable android.database.sqlite.SQLiteDatabase.CursorFactory);
     method @NonNull public static android.database.sqlite.SQLiteDatabase createInMemory(@NonNull android.database.sqlite.SQLiteDatabase.OpenParams);
@@ -24805,7 +24824,6 @@
   }
 
   public class Ringtone {
-    method protected void finalize();
     method public android.media.AudioAttributes getAudioAttributes();
     method @Deprecated public int getStreamType();
     method public String getTitle(android.content.Context);
@@ -32653,6 +32671,7 @@
     field public static final int S_V2 = 32; // 0x20
     field public static final int TIRAMISU = 33; // 0x21
     field public static final int UPSIDE_DOWN_CAKE = 34; // 0x22
+    field public static final int VANILLA_ICE_CREAM = 10000; // 0x2710
   }
 
   public final class Bundle extends android.os.BaseBundle implements java.lang.Cloneable android.os.Parcelable {
@@ -37093,6 +37112,7 @@
     field public static final String ACTION_CAST_SETTINGS = "android.settings.CAST_SETTINGS";
     field public static final String ACTION_CHANNEL_NOTIFICATION_SETTINGS = "android.settings.CHANNEL_NOTIFICATION_SETTINGS";
     field public static final String ACTION_CONDITION_PROVIDER_SETTINGS = "android.settings.ACTION_CONDITION_PROVIDER_SETTINGS";
+    field public static final String ACTION_CREDENTIAL_PROVIDER = "android.settings.CREDENTIAL_PROVIDER";
     field public static final String ACTION_DATA_ROAMING_SETTINGS = "android.settings.DATA_ROAMING_SETTINGS";
     field public static final String ACTION_DATA_USAGE_SETTINGS = "android.settings.DATA_USAGE_SETTINGS";
     field public static final String ACTION_DATE_SETTINGS = "android.settings.DATE_SETTINGS";
@@ -49031,7 +49051,7 @@
     method public abstract void captureEndValues(android.transition.TransitionValues);
     method public abstract void captureStartValues(android.transition.TransitionValues);
     method public android.transition.Transition clone();
-    method public android.animation.Animator createAnimator(android.view.ViewGroup, android.transition.TransitionValues, android.transition.TransitionValues);
+    method @Nullable public android.animation.Animator createAnimator(@NonNull android.view.ViewGroup, @Nullable android.transition.TransitionValues, @Nullable android.transition.TransitionValues);
     method public android.transition.Transition excludeChildren(int, boolean);
     method public android.transition.Transition excludeChildren(android.view.View, boolean);
     method public android.transition.Transition excludeChildren(Class, boolean);
@@ -51594,7 +51614,7 @@
     field public static final int TYPE_CONTEXT_MENU = 1001; // 0x3e9
     field public static final int TYPE_COPY = 1011; // 0x3f3
     field public static final int TYPE_CROSSHAIR = 1007; // 0x3ef
-    field public static final int TYPE_DEFAULT = 1000; // 0x3e8
+    field @Deprecated public static final int TYPE_DEFAULT = 1000; // 0x3e8
     field public static final int TYPE_GRAB = 1020; // 0x3fc
     field public static final int TYPE_GRABBING = 1021; // 0x3fd
     field public static final int TYPE_HAND = 1002; // 0x3ea
@@ -55062,6 +55082,7 @@
 
   public final class AutofillManager {
     method public void cancel();
+    method public void clearAutofillRequestCallback();
     method public void commit();
     method public void disableAutofillServices();
     method @Nullable public android.content.ComponentName getAutofillServiceComponentName();
@@ -55088,6 +55109,7 @@
     method public void registerCallback(@Nullable android.view.autofill.AutofillManager.AutofillCallback);
     method public void requestAutofill(@NonNull android.view.View);
     method public void requestAutofill(@NonNull android.view.View, int, @NonNull android.graphics.Rect);
+    method @RequiresPermission(android.Manifest.permission.PROVIDE_OWN_AUTOFILL_SUGGESTIONS) public void setAutofillRequestCallback(@NonNull java.util.concurrent.Executor, @NonNull android.view.autofill.AutofillRequestCallback);
     method public void setUserData(@Nullable android.service.autofill.UserData);
     method public boolean showAutofillDialog(@NonNull android.view.View);
     method public boolean showAutofillDialog(@NonNull android.view.View, int);
@@ -55108,6 +55130,10 @@
     field public static final int EVENT_INPUT_UNAVAILABLE = 3; // 0x3
   }
 
+  public interface AutofillRequestCallback {
+    method public void onFillRequest(@Nullable android.view.inputmethod.InlineSuggestionsRequest, @NonNull android.os.CancellationSignal, @NonNull android.service.autofill.FillCallback);
+  }
+
   public final class AutofillValue implements android.os.Parcelable {
     method public int describeContents();
     method public static android.view.autofill.AutofillValue forDate(long);
@@ -55557,10 +55583,12 @@
     ctor public InlineSuggestionsRequest.Builder(@NonNull java.util.List<android.widget.inline.InlinePresentationSpec>);
     method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder addInlinePresentationSpecs(@NonNull android.widget.inline.InlinePresentationSpec);
     method @NonNull public android.view.inputmethod.InlineSuggestionsRequest build();
+    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setClientSupported(boolean);
     method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setExtras(@NonNull android.os.Bundle);
     method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setInlinePresentationSpecs(@NonNull java.util.List<android.widget.inline.InlinePresentationSpec>);
     method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setInlineTooltipPresentationSpec(@NonNull android.widget.inline.InlinePresentationSpec);
     method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setMaxSuggestionCount(int);
+    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setServiceSupported(boolean);
     method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setSupportedLocales(@NonNull android.os.LocaleList);
   }
 
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index ace7d59..f751dd3 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -271,6 +271,7 @@
     field public static final String READ_DEVICE_CONFIG = "android.permission.READ_DEVICE_CONFIG";
     field public static final String READ_DREAM_STATE = "android.permission.READ_DREAM_STATE";
     field public static final String READ_GLOBAL_APP_SEARCH_DATA = "android.permission.READ_GLOBAL_APP_SEARCH_DATA";
+    field public static final String READ_INSTALLED_SESSION_PATHS = "android.permission.READ_INSTALLED_SESSION_PATHS";
     field public static final String READ_INSTALL_SESSIONS = "android.permission.READ_INSTALL_SESSIONS";
     field public static final String READ_NETWORK_USAGE_HISTORY = "android.permission.READ_NETWORK_USAGE_HISTORY";
     field public static final String READ_OEM_UNLOCK_STATE = "android.permission.READ_OEM_UNLOCK_STATE";
@@ -969,19 +970,8 @@
   }
 
   public static final class Notification.TvExtender implements android.app.Notification.Extender {
-    ctor public Notification.TvExtender();
-    ctor public Notification.TvExtender(android.app.Notification);
-    method public android.app.Notification.Builder extend(android.app.Notification.Builder);
-    method public String getChannelId();
-    method public android.app.PendingIntent getContentIntent();
-    method public android.app.PendingIntent getDeleteIntent();
     method public boolean getSuppressShowOverApps();
-    method public boolean isAvailableOnTv();
     method public android.app.Notification.TvExtender setChannel(String);
-    method public android.app.Notification.TvExtender setChannelId(String);
-    method public android.app.Notification.TvExtender setContentIntent(android.app.PendingIntent);
-    method public android.app.Notification.TvExtender setDeleteIntent(android.app.PendingIntent);
-    method public android.app.Notification.TvExtender setSuppressShowOverApps(boolean);
   }
 
   public final class NotificationChannel implements android.os.Parcelable {
@@ -3214,7 +3204,7 @@
     method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void registerIntentInterceptor(@NonNull android.content.IntentFilter, @NonNull java.util.concurrent.Executor, @NonNull android.companion.virtual.VirtualDeviceManager.IntentInterceptorCallback);
     method public void removeActivityListener(@NonNull android.companion.virtual.VirtualDeviceManager.ActivityListener);
     method public void removeSoundEffectListener(@NonNull android.companion.virtual.VirtualDeviceManager.SoundEffectListener);
-    method @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void setShowPointerIcon(boolean);
+    method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void setShowPointerIcon(boolean);
     method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void unregisterIntentInterceptor(@NonNull android.companion.virtual.VirtualDeviceManager.IntentInterceptorCallback);
   }
 
@@ -3842,6 +3832,7 @@
     method public boolean getInstallAsVirtualPreload();
     method public int getPendingUserActionReason();
     method public boolean getRequestDowngrade();
+    method @Nullable @RequiresPermission(android.Manifest.permission.READ_INSTALLED_SESSION_PATHS) public String getResolvedBaseApkPath();
     method public int getRollbackDataPolicy();
     method @NonNull public java.util.Set<java.lang.String> getWhitelistedRestrictedPermissions();
   }
@@ -10122,6 +10113,7 @@
     method public int getDeviceType();
     method @NonNull public android.os.Bundle getExtras();
     method @NonNull public String getModelName();
+    method public boolean isBatteryCharging();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.sharedconnectivity.app.NetworkProviderInfo> CREATOR;
     field public static final int DEVICE_TYPE_AUTO = 5; // 0x5
@@ -10135,6 +10127,7 @@
   public static final class NetworkProviderInfo.Builder {
     ctor public NetworkProviderInfo.Builder(@NonNull String, @NonNull String);
     method @NonNull public android.net.wifi.sharedconnectivity.app.NetworkProviderInfo build();
+    method @NonNull public android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.Builder setBatteryCharging(boolean);
     method @NonNull public android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.Builder setBatteryPercentage(@IntRange(from=0, to=100) int);
     method @NonNull public android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.Builder setConnectionStrength(@IntRange(from=0, to=4) int);
     method @NonNull public android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.Builder setDeviceName(@NonNull String);
@@ -10992,7 +10985,7 @@
     method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS, android.Manifest.permission.QUERY_USERS}) public boolean isPrimaryUser();
     method public static boolean isRemoveResultSuccessful(int);
     method public boolean isRestrictedProfile();
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}, conditional=true) public boolean isRestrictedProfile(@NonNull android.os.UserHandle);
+    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS, android.Manifest.permission.QUERY_USERS}, conditional=true) public boolean isRestrictedProfile(@NonNull android.os.UserHandle);
     method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.QUERY_USERS}) public boolean isSameProfileGroup(@NonNull android.os.UserHandle, @NonNull android.os.UserHandle);
     method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS, android.Manifest.permission.QUERY_USERS, android.Manifest.permission.GET_ACCOUNTS_PRIVILEGED}) public boolean isUserNameSet();
     method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS, android.Manifest.permission.QUERY_USERS}) public boolean isUserOfType(@NonNull String);
@@ -11234,7 +11227,7 @@
 
   public abstract class PermissionControllerService extends android.app.Service {
     ctor public PermissionControllerService();
-    method @NonNull @RequiresPermission("android.permission.MANAGE_COMPANION_DEVICES") public String getPrivilegesDescriptionStringForProfile(@NonNull String);
+    method @Deprecated @NonNull @RequiresPermission("android.permission.MANAGE_COMPANION_DEVICES") public String getPrivilegesDescriptionStringForProfile(@NonNull String);
     method @BinderThread public void onApplyStagedRuntimePermissionBackup(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.function.Consumer<java.lang.Boolean>);
     method @NonNull public final android.os.IBinder onBind(android.content.Intent);
     method @BinderThread public abstract void onCountPermissionApps(@NonNull java.util.List<java.lang.String>, int, @NonNull java.util.function.IntConsumer);
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index ae63816..7cfaa9f 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -842,6 +842,7 @@
     ctor public AttributionSource(int, @Nullable String, @Nullable String);
     ctor public AttributionSource(int, @Nullable String, @Nullable String, @NonNull android.os.IBinder);
     ctor public AttributionSource(int, @Nullable String, @Nullable String, @Nullable java.util.Set<java.lang.String>, @Nullable android.content.AttributionSource);
+    ctor public AttributionSource(int, int, @Nullable String, @Nullable String, @NonNull android.os.IBinder, @Nullable String[], @Nullable android.content.AttributionSource);
     method public void enforceCallingPid();
   }
 
@@ -3177,6 +3178,7 @@
     field public static final int HAL_SERVICE_MESSAGING = 2; // 0x2
     field public static final int HAL_SERVICE_MODEM = 3; // 0x3
     field public static final int HAL_SERVICE_NETWORK = 4; // 0x4
+    field public static final int HAL_SERVICE_SATELLITE = 8; // 0x8
     field public static final int HAL_SERVICE_SIM = 5; // 0x5
     field public static final int HAL_SERVICE_VOICE = 6; // 0x6
     field public static final android.util.Pair HAL_VERSION_UNKNOWN;
@@ -3626,18 +3628,12 @@
   }
 
   public final class AutofillManager {
-    method public void clearAutofillRequestCallback();
-    method @RequiresPermission(android.Manifest.permission.PROVIDE_OWN_AUTOFILL_SUGGESTIONS) public void setAutofillRequestCallback(@NonNull java.util.concurrent.Executor, @NonNull android.view.autofill.AutofillRequestCallback);
     field public static final String ANY_HINT = "any";
     field public static final int FLAG_SMART_SUGGESTION_OFF = 0; // 0x0
     field public static final int FLAG_SMART_SUGGESTION_SYSTEM = 1; // 0x1
     field public static final int MAX_TEMP_AUGMENTED_SERVICE_DURATION_MS = 120000; // 0x1d4c0
   }
 
-  public interface AutofillRequestCallback {
-    method public void onFillRequest(@Nullable android.view.inputmethod.InlineSuggestionsRequest, @NonNull android.os.CancellationSignal, @NonNull android.service.autofill.FillCallback);
-  }
-
 }
 
 package android.view.contentcapture {
@@ -3761,11 +3757,6 @@
     method @NonNull public static android.view.inputmethod.InlineSuggestionInfo newInlineSuggestionInfo(@NonNull android.widget.inline.InlinePresentationSpec, @NonNull String, @Nullable String[], @NonNull String, boolean);
   }
 
-  public static final class InlineSuggestionsRequest.Builder {
-    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setClientSupported(boolean);
-    method @NonNull public android.view.inputmethod.InlineSuggestionsRequest.Builder setServiceSupported(boolean);
-  }
-
   public final class InlineSuggestionsResponse implements android.os.Parcelable {
     method @NonNull public static android.view.inputmethod.InlineSuggestionsResponse newInlineSuggestionsResponse(@NonNull java.util.List<android.view.inputmethod.InlineSuggestion>);
   }
diff --git a/core/api/test-lint-baseline.txt b/core/api/test-lint-baseline.txt
index cf02643..4a97280 100644
--- a/core/api/test-lint-baseline.txt
+++ b/core/api/test-lint-baseline.txt
@@ -183,10 +183,6 @@
     android.telecom.ConnectionRequest does not declare a `shouldShowIncomingCallUi()` method matching method android.telecom.ConnectionRequest.Builder.setShouldShowIncomingCallUi(boolean)
 MissingGetterMatchingBuilder: android.view.Display.Mode.Builder#setResolution(int, int):
     android.view.Display.Mode does not declare a `getResolution()` method matching method android.view.Display.Mode.Builder.setResolution(int,int)
-MissingGetterMatchingBuilder: android.view.inputmethod.InlineSuggestionsRequest.Builder#setClientSupported(boolean):
-    android.view.inputmethod.InlineSuggestionsRequest does not declare a `isClientSupported()` method matching method android.view.inputmethod.InlineSuggestionsRequest.Builder.setClientSupported(boolean)
-MissingGetterMatchingBuilder: android.view.inputmethod.InlineSuggestionsRequest.Builder#setServiceSupported(boolean):
-    android.view.inputmethod.InlineSuggestionsRequest does not declare a `isServiceSupported()` method matching method android.view.inputmethod.InlineSuggestionsRequest.Builder.setServiceSupported(boolean)
 
 
 MissingNullability: android.app.Activity#onMovedToDisplay(int, android.content.res.Configuration) parameter #1:
diff --git a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
index d4a96b4..6550f30 100644
--- a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
+++ b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
@@ -107,81 +107,82 @@
      * Capability: This accessibility service can retrieve the active window content.
      * @see android.R.styleable#AccessibilityService_canRetrieveWindowContent
      */
-    public static final int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 0x00000001;
+    public static final int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 1 /* << 0 */;
 
     /**
      * Capability: This accessibility service can request touch exploration mode in which
      * touched items are spoken aloud and the UI can be explored via gestures.
      * @see android.R.styleable#AccessibilityService_canRequestTouchExplorationMode
      */
-    public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 0x00000002;
+    public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 1 << 1;
 
     /**
      * @deprecated No longer used
      */
-    public static final int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 0x00000004;
+    @Deprecated
+    public static final int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 1 << 2;
 
     /**
      * Capability: This accessibility service can request to filter the key event stream.
      * @see android.R.styleable#AccessibilityService_canRequestFilterKeyEvents
      */
-    public static final int CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS = 0x00000008;
+    public static final int CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS = 1 << 3;
 
     /**
      * Capability: This accessibility service can control display magnification.
      * @see android.R.styleable#AccessibilityService_canControlMagnification
      */
-    public static final int CAPABILITY_CAN_CONTROL_MAGNIFICATION = 0x00000010;
+    public static final int CAPABILITY_CAN_CONTROL_MAGNIFICATION = 1 << 4;
 
     /**
      * Capability: This accessibility service can perform gestures.
      * @see android.R.styleable#AccessibilityService_canPerformGestures
      */
-    public static final int CAPABILITY_CAN_PERFORM_GESTURES = 0x00000020;
+    public static final int CAPABILITY_CAN_PERFORM_GESTURES = 1 << 5;
 
     /**
      * Capability: This accessibility service can capture gestures from the fingerprint sensor
      * @see android.R.styleable#AccessibilityService_canRequestFingerprintGestures
      */
-    public static final int CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES = 0x00000040;
+    public static final int CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES = 1 << 6;
 
     /**
      * Capability: This accessibility service can take screenshot.
      * @see android.R.styleable#AccessibilityService_canTakeScreenshot
      */
-    public static final int CAPABILITY_CAN_TAKE_SCREENSHOT = 0x00000080;
+    public static final int CAPABILITY_CAN_TAKE_SCREENSHOT = 1 << 7;
 
     private static SparseArray<CapabilityInfo> sAvailableCapabilityInfos;
 
     /**
      * Denotes spoken feedback.
      */
-    public static final int FEEDBACK_SPOKEN = 0x0000001;
+    public static final int FEEDBACK_SPOKEN = 1 /* << 0 */;
 
     /**
      * Denotes haptic feedback.
      */
-    public static final int FEEDBACK_HAPTIC =  0x0000002;
+    public static final int FEEDBACK_HAPTIC =  1 << 1;
 
     /**
      * Denotes audible (not spoken) feedback.
      */
-    public static final int FEEDBACK_AUDIBLE = 0x0000004;
+    public static final int FEEDBACK_AUDIBLE = 1 << 2;
 
     /**
      * Denotes visual feedback.
      */
-    public static final int FEEDBACK_VISUAL = 0x0000008;
+    public static final int FEEDBACK_VISUAL = 1 << 3;
 
     /**
      * Denotes generic feedback.
      */
-    public static final int FEEDBACK_GENERIC = 0x0000010;
+    public static final int FEEDBACK_GENERIC = 1 << 4;
 
     /**
      * Denotes braille feedback.
      */
-    public static final int FEEDBACK_BRAILLE = 0x0000020;
+    public static final int FEEDBACK_BRAILLE = 1 << 5;
 
     /**
      * Mask for all feedback types.
@@ -200,7 +201,7 @@
      * Default service is invoked only if no package specific one exists. In case of
      * more than one package specific service only the earlier registered is notified.
      */
-    public static final int DEFAULT = 0x0000001;
+    public static final int DEFAULT = 1 /* << 0 */;
 
     /**
      * If this flag is set the system will regard views that are not important
@@ -230,7 +231,7 @@
      * elements.
      * </p>
      */
-    public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 0x0000002;
+    public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 1 << 1;
 
     /**
      * This flag requests that the system gets into touch exploration mode.
@@ -258,12 +259,13 @@
      * </p>
      * @see android.R.styleable#AccessibilityService_canRequestTouchExplorationMode
      */
-    public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 0x0000004;
+    public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 1 << 2;
 
     /**
      * @deprecated No longer used
      */
-    public static final int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 0x00000008;
+    @Deprecated
+    public static final int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 1 << 3;
 
     /**
      * This flag requests that the {@link AccessibilityNodeInfo}s obtained
@@ -272,7 +274,7 @@
      * form "package:id/name", for example "foo.bar:id/my_list", and it is
      * useful for UI test automation. This flag is not set by default.
      */
-    public static final int FLAG_REPORT_VIEW_IDS = 0x00000010;
+    public static final int FLAG_REPORT_VIEW_IDS = 1 << 4;
 
     /**
      * This flag requests from the system to filter key events. If this flag
@@ -287,7 +289,7 @@
      * </p>
      * @see android.R.styleable#AccessibilityService_canRequestFilterKeyEvents
      */
-    public static final int FLAG_REQUEST_FILTER_KEY_EVENTS = 0x00000020;
+    public static final int FLAG_REQUEST_FILTER_KEY_EVENTS = 1 << 5;
 
     /**
      * This flag indicates to the system that the accessibility service wants
@@ -308,14 +310,14 @@
      * </p>
      * @see android.R.styleable#AccessibilityService_canRetrieveWindowContent
      */
-    public static final int FLAG_RETRIEVE_INTERACTIVE_WINDOWS = 0x00000040;
+    public static final int FLAG_RETRIEVE_INTERACTIVE_WINDOWS = 1 << 6;
 
     /**
      * This flag requests that all audio tracks system-wide with
      * {@link android.media.AudioAttributes#USAGE_ASSISTANCE_ACCESSIBILITY} be controlled by the
      * {@link android.media.AudioManager#STREAM_ACCESSIBILITY} volume.
      */
-    public static final int FLAG_ENABLE_ACCESSIBILITY_VOLUME = 0x00000080;
+    public static final int FLAG_ENABLE_ACCESSIBILITY_VOLUME = 1 << 7;
 
      /**
      * This flag indicates to the system that the accessibility service requests that an
@@ -326,7 +328,7 @@
       *   accessibility service metadata file. Otherwise, it will be ignored.
       * </p>
      */
-    public static final int FLAG_REQUEST_ACCESSIBILITY_BUTTON = 0x00000100;
+    public static final int FLAG_REQUEST_ACCESSIBILITY_BUTTON = 1 << 8;
 
     /**
      * This flag requests that all fingerprint gestures be sent to the accessibility service.
@@ -341,13 +343,13 @@
      * @see android.R.styleable#AccessibilityService_canRequestFingerprintGestures
      * @see AccessibilityService#getFingerprintGestureController()
      */
-    public static final int FLAG_REQUEST_FINGERPRINT_GESTURES = 0x00000200;
+    public static final int FLAG_REQUEST_FINGERPRINT_GESTURES = 1 << 9;
 
     /**
      * This flag requests that accessibility shortcut warning dialog has spoken feedback when
      * dialog is shown.
      */
-    public static final int FLAG_REQUEST_SHORTCUT_WARNING_DIALOG_SPOKEN_FEEDBACK = 0x00000400;
+    public static final int FLAG_REQUEST_SHORTCUT_WARNING_DIALOG_SPOKEN_FEEDBACK = 1 << 10;
 
     /**
      * This flag requests that when {@link #FLAG_REQUEST_TOUCH_EXPLORATION_MODE} is enabled,
@@ -357,7 +359,7 @@
      *
      * @see #FLAG_REQUEST_TOUCH_EXPLORATION_MODE
      */
-    public static final int FLAG_SERVICE_HANDLES_DOUBLE_TAP = 0x0000800;
+    public static final int FLAG_SERVICE_HANDLES_DOUBLE_TAP = 1 << 11;
 
     /**
      * This flag requests that when when {@link #FLAG_REQUEST_TOUCH_EXPLORATION_MODE} is enabled,
@@ -367,7 +369,7 @@
      *
      * @see #FLAG_REQUEST_TOUCH_EXPLORATION_MODE
      */
-    public static final int FLAG_REQUEST_MULTI_FINGER_GESTURES = 0x0001000;
+    public static final int FLAG_REQUEST_MULTI_FINGER_GESTURES = 1 << 12;
 
     /**
      * This flag requests that when when {@link #FLAG_REQUEST_MULTI_FINGER_GESTURES} is enabled,
@@ -378,7 +380,7 @@
      *
      * @see #FLAG_REQUEST_TOUCH_EXPLORATION_MODE
      */
-    public static final int FLAG_REQUEST_2_FINGER_PASSTHROUGH = 0x0002000;
+    public static final int FLAG_REQUEST_2_FINGER_PASSTHROUGH = 1 << 13;
 
     /**
      * This flag requests that when when {@link #FLAG_REQUEST_TOUCH_EXPLORATION_MODE} is enabled, a
@@ -392,7 +394,7 @@
      *
      * @see #FLAG_REQUEST_TOUCH_EXPLORATION_MODE
      */
-    public static final int FLAG_SEND_MOTION_EVENTS = 0x0004000;
+    public static final int FLAG_SEND_MOTION_EVENTS = 1 << 14;
 
     /**
      * This flag makes the AccessibilityService an input method editor with a subset of input
@@ -401,10 +403,10 @@
      *
      * @see AccessibilityService#getInputMethod()
      */
-    public static final int FLAG_INPUT_METHOD_EDITOR = 0x0008000;
+    public static final int FLAG_INPUT_METHOD_EDITOR = 1 << 15;
 
     /** {@hide} */
-    public static final int FLAG_FORCE_DIRECT_BOOT_AWARE = 0x00010000;
+    public static final int FLAG_FORCE_DIRECT_BOOT_AWARE = 1 << 16;
 
     /**
      * The event types an {@link AccessibilityService} is interested in.
diff --git a/core/java/android/accessibilityservice/TEST_MAPPING b/core/java/android/accessibilityservice/TEST_MAPPING
index df85b61..1c67399 100644
--- a/core/java/android/accessibilityservice/TEST_MAPPING
+++ b/core/java/android/accessibilityservice/TEST_MAPPING
@@ -1,26 +1,7 @@
 {
-  "presubmit": [
+  "imports": [
     {
-      "name": "CtsAccessibilityServiceTestCases",
-      "options": [
-        {
-          "include-annotation": "android.platform.test.annotations.Presubmit"
-        },
-        {
-          "exclude-annotation": "android.support.test.filters.FlakyTest"
-        }
-      ]
-    }
-  ],
-  "postsubmit": [
-    {
-      "name": "CtsAccessibilityServiceSdk29TestCases"
-    },
-    {
-      "name": "CtsAccessibilityServiceTestCases"
-    },
-    {
-      "name": "CtsAccessibilityTestCases"
+      "path": "frameworks/base/services/accessibility/TEST_MAPPING"
     }
   ]
 }
diff --git a/core/java/android/accounts/Account.java b/core/java/android/accounts/Account.java
index 0d6a079..c376eae 100644
--- a/core/java/android/accounts/Account.java
+++ b/core/java/android/accounts/Account.java
@@ -45,8 +45,8 @@
     @GuardedBy("sAccessedAccounts")
     private static final Set<Account> sAccessedAccounts = new ArraySet<>();
 
-    public final String name;
-    public final String type;
+    public final @NonNull String name;
+    public final @NonNull String type;
     private String mSafeName;
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private final @Nullable String accessId;
@@ -65,7 +65,7 @@
         return result;
     }
 
-    public Account(String name, String type) {
+    public Account(@NonNull String name, @NonNull String type) {
         this(name, type, null);
     }
 
@@ -79,7 +79,7 @@
     /**
      * @hide
      */
-    public Account(String name, String type, String accessId) {
+    public Account(@NonNull String name, @NonNull String type, String accessId) {
         if (TextUtils.isEmpty(name)) {
             throw new IllegalArgumentException("the name must not be empty: " + name);
         }
diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java
index 821a23c..7ee3413 100644
--- a/core/java/android/accounts/AccountManager.java
+++ b/core/java/android/accounts/AccountManager.java
@@ -2384,12 +2384,8 @@
                 } else {
                     return get(timeout, unit);
                 }
-            } catch (CancellationException e) {
-                throw new OperationCanceledException();
-            } catch (TimeoutException e) {
-                // fall through and cancel
-            } catch (InterruptedException e) {
-                // fall through and cancel
+            } catch (CancellationException | TimeoutException | InterruptedException e) {
+                throw new OperationCanceledException(e);
             } catch (ExecutionException e) {
                 final Throwable cause = e.getCause();
                 if (cause instanceof IOException) {
@@ -2408,7 +2404,6 @@
             } finally {
                 cancel(true /* interrupt if running */);
             }
-            throw new OperationCanceledException();
         }
 
         @Override
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 8021ce0..125e727 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -9209,7 +9209,6 @@
      *
      * @param allowed {@code true} to disable the UID restrictions; {@code false} to revert back to
      *                            the default behaviour
-     * @hide
      */
     public void setAllowCrossUidActivitySwitchFromBelow(boolean allowed) {
         ActivityClient.getInstance().setAllowCrossUidActivitySwitchFromBelow(mToken, allowed);
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 521bf05..1eee8bd 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -192,6 +192,11 @@
      * @hide
      */
     public static final int INSTR_FLAG_INSTRUMENT_SDK_SANDBOX = 1 << 5;
+    /**
+     * Instrument an Sdk Sandbox process corresponding to an Sdk running inside the sandbox.
+     * @hide
+     */
+    public static final int INSTR_FLAG_INSTRUMENT_SDK_IN_SANDBOX = 1 << 6;
 
     static final class MyUidObserver extends UidObserver {
         final OnUidImportanceListener mListener;
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 29e135f..a50a776 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -120,6 +120,8 @@
 import android.os.Build;
 import android.os.Bundle;
 import android.os.CancellationSignal;
+import android.os.DdmSyncStageUpdater;
+import android.os.DdmSyncState.Stage;
 import android.os.Debug;
 import android.os.Environment;
 import android.os.FileUtils;
@@ -266,6 +268,9 @@
  */
 public final class ActivityThread extends ClientTransactionHandler
         implements ActivityThreadInternal {
+
+    private final DdmSyncStageUpdater mDdmSyncStageUpdater = new DdmSyncStageUpdater();
+
     /** @hide */
     public static final String TAG = "ActivityThread";
     private static final android.graphics.Bitmap.Config THUMBNAIL_FORMAT = Bitmap.Config.RGB_565;
@@ -881,6 +886,7 @@
         ApplicationInfo appInfo;
         String sdkSandboxClientAppVolumeUuid;
         String sdkSandboxClientAppPackage;
+        boolean isSdkInSandbox;
         @UnsupportedAppUsage
         List<ProviderInfo> providers;
         ComponentName instrumentationName;
@@ -1162,19 +1168,34 @@
         }
 
         @Override
-        public final void bindApplication(String processName, ApplicationInfo appInfo,
-                String sdkSandboxClientAppVolumeUuid, String sdkSandboxClientAppPackage,
-                ProviderInfoList providerList, ComponentName instrumentationName,
-                ProfilerInfo profilerInfo, Bundle instrumentationArgs,
+        public final void bindApplication(
+                String processName,
+                ApplicationInfo appInfo,
+                String sdkSandboxClientAppVolumeUuid,
+                String sdkSandboxClientAppPackage,
+                boolean isSdkInSandbox,
+                ProviderInfoList providerList,
+                ComponentName instrumentationName,
+                ProfilerInfo profilerInfo,
+                Bundle instrumentationArgs,
                 IInstrumentationWatcher instrumentationWatcher,
-                IUiAutomationConnection instrumentationUiConnection, int debugMode,
-                boolean enableBinderTracking, boolean trackAllocation,
-                boolean isRestrictedBackupMode, boolean persistent, Configuration config,
-                CompatibilityInfo compatInfo, Map services, Bundle coreSettings,
-                String buildSerial, AutofillOptions autofillOptions,
-                ContentCaptureOptions contentCaptureOptions, long[] disabledCompatChanges,
+                IUiAutomationConnection instrumentationUiConnection,
+                int debugMode,
+                boolean enableBinderTracking,
+                boolean trackAllocation,
+                boolean isRestrictedBackupMode,
+                boolean persistent,
+                Configuration config,
+                CompatibilityInfo compatInfo,
+                Map services,
+                Bundle coreSettings,
+                String buildSerial,
+                AutofillOptions autofillOptions,
+                ContentCaptureOptions contentCaptureOptions,
+                long[] disabledCompatChanges,
                 SharedMemory serializedSystemFontMap,
-                long startRequestedElapsedTime, long startRequestedUptime) {
+                long startRequestedElapsedTime,
+                long startRequestedUptime) {
             if (services != null) {
                 if (false) {
                     // Test code to make sure the app could see the passed-in services.
@@ -1208,6 +1229,7 @@
             data.appInfo = appInfo;
             data.sdkSandboxClientAppVolumeUuid = sdkSandboxClientAppVolumeUuid;
             data.sdkSandboxClientAppPackage = sdkSandboxClientAppPackage;
+            data.isSdkInSandbox = isSdkInSandbox;
             data.providers = providerList.getList();
             data.instrumentationName = instrumentationName;
             data.instrumentationArgs = instrumentationArgs;
@@ -6685,6 +6707,8 @@
 
     @UnsupportedAppUsage
     private void handleBindApplication(AppBindData data) {
+        mDdmSyncStageUpdater.next(Stage.Bind);
+
         // Register the UI Thread as a sensitive thread to the runtime.
         VMRuntime.registerSensitiveThread();
         // In the case the stack depth property exists, pass it down to the runtime.
@@ -6734,6 +6758,7 @@
                                                 data.appInfo.packageName,
                                                 UserHandle.myUserId());
         VMRuntime.setProcessPackageName(data.appInfo.packageName);
+        mDdmSyncStageUpdater.next(Stage.Named);
 
         // Pass data directory path to ART. This is used for caching information and
         // should be set before any application code is loaded.
@@ -6938,6 +6963,7 @@
         final StrictMode.ThreadPolicy writesAllowedPolicy = StrictMode.getThreadPolicy();
 
         if (data.debugMode != ApplicationThreadConstants.DEBUG_OFF) {
+            mDdmSyncStageUpdater.next(Stage.Debugger);
             if (data.debugMode == ApplicationThreadConstants.DEBUG_WAIT) {
                 waitForDebugger(data);
             } else if (data.debugMode == ApplicationThreadConstants.DEBUG_SUSPEND) {
@@ -6945,6 +6971,7 @@
             }
             // Nothing special to do in case of DEBUG_ON.
         }
+        mDdmSyncStageUpdater.next(Stage.Running);
 
         try {
             // If the app is being launched for full backup or restore, bring it up in
@@ -7196,8 +7223,14 @@
         // The test context's op package name == the target app's op package name, because
         // the app ops manager checks the op package name against the real calling UID,
         // which is what the target package name is associated with.
-        final ContextImpl instrContext = ContextImpl.createAppContext(this, pi,
-                appContext.getOpPackageName());
+        // In the case of instrumenting an sdk running in the sdk sandbox, appContext refers
+        // to the context of the sdk running in the sandbox. Since the sandbox does not have
+        // access to data outside the sandbox, we require the instrContext to point to the
+        // sdk in the sandbox as well, and not to the test context.
+        final ContextImpl instrContext =
+                (data.isSdkInSandbox)
+                        ? appContext
+                        : ContextImpl.createAppContext(this, pi, appContext.getOpPackageName());
 
         try {
             final ClassLoader cl = instrContext.getClassLoader();
@@ -7848,6 +7881,7 @@
         mConfigurationController = new ConfigurationController(this);
         mSystemThread = system;
         mStartSeq = startSeq;
+        mDdmSyncStageUpdater.next(Stage.Attach);
 
         if (!system) {
             android.ddm.DdmHandleAppName.setAppName("<pre-initialized>",
diff --git a/core/java/android/app/ExitTransitionCoordinator.java b/core/java/android/app/ExitTransitionCoordinator.java
index 930750e..46c677d 100644
--- a/core/java/android/app/ExitTransitionCoordinator.java
+++ b/core/java/android/app/ExitTransitionCoordinator.java
@@ -426,7 +426,7 @@
                 mSharedElementNotified = true;
                 delayCancel();
 
-                if (mExitCallbacks.isReturnTransitionAllowed()) {
+                if (mExitCallbacks != null && mExitCallbacks.isReturnTransitionAllowed()) {
                     mResultReceiver.send(MSG_ALLOW_RETURN_TRANSITION, null);
                 }
 
diff --git a/core/java/android/app/IApplicationThread.aidl b/core/java/android/app/IApplicationThread.aidl
index 6b5f6b0..75d8c10 100644
--- a/core/java/android/app/IApplicationThread.aidl
+++ b/core/java/android/app/IApplicationThread.aidl
@@ -78,6 +78,7 @@
     void scheduleStopService(IBinder token);
     void bindApplication(in String packageName, in ApplicationInfo info,
             in String sdkSandboxClientAppVolumeUuid, in String sdkSandboxClientAppPackage,
+            in boolean isSdkInSandbox,
             in ProviderInfoList providerList, in ComponentName testName,
             in ProfilerInfo profilerInfo, in Bundle testArguments,
             IInstrumentationWatcher testWatcher, IUiAutomationConnection uiAutomationConnection,
diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl
index 0b48621..7f38b27 100644
--- a/core/java/android/app/INotificationManager.aidl
+++ b/core/java/android/app/INotificationManager.aidl
@@ -128,13 +128,16 @@
     // INotificationListener method.
     @UnsupportedAppUsage
     StatusBarNotification[] getActiveNotifications(String callingPkg);
+    @EnforcePermission("ACCESS_NOTIFICATIONS")
     StatusBarNotification[] getActiveNotificationsWithAttribution(String callingPkg,
             String callingAttributionTag);
     @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     StatusBarNotification[] getHistoricalNotifications(String callingPkg, int count, boolean includeSnoozed);
+    @EnforcePermission("ACCESS_NOTIFICATIONS")
     StatusBarNotification[] getHistoricalNotificationsWithAttribution(String callingPkg,
             String callingAttributionTag, int count, boolean includeSnoozed);
 
+    @EnforcePermission("ACCESS_NOTIFICATIONS")
     NotificationHistory getNotificationHistory(String callingPkg, String callingAttributionTag);
 
     void registerListener(in INotificationListener listener, in ComponentName component, int userid);
diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java
index b5efb73..8fea03b 100644
--- a/core/java/android/app/LoadedApk.java
+++ b/core/java/android/app/LoadedApk.java
@@ -1401,95 +1401,99 @@
         if (mApplication != null) {
             return mApplication;
         }
-        Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "makeApplication");
 
-        synchronized (sApplications) {
-            final Application cached = sApplications.get(mPackageName);
-            if (cached != null) {
-                // Looks like this is always happening for the system server, because
-                // the LoadedApk created in systemMain() -> attach() isn't cached properly?
-                if (!"android".equals(mPackageName)) {
-                    Slog.wtfStack(TAG, "App instance already created for package=" + mPackageName
-                            + " instance=" + cached);
-                }
-                if (!allowDuplicateInstances) {
-                    mApplication = cached;
-                    return cached;
-                }
-                // Some apps intentionally call makeApplication() to create a new Application
-                // instance... Sigh...
-            }
-        }
 
-        Application app = null;
-
-        final String myProcessName = Process.myProcessName();
-        String appClass = mApplicationInfo.getCustomApplicationClassNameForProcess(
-                myProcessName);
-        if (forceDefaultAppClass || (appClass == null)) {
-            appClass = "android.app.Application";
+        if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) {
+            Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "makeApplication");
         }
 
         try {
-            final java.lang.ClassLoader cl = getClassLoader();
-            if (!mPackageName.equals("android")) {
-                Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER,
-                        "initializeJavaContextClassLoader");
-                initializeJavaContextClassLoader();
-                Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
-            }
-
-            // Rewrite the R 'constants' for all library apks.
-            SparseArray<String> packageIdentifiers = getAssets().getAssignedPackageIdentifiers(
-                    false, false);
-            for (int i = 0, n = packageIdentifiers.size(); i < n; i++) {
-                final int id = packageIdentifiers.keyAt(i);
-                if (id == 0x01 || id == 0x7f) {
-                    continue;
-                }
-
-                rewriteRValues(cl, packageIdentifiers.valueAt(i), id);
-            }
-
-            ContextImpl appContext = ContextImpl.createAppContext(mActivityThread, this);
-            // The network security config needs to be aware of multiple
-            // applications in the same process to handle discrepancies
-            NetworkSecurityConfigProvider.handleNewApplication(appContext);
-            app = mActivityThread.mInstrumentation.newApplication(
-                    cl, appClass, appContext);
-            appContext.setOuterContext(app);
-        } catch (Exception e) {
-            if (!mActivityThread.mInstrumentation.onException(app, e)) {
-                Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
-                throw new RuntimeException(
-                    "Unable to instantiate application " + appClass
-                    + " package " + mPackageName + ": " + e.toString(), e);
-            }
-        }
-        mActivityThread.mAllApplications.add(app);
-        mApplication = app;
-        if (!allowDuplicateInstances) {
             synchronized (sApplications) {
-                sApplications.put(mPackageName, app);
-            }
-        }
-
-        if (instrumentation != null) {
-            try {
-                instrumentation.callApplicationOnCreate(app);
-            } catch (Exception e) {
-                if (!instrumentation.onException(app, e)) {
-                    Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
-                    throw new RuntimeException(
-                        "Unable to create application " + app.getClass().getName()
-                        + ": " + e.toString(), e);
+                final Application cached = sApplications.get(mPackageName);
+                if (cached != null) {
+                    // Looks like this is always happening for the system server, because
+                    // the LoadedApk created in systemMain() -> attach() isn't cached properly?
+                    if (!"android".equals(mPackageName)) {
+                        Slog.wtfStack(TAG, "App instance already created for package="
+                                + mPackageName + " instance=" + cached);
+                    }
+                    if (!allowDuplicateInstances) {
+                        mApplication = cached;
+                        return cached;
+                    }
+                    // Some apps intentionally call makeApplication() to create a new Application
+                    // instance... Sigh...
                 }
             }
+
+            Application app = null;
+
+            final String myProcessName = Process.myProcessName();
+            String appClass = mApplicationInfo.getCustomApplicationClassNameForProcess(
+                    myProcessName);
+            if (forceDefaultAppClass || (appClass == null)) {
+                appClass = "android.app.Application";
+            }
+
+            try {
+                final java.lang.ClassLoader cl = getClassLoader();
+                if (!mPackageName.equals("android")) {
+                    Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER,
+                            "initializeJavaContextClassLoader");
+                    initializeJavaContextClassLoader();
+                    Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
+                }
+
+                // Rewrite the R 'constants' for all library apks.
+                SparseArray<String> packageIdentifiers = getAssets().getAssignedPackageIdentifiers(
+                        false, false);
+                for (int i = 0, n = packageIdentifiers.size(); i < n; i++) {
+                    final int id = packageIdentifiers.keyAt(i);
+                    if (id == 0x01 || id == 0x7f) {
+                        continue;
+                    }
+
+                    rewriteRValues(cl, packageIdentifiers.valueAt(i), id);
+                }
+
+                ContextImpl appContext = ContextImpl.createAppContext(mActivityThread, this);
+                // The network security config needs to be aware of multiple
+                // applications in the same process to handle discrepancies
+                NetworkSecurityConfigProvider.handleNewApplication(appContext);
+                app = mActivityThread.mInstrumentation.newApplication(
+                        cl, appClass, appContext);
+                appContext.setOuterContext(app);
+            } catch (Exception e) {
+                if (!mActivityThread.mInstrumentation.onException(app, e)) {
+                    throw new RuntimeException(
+                        "Unable to instantiate application " + appClass
+                        + " package " + mPackageName + ": " + e.toString(), e);
+                }
+            }
+            mActivityThread.mAllApplications.add(app);
+            mApplication = app;
+            if (!allowDuplicateInstances) {
+                synchronized (sApplications) {
+                    sApplications.put(mPackageName, app);
+                }
+            }
+
+            if (instrumentation != null) {
+                try {
+                    instrumentation.callApplicationOnCreate(app);
+                } catch (Exception e) {
+                    if (!instrumentation.onException(app, e)) {
+                        throw new RuntimeException(
+                            "Unable to create application " + app.getClass().getName()
+                            + ": " + e.toString(), e);
+                    }
+                }
+            }
+
+            return app;
+        } finally {
+            Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
         }
-
-        Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
-
-        return app;
     }
 
     @UnsupportedAppUsage
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index d375760..f1167bf 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -8778,9 +8778,11 @@
             }
 
             /**
+             * Converts the message into a {@link Bundle}. To extract the message back,
+             * check {@link #getMessageFromBundle()}
              * @hide
              */
-            @VisibleForTesting
+            @NonNull
             public Bundle toBundle() {
                 Bundle bundle = new Bundle();
                 if (mText != null) {
@@ -12110,10 +12112,7 @@
      * <p>TV extensions can be accessed on an existing notification by using the
      * {@code TvExtender(Notification)} constructor, and then using the {@code get} methods
      * to access values.
-     *
-     * @hide
      */
-    @SystemApi
     public static final class TvExtender implements Extender {
         private static final String TAG = "TvExtender";
 
@@ -12145,7 +12144,7 @@
          *
          * @param notif The notification from which to copy options.
          */
-        public TvExtender(Notification notif) {
+        public TvExtender(@NonNull Notification notif) {
             Bundle bundle = notif.extras == null ?
                 null : notif.extras.getBundle(EXTRA_TV_EXTENDER);
             if (bundle != null) {
@@ -12163,7 +12162,8 @@
          * method of {@link Notification.Builder}.
          */
         @Override
-        public Notification.Builder extend(Notification.Builder builder) {
+        @NonNull
+        public Notification.Builder extend(@NonNull Notification.Builder builder) {
             Bundle bundle = new Bundle();
 
             bundle.putInt(EXTRA_FLAGS, mFlags);
@@ -12182,7 +12182,7 @@
         }
 
         /**
-         * Returns true if this notification should be shown on TV. This method return true
+         * Returns true if this notification should be shown on TV. This method returns true
          * if the notification was extended with a TvExtender.
          */
         public boolean isAvailableOnTv() {
@@ -12192,8 +12192,11 @@
         /**
          * Specifies the channel the notification should be delivered on when shown on TV.
          * It can be different from the channel that the notification is delivered to when
-         * posting on a non-TV device.
+         * posting on a non-TV device. Prefer to use {@link setChannelId(String)}.
+         *
+         * @hide
          */
+        @SystemApi
         public TvExtender setChannel(String channelId) {
             mChannelId = channelId;
             return this;
@@ -12203,14 +12206,21 @@
          * Specifies the channel the notification should be delivered on when shown on TV.
          * It can be different from the channel that the notification is delivered to when
          * posting on a non-TV device.
+         *
+         * @return this object for method chaining
          */
-        public TvExtender setChannelId(String channelId) {
+        @NonNull
+        public TvExtender setChannelId(@Nullable String channelId) {
             mChannelId = channelId;
             return this;
         }
 
-        /** @removed */
+        /**
+         * @removed
+         * @hide
+         */
         @Deprecated
+        @SystemApi
         public String getChannel() {
             return mChannelId;
         }
@@ -12218,6 +12228,7 @@
         /**
          * Returns the id of the channel this notification posts to on TV.
          */
+        @Nullable
         public String getChannelId() {
             return mChannelId;
         }
@@ -12226,8 +12237,12 @@
          * Supplies a {@link PendingIntent} to be sent when the notification is selected on TV.
          * If provided, it is used instead of the content intent specified
          * at the level of Notification.
+         *
+         * @param intent the {@link PendingIntent} for the associated notification content
+         * @return this object for method chaining
          */
-        public TvExtender setContentIntent(PendingIntent intent) {
+        @NonNull
+        public TvExtender setContentIntent(@Nullable PendingIntent intent) {
             mContentIntent = intent;
             return this;
         }
@@ -12236,8 +12251,9 @@
          * Returns the TV-specific content intent.  If this method returns null, the
          * main content intent on the notification should be used.
          *
-         * @see {@link Notification#contentIntent}
+         * @see Notification#contentIntent
          */
+        @Nullable
         public PendingIntent getContentIntent() {
             return mContentIntent;
         }
@@ -12246,8 +12262,12 @@
          * Supplies a {@link PendingIntent} to send when the notification is cleared explicitly
          * by the user on TV.  If provided, it is used instead of the delete intent specified
          * at the level of Notification.
+         *
+         * @param intent the {@link PendingIntent} for the associated notification deletion
+         * @return this object for method chaining
          */
-        public TvExtender setDeleteIntent(PendingIntent intent) {
+        @NonNull
+        public TvExtender setDeleteIntent(@Nullable PendingIntent intent) {
             mDeleteIntent = intent;
             return this;
         }
@@ -12256,8 +12276,9 @@
          * Returns the TV-specific delete intent.  If this method returns null, the
          * main delete intent on the notification should be used.
          *
-         * @see {@link Notification#deleteIntent}
+         * @see Notification#deleteIntent
          */
+        @Nullable
         public PendingIntent getDeleteIntent() {
             return mDeleteIntent;
         }
@@ -12265,7 +12286,11 @@
         /**
          * Specifies whether this notification should suppress showing a message over top of apps
          * outside of the launcher.
+         *
+         * @param suppress whether the notification should suppress showing over apps.
+         * @return this object for method chaining
          */
+        @NonNull
         public TvExtender setSuppressShowOverApps(boolean suppress) {
             mSuppressShowOverApps = suppress;
             return this;
@@ -12274,10 +12299,21 @@
         /**
          * Returns true if this notification should not show messages over top of apps
          * outside of the launcher.
+         *
+         * @hide
          */
+        @SystemApi
         public boolean getSuppressShowOverApps() {
             return mSuppressShowOverApps;
         }
+
+        /**
+         * Returns true if this notification should not show messages over top of apps
+         * outside of the launcher.
+         */
+        public boolean isSuppressShowOverApps() {
+            return mSuppressShowOverApps;
+        }
     }
 
     /**
diff --git a/core/java/android/app/PendingIntent.java b/core/java/android/app/PendingIntent.java
index 99a7fa2..a93b0e2 100644
--- a/core/java/android/app/PendingIntent.java
+++ b/core/java/android/app/PendingIntent.java
@@ -263,7 +263,7 @@
      * be mutable by default, unless {@link #FLAG_IMMUTABLE} is set. Starting
      * with {@link android.os.Build.VERSION_CODES#S}, it will be required to
      * explicitly specify the mutability of PendingIntents on creation with
-     * either (@link #FLAG_IMMUTABLE} or {@link #FLAG_MUTABLE}. It is strongly
+     * either {@link #FLAG_IMMUTABLE} or {@link #FLAG_MUTABLE}. It is strongly
      * recommended to use {@link #FLAG_IMMUTABLE} when creating a
      * PendingIntent. {@link #FLAG_MUTABLE} should only be used when some
      * functionality relies on modifying the underlying intent, e.g. any
diff --git a/core/java/android/app/ambientcontext/IAmbientContextManager.aidl b/core/java/android/app/ambientcontext/IAmbientContextManager.aidl
index 8f06e76..a06bdd3 100644
--- a/core/java/android/app/ambientcontext/IAmbientContextManager.aidl
+++ b/core/java/android/app/ambientcontext/IAmbientContextManager.aidl
@@ -35,6 +35,7 @@
     void registerObserverWithCallback(in AmbientContextEventRequest request,
         String packageName,
         in IAmbientContextObserver observer);
+    @EnforcePermission("ACCESS_AMBIENT_CONTEXT_EVENT")
     void unregisterObserver(in String callingPackage);
     void queryServiceStatus(in int[] eventTypes, in String callingPackage,
         in RemoteCallback statusCallback);
diff --git a/core/java/android/app/backup/BackupManager.java b/core/java/android/app/backup/BackupManager.java
index 5848521..4a07bf1 100644
--- a/core/java/android/app/backup/BackupManager.java
+++ b/core/java/android/app/backup/BackupManager.java
@@ -37,6 +37,8 @@
 import android.util.Log;
 import android.util.Pair;
 
+import com.android.internal.annotations.VisibleForTesting;
+
 import java.util.List;
 
 /**
@@ -199,8 +201,15 @@
     public static final int ERROR_TRANSPORT_INVALID = -2;
 
     private Context mContext;
+
+    /**
+     * @hide Making this package private is not sufficient for the test to access it, that's because
+     * the test is in the same package but is loaded with a different class loader. Package
+     * private members are not accessible across class loaders. So we make it public and @hide it.
+     */
     @UnsupportedAppUsage
-    private static IBackupManager sService;
+    @VisibleForTesting
+    public static IBackupManager sService;
 
     @UnsupportedAppUsage
     private static void checkServiceBinder() {
diff --git a/core/java/android/attention/AttentionManagerInternal.java b/core/java/android/attention/AttentionManagerInternal.java
index 24fe0db..5d3889d 100644
--- a/core/java/android/attention/AttentionManagerInternal.java
+++ b/core/java/android/attention/AttentionManagerInternal.java
@@ -28,6 +28,11 @@
     public abstract boolean isAttentionServiceSupported();
 
     /**
+     * Returns {@code true} if proximity update is supported by the service.
+     */
+    public abstract boolean isProximitySupported();
+
+    /**
      * Checks whether user attention is at the screen and calls in the provided callback.
      *
      * @param timeoutMillis a budget for the attention check; if it takes longer - {@link
diff --git a/core/java/android/companion/ICompanionDeviceManager.aidl b/core/java/android/companion/ICompanionDeviceManager.aidl
index b5e2670..b89d3fe 100644
--- a/core/java/android/companion/ICompanionDeviceManager.aidl
+++ b/core/java/android/companion/ICompanionDeviceManager.aidl
@@ -36,6 +36,8 @@
         in String callingPackage, int userId);
 
     List<AssociationInfo> getAssociations(String callingPackage, int userId);
+
+    @EnforcePermission("MANAGE_COMPANION_DEVICES")
     List<AssociationInfo> getAllAssociationsForUser(int userId);
 
     /** @deprecated */
@@ -48,25 +50,28 @@
 
     PendingIntent requestNotificationAccess(in ComponentName component, int userId);
 
-    /** @deprecated */
+    @EnforcePermission("MANAGE_COMPANION_DEVICES")
     boolean isDeviceAssociatedForWifiConnection(in String packageName, in String macAddress,
         int userId);
 
+    @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE")
     void registerDevicePresenceListenerService(in String deviceAddress, in String callingPackage,
         int userId);
 
+    @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE")
     void unregisterDevicePresenceListenerService(in String deviceAddress, in String callingPackage,
         int userId);
 
-    /** @deprecated */
     boolean canPairWithoutPrompt(in String packageName, in String deviceMacAddress, int userId);
 
-    /** @deprecated */
+    @EnforcePermission("ASSOCIATE_COMPANION_DEVICES")
     void createAssociation(in String packageName, in String macAddress, int userId,
         in byte[] certificate);
 
+    @EnforcePermission("MANAGE_COMPANION_DEVICES")
     void addOnAssociationsChangedListener(IOnAssociationsChangedListener listener, int userId);
 
+    @EnforcePermission("MANAGE_COMPANION_DEVICES")
     void removeOnAssociationsChangedListener(IOnAssociationsChangedListener listener, int userId);
 
     void addOnTransportsChangedListener(IOnTransportsChangedListener listener);
@@ -89,8 +94,10 @@
     void startSystemDataTransfer(String packageName, int userId, int associationId,
         in ISystemDataTransferCallback callback);
 
+    @EnforcePermission("DELIVER_COMPANION_MESSAGES")
     void attachSystemDataTransport(String packageName, int userId, int associationId, in ParcelFileDescriptor fd);
 
+    @EnforcePermission("DELIVER_COMPANION_MESSAGES")
     void detachSystemDataTransport(String packageName, int userId, int associationId);
 
     boolean isCompanionApplicationBound(String packageName, int userId);
diff --git a/core/java/android/companion/virtual/IVirtualDeviceManager.aidl b/core/java/android/companion/virtual/IVirtualDeviceManager.aidl
index 07743cef5..ee7836f 100644
--- a/core/java/android/companion/virtual/IVirtualDeviceManager.aidl
+++ b/core/java/android/companion/virtual/IVirtualDeviceManager.aidl
@@ -44,6 +44,7 @@
      * @param activityListener The listener to listen for activity changes in a virtual device.
      * @param soundEffectListener The listener to listen for sound effect playback requests.
      */
+    @EnforcePermission("CREATE_VIRTUAL_DEVICE")
     IVirtualDevice createVirtualDevice(
             in IBinder token, String packageName, int associationId,
             in VirtualDeviceParams params, in IVirtualDeviceActivityListener activityListener,
diff --git a/core/java/android/companion/virtual/VirtualDeviceManager.java b/core/java/android/companion/virtual/VirtualDeviceManager.java
index 2ca2b79bc..fba896d 100644
--- a/core/java/android/companion/virtual/VirtualDeviceManager.java
+++ b/core/java/android/companion/virtual/VirtualDeviceManager.java
@@ -680,7 +680,6 @@
          *   visibility is true.
          */
         @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE)
-        @NonNull
         public void setShowPointerIcon(boolean showPointerIcon) {
             mVirtualDeviceInternal.setShowPointerIcon(showPointerIcon);
         }
diff --git a/core/java/android/content/AttributionSource.java b/core/java/android/content/AttributionSource.java
index cd45f4d..3dddbc0 100644
--- a/core/java/android/content/AttributionSource.java
+++ b/core/java/android/content/AttributionSource.java
@@ -150,6 +150,7 @@
     }
 
     /** @hide */
+    @TestApi
     public AttributionSource(int uid, int pid, @Nullable String packageName,
             @Nullable String attributionTag, @NonNull IBinder token,
             @Nullable String[] renouncedPermissions,
@@ -662,7 +663,10 @@
 
         /**
          * The next app to receive the permission protected data.
+         *
+         * @deprecated Use {@link setNextAttributionSource} instead.
          */
+        @Deprecated
         public @NonNull Builder setNext(@Nullable AttributionSource value) {
             checkNotUsed();
             mBuilderFieldsSet |= 0x20;
@@ -671,6 +675,17 @@
             return this;
         }
 
+        /**
+         * The next app to receive the permission protected data.
+         */
+        public @NonNull Builder setNextAttributionSource(@NonNull AttributionSource value) {
+            checkNotUsed();
+            mBuilderFieldsSet |= 0x20;
+            mAttributionSourceState.next =
+                    new AttributionSourceState[]{value.mAttributionSourceState};
+            return this;
+        }
+
         /** Builds the instance. This builder should not be touched after calling this! */
         public @NonNull AttributionSource build() {
             checkNotUsed();
diff --git a/core/java/android/content/ContentProvider.java b/core/java/android/content/ContentProvider.java
index fa99b59..62efdd5 100644
--- a/core/java/android/content/ContentProvider.java
+++ b/core/java/android/content/ContentProvider.java
@@ -20,7 +20,7 @@
 import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL;
 import static android.os.Process.SYSTEM_UID;
 import static android.os.Process.myUserHandle;
-import static android.os.Trace.TRACE_TAG_DATABASE;
+import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER;
 
 import static com.android.internal.util.FrameworkStatsLog.GET_TYPE_ACCESSED_WITHOUT_PERMISSION;
 import static com.android.internal.util.FrameworkStatsLog.GET_TYPE_ACCESSED_WITHOUT_PERMISSION__LOCATION__PROVIDER_CHECK_URI_PERMISSION;
@@ -285,7 +285,7 @@
                 // Return an empty cursor for all columns.
                 return new MatrixCursor(cursor.getColumnNames(), 0);
             }
-            traceBegin(TRACE_TAG_DATABASE, "query: ", uri.getAuthority());
+            traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "query: ", uri.getAuthority());
             final AttributionSource original = setCallingAttributionSource(
                     attributionSource);
             try {
@@ -296,7 +296,7 @@
                 throw e.rethrowAsRuntimeException();
             } finally {
                 setCallingAttributionSource(original);
-                Trace.traceEnd(TRACE_TAG_DATABASE);
+                Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
             }
         }
 
@@ -304,7 +304,7 @@
         public String getType(AttributionSource attributionSource, Uri uri) {
             uri = validateIncomingUri(uri);
             uri = maybeGetUriWithoutUserId(uri);
-            traceBegin(TRACE_TAG_DATABASE, "getType: ", uri.getAuthority());
+            traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "getType: ", uri.getAuthority());
             final AttributionSource original = setCallingAttributionSource(
                     attributionSource);
             try {
@@ -348,7 +348,7 @@
                 throw e.rethrowAsRuntimeException();
             } finally {
                 setCallingAttributionSource(original);
-                Trace.traceEnd(TRACE_TAG_DATABASE);
+                Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
             }
         }
 
@@ -410,7 +410,7 @@
             // getCallingPackage() isn't available in getTypeAnonymous(), as the javadoc states.
             uri = validateIncomingUri(uri);
             uri = maybeGetUriWithoutUserId(uri);
-            traceBegin(TRACE_TAG_DATABASE, "getTypeAnonymous: ", uri.getAuthority());
+            traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "getTypeAnonymous: ", uri.getAuthority());
             final Bundle result = new Bundle();
             try {
                 result.putString(ContentResolver.REMOTE_CALLBACK_RESULT, getTypeAnonymous(uri));
@@ -419,7 +419,7 @@
                         new ParcelableException(e));
             } finally {
                 callback.sendResult(result);
-                Trace.traceEnd(TRACE_TAG_DATABASE);
+                Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
             }
         }
 
@@ -439,7 +439,7 @@
                     setCallingAttributionSource(original);
                 }
             }
-            traceBegin(TRACE_TAG_DATABASE, "insert: ", uri.getAuthority());
+            traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "insert: ", uri.getAuthority());
             final AttributionSource original = setCallingAttributionSource(
                     attributionSource);
             try {
@@ -448,7 +448,7 @@
                 throw e.rethrowAsRuntimeException();
             } finally {
                 setCallingAttributionSource(original);
-                Trace.traceEnd(TRACE_TAG_DATABASE);
+                Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
             }
         }
 
@@ -461,7 +461,7 @@
                     != PermissionChecker.PERMISSION_GRANTED) {
                 return 0;
             }
-            traceBegin(TRACE_TAG_DATABASE, "bulkInsert: ", uri.getAuthority());
+            traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "bulkInsert: ", uri.getAuthority());
             final AttributionSource original = setCallingAttributionSource(
                     attributionSource);
             try {
@@ -470,7 +470,7 @@
                 throw e.rethrowAsRuntimeException();
             } finally {
                 setCallingAttributionSource(original);
-                Trace.traceEnd(TRACE_TAG_DATABASE);
+                Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
             }
         }
 
@@ -507,7 +507,7 @@
                     }
                 }
             }
-            traceBegin(TRACE_TAG_DATABASE, "applyBatch: ", authority);
+            traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "applyBatch: ", authority);
             final AttributionSource original = setCallingAttributionSource(
                     attributionSource);
             try {
@@ -526,7 +526,7 @@
                 throw e.rethrowAsRuntimeException();
             } finally {
                 setCallingAttributionSource(original);
-                Trace.traceEnd(TRACE_TAG_DATABASE);
+                Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
             }
         }
 
@@ -539,7 +539,7 @@
                     != PermissionChecker.PERMISSION_GRANTED) {
                 return 0;
             }
-            traceBegin(TRACE_TAG_DATABASE, "delete: ", uri.getAuthority());
+            traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "delete: ", uri.getAuthority());
             final AttributionSource original = setCallingAttributionSource(
                     attributionSource);
             try {
@@ -548,7 +548,7 @@
                 throw e.rethrowAsRuntimeException();
             } finally {
                 setCallingAttributionSource(original);
-                Trace.traceEnd(TRACE_TAG_DATABASE);
+                Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
             }
         }
 
@@ -561,7 +561,7 @@
                     != PermissionChecker.PERMISSION_GRANTED) {
                 return 0;
             }
-            traceBegin(TRACE_TAG_DATABASE, "update: ", uri.getAuthority());
+            traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "update: ", uri.getAuthority());
             final AttributionSource original = setCallingAttributionSource(
                     attributionSource);
             try {
@@ -570,7 +570,7 @@
                 throw e.rethrowAsRuntimeException();
             } finally {
                 setCallingAttributionSource(original);
-                Trace.traceEnd(TRACE_TAG_DATABASE);
+                Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
             }
         }
 
@@ -581,7 +581,7 @@
             uri = validateIncomingUri(uri);
             uri = maybeGetUriWithoutUserId(uri);
             enforceFilePermission(attributionSource, uri, mode);
-            traceBegin(TRACE_TAG_DATABASE, "openFile: ", uri.getAuthority());
+            traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "openFile: ", uri.getAuthority());
             final AttributionSource original = setCallingAttributionSource(
                     attributionSource);
             try {
@@ -591,7 +591,7 @@
                 throw e.rethrowAsRuntimeException();
             } finally {
                 setCallingAttributionSource(original);
-                Trace.traceEnd(TRACE_TAG_DATABASE);
+                Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
             }
         }
 
@@ -602,7 +602,7 @@
             uri = validateIncomingUri(uri);
             uri = maybeGetUriWithoutUserId(uri);
             enforceFilePermission(attributionSource, uri, mode);
-            traceBegin(TRACE_TAG_DATABASE, "openAssetFile: ", uri.getAuthority());
+            traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "openAssetFile: ", uri.getAuthority());
             final AttributionSource original = setCallingAttributionSource(
                     attributionSource);
             try {
@@ -612,7 +612,7 @@
                 throw e.rethrowAsRuntimeException();
             } finally {
                 setCallingAttributionSource(original);
-                Trace.traceEnd(TRACE_TAG_DATABASE);
+                Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
             }
         }
 
@@ -621,7 +621,7 @@
                 String method, @Nullable String arg, @Nullable Bundle extras) {
             validateIncomingAuthority(authority);
             Bundle.setDefusable(extras, true);
-            traceBegin(TRACE_TAG_DATABASE, "call: ", authority);
+            traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "call: ", authority);
             final AttributionSource original = setCallingAttributionSource(
                     attributionSource);
             try {
@@ -630,7 +630,7 @@
                 throw e.rethrowAsRuntimeException();
             } finally {
                 setCallingAttributionSource(original);
-                Trace.traceEnd(TRACE_TAG_DATABASE);
+                Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
             }
         }
 
@@ -639,7 +639,7 @@
                 Uri uri, String mimeTypeFilter) {
             uri = validateIncomingUri(uri);
             uri = maybeGetUriWithoutUserId(uri);
-            traceBegin(TRACE_TAG_DATABASE, "getStreamTypes: ", uri.getAuthority());
+            traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "getStreamTypes: ", uri.getAuthority());
             final AttributionSource original = setCallingAttributionSource(
                     attributionSource);
             try {
@@ -648,7 +648,7 @@
                 throw e.rethrowAsRuntimeException();
             } finally {
                 setCallingAttributionSource(original);
-                Trace.traceEnd(TRACE_TAG_DATABASE);
+                Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
             }
         }
 
@@ -660,7 +660,7 @@
             uri = validateIncomingUri(uri);
             uri = maybeGetUriWithoutUserId(uri);
             enforceFilePermission(attributionSource, uri, "r");
-            traceBegin(TRACE_TAG_DATABASE, "openTypedAssetFile: ", uri.getAuthority());
+            traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "openTypedAssetFile: ", uri.getAuthority());
             final AttributionSource original = setCallingAttributionSource(
                     attributionSource);
             try {
@@ -670,7 +670,7 @@
                 throw e.rethrowAsRuntimeException();
             } finally {
                 setCallingAttributionSource(original);
-                Trace.traceEnd(TRACE_TAG_DATABASE);
+                Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
             }
         }
 
@@ -688,7 +688,7 @@
                     != PermissionChecker.PERMISSION_GRANTED) {
                 return null;
             }
-            traceBegin(TRACE_TAG_DATABASE, "canonicalize: ", uri.getAuthority());
+            traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "canonicalize: ", uri.getAuthority());
             final AttributionSource original = setCallingAttributionSource(
                     attributionSource);
             try {
@@ -697,7 +697,7 @@
                 throw e.rethrowAsRuntimeException();
             } finally {
                 setCallingAttributionSource(original);
-                Trace.traceEnd(TRACE_TAG_DATABASE);
+                Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
             }
         }
 
@@ -724,7 +724,7 @@
                     != PermissionChecker.PERMISSION_GRANTED) {
                 return null;
             }
-            traceBegin(TRACE_TAG_DATABASE, "uncanonicalize: ", uri.getAuthority());
+            traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "uncanonicalize: ", uri.getAuthority());
             final AttributionSource original = setCallingAttributionSource(
                     attributionSource);
             try {
@@ -733,7 +733,7 @@
                 throw e.rethrowAsRuntimeException();
             } finally {
                 setCallingAttributionSource(original);
-                Trace.traceEnd(TRACE_TAG_DATABASE);
+                Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
             }
         }
 
@@ -760,7 +760,7 @@
                     != PermissionChecker.PERMISSION_GRANTED) {
                 return false;
             }
-            traceBegin(TRACE_TAG_DATABASE, "refresh: ", uri.getAuthority());
+            traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "refresh: ", uri.getAuthority());
             final AttributionSource original = setCallingAttributionSource(
                     attributionSource);
             try {
@@ -768,7 +768,7 @@
                         CancellationSignal.fromTransport(cancellationSignal));
             } finally {
                 setCallingAttributionSource(original);
-                Trace.traceEnd(TRACE_TAG_DATABASE);
+                Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
             }
         }
 
@@ -777,7 +777,7 @@
                 int uid, int modeFlags) {
             uri = validateIncomingUri(uri);
             uri = maybeGetUriWithoutUserId(uri);
-            traceBegin(TRACE_TAG_DATABASE, "checkUriPermission: ", uri.getAuthority());
+            traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "checkUriPermission: ", uri.getAuthority());
             final AttributionSource original = setCallingAttributionSource(
                     attributionSource);
             try {
@@ -786,7 +786,7 @@
                 throw e.rethrowAsRuntimeException();
             } finally {
                 setCallingAttributionSource(original);
-                Trace.traceEnd(TRACE_TAG_DATABASE);
+                Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
             }
         }
 
diff --git a/core/java/android/content/IClipboard.aidl b/core/java/android/content/IClipboard.aidl
index fe7798f..e0fba1d 100644
--- a/core/java/android/content/IClipboard.aidl
+++ b/core/java/android/content/IClipboard.aidl
@@ -28,6 +28,7 @@
 interface IClipboard {
     void setPrimaryClip(in ClipData clip, String callingPackage, String attributionTag, int userId,
             int deviceId);
+    @EnforcePermission("SET_CLIP_SOURCE")
     void setPrimaryClipAsPackage(in ClipData clip, String callingPackage, String attributionTag,
             int userId, int deviceId, String sourcePackage);
     void clearPrimaryClip(String callingPackage, String attributionTag, int userId, int deviceId);
@@ -46,6 +47,7 @@
     boolean hasClipboardText(String callingPackage, String attributionTag, int userId,
             int deviceId);
 
+    @EnforcePermission("SET_CLIP_SOURCE")
     String getPrimaryClipSource(String callingPackage, String attributionTag, int userId,
             int deviceId);
 
diff --git a/core/java/android/content/IContentService.aidl b/core/java/android/content/IContentService.aidl
index 127466d..0d11c78 100644
--- a/core/java/android/content/IContentService.aidl
+++ b/core/java/android/content/IContentService.aidl
@@ -160,6 +160,7 @@
      * @param cname component to identify sync service, must be null if account/providerName are
      * non-null.
      */
+    @EnforcePermission("READ_SYNC_STATS")
     @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean isSyncActive(in Account account, String authority, in ComponentName cname);
 
@@ -183,6 +184,7 @@
      * non-null.
      */
     boolean isSyncPending(in Account account, String authority, in ComponentName cname);
+    @EnforcePermission("READ_SYNC_STATS")
     boolean isSyncPendingAsUser(in Account account, String authority, in ComponentName cname,
             int userId);
 
diff --git a/core/java/android/content/SharedPreferences.java b/core/java/android/content/SharedPreferences.java
index de6dc22..5e5d4181 100644
--- a/core/java/android/content/SharedPreferences.java
+++ b/core/java/android/content/SharedPreferences.java
@@ -30,10 +30,27 @@
  * when they are committed to storage.  Objects that are returned from the
  * various <code>get</code> methods must be treated as immutable by the application.
  *
- * <p>Note: This class provides strong consistency guarantees. It is using expensive operations
- * which might slow down an app. Frequently changing properties or properties where loss can be
- * tolerated should use other mechanisms. For more details read the comments on
- * {@link Editor#commit()} and {@link Editor#apply()}.
+ * <p>SharedPreferences is best suited to storing data about how the user prefers
+ * to experience the app, for example, whether the user prefers a particular UI theme
+ * or whether they prefer viewing particular content in a list vs. a grid. To this end,
+ * SharedPreferences reflects changes {@link Editor#commit() committed} or
+ * {@link Editor#apply() applied} by {@link Editor}s <em>immediately</em>, potentially
+ * before those changes are durably persisted.
+ * Under some circumstances such as app crashes or termination these changes may be lost,
+ * even if an {@link OnSharedPreferenceChangeListener} reported the change was successful.
+ * SharedPreferences is not recommended for storing data that is sensitive to this
+ * kind of rollback to a prior state such as user security or privacy settings.
+ * For other high-level data persistence options, see
+ * <a href="https://d.android.com/room">Room</a> or
+ * <a href="https://d.android.com/datastore">DataStore</a>.
+ *
+ * <p><em>Note:</em> Common implementations guarantee that outstanding edits to preference
+ * files are persisted to disk when host Activities become stopped. In some situations
+ * (e.g. performing many {@link Editor#commit()} or {@link Editor#apply()}
+ * operations just prior to navigating away from the host Activity) this can lead
+ * to blocking the main thread during lifecycle transition events and associated
+ * ANR errors. For more details see the documentation for {@link Editor#commit()} and
+ * {@link Editor#apply()}.
  *
  * <p><em>Note: This class does not support use across multiple processes.</em>
  *
diff --git a/core/java/android/content/pm/IPackageInstaller.aidl b/core/java/android/content/pm/IPackageInstaller.aidl
index e3016a4..ebe2aa3 100644
--- a/core/java/android/content/pm/IPackageInstaller.aidl
+++ b/core/java/android/content/pm/IPackageInstaller.aidl
@@ -59,6 +59,7 @@
     void installExistingPackage(String packageName, int installFlags, int installReason,
             in IntentSender statusReceiver, int userId, in List<String> whiteListedPermissions);
 
+    @EnforcePermission("INSTALL_PACKAGES")
     void setPermissionsResult(int sessionId, boolean accepted);
 
     void bypassNextStagedInstallerCheck(boolean value);
diff --git a/core/java/android/content/pm/IPackageInstallerSession.aidl b/core/java/android/content/pm/IPackageInstallerSession.aidl
index 081f263..ea69a2b 100644
--- a/core/java/android/content/pm/IPackageInstallerSession.aidl
+++ b/core/java/android/content/pm/IPackageInstallerSession.aidl
@@ -49,8 +49,11 @@
     void seal();
     List<String> fetchPackageNames();
 
+    @EnforcePermission("USE_INSTALLER_V2")
     DataLoaderParamsParcel getDataLoaderParams();
+    @EnforcePermission("USE_INSTALLER_V2")
     void addFile(int location, String name, long lengthBytes, in byte[] metadata, in byte[] signature);
+    @EnforcePermission("USE_INSTALLER_V2")
     void removeFile(int location, String name);
 
     boolean isMultiPackage();
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index 1ba84c5..1134110 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -159,6 +159,7 @@
      */
     ParceledListSlice getInstalledPackages(long flags, in int userId);
 
+    @EnforcePermission("GET_APP_METADATA")
     @nullable ParcelFileDescriptor getAppMetadataFd(String packageName,
                 int userId);
 
@@ -282,9 +283,11 @@
     void addCrossProfileIntentFilter(in IntentFilter intentFilter, String ownerPackage,
             int sourceUserId, int targetUserId, int flags);
 
+    @EnforcePermission("INTERACT_ACROSS_USERS_FULL")
     boolean removeCrossProfileIntentFilter(in IntentFilter intentFilter, String ownerPackage,
                 int sourceUserId, int targetUserId, int flags);
 
+    @EnforcePermission("INTERACT_ACROSS_USERS_FULL")
     void clearCrossProfileIntentFilters(int sourceUserId, String ownerPackage);
 
     String[] setDistractingPackageRestrictionsAsUser(in String[] packageNames, int restrictionFlags,
@@ -417,6 +420,7 @@
      * @param observer call back used to notify when
      * the operation is completed
      */
+     @EnforcePermission("CLEAR_APP_CACHE")
      void freeStorageAndNotify(in String volumeUuid, in long freeStorageSize,
              int storageFlags, IPackageDataObserver observer);
 
@@ -441,6 +445,7 @@
      * notify when the operation is completed.May be null
      * to indicate that no call back is desired.
      */
+     @EnforcePermission("CLEAR_APP_CACHE")
      void freeStorage(in String volumeUuid, in long freeStorageSize,
              int storageFlags, in IntentSender pi);
 
@@ -468,6 +473,7 @@
      * files need to be deleted
      * @param observer a callback used to notify when the operation is completed.
      */
+    @EnforcePermission("CLEAR_APP_USER_DATA")
     void clearApplicationUserData(in String packageName, IPackageDataObserver observer, int userId);
 
     /**
@@ -577,14 +583,20 @@
     boolean performDexOptSecondary(String packageName,
             String targetCompilerFilter, boolean force);
 
+    @EnforcePermission("MOUNT_UNMOUNT_FILESYSTEMS")
     int getMoveStatus(int moveId);
 
+    @EnforcePermission("MOUNT_UNMOUNT_FILESYSTEMS")
     void registerMoveCallback(in IPackageMoveObserver callback);
+    @EnforcePermission("MOUNT_UNMOUNT_FILESYSTEMS")
     void unregisterMoveCallback(in IPackageMoveObserver callback);
 
+    @EnforcePermission("MOVE_PACKAGE")
     int movePackage(in String packageName, in String volumeUuid);
+    @EnforcePermission("MOVE_PACKAGE")
     int movePrimaryStorage(in String volumeUuid);
 
+    @EnforcePermission("WRITE_SECURE_SETTINGS")
     boolean setInstallLocation(int loc);
     @UnsupportedAppUsage
     int getInstallLocation();
@@ -605,6 +617,7 @@
     ParceledListSlice getIntentFilterVerifications(String packageName);
     ParceledListSlice getAllIntentFilters(String packageName);
 
+    @EnforcePermission("PACKAGE_VERIFICATION_AGENT")
     VerifierDeviceIdentity getVerifierDeviceIdentity();
 
     boolean isFirstBoot();
@@ -614,6 +627,7 @@
     @UnsupportedAppUsage
     boolean isStorageLow();
 
+    @EnforcePermission("MANAGE_USERS")
     @UnsupportedAppUsage
     boolean setApplicationHiddenSettingAsUser(String packageName, boolean hidden, int userId);
     boolean getApplicationHiddenSettingAsUser(String packageName, int userId);
@@ -624,6 +638,7 @@
     @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     IPackageInstaller getPackageInstaller();
 
+    @EnforcePermission("DELETE_PACKAGES")
     boolean setBlockUninstallForUser(String packageName, boolean blockUninstall, int userId);
     @UnsupportedAppUsage
     boolean getBlockUninstallForUser(String packageName, int userId);
@@ -649,6 +664,7 @@
      * Sets whether or not an update is available. Ostensibly for instant apps
      * to force exteranl resolution.
      */
+    @EnforcePermission("INSTALL_PACKAGES")
     void setUpdateAvailable(String packageName, boolean updateAvaialble);
 
     @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
@@ -676,6 +692,7 @@
 
     ComponentName getInstantAppInstallerComponent();
 
+    @EnforcePermission("ACCESS_INSTANT_APPS")
     String getInstantAppAndroidId(String packageName, int userId);
 
     IArtManager getArtManager();
@@ -774,6 +791,7 @@
 
     void makeProviderVisible(int recipientAppId, String visibleAuthority);
 
+    @EnforcePermission("MAKE_UID_VISIBLE")
     @JavaPassthrough(annotation = "@android.annotation.RequiresPermission(android.Manifest"
             + ".permission.MAKE_UID_VISIBLE)")
     void makeUidVisible(int recipientAppId, int visibleUid);
diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java
index 30fd77c..0f9dc44 100644
--- a/core/java/android/content/pm/PackageInstaller.java
+++ b/core/java/android/content/pm/PackageInstaller.java
@@ -3554,6 +3554,19 @@
         }
 
         /**
+         * @return the path to the validated base APK for this session, which may point at an
+         * APK inside the session (when the session defines the base), or it may
+         * point at the existing base APK (when adding splits to an existing app).
+         *
+         * @hide
+         */
+        @SystemApi
+        @RequiresPermission(Manifest.permission.READ_INSTALLED_SESSION_PATHS)
+        public @Nullable String getResolvedBaseApkPath() {
+            return resolvedBaseCodePath;
+        }
+
+        /**
          * Get the value set in {@link SessionParams#setGrantedRuntimePermissions(String[])}.
          *
          * @hide
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index eb3d37d..e323aa5 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -313,7 +313,7 @@
 
         /**
          * Returns the classname of the component where this property was defined.
-         * <p>If the property was defined within and &lt;application&gt; tag, retutrns
+         * <p>If the property was defined within and &lt;application&gt; tag, returns
          * {@code null}
          */
         @Nullable public String getClassName() {
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 960d10a..048289f 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -2628,15 +2628,6 @@
             return Build.VERSION_CODES.CUR_DEVELOPMENT;
         }
 
-        // STOPSHIP: hack for the pre-release SDK
-        if (platformSdkCodenames.length == 0
-                && Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals(
-                targetCode)) {
-            Slog.w(TAG, "Package requires development platform " + targetCode
-                    + ", returning current version " + Build.VERSION.SDK_INT);
-            return Build.VERSION.SDK_INT;
-        }
-
         // Otherwise, we're looking at an incompatible pre-release SDK.
         if (platformSdkCodenames.length > 0) {
             outError[0] = "Requires development platform " + targetCode
@@ -2708,15 +2699,6 @@
             return Build.VERSION_CODES.CUR_DEVELOPMENT;
         }
 
-        // STOPSHIP: hack for the pre-release SDK
-        if (platformSdkCodenames.length == 0
-                && Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals(
-                minCode)) {
-            Slog.w(TAG, "Package requires min development platform " + minCode
-                    + ", returning current version " + Build.VERSION.SDK_INT);
-            return Build.VERSION.SDK_INT;
-        }
-
         // Otherwise, we're looking at an incompatible pre-release SDK.
         if (platformSdkCodenames.length > 0) {
             outError[0] = "Requires development platform " + minCode
diff --git a/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java b/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
index 8cc4cdb..3e1c5bb 100644
--- a/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
+++ b/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
@@ -316,15 +316,6 @@
             return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT);
         }
 
-        // STOPSHIP: hack for the pre-release SDK
-        if (platformSdkCodenames.length == 0
-                && Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals(
-                        minCode)) {
-            Slog.w(TAG, "Parsed package requires min development platform " + minCode
-                    + ", returning current version " + Build.VERSION.SDK_INT);
-            return input.success(Build.VERSION.SDK_INT);
-        }
-
         // Otherwise, we're looking at an incompatible pre-release SDK.
         if (platformSdkCodenames.length > 0) {
             return input.error(PackageManager.INSTALL_FAILED_OLDER_SDK,
@@ -377,27 +368,19 @@
             return input.success(targetVers);
         }
 
-        // If it's a pre-release SDK and the codename matches this platform, it
-        // definitely targets this SDK.
-        if (matchTargetCode(platformSdkCodenames, targetCode)) {
-            return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT);
-        }
-
-        // STOPSHIP: hack for the pre-release SDK
-        if (platformSdkCodenames.length == 0
-                && Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals(
-                        targetCode)) {
-            Slog.w(TAG, "Parsed package requires development platform " + targetCode
-                    + ", returning current version " + Build.VERSION.SDK_INT);
-            return input.success(Build.VERSION.SDK_INT);
-        }
-
         try {
             if (allowUnknownCodenames && UnboundedSdkLevel.isAtMost(targetCode)) {
                 return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT);
             }
         } catch (IllegalArgumentException e) {
-            return input.error(PackageManager.INSTALL_FAILED_OLDER_SDK, "Bad package SDK");
+            // isAtMost() throws it when encountering an older SDK codename
+            return input.error(PackageManager.INSTALL_FAILED_OLDER_SDK, e.getMessage());
+        }
+
+        // If it's a pre-release SDK and the codename matches this platform, it
+        // definitely targets this SDK.
+        if (matchTargetCode(platformSdkCodenames, targetCode)) {
+            return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT);
         }
 
         // Otherwise, we're looking at an incompatible pre-release SDK.
diff --git a/core/java/android/content/res/AssetFileDescriptor.java b/core/java/android/content/res/AssetFileDescriptor.java
index ac65933..3486d5e 100644
--- a/core/java/android/content/res/AssetFileDescriptor.java
+++ b/core/java/android/content/res/AssetFileDescriptor.java
@@ -16,17 +16,29 @@
 
 package android.content.res;
 
+import static android.system.OsConstants.S_ISFIFO;
+import static android.system.OsConstants.S_ISSOCK;
+
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.ParcelFileDescriptor;
 import android.os.Parcelable;
+import android.system.ErrnoException;
+import android.system.Os;
+import android.system.StructStat;
 
 import java.io.Closeable;
 import java.io.FileDescriptor;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.MappedByteBuffer;
+import java.nio.channels.FileChannel;
+import java.nio.channels.FileLock;
+import java.nio.channels.ReadableByteChannel;
+import java.nio.channels.WritableByteChannel;
 
 /**
  * File descriptor of an entry in the AssetManager.  This provides your own
@@ -200,13 +212,94 @@
      * An InputStream you can create on a ParcelFileDescriptor, which will
      * take care of calling {@link ParcelFileDescriptor#close
      * ParcelFileDescriptor.close()} for you when the stream is closed.
+     * It has a ParcelFileDescriptor.AutoCloseInputStream member to make delegate calls
+     * and during definition it will create seekable or non seekable child object
+     * AssetFileDescriptor.AutoCloseInputStream depends on the type of file descriptor
+     * to provide different solution.
      */
     public static class AutoCloseInputStream
             extends ParcelFileDescriptor.AutoCloseInputStream {
-        private long mRemaining;
+        private ParcelFileDescriptor.AutoCloseInputStream mDelegateInputStream;
 
         public AutoCloseInputStream(AssetFileDescriptor fd) throws IOException {
             super(fd.getParcelFileDescriptor());
+            StructStat ss;
+            try {
+                ss = Os.fstat(fd.getParcelFileDescriptor().getFileDescriptor());
+            } catch (ErrnoException e) {
+                throw new IOException(e);
+            }
+            if (S_ISSOCK(ss.st_mode) || S_ISFIFO(ss.st_mode)) {
+                mDelegateInputStream = new NonSeekableAutoCloseInputStream(fd);
+            } else {
+                mDelegateInputStream = new SeekableAutoCloseInputStream(fd);
+            }
+        }
+
+        @Override
+        public int available() throws IOException {
+            return mDelegateInputStream.available();
+        }
+
+        @Override
+        public int read() throws IOException {
+            return mDelegateInputStream.read();
+        }
+
+        @Override
+        public int read(byte[] buffer, int offset, int count) throws IOException {
+            return mDelegateInputStream.read(buffer, offset, count);
+        }
+
+        @Override
+        public int read(byte[] buffer) throws IOException {
+            return mDelegateInputStream.read(buffer);
+        }
+
+        @Override
+        public long skip(long count) throws IOException {
+            return mDelegateInputStream.skip(count);
+        }
+
+        @Override
+        public void mark(int readlimit) {
+            mDelegateInputStream.mark(readlimit);
+        }
+
+        @Override
+        public boolean markSupported() {
+            return mDelegateInputStream.markSupported();
+        }
+
+        @Override
+        public synchronized void reset() throws IOException {
+            mDelegateInputStream.reset();
+        }
+
+        @Override
+        public FileChannel getChannel() {
+            return mDelegateInputStream.getChannel();
+        }
+        @Override
+        public void close() throws IOException {
+            // Make the mDelegateInputStream own file descriptor and super.close()
+            // is not needed here to avoid double close the file descriptor.
+            mDelegateInputStream.close();
+        }
+    }
+
+    /**
+     * An InputStream you can create on a non seekable file descriptor,
+     * like PIPE, SOCKET and FIFO, which will take care of calling
+     * {@link ParcelFileDescriptor#close ParcelFileDescriptor.close()}
+     * for you when the stream is closed.
+     */
+    private static class NonSeekableAutoCloseInputStream
+            extends ParcelFileDescriptor.AutoCloseInputStream {
+        private long mRemaining;
+
+        NonSeekableAutoCloseInputStream(AssetFileDescriptor fd) throws IOException {
+            super(fd.getParcelFileDescriptor());
             super.skip(fd.getStartOffset());
             mRemaining = (int) fd.getLength();
         }
@@ -284,6 +377,254 @@
     }
 
     /**
+     * An InputStream you can create on a seekable file descriptor, which means
+     * you can use pread to read from a specific offset, this will take care of
+     * calling {@link ParcelFileDescriptor#close ParcelFileDescriptor.close()}
+     * for you when the stream is closed.
+     */
+    private static class SeekableAutoCloseInputStream
+            extends ParcelFileDescriptor.AutoCloseInputStream {
+        /** Size of current file. */
+        private long mTotalSize;
+        /** The absolute position of current file start point. */
+        private final long mFileOffset;
+        /** The relative position where input stream is against mFileOffset. */
+        private long mOffset;
+        private OffsetCorrectFileChannel mOffsetCorrectFileChannel;
+
+        SeekableAutoCloseInputStream(AssetFileDescriptor fd) throws IOException {
+            super(fd.getParcelFileDescriptor());
+            mTotalSize = fd.getLength();
+            mFileOffset = fd.getStartOffset();
+        }
+
+        @Override
+        public int available() throws IOException {
+            long available = mTotalSize - mOffset;
+            return available >= 0
+                    ? (available < 0x7fffffff ? (int) available : 0x7fffffff)
+                    : 0;
+        }
+
+        @Override
+        public int read() throws IOException {
+            byte[] buffer = new byte[1];
+            int result = read(buffer, 0, 1);
+            return result == -1 ? -1 : buffer[0] & 0xff;
+        }
+
+        @Override
+        public int read(byte[] buffer, int offset, int count) throws IOException {
+            int available = available();
+            if (available <= 0) {
+                return -1;
+            }
+
+            if (count > available) count = available;
+            try {
+                int res = Os.pread(getFD(), buffer, offset, count, mFileOffset + mOffset);
+                // pread returns 0 at end of file, while java's InputStream interface requires -1
+                if (res == 0) res = -1;
+                if (res > 0) {
+                    mOffset += res;
+                    updateChannelPosition(mOffset + mFileOffset);
+                }
+                return res;
+            } catch (ErrnoException e) {
+                throw new IOException(e);
+            }
+        }
+
+        @Override
+        public int read(byte[] buffer) throws IOException {
+            return read(buffer, 0, buffer.length);
+        }
+
+        @Override
+        public long skip(long count) throws IOException {
+            int available = available();
+            if (available <= 0) {
+                return -1;
+            }
+
+            if (count > available) count = available;
+            mOffset += count;
+            updateChannelPosition(mOffset + mFileOffset);
+            return count;
+        }
+
+        @Override
+        public void mark(int readlimit) {
+            // Not supported.
+            return;
+        }
+
+        @Override
+        public boolean markSupported() {
+            return false;
+        }
+
+        @Override
+        public synchronized void reset() throws IOException {
+            // Not supported.
+            return;
+        }
+
+        @Override
+        public FileChannel getChannel() {
+            if (mOffsetCorrectFileChannel == null) {
+                mOffsetCorrectFileChannel = new OffsetCorrectFileChannel(super.getChannel());
+            }
+            try {
+                updateChannelPosition(mOffset + mFileOffset);
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+            return mOffsetCorrectFileChannel;
+        }
+
+        /**
+         * Update the position of mOffsetCorrectFileChannel only after it is constructed.
+         *
+         * @param newPosition The absolute position mOffsetCorrectFileChannel needs to be moved to.
+         */
+        private void updateChannelPosition(long newPosition) throws IOException {
+            if (mOffsetCorrectFileChannel != null) {
+                mOffsetCorrectFileChannel.position(newPosition);
+            }
+        }
+
+        /**
+         * A FileChannel wrapper that will update mOffset of the AutoCloseInputStream
+         * to correct position when using FileChannel to read. All occurrence of position
+         * should be using absolute solution and each override method just do Delegation
+         * besides additional check. All methods related to write mode have been disabled
+         * and will throw UnsupportedOperationException with customized message.
+         */
+        private class OffsetCorrectFileChannel extends FileChannel {
+            private final FileChannel mDelegate;
+            private static final String METHOD_NOT_SUPPORTED_MESSAGE =
+                    "This Method is not supported in AutoCloseInputStream FileChannel.";
+
+            OffsetCorrectFileChannel(FileChannel fc) {
+                mDelegate = fc;
+            }
+
+            @Override
+            public int read(ByteBuffer dst) throws IOException {
+                if (available() <= 0) return -1;
+                int bytesRead = mDelegate.read(dst);
+                if (bytesRead != -1) mOffset += bytesRead;
+                return bytesRead;
+            }
+
+            @Override
+            public long read(ByteBuffer[] dsts, int offset, int length) throws IOException {
+                if (available() <= 0) return -1;
+                if (mOffset + length > mTotalSize) {
+                    length = (int) (mTotalSize - mOffset);
+                }
+                long bytesRead = mDelegate.read(dsts, offset, length);
+                if (bytesRead != -1) mOffset += bytesRead;
+                return bytesRead;
+            }
+
+            @Override
+            /**The only read method that does not move channel position*/
+            public int read(ByteBuffer dst, long position) throws IOException {
+                if (position - mFileOffset > mTotalSize) return -1;
+                return mDelegate.read(dst, position);
+            }
+
+            @Override
+            public long position() throws IOException {
+                return mDelegate.position();
+            }
+
+            @Override
+            public FileChannel position(long newPosition) throws IOException {
+                mOffset = newPosition - mFileOffset;
+                return mDelegate.position(newPosition);
+            }
+
+            @Override
+            public long size() throws IOException {
+                return mTotalSize;
+            }
+
+            @Override
+            public long transferTo(long position, long count, WritableByteChannel target)
+                    throws IOException {
+                if (position - mFileOffset > mTotalSize) {
+                    return 0;
+                }
+                if (position - mFileOffset + count > mTotalSize) {
+                    count = mTotalSize - (position - mFileOffset);
+                }
+                return mDelegate.transferTo(position, count, target);
+            }
+
+            @Override
+            public MappedByteBuffer map(MapMode mode, long position, long size) throws IOException {
+                if (position - mFileOffset > mTotalSize) {
+                    throw new IOException(
+                            "Cannot map to buffer because position exceed current file size.");
+                }
+                if (position - mFileOffset + size > mTotalSize) {
+                    size = mTotalSize - (position - mFileOffset);
+                }
+                return mDelegate.map(mode, position, size);
+            }
+
+            @Override
+            protected void implCloseChannel() throws IOException {
+                mDelegate.close();
+            }
+
+            @Override
+            public int write(ByteBuffer src) throws IOException {
+                throw new UnsupportedOperationException(METHOD_NOT_SUPPORTED_MESSAGE);
+            }
+
+            @Override
+            public long write(ByteBuffer[] srcs, int offset, int length) throws IOException {
+                throw new UnsupportedOperationException(METHOD_NOT_SUPPORTED_MESSAGE);
+            }
+
+            @Override
+            public int write(ByteBuffer src, long position) throws IOException {
+                throw new UnsupportedOperationException(METHOD_NOT_SUPPORTED_MESSAGE);
+            }
+
+            @Override
+            public long transferFrom(ReadableByteChannel src, long position, long count)
+                    throws IOException {
+                throw new UnsupportedOperationException(METHOD_NOT_SUPPORTED_MESSAGE);
+            }
+
+            @Override
+            public FileChannel truncate(long size) throws IOException {
+                throw new UnsupportedOperationException(METHOD_NOT_SUPPORTED_MESSAGE);
+            }
+
+            @Override
+            public void force(boolean metaData) throws IOException {
+                throw new UnsupportedOperationException(METHOD_NOT_SUPPORTED_MESSAGE);
+            }
+
+            @Override
+            public FileLock lock(long position, long size, boolean shared) throws IOException {
+                throw new UnsupportedOperationException(METHOD_NOT_SUPPORTED_MESSAGE);
+            }
+
+            @Override
+            public FileLock tryLock(long position, long size, boolean shared) throws IOException {
+                throw new UnsupportedOperationException(METHOD_NOT_SUPPORTED_MESSAGE);
+            }
+        }
+    }
+
+    /**
      * An OutputStream you can create on a ParcelFileDescriptor, which will
      * take care of calling {@link ParcelFileDescriptor#close
      * ParcelFileDescriptor.close()} for you when the stream is closed.
diff --git a/core/java/android/content/res/AssetManager.java b/core/java/android/content/res/AssetManager.java
index ef3842a..0f284f4 100644
--- a/core/java/android/content/res/AssetManager.java
+++ b/core/java/android/content/res/AssetManager.java
@@ -528,6 +528,10 @@
         if (!mOpen) {
             throw new RuntimeException("AssetManager has been closed");
         }
+        // Let's still check if the native object exists, given all the memory corruptions.
+        if (mObject == 0) {
+            throw new RuntimeException("AssetManager is open but the native object is gone");
+        }
     }
 
     /**
@@ -1153,6 +1157,7 @@
     int[] getAttributeResolutionStack(long themePtr, @AttrRes int defStyleAttr,
             @StyleRes int defStyleRes, @StyleRes int xmlStyle) {
         synchronized (this) {
+            ensureValidLocked();
             return nativeAttributeResolutionStack(
                     mObject, themePtr, xmlStyle, defStyleAttr, defStyleRes);
         }
diff --git a/core/java/android/content/res/StringBlock.java b/core/java/android/content/res/StringBlock.java
index 6c07356..c143acb 100644
--- a/core/java/android/content/res/StringBlock.java
+++ b/core/java/android/content/res/StringBlock.java
@@ -62,7 +62,7 @@
     private static final String TAG = "AssetManager";
     private static final boolean localLOGV = false;
 
-    private final long mNative;
+    private long mNative;   // final, but gets modified when closed
     private final boolean mUseSparse;
     private final boolean mOwnsNative;
 
@@ -207,6 +207,7 @@
                 if (mOwnsNative) {
                     nativeDestroy(mNative);
                 }
+                mNative = 0;
             }
         }
     }
diff --git a/core/java/android/content/res/XmlBlock.java b/core/java/android/content/res/XmlBlock.java
index 3915a6c..16fd1f7 100644
--- a/core/java/android/content/res/XmlBlock.java
+++ b/core/java/android/content/res/XmlBlock.java
@@ -73,7 +73,9 @@
     private void decOpenCountLocked() {
         mOpenCount--;
         if (mOpenCount == 0) {
+            mStrings.close();
             nativeDestroy(mNative);
+            mNative = 0;
             if (mAssets != null) {
                 mAssets.xmlBlockGone(hashCode());
             }
@@ -621,7 +623,7 @@
     }
 
     private @Nullable final AssetManager mAssets;
-    private final long mNative;
+    private long mNative;   // final, but gets reset on close
     /*package*/ final StringBlock mStrings;
     private boolean mOpen = true;
     private int mOpenCount = 1;
diff --git a/core/java/android/credentials/CredentialProviderInfo.java b/core/java/android/credentials/CredentialProviderInfo.java
index c224f01..c4f8b08 100644
--- a/core/java/android/credentials/CredentialProviderInfo.java
+++ b/core/java/android/credentials/CredentialProviderInfo.java
@@ -29,9 +29,7 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 
 /**
  * {@link ServiceInfo} and meta-data about a credential provider.
@@ -41,7 +39,7 @@
 @TestApi
 public final class CredentialProviderInfo implements Parcelable {
     @NonNull private final ServiceInfo mServiceInfo;
-    @NonNull private final Set<String> mCapabilities = new HashSet<>();
+    @NonNull private final List<String> mCapabilities = new ArrayList<>();
     @Nullable private final CharSequence mOverrideLabel;
     @Nullable private CharSequence mSettingsSubtitle = null;
     private final boolean mIsSystemProvider;
@@ -96,11 +94,7 @@
     /** Returns a list of capabilities this provider service can support. */
     @NonNull
     public List<String> getCapabilities() {
-        List<String> capabilities = new ArrayList<>();
-        for (String capability : mCapabilities) {
-            capabilities.add(capability);
-        }
-        return Collections.unmodifiableList(capabilities);
+        return Collections.unmodifiableList(mCapabilities);
     }
 
     /** Returns whether the provider is enabled by the user. */
@@ -124,12 +118,10 @@
     public void writeToParcel(@NonNull Parcel dest, int flags) {
         dest.writeTypedObject(mServiceInfo, flags);
         dest.writeBoolean(mIsSystemProvider);
+        dest.writeStringList(mCapabilities);
         dest.writeBoolean(mIsEnabled);
         TextUtils.writeToParcel(mOverrideLabel, dest, flags);
         TextUtils.writeToParcel(mSettingsSubtitle, dest, flags);
-
-        List<String> capabilities = getCapabilities();
-        dest.writeStringList(capabilities);
     }
 
     @Override
@@ -163,13 +155,10 @@
     private CredentialProviderInfo(@NonNull Parcel in) {
         mServiceInfo = in.readTypedObject(ServiceInfo.CREATOR);
         mIsSystemProvider = in.readBoolean();
+        in.readStringList(mCapabilities);
         mIsEnabled = in.readBoolean();
         mOverrideLabel = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
         mSettingsSubtitle = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
-
-        List<String> capabilities = new ArrayList<>();
-        in.readStringList(capabilities);
-        mCapabilities.addAll(capabilities);
     }
 
     public static final @NonNull Parcelable.Creator<CredentialProviderInfo> CREATOR =
@@ -189,7 +178,7 @@
     public static final class Builder {
 
         @NonNull private ServiceInfo mServiceInfo;
-        @NonNull private Set<String> mCapabilities = new HashSet<>();
+        @NonNull private List<String> mCapabilities = new ArrayList<>();
         private boolean mIsSystemProvider = false;
         @Nullable private CharSequence mSettingsSubtitle = null;
         private boolean mIsEnabled = false;
@@ -232,16 +221,6 @@
             return this;
         }
 
-        /**
-         * Sets a list of capabilities this provider service can support.
-         *
-         * @hide
-         */
-        public @NonNull Builder addCapabilities(@NonNull Set<String> capabilities) {
-            mCapabilities.addAll(capabilities);
-            return this;
-        }
-
         /** Sets whether it is enabled by the user. */
         public @NonNull Builder setEnabled(boolean isEnabled) {
             mIsEnabled = isEnabled;
diff --git a/core/java/android/database/sqlite/SQLiteDatabase.java b/core/java/android/database/sqlite/SQLiteDatabase.java
index c08294f..87fc8c4 100644
--- a/core/java/android/database/sqlite/SQLiteDatabase.java
+++ b/core/java/android/database/sqlite/SQLiteDatabase.java
@@ -675,6 +675,30 @@
     }
 
     /**
+     * Begins a transaction in DEFERRED mode.
+     * <p>
+     * Transactions can be nested. When the outer transaction is ended all of the work done in
+     * that transaction and all of the nested transactions will be committed or rolled back. The
+     * changes will be rolled back if any transaction is ended without being marked as clean (by
+     * calling setTransactionSuccessful). Otherwise they will be committed.
+     * <p>
+     * Here is the standard idiom for transactions:
+     *
+     * <pre>
+     *   db.beginTransactionDeferred();
+     *   try {
+     *     ...
+     *     db.setTransactionSuccessful();
+     *   } finally {
+     *     db.endTransaction();
+     *   }
+     * </pre>
+     */
+    public void beginTransactionDeferred() {
+        beginTransactionWithListenerDeferred(null);
+    }
+
+    /**
      * Begins a transaction in EXCLUSIVE mode.
      * <p>
      * Transactions can be nested.
@@ -699,7 +723,8 @@
      * commits, or is rolled back, either explicitly or by a call to
      * {@link #yieldIfContendedSafely}.
      */
-    public void beginTransactionWithListener(SQLiteTransactionListener transactionListener) {
+    public void beginTransactionWithListener(
+            @Nullable SQLiteTransactionListener transactionListener) {
         beginTransaction(transactionListener, true);
     }
 
@@ -728,19 +753,53 @@
      *            explicitly or by a call to {@link #yieldIfContendedSafely}.
      */
     public void beginTransactionWithListenerNonExclusive(
-            SQLiteTransactionListener transactionListener) {
+            @Nullable SQLiteTransactionListener transactionListener) {
         beginTransaction(transactionListener, false);
     }
 
+    /**
+     * Begins a transaction in DEFERRED mode.
+     * <p>
+     * Transactions can be nested. When the outer transaction is ended all of the work done in
+     * that transaction and all of the nested transactions will be committed or rolled back. The
+     * changes will be rolled back if any transaction is ended without being marked as clean (by
+     * calling setTransactionSuccessful). Otherwise they will be committed.
+     * <p>
+     * Here is the standard idiom for transactions:
+     *
+     * <pre>
+     *   db.beginTransactionDeferred();
+     *   try {
+     *     ...
+     *     db.setTransactionSuccessful();
+     *   } finally {
+     *     db.endTransaction();
+     *   }
+     * </pre>
+     */
+    public void beginTransactionWithListenerDeferred(
+            @Nullable SQLiteTransactionListener transactionListener) {
+        beginTransaction(transactionListener, SQLiteSession.TRANSACTION_MODE_DEFERRED);
+    }
+
     @UnsupportedAppUsage
     private void beginTransaction(SQLiteTransactionListener transactionListener,
             boolean exclusive) {
+        beginTransaction(transactionListener,
+                exclusive ? SQLiteSession.TRANSACTION_MODE_EXCLUSIVE :
+                SQLiteSession.TRANSACTION_MODE_IMMEDIATE);
+    }
+
+    /**
+     * Begin a transaction with the specified mode.  Valid modes are
+     * {@link SquLiteSession.TRANSACTION_MODE_DEFERRED},
+     * {@link SquLiteSession.TRANSACTION_MODE_IMMEDIATE}, and
+     * {@link SquLiteSession.TRANSACTION_MODE_EXCLUSIVE}.
+     */
+    private void beginTransaction(@Nullable SQLiteTransactionListener listener, int mode) {
         acquireReference();
         try {
-            getThreadSession().beginTransaction(
-                    exclusive ? SQLiteSession.TRANSACTION_MODE_EXCLUSIVE :
-                            SQLiteSession.TRANSACTION_MODE_IMMEDIATE,
-                    transactionListener,
+            getThreadSession().beginTransaction(mode, listener,
                     getThreadDefaultConnectionFlags(false /*readOnly*/), null);
         } finally {
             releaseReference();
@@ -3113,4 +3172,3 @@
         ContentResolver.onDbCorruption(tag, message, stacktrace);
     }
 }
-
diff --git a/core/java/android/database/sqlite/SQLiteSession.java b/core/java/android/database/sqlite/SQLiteSession.java
index 24b62b8..8811dd4 100644
--- a/core/java/android/database/sqlite/SQLiteSession.java
+++ b/core/java/android/database/sqlite/SQLiteSession.java
@@ -325,7 +325,12 @@
                         mConnection.execute("BEGIN EXCLUSIVE;", null,
                                 cancellationSignal); // might throw
                         break;
+                    case TRANSACTION_MODE_DEFERRED:
+                        mConnection.execute("BEGIN DEFERRED;", null,
+                                cancellationSignal); // might throw
+                        break;
                     default:
+                        // Per SQLite documentation, this executes in DEFERRED mode.
                         mConnection.execute("BEGIN;", null, cancellationSignal); // might throw
                         break;
                 }
diff --git a/core/java/android/ddm/DdmHandleHello.java b/core/java/android/ddm/DdmHandleHello.java
index 4160029..a51a740 100644
--- a/core/java/android/ddm/DdmHandleHello.java
+++ b/core/java/android/ddm/DdmHandleHello.java
@@ -16,6 +16,7 @@
 
 package android.ddm;
 
+import android.os.DdmSyncState;
 import android.os.Debug;
 import android.os.UserHandle;
 import android.util.Log;
@@ -44,6 +45,7 @@
     private static final String[] FRAMEWORK_FEATURES = new String[] {
         "opengl-tracing",
         "view-hierarchy",
+        "support_boot_stages"
     };
 
     /* singleton, do not instantiate */
@@ -145,7 +147,9 @@
                             + instructionSetDescription.length() * 2
                             + vmFlags.length() * 2
                             + 1
-                            + pkgName.length() * 2);
+                            + pkgName.length() * 2
+                            // STAG id (int)
+                            + Integer.BYTES);
         out.order(ChunkHandler.CHUNK_ORDER);
         out.putInt(CLIENT_PROTOCOL_VERSION);
         out.putInt(android.os.Process.myPid());
@@ -162,6 +166,10 @@
         out.putInt(pkgName.length());
         putString(out, pkgName);
 
+        // Added API 34 (and advertised via FEAT ddm packet)
+        // Send the current boot stage in ActivityThread
+        out.putInt(DdmSyncState.getStage().toInt());
+
         Chunk reply = new Chunk(CHUNK_HELO, out);
 
         /*
diff --git a/core/java/android/hardware/HardwareBuffer.java b/core/java/android/hardware/HardwareBuffer.java
index ddbfb9e..889a43c 100644
--- a/core/java/android/hardware/HardwareBuffer.java
+++ b/core/java/android/hardware/HardwareBuffer.java
@@ -40,7 +40,7 @@
  * HardwareBuffer wraps a native <code>AHardwareBuffer</code> object, which is a low-level object
  * representing a memory buffer accessible by various hardware units. HardwareBuffer allows sharing
  * buffers across different application processes. In particular, HardwareBuffers may be mappable
- * to memory accessibly to various hardware systems, such as the GPU, a sensor or context hub, or
+ * to memory accessible to various hardware systems, such as the GPU, a sensor or context hub, or
  * other auxiliary processing units.
  *
  * For more information, see the NDK documentation for <code>AHardwareBuffer</code>.
diff --git a/core/java/android/hardware/devicestate/IDeviceStateManager.aidl b/core/java/android/hardware/devicestate/IDeviceStateManager.aidl
index 0993160..0d73a11 100644
--- a/core/java/android/hardware/devicestate/IDeviceStateManager.aidl
+++ b/core/java/android/hardware/devicestate/IDeviceStateManager.aidl
@@ -111,6 +111,7 @@
     *
     * This should only be called from the overlay itself.
     */
+    @EnforcePermission("CONTROL_DEVICE_STATE")
     @JavaPassthrough(annotation=
         "@android.annotation.RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_STATE)")
     void onStateRequestOverlayDismissed(boolean shouldCancelRequest);
diff --git a/core/java/android/hardware/display/IColorDisplayManager.aidl b/core/java/android/hardware/display/IColorDisplayManager.aidl
index 200cf736..77dfb47 100644
--- a/core/java/android/hardware/display/IColorDisplayManager.aidl
+++ b/core/java/android/hardware/display/IColorDisplayManager.aidl
@@ -32,26 +32,36 @@
     int getTransformCapabilities();
 
     boolean isNightDisplayActivated();
+    @EnforcePermission("CONTROL_DISPLAY_COLOR_TRANSFORMS")
     boolean setNightDisplayActivated(boolean activated);
     int getNightDisplayColorTemperature();
+    @EnforcePermission("CONTROL_DISPLAY_COLOR_TRANSFORMS")
     boolean setNightDisplayColorTemperature(int temperature);
+    @EnforcePermission("CONTROL_DISPLAY_COLOR_TRANSFORMS")
     int getNightDisplayAutoMode();
     int getNightDisplayAutoModeRaw();
+    @EnforcePermission("CONTROL_DISPLAY_COLOR_TRANSFORMS")
     boolean setNightDisplayAutoMode(int autoMode);
     Time getNightDisplayCustomStartTime();
+    @EnforcePermission("CONTROL_DISPLAY_COLOR_TRANSFORMS")
     boolean setNightDisplayCustomStartTime(in Time time);
     Time getNightDisplayCustomEndTime();
+    @EnforcePermission("CONTROL_DISPLAY_COLOR_TRANSFORMS")
     boolean setNightDisplayCustomEndTime(in Time time);
 
     int getColorMode();
+    @EnforcePermission("CONTROL_DISPLAY_COLOR_TRANSFORMS")
     void setColorMode(int colorMode);
 
     boolean isDisplayWhiteBalanceEnabled();
+    @EnforcePermission("CONTROL_DISPLAY_COLOR_TRANSFORMS")
     boolean setDisplayWhiteBalanceEnabled(boolean enabled);
 
     boolean isReduceBrightColorsActivated();
+    @EnforcePermission("CONTROL_DISPLAY_COLOR_TRANSFORMS")
     boolean setReduceBrightColorsActivated(boolean activated);
     int getReduceBrightColorsStrength();
+    @EnforcePermission("CONTROL_DISPLAY_COLOR_TRANSFORMS")
     boolean setReduceBrightColorsStrength(int strength);
     float getReduceBrightColorsOffsetFactor();
 }
\ No newline at end of file
diff --git a/core/java/android/hardware/display/IDisplayManager.aidl b/core/java/android/hardware/display/IDisplayManager.aidl
index a3b7b51..18edbdb 100644
--- a/core/java/android/hardware/display/IDisplayManager.aidl
+++ b/core/java/android/hardware/display/IDisplayManager.aidl
@@ -47,9 +47,11 @@
 
     // Requires CONFIGURE_WIFI_DISPLAY permission.
     // The process must have previously registered a callback.
+    @EnforcePermission("CONFIGURE_WIFI_DISPLAY")
     void startWifiDisplayScan();
 
     // Requires CONFIGURE_WIFI_DISPLAY permission.
+    @EnforcePermission("CONFIGURE_WIFI_DISPLAY")
     void stopWifiDisplayScan();
 
     // Requires CONFIGURE_WIFI_DISPLAY permission.
@@ -65,18 +67,22 @@
     void forgetWifiDisplay(String address);
 
     // Requires CONFIGURE_WIFI_DISPLAY permission.
+    @EnforcePermission("CONFIGURE_WIFI_DISPLAY")
     void pauseWifiDisplay();
 
     // Requires CONFIGURE_WIFI_DISPLAY permission.
+    @EnforcePermission("CONFIGURE_WIFI_DISPLAY")
     void resumeWifiDisplay();
 
     // No permissions required.
     WifiDisplayStatus getWifiDisplayStatus();
 
     // Requires WRITE_SECURE_SETTINGS permission.
+    @EnforcePermission("WRITE_SECURE_SETTINGS")
     void setUserDisabledHdrTypes(in int[] userDisabledTypes);
 
     // Requires WRITE_SECURE_SETTINGS permission.
+    @EnforcePermission("WRITE_SECURE_SETTINGS")
     void setAreUserDisabledHdrTypesAllowed(boolean areUserDisabledHdrTypesAllowed);
 
     // No permissions required.
@@ -89,6 +95,7 @@
     void overrideHdrTypes(int displayId, in int[] modes);
 
     // Requires CONFIGURE_DISPLAY_COLOR_MODE
+    @EnforcePermission("CONFIGURE_DISPLAY_COLOR_MODE")
     void requestColorMode(int displayId, int colorMode);
 
     // Requires CAPTURE_VIDEO_OUTPUT, CAPTURE_SECURE_VIDEO_OUTPUT, or an appropriate
@@ -114,24 +121,29 @@
     Point getStableDisplaySize();
 
     // Requires BRIGHTNESS_SLIDER_USAGE permission.
+    @EnforcePermission("BRIGHTNESS_SLIDER_USAGE")
     ParceledListSlice getBrightnessEvents(String callingPackage);
 
     // Requires ACCESS_AMBIENT_LIGHT_STATS permission.
+    @EnforcePermission("ACCESS_AMBIENT_LIGHT_STATS")
     ParceledListSlice getAmbientBrightnessStats();
 
     // Sets the global brightness configuration for a given user. Requires
     // CONFIGURE_DISPLAY_BRIGHTNESS, and INTERACT_ACROSS_USER if the user being configured is not
     // the same as the calling user.
+    @EnforcePermission("CONFIGURE_DISPLAY_BRIGHTNESS")
     void setBrightnessConfigurationForUser(in BrightnessConfiguration c, int userId,
             String packageName);
 
     // Sets the global brightness configuration for a given display. Requires
     // CONFIGURE_DISPLAY_BRIGHTNESS.
+    @EnforcePermission("CONFIGURE_DISPLAY_BRIGHTNESS")
     void setBrightnessConfigurationForDisplay(in BrightnessConfiguration c, String uniqueDisplayId,
             int userId, String packageName);
 
     // Gets the brightness configuration for a given display. Requires
     // CONFIGURE_DISPLAY_BRIGHTNESS.
+    @EnforcePermission("CONFIGURE_DISPLAY_BRIGHTNESS")
     BrightnessConfiguration getBrightnessConfigurationForDisplay(String uniqueDisplayId,
             int userId);
 
@@ -141,27 +153,32 @@
     BrightnessConfiguration getBrightnessConfigurationForUser(int userId);
 
     // Gets the default brightness configuration if configured.
+    @EnforcePermission("CONFIGURE_DISPLAY_BRIGHTNESS")
     BrightnessConfiguration getDefaultBrightnessConfiguration();
 
     // Gets the last requested minimal post processing settings for display with displayId.
     boolean isMinimalPostProcessingRequested(int displayId);
 
     // Temporarily sets the display brightness.
+    @EnforcePermission("CONTROL_DISPLAY_BRIGHTNESS")
     void setTemporaryBrightness(int displayId, float brightness);
 
     // Saves the display brightness.
+    @EnforcePermission("CONTROL_DISPLAY_BRIGHTNESS")
     void setBrightness(int displayId, float brightness);
 
     // Retrieves the display brightness.
     float getBrightness(int displayId);
 
     // Temporarily sets the auto brightness adjustment factor.
+    @EnforcePermission("CONTROL_DISPLAY_BRIGHTNESS")
     void setTemporaryAutoBrightnessAdjustment(float adjustment);
 
     // Get the minimum brightness curve.
     Curve getMinimumBrightnessCurve();
 
     // Get Brightness Information for the specified display.
+    @EnforcePermission("CONTROL_DISPLAY_BRIGHTNESS")
     BrightnessInfo getBrightnessInfo(int displayId);
 
     // Gets the id of the preferred wide gamut color space for all displays.
@@ -171,6 +188,7 @@
 
     // Sets the user preferred display mode.
     // Requires MODIFY_USER_PREFERRED_DISPLAY_MODE permission.
+    @EnforcePermission("MODIFY_USER_PREFERRED_DISPLAY_MODE")
     void setUserPreferredDisplayMode(int displayId, in Mode mode);
     Mode getUserPreferredDisplayMode(int displayId);
     Mode getSystemPreferredDisplayMode(int displayId);
@@ -187,10 +205,13 @@
     // When enabled the app requested display resolution and refresh rate is always selected
     // in DisplayModeDirector regardless of user settings and policies for low brightness, low
     // battery etc.
+    @EnforcePermission("OVERRIDE_DISPLAY_MODE_REQUESTS")
     void setShouldAlwaysRespectAppRequestedMode(boolean enabled);
+    @EnforcePermission("OVERRIDE_DISPLAY_MODE_REQUESTS")
     boolean shouldAlwaysRespectAppRequestedMode();
 
     // Sets the refresh rate switching type.
+    @EnforcePermission("MODIFY_REFRESH_RATE_SWITCHING_TYPE")
     void setRefreshRateSwitchingType(int newValue);
 
     // Returns the refresh rate switching type.
diff --git a/core/java/android/hardware/input/VirtualTouchEvent.java b/core/java/android/hardware/input/VirtualTouchEvent.java
index 73da5d9..2695a79 100644
--- a/core/java/android/hardware/input/VirtualTouchEvent.java
+++ b/core/java/android/hardware/input/VirtualTouchEvent.java
@@ -272,7 +272,8 @@
         public @NonNull Builder setAction(@Action int action) {
             if (action != ACTION_DOWN && action != ACTION_UP && action != ACTION_MOVE
                     && action != ACTION_CANCEL) {
-                throw new IllegalArgumentException("Unsupported touch event action type");
+                throw new IllegalArgumentException(
+                        "Unsupported touch event action type: " + action);
             }
             mAction = action;
             return this;
diff --git a/core/java/android/hardware/usb/IUsbManager.aidl b/core/java/android/hardware/usb/IUsbManager.aidl
index 21b00e3..09f5f36 100644
--- a/core/java/android/hardware/usb/IUsbManager.aidl
+++ b/core/java/android/hardware/usb/IUsbManager.aidl
@@ -81,6 +81,7 @@
     boolean hasDevicePermission(in UsbDevice device, String packageName);
 
     /* Returns true if the given package/pid/uid has permission to access the device. */
+    @EnforcePermission("MANAGE_USB")
     @JavaPassthrough(annotation=
             "@android.annotation.RequiresPermission(android.Manifest.permission.MANAGE_USB)")
     boolean hasDevicePermissionWithIdentity(in UsbDevice device, String packageName,
@@ -90,6 +91,7 @@
     boolean hasAccessoryPermission(in UsbAccessory accessory);
 
     /* Returns true if the given pid/uid has permission to access the accessory. */
+    @EnforcePermission("MANAGE_USB")
     @JavaPassthrough(annotation=
             "@android.annotation.RequiresPermission(android.Manifest.permission.MANAGE_USB)")
     boolean hasAccessoryPermissionWithIdentity(in UsbAccessory accessory, int pid, int uid);
@@ -108,9 +110,11 @@
             in PendingIntent pi);
 
     /* Grants permission for the given UID to access the device */
+    @EnforcePermission("MANAGE_USB")
     void grantDevicePermission(in UsbDevice device, int uid);
 
     /* Grants permission for the given UID to access the accessory */
+    @EnforcePermission("MANAGE_USB")
     void grantAccessoryPermission(in UsbAccessory accessory, int uid);
 
     /* Returns true if the USB manager has default preferences or permissions for the package */
@@ -123,29 +127,36 @@
     boolean isFunctionEnabled(String function);
 
     /* Sets the current USB function. */
+    @EnforcePermission("MANAGE_USB")
     void setCurrentFunctions(long functions, int operationId);
 
     /* Compatibility version of setCurrentFunctions(long). */
     void setCurrentFunction(String function, boolean usbDataUnlocked, int operationId);
 
     /* Gets the current USB functions. */
+    @EnforcePermission("MANAGE_USB")
     long getCurrentFunctions();
 
     /* Gets the current USB Speed. */
+    @EnforcePermission("MANAGE_USB")
     int getCurrentUsbSpeed();
 
     /* Gets the Gadget Hal Version. */
+    @EnforcePermission("MANAGE_USB")
     int getGadgetHalVersion();
 
     /* Sets the screen unlocked USB function(s), which will be set automatically
      * when the screen is unlocked.
      */
+    @EnforcePermission("MANAGE_USB")
     void setScreenUnlockedFunctions(long functions);
 
     /* Gets the current screen unlocked functions. */
+    @EnforcePermission("MANAGE_USB")
     long getScreenUnlockedFunctions();
 
     /* Resets the USB gadget. */
+    @EnforcePermission("MANAGE_USB")
     void resetUsbGadget();
 
     /* Resets the USB port. */
@@ -158,15 +169,18 @@
     void enableUsbDataWhileDocked(in String portId, int operationId, in IUsbOperationInternal callback);
 
     /* Gets the USB Hal Version. */
+    @EnforcePermission("MANAGE_USB")
     int getUsbHalVersion();
 
     /* Get the functionfs control handle for the given function. Usb
      * descriptors will already be written, and the handle will be
      * ready to use.
      */
+    @EnforcePermission("ACCESS_MTP")
     ParcelFileDescriptor getControlFd(long function);
 
     /* Gets the list of USB ports. */
+    @EnforcePermission("MANAGE_USB")
     List<ParcelableUsbPort> getPorts();
 
     /* Gets the status of the specified USB port. */
@@ -184,6 +198,7 @@
     void enableContaminantDetection(in String portId, boolean enable);
 
     /* Sets USB device connection handler. */
+    @EnforcePermission("MANAGE_USB")
     void setUsbDeviceConnectionHandler(in ComponentName usbDeviceConnectionHandler);
 
     /* Registers callback for Usb events */
diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java
index 7383e63..eb471705 100755
--- a/core/java/android/os/Build.java
+++ b/core/java/android/os/Build.java
@@ -493,7 +493,7 @@
          * @hide
          */
         @TestApi
-        public static final int RESOURCES_SDK_INT = SDK_INT;
+        public static final int RESOURCES_SDK_INT = SDK_INT + ACTIVE_CODENAMES.length;
 
         /**
          * The current lowest supported value of app target SDK. Applications targeting
@@ -1223,6 +1223,11 @@
          * Upside Down Cake.
          */
         public static final int UPSIDE_DOWN_CAKE = 34;
+
+        /**
+         * Vanilla Ice Cream.
+         */
+        public static final int VANILLA_ICE_CREAM = CUR_DEVELOPMENT;
     }
 
     /** The type of build, like "user" or "eng". */
diff --git a/core/java/android/os/DdmSyncStageUpdater.java b/core/java/android/os/DdmSyncStageUpdater.java
new file mode 100644
index 0000000..90f7076
--- /dev/null
+++ b/core/java/android/os/DdmSyncStageUpdater.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2023 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.os;
+
+import android.os.DdmSyncState.Stage;
+import android.util.Slog;
+
+import org.apache.harmony.dalvik.ddmc.Chunk;
+import org.apache.harmony.dalvik.ddmc.ChunkHandler;
+import org.apache.harmony.dalvik.ddmc.DdmServer;
+
+import java.nio.ByteBuffer;
+
+/**
+ * @hide
+ */
+// Making it public so ActivityThread can access it.
+public class DdmSyncStageUpdater {
+
+    private static final String TAG = "DdmSyncStageUpdater";
+
+    private static final int CHUNK_STAGE = ChunkHandler.type("STAG");
+
+    /**
+     * @hide
+     */
+    public DdmSyncStageUpdater() {
+    }
+
+    /**
+     * @hide
+     */
+    // Making it public so ActivityThread can access it.
+    public synchronized void next(Stage stage) {
+        try {
+            DdmSyncState.next(stage);
+
+            // Request DDMServer to send a STAG chunk
+            ByteBuffer data = ByteBuffer.allocate(Integer.BYTES);
+            data.putInt(stage.toInt());
+            Chunk stagChunk = new Chunk(CHUNK_STAGE, data);
+            DdmServer.sendChunk(stagChunk);
+        } catch (Exception e) {
+            // Catch everything to make sure we don't impact ActivityThread
+            Slog.w(TAG, "Unable to go to next stage" + stage, e);
+        }
+    }
+
+}
diff --git a/core/java/android/os/DdmSyncState.java b/core/java/android/os/DdmSyncState.java
new file mode 100644
index 0000000..09c9ef2
--- /dev/null
+++ b/core/java/android/os/DdmSyncState.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2023 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.os;
+
+import java.util.Arrays;
+
+/**
+ * Keep track of an app boot state. The main purpose is to stream back DDM packet so a DDM client
+ * can synchronize with the app state.
+ *
+ * The state is static so it can be accessed from HELO handler.
+ *
+ * @hide
+ **/
+public final class DdmSyncState {
+
+    /**
+     * @hide
+     */
+    public enum Stage {
+        // From zygote to attach
+        Boot("BOOT"),
+
+        // From attach to handleBindApplication
+        Attach("ATCH"),
+
+        // When handleBindApplication is finally reached
+        Bind("BIND"),
+
+        // When the actual package name is known (not the early "<preinitalized>" value).
+        Named("NAMD"),
+
+        // Can be skipped if the app is not debugged.
+        Debugger("DEBG"),
+
+        // App is in RunLoop
+        Running("A_GO");
+
+        final String mLabel;
+
+        Stage(String label) {
+            if (label.length() != 4) {
+                throw new IllegalStateException(
+                    "Bad stage id '" + label + "'. Must be four letters");
+            }
+            this.mLabel = label;
+        }
+
+        /**
+         * To be included in a DDM packet payload, the stage is encoded in a big-endian int
+         * @hide
+         */
+        public int toInt() {
+            int result = 0;
+            for (int i = 0; i < 4; ++i) {
+                result = ((result << 8) | (mLabel.charAt(i) & 0xff));
+            }
+            return result;
+        }
+    }
+
+    private static int sCurrentStageIndex = 0;
+
+    /**
+     * @hide
+     */
+    public static synchronized Stage getStage() {
+        return Stage.values()[sCurrentStageIndex];
+    }
+
+    /**
+     * @hide
+     */
+    public static void reset() {
+        sCurrentStageIndex = 0;
+    }
+
+    /**
+     * Search for the next level down the list of Stage. Only succeed if the next stage
+     * if a later stage (no cycling allowed).
+     *
+     * @hide
+     */
+    public static synchronized void next(Stage nextStage) {
+        Stage[] stages = Stage.values();
+        // Search for the requested next stage
+        int rover = sCurrentStageIndex;
+        while (rover < stages.length && stages[rover] != nextStage) {
+            rover++;
+        }
+
+        if (rover == stages.length || stages[rover] != nextStage) {
+            throw new IllegalStateException(
+                "Cannot go to " + nextStage + " from:" + getInternalState());
+        }
+
+        sCurrentStageIndex = rover;
+    }
+
+    /**
+     * Use to build error messages
+     * @hide
+     */
+    private static String getInternalState() {
+        StringBuilder sb = new StringBuilder("\n");
+        sb.append("level = ").append(sCurrentStageIndex);
+        sb.append("\n");
+        sb.append("stages = ");
+        sb.append(Arrays.toString(Arrays.stream(Stage.values()).map(Enum::name).toArray()));
+        sb.append("\n");
+        return sb.toString();
+    }
+}
diff --git a/core/java/android/os/IRecoverySystem.aidl b/core/java/android/os/IRecoverySystem.aidl
index 88bdb7f..b3628ff 100644
--- a/core/java/android/os/IRecoverySystem.aidl
+++ b/core/java/android/os/IRecoverySystem.aidl
@@ -23,6 +23,7 @@
 /** @hide */
 
 interface IRecoverySystem {
+    @EnforcePermission("RECOVERY")
     boolean allocateSpaceForUpdate(in String packageFilePath);
     boolean uncrypt(in String packageFile, IRecoverySystemProgressListener listener);
     boolean setupBcb(in String command);
@@ -31,6 +32,7 @@
     boolean requestLskf(in String packageName, in IntentSender sender);
     boolean clearLskf(in String packageName);
     boolean isLskfCaptured(in String packageName);
+    @EnforcePermission("RECOVERY")
     int rebootWithLskfAssumeSlotSwitch(in String packageName, in String reason);
     int rebootWithLskf(in String packageName, in String reason, in boolean slotSwitch);
 }
diff --git a/core/java/android/os/ISystemUpdateManager.aidl b/core/java/android/os/ISystemUpdateManager.aidl
index f7f5079..cda2fa1 100644
--- a/core/java/android/os/ISystemUpdateManager.aidl
+++ b/core/java/android/os/ISystemUpdateManager.aidl
@@ -23,5 +23,6 @@
 /** @hide */
 interface ISystemUpdateManager {
     Bundle retrieveSystemUpdateInfo();
+    @EnforcePermission("RECOVERY")
     void updateSystemUpdateInfo(in PersistableBundle data);
 }
diff --git a/core/java/android/os/IVibratorManagerService.aidl b/core/java/android/os/IVibratorManagerService.aidl
index fb9752f..6275352 100644
--- a/core/java/android/os/IVibratorManagerService.aidl
+++ b/core/java/android/os/IVibratorManagerService.aidl
@@ -25,8 +25,11 @@
 interface IVibratorManagerService {
     int[] getVibratorIds();
     VibratorInfo getVibratorInfo(int vibratorId);
+    @EnforcePermission("ACCESS_VIBRATOR_STATE")
     boolean isVibrating(int vibratorId);
+    @EnforcePermission("ACCESS_VIBRATOR_STATE")
     boolean registerVibratorStateListener(int vibratorId, in IVibratorStateListener listener);
+    @EnforcePermission("ACCESS_VIBRATOR_STATE")
     boolean unregisterVibratorStateListener(int vibratorId, in IVibratorStateListener listener);
     boolean setAlwaysOnEffect(int uid, String opPkg, int alwaysOnId,
             in CombinedVibration vibration, in VibrationAttributes attributes);
diff --git a/core/java/android/os/OWNERS b/core/java/android/os/OWNERS
index e9a3254..69889c5 100644
--- a/core/java/android/os/OWNERS
+++ b/core/java/android/os/OWNERS
@@ -79,3 +79,7 @@
 
 # ART
 per-file ArtModuleServiceManager.java = file:platform/art:/OWNERS
+
+# DDM Protocol
+per-file DdmSyncState.java = sanglardf@google.com, rpaquay@google.com
+per-file DdmSyncStageUpdater.java = sanglardf@google.com, rpaquay@google.com
diff --git a/core/java/android/os/Parcel.java b/core/java/android/os/Parcel.java
index e784c26..d52d758 100644
--- a/core/java/android/os/Parcel.java
+++ b/core/java/android/os/Parcel.java
@@ -362,6 +362,22 @@
     // see libbinder's binder/Status.h
     private static final int EX_TRANSACTION_FAILED = -129;
 
+    // Allow limit of 1 MB for allocating arrays
+    private static final int ARRAY_ALLOCATION_LIMIT = 1000000;
+
+    // Following type size are used to determine allocation size while creating arrays
+    private static final int SIZE_BYTE = 1;
+    private static final int SIZE_CHAR = 2;
+    private static final int SIZE_SHORT = 2;
+    private static final int SIZE_BOOLEAN = 4;
+    private static final int SIZE_INT = 4;
+    private static final int SIZE_FLOAT = 4;
+    private static final int SIZE_DOUBLE = 8;
+    private static final int SIZE_LONG = 8;
+
+    // Assume the least possible size for complex objects
+    private static final int SIZE_COMPLEX_TYPE = 1;
+
     @CriticalNative
     private static native void nativeMarkSensitive(long nativePtr);
     @FastNative
@@ -1502,9 +1518,63 @@
         }
     }
 
+    private static <T> int getItemTypeSize(@NonNull Class<T> arrayClass) {
+        final Class<?> componentType = arrayClass.getComponentType();
+        // typeSize has been referred from respective create*Array functions
+        if (componentType == boolean.class) {
+            return SIZE_BOOLEAN;
+        } else if (componentType == byte.class) {
+            return SIZE_BYTE;
+        } else if (componentType == char.class) {
+            return SIZE_CHAR;
+        } else if (componentType == int.class) {
+            return SIZE_INT;
+        } else if (componentType == long.class) {
+            return SIZE_LONG;
+        } else if (componentType == float.class) {
+            return SIZE_FLOAT;
+        } else if (componentType == double.class) {
+            return SIZE_DOUBLE;
+        }
+
+        return SIZE_COMPLEX_TYPE;
+    }
+
+    private void ensureWithinMemoryLimit(int typeSize, @NonNull int... dimensions) {
+        // For Multidimensional arrays, Calculate total object
+        // which will be allocated.
+        int totalObjects = 1;
+        try {
+            for (int dimension : dimensions) {
+                totalObjects = Math.multiplyExact(totalObjects, dimension);
+            }
+        } catch (ArithmeticException e) {
+            Log.e(TAG, "ArithmeticException occurred while multiplying dimensions " + e);
+        }
+        ensureWithinMemoryLimit(typeSize, totalObjects);
+    }
+
+    private void ensureWithinMemoryLimit(int typeSize, @NonNull int length) {
+        int estimatedAllocationSize = 0;
+        try {
+            estimatedAllocationSize = Math.multiplyExact(typeSize, length);
+        } catch (ArithmeticException e) {
+            Log.e(TAG, "ArithmeticException occurred while multiplying values " + typeSize
+                    + " and "  + length + " Exception: " + e);
+        }
+
+        boolean isInBinderTransaction = Binder.isDirectlyHandlingTransaction();
+        if (isInBinderTransaction && (estimatedAllocationSize > ARRAY_ALLOCATION_LIMIT)) {
+            Log.e(TAG, "Trying to Allocate " + estimatedAllocationSize
+                    + " memory, In Binder Transaction : " + isInBinderTransaction);
+        }
+    }
+
     @Nullable
     public final boolean[] createBooleanArray() {
         int N = readInt();
+        // Assuming size of 4 byte for boolean.
+        ensureWithinMemoryLimit(SIZE_BOOLEAN, N);
         // >>2 as a fast divide-by-4 works in the create*Array() functions
         // because dataAvail() will never return a negative number.  4 is
         // the size of a stored boolean in the stream.
@@ -1547,6 +1617,8 @@
     @Nullable
     public short[] createShortArray() {
         int n = readInt();
+        // Assuming size of 2 byte for short.
+        ensureWithinMemoryLimit(SIZE_SHORT, n);
         if (n >= 0 && n <= (dataAvail() >> 2)) {
             short[] val = new short[n];
             for (int i = 0; i < n; i++) {
@@ -1585,6 +1657,8 @@
     @Nullable
     public final char[] createCharArray() {
         int N = readInt();
+        // Assuming size of 2 byte for char.
+        ensureWithinMemoryLimit(SIZE_CHAR, N);
         if (N >= 0 && N <= (dataAvail() >> 2)) {
             char[] val = new char[N];
             for (int i=0; i<N; i++) {
@@ -1622,6 +1696,8 @@
     @Nullable
     public final int[] createIntArray() {
         int N = readInt();
+        // Assuming size of 4 byte for int.
+        ensureWithinMemoryLimit(SIZE_INT, N);
         if (N >= 0 && N <= (dataAvail() >> 2)) {
             int[] val = new int[N];
             for (int i=0; i<N; i++) {
@@ -1659,6 +1735,8 @@
     @Nullable
     public final long[] createLongArray() {
         int N = readInt();
+        // Assuming size of 8 byte for long.
+        ensureWithinMemoryLimit(SIZE_LONG, N);
         // >>3 because stored longs are 64 bits
         if (N >= 0 && N <= (dataAvail() >> 3)) {
             long[] val = new long[N];
@@ -1697,6 +1775,8 @@
     @Nullable
     public final float[] createFloatArray() {
         int N = readInt();
+        // Assuming size of 4 byte for float.
+        ensureWithinMemoryLimit(SIZE_FLOAT, N);
         // >>2 because stored floats are 4 bytes
         if (N >= 0 && N <= (dataAvail() >> 2)) {
             float[] val = new float[N];
@@ -1735,6 +1815,8 @@
     @Nullable
     public final double[] createDoubleArray() {
         int N = readInt();
+        // Assuming size of 8 byte for double.
+        ensureWithinMemoryLimit(SIZE_DOUBLE, N);
         // >>3 because stored doubles are 8 bytes
         if (N >= 0 && N <= (dataAvail() >> 3)) {
             double[] val = new double[N];
@@ -1788,6 +1870,7 @@
     @Nullable
     public final String[] createString8Array() {
         int N = readInt();
+        ensureWithinMemoryLimit(SIZE_COMPLEX_TYPE, N);
         if (N >= 0) {
             String[] val = new String[N];
             for (int i=0; i<N; i++) {
@@ -1828,6 +1911,7 @@
     @Nullable
     public final String[] createString16Array() {
         int N = readInt();
+        ensureWithinMemoryLimit(SIZE_COMPLEX_TYPE, N);
         if (N >= 0) {
             String[] val = new String[N];
             for (int i=0; i<N; i++) {
@@ -1920,6 +2004,7 @@
     @Nullable
     public final IBinder[] createBinderArray() {
         int N = readInt();
+        ensureWithinMemoryLimit(SIZE_COMPLEX_TYPE, N);
         if (N >= 0) {
             IBinder[] val = new IBinder[N];
             for (int i=0; i<N; i++) {
@@ -1954,6 +2039,7 @@
     public final <T extends IInterface> T[] createInterfaceArray(
             @NonNull IntFunction<T[]> newArray, @NonNull Function<IBinder, T> asInterface) {
         int N = readInt();
+        ensureWithinMemoryLimit(SIZE_COMPLEX_TYPE, N);
         if (N >= 0) {
             T[] val = newArray.apply(N);
             for (int i=0; i<N; i++) {
@@ -3200,6 +3286,7 @@
         if (N < 0) {
             return null;
         }
+        ensureWithinMemoryLimit(SIZE_COMPLEX_TYPE, N);
         FileDescriptor[] f = new FileDescriptor[N];
         for (int i = 0; i < N; i++) {
             f[i] = readRawFileDescriptor();
@@ -3666,6 +3753,7 @@
         if (N < 0) {
             return null;
         }
+        ensureWithinMemoryLimit(SIZE_COMPLEX_TYPE, N);
         ArrayList<T> l = new ArrayList<T>(N);
         while (N > 0) {
             l.add(readTypedObject(c));
@@ -3717,6 +3805,7 @@
         if (count < 0) {
             return null;
         }
+        ensureWithinMemoryLimit(SIZE_COMPLEX_TYPE, count);
         final SparseArray<T> array = new SparseArray<>(count);
         for (int i = 0; i < count; i++) {
             final int index = readInt();
@@ -3745,6 +3834,7 @@
         if (count < 0) {
             return null;
         }
+        ensureWithinMemoryLimit(SIZE_COMPLEX_TYPE, count);
         final ArrayMap<String, T> map = new ArrayMap<>(count);
         for (int i = 0; i < count; i++) {
             final String key = readString();
@@ -3771,6 +3861,7 @@
         if (N < 0) {
             return null;
         }
+        ensureWithinMemoryLimit(SIZE_COMPLEX_TYPE, N);
         ArrayList<String> l = new ArrayList<String>(N);
         while (N > 0) {
             l.add(readString());
@@ -3796,6 +3887,7 @@
         if (N < 0) {
             return null;
         }
+        ensureWithinMemoryLimit(SIZE_COMPLEX_TYPE, N);
         ArrayList<IBinder> l = new ArrayList<IBinder>(N);
         while (N > 0) {
             l.add(readStrongBinder());
@@ -3822,6 +3914,7 @@
         if (N < 0) {
             return null;
         }
+        ensureWithinMemoryLimit(SIZE_COMPLEX_TYPE, N);
         ArrayList<T> l = new ArrayList<T>(N);
         while (N > 0) {
             l.add(asInterface.apply(readStrongBinder()));
@@ -3981,6 +4074,7 @@
         if (N < 0) {
             return null;
         }
+        ensureWithinMemoryLimit(SIZE_COMPLEX_TYPE, N);
         T[] l = c.newArray(N);
         for (int i=0; i<N; i++) {
             l[i] = readTypedObject(c);
@@ -4209,6 +4303,10 @@
             while (innermost.isArray()) {
                 innermost = innermost.getComponentType();
             }
+
+            int typeSize = getItemTypeSize(innermost);
+            ensureWithinMemoryLimit(typeSize, dimensions);
+
             val = (T) Array.newInstance(innermost, dimensions);
             for (int i = 0; i < length; i++) {
                 readFixedArray(Array.get(val, i));
@@ -4265,6 +4363,10 @@
             while (innermost.isArray()) {
                 innermost = innermost.getComponentType();
             }
+
+            int typeSize = getItemTypeSize(innermost);
+            ensureWithinMemoryLimit(typeSize, dimensions);
+
             val = (T) Array.newInstance(innermost, dimensions);
             for (int i = 0; i < length; i++) {
                 readFixedArray(Array.get(val, i), asInterface);
@@ -4320,6 +4422,10 @@
             while (innermost.isArray()) {
                 innermost = innermost.getComponentType();
             }
+
+            int typeSize = getItemTypeSize(innermost);
+            ensureWithinMemoryLimit(typeSize, dimensions);
+
             val = (T) Array.newInstance(innermost, dimensions);
             for (int i = 0; i < length; i++) {
                 readFixedArray(Array.get(val, i), c);
@@ -5076,6 +5182,7 @@
         if (n < 0) {
             return null;
         }
+        ensureWithinMemoryLimit(SIZE_COMPLEX_TYPE, n);
         T[] p = (T[]) ((clazz == null) ? new Parcelable[n] : Array.newInstance(clazz, n));
         for (int i = 0; i < n; i++) {
             p[i] = readParcelableInternal(loader, clazz);
diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java
index bf3d52d..db9822d 100644
--- a/core/java/android/os/Process.java
+++ b/core/java/android/os/Process.java
@@ -1118,19 +1118,6 @@
     public static final native void setProcessFrozen(int pid, int uid, boolean frozen);
 
     /**
-     * Enable or disable the freezer. When enable == false all frozen processes are unfrozen,
-     * but aren't removed from the freezer. While in this state, processes can be added or removed
-     * by using setProcessFrozen, but they won't actually be frozen until the freezer is enabled
-     * again. If enable == true the freezer is enabled again, and all processes
-     * in the freezer (including the ones added while the freezer was disabled) are frozen.
-     *
-     * @param enable Specify whether to enable (true) or disable (false) the freezer.
-     *
-     * @hide
-     */
-    public static final native void enableFreezer(boolean enable);
-
-    /**
      * Return the scheduling group of requested process.
      *
      * @hide
diff --git a/core/java/android/os/RemoteCallbackList.java b/core/java/android/os/RemoteCallbackList.java
index d89c3d5..2c58021 100644
--- a/core/java/android/os/RemoteCallbackList.java
+++ b/core/java/android/os/RemoteCallbackList.java
@@ -273,7 +273,7 @@
      * handle such an exception by simply ignoring it.
      *
      * @param index Which of the registered callbacks you would like to
-     * retrieve.  Ranges from 0 to 1-{@link #beginBroadcast}.
+     * retrieve.  Ranges from 0 to {@link #beginBroadcast}-1, inclusive.
      *
      * @return Returns the callback interface that you can call.  This will
      * always be non-null.
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index 24e28e9..e81475b 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -1818,6 +1818,13 @@
     public static final int REMOVE_RESULT_ALREADY_BEING_REMOVED = 2;
 
     /**
+     * A response code indicating that the specified user is removable.
+     *
+     * @hide
+     */
+    public static final int REMOVE_RESULT_USER_IS_REMOVABLE = 3;
+
+    /**
      * A response code from {@link #removeUserWhenPossible(UserHandle, boolean)} indicating that
      * an unknown error occurred that prevented the user from being removed or set as ephemeral.
      *
@@ -1872,6 +1879,7 @@
             REMOVE_RESULT_REMOVED,
             REMOVE_RESULT_DEFERRED,
             REMOVE_RESULT_ALREADY_BEING_REMOVED,
+            REMOVE_RESULT_USER_IS_REMOVABLE,
             REMOVE_RESULT_ERROR_USER_RESTRICTION,
             REMOVE_RESULT_ERROR_USER_NOT_FOUND,
             REMOVE_RESULT_ERROR_SYSTEM_USER,
@@ -2574,7 +2582,8 @@
             enabledSinceTargetSdkVersion = Build.VERSION_CODES.TIRAMISU,
             requiresAnyOfPermissionsIfNotCaller = {
                     android.Manifest.permission.MANAGE_USERS,
-                    android.Manifest.permission.CREATE_USERS}
+                    android.Manifest.permission.CREATE_USERS,
+                    android.Manifest.permission.QUERY_USERS}
     )
     public boolean isLinkedUser() {
         return isRestrictedProfile();
@@ -2592,7 +2601,8 @@
             enabledSinceTargetSdkVersion = Build.VERSION_CODES.TIRAMISU,
             requiresAnyOfPermissionsIfNotCaller = {
                     android.Manifest.permission.MANAGE_USERS,
-                    android.Manifest.permission.CREATE_USERS}
+                    android.Manifest.permission.CREATE_USERS,
+                    android.Manifest.permission.QUERY_USERS}
     )
     public boolean isRestrictedProfile() {
         try {
@@ -2613,7 +2623,8 @@
     @SystemApi
     @RequiresPermission(anyOf = {
             Manifest.permission.MANAGE_USERS,
-            Manifest.permission.CREATE_USERS},
+            Manifest.permission.CREATE_USERS,
+            Manifest.permission.QUERY_USERS},
             conditional = true)
     public boolean isRestrictedProfile(@NonNull UserHandle user) {
         try {
diff --git a/core/java/android/os/VibrationEffect.java b/core/java/android/os/VibrationEffect.java
index 4366c28..8edb821 100644
--- a/core/java/android/os/VibrationEffect.java
+++ b/core/java/android/os/VibrationEffect.java
@@ -578,6 +578,30 @@
     }
 
     /**
+     * Ensures that the effect is repeating indefinitely or not. This is a lossy operation and
+     * should only be applied once to an original effect - it shouldn't be applied to the
+     * result of this method.
+     *
+     * <p>Non-repeating effects will be made repeating by looping the entire effect with the
+     * specified delay between each loop. The delay is added irrespective of whether the effect
+     * already has a delay at the beginning or end.
+     *
+     * <p>Repeating effects will be left with their native repeating portion if it should be
+     * repeating, and otherwise the loop index is removed, so that the entire effect plays once.
+     *
+     * @param wantRepeating Whether the effect is required to be repeating or not.
+     * @param loopDelayMs The milliseconds to pause between loops, if repeating is to be added to
+     *                    the effect. Ignored if {@code repeating==false} or the effect is already
+     *                    repeating itself. No delay is added if <= 0.
+     * @return this if the effect already satifies the repeating requirement, or a copy of this
+     *         adjusted to repeat or not repeat as appropriate.
+     * @hide
+     */
+    @NonNull
+    public abstract <T extends VibrationEffect> T applyRepeatingIndefinitely(
+            boolean wantRepeating, int loopDelayMs);
+
+    /**
      * Scale given vibration intensity by the given factor.
      *
      * @param intensity   relative intensity of the effect, must be between 0 and 1
@@ -859,6 +883,30 @@
             return scaled;
         }
 
+        /** @hide */
+        @NonNull
+        @Override
+        public Composed applyRepeatingIndefinitely(boolean wantRepeating, int loopDelayMs) {
+            boolean isRepeating = mRepeatIndex >= 0;
+            if (isRepeating == wantRepeating) {
+                return this;
+            } else if (!wantRepeating) {
+                return new Composed(mSegments, -1);
+            } else if (loopDelayMs <= 0) {
+                // Loop with no delay: repeat at index zero.
+                return new Composed(mSegments, 0);
+            } else {
+                // Append a delay and loop. It doesn't matter that there's a delay on the
+                // end because the looping is always indefinite until cancelled.
+                ArrayList<VibrationEffectSegment> loopingSegments =
+                        new ArrayList<>(mSegments.size() + 1);
+                loopingSegments.addAll(mSegments);
+                loopingSegments.add(
+                        new StepSegment(/* amplitude= */ 0, /* frequencyHz= */ 0, loopDelayMs));
+                return new Composed(loopingSegments, 0);
+            }
+        }
+
         @Override
         public boolean equals(@Nullable Object o) {
             if (!(o instanceof Composed)) {
diff --git a/core/java/android/permission/IPermissionManager.aidl b/core/java/android/permission/IPermissionManager.aidl
index 16ae3bc..d19fd8f 100644
--- a/core/java/android/permission/IPermissionManager.aidl
+++ b/core/java/android/permission/IPermissionManager.aidl
@@ -76,6 +76,7 @@
 
     List<SplitPermissionInfoParcelable> getSplitPermissions();
 
+    @EnforcePermission("MANAGE_ONE_TIME_PERMISSION_SESSIONS")
     void startOneTimePermissionSession(String packageName, int userId, long timeout,
             long revokeAfterKilledDelay);
 
diff --git a/core/java/android/permission/PermissionControllerManager.java b/core/java/android/permission/PermissionControllerManager.java
index b494c7f..319a0ea 100644
--- a/core/java/android/permission/PermissionControllerManager.java
+++ b/core/java/android/permission/PermissionControllerManager.java
@@ -701,6 +701,8 @@
         }, executor);
     }
 
+    // TODO(b/272129940): Remove this API and device profile role description when we drop T
+    //  support.
     /**
      * Gets the description of the privileges associated with the given device profiles
      *
@@ -708,8 +710,11 @@
      * @param executor Executor on which to invoke the callback
      * @param callback Callback to receive the result
      *
+     * @deprecated Device profile privilege descriptions have been bundled in CDM APK since T.
+     *
      * @hide
      */
+    @Deprecated
     @RequiresPermission(Manifest.permission.MANAGE_COMPANION_DEVICES)
     public void getPrivilegesDescriptionStringForProfile(
             @NonNull String profileName,
diff --git a/core/java/android/permission/PermissionControllerService.java b/core/java/android/permission/PermissionControllerService.java
index 4efffc5a..11005a6 100644
--- a/core/java/android/permission/PermissionControllerService.java
+++ b/core/java/android/permission/PermissionControllerService.java
@@ -348,6 +348,8 @@
         throw new AbstractMethodError("Must be overridden in implementing class");
     }
 
+    // TODO(b/272129940): Remove this API and device profile role description when we drop T
+    //  support.
     /**
      * Get a user-readable sentence, describing the set of privileges that are to be granted to a
      * companion app managing a device of the given profile.
@@ -355,8 +357,11 @@
      * @param deviceProfileName the
      *      {@link android.companion.AssociationRequest.DeviceProfile device profile} name
      *
+     * @deprecated Device profile privilege descriptions have been bundled in CDM APK since T.
+     *
      * @hide
      */
+    @Deprecated
     @SystemApi
     @RequiresPermission(Manifest.permission.MANAGE_COMPANION_DEVICES)
     @NonNull
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 3487b01..91ab190 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -2443,6 +2443,24 @@
             "android.settings.REQUEST_SET_AUTOFILL_SERVICE";
 
     /**
+     * Activity Action: Show screen that let user enable a Credential Manager provider.
+     * <p>
+     * Input: Intent's data URI set with an application name, using the
+     * "package" schema (like "package:com.my.app").
+     *
+     * <p>
+     * Output: {@link android.app.Activity#RESULT_OK} if user selected a provider belonging
+     * to the caller package.
+     * <p>
+     * <b>NOTE: </b> Applications should call
+     * {@link android.credentials.CredentialManager#isEnabledCredentialProviderService()}
+     * and only use this action to start an activity if they return {@code false}.
+     */
+    @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+    public static final String ACTION_CREDENTIAL_PROVIDER =
+            "android.settings.CREDENTIAL_PROVIDER";
+
+    /**
      * Activity Action: Show screen for controlling the Quick Access Wallet.
      * <p>
      * In some cases, a matching Activity may not exist, so ensure you
@@ -4414,6 +4432,16 @@
                 = "wear_accessibility_gesture_enabled";
 
         /**
+         * If the triple press gesture for toggling accessibility is enabled during OOBE.
+         * Set to 1 for true and 0 for false.
+         *
+         * This setting is used only internally.
+         * @hide
+         */
+        public static final String WEAR_ACCESSIBILITY_GESTURE_ENABLED_DURING_OOBE =
+                "wear_accessibility_gesture_enabled_during_oobe";
+
+        /**
          * @deprecated Use {@link android.provider.Settings.Global#AIRPLANE_MODE_ON} instead
          */
         @Deprecated
@@ -5819,6 +5847,7 @@
             PRIVATE_SETTINGS.add(END_BUTTON_BEHAVIOR);
             PRIVATE_SETTINGS.add(ADVANCED_SETTINGS);
             PRIVATE_SETTINGS.add(WEAR_ACCESSIBILITY_GESTURE_ENABLED);
+            PRIVATE_SETTINGS.add(WEAR_ACCESSIBILITY_GESTURE_ENABLED_DURING_OOBE);
             PRIVATE_SETTINGS.add(SCREEN_AUTO_BRIGHTNESS_ADJ);
             PRIVATE_SETTINGS.add(VIBRATE_INPUT_DEVICES);
             PRIVATE_SETTINGS.add(VOLUME_MASTER);
@@ -18444,7 +18473,7 @@
              * @hide
              */
             @Deprecated
-            public static final String COMBINED_LOCATION_ENABLED = "combined_location_enable";
+            public static final String COMBINED_LOCATION_ENABLE = "combined_location_enable";
 
             /**
              * The wrist orientation mode of the device
diff --git a/core/java/android/service/credentials/CredentialProviderInfoFactory.java b/core/java/android/service/credentials/CredentialProviderInfoFactory.java
index 1a1df6f..2ad688c 100644
--- a/core/java/android/service/credentials/CredentialProviderInfoFactory.java
+++ b/core/java/android/service/credentials/CredentialProviderInfoFactory.java
@@ -45,8 +45,8 @@
 import android.util.Slog;
 import android.util.Xml;
 
-import com.android.internal.R;
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.R;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
@@ -132,8 +132,8 @@
     }
 
     /**
-     * Constructs an information instance of the credential provider for testing purposes. Does not
-     * run any verifications and passes parameters as is.
+     * Constructs an information instance of the credential provider for testing purposes. Does
+     * not run any verifications and passes parameters as is.
      */
     @VisibleForTesting
     public static CredentialProviderInfo createForTests(
@@ -148,6 +148,7 @@
                 .setSystemProvider(isSystemProvider)
                 .addCapabilities(capabilities)
                 .build();
+
     }
 
     private static void verifyProviderPermission(ServiceInfo serviceInfo) throws SecurityException {
@@ -219,7 +220,7 @@
 
         // 4. Extract the XML metadata.
         try {
-            builder = extractXmlMetadata(context, builder, serviceInfo, pm, resources);
+            builder = extractXmlMetadata(context, serviceInfo, pm, resources);
         } catch (Exception e) {
             Slog.e(TAG, "Failed to get XML metadata", e);
         }
@@ -229,10 +230,11 @@
 
     private static CredentialProviderInfo.Builder extractXmlMetadata(
             @NonNull Context context,
-            @NonNull CredentialProviderInfo.Builder builder,
             @NonNull ServiceInfo serviceInfo,
             @NonNull PackageManager pm,
             @NonNull Resources resources) {
+        final CredentialProviderInfo.Builder builder =
+                new CredentialProviderInfo.Builder(serviceInfo);
         final XmlResourceParser parser =
                 serviceInfo.loadXmlMetaData(pm, CredentialProviderService.SERVICE_META_DATA);
         if (parser == null) {
@@ -275,9 +277,9 @@
         return builder;
     }
 
-    private static Set<String> parseXmlProviderOuterCapabilities(
+    private static List<String> parseXmlProviderOuterCapabilities(
             XmlPullParser parser, Resources resources) throws IOException, XmlPullParserException {
-        final Set<String> capabilities = new HashSet<>();
+        final List<String> capabilities = new ArrayList<>();
         final int outerDepth = parser.getDepth();
         int type;
         while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
diff --git a/core/java/android/service/credentials/CredentialProviderService.java b/core/java/android/service/credentials/CredentialProviderService.java
index 53a5fd5..a7b06fb 100644
--- a/core/java/android/service/credentials/CredentialProviderService.java
+++ b/core/java/android/service/credentials/CredentialProviderService.java
@@ -178,8 +178,8 @@
       *          <capability>@string/passwords</capability>
       *          <capability>@string/passkeys</capability>
       *      </capabilities>
-      *      <string name="passwords">android.credentials.TYPE_PASSWORD_CREDENTIAL</string>
-      *      <string name="passkeys">android.credentials.TYPE_PUBLIC_KEY_CREDENTIAL</string>
+      *      <capability name="android.credentials.TYPE_PASSWORD_CREDENTIAL" />
+      *      <capability name="android.credentials.TYPE_PUBLIC_KEY_CREDENTIAL" />
       *  </credential-provider>
       * </code>
       */
diff --git a/core/java/android/service/voice/AlwaysOnHotwordDetector.java b/core/java/android/service/voice/AlwaysOnHotwordDetector.java
index 24c96ea..cc98963 100644
--- a/core/java/android/service/voice/AlwaysOnHotwordDetector.java
+++ b/core/java/android/service/voice/AlwaysOnHotwordDetector.java
@@ -556,8 +556,7 @@
         }
 
         /**
-         * Timestamp of when the trigger event from SoundTriggerHal was received by the system
-         * server.
+         * Timestamp of when the trigger event from SoundTriggerHal was received by the framework.
          *
          * Clock monotonic including suspend time or its equivalent on the system,
          * in the same units and timebase as {@link SystemClock#elapsedRealtime()}.
diff --git a/core/java/android/text/method/LinkMovementMethod.java b/core/java/android/text/method/LinkMovementMethod.java
index dae978e..9f4a0ae 100644
--- a/core/java/android/text/method/LinkMovementMethod.java
+++ b/core/java/android/text/method/LinkMovementMethod.java
@@ -221,12 +221,20 @@
             y += widget.getScrollY();
 
             Layout layout = widget.getLayout();
-            int line = layout.getLineForVertical(y);
-            int off = layout.getOffsetForHorizontal(line, x);
+            ClickableSpan[] links;
+            if (y < 0 || y > layout.getHeight()) {
+                links = null;
+            } else {
+                int line = layout.getLineForVertical(y);
+                if (x < layout.getLineLeft(line) || x > layout.getLineRight(line)) {
+                    links = null;
+                } else {
+                    int off = layout.getOffsetForHorizontal(line, x);
+                    links = buffer.getSpans(off, off, ClickableSpan.class);
+                }
+            }
 
-            ClickableSpan[] links = buffer.getSpans(off, off, ClickableSpan.class);
-
-            if (links.length != 0) {
+            if (links != null && links.length != 0) {
                 ClickableSpan link = links[0];
                 if (action == MotionEvent.ACTION_UP) {
                     if (link instanceof TextLinkSpan) {
diff --git a/core/java/android/transition/ChangeBounds.java b/core/java/android/transition/ChangeBounds.java
index 59a05ac..3c185b1 100644
--- a/core/java/android/transition/ChangeBounds.java
+++ b/core/java/android/transition/ChangeBounds.java
@@ -22,6 +22,8 @@
 import android.animation.ObjectAnimator;
 import android.animation.PropertyValuesHolder;
 import android.animation.RectEvaluator;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.res.TypedArray;
@@ -274,9 +276,11 @@
         return parentMatches;
     }
 
+    @Nullable
     @Override
-    public Animator createAnimator(final ViewGroup sceneRoot, TransitionValues startValues,
-            TransitionValues endValues) {
+    public Animator createAnimator(@NonNull final ViewGroup sceneRoot,
+            @Nullable TransitionValues startValues,
+            @Nullable TransitionValues endValues) {
         if (startValues == null || endValues == null) {
             return null;
         }
diff --git a/core/java/android/transition/ChangeClipBounds.java b/core/java/android/transition/ChangeClipBounds.java
index a6398d3..bc2dfdc 100644
--- a/core/java/android/transition/ChangeClipBounds.java
+++ b/core/java/android/transition/ChangeClipBounds.java
@@ -19,6 +19,8 @@
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ObjectAnimator;
 import android.animation.RectEvaluator;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.content.Context;
 import android.graphics.Rect;
 import android.util.AttributeSet;
@@ -75,9 +77,11 @@
         captureValues(transitionValues);
     }
 
+    @Nullable
     @Override
-    public Animator createAnimator(final ViewGroup sceneRoot, TransitionValues startValues,
-            TransitionValues endValues) {
+    public Animator createAnimator(@NonNull final ViewGroup sceneRoot,
+            @Nullable TransitionValues startValues,
+            @Nullable TransitionValues endValues) {
         if (startValues == null || endValues == null
                 || !startValues.values.containsKey(PROPNAME_CLIP)
                 || !endValues.values.containsKey(PROPNAME_CLIP)) {
diff --git a/core/java/android/transition/ChangeImageTransform.java b/core/java/android/transition/ChangeImageTransform.java
index 9fa9961..f12515f 100644
--- a/core/java/android/transition/ChangeImageTransform.java
+++ b/core/java/android/transition/ChangeImageTransform.java
@@ -18,6 +18,8 @@
 import android.animation.Animator;
 import android.animation.ObjectAnimator;
 import android.animation.TypeEvaluator;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.content.Context;
 import android.graphics.Matrix;
 import android.graphics.Rect;
@@ -135,9 +137,11 @@
      * @return An Animator to move an ImageView or null if the View is not an ImageView,
      * the Drawable changed, the View is not VISIBLE, or there was no change.
      */
+    @Nullable
     @Override
-    public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues,
-            TransitionValues endValues) {
+    public Animator createAnimator(@NonNull ViewGroup sceneRoot,
+            @Nullable TransitionValues startValues,
+            @Nullable TransitionValues endValues) {
         if (startValues == null || endValues == null) {
             return null;
         }
diff --git a/core/java/android/transition/ChangeScroll.java b/core/java/android/transition/ChangeScroll.java
index 8a3fd1c..054bcd7 100644
--- a/core/java/android/transition/ChangeScroll.java
+++ b/core/java/android/transition/ChangeScroll.java
@@ -18,6 +18,8 @@
 
 import android.animation.Animator;
 import android.animation.ObjectAnimator;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.content.Context;
 import android.util.AttributeSet;
 import android.view.View;
@@ -63,9 +65,11 @@
         transitionValues.values.put(PROPNAME_SCROLL_Y, transitionValues.view.getScrollY());
     }
 
+    @Nullable
     @Override
-    public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues,
-            TransitionValues endValues) {
+    public Animator createAnimator(@NonNull ViewGroup sceneRoot,
+            @Nullable TransitionValues startValues,
+            @Nullable TransitionValues endValues) {
         if (startValues == null || endValues == null) {
             return null;
         }
diff --git a/core/java/android/transition/ChangeText.java b/core/java/android/transition/ChangeText.java
index d609763..b5cd46d 100644
--- a/core/java/android/transition/ChangeText.java
+++ b/core/java/android/transition/ChangeText.java
@@ -20,6 +20,8 @@
 import android.animation.AnimatorListenerAdapter;
 import android.animation.AnimatorSet;
 import android.animation.ValueAnimator;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.graphics.Color;
 import android.util.Log;
 import android.view.ViewGroup;
@@ -151,9 +153,11 @@
         captureValues(transitionValues);
     }
 
+    @Nullable
     @Override
-    public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues,
-            TransitionValues endValues) {
+    public Animator createAnimator(@NonNull ViewGroup sceneRoot,
+            @Nullable TransitionValues startValues,
+            @Nullable TransitionValues endValues) {
         if (startValues == null || endValues == null ||
                 !(startValues.view instanceof TextView) || !(endValues.view instanceof TextView)) {
             return null;
diff --git a/core/java/android/transition/ChangeTransform.java b/core/java/android/transition/ChangeTransform.java
index 02d0a6a..2e0b95d 100644
--- a/core/java/android/transition/ChangeTransform.java
+++ b/core/java/android/transition/ChangeTransform.java
@@ -20,6 +20,7 @@
 import android.animation.FloatArrayEvaluator;
 import android.animation.ObjectAnimator;
 import android.animation.PropertyValuesHolder;
+import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.content.Context;
 import android.content.res.TypedArray;
@@ -223,9 +224,11 @@
         captureValues(transitionValues);
     }
 
+    @Nullable
     @Override
-    public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues,
-            TransitionValues endValues) {
+    public Animator createAnimator(@NonNull ViewGroup sceneRoot,
+            @Nullable TransitionValues startValues,
+            @Nullable TransitionValues endValues) {
         if (startValues == null || endValues == null ||
                 !startValues.values.containsKey(PROPNAME_PARENT) ||
                 !endValues.values.containsKey(PROPNAME_PARENT)) {
diff --git a/core/java/android/transition/Crossfade.java b/core/java/android/transition/Crossfade.java
index 69ce872..f13b8fe 100644
--- a/core/java/android/transition/Crossfade.java
+++ b/core/java/android/transition/Crossfade.java
@@ -22,6 +22,8 @@
 import android.animation.ObjectAnimator;
 import android.animation.RectEvaluator;
 import android.animation.ValueAnimator;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Rect;
@@ -163,9 +165,11 @@
         return mResizeBehavior;
     }
 
+    @Nullable
     @Override
-    public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues,
-            TransitionValues endValues) {
+    public Animator createAnimator(@NonNull ViewGroup sceneRoot,
+            @Nullable TransitionValues startValues,
+            @Nullable TransitionValues endValues) {
         if (startValues == null || endValues == null) {
             return null;
         }
diff --git a/core/java/android/transition/Recolor.java b/core/java/android/transition/Recolor.java
index 1a6864a..bc93d00 100644
--- a/core/java/android/transition/Recolor.java
+++ b/core/java/android/transition/Recolor.java
@@ -18,6 +18,8 @@
 
 import android.animation.Animator;
 import android.animation.ObjectAnimator;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.content.Context;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
@@ -66,9 +68,11 @@
         captureValues(transitionValues);
     }
 
+    @Nullable
     @Override
-    public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues,
-            TransitionValues endValues) {
+    public Animator createAnimator(@NonNull ViewGroup sceneRoot,
+            @Nullable TransitionValues startValues,
+            @Nullable TransitionValues endValues) {
         if (startValues == null || endValues == null) {
             return null;
         }
diff --git a/core/java/android/transition/Rotate.java b/core/java/android/transition/Rotate.java
index ad1720ca..4b60568 100644
--- a/core/java/android/transition/Rotate.java
+++ b/core/java/android/transition/Rotate.java
@@ -18,6 +18,8 @@
 
 import android.animation.Animator;
 import android.animation.ObjectAnimator;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.view.View;
 import android.view.ViewGroup;
 
@@ -41,9 +43,11 @@
         transitionValues.values.put(PROPNAME_ROTATION, transitionValues.view.getRotation());
     }
 
+    @Nullable
     @Override
-    public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues,
-            TransitionValues endValues) {
+    public Animator createAnimator(@NonNull ViewGroup sceneRoot,
+            @Nullable TransitionValues startValues,
+            @Nullable TransitionValues endValues) {
         if (startValues == null || endValues == null) {
             return null;
         }
diff --git a/core/java/android/transition/Transition.java b/core/java/android/transition/Transition.java
index a204630..95841e0 100644
--- a/core/java/android/transition/Transition.java
+++ b/core/java/android/transition/Transition.java
@@ -19,6 +19,7 @@
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.TimeInterpolator;
+import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
@@ -464,14 +465,17 @@
      *
      *
      * @param sceneRoot The root of the transition hierarchy.
-     * @param startValues The values for a specific target in the start scene.
-     * @param endValues The values for the target in the end scene.
-     * @return A Animator to be started at the appropriate time in the
-     * overall transition for this scene change. A null value means no animation
-     * should be run.
+     * @param startValues The values for a specific target in the start scene, or {@code null} if
+     *                   the target doesn't exist in the start scene.
+     * @param endValues The values for the target in the end scene, or {@code null} if the target
+     *                 doesn't exist in the end scene.
+     * @return an {@link Animator} to be started at the appropriate time in the overall transition
+     * for this scene change. A {@code null} value means no animation should be run.
      */
-    public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues,
-            TransitionValues endValues) {
+    @Nullable
+    public Animator createAnimator(@NonNull ViewGroup sceneRoot,
+            @Nullable TransitionValues startValues,
+            @Nullable TransitionValues endValues) {
         return null;
     }
 
diff --git a/core/java/android/transition/Visibility.java b/core/java/android/transition/Visibility.java
index 3c4b8c3..6b4608f 100644
--- a/core/java/android/transition/Visibility.java
+++ b/core/java/android/transition/Visibility.java
@@ -20,6 +20,8 @@
 import android.animation.Animator.AnimatorListener;
 import android.animation.Animator.AnimatorPauseListener;
 import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.util.AttributeSet;
@@ -242,9 +244,11 @@
         return visInfo;
     }
 
+    @Nullable
     @Override
-    public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues,
-            TransitionValues endValues) {
+    public Animator createAnimator(@NonNull ViewGroup sceneRoot,
+            @Nullable TransitionValues startValues,
+            @Nullable TransitionValues endValues) {
         VisibilityInfo visInfo = getVisibilityChangeInfo(startValues, endValues);
         if (visInfo.visibilityChange
                 && (visInfo.startParent != null || visInfo.endParent != null)) {
diff --git a/core/java/android/util/NtpTrustedTime.java b/core/java/android/util/NtpTrustedTime.java
index 5aa0f59..3adbd68 100644
--- a/core/java/android/util/NtpTrustedTime.java
+++ b/core/java/android/util/NtpTrustedTime.java
@@ -216,19 +216,36 @@
 
     private static NtpTrustedTime sSingleton;
 
+    /** A lock to prevent multiple refreshes taking place at the same time. */
+    private final Object mRefreshLock = new Object();
+
+    /** A lock to ensure safe read/writes to configuration. */
+    private final Object mConfigLock = new Object();
+
     /** An in-memory config override for use during tests. */
-    @GuardedBy("this")
+    @GuardedBy("mConfigLock")
     @Nullable
     private NtpConfig mNtpConfigForTests;
 
-    @GuardedBy("this")
+    /**
+     * The latest time result.
+     *
+     * <p>Written when holding {@link #mRefreshLock} but declared volatile and can be read outside
+     * synchronized blocks to avoid blocking dump() during {@link #forceRefresh}.
+     */
     @Nullable
-    private URI mLastSuccessfulNtpServerUri;
-
-    // Declared volatile and accessed outside synchronized blocks to avoid blocking reads during
-    // forceRefresh().
     private volatile TimeResult mTimeResult;
 
+    /**
+     * The last successful NTP server URI, i.e. the one used to obtain {@link #mTimeResult} when it
+     * is non-null.
+     *
+     * <p>Written when holding {@link #mRefreshLock} but declared volatile and can be read outside
+     * synchronized blocks to avoid blocking dump() during {@link #forceRefresh}.
+     */
+    @Nullable
+    private volatile URI mLastSuccessfulNtpServerUri;
+
     protected NtpTrustedTime() {
     }
 
@@ -246,7 +263,7 @@
      * test value, i.e. so the normal value will be used next time.
      */
     public void setServerConfigForTests(@NonNull NtpConfig ntpConfig) {
-        synchronized (this) {
+        synchronized (mConfigLock) {
             mNtpConfigForTests = ntpConfig;
         }
     }
@@ -254,7 +271,7 @@
     /** Forces a refresh using the default network. */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean forceRefresh() {
-        synchronized (this) {
+        synchronized (mRefreshLock) {
             Network network = getDefaultNetwork();
             if (network == null) {
                 if (LOGD) Log.d(TAG, "forceRefresh: no network available");
@@ -269,12 +286,13 @@
     public boolean forceRefresh(@NonNull Network network) {
         Objects.requireNonNull(network);
 
-        synchronized (this) {
+        synchronized (mRefreshLock) {
+            // Prevent concurrent refreshes.
             return forceRefreshLocked(network);
         }
     }
 
-    @GuardedBy("this")
+    @GuardedBy("mRefreshLock")
     private boolean forceRefreshLocked(@NonNull Network network) {
         Objects.requireNonNull(network);
 
@@ -349,12 +367,13 @@
         return false;
     }
 
-    @GuardedBy("this")
     private NtpConfig getNtpConfig() {
-        if (mNtpConfigForTests != null) {
-            return mNtpConfigForTests;
+        synchronized (mConfigLock) {
+            if (mNtpConfigForTests != null) {
+                return mNtpConfigForTests;
+            }
+            return getNtpConfigInternal();
         }
-        return getNtpConfigInternal();
     }
 
     /**
@@ -363,6 +382,7 @@
      *
      * <p>This method has been made public for easy replacement during tests.
      */
+    @GuardedBy("mConfigLock")
     @VisibleForTesting
     @Nullable
     public abstract NtpConfig getNtpConfigInternal();
@@ -479,14 +499,14 @@
 
     /** Sets the last received NTP time. Intended for use during tests. */
     public void setCachedTimeResult(TimeResult timeResult) {
-        synchronized (this) {
+        synchronized (mRefreshLock) {
             mTimeResult = timeResult;
         }
     }
 
     /** Clears the last received NTP time. Intended for use during tests. */
     public void clearCachedTimeResult() {
-        synchronized (this) {
+        synchronized (mRefreshLock) {
             mTimeResult = null;
         }
     }
@@ -585,15 +605,18 @@
 
     /** Prints debug information. */
     public void dump(PrintWriter pw) {
-        synchronized (this) {
+        synchronized (mConfigLock) {
             pw.println("getNtpConfig()=" + getNtpConfig());
             pw.println("mNtpConfigForTests=" + mNtpConfigForTests);
-            pw.println("mLastSuccessfulNtpServerUri=" + mLastSuccessfulNtpServerUri);
-            pw.println("mTimeResult=" + mTimeResult);
-            if (mTimeResult != null) {
-                pw.println("mTimeResult.getAgeMillis()="
-                        + Duration.ofMillis(mTimeResult.getAgeMillis()));
-            }
+        }
+
+        pw.println("mLastSuccessfulNtpServerUri=" + mLastSuccessfulNtpServerUri);
+
+        TimeResult timeResult = mTimeResult;
+        pw.println("mTimeResult=" + timeResult);
+        if (timeResult != null) {
+            pw.println("mTimeResult.getAgeMillis()="
+                    + Duration.ofMillis(timeResult.getAgeMillis()));
         }
     }
 
diff --git a/core/java/android/view/IRemoteAnimationRunner.aidl b/core/java/android/view/IRemoteAnimationRunner.aidl
index 1981c9d..1f64fb8 100644
--- a/core/java/android/view/IRemoteAnimationRunner.aidl
+++ b/core/java/android/view/IRemoteAnimationRunner.aidl
@@ -46,5 +46,5 @@
      * won't have any effect anymore.
      */
     @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
-    void onAnimationCancelled(boolean isKeyguardOccluded);
+    void onAnimationCancelled();
 }
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index 209729b..48ae59b 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -112,14 +112,19 @@
     void getInitialDisplaySize(int displayId, out Point size);
     @UnsupportedAppUsage
     void getBaseDisplaySize(int displayId, out Point size);
+    @EnforcePermission("WRITE_SECURE_SETTINGS")
     void setForcedDisplaySize(int displayId, int width, int height);
+    @EnforcePermission("WRITE_SECURE_SETTINGS")
     void clearForcedDisplaySize(int displayId);
     @UnsupportedAppUsage
     int getInitialDisplayDensity(int displayId);
     int getBaseDisplayDensity(int displayId);
     int getDisplayIdByUniqueId(String uniqueId);
+    @EnforcePermission("WRITE_SECURE_SETTINGS")
     void setForcedDisplayDensityForUser(int displayId, int density, int userId);
+    @EnforcePermission("WRITE_SECURE_SETTINGS")
     void clearForcedDisplayDensityForUser(int displayId, int userId);
+    @EnforcePermission("WRITE_SECURE_SETTINGS")
     void setForcedDisplayScalingMode(int displayId, int mode); // 0 = auto, 1 = disable
 
     // These can only be called when holding the MANAGE_APP_TOKENS permission.
@@ -159,6 +164,7 @@
      * @param shellRootLayer The container's layer. See WindowManager#ShellRootLayer.
      * @return a SurfaceControl to add things to.
      */
+    @EnforcePermission("MANAGE_APP_TOKENS")
     SurfaceControl addShellRoot(int displayId, IWindow client, int shellRootLayer);
 
     /**
@@ -167,6 +173,7 @@
      *
      * @param target The IWindow that accessibility service interfaces with.
      */
+    @EnforcePermission("MANAGE_APP_TOKENS")
     void setShellRootAccessibilityWindow(int displayId, int shellRootLayer, IWindow target);
 
     /**
@@ -197,6 +204,7 @@
     void disableKeyguard(IBinder token, String tag, int userId);
     /** @deprecated use Activity.setShowWhenLocked instead. */
     void reenableKeyguard(IBinder token, int userId);
+    @EnforcePermission("DISABLE_KEYGUARD")
     void exitKeyguardSecurely(IOnKeyguardExitResult callback);
     @UnsupportedAppUsage
     boolean isKeyguardLocked();
@@ -417,6 +425,7 @@
     /**
      * Called by System UI to enable or disable haptic feedback on the navigation bar buttons.
      */
+    @EnforcePermission("STATUS_BAR")
     @UnsupportedAppUsage
     void setNavBarVirtualKeyHapticFeedbackEnabled(boolean enabled);
 
@@ -504,6 +513,7 @@
     /**
      * Return the touch region for the current IME window, or an empty region if there is none.
      */
+    @EnforcePermission("RESTRICTED_VR_ACCESS")
     Region getCurrentImeTouchRegion();
 
     /**
@@ -713,6 +723,7 @@
      * When in multi-window mode, the provided displayWindowInsetsController will control insets
      * animations.
      */
+    @EnforcePermission("MANAGE_APP_TOKENS")
     void setDisplayWindowInsetsController(
             int displayId, in IDisplayWindowInsetsController displayWindowInsetsController);
 
@@ -720,6 +731,7 @@
      * Called when a remote process updates the requested visibilities of insets on a display window
      * container.
      */
+    @EnforcePermission("MANAGE_APP_TOKENS")
     void updateDisplayWindowRequestedVisibleTypes(int displayId, int requestedVisibleTypes);
 
     /**
diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java
index 3902989..cb48120 100644
--- a/core/java/android/view/MotionEvent.java
+++ b/core/java/android/view/MotionEvent.java
@@ -2437,27 +2437,6 @@
      * @return Returns the time this event occurred,
      * in the {@link android.os.SystemClock#uptimeMillis} time base but with
      * nanosecond precision.
-     *
-     * @hide
-     */
-    @UnsupportedAppUsage(publicAlternatives =
-            "Use {@link #getEventTimeNanos()} public API instead.",
-            maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
-    public final long getEventTimeNano() {
-        return nativeGetEventTimeNanos(mNativePtr, HISTORY_CURRENT);
-    }
-
-    /**
-     * Retrieve the time this event occurred,
-     * in the {@link android.os.SystemClock#uptimeMillis} time base but with
-     * nanosecond precision.
-     * <p>
-     * The value is in nanosecond precision but it may not have nanosecond accuracy.
-     * </p>
-     *
-     * @return Returns the time this event occurred,
-     * in the {@link android.os.SystemClock#uptimeMillis} time base but with
-     * nanosecond precision.
      */
     @Override
     public long getEventTimeNanos() {
diff --git a/core/java/android/view/PointerIcon.java b/core/java/android/view/PointerIcon.java
index d88994b..fee88d91 100644
--- a/core/java/android/view/PointerIcon.java
+++ b/core/java/android/view/PointerIcon.java
@@ -146,7 +146,14 @@
     // conflicts with any system types that may be defined in the future.
     private static final int TYPE_OEM_FIRST = 10000;
 
-    /** The default pointer icon. */
+    /**
+     * The default pointer icon.
+     * @deprecated This is the same as using {@link #TYPE_ARROW}. Use {@link #TYPE_ARROW} to
+     *     explicitly show an arrow, or use a {@code null} {@link PointerIcon} with
+     *     {@link View#setPointerIcon(PointerIcon)} or
+     *     {@link View#onResolvePointerIcon(MotionEvent, int)} instead to show
+     *     the default pointer icon.
+     */
     public static final int TYPE_DEFAULT = TYPE_ARROW;
 
     private static final PointerIcon gNullIcon = new PointerIcon(TYPE_NULL);
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 6bd9538..2f64ea2 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -3569,6 +3569,11 @@
                         mTmpLocation[1] + host.mBottom - host.mTop);
 
                 host.gatherTransparentRegion(mTransparentRegion);
+                final Rect bounds = mAttachInfo.mTmpInvalRect;
+                if (getAccessibilityFocusedRect(bounds)) {
+                  host.applyDrawableToTransparentRegion(getAccessibilityFocusedDrawable(),
+                      mTransparentRegion);
+                }
                 if (mTranslator != null) {
                     mTranslator.translateRegionInWindowToScreen(mTransparentRegion);
                 }
@@ -4842,6 +4847,8 @@
             }
             if (!bounds.equals(drawable.getBounds())) {
                 accessibilityFocusDirty = true;
+                // Force recalculation of transparent regions
+                requestLayout();
             }
         }
 
@@ -7120,7 +7127,11 @@
                 final MotionEvent event = (MotionEvent)q.mEvent;
                 final int source = event.getSource();
                 if ((source & InputDevice.SOURCE_CLASS_TRACKBALL) != 0) {
-                    mTrackball.process(event);
+                    // Do not synthesize events for relative mouse movement. If apps opt into
+                    // relative mouse movement they must be prepared to handle the events.
+                    if (!event.isFromSource(InputDevice.SOURCE_MOUSE_RELATIVE)) {
+                        mTrackball.process(event);
+                    }
                     return FINISH_HANDLED;
                 } else if ((source & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) {
                     mJoystick.process(event);
@@ -8946,8 +8957,7 @@
                 return true;
             }
             return mEvent instanceof MotionEvent
-                    && (mEvent.isFromSource(InputDevice.SOURCE_CLASS_POINTER)
-                        || mEvent.isFromSource(InputDevice.SOURCE_ROTARY_ENCODER));
+                    && (mEvent.isFromSource(InputDevice.SOURCE_CLASS_POINTER));
         }
 
         public boolean shouldSendToSynthesizer() {
diff --git a/core/java/android/view/accessibility/AccessibilityEvent.java b/core/java/android/view/accessibility/AccessibilityEvent.java
index 0acc022..e08d7fd 100644
--- a/core/java/android/view/accessibility/AccessibilityEvent.java
+++ b/core/java/android/view/accessibility/AccessibilityEvent.java
@@ -454,33 +454,35 @@
     @Deprecated
     public static final int MAX_TEXT_LENGTH = 500;
 
+    // Event types.
+
     /**
      * Represents the event of clicking on a {@link android.view.View} like
      * {@link android.widget.Button}, {@link android.widget.CompoundButton}, etc.
      */
-    public static final int TYPE_VIEW_CLICKED = 0x00000001;
+    public static final int TYPE_VIEW_CLICKED = 1 /* << 0 */;;
 
     /**
      * Represents the event of long clicking on a {@link android.view.View} like
      * {@link android.widget.Button}, {@link android.widget.CompoundButton}, etc.
      */
-    public static final int TYPE_VIEW_LONG_CLICKED = 0x00000002;
+    public static final int TYPE_VIEW_LONG_CLICKED = 1 << 1;
 
     /**
      * Represents the event of selecting an item usually in the context of an
      * {@link android.widget.AdapterView}.
      */
-    public static final int TYPE_VIEW_SELECTED = 0x00000004;
+    public static final int TYPE_VIEW_SELECTED = 1 << 2;
 
     /**
      * Represents the event of setting input focus of a {@link android.view.View}.
      */
-    public static final int TYPE_VIEW_FOCUSED = 0x00000008;
+    public static final int TYPE_VIEW_FOCUSED = 1 << 3;
 
     /**
      * Represents the event of changing the text of an {@link android.widget.EditText}.
      */
-    public static final int TYPE_VIEW_TEXT_CHANGED = 0x00000010;
+    public static final int TYPE_VIEW_TEXT_CHANGED = 1 << 4;
 
     /**
      * Represents the event of a change to a visually distinct section of the user interface.
@@ -488,49 +490,49 @@
      * accessibility pane titles, and replaces {@link #TYPE_WINDOW_CONTENT_CHANGED} for those
      * sources. Details about the change are available from {@link #getContentChangeTypes()}.
      */
-    public static final int TYPE_WINDOW_STATE_CHANGED = 0x00000020;
+    public static final int TYPE_WINDOW_STATE_CHANGED = 1 << 5;
 
     /**
      * Represents the event showing a {@link android.app.Notification}.
      */
-    public static final int TYPE_NOTIFICATION_STATE_CHANGED = 0x00000040;
+    public static final int TYPE_NOTIFICATION_STATE_CHANGED = 1 << 6;
 
     /**
      * Represents the event of a hover enter over a {@link android.view.View}.
      */
-    public static final int TYPE_VIEW_HOVER_ENTER = 0x00000080;
+    public static final int TYPE_VIEW_HOVER_ENTER = 1 << 7;
 
     /**
      * Represents the event of a hover exit over a {@link android.view.View}.
      */
-    public static final int TYPE_VIEW_HOVER_EXIT = 0x00000100;
+    public static final int TYPE_VIEW_HOVER_EXIT = 1 << 8;
 
     /**
      * Represents the event of starting a touch exploration gesture.
      */
-    public static final int TYPE_TOUCH_EXPLORATION_GESTURE_START = 0x00000200;
+    public static final int TYPE_TOUCH_EXPLORATION_GESTURE_START = 1 << 9;
 
     /**
      * Represents the event of ending a touch exploration gesture.
      */
-    public static final int TYPE_TOUCH_EXPLORATION_GESTURE_END = 0x00000400;
+    public static final int TYPE_TOUCH_EXPLORATION_GESTURE_END = 1 << 10;
 
     /**
      * Represents the event of changing the content of a window and more
      * specifically the sub-tree rooted at the event's source.
      */
-    public static final int TYPE_WINDOW_CONTENT_CHANGED = 0x00000800;
+    public static final int TYPE_WINDOW_CONTENT_CHANGED = 1 << 11;
 
     /**
      * Represents the event of scrolling a view. This event type is generally not sent directly.
      * @see android.view.View#onScrollChanged(int, int, int, int)
      */
-    public static final int TYPE_VIEW_SCROLLED = 0x00001000;
+    public static final int TYPE_VIEW_SCROLLED = 1 << 12;
 
     /**
      * Represents the event of changing the selection in an {@link android.widget.EditText}.
      */
-    public static final int TYPE_VIEW_TEXT_SELECTION_CHANGED = 0x00002000;
+    public static final int TYPE_VIEW_TEXT_SELECTION_CHANGED = 1 << 13;
 
     /**
      * Represents the event of an application making an announcement.
@@ -538,58 +540,58 @@
      * In general, follow the practices described in
      * {@link View#announceForAccessibility(CharSequence)}.
      */
-    public static final int TYPE_ANNOUNCEMENT = 0x00004000;
+    public static final int TYPE_ANNOUNCEMENT = 1 << 14;
 
     /**
      * Represents the event of gaining accessibility focus.
      */
-    public static final int TYPE_VIEW_ACCESSIBILITY_FOCUSED = 0x00008000;
+    public static final int TYPE_VIEW_ACCESSIBILITY_FOCUSED = 1 << 15;
 
     /**
      * Represents the event of clearing accessibility focus.
      */
-    public static final int TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 0x00010000;
+    public static final int TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 1 << 16;
 
     /**
      * Represents the event of traversing the text of a view at a given movement granularity.
      */
-    public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 0x00020000;
+    public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 1 << 17;
 
     /**
      * Represents the event of beginning gesture detection.
      */
-    public static final int TYPE_GESTURE_DETECTION_START = 0x00040000;
+    public static final int TYPE_GESTURE_DETECTION_START = 1 << 18;
 
     /**
      * Represents the event of ending gesture detection.
      */
-    public static final int TYPE_GESTURE_DETECTION_END = 0x00080000;
+    public static final int TYPE_GESTURE_DETECTION_END = 1 << 19;
 
     /**
      * Represents the event of the user starting to touch the screen.
      */
-    public static final int TYPE_TOUCH_INTERACTION_START = 0x00100000;
+    public static final int TYPE_TOUCH_INTERACTION_START = 1 << 20;
 
     /**
      * Represents the event of the user ending to touch the screen.
      */
-    public static final int TYPE_TOUCH_INTERACTION_END = 0x00200000;
+    public static final int TYPE_TOUCH_INTERACTION_END = 1 << 21;
 
     /**
      * Represents the event change in the system windows shown on the screen. This event type should
      * only be dispatched by the system.
      */
-    public static final int TYPE_WINDOWS_CHANGED = 0x00400000;
+    public static final int TYPE_WINDOWS_CHANGED = 1 << 22;
 
     /**
      * Represents the event of a context click on a {@link android.view.View}.
      */
-    public static final int TYPE_VIEW_CONTEXT_CLICKED = 0x00800000;
+    public static final int TYPE_VIEW_CONTEXT_CLICKED = 1 << 23;
 
     /**
      * Represents the event of the assistant currently reading the users screen context.
      */
-    public static final int TYPE_ASSIST_READING_CONTEXT = 0x01000000;
+    public static final int TYPE_ASSIST_READING_CONTEXT = 1 << 24;
 
     /**
      * Represents a change in the speech state defined by the speech state change types.
@@ -607,37 +609,39 @@
      * @see #getSpeechStateChangeTypes
      * @see #setSpeechStateChangeTypes
      */
-    public static final int TYPE_SPEECH_STATE_CHANGE = 0x02000000;
+    public static final int TYPE_SPEECH_STATE_CHANGE = 1 << 25;
 
     /**
      * Represents the event of a scroll having completed and brought the target node on screen.
      */
-    public static final int TYPE_VIEW_TARGETED_BY_SCROLL = 0x04000000;
+    public static final int TYPE_VIEW_TARGETED_BY_SCROLL = 1 << 26;
+
+    // Content change types.
 
     /**
      * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event: The type of change is not
      * defined.
      */
-    public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0x00000000;
+    public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0;
 
     /**
      * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
      * One or more content changes occurred in the the subtree rooted at the source node,
      * or the subtree's structure changed when a node was added or removed.
      */
-    public static final int CONTENT_CHANGE_TYPE_SUBTREE = 0x00000001;
+    public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1 /* << 0 */;
 
     /**
      * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
      * The node's text changed.
      */
-    public static final int CONTENT_CHANGE_TYPE_TEXT = 0x00000002;
+    public static final int CONTENT_CHANGE_TYPE_TEXT = 1 << 1;
 
     /**
      * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
      * The node's content description changed.
      */
-    public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 0x00000004;
+    public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 1 << 2;
 
     /**
      * Change type for {@link #TYPE_WINDOW_STATE_CHANGED} event:
@@ -648,14 +652,14 @@
      * is sent.
      *
      */
-    public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 0x00000008;
+    public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 1 << 3;
 
     /**
      * Change type for {@link #TYPE_WINDOW_STATE_CHANGED} event:
      * The node has a pane title, and either just appeared or just was assigned a title when it
      * had none before.
      */
-    public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 0x00000010;
+    public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 1 << 4;
 
     /**
      * Change type for {@link #TYPE_WINDOW_STATE_CHANGED} event:
@@ -666,7 +670,7 @@
      * clear for the user, the first entry in {@link #getText()} will return the value that would
      * have been returned by {@code getSource().getPaneTitle()}.
      */
-    public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 0x00000020;
+    public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 1 << 5;
 
     /**
      * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
@@ -676,7 +680,7 @@
      * changed from "on, wifi signal full" to "on, wifi three bars", "wifi three bars" can be put
      * into the event text.
      */
-    public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 0x00000040;
+    public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 1 << 6;
 
     /**
      * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
@@ -686,7 +690,7 @@
      *
      * @see AccessibilityNodeInfo.AccessibilityAction#ACTION_DRAG_START
      */
-    public static final int CONTENT_CHANGE_TYPE_DRAG_STARTED = 0x00000080;
+    public static final int CONTENT_CHANGE_TYPE_DRAG_STARTED = 1 << 7;
 
     /**
      * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
@@ -695,7 +699,7 @@
      *
      * @see AccessibilityNodeInfo.AccessibilityAction#ACTION_DRAG_DROP
      */
-    public static final int CONTENT_CHANGE_TYPE_DRAG_DROPPED = 0x00000100;
+    public static final int CONTENT_CHANGE_TYPE_DRAG_DROPPED = 1 << 8;
 
     /**
      * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
@@ -706,7 +710,7 @@
      *
      * @see AccessibilityNodeInfo.AccessibilityAction#ACTION_DRAG_CANCEL
      */
-    public static final int CONTENT_CHANGE_TYPE_DRAG_CANCELLED = 0x0000200;
+    public static final int CONTENT_CHANGE_TYPE_DRAG_CANCELLED = 1 << 9;
 
     /**
      * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
@@ -718,7 +722,7 @@
      * @see AccessibilityNodeInfo#isContentInvalid
      * @see AccessibilityNodeInfo#setContentInvalid
      */
-    public static final int CONTENT_CHANGE_TYPE_CONTENT_INVALID = 0x0000400;
+    public static final int CONTENT_CHANGE_TYPE_CONTENT_INVALID = 1 << 10;
 
     /**
      * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
@@ -730,7 +734,7 @@
      * @see AccessibilityNodeInfo#getError
      * @see AccessibilityNodeInfo#setError
      */
-    public static final int CONTENT_CHANGE_TYPE_ERROR = 0x0000800;
+    public static final int CONTENT_CHANGE_TYPE_ERROR = 1 << 11;
 
     /**
      * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
@@ -744,44 +748,48 @@
      */
     public static final int CONTENT_CHANGE_TYPE_ENABLED = 1 << 12;
 
+    // Speech state change types.
+
     /** Change type for {@link #TYPE_SPEECH_STATE_CHANGE} event: another service is speaking. */
-    public static final int SPEECH_STATE_SPEAKING_START = 0x00000001;
+    public static final int SPEECH_STATE_SPEAKING_START = 1 /* << 0 */;;
 
     /**
      * Change type for {@link #TYPE_SPEECH_STATE_CHANGE} event: another service is no longer
      * speaking.
      */
-    public static final int SPEECH_STATE_SPEAKING_END = 0x00000002;
+    public static final int SPEECH_STATE_SPEAKING_END = 1 << 1;
 
     /**
      * Change type for {@link #TYPE_SPEECH_STATE_CHANGE} event: another service is listening to the
      * microphone.
      */
-    public static final int SPEECH_STATE_LISTENING_START = 0x00000004;
+    public static final int SPEECH_STATE_LISTENING_START = 1 << 2;
 
     /**
      * Change type for {@link #TYPE_SPEECH_STATE_CHANGE} event: another service is no longer
      * listening to the microphone.
      */
-    public static final int SPEECH_STATE_LISTENING_END = 0x00000008;
+    public static final int SPEECH_STATE_LISTENING_END = 1 << 3;
+
+    // Windows change types.
 
     /**
      * Change type for {@link #TYPE_WINDOWS_CHANGED} event:
      * The window was added.
      */
-    public static final int WINDOWS_CHANGE_ADDED = 0x00000001;
+    public static final int WINDOWS_CHANGE_ADDED = 1 /* << 0 */;;
 
     /**
      * Change type for {@link #TYPE_WINDOWS_CHANGED} event:
      * A window was removed.
      */
-    public static final int WINDOWS_CHANGE_REMOVED = 0x00000002;
+    public static final int WINDOWS_CHANGE_REMOVED = 1 << 1;
 
     /**
      * Change type for {@link #TYPE_WINDOWS_CHANGED} event:
      * The window's title changed.
      */
-    public static final int WINDOWS_CHANGE_TITLE = 0x00000004;
+    public static final int WINDOWS_CHANGE_TITLE = 1 << 2;
 
     /**
      * Change type for {@link #TYPE_WINDOWS_CHANGED} event:
@@ -791,49 +799,49 @@
      * region changed. It's also possible that region changed but bounds doesn't.
      * </p>
      */
-    public static final int WINDOWS_CHANGE_BOUNDS = 0x00000008;
+    public static final int WINDOWS_CHANGE_BOUNDS = 1 << 3;
 
     /**
      * Change type for {@link #TYPE_WINDOWS_CHANGED} event:
      * The window's layer changed.
      */
-    public static final int WINDOWS_CHANGE_LAYER = 0x00000010;
+    public static final int WINDOWS_CHANGE_LAYER = 1 << 4;
 
     /**
      * Change type for {@link #TYPE_WINDOWS_CHANGED} event:
      * The window's {@link AccessibilityWindowInfo#isActive()} changed.
      */
-    public static final int WINDOWS_CHANGE_ACTIVE = 0x00000020;
+    public static final int WINDOWS_CHANGE_ACTIVE = 1 << 5;
 
     /**
      * Change type for {@link #TYPE_WINDOWS_CHANGED} event:
      * The window's {@link AccessibilityWindowInfo#isFocused()} changed.
      */
-    public static final int WINDOWS_CHANGE_FOCUSED = 0x00000040;
+    public static final int WINDOWS_CHANGE_FOCUSED = 1 << 6;
 
     /**
      * Change type for {@link #TYPE_WINDOWS_CHANGED} event:
      * The window's {@link AccessibilityWindowInfo#isAccessibilityFocused()} changed.
      */
-    public static final int WINDOWS_CHANGE_ACCESSIBILITY_FOCUSED = 0x00000080;
+    public static final int WINDOWS_CHANGE_ACCESSIBILITY_FOCUSED = 1 << 7;
 
     /**
      * Change type for {@link #TYPE_WINDOWS_CHANGED} event:
      * The window's parent changed.
      */
-    public static final int WINDOWS_CHANGE_PARENT = 0x00000100;
+    public static final int WINDOWS_CHANGE_PARENT = 1 << 8;
 
     /**
      * Change type for {@link #TYPE_WINDOWS_CHANGED} event:
      * The window's children changed.
      */
-    public static final int WINDOWS_CHANGE_CHILDREN = 0x00000200;
+    public static final int WINDOWS_CHANGE_CHILDREN = 1 << 9;
 
     /**
      * Change type for {@link #TYPE_WINDOWS_CHANGED} event:
      * The window either entered or exited picture-in-picture mode.
      */
-    public static final int WINDOWS_CHANGE_PIP = 0x00000400;
+    public static final int WINDOWS_CHANGE_PIP = 1 << 10;
 
     /** @hide */
     @Retention(RetentionPolicy.SOURCE)
@@ -889,6 +897,7 @@
     public @interface SpeechStateChangeTypes {}
 
     /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
     @IntDef(
             flag = true,
             prefix = {"TYPE_"},
@@ -921,7 +930,6 @@
                 TYPE_SPEECH_STATE_CHANGE,
                 TYPE_VIEW_TARGETED_BY_SCROLL
             })
-    @Retention(RetentionPolicy.SOURCE)
     public @interface EventType {}
 
     /**
@@ -942,6 +950,8 @@
      * @see #TYPE_VIEW_SCROLLED
      * @see #TYPE_VIEW_TEXT_SELECTION_CHANGED
      * @see #TYPE_ANNOUNCEMENT
+     * @see #TYPE_VIEW_ACCESSIBILITY_FOCUSED
+     * @see #TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED
      * @see #TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY
      * @see #TYPE_GESTURE_DETECTION_START
      * @see #TYPE_GESTURE_DETECTION_END
@@ -949,12 +959,15 @@
      * @see #TYPE_TOUCH_INTERACTION_END
      * @see #TYPE_WINDOWS_CHANGED
      * @see #TYPE_VIEW_CONTEXT_CLICKED
+     * @see #TYPE_ASSIST_READING_CONTEXT
+     * @see #TYPE_SPEECH_STATE_CHANGE
      * @see #TYPE_VIEW_TARGETED_BY_SCROLL
      */
     public static final int TYPES_ALL_MASK = 0xFFFFFFFF;
 
     @UnsupportedAppUsage
-    private @EventType int mEventType;
+    @EventType
+    private int mEventType;
     private CharSequence mPackageName;
     private long mEventTime;
     int mMovementGranularity;
@@ -1021,10 +1034,8 @@
         mEventTime = event.mEventTime;
         mPackageName = event.mPackageName;
         if (event.mRecords != null) {
-            final int recordCount = event.mRecords.size();
-            mRecords = new ArrayList<>(recordCount);
-            for (int i = 0; i < recordCount; i++) {
-                final AccessibilityRecord record = event.mRecords.get(i);
+            mRecords = new ArrayList<>(event.mRecords.size());
+            for (AccessibilityRecord record : event.mRecords) {
                 final AccessibilityRecord recordClone = new AccessibilityRecord(record);
                 mRecords.add(recordClone);
             }
@@ -1044,9 +1055,7 @@
         super.setSealed(sealed);
         final List<AccessibilityRecord> records = mRecords;
         if (records != null) {
-            final int recordCount = records.size();
-            for (int i = 0; i < recordCount; i++) {
-                AccessibilityRecord record = records.get(i);
+            for (AccessibilityRecord record : records) {
                 record.setSealed(sealed);
             }
         }
@@ -1094,7 +1103,8 @@
      *
      * @return The event type.
      */
-    public @EventType int getEventType() {
+    @EventType
+    public int getEventType() {
         return mEventType;
     }
 
@@ -1113,6 +1123,12 @@
      *         <li>{@link #CONTENT_CHANGE_TYPE_UNDEFINED}
      *         <li>{@link #CONTENT_CHANGE_TYPE_PANE_APPEARED}
      *         <li>{@link #CONTENT_CHANGE_TYPE_PANE_DISAPPEARED}
+     *         <li>{@link #CONTENT_CHANGE_TYPE_DRAG_STARTED}
+     *         <li>{@link #CONTENT_CHANGE_TYPE_DRAG_DROPPED}
+     *         <li>{@link #CONTENT_CHANGE_TYPE_DRAG_CANCELLED}
+     *         <li>{@link #CONTENT_CHANGE_TYPE_CONTENT_INVALID}
+     *         <li>{@link #CONTENT_CHANGE_TYPE_ERROR}
+     *         <li>{@link #CONTENT_CHANGE_TYPE_ENABLED}
      *         </ul>
      */
     @ContentChangeTypes
@@ -1203,7 +1219,9 @@
     }
 
     /**
-     * Gets the bit mask of the speech state signaled by a {@link #TYPE_SPEECH_STATE_CHANGE} event
+     * Gets the bit mask of the speech state signaled by a {@link #TYPE_SPEECH_STATE_CHANGE} event.
+     *
+     * @return The bit mask of speech change types.
      *
      * @see #SPEECH_STATE_SPEAKING_START
      * @see #SPEECH_STATE_SPEAKING_END
@@ -1256,6 +1274,18 @@
      * single event may represent multiple change types.
      *
      * @return The bit mask of change types.
+     *
+     * @see #WINDOWS_CHANGE_ADDED
+     * @see #WINDOWS_CHANGE_REMOVED
+     * @see #WINDOWS_CHANGE_TITLE
+     * @see #WINDOWS_CHANGE_BOUNDS
+     * @see #WINDOWS_CHANGE_LAYER
+     * @see #WINDOWS_CHANGE_ACTIVE
+     * @see #WINDOWS_CHANGE_FOCUSED
+     * @see #WINDOWS_CHANGE_ACCESSIBILITY_FOCUSED
+     * @see #WINDOWS_CHANGE_PARENT
+     * @see #WINDOWS_CHANGE_CHILDREN
+     * @see #WINDOWS_CHANGE_PIP
      */
     @WindowsChangeTypes
     public int getWindowChanges() {
@@ -1375,6 +1405,21 @@
      * <li>{@link AccessibilityNodeInfo#ACTION_CLEAR_FOCUS}
      * <li>{@link AccessibilityNodeInfo#ACTION_CLEAR_SELECTION}
      * <li>{@link AccessibilityNodeInfo#ACTION_CLICK}
+     * <li>{@link AccessibilityNodeInfo#ACTION_LONG_CLICK}
+     * <li>{@link AccessibilityNodeInfo#ACTION_NEXT_AT_MOVEMENT_GRANULARITY}
+     * <li>{@link AccessibilityNodeInfo#ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY}
+     * <li>{@link AccessibilityNodeInfo#ACTION_NEXT_HTML_ELEMENT}
+     * <li>{@link AccessibilityNodeInfo#ACTION_PREVIOUS_HTML_ELEMENT}
+     * <li>{@link AccessibilityNodeInfo#ACTION_SCROLL_FORWARD}
+     * <li>{@link AccessibilityNodeInfo#ACTION_SCROLL_BACKWARD}
+     * <li>{@link AccessibilityNodeInfo#ACTION_COPY}
+     * <li>{@link AccessibilityNodeInfo#ACTION_PASTE}
+     * <li>{@link AccessibilityNodeInfo#ACTION_CUT}
+     * <li>{@link AccessibilityNodeInfo#ACTION_SET_SELECTION}
+     * <li>{@link AccessibilityNodeInfo#ACTION_EXPAND}
+     * <li>{@link AccessibilityNodeInfo#ACTION_COLLAPSE}
+     * <li>{@link AccessibilityNodeInfo#ACTION_DISMISS}
+     * <li>{@link AccessibilityNodeInfo#ACTION_SET_TEXT}
      * <li>etc.
      * </ul>
      *
@@ -1758,7 +1803,8 @@
     /**
      * @see Parcelable.Creator
      */
-    public static final @android.annotation.NonNull Parcelable.Creator<AccessibilityEvent> CREATOR =
+    @NonNull
+    public static final Parcelable.Creator<AccessibilityEvent> CREATOR =
             new Parcelable.Creator<AccessibilityEvent>() {
         public AccessibilityEvent createFromParcel(Parcel parcel) {
             AccessibilityEvent event = new AccessibilityEvent();
diff --git a/core/java/android/view/accessibility/AccessibilityManager.java b/core/java/android/view/accessibility/AccessibilityManager.java
index efa2a01..11b0d5f 100644
--- a/core/java/android/view/accessibility/AccessibilityManager.java
+++ b/core/java/android/view/accessibility/AccessibilityManager.java
@@ -99,30 +99,30 @@
     private static final String LOG_TAG = "AccessibilityManager";
 
     /** @hide */
-    public static final int STATE_FLAG_ACCESSIBILITY_ENABLED = 0x00000001;
+    public static final int STATE_FLAG_ACCESSIBILITY_ENABLED = 1 /* << 0 */;
 
     /** @hide */
-    public static final int STATE_FLAG_TOUCH_EXPLORATION_ENABLED = 0x00000002;
+    public static final int STATE_FLAG_TOUCH_EXPLORATION_ENABLED = 1 << 1;
 
     /** @hide */
-    public static final int STATE_FLAG_HIGH_TEXT_CONTRAST_ENABLED = 0x00000004;
+    public static final int STATE_FLAG_HIGH_TEXT_CONTRAST_ENABLED = 1 << 2;
 
     /** @hide */
-    public static final int STATE_FLAG_DISPATCH_DOUBLE_TAP = 0x00000008;
+    public static final int STATE_FLAG_DISPATCH_DOUBLE_TAP = 1 << 3;
 
     /** @hide */
-    public static final int STATE_FLAG_REQUEST_MULTI_FINGER_GESTURES = 0x00000010;
+    public static final int STATE_FLAG_REQUEST_MULTI_FINGER_GESTURES = 1 << 4;
 
     /** @hide */
-    public static final int STATE_FLAG_TRACE_A11Y_INTERACTION_CONNECTION_ENABLED = 0x00000100;
+    public static final int STATE_FLAG_TRACE_A11Y_INTERACTION_CONNECTION_ENABLED = 1 << 8;
     /** @hide */
-    public static final int STATE_FLAG_TRACE_A11Y_INTERACTION_CONNECTION_CB_ENABLED = 0x00000200;
+    public static final int STATE_FLAG_TRACE_A11Y_INTERACTION_CONNECTION_CB_ENABLED = 1 << 9;
     /** @hide */
-    public static final int STATE_FLAG_TRACE_A11Y_INTERACTION_CLIENT_ENABLED = 0x00000400;
+    public static final int STATE_FLAG_TRACE_A11Y_INTERACTION_CLIENT_ENABLED = 1 << 10;
     /** @hide */
-    public static final int STATE_FLAG_TRACE_A11Y_SERVICE_ENABLED = 0x00000800;
+    public static final int STATE_FLAG_TRACE_A11Y_SERVICE_ENABLED = 1 << 11;
     /** @hide */
-    public static final int STATE_FLAG_AUDIO_DESCRIPTION_BY_DEFAULT_ENABLED = 0x00001000;
+    public static final int STATE_FLAG_AUDIO_DESCRIPTION_BY_DEFAULT_ENABLED = 1 << 12;
 
     /** @hide */
     public static final int DALTONIZER_DISABLED = -1;
diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
index ddd7734..aef75a0 100644
--- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java
+++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
@@ -136,6 +136,8 @@
     public static final long LEASHED_NODE_ID = makeNodeId(LEASHED_ITEM_ID,
             AccessibilityNodeProvider.HOST_VIEW_ID);
 
+    // Prefetch flags.
+
     /**
      * Prefetching strategy that prefetches the ancestors of the requested node.
      * <p> Ancestors will be prefetched before siblings and descendants.
@@ -146,7 +148,7 @@
      * @see AccessibilityService#getRootInActiveWindow(int)
      * @see AccessibilityEvent#getSource(int)
      */
-    public static final int FLAG_PREFETCH_ANCESTORS = 0x00000001;
+    public static final int FLAG_PREFETCH_ANCESTORS = 1 /* << 0 */;
 
     /**
      * Prefetching strategy that prefetches the siblings of the requested node.
@@ -155,7 +157,7 @@
      *
      * @see #FLAG_PREFETCH_ANCESTORS for where to use these flags.
      */
-    public static final int FLAG_PREFETCH_SIBLINGS = 0x00000002;
+    public static final int FLAG_PREFETCH_SIBLINGS = 1 << 1;
 
     /**
      * Prefetching strategy that prefetches the descendants in a hybrid depth first and breadth
@@ -167,7 +169,7 @@
      *
      * @see #FLAG_PREFETCH_ANCESTORS for where to use these flags.
      */
-    public static final int FLAG_PREFETCH_DESCENDANTS_HYBRID = 0x00000004;
+    public static final int FLAG_PREFETCH_DESCENDANTS_HYBRID = 1 << 2;
 
     /**
      * Prefetching strategy that prefetches the descendants of the requested node depth-first.
@@ -177,7 +179,7 @@
      *
      * @see #FLAG_PREFETCH_ANCESTORS for where to use these flags.
      */
-    public static final int FLAG_PREFETCH_DESCENDANTS_DEPTH_FIRST = 0x00000008;
+    public static final int FLAG_PREFETCH_DESCENDANTS_DEPTH_FIRST = 1 << 3;
 
     /**
      * Prefetching strategy that prefetches the descendants of the requested node breadth-first.
@@ -187,7 +189,7 @@
      *
      * @see #FLAG_PREFETCH_ANCESTORS for where to use these flags.
      */
-    public static final int FLAG_PREFETCH_DESCENDANTS_BREADTH_FIRST = 0x00000010;
+    public static final int FLAG_PREFETCH_DESCENDANTS_BREADTH_FIRST = 1 << 4;
 
     /**
      * Prefetching flag that specifies prefetching should not be interrupted by a request to
@@ -195,12 +197,31 @@
      *
      * @see #FLAG_PREFETCH_ANCESTORS for where to use these flags.
      */
-    public static final int FLAG_PREFETCH_UNINTERRUPTIBLE = 0x00000020;
+    public static final int FLAG_PREFETCH_UNINTERRUPTIBLE = 1 << 5;
 
-    /** @hide */
-    public static final int FLAG_PREFETCH_MASK = 0x0000003f;
+    /**
+     * Mask for {@link PrefetchingStrategy} all types.
+     *
+     * @see #FLAG_PREFETCH_ANCESTORS
+     * @see #FLAG_PREFETCH_SIBLINGS
+     * @see #FLAG_PREFETCH_DESCENDANTS_HYBRID
+     * @see #FLAG_PREFETCH_DESCENDANTS_DEPTH_FIRST
+     * @see #FLAG_PREFETCH_DESCENDANTS_BREADTH_FIRST
+     * @see #FLAG_PREFETCH_UNINTERRUPTIBLE
+     *
+     * @hide
+     */
+    public static final int FLAG_PREFETCH_MASK = 0x0000003F;
 
-    /** @hide */
+    /**
+     * Mask for {@link PrefetchingStrategy} that includes only descendants-related strategies.
+     *
+     * @see #FLAG_PREFETCH_DESCENDANTS_HYBRID
+     * @see #FLAG_PREFETCH_DESCENDANTS_DEPTH_FIRST
+     * @see #FLAG_PREFETCH_DESCENDANTS_BREADTH_FIRST
+     *
+     * @hide
+     */
     public static final int FLAG_PREFETCH_DESCENDANTS_MASK = 0x0000001C;
 
     /**
@@ -210,6 +231,7 @@
     public static final int MAX_NUMBER_OF_PREFETCHED_NODES = 50;
 
     /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
     @IntDef(flag = true, prefix = { "FLAG_PREFETCH" }, value = {
             FLAG_PREFETCH_ANCESTORS,
             FLAG_PREFETCH_SIBLINGS,
@@ -218,28 +240,33 @@
             FLAG_PREFETCH_DESCENDANTS_BREADTH_FIRST,
             FLAG_PREFETCH_UNINTERRUPTIBLE
     })
-    @Retention(RetentionPolicy.SOURCE)
     public @interface PrefetchingStrategy {}
 
+    // Service flags.
+
     /**
      * @see AccessibilityServiceInfo#FLAG_INCLUDE_NOT_IMPORTANT_VIEWS
      * @hide
      */
-    public static final int FLAG_SERVICE_REQUESTS_INCLUDE_NOT_IMPORTANT_VIEWS = 0x00000080;
+    public static final int FLAG_SERVICE_REQUESTS_INCLUDE_NOT_IMPORTANT_VIEWS = 1 << 7;
 
     /**
      * @see AccessibilityServiceInfo#FLAG_REPORT_VIEW_IDS
      * @hide
      */
-    public static final int FLAG_SERVICE_REQUESTS_REPORT_VIEW_IDS = 0x00000100;
+    public static final int FLAG_SERVICE_REQUESTS_REPORT_VIEW_IDS = 1 << 8;
 
     /**
      * @see AccessibilityServiceInfo#isAccessibilityTool()
      * @hide
      */
-    public static final int FLAG_SERVICE_IS_ACCESSIBILITY_TOOL = 0x00000200;
+    public static final int FLAG_SERVICE_IS_ACCESSIBILITY_TOOL = 1 << 9;
 
-    /** @hide */
+    /**
+     * Mask for all types of additional view data exposed to services.
+     *
+     * @hide
+     */
     public static final int FLAG_REPORT_MASK =
             FLAG_SERVICE_REQUESTS_INCLUDE_NOT_IMPORTANT_VIEWS
                     | FLAG_SERVICE_REQUESTS_REPORT_VIEW_IDS
@@ -250,46 +277,46 @@
     /**
      * Action that gives input focus to the node.
      */
-    public static final int ACTION_FOCUS =  0x00000001;
+    public static final int ACTION_FOCUS =  1 /* << 0 */;
 
     /**
      * Action that clears input focus of the node.
      */
-    public static final int ACTION_CLEAR_FOCUS = 0x00000002;
+    public static final int ACTION_CLEAR_FOCUS = 1 << 1;
 
     /**
      * Action that selects the node.
      */
-    public static final int ACTION_SELECT = 0x00000004;
+    public static final int ACTION_SELECT = 1 << 2;
 
     /**
      * Action that deselects the node.
      */
-    public static final int ACTION_CLEAR_SELECTION = 0x00000008;
+    public static final int ACTION_CLEAR_SELECTION = 1 << 3;
 
     /**
      * Action that clicks on the node info.
      *
      * See {@link AccessibilityAction#ACTION_CLICK}
      */
-    public static final int ACTION_CLICK = 0x00000010;
+    public static final int ACTION_CLICK = 1 << 4;
 
     /**
      * Action that long clicks on the node.
      *
      * <p>It does not support coordinate information for anchoring.</p>
      */
-    public static final int ACTION_LONG_CLICK = 0x00000020;
+    public static final int ACTION_LONG_CLICK = 1 << 5;
 
     /**
      * Action that gives accessibility focus to the node.
      */
-    public static final int ACTION_ACCESSIBILITY_FOCUS = 0x00000040;
+    public static final int ACTION_ACCESSIBILITY_FOCUS = 1 << 6;
 
     /**
      * Action that clears accessibility focus of the node.
      */
-    public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 0x00000080;
+    public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 1 << 7;
 
     /**
      * Action that requests to go to the next entity in this node's text
@@ -321,7 +348,7 @@
      * @see #MOVEMENT_GRANULARITY_PARAGRAPH
      * @see #MOVEMENT_GRANULARITY_PAGE
      */
-    public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 0x00000100;
+    public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 1 << 8;
 
     /**
      * Action that requests to go to the previous entity in this node's text
@@ -354,7 +381,7 @@
      * @see #MOVEMENT_GRANULARITY_PARAGRAPH
      * @see #MOVEMENT_GRANULARITY_PAGE
      */
-    public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 0x00000200;
+    public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 1 << 9;
 
     /**
      * Action to move to the next HTML element of a given type. For example, move
@@ -369,7 +396,7 @@
      * </code></pre></p>
      * </p>
      */
-    public static final int ACTION_NEXT_HTML_ELEMENT = 0x00000400;
+    public static final int ACTION_NEXT_HTML_ELEMENT = 1 << 10;
 
     /**
      * Action to move to the previous HTML element of a given type. For example, move
@@ -384,32 +411,32 @@
      * </code></pre></p>
      * </p>
      */
-    public static final int ACTION_PREVIOUS_HTML_ELEMENT = 0x00000800;
+    public static final int ACTION_PREVIOUS_HTML_ELEMENT = 1 << 11;
 
     /**
      * Action to scroll the node content forward.
      */
-    public static final int ACTION_SCROLL_FORWARD = 0x00001000;
+    public static final int ACTION_SCROLL_FORWARD = 1 << 12;
 
     /**
      * Action to scroll the node content backward.
      */
-    public static final int ACTION_SCROLL_BACKWARD = 0x00002000;
+    public static final int ACTION_SCROLL_BACKWARD = 1 << 13;
 
     /**
      * Action to copy the current selection to the clipboard.
      */
-    public static final int ACTION_COPY = 0x00004000;
+    public static final int ACTION_COPY = 1 << 14;
 
     /**
      * Action to paste the current clipboard content.
      */
-    public static final int ACTION_PASTE = 0x00008000;
+    public static final int ACTION_PASTE = 1 << 15;
 
     /**
      * Action to cut the current selection and place it to the clipboard.
      */
-    public static final int ACTION_CUT = 0x00010000;
+    public static final int ACTION_CUT = 1 << 16;
 
     /**
      * Action to set the selection. Performing this action with no arguments
@@ -430,22 +457,22 @@
      * @see #ACTION_ARGUMENT_SELECTION_START_INT
      * @see #ACTION_ARGUMENT_SELECTION_END_INT
      */
-    public static final int ACTION_SET_SELECTION = 0x00020000;
+    public static final int ACTION_SET_SELECTION = 1 << 17;
 
     /**
      * Action to expand an expandable node.
      */
-    public static final int ACTION_EXPAND = 0x00040000;
+    public static final int ACTION_EXPAND = 1 << 18;
 
     /**
      * Action to collapse an expandable node.
      */
-    public static final int ACTION_COLLAPSE = 0x00080000;
+    public static final int ACTION_COLLAPSE = 1 << 19;
 
     /**
      * Action to dismiss a dismissable node.
      */
-    public static final int ACTION_DISMISS = 0x00100000;
+    public static final int ACTION_DISMISS = 1 << 20;
 
     /**
      * Action that sets the text of the node. Performing the action without argument, using <code>
@@ -462,17 +489,30 @@
      *   info.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);
      * </code></pre></p>
      */
-    public static final int ACTION_SET_TEXT = 0x00200000;
+    public static final int ACTION_SET_TEXT = 1 << 21;
 
     /** @hide */
     public static final int LAST_LEGACY_STANDARD_ACTION = ACTION_SET_TEXT;
 
     /**
-     * Mask to see if the value is larger than the largest ACTION_ constant
+     * Mask to verify if a given value is a combination of the existing ACTION_ constants.
+     *
+     * The smallest possible action is 1, and the largest is 1 << 21, or {@link ACTION_SET_TEXT}. A
+     * node can have any combination of actions present, so a node's max action int is:
+     *
+     *   0000 0000 0011 1111 1111 1111 1111 1111
+     *
+     * Therefore, if an action has any of the following bits flipped, it will be invalid:
+     *
+     *   1111 1111 11-- ---- ---- ---- ---- ----
+     *
+     * This can be represented in hexadecimal as 0xFFC00000.
+     *
+     * @see AccessibilityNodeInfo#addAction(int)
      */
-    private static final int ACTION_TYPE_MASK = 0xFF000000;
+    private static final int INVALID_ACTIONS_MASK = 0xFFC00000;
 
-    // Action arguments
+    // Action arguments.
 
     /**
      * Argument for which movement granularity to be used when traversing the node text.
@@ -678,7 +718,7 @@
     public static final String ACTION_ARGUMENT_DIRECTION_INT =
             "android.view.accessibility.action.ARGUMENT_DIRECTION_INT";
 
-    // Focus types
+    // Focus types.
 
     /**
      * The input focus.
@@ -690,32 +730,34 @@
      */
     public static final int FOCUS_ACCESSIBILITY = 2;
 
-    // Movement granularities
+    // Movement granularities.
 
     /**
      * Movement granularity bit for traversing the text of a node by character.
      */
-    public static final int MOVEMENT_GRANULARITY_CHARACTER = 0x00000001;
+    public static final int MOVEMENT_GRANULARITY_CHARACTER = 1 /* << 0 */;
 
     /**
      * Movement granularity bit for traversing the text of a node by word.
      */
-    public static final int MOVEMENT_GRANULARITY_WORD = 0x00000002;
+    public static final int MOVEMENT_GRANULARITY_WORD = 1 << 1;
 
     /**
      * Movement granularity bit for traversing the text of a node by line.
      */
-    public static final int MOVEMENT_GRANULARITY_LINE = 0x00000004;
+    public static final int MOVEMENT_GRANULARITY_LINE = 1 << 2;
 
     /**
      * Movement granularity bit for traversing the text of a node by paragraph.
      */
-    public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 0x00000008;
+    public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 1 << 3;
 
     /**
      * Movement granularity bit for traversing the text of a node by page.
      */
-    public static final int MOVEMENT_GRANULARITY_PAGE = 0x00000010;
+    public static final int MOVEMENT_GRANULARITY_PAGE = 1 << 4;
+
+    // Extra data arguments.
 
     /**
      * Key used to request and locate extra data for text character location. This key requests that
@@ -746,7 +788,7 @@
 
     /**
      * Integer argument specifying the end index of the requested text location data. Must be
-     * positive and no larger than {@link #EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH}.
+     * positive and no larger than {@link #EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_MAX_LENGTH}.
      *
      * @see #EXTRA_DATA_TEXT_CHARACTER_LOCATION_KEY
      */
@@ -782,53 +824,53 @@
 
     // Boolean attributes.
 
-    private static final int BOOLEAN_PROPERTY_CHECKABLE = 0x00000001;
+    private static final int BOOLEAN_PROPERTY_CHECKABLE = 1 /* << 0 */;
 
-    private static final int BOOLEAN_PROPERTY_CHECKED = 0x00000002;
+    private static final int BOOLEAN_PROPERTY_CHECKED = 1 << 1;
 
-    private static final int BOOLEAN_PROPERTY_FOCUSABLE = 0x00000004;
+    private static final int BOOLEAN_PROPERTY_FOCUSABLE = 1 << 2;
 
-    private static final int BOOLEAN_PROPERTY_FOCUSED = 0x00000008;
+    private static final int BOOLEAN_PROPERTY_FOCUSED = 1 << 3;
 
-    private static final int BOOLEAN_PROPERTY_SELECTED = 0x00000010;
+    private static final int BOOLEAN_PROPERTY_SELECTED = 1 << 4;
 
-    private static final int BOOLEAN_PROPERTY_CLICKABLE = 0x00000020;
+    private static final int BOOLEAN_PROPERTY_CLICKABLE = 1 << 5;
 
-    private static final int BOOLEAN_PROPERTY_LONG_CLICKABLE = 0x00000040;
+    private static final int BOOLEAN_PROPERTY_LONG_CLICKABLE = 1 << 6;
 
-    private static final int BOOLEAN_PROPERTY_ENABLED = 0x00000080;
+    private static final int BOOLEAN_PROPERTY_ENABLED = 1 << 7;
 
-    private static final int BOOLEAN_PROPERTY_PASSWORD = 0x00000100;
+    private static final int BOOLEAN_PROPERTY_PASSWORD = 1 << 8;
 
-    private static final int BOOLEAN_PROPERTY_SCROLLABLE = 0x00000200;
+    private static final int BOOLEAN_PROPERTY_SCROLLABLE = 1 << 9;
 
-    private static final int BOOLEAN_PROPERTY_ACCESSIBILITY_FOCUSED = 0x00000400;
+    private static final int BOOLEAN_PROPERTY_ACCESSIBILITY_FOCUSED = 1 << 10;
 
-    private static final int BOOLEAN_PROPERTY_VISIBLE_TO_USER = 0x00000800;
+    private static final int BOOLEAN_PROPERTY_VISIBLE_TO_USER = 1 << 11;
 
-    private static final int BOOLEAN_PROPERTY_EDITABLE = 0x00001000;
+    private static final int BOOLEAN_PROPERTY_EDITABLE = 1 << 12;
 
-    private static final int BOOLEAN_PROPERTY_OPENS_POPUP = 0x00002000;
+    private static final int BOOLEAN_PROPERTY_OPENS_POPUP = 1 << 13;
 
-    private static final int BOOLEAN_PROPERTY_DISMISSABLE = 0x00004000;
+    private static final int BOOLEAN_PROPERTY_DISMISSABLE = 1 << 14;
 
-    private static final int BOOLEAN_PROPERTY_MULTI_LINE = 0x00008000;
+    private static final int BOOLEAN_PROPERTY_MULTI_LINE = 1 << 15;
 
-    private static final int BOOLEAN_PROPERTY_CONTENT_INVALID = 0x00010000;
+    private static final int BOOLEAN_PROPERTY_CONTENT_INVALID = 1 << 16;
 
-    private static final int BOOLEAN_PROPERTY_CONTEXT_CLICKABLE = 0x00020000;
+    private static final int BOOLEAN_PROPERTY_CONTEXT_CLICKABLE = 1 << 17;
 
-    private static final int BOOLEAN_PROPERTY_IMPORTANCE = 0x0040000;
+    private static final int BOOLEAN_PROPERTY_IMPORTANCE = 1 << 18;
 
-    private static final int BOOLEAN_PROPERTY_SCREEN_READER_FOCUSABLE = 0x0080000;
+    private static final int BOOLEAN_PROPERTY_SCREEN_READER_FOCUSABLE = 1 << 19;
 
-    private static final int BOOLEAN_PROPERTY_IS_SHOWING_HINT = 0x0100000;
+    private static final int BOOLEAN_PROPERTY_IS_SHOWING_HINT = 1 << 20;
 
-    private static final int BOOLEAN_PROPERTY_IS_HEADING = 0x0200000;
+    private static final int BOOLEAN_PROPERTY_IS_HEADING = 1 << 21;
 
-    private static final int BOOLEAN_PROPERTY_IS_TEXT_ENTRY_KEY = 0x0400000;
+    private static final int BOOLEAN_PROPERTY_IS_TEXT_ENTRY_KEY = 1 << 22;
 
-    private static final int BOOLEAN_PROPERTY_IS_TEXT_SELECTABLE = 0x0800000;
+    private static final int BOOLEAN_PROPERTY_IS_TEXT_SELECTABLE = 1 << 23;
 
     private static final int BOOLEAN_PROPERTY_REQUEST_INITIAL_ACCESSIBILITY_FOCUS = 1 << 24;
 
@@ -1528,7 +1570,7 @@
     public void addAction(int action) {
         enforceNotSealed();
 
-        if ((action & ACTION_TYPE_MASK) != 0) {
+        if ((action & INVALID_ACTIONS_MASK) != 0) {
             throw new IllegalArgumentException("Action is not a combination of the standard " +
                     "actions: " + action);
         }
@@ -6466,7 +6508,7 @@
         /**
          * @see android.os.Parcelable.Creator
          */
-        public static final @android.annotation.NonNull Parcelable.Creator<TouchDelegateInfo> CREATOR =
+        public static final @NonNull Parcelable.Creator<TouchDelegateInfo> CREATOR =
                 new Parcelable.Creator<TouchDelegateInfo>() {
             @Override
             public TouchDelegateInfo createFromParcel(Parcel parcel) {
@@ -6638,7 +6680,7 @@
     /**
      * @see android.os.Parcelable.Creator
      */
-    public static final @android.annotation.NonNull Parcelable.Creator<AccessibilityNodeInfo> CREATOR =
+    public static final @NonNull Parcelable.Creator<AccessibilityNodeInfo> CREATOR =
             new Parcelable.Creator<AccessibilityNodeInfo>() {
         @Override
         public AccessibilityNodeInfo createFromParcel(Parcel parcel) {
diff --git a/core/java/android/view/accessibility/AccessibilityRecord.java b/core/java/android/view/accessibility/AccessibilityRecord.java
index d69c781..7f8926d 100644
--- a/core/java/android/view/accessibility/AccessibilityRecord.java
+++ b/core/java/android/view/accessibility/AccessibilityRecord.java
@@ -66,13 +66,13 @@
 
     private static final int UNDEFINED = -1;
 
-    private static final int PROPERTY_CHECKED = 0x00000001;
-    private static final int PROPERTY_ENABLED = 0x00000002;
-    private static final int PROPERTY_PASSWORD = 0x00000004;
-    private static final int PROPERTY_FULL_SCREEN = 0x00000080;
-    private static final int PROPERTY_SCROLLABLE = 0x00000100;
-    private static final int PROPERTY_IMPORTANT_FOR_ACCESSIBILITY = 0x00000200;
-    private static final int PROPERTY_ACCESSIBILITY_DATA_SENSITIVE = 0x00000400;
+    private static final int PROPERTY_CHECKED = 1 /* << 0 */;
+    private static final int PROPERTY_ENABLED = 1 << 1;
+    private static final int PROPERTY_PASSWORD = 1 << 2;
+    private static final int PROPERTY_FULL_SCREEN = 1 << 7;
+    private static final int PROPERTY_SCROLLABLE = 1 << 8;
+    private static final int PROPERTY_IMPORTANT_FOR_ACCESSIBILITY = 1 << 9;
+    private static final int PROPERTY_ACCESSIBILITY_DATA_SENSITIVE = 1 << 10;
 
     private static final int GET_SOURCE_PREFETCH_FLAGS =
             AccessibilityNodeInfo.FLAG_PREFETCH_ANCESTORS
@@ -198,8 +198,7 @@
      *
      * @see AccessibilityNodeInfo#getParent(int) for a description of prefetching.
      */
-    @Nullable
-    public AccessibilityNodeInfo getSource(
+    public @Nullable AccessibilityNodeInfo getSource(
             @AccessibilityNodeInfo.PrefetchingStrategy int prefetchingStrategy) {
         enforceSealed();
         if ((mConnectionId == UNDEFINED)
diff --git a/core/java/android/view/accessibility/TEST_MAPPING b/core/java/android/view/accessibility/TEST_MAPPING
index 9b1b677..1c67399 100644
--- a/core/java/android/view/accessibility/TEST_MAPPING
+++ b/core/java/android/view/accessibility/TEST_MAPPING
@@ -1,56 +1,7 @@
 {
-  "presubmit": [
+  "imports": [
     {
-      "name": "CtsAccessibilityServiceTestCases",
-      "options": [
-        {
-          "include-annotation": "android.platform.test.annotations.Presubmit"
-        },
-        {
-          "exclude-annotation": "android.support.test.filters.FlakyTest"
-        }
-      ]
-    },
-    {
-      "name": "CtsUiAutomationTestCases",
-      "options": [
-        {
-          "include-annotation": "android.platform.test.annotations.Presubmit"
-        },
-        {
-          "exclude-annotation": "android.support.test.filters.FlakyTest"
-        }
-      ]
-    },
-    {
-      "name": "FrameworksCoreTests",
-      "options": [
-        {
-          "include-filter": "android.view.accessibility"
-        },
-        {
-          "exclude-annotation": "androidx.test.filters.FlakyTest"
-        }
-      ]
-    }
-  ],
-  "postsubmit": [
-    {
-      "name": "CtsAccessibilityServiceSdk29TestCases"
-    },
-    {
-      "name": "CtsAccessibilityServiceTestCases"
-    },
-    {
-      "name": "CtsUiAutomationTestCases"
-    },
-    {
-      "name": "FrameworksCoreTests",
-      "options": [
-        {
-          "include-filter": "android.view.accessibility"
-        }
-      ]
+      "path": "frameworks/base/services/accessibility/TEST_MAPPING"
     }
   ]
 }
diff --git a/core/java/android/view/autofill/AutofillManager.java b/core/java/android/view/autofill/AutofillManager.java
index f7b7d33..197fba7 100644
--- a/core/java/android/view/autofill/AutofillManager.java
+++ b/core/java/android/view/autofill/AutofillManager.java
@@ -2345,10 +2345,7 @@
      *
      * @param executor specifies the thread upon which the callbacks will be invoked.
      * @param callback which handles autofill request to provide client's suggestions.
-     *
-     * @hide
      */
-    @TestApi
     @RequiresPermission(PROVIDE_OWN_AUTOFILL_SUGGESTIONS)
     public void setAutofillRequestCallback(@NonNull @CallbackExecutor Executor executor,
             @NonNull AutofillRequestCallback callback) {
@@ -2365,10 +2362,7 @@
 
     /**
      * clears the client's suggestions callback for autofill.
-     *
-     * @hide
      */
-    @TestApi
     public void clearAutofillRequestCallback() {
         synchronized (mLock) {
             mRequestCallbackExecutor = null;
diff --git a/core/java/android/view/autofill/AutofillRequestCallback.java b/core/java/android/view/autofill/AutofillRequestCallback.java
index 10a088b..e632a58 100644
--- a/core/java/android/view/autofill/AutofillRequestCallback.java
+++ b/core/java/android/view/autofill/AutofillRequestCallback.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.annotation.TestApi;
 import android.os.CancellationSignal;
 import android.service.autofill.FillCallback;
 import android.view.inputmethod.InlineSuggestionsRequest;
@@ -56,10 +55,7 @@
  *
  * <P>IMPORTANT: This should not be used for displaying anything other than input suggestions, or
  * the keyboard may choose to block your app from the inline strip.
- *
- * @hide
  */
-@TestApi
 public interface AutofillRequestCallback {
     /**
      * Called by the Android system to decide if a screen can be autofilled by the callback.
diff --git a/core/java/android/view/contentcapture/MainContentCaptureSession.java b/core/java/android/view/contentcapture/MainContentCaptureSession.java
index 8cff066..7c0e5ad 100644
--- a/core/java/android/view/contentcapture/MainContentCaptureSession.java
+++ b/core/java/android/view/contentcapture/MainContentCaptureSession.java
@@ -740,7 +740,8 @@
         // Since the same CharSequence instance may be reused in the TextView, we need to make
         // a copy of its content so that its value will not be changed by subsequent updates
         // in the TextView.
-        final CharSequence eventText = stringOrSpannedStringWithoutNoCopySpans(text);
+        final CharSequence eventText =
+                TextUtils.trimToParcelableSize(stringOrSpannedStringWithoutNoCopySpans(text));
 
         final int composingStart;
         final int composingEnd;
diff --git a/core/java/android/view/contentcapture/ViewNode.java b/core/java/android/view/contentcapture/ViewNode.java
index 1762a58..044a31f 100644
--- a/core/java/android/view/contentcapture/ViewNode.java
+++ b/core/java/android/view/contentcapture/ViewNode.java
@@ -1052,14 +1052,21 @@
         }
 
         void writeToParcel(Parcel out, boolean simple) {
-            TextUtils.writeToParcel(mText, out, 0);
+            CharSequence text = TextUtils.trimToParcelableSize(mText);
+            TextUtils.writeToParcel(text, out, 0);
             out.writeFloat(mTextSize);
             out.writeInt(mTextStyle);
             out.writeInt(mTextColor);
             if (!simple) {
+                int selectionStart = text != null
+                        ? Math.min(mTextSelectionStart, text.length())
+                        : mTextSelectionStart;
+                int selectionEnd = text != null
+                        ? Math.min(mTextSelectionEnd, text.length())
+                        : mTextSelectionEnd;
                 out.writeInt(mTextBackgroundColor);
-                out.writeInt(mTextSelectionStart);
-                out.writeInt(mTextSelectionEnd);
+                out.writeInt(selectionStart);
+                out.writeInt(selectionEnd);
                 out.writeIntArray(mLineCharOffsets);
                 out.writeIntArray(mLineBaselines);
                 out.writeString(mHint);
diff --git a/core/java/android/view/inputmethod/InlineSuggestionsRequest.java b/core/java/android/view/inputmethod/InlineSuggestionsRequest.java
index 77a2b5b..70279cc 100644
--- a/core/java/android/view/inputmethod/InlineSuggestionsRequest.java
+++ b/core/java/android/view/inputmethod/InlineSuggestionsRequest.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.annotation.TestApi;
 import android.app.ActivityThread;
 import android.app.compat.CompatChanges;
 import android.compat.annotation.ChangeId;
@@ -701,10 +700,7 @@
          * provides the input view.
          *
          * Note: The default value is {@code true}.
-         *
-         * @hide
          */
-        @TestApi
         @DataClass.Generated.Member
         public @NonNull Builder setServiceSupported(boolean value) {
             checkNotUsed();
@@ -718,10 +714,7 @@
          * input view.
          *
          * Note: The default value is {@code true}.
-         *
-         * @hide
          */
-        @TestApi
         @DataClass.Generated.Member
         public @NonNull Builder setClientSupported(boolean value) {
             checkNotUsed();
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 34fe935..f4a0a62 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -13621,7 +13621,8 @@
     @Nullable
     public AutofillValue getAutofillValue() {
         if (isTextEditable()) {
-            final CharSequence text = TextUtils.trimToParcelableSize(getText());
+            final CharSequence text =
+                    TextUtils.trimToParcelableSize(TextUtils.trimNoCopySpans(getText()));
             return AutofillValue.forText(text);
         }
         return null;
diff --git a/core/java/com/android/internal/accessibility/TEST_MAPPING b/core/java/com/android/internal/accessibility/TEST_MAPPING
new file mode 100644
index 0000000..1c67399
--- /dev/null
+++ b/core/java/com/android/internal/accessibility/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "imports": [
+    {
+      "path": "frameworks/base/services/accessibility/TEST_MAPPING"
+    }
+  ]
+}
diff --git a/core/java/com/android/internal/app/IAppOpsService.aidl b/core/java/com/android/internal/app/IAppOpsService.aidl
index 88447da..d63611f 100644
--- a/core/java/com/android/internal/app/IAppOpsService.aidl
+++ b/core/java/com/android/internal/app/IAppOpsService.aidl
@@ -81,12 +81,19 @@
     void getHistoricalOpsFromDiskRaw(int uid, String packageName, String attributionTag,
             in List<String> ops, int historyFlags, int filter, long beginTimeMillis,
             long endTimeMillis, int flags, in RemoteCallback callback);
+    @EnforcePermission("MANAGE_APPOPS")
     void offsetHistory(long duration);
+    @EnforcePermission("MANAGE_APPOPS")
     void setHistoryParameters(int mode, long baseSnapshotInterval, int compressionStep);
+    @EnforcePermission("MANAGE_APPOPS")
     void addHistoricalOps(in AppOpsManager.HistoricalOps ops);
+    @EnforcePermission("MANAGE_APPOPS")
     void resetHistoryParameters();
+    @EnforcePermission("MANAGE_APPOPS")
     void resetPackageOpsNoHistory(String packageName);
+    @EnforcePermission("MANAGE_APPOPS")
     void clearHistory();
+    @EnforcePermission("MANAGE_APPOPS")
     void rebootHistory(long offlineDurationMillis);
     List<AppOpsManager.PackageOps> getUidOps(int uid, in int[] ops);
     void setUidMode(int code, int uid, int mode);
diff --git a/core/java/com/android/internal/os/TimeoutRecord.java b/core/java/com/android/internal/os/TimeoutRecord.java
index a0e2934..1d0ba3f 100644
--- a/core/java/com/android/internal/os/TimeoutRecord.java
+++ b/core/java/com/android/internal/os/TimeoutRecord.java
@@ -151,7 +151,11 @@
 
     /** Record for a service exec timeout. */
     @NonNull
-    public static TimeoutRecord forServiceExec(@NonNull String reason) {
+    public static TimeoutRecord forServiceExec(@NonNull String shortInstanceName,
+            long timeoutDurationMs) {
+        String reason =
+                "executing service " + shortInstanceName + ", waited "
+                        + timeoutDurationMs + "ms";
         return TimeoutRecord.endingNow(TimeoutKind.SERVICE_EXEC, reason);
     }
 
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
index fbad4b9..fc2a36f 100644
--- a/core/java/com/android/internal/widget/LockPatternUtils.java
+++ b/core/java/com/android/internal/widget/LockPatternUtils.java
@@ -1094,13 +1094,6 @@
     }
 
     /**
-     * Set whether the visible password is enabled for cryptkeeper screen.
-     */
-    public void setVisiblePasswordEnabled(boolean enabled, int userId) {
-        // No longer does anything.
-    }
-
-    /**
      * Set and store the lockout deadline, meaning the user can't attempt their unlock
      * pattern until the deadline has passed.
      * @return the chosen deadline.
diff --git a/core/java/com/android/internal/widget/LockPatternView.java b/core/java/com/android/internal/widget/LockPatternView.java
index fc5da13..0dc9712 100644
--- a/core/java/com/android/internal/widget/LockPatternView.java
+++ b/core/java/com/android/internal/widget/LockPatternView.java
@@ -80,15 +80,21 @@
     private static final int DOT_ACTIVATION_DURATION_MILLIS = 50;
     private static final int DOT_RADIUS_INCREASE_DURATION_MILLIS = 96;
     private static final int DOT_RADIUS_DECREASE_DURATION_MILLIS = 192;
+    private static final int ALPHA_MAX_VALUE = 255;
     private static final float MIN_DOT_HIT_FACTOR = 0.2f;
     private final CellState[][] mCellStates;
 
+    private static final int CELL_ACTIVATE = 0;
+    private static final int CELL_DEACTIVATE = 1;
+
     private final int mDotSize;
     private final int mDotSizeActivated;
     private final float mDotHitFactor;
     private final int mPathWidth;
     private final int mLineFadeOutAnimationDurationMs;
     private final int mLineFadeOutAnimationDelayMs;
+    private final int mFadePatternAnimationDurationMs;
+    private final int mFadePatternAnimationDelayMs;
 
     private boolean mDrawingProfilingStarted = false;
 
@@ -145,6 +151,10 @@
     private boolean mPatternInProgress = false;
     private boolean mFadePattern = true;
 
+    private boolean mFadeClear = false;
+    private int mFadeAnimationAlpha = ALPHA_MAX_VALUE;
+    private final Path mPatternPath = new Path();
+
     @UnsupportedAppUsage
     private float mSquareWidth;
     @UnsupportedAppUsage
@@ -162,9 +172,11 @@
     private int mSuccessColor;
     private int mDotColor;
     private int mDotActivatedColor;
+    private boolean mKeepDotActivated;
 
     private final Interpolator mFastOutSlowInInterpolator;
     private final Interpolator mLinearOutSlowInInterpolator;
+    private final Interpolator mStandardAccelerateInterpolator;
     private final PatternExploreByTouchHelper mExploreByTouchHelper;
 
     private Drawable mSelectedDrawable;
@@ -335,6 +347,7 @@
         mSuccessColor = a.getColor(R.styleable.LockPatternView_successColor, 0);
         mDotColor = a.getColor(R.styleable.LockPatternView_dotColor, mRegularColor);
         mDotActivatedColor = a.getColor(R.styleable.LockPatternView_dotActivatedColor, mDotColor);
+        mKeepDotActivated = a.getBoolean(R.styleable.LockPatternView_keepDotActivated, false);
 
         int pathColor = a.getColor(R.styleable.LockPatternView_pathColor, mRegularColor);
         mPathPaint.setColor(pathColor);
@@ -351,6 +364,11 @@
         mLineFadeOutAnimationDelayMs =
             getResources().getInteger(R.integer.lock_pattern_line_fade_out_delay);
 
+        mFadePatternAnimationDurationMs =
+                getResources().getInteger(R.integer.lock_pattern_fade_pattern_duration);
+        mFadePatternAnimationDelayMs =
+                getResources().getInteger(R.integer.lock_pattern_fade_pattern_delay);
+
         mDotSize = getResources().getDimensionPixelSize(R.dimen.lock_pattern_dot_size);
         mDotSizeActivated = getResources().getDimensionPixelSize(
                 R.dimen.lock_pattern_dot_size_activated);
@@ -381,6 +399,8 @@
                 AnimationUtils.loadInterpolator(context, android.R.interpolator.fast_out_slow_in);
         mLinearOutSlowInInterpolator =
                 AnimationUtils.loadInterpolator(context, android.R.interpolator.linear_out_slow_in);
+        mStandardAccelerateInterpolator =
+                AnimationUtils.loadInterpolator(context, android.R.interpolator.fast_out_linear_in);
         mExploreByTouchHelper = new PatternExploreByTouchHelper(this);
         setAccessibilityDelegate(mExploreByTouchHelper);
 
@@ -621,6 +641,15 @@
         resetPattern();
     }
 
+    /**
+     * Clear the pattern by fading it out.
+     */
+    @UnsupportedAppUsage
+    public void fadeClearPattern() {
+        mFadeClear = true;
+        startFadePatternAnimation();
+    }
+
     @Override
     protected boolean dispatchHoverEvent(MotionEvent event) {
         // Dispatch to onHoverEvent first so mPatternInProgress is up to date when the
@@ -634,12 +663,26 @@
      * Reset all pattern state.
      */
     private void resetPattern() {
+        if (mKeepDotActivated && !mPattern.isEmpty()) {
+            resetLastActivatedCellProgress();
+        }
         mPattern.clear();
+        mPatternPath.reset();
         clearPatternDrawLookup();
         mPatternDisplayMode = DisplayMode.Correct;
         invalidate();
     }
 
+    private void resetLastActivatedCellProgress() {
+        final ArrayList<Cell> pattern = mPattern;
+        final Cell lastCell = pattern.get(pattern.size() - 1);
+        final CellState cellState = mCellStates[lastCell.row][lastCell.column];
+        if (cellState.activationAnimator != null) {
+            cellState.activationAnimator.cancel();
+        }
+        cellState.activationAnimationProgress = 0f;
+    }
+
     /**
      * If there are any cells being drawn.
      */
@@ -748,8 +791,9 @@
             // check for gaps in existing pattern
             Cell fillInGapCell = null;
             final ArrayList<Cell> pattern = mPattern;
+            Cell lastCell = null;
             if (!pattern.isEmpty()) {
-                final Cell lastCell = pattern.get(pattern.size() - 1);
+                lastCell = pattern.get(pattern.size() - 1);
                 int dRow = cell.row - lastCell.row;
                 int dColumn = cell.column - lastCell.column;
 
@@ -770,7 +814,15 @@
             if (fillInGapCell != null &&
                     !mPatternDrawLookup[fillInGapCell.row][fillInGapCell.column]) {
                 addCellToPattern(fillInGapCell);
+                if (mKeepDotActivated) {
+                    startCellDeactivatedAnimation(fillInGapCell);
+                }
             }
+
+            if (mKeepDotActivated && lastCell != null) {
+                startCellDeactivatedAnimation(lastCell);
+            }
+
             addCellToPattern(cell);
             performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY,
                     HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
@@ -788,7 +840,42 @@
         notifyCellAdded();
     }
 
+    private void startFadePatternAnimation() {
+        AnimatorSet animatorSet = new AnimatorSet();
+        animatorSet.play(createFadePatternAnimation());
+        animatorSet.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                mFadeAnimationAlpha = ALPHA_MAX_VALUE;
+                mFadeClear = false;
+                resetPattern();
+            }
+        });
+        animatorSet.start();
+
+    }
+
+    private Animator createFadePatternAnimation() {
+        ValueAnimator valueAnimator = ValueAnimator.ofInt(ALPHA_MAX_VALUE, 0);
+        valueAnimator.addUpdateListener(animation -> {
+            mFadeAnimationAlpha = (int) animation.getAnimatedValue();
+            invalidate();
+        });
+        valueAnimator.setInterpolator(mStandardAccelerateInterpolator);
+        valueAnimator.setStartDelay(mFadePatternAnimationDelayMs);
+        valueAnimator.setDuration(mFadePatternAnimationDurationMs);
+        return valueAnimator;
+    }
+
     private void startCellActivatedAnimation(Cell cell) {
+        startCellActivationAnimation(cell, CELL_ACTIVATE);
+    }
+
+    private void startCellDeactivatedAnimation(Cell cell) {
+        startCellActivationAnimation(cell, CELL_DEACTIVATE);
+    }
+
+    private void startCellActivationAnimation(Cell cell, int activate) {
         final CellState cellState = mCellStates[cell.row][cell.column];
 
         if (cellState.activationAnimator != null) {
@@ -803,7 +890,7 @@
             animatorSetBuilder.with(createDotRadiusAnimation(cellState));
         }
         if (mDotColor != mDotActivatedColor) {
-            animatorSetBuilder.with(createDotActivationColorAnimation(cellState));
+            animatorSetBuilder.with(createDotActivationColorAnimation(cellState, activate));
         }
 
         animatorSet.addListener(new AnimatorListenerAdapter() {
@@ -817,7 +904,7 @@
         animatorSet.start();
     }
 
-    private Animator createDotActivationColorAnimation(CellState cellState) {
+    private Animator createDotActivationColorAnimation(CellState cellState, int activate) {
         ValueAnimator.AnimatorUpdateListener updateListener =
                 valueAnimator -> {
                     cellState.activationAnimationProgress =
@@ -835,10 +922,17 @@
         activateAnimator.setDuration(DOT_ACTIVATION_DURATION_MILLIS);
         deactivateAnimator.setDuration(DOT_ACTIVATION_DURATION_MILLIS);
         AnimatorSet set = new AnimatorSet();
-        set.play(deactivateAnimator)
-                .after(mLineFadeOutAnimationDelayMs + mLineFadeOutAnimationDurationMs
-                        - DOT_ACTIVATION_DURATION_MILLIS * 2)
-                .after(activateAnimator);
+
+        if (mKeepDotActivated) {
+            set.play(activate == CELL_ACTIVATE ? activateAnimator : deactivateAnimator);
+        } else {
+            // 'activate' ignored in this case, do full deactivate -> activate cycle
+            set.play(deactivateAnimator)
+                    .after(mLineFadeOutAnimationDelayMs + mLineFadeOutAnimationDurationMs
+                            - DOT_ACTIVATION_DURATION_MILLIS * 2)
+                    .after(activateAnimator);
+        }
+
         return set;
     }
 
@@ -1055,6 +1149,9 @@
         if (!mPattern.isEmpty()) {
             setPatternInProgress(false);
             cancelLineAnimations();
+            if (mKeepDotActivated) {
+                deactivateLastCell();
+            }
             notifyPatternDetected();
             // Also clear pattern if fading is enabled
             if (mFadePattern) {
@@ -1071,6 +1168,11 @@
         }
     }
 
+    private void deactivateLastCell() {
+        Cell lastCell = mPattern.get(mPattern.size() - 1);
+        startCellDeactivatedAnimation(lastCell);
+    }
+
     private void cancelLineAnimations() {
         for (int i = 0; i < 3; i++) {
             for (int j = 0; j < 3; j++) {
@@ -1079,9 +1181,9 @@
                     state.activationAnimator.cancel();
                     state.activationAnimator = null;
                     state.radius = mDotSize / 2f;
-                    state.activationAnimationProgress = 0f;
                     state.lineEndX = Float.MIN_VALUE;
                     state.lineEndY = Float.MIN_VALUE;
+                    state.activationAnimationProgress = 0f;
                 }
             }
         }
@@ -1197,14 +1299,14 @@
         // draw the path of the pattern (unless we are in stealth mode)
         final boolean drawPath = !mInStealthMode;
 
-        if (drawPath) {
+        if (drawPath && !mFadeClear) {
             mPathPaint.setColor(getCurrentColor(true /* partOfPattern */));
 
             boolean anyCircles = false;
             float lastX = 0f;
             float lastY = 0f;
             long elapsedRealtime = SystemClock.elapsedRealtime();
-           for (int i = 0; i < count; i++) {
+            for (int i = 0; i < count; i++) {
                 Cell cell = pattern.get(i);
 
                 // only draw the part of the pattern stored in
@@ -1235,6 +1337,11 @@
                     }
                     drawLineSegment(canvas, /* startX = */ lastX, /* startY = */ lastY, endX, endY,
                             mLineFadeStart[i], elapsedRealtime);
+
+                    Path tempPath = new Path();
+                    tempPath.moveTo(lastX, lastY);
+                    tempPath.lineTo(centerX, centerY);
+                    mPatternPath.addPath(tempPath);
                 }
                 lastX = centerX;
                 lastY = centerY;
@@ -1253,6 +1360,11 @@
             }
         }
 
+        if (mFadeClear) {
+            mPathPaint.setAlpha(mFadeAnimationAlpha);
+            canvas.drawPath(mPatternPath, mPathPaint);
+        }
+
         // draw the circles
         for (int i = 0; i < 3; i++) {
             float centerY = getCenterYForRow(i);
diff --git a/core/jni/android_content_res_ApkAssets.cpp b/core/jni/android_content_res_ApkAssets.cpp
index e9ada23..6fc0519 100644
--- a/core/jni/android_content_res_ApkAssets.cpp
+++ b/core/jni/android_content_res_ApkAssets.cpp
@@ -74,17 +74,37 @@
   FORMAT_DIRECTORY = 3,
 };
 
-Guarded<std::unique_ptr<const ApkAssets>>& ApkAssetsFromLong(jlong ptr) {
-    return *reinterpret_cast<Guarded<std::unique_ptr<const ApkAssets>>*>(ptr);
+Guarded<AssetManager2::ApkAssetsPtr>& ApkAssetsFromLong(jlong ptr) {
+  return *reinterpret_cast<Guarded<AssetManager2::ApkAssetsPtr>*>(ptr);
 }
 
-static jlong CreateGuardedApkAssets(std::unique_ptr<const ApkAssets> assets) {
-    auto guarded_assets = new Guarded<std::unique_ptr<const ApkAssets>>(std::move(assets));
-    return reinterpret_cast<jlong>(guarded_assets);
+static jlong CreateGuardedApkAssets(AssetManager2::ApkAssetsPtr assets) {
+  auto guarded_assets = new Guarded<AssetManager2::ApkAssetsPtr>(std::move(assets));
+  return reinterpret_cast<jlong>(guarded_assets);
 }
 
-static void DeleteGuardedApkAssets(Guarded<std::unique_ptr<const ApkAssets>>& apk_assets) {
-    delete &apk_assets;
+static void DeleteGuardedApkAssets(Guarded<AssetManager2::ApkAssetsPtr>& apk_assets) {
+  apk_assets.safeDelete([&apk_assets](AssetManager2::ApkAssetsPtr* assets) {
+    if (!assets) {
+      ALOGE("ApkAssets: Double delete of native assets object %p, ignored", &apk_assets);
+    } else if (!*assets) {
+      ALOGE("ApkAssets: Empty native assets pointer in native assets object %p", &apk_assets);
+    } else {
+      // |RefBase| increments |StrongCount| for each |sp<>| instance, and |WeakCount| for
+      // both |sp<>| and |wp<>| instances. This means the actual |wp<>| instance count
+      // is |WeakCount - StrongCount|.
+      const auto useCount = (*assets)->getStrongCount();
+      const auto weakCount = (*assets)->getWeakRefs()->getWeakCount() - useCount;
+      if (useCount > 1) {
+        ALOGE("ApkAssets: Deleting an object '%s' with %d > 1 strong and %d weak references",
+              (*assets)->GetDebugName().c_str(), int(useCount), int(weakCount));
+      } else if (weakCount > 0) {
+        ALOGE("ApkAssets: Deleting an ApkAssets object '%s' with %d weak references",
+              (*assets)->GetDebugName().c_str(), int(weakCount));
+      }
+    }
+  });
+  delete &apk_assets;
 }
 
 class LoaderAssetsProvider : public AssetsProvider {
@@ -209,7 +229,7 @@
   ATRACE_NAME(base::StringPrintf("LoadApkAssets(%s)", path.c_str()).c_str());
 
   auto loader_assets = LoaderAssetsProvider::Create(env, assets_provider);
-  std::unique_ptr<ApkAssets> apk_assets;
+  AssetManager2::ApkAssetsPtr apk_assets;
   switch (format) {
     case FORMAT_APK: {
         auto assets = MultiAssetsProvider::Create(std::move(loader_assets),
@@ -269,7 +289,7 @@
   }
 
   auto loader_assets = LoaderAssetsProvider::Create(env, assets_provider);
-  std::unique_ptr<const ApkAssets> apk_assets;
+  AssetManager2::ApkAssetsPtr apk_assets;
   switch (format) {
     case FORMAT_APK: {
         auto assets =
@@ -336,7 +356,7 @@
   }
 
   auto loader_assets = LoaderAssetsProvider::Create(env, assets_provider);
-  std::unique_ptr<const ApkAssets> apk_assets;
+  AssetManager2::ApkAssetsPtr apk_assets;
   switch (format) {
     case FORMAT_APK: {
         auto assets =
@@ -374,11 +394,17 @@
 
 static jlong NativeLoadEmpty(JNIEnv* env, jclass /*clazz*/, jint flags, jobject assets_provider) {
   auto apk_assets = ApkAssets::Load(LoaderAssetsProvider::Create(env, assets_provider), flags);
+  if (apk_assets == nullptr) {
+    const std::string error_msg =
+        base::StringPrintf("Failed to load empty assets with provider %p", (void*)assets_provider);
+    jniThrowException(env, "java/io/IOException", error_msg.c_str());
+    return 0;
+  }
   return CreateGuardedApkAssets(std::move(apk_assets));
 }
 
 static void NativeDestroy(JNIEnv* /*env*/, jclass /*clazz*/, jlong ptr) {
-    DeleteGuardedApkAssets(ApkAssetsFromLong(ptr));
+  DeleteGuardedApkAssets(ApkAssetsFromLong(ptr));
 }
 
 static jstring NativeGetAssetPath(JNIEnv* env, jclass /*clazz*/, jlong ptr) {
diff --git a/core/jni/android_content_res_ApkAssets.h b/core/jni/android_content_res_ApkAssets.h
index 7e525dc..8159a53 100644
--- a/core/jni/android_content_res_ApkAssets.h
+++ b/core/jni/android_content_res_ApkAssets.h
@@ -18,13 +18,13 @@
 #define ANDROID_CONTENT_RES_APKASSETS_H
 
 #include "androidfw/ApkAssets.h"
+#include "androidfw/AssetManager2.h"
 #include "androidfw/MutexGuard.h"
-
 #include "jni.h"
 
 namespace android {
 
-Guarded<std::unique_ptr<const ApkAssets>>& ApkAssetsFromLong(jlong ptr);
+Guarded<AssetManager2::ApkAssetsPtr>& ApkAssetsFromLong(jlong ptr);
 
 } // namespace android
 
diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp
index a2205eb..e46a0e0 100644
--- a/core/jni/android_util_AssetManager.cpp
+++ b/core/jni/android_util_AssetManager.cpp
@@ -296,7 +296,7 @@
   ATRACE_NAME("AssetManager::SetApkAssets");
 
   const jsize apk_assets_len = env->GetArrayLength(apk_assets_array);
-  std::vector<const ApkAssets*> apk_assets;
+  std::vector<AssetManager2::ApkAssetsPtr> apk_assets;
   apk_assets.reserve(apk_assets_len);
   for (jsize i = 0; i < apk_assets_len; i++) {
     jobject obj = env->GetObjectArrayElement(apk_assets_array, i);
@@ -310,9 +310,14 @@
     if (env->ExceptionCheck()) {
       return;
     }
-
+    if (!apk_assets_native_ptr) {
+      ALOGE("Got a closed ApkAssets instance at index %d for AssetManager %p", i, (void*)ptr);
+      std::string msg = StringPrintf("ApkAssets at index %d is closed, native pointer is null", i);
+      jniThrowException(env, "java/lang/IllegalArgumentException", msg.c_str());
+      return;
+    }
     auto scoped_assets = ScopedLock(ApkAssetsFromLong(apk_assets_native_ptr));
-    apk_assets.push_back(scoped_assets->get());
+    apk_assets.emplace_back(*scoped_assets);
   }
 
   ScopedLock<AssetManager2> assetmanager(AssetManagerFromLong(ptr));
@@ -720,31 +725,36 @@
     }
 
     if (attr_value.type == Res_value::TYPE_STRING) {
-      const ApkAssets* apk_assets = assetmanager->GetApkAssets()[attr_value.cookie];
-      const ResStringPool* pool = apk_assets->GetLoadedArsc()->GetStringPool();
+      auto apk_assets_weak = assetmanager->GetApkAssets()[attr_value.cookie];
+      if (auto apk_assets = apk_assets_weak.promote()) {
+        const ResStringPool* pool = apk_assets->GetLoadedArsc()->GetStringPool();
 
-      jstring java_string;
-      if (auto str_utf8 = pool->string8At(attr_value.data); str_utf8.has_value()) {
+        jstring java_string;
+        if (auto str_utf8 = pool->string8At(attr_value.data); str_utf8.has_value()) {
           java_string = env->NewStringUTF(str_utf8->data());
-      } else {
+        } else {
           auto str_utf16 = pool->stringAt(attr_value.data);
           if (!str_utf16.has_value()) {
-              return nullptr;
+            return nullptr;
           }
-          java_string = env->NewString(reinterpret_cast<const jchar*>(str_utf16->data()),
-                                       str_utf16->size());
+          java_string =
+              env->NewString(reinterpret_cast<const jchar*>(str_utf16->data()), str_utf16->size());
+        }
+
+        // Check for errors creating the strings (if malformed or no memory).
+        if (env->ExceptionCheck()) {
+          return nullptr;
+        }
+
+        env->SetObjectArrayElement(array, i, java_string);
+
+        // If we have a large amount of string in our array, we might overflow the
+        // local reference table of the VM.
+        env->DeleteLocalRef(java_string);
+      } else {
+        ALOGW("NativeGetResourceStringArray: an expired assets object #%d / %d", i,
+              attr_value.cookie);
       }
-
-      // Check for errors creating the strings (if malformed or no memory).
-      if (env->ExceptionCheck()) {
-        return nullptr;
-      }
-
-      env->SetObjectArrayElement(array, i, java_string);
-
-      // If we have a large amount of string in our array, we might overflow the
-      // local reference table of the VM.
-      env->DeleteLocalRef(java_string);
     }
   }
   return array;
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 997a0c9..9cd29b1 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -5418,6 +5418,15 @@
     <permission android:name="android.permission.INSTALL_DPC_PACKAGES"
                 android:protectionLevel="signature|role" />
 
+    <!-- @SystemApi Allows an application to read resolved paths to the APKs (Base and any splits)
+         of a session based install.
+         <p>Not for use by third-party applications.
+         @hide
+    -->
+    <permission android:name="android.permission.READ_INSTALLED_SESSION_PATHS"
+                android:protectionLevel="signature|installer" />
+    <uses-permission android:name="android.permission.READ_INSTALLED_SESSION_PATHS" />
+
     <!-- Allows an application to use System Data Loaders.
          <p>Not for use by third-party applications.
          @hide
diff --git a/core/res/assets/geoid_height_map/map-params.pb b/core/res/assets/geoid_height_map/map-params.pb
index 8ca032c..6414557 100644
--- a/core/res/assets/geoid_height_map/map-params.pb
+++ b/core/res/assets/geoid_height_map/map-params.pb
Binary files differ
diff --git a/core/res/assets/geoid_height_map/tile-1.pb b/core/res/assets/geoid_height_map/tile-1.pb
index 93a2fa0..c0f1242 100644
--- a/core/res/assets/geoid_height_map/tile-1.pb
+++ b/core/res/assets/geoid_height_map/tile-1.pb
Binary files differ
diff --git a/core/res/assets/geoid_height_map/tile-3.pb b/core/res/assets/geoid_height_map/tile-3.pb
index 4e22ca1..cc30471 100644
--- a/core/res/assets/geoid_height_map/tile-3.pb
+++ b/core/res/assets/geoid_height_map/tile-3.pb
Binary files differ
diff --git a/core/res/assets/geoid_height_map/tile-5.pb b/core/res/assets/geoid_height_map/tile-5.pb
index c5f51276..7e1f008 100644
--- a/core/res/assets/geoid_height_map/tile-5.pb
+++ b/core/res/assets/geoid_height_map/tile-5.pb
Binary files differ
diff --git a/core/res/assets/geoid_height_map/tile-7.pb b/core/res/assets/geoid_height_map/tile-7.pb
index 0928a6a..3bcdaac 100644
--- a/core/res/assets/geoid_height_map/tile-7.pb
+++ b/core/res/assets/geoid_height_map/tile-7.pb
Binary files differ
diff --git a/core/res/assets/geoid_height_map/tile-9.pb b/core/res/assets/geoid_height_map/tile-9.pb
index 6a2210a..558970d 100644
--- a/core/res/assets/geoid_height_map/tile-9.pb
+++ b/core/res/assets/geoid_height_map/tile-9.pb
Binary files differ
diff --git a/core/res/assets/geoid_height_map/tile-b.pb b/core/res/assets/geoid_height_map/tile-b.pb
index 5fce996..fbe02da 100644
--- a/core/res/assets/geoid_height_map/tile-b.pb
+++ b/core/res/assets/geoid_height_map/tile-b.pb
Binary files differ
diff --git a/core/res/geoid_height_map_assets/README.md b/core/res/geoid_height_map_assets/README.md
index 800b3e5..37a57b8 100644
--- a/core/res/geoid_height_map_assets/README.md
+++ b/core/res/geoid_height_map_assets/README.md
@@ -1,8 +1,11 @@
-These text protos contain composite JPEG/PNG images representing the EGM2008 Earth Gravitational
-Model[^1] published by the National Geospatial-Intelligence Agency.[^2]
+These text protos contain composite JPEG/PNG images^[1] representing the EGM2008 Earth Gravitational
+Model[^2] published by the National Geospatial-Intelligence Agency.[^3]
 
-[^1]: Pavlis, Nikolaos K., et al. "The development and evaluation of the Earth Gravitational Model
+[^1] Julian, Brian, and Angermann, Michael. "Resource efficient and accurate altitude conversion to
+Mean Sea Level." To appear in 2023 IEEE/ION Position, Location and Navigation Symposium (PLANS).
+
+[^2]: Pavlis, Nikolaos K., et al. "The development and evaluation of the Earth Gravitational Model
 2008 (EGM2008)." Journal of geophysical research: solid earth 117.B4 (2012).
 
-[^2]: National Geospatial-Intelligence Agency. “Office of Geomatics.” 2022.
+[^3]: National Geospatial-Intelligence Agency. “Office of Geomatics.” 2022.
 URL: https://earth-info.nga.mil.
\ No newline at end of file
diff --git a/core/res/geoid_height_map_assets/map-params.textpb b/core/res/geoid_height_map_assets/map-params.textpb
index 5ca6e4e..170e73b 100644
--- a/core/res/geoid_height_map_assets/map-params.textpb
+++ b/core/res/geoid_height_map_assets/map-params.textpb
@@ -3,4 +3,4 @@
 disk_tile_s2_level: 0
 model_a_meters: 193.0
 model_b_meters: -107.0
-model_rmse_meters: 0.29
+model_rmse_meters: 0.27
diff --git a/core/res/geoid_height_map_assets/tile-1.textpb b/core/res/geoid_height_map_assets/tile-1.textpb
index 7edba5b..b0c8044 100644
--- a/core/res/geoid_height_map_assets/tile-1.textpb
+++ b/core/res/geoid_height_map_assets/tile-1.textpb
@@ -1,3 +1,3 @@
 tile_key: "1"
-byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\004\003\003\003\003\002\004\003\003\003\004\004\004\004\005\t\006\005\005\005\005\013\010\010\007\t\r\014\016\016\r\014\r\r\017\020\025\022\017\020\024\020\r\r\022\031\022\024\026\026\027\030\027\016\022\032\034\032\027\033\025\027\027\027\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000\262zRf\212\007Zu(\251\005H\2652\324\311V\022\247Z\235*e\251\222\247Z\231jU\251V\244Zu\024f\220\232M\324\231\244-I\232B\307\322\232Z\223i#\"\233\234\034\0328\244\243&\237\237Zr\346\244\000\323\205H\0058\n\\R\3654\361\322\224\032p4\340i\300\324\212\325\"\340\323\2155\272Tg\255 <\322\226\246\226\2463S\013\363F\372]\374SK\322\007\346\245F\342\244\025\342\346\233E\024\341J:\323\326\245Z\231jt\251\323\255XZ\231je\0252\212\231ML\246\246Z\220\032\221i\331\2434\224\204\322S{\322\036\224\224\205\211\\SW\2574bEl\2575\031fc\222)A\347\232w\031\340\361G\000\365\247\003O\rO\014i\331\315H\254E<\034\323\207\265.9\247t\242\2274\240\322\346\236\255S\241\342\236MF\315\357L&\233\232\t\240\221\212\211\232\242-\315\033\275\351\273\351\013P\036\247\215\376Z\234\034/5\343\004\322\023H\r-\024\361\326\236\265*\232\231jt\251\322\247J\235je\251\224\324\313R\251\251T\324\202\244\007\212vh\315\031\244\2434\204\323I\246\223M\310\246\232h\225\220piRp\017\314)\306H\335\260\026\214\247\360\3233\3158\032p5\"\232\221MH)\343\332\234\033\035i\343\004qF}h\006\226\212Pi\301\260je~)\305\3522\336\364\322\334sM\335\2323\315-D\346\240f\346\232Z\232^\215\364n\253\020\277\025+\310\000\257\035\311\240ry\240\364\240\032Zx\251\007Z\221EL\2252\232\235*u\251\320\324\313S)\251\224\324\253R\n\220\032\220\032vh\315\'z3A<Rg\212i4\204\214t\250\211\244-M&\231\212Q\3058R\216\224\341\232\\\323\301\251T\324\240\323\301\247u\342\200YN)\302\215\330\247\007\006\235I\232@\334\324\252\334R\226\246\227\246\026\244\rO\rKQ\277J\254\347\025\021zaz7R\356\342\245G\302\322\264\231\257*\"\222\202h\034\323\251\343\255H\242\245Z\231jU\025a\027\212\231F*e52\021S-J\265*\234T\252i\352j@iwQ\272\214\373\320Z\2234n\246\356 \346\232\316MFi\244\342\233\232L\322\203N\024\341\322\234)\302\234*AO\006\236\r<\037\232\237\273q\311\244\247u\024\230\247\200\343\2474\243\334b\220\216r:P\033\024\027\365\246\356\246\226\240\032\221M<\232c\364\252s6\rUg\346\232^\223\314\243\314\367\247\254\334rh2\361^i\272\214\322\023B\232z\234\232\224\n\231*P*E\025*\234T\252\030\377\000\026>\225(\007\373\325*\023\353V\020\361S+T\252jU5 5\"\232~h\335\357F\352\003\016\364\233\271\353F\341I\272\202i\244\323\016i\234\236\224\234\203I\232u8S\201\247\216\224\360)\340S\300\245\002\2368\247\016\264\352Q\326\2342jE\\\232\230\014\014S_\221\305@Cf\233\363\003N\003\"\232\300\212a\244\3158>;\323\204\224<\200\255Q\235\252\243?4\302\364\322\364\236g\2754\313\317Z_7\216\265\300?\006\232\t\024\271\006\224T\212jU<\325\230\300\253\n\243\034\212pL\373R\355\307J\221jU5 <\324\252\336\3652\265L\257R\253\324\201\252@\324\355\307\024\273\250\335HZ\223u\033\2517P[\320\322n\242\233\310<\032NM\000R\323\200\247\001O\024\360jE4\341\214\323\307Zp\245\243\245<T\252\005L\253\212~)\245N)\244c\232\205\310\31593\216iv\347\255E\"c\245W9\006\231\232]\330\244.MT\235\273\346\2523\324e\351\273\351\245\352\'|R\244\231\025\305\023\223IHr\r\001\252UpE<75f)\010\034\325\224\22350\222\2246i\342\245^\224\360jE5*\232\225MJ\016*E5\"\265?4\340h&\220\232i4\231\2434f\234\r)\007<\032OcF9\245 \367\245\013\3058\np\024\264\341\322\234)\342\236)\342\234\005\030\247(\346\254\306\230\0315*\017\232\244\333\351M \346\243d&\205\203\234\232\220D\000\351Mh\317\\Tl\231\025NT \364\252\304\235\324\322\334S\013\361U\'z\246\317Q\227\246\357\244/Q3f\221\t\316+\223\221J\2754\032S\3154\216x\247(5\"\236jun*dc\232\235[5(8\251A\251\003qN\006\236\rJ\255R\253T\252\325\"\265H\032\234\032\236\r;9\246\223II\2322is\232QN\000\203\232R7\037\224\032r\200\243\346\024\273O\336\0074\243\2459S4\270\346\227\024\240S\200\247\201O\024\3409\247\201\305<-=\023&\247\035p*E\300\251\343\\.OSK\205\'\2457\n\r!#4\271\002\224\200\313\300\250$\\\n\251&;\325\t\370\351UKTl\304Ui\216A\252n\370\250K\322o\246\227\246\027\346\245\217\221\232\346\344L\216\225U\220\251\342\223\232@y\247\003OSS)\251\221\252elT\252\365*\3101\357N\017N\017R\006\251\025\252ej\221Z\244V\251\025\252@\324\360\324\360i3\357IE\024S\201\247\212x\343\356\232P\t\357OS\267\202)q\316@\251c\311B=)\240\035\334\323\261\305\000S\200\247\205\3434\340)\313R\001O\003\0252\214.iTsR\2049\315<\265&\363M-\357H\033\234\320\322g\232\226\031=j\033\231{-P\221\2169\252\223\034\245Rf\305@\357P;eMQrI\250\230\323wR\026\250\367\022\370\253h\300.3XL\274\361Q2\003P\264>\225\t\\\032QO\002\236\265*\232\225Z\244\rO\017R+\323\303T\212\325\"\265L\255R+T\201\252@\325 j\2205<\032vi3Fh\024\264\341O\024\341OZ\220s\326\234\020\366\247(\303zT\214\271]\324\301\310\245\002\234\005<\nv)G\025\"\324\350\271\247\037Jz\216i\345\305D\317\317\024\240\320\302\243\3174n\247\243\205\006\243v\004U\031\334\n\253+\374\237\205g\273\363U\344j\201\244\302\325fl\232\211\2150\266)\214\374S\021\263%X\335Y\244f\243*)\207\203\203P\315\037q\322\240\034\032\222\234\r<5<5H\032\234\032\236\257R+T\252\325*\265J\255R\253T\212\325\"\232\221MH\246\244\006\235\2323K@\353N\247v\247\216\264\361\322\234:\324\202\236\017j\221@\245l\343\255 \245\247\016\224\240\323\201\247\016\265\"\364\253\021\364\247\001JA\315#\003\212\21384\273\360i\032aL,)\245\361M2\212C(\332y\346\263.f\303\021\232\255$\277\'Z\246\317\223QH\337-Uw\310\353P\027\250\331\3522\365\0337\024\261\260\034\323\332Z\246\030\021Q\273sL\311\2458)U\230\r\324\242\224S\3058qN\006\224\036i\341\251\352\325*\275L\255R\253T\252\325\"\265J\255R\251\251\024\324\252i\331\245\245\024\264\352p\247\016\264\361OZx4\3655 5 \346\220\251\006\224\n\\R\343\024R\216\2652U\205\030\025*\200z\322K\305Dd\355Q\226\025\02374\306jn\376:\324O6\017Z\215\245\'\241\250ZfPsT&\230\273\342\241\226L\014f\253\0319\250\344\227\212\246\362u\346\253\264\2304\322\371\031\250\332Za\222\2177\024\246L\214\325E\223\035\351\036NsR+\202\264\021\201\327\255V|\206\240\003\214\322\203O\006\236)\302\226\224\032p4\365j\225^\246W\025*\265J\255S+T\252\325*\232\225O\275?4\240\323\201\245\007\326\234\r8\032x4\361N\024\340j@i\340\324\210qR\251\007\255?\313R3Q\036\030\342\214\322f\224\036jx\3175eO5:\021Q\314sUX\363L-\305D\355Q\027\250\236Oz\254\354}i\242LTo #\255Sb7f\252\315\'5\\\275A,\274UG\227\336\242i\006:\324M)\035\352?2\233\346d\320\315\315;\177\000T\000\363Crz\320\254T\342\245\r\221\212\0317\034\212v6\'_\302\221Dl\331\'\025 H\313\3434\245\027\034\032\0008\245\246\321N\006\236\rJ\255S+T\252\3252\265L\255S+T\312j@iA\247f\2274\240\323\203S\303S\301\247\202)\340\323\305<\032x5*T\352p\265\024\204d\324Y\2434\345\353V#\367\251\325\252d<\323d\252\256y\250Y\261P\274\225\013\275@\317Q3f\240w\252\354\347\326\242y\224\n\255#\206\351Udb*\243\266MT\225\231MW\363\2114\326zo\231\332\200\3376sJ_-O\r\315@\254jL\323\360\010\3159x5*\021I8\314y\035\215B\265 \251\026\244RGJJ01M\242\234\rH\246\245SS)\251\224\324\312je52\237z\224\032x\351KK\232Pi\300\323\201\247\212x\247\003\212x5\"\232\221ML\255R\206\342\243\2238\315F\304`b\2234\3655b3\362\324\240\346\245V\305\016\331\025Y\201\316j\254\274UV|\032\215\237\212\201\232\243-\305D\3075^CT\344\004\363U\367`\234\232\255$\234\021U\332@\rE#\007Z\252\300)\250\030\363L/\212E\2239\247\253\367\247\t~j\007\002\234\016jD\315J\007\024\240\363@\2339\\f\232\230\363>a\200i\347\001\270<S\224\324\200\321E6\223<\322\203R)\251T\324\312jd\251\226\246Z\231ML\206\244\000b\226\212QJ:\323\3058\032x4\340i\300\323\303T\212\325 \'\265H\036\235\2735\033d\232Jz\365\251\324\340S\325\352@\374u\2442b\242\222Q\212\247+\346\251\273sQ<\234T\014\365\013Hj&\227\025\021\2235\033\234\255T\224\000\0175A\330s\315U\221\252/3\006\242\226QQ\026\004Ui_\024\304\223\t\365\246\375\243\007\255)\271\\guh\032\027\255L\214=jBhS\316i\222\355Q\271\0174\304\220\223\317509\247\216)\340\323\201\2434\322i)EH\2652\212\231EL\202\247QR\250\251V\246J\2234\341E(4\264\242\236)\302\235K\232pjpjz\277\275H\036\224=8H1\31580\'<S\324\323\311\3158\032C&;\323\014\325\013\276{\325y_\212\250\317\311\346\241g\250\231\205W\221\310\350*\263\313\307Z\214I\223CK\205\252\027\023\222N\rS\337\317&\240\220\344\361Udb*\006sM\363q\305C;esQ+|\225\033\2675\0236Mt\'\030\246n\301\245\014sS!\312\340\324\212p\246\253\311\222i\023\212\260\255\305H\r8\032p4\036\224\224\231\247\n\225\005N\275*U\251\220T\352*U\251\007\025*\232x4\360ih\242\234)\300\323\301\247\003KFh\315858=;}\033\351C\034\360j\314o\362\324\313\3174\346#\025]\3175\021j\215\236\253\312\374UFj\215\232\241c\212ia\264\346\250L0\331\035*\0030Q\357U$\273b\330QU\336B\300\222j\r\304\232B\340.*\263\221P9\025\003\036j9[\344\300\357Q\226\332\270\250\031\351\253\226l\n\337/\221L,jx\376\340\251P\214\323\367u\024\306\031\031\246\016)\352jU5(\245\242\212)\313R-L\246\246SS\241\251\226\245Z\225M<\032x\353N\006\234\r-(\305-(\353N\006\2274\271\2434dQ\232pj]\324\006\251\024\363VT\345*TlR\261\342\253\273\032\211\232\241v\252\3225Wf\250Y\351\214\374Uws\353U\335\361\326\250\314\303\250\025P\221\232\211\334\364\240\020\027&\253\263\356$\324\014\325\021aQ6*\274\215\206\252\357!4\221\256\366\301\251B\210\316\354\216+S\'4\365\344\340\324\350s\305?\030\247t\245\352\271\246\232QR\255H:S\263FiiE8T\213R\250\251\224T\312*e\251\226\245Z}8S\251\303\2458t\247\0026\343\037\215\024R\366\245\243>\364g\336\214\373\322\344\321\232\001\315(\251\026\254\306\374`\324\312A S\330dqU\335MB\300\212\201\311\252\322UGnj\0265\0137\025\0136*\274\217U\334d\032\245(*I\355P\253\203L\232LGU\321\2629\252\362Hw\034TE\351\273\252\tOz\204\340\214\323\343tT9\034\324/&{\327B\0004\323\303T\221\223\272\247\006\221\211\333O\207&>iJ\234SFsR\251\251\001\002\215\324S\201\247\003O\025\"\324\253S\245N\242\246QR\250\251@4\352p\351N\006\234\016i\302\235E\024f\223\"\214\321\2323FiA\247\003N\247/\0252\232\260\277w4\365n)\030dT\022\014\n\251%V\220\360j\213\236M@\315P\263\32426EUs\203Q\263\325i~l\212\244AI)\263\214\307\232\256\271T\252\362\017\232\2424s\212\206f\001\rW\017\362Tm\'\275F^\272d\223\006\244\300nE9A\006\245SO#\345\247D0*P8\366\250\317\r\322\212viA\247\216\224\341\322\224t\251\026\245Z\231\005N\202\247U\251\224\032\225EJ:R\201KJ:\323\205<S\203)\0351FG\255&A<\323I\244\315\031\367\243>\364g\336\2274\240\323\201\247\212\220S\324\325\210\337\214T\203\031\247\026\025Vw\002\250H\375j\254\217U\034\325gnj6\344T\016\330\025^S\221\305Vf\346\230\306\252\312\t4\222\200\260c\271\252\255\220\2435\004\225\rG#\200\247\332\250M1n*2\377\000-FZ\232Z\272Ez\2367\307z\262\2445J\026\236\027#\025\"\256*`\277-1\343\371O\265C\216h\247\003O\024\341O\002\244Z\225\005XAV\021ju\025*\212\225EH\242\237\262\215\270\243\024\240S\200\245\034\036\224\224\206\222\220\201\214\346\222\214\212L\322\346\2245<585H\032\236\24752\034t\247\211>j\032L)\252\023\312I\252\216\365ZG\252\316\325RY>n\265\027\235\216\365\014\222g\245FN\027&\252\310\3377\024\3259\240\200MD\350\031\306O\002\253\334\340/\025M\216V\240c\212\2551%H\252.1Q\026\246\026\246\226\256\221O525Z\211\252\354|\212\220qR\246\rL\005+/\025NA\363`Spi\303\232\220\np\353OZ\225EL\225<b\254\245N\202\247U\251\025jUZ\223\034Rm\366\244\333K\266\214R\342\223\024\205i1\355HTc\"\230\300c#\2553\"\214\321\223@4\340\324\340\324\360\365\"\275L\217\305!\177\233\255$\222\215\225\237,\234\360j\273\275V\221\352\273\311Ud95^C\201U\374\314\034\032Vo\223\031\252\314\017Zb12b\211$>f\325\374\3526c\236\264\307 \214\032\247\"\340\222*\263\236j\t8\346\250\315\326\2531\346\230M0\232\351\325\252U5j#W\243<\n\224\036je\004U\204\351J\307\212\250\313\363\023M\332i@\247\201O\003\232xZ\225V\245E\253\010\265a\001\253\010*u\251\026\247QO\306h\333F\332LR\342\223\024\270\243m!Zc-FS9\305FGjm74\271\243w\322\215\324\340\364\360MJ\257\201\315D\322e\372\320\357\362u\252R?=j\007~*\244\262{\325W\226\240iy\353Lw\371j\224\214wR\t\t\342\245\004\0049\250\027\345\311\365\244<\032c\021\214\325Y\030\226\246\220JUiGz\247)\340\325)\016j\263\036j2i\205\253\246CS\251\2531\032\273\033t\253+\311\253\013\322\244SJ\307\010j\034R`R\205\247\205\247\005\251\024T\252\265*\255N\202\254 \253\010*e\025*\250\305J\253R\000i\330\"\212L\nLRb\226\227\024b\202\265\013!\007\336\241e \221Q\221\3150\212CM\315\0314\252y\253)\214S%|US)\337Oi>^\265U\337\232\2554\230\025FI3U\245~8\252\215!\317Zo\230}i\216\331\246.wT\305\3601L<\324r1\034T,\334b\242#\346\247\201\362\325i\2078\254\351\007\316T\3259\0075U\3705\003\032c\032\351\34395i\007\031\2531U\2658\305[\214\346\246\007\212ps\234\016hi\0161\212@\t\245\002\244QO\013N\013R*\324\212*U\0252\212\235\005XAV\024T\252*E\025(\024\374qI\217jiQM+A\007\322\223\221\332\224\032wZ\010\250\310\367\250]y\315B\302\243 \342\230i\206\212\013\005\024\345\233\013P\311)c\305E\273\236i\036O\226\252\311.*\234\222\363U^Z\254\362Uvl\232izM\331\247\240\346\236\352w\001I\322\241\227\223P7Z\\\0023K\3749\252\3569\315P\270\0309\252.2j\254\334f\252\265D\306\272\270\2075eH\305O\031\346\256\2475f>\225(`x\315\n\3309\025&\355\303\232r\021\267\004S\306\010\351NQR\001\3058\n\225EH\005J\242\246QS \253\010*d\025:\212\225EH\243\212v)(\"\223\036\364\230\244\305\030\024\270\244\"\232W\332\242e\250Y0j2\274Tej2)\216v\364\250\276f4\216p0)\231\310\300\246\266@\305Wv+\326\251\315\'5NG\367\252\316\347\326\241g\305@\317\223\232n\354\232z\363V\241\\\265X\362\376f\315Wu\305V\222\240 \232pS\214R\200X`Tr.\334\203Y\367\0309\252\014\270\315Q\233\255@zTO]dq\232\260\221\346\246E\000\360j\322\034\016\265\'\233\306\005<1\305=Z\247S\232\221jQR\n\221EH\253R\252\324\201MH\240\372T\252\017\245L\202\246Pj\302\n\231EJ\242\245Q\3058\322R\021IHE%\024\240\322\322c\212c(=\252&OJ\215\222\242d\250\231*\023\031-Mq\261p*\"7P#\3052A\305Q\236\263\346\357T\244lUs\'5^I2j=\324\003\315XJ\267o\367\305]+\3015Ra\326\251\275G\336\235\203\267#\255\021r3\336\241\270\357Y\263UV\350Ef\3160\306\253\032\215\353\264\034\016)\305\2601J\214sS\253f\246B3\315XF\\T\2523S*\324\312\206\245X\315L\261\032\225acR\254,*A\031\025*\217j\220/\265H\240T\312\005L\2121S*T\252\010\352*E\346\245\002\226\223\024\224\204SM%\024\240\322\322f\220\323H\246\225\250\33103Q\024\250\332,\034\325yP\356\246\254}\315\016\000Z\253)\300\254\371\233\346\254\373\206\306k>F\316j\253\232\204\365\244\3159z\325\210\375*\354#\004\032\272H+\326\250\314y5U\2075\0369\251TR\005\333\237z\255q\315gL9\252\222U9\323p\315Qq\203\212\211\253\262\'\271\246\007\311\353R\206\311\342\247CS\241\251\322\254!\253\010jt5a\005N\200\325\204\025:\212\220-H\020c\245;o\265(@}\252EC\354EH\247i\301\006\254&\017z\234\001\212\000\346\2348\245\315.E%%!\024\322)(\244\315\031\2434\224\207\255&3Q\262\342\243c\306*\264\202\231\310\024\307\351T\2478\252\022u\315g\\r\325JA\216\005Uq\315FV\243\"\244J\262\235j\344<\232\232L\256\010\351U\344\344\324.\225\001\004\032\2263\232\220\250e5Fq\265\2105BaTe\025]\271\2527\t\203\232\252\334WZd\3341\332\204\305N\203\232\260\265:/5a\026\247E9\253(\207\322\254F\206\254\242\032\262\210jtCS(\305J)\343\351N\030\247\355\006\224\002:\032pb\01752:\036\243\006\246\016\244p\324\340\376\242\227z\323\201\007\275;\212m\024\231\244\310\246\320Fi\264SsK\232J\003`\322HK\235\330\250\010\346\241)\227\244 \n\202\\sY\363\214\325)\001\301\254\371\207&\251\272\325w\034\324l8\250\312\323\220U\230\305Z\210\342\2452\014r8\250\030\203\322\233\326\241e\347\002\236\027j\032\003|\231\252s\034\223\232\317\233\031\252\222\n\254\313\203U\346M\303\245P\225\0105\322)\251\320U\204\253\010\005XLU\230\352\312U\230\352\312\n\262\202\254\240\251@\346\244\002\236\005<R\201O\031\002\227\232p\346\224\002)\343=\252E&\246P\017Zw\2261\307\024\273\010\357I\226\244\311\240\020iqL\"\232i3KM<Rf\220\232)\301\366\241\030\353P\232i\344\324N\016*\254\202\251\3123\322\252H2\265FX\372\325\031\220\201UXz\324X\313b\224\246hX\352\302.\026\244Q\315I\214\212\257\"\230\337\330\321L\311\r\232qrA\367\246n\371H\252s\232\244\352I\315WqP2\324l\234U)\342\311\255\204\253\tS\241\253\010j\302\032\265\035Z\214U\230\305Z\214U\250\3075ajU\247\212x\251\007Jp\024\360)\341x\245\013\315<(\247\204\247\205\251\024{S\300\245\3078\2451\323J{Sv{SH\"\233\311\355HE4\212LzSI\246\037jU\004\366\251\226/j\036<S<\222\312O\247j\215\323h\250\230qUdL\325g\217\212\253,Dv\252r\307\201\322\250\313\036j\234\221TB\022\016qO\362\370\245\t\355K\217jQR\003\362\324S\034\255F(`1\232\215\251\204\360j\254\234\212\256\303\003\025]\327\255@\303\006\243a\305U\225kEML\206\254\'5a*\314uj:\265\035[\216\255G\364\2531\375*u\351R\255H*@*@)\341y\251\025i\341i\300S\200\247\250\247\201R(\247\205\346\246\216\035\307\245O\366p\0055\340\030\342\2431c\265D\321\344\342\232 \357H\321c\250\250\232<r*=\225\033\2550/5b4\025)!F)\204\346\205\004\036\234To\031,r8\250Z<qP\264jj\007\214\n\251*\212\245:|\207\212\314\221O5Y\227&\220\307\306i\270\307\024\322)\247\212h\353O\355Ln\224\3209\245#\345\250\030qQ\036\224\302\231\025\003\247\025RAUd\246u\030\250d\025eNj\302qV\020\325\204\2531\325\250\352\334un:\267\020\253+\322\246QR\250\251\024T\213R\255J\242\245QRm\310\243\034\323\200\251\024S\302\324\212\265<p\222j\332 Q\300\247\342\230\302\230\313\305FT\023\322\215\234R\025\2464c\322\2430\003\322\253I\003g\212\207\311pzT\252\254\243\221Mm\304\323\221\016*Lq@\\\216\177\n\257\"\374\325Y\301\006\253\270\252\322-S\231r\270\254\331\223\232\254W\006\223m0\240\315G\"\340T\007\255*\255/C\212G^*>\235iKdb\243q\301\250\302\360(\333\301\342\240\220s\212\2472V|\243\346\250\372TrT\310y\315XCV\022\254\307VR\255\307V\343\253q\325\310\352\302\324\313R\251\251W\221R(\346\245\003\212\231\005J\007\031\310\251\027\2458\npZxZ\225#,p\005\\\212\330\377\000\025X\010\007\013R,t\245\016zS\030sQ\260\250\217Z)\r0\344\322\n\010\006\230c\036\224\323\036i\206!I\267\024\323\326\230[\024\326 \365\353P8\007\245W\221\0063T\345\305S\224dU)P\223\322\2534\\\323Lx\024\306J\202E\315E\345\363N\330\0051\2074\323\234Tei\241y\2472dSD\177/\343HS\202*\274\251\212\2457B*\204\211\363T,\270\250\034f\244J\260\225e\rY\216\255F*\334B\256G\305Z\215\200\253(\342\247G\0252\276jecR\253\032\231X\324\252ML\225:\032\220\014\366\247\216\264\365\034\324\310\271\355W\355\242\001rEN\370U\342\210\372T\352)\314\006*\263\236j\"j&4\235\0050\2657w\2757w4\340x\2434\231\3074\306zo\033y\250\3109\342\243j\214\363Q7\326\253\271\355T\345\3435U\310\315W|T\004\014\323\030\003Q\262\361Q\030\375i\205EF\302\242aM<\323H\244\013\315=W=\2516b\232G\315\232\212Xw\216+>X\212\223\221Te\\\036\225U\224\324L\224\211S\241\2531\325\250\301=\005[\211I\253\221\200\rYCV\025\252tj\231\rN\206\247F\251\320\324\311S\255J\265:\021\221\236\225 ~\010\035\351\350y\353V\341@y\253\221\306\243\034U\225\340qNe\310\024\252\273E;v)\013\361P9\250\311\3151\263L=)\215L5\031\340\323\325\270\245&\232M  6M8\220\335(\030\025\004\243=*\273\n\211\201\250\034Ui\024UGJ\255\"T\014\244S(=:Tdf\242u\301\250\212\324L2x\240&\0055\2050/52.\006\010\241\2075\033.W\216\324\3022\236\365Ja\234\326|\221\363\322\253\264Y5\003\307\216\325Y*\302.j\334J*\344C\247\025i8\351V\022\247J\235\rN\206\247CS\247\326\247J\260\225:T\312*u\024\376\264\365\0252\212\277m\234U\261\326\245CS!\005\262M=\260G\025\031\024\303Q7Z@\0055\2526\024\302)\204S\010\246\034\203C7\025\031s\232p<S\267Q\232c\032\201\270\250\230\324\017\315Wq\232\205\326\253\262T\017\035Dc\024\302\206\230V\243e\315B\302\230#\311\351JS\025\023.\005\010\243\034\324\204c\232n3I\264}*\031\020\250\310\252\262&\340H\252\222E\355U\332/j\206H\375\253*1W#\025n!V\322\246SS+\212\231\034\324\350\306\254!5a\rXL\325\204\025e\026\254\242\324\352\265(\251\025jUZ\225E^\267_\222\254\005=\252P\010\245\004\253S\267\232vr)\215Q7Zi4\224\303L\2448\2465F\302\230zTD\032@\330\247\206\247g\212\215\215F\325\003\324-\315F\335*\027\031\250XqP\225\346\232R\230c\366\250\336:\201\3439\250\314|R\354\000t\2462\324,\234\320\027\212i\031niv\236\335)\254\205Wu0\202P\202*\243.\t\250\330\003\324T\016\202\252\310\204\326$jqV\243\006\255G\221V\024\237Z\231jd\253\010j\302\032\260\225f1V\243\025j1VcZ\262\213S\252\324\241jEZ\231V\246H\363WaR\251\315N\010\002\2369\245e\3434\314\322\356\246\226\246\023\3154\322\216\224\311\024\216\225\001&\232X\212\214\2614d\221\212kp*3\3150\212\005<\032\030TL1P=Bz\323\032\2425\033.j\"\274\322\204\243eE\"\014\361P2Te)\2451Q\021Q2\344\323\010\246\021ON\264\254\013\n\215\207\311\214UG^M@\313PH\rT|\203Y\021 \357VPqS-L\2652T\351S\245YAV\243Z\265\032\325\270\326\255F\206\255\306\225j4\253p\300_\245O\366G\331\273\034S|\262;T\212\265:\014U\304\301\\R\201\363T\3109\244\231\200\\Up\334\365\245\335HZ\232M\0034\2439\245<\324l\200\324O\035DP\372P\020\367\2468\301\246m\346\220\216)\002\323\202\320V\241pj\006Z\211\205FEF\302\231\214\323Y{\322\250\342\220\2574\306\\\325wJa\\\nc/\025\013-DV\243+\3150\245*\214\032s)\333\221\322\243a\230\370\252\254\265\013/\025ZU9\252\256\225\216\213\305N\265*\n\235\005N\202\247AVcZ\264\213\355V\243SV\343J\271\032U\270\322\255\306\225i\024U\270\243n\302\257\333\034\202\217\323\025\004\252\276g\3128\241S\212\220\n\236.\2656\337\232\244Q\315A1\313b\240 \321I\322\226\214\320\032\224\034\322\3434\335\271\244+\3050\257\265B\353L\333AZM\274\324\213\036E#\'\025\003\245D\310*\007J\205\224\324L*<\363N\306V\205\0242\324DS\n\212\211\226\242e\2462\361P\272\324Ei\245i\245q\315*\222s\216\206\220\246\024\325G\034\324.0*\007\\\325w\216\260\324qR(\251\226\247AV\020f\254F\265n4\315Z\215*\334IWcJ\267\034un4\253(\265j%\344f\264\003\242\304\002\016{\232Eb\t#\275.3F1K\232\222&;\252\3568\006\244Q\205\252\356\240\2651\220b\230V\230F)\247\245!\243\265\000\363R)\247\205\006\215\234\320c\006\241x\352\"\224\302\264\230\346\246\214dR8\030\252\354\274T,*&\025\023%D\361\361P\030\360h\306\006)\003\001K\301\2462\323\n\324l9\250\231y\250\310\342\242e\250\331*\"\264\233r1B\307\203\200h\223\n\244w\252l;\232\201\305G\267\232G\213p\256\\\037J\225A5:\n\260\202\254F*\324kV\343Z\267\032\325\330\222\256\304\225r5\253(\265:\001V\020T\300\324\253O\310\305!4\016jxP\347&\255\241\340S\363\306)\2453\3154\246*6Z\211\2050\212i\024c\212@9\251\224\014S\2063Ru\240\014\323Y\001\250\2319\250\332:\210\2574\364\024\254*\007\034\324\014)\205h\362\363H`$t\250%\203`\311\025M\306\r3\031\243\024\021I\267\212\211\227\232\211\2075\031\024\302\271\250\331N1Q\225\246\021\212:\014\212\257!$\346\240`j&ZENiYv\255r(\2652\212\235\005XAV\020U\250\305[\210U\310\226\257D\265v%\253\221\255N\253R\255L\246\245\rOV\247n\244\335R#sWc\345EZU\371i\333A\247\005\342\232\351P2\324l*\026\342\242&\233\272\200\3075*\267\025\"\232\220t\247\016\264\354dSv\323Z>3\212\204\307\232\004x\355LaQ2\324\014\264\300\234\324\321G\226\346\254\210\323n1U\257!\0333X\322\'5\036\334\032LsK\267\"\233\214Tl9\250]y\246\025\246\221Q\260\250\312\323Z<\212\213n\001\315B\313\315F\313\305BW&\223n\r6Rv\364\256M\026\246E\251\321j\302-YE\2531\255[\215j\344KW\342Z\275\022\325\264\025(\351J\r=MH\246\245\024\372P\246\244U9\253\360\003\266\256\240\310\247\010\371\351O*\000\346\242a\351P\262\361P0\250\231y\250\331*2\224\230\3058\034\324\211S)\247g\232\225H\247\000\t\251B)\\\032\211\341\002\243d\342\240d\347\245E \305Wa\3154(\315N\253\307\024\356\202\243\224\227\\\032\315\232,\032\247 \250\361\315H\213\236\264\216\270\250\030TdTdPS#5\023%3m#\014-V~\265\031Z\211\206i\241\t8\002\217,\214\223U\2468\004W.\213S\242\324\350\225a\026\254\"\325\250\322\255D\265v$\253\261-]\217\212\260\246\237\232QR(52\212\225EH\242\245T\251\322*\261\031\nqV\025\360sV\222@\313C\014\323\n\324l\225\003.\r@\303\232aZB\224\302\224\3020h\r\212p\223\024\242Z\2327\315YCR\206\024\204\202)\244`T\0220\351U\230d\324.\265\027CSFi\355Q61U&\031\315Q\225j\014sR\245\0168\250Yj\026\\S\010\024\336\224\322)\214\275\351\256>Z\250\313\3151\2050\246)\321\'$\232d\247\002\263\247<\232\347\321*t_j\235\026\254\"\325\224J\263\032\325\270\327\245[\211j\344ue*u\251\000\251\025jE\025*\212\225EL\213VcJ\262\023\002\230\334\032z\260\"\247\214\221\315Y\007\"\2341H\3121U\332<\324\017\036*=\234\322\354\342\230R\240\221y\250[\212o4d\324\210\344T\3511\251\226Q\267\255\006nz\322\031r)\204\346\243\250\334TEy\247\247\024\366\037-B\365ZJ\251\"\346\253\262\340\323\223\216\2643s\212\214\372\324n*-\264\205i\002\363Lp1Q>6\325v\024\2018\245\362{\232G\340qT\345=j\204\375\353\025\026\254\"\324\350\265a\022\254\242\325\204Z\265\030\253Q\212\262\200\325\204\025e\005L\253S*T\202:xLT\212*t\025f>*\302\3621H\321\223\332\221m\244#p\034\n\2364u\352*\302\216)G\006\203M#\212\211\227=\251\276]\006\023Q\274~\325]\343>\225\003E\203\322\231\266\232W\232r\245;\030\243w\024\201\262is\357J)\330\244+\232iJM\274\323\361\362T\016\005Wu\025\001J\255\"\363Q7\024\302i\273\275i\t\3153\034\323Xb\223\024\307^3U\330S\030qH\024\346\236zT2\016*\234\253Tf\025\224\211\305N\211\355V\021=\252\312%XD\253\010\225f8\352\312\'\265YD\253(\225f4\253\n\2252\245H\026\227\024\241Njd\006\247AV\341\031aW\320B\215\373\305\004\373S\036\340.V!\362\237j\222\031\004\213\265\200\311\350iY6\022\010\246\000\244\324\251\010jV\265n\302\233\366V\356)~\314})\0148\035*\027\207\332\253\274|t\252\317\017\265Wx\210\355Q\354 \321\320SX\323I\342\220\034R\206\346\244\0074\361\322\234\005\004z\323X\001M\'\214T\017P0\250\230TN\274UI\006*#\322\230F)\0014\354\342\232\3447A@^*)=*\022\2714\323\031\243f)\030T.*\264\213\236\225Nh\353%\024\021VQ*\302\'\265YD\2531\307VR:\262\221\325\204\216\254\307\035Y\216:\262\221T\341)\341i\341i\301i\312\2252\245J\253S&GJ\230\022\335jA\030\"\247H\260r*|e0y\367\250\0323\273\212\265o\021=MhG\0261\226\006\2440\257aQ\2748\031\252\357\025A$B\253\264#\322\240xEVx\375\252\026\213\'\245@\361\021\332\253\272\324d\032L\032P\2475\"\255L\026\234\006\r5\21534\323Q\270\250XT$sMe\342\252\312\231\252\345qL<\2321M\"\200\224\347\033V\253\260\346\231\263\276)\344q\214S\030s\322\243aP8\250\035y\252\322\245d\306\225j4\253)\035YH\375\252\314iV\243\216\254\307\035Z\216?j\262\221U\230\343\253)\035J\261\023\320S\214%z\322\204\245\333J\242\247U\251UjUJ\220-H\240\212\231\037\024\362\336\207\255.\340\274\232\226\031\001\351\326\255+g\275J\222:\236:U\225uu\301\034\324o\032z\325w\210T\r\020\3061U\344\204\325W\214\347\245Dc\366\250^.*\244\261\363\322\253\262sM\333OU\0252\240\305-\033sQ\262\342\242n)\273\251\244\346\232\313\305@\312EF}\3526\000\324\022G\305W*\001\240\257\313M\003\232\220\000\006i\216\245\201#\265E\260\346\235\345\340f\232\312)\214\265\023\n\256\342\253\271\252\362\034\326tiV\243J\267\032U\224\216\254\307\035Z\216:\265\034uj8\275\252\312GVR:\231S\332\245@C\014\016i\322ng\313\nLzR\0244\345\\T\312*x\327&\255$9\2531\333\307\217\230\323^\020\033\212\210\251ZP\334S\035\216*%\231\243\223\'\245]\212\344\021\326\254\255\310\035\352d\274@z\324\313q\034\202\220\220x\246\025\250\2313P\264c\322\241x\207\245@\361{U)\243\307j\245\"\340\324X\346\234\240\372T\352\016)H\246\236;S\0335\013f\243\"\220u\251\225C\n\212X\275\252\234\213\203P\263\001\326\230\314\245z\324\014E3p\244\030\315?\256\006)\357\030\021\361L\211\006\303\221\310\246>G\025\013S\017J\215\252\t\005S\224sU\\\340\3241\'j\264\211V\343J\265\034uj8\375\252\334q{U\250\342\366\253I\035XH\352\302%L\261\324\210\230l\342\246h\325\227$\363Q\254>\324\246*n\312z\245X\210b\255+`T\250\031\217\024\374\034sMd\310\344\322}\230\323\036\r\275\301\250Z\000{SB\025\355F\342)\3502y5n\027U8\002\254\357\315/\231\317ZB\331\357L$S\030\002:Uw\036\325ZT\317j\254m7\236x\245\026*)\r\250\034\201L1c\265\'\227\355M1\342\242)Q\274|f\253\270\301\250\330\342\232\322\343\220i\032\360m\303V}\315\310\347\006\263d\273ny\250\276\322\347\253R\371\304\236\265<gwz\233\3138\310\240\002\rI\234\361NQ\311\305E\"\363U\335qQ1\250\331\252\007j\253.*\224\207\346\251\"\\\212\271\032f\255\307\035[\216:\267\034un8\375\252\314q\373U\244\217\332\254$~\325:GS\254u(\2134\357+\265\00508\024\315\244\366\245\362\275\251Dx\247\250\305J\270\253\021\266*p7\014To\033\003J#r98\024\257h\3737)\315D\2609<\324\242\333+\202\265\033Y\340\344\nh\267\000\363R$J:\032\234Dv\323\0362*<\021\336\215\304u\031\244\363GB\264\206D\357M&>\271\024\321\345\267JB\027\2650\250\250\2360i\233*6J\217\312\315V\237\344\342\251\261\3115\024\234\n\2434\273sY\323\\\221\221\232\250\316\362\034\014\324m\023\355\316*\234\216\310\324Gq\223W\241\233\241\315_\216\\\212ql\232\001\346\245\003\346\006\211\000\252\316*\007S\212\254\365\003\265U\220\325I\0075j\025\351W\242Z\273\024y\253\221\307V\343\216\255\307\035Z\216:\262\221\325\224\217\332\254,u*E\236\265*\307\315I\345qI\344\346\224A\355G\225\201M1\023I\345\036\302\201\023T\311\031\025:pj\306T\247AUef\317\024\304\231\324\343<\032\263\037\314A\315\\P\010\351JcS\326\242{u5\027\221\203\3059c9\347\212\031{c5\033 \364\250Y=)\214\206\243+Q\224\246\025\244\301\035\351W9\346\235\212M\276\324\306\217#\201LD\344\356\025\235x?zj\213u\250\345\031J\311\271V\347\025\234\320<\215\3005~\322\303\241e\316j\343i\350W\356\363X\267\372n\030\225\037Z\307{w\215\372qR\306\344U\330%\347\031\253j\331\247\003\223W#\031AJ\361df\240h\361U\345^*\214\242\252?\025]\372\325i*\364KW\341Z\277\n\364\253\321\'\025r8\352\334q\325\250\343\2531\307\355VR<T\353\035L\261\324\253\030\025 \216\234\"\311\247\264$.@\315Fb8\311\240F1\315#(\307\024\212\000\034\322s\236)EH\231\316\r\022G\232\205bR\334\234U\310\243\215G\007&\247Q\216\224\343M\372\232C\214u\246g\236)\016sQ\2605\021\0079\246\344\037jF\214\036\225\013&\005FE7o5 \214m\246\272\025\246f\214\322\003\317Z\202\342\331dR@\344\326D\261\354b*\224\315\216\225_`q\234T\266\366\310\374m\255(mUG\002\2476\340\257J\243ub\256\247\345\346\271\315GO(\013(\357Y\277e;2T\323\0226Y+b\332\311\246\217 \363D\226\257\021\346\254Z0\337\264\325\231\020\257\035\252\263\255V\225x\2522\255Q\225j\233\365\252\262\032\325\211j\364K\322\257\302\265~\021\322\257D\275*\354I\310\253q\240\3435j8\352\312G\355S\254u*\245J\261\023\332\245X\375EH\25023J\301G\335\315D\313\236\325\031\\\nL\014sM\362\362h)\212f\010\244\336\303\221L294\334\234\344\232\261n~nj\372\016)\304\nB\252:\324,\240\236)\002\221A\300\024\302\303\025\033u\342\242`sL\311\024\306$\365\246R\021\315N\200b\231*\344\324[i6\212p\2174\214\273T\222+\036\351<\307;W\025B[lu\025\\@T\236:\325\253hJ\234\347\025\247\032qR\021\305B\311\236\242\251\\Y\254\240\202*\221\323\220)R\274Vt\272hY~QV\355\255\244\2152;S\245\371\224\207\034\3251\036\311\262=j\3431*3U\244\372UY\005S\225z\325\031\226\250J1Te5\273\n\325\330\226\257D\275*\364C\245^\210U\330\205\\\210f\256\306\265j5\315YD\366\251\2261\351S\244b\244\021\212\n\016\302\232W\212aZ\214\247\2651\223\006\231\203\232\010&\230\313L+\232n\312p\21354Q\341\205\\QN\013\232k\212\210\216h8\307&\240v\031\300\246\355&\227c\032<\263Q:\360j\002\274\323\010\244\305K\030$\343\322\225\3078\246\355\3158F)v\343\255#\200\313\212\245,Q\2575\235:\202\324\304\2005N\266\3309\251\000#\265;\024\204qQ2\203\332\230c\315Dm\324\266H\240\304\241p\005T\236\327r\022\274\232\317\362\376l\021\322\244+\305B\343\212\251\"\363U\244Z\243:qY\263\255g\312+\240\210U\330\227\245^\211j\364KWb\025v!W\"\355W#\305[\214\032\267\030\253(\265(_jx\034PW\232iZaZn\337Zk \"\2421\234\322yt\326\216\242#\006\234\211\272\245*\253K\031\\\324\312E;x\035M1\244SP\274\250:T\r2\372\323C\202sO\022\201\320R\371\347\260\246\231\030\323H&\232TSLY\035j&B\246\225\034\243S\316\013f\224b\227r\200j\273\317\223\212\004\240\214\032\2539\315Qu$\364\2536\361|\265d\3066\342\243)\201\322\243 \212N:S\017Z1M\"\243a\305FG<Ui\255\201;\324Uf\217\216EV\221*\263\245V\221*\234\310\010\254\313\210\372\326t\251\315oD\265z%\253\321\016\225v%\253\261\n\271\030\253Q\373U\270\205]\214t\253\221\212\262\202\247\002\235\212\010\246\225\244\331HR\230W\024\233\001\2441\342\242a\316*?(\023\223La\267\245W\221\334\367\246\254\314\016\rJ\327J\203\214\223U\336\365\317A\212`\273\220u\246\274\345\273P\204c&\246\0141I\272\224\034\324\253R\205\310\246\262\340\322\252g\024\262F\241rEQ\223ho\226\232d\013\324\342\230n\027\035j&\270\335\300\246\344\232p\006\202\245\273R\375\234\036\325\"\307\267\245?\024\322\007z\205\366\324\rQ19\343\245\033\250\316i\204S\010\246\032\211\343\004g\025NX\210\344UI#\252\322/\250\252\222\307Y\363\305\327\212\316\222\034\236\225\377\331"
-byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\0021IDATx^\355\335\341\212\2030\014\000`\321\367\177\344\311\301q\333A\031\247\363\2646\311\367\375\014\010\352:m\322t\233&\000\000\000\000\000\000\000\310cn\003\265\024\277\374iZ\333\000\000\000\000\300Q\345+-\000\000\000\000}(\303p\217\245\rl\321\232\004\377\341a\017\000\000EH\237\001\000\330\246d\014\000\000\000\014F\271\002\000\000\000\340l?m\305\272\213\241\242\346\233\257\002\013\000\000\334e\270\302\204\004\t\000 \rS;\000\000\000\000\212\233\325\310\000\000\000\000\000\000\200\212\254\225\002\000\000\000\224\240\014\004\000\000\345\331J\013\000\000\300/I\"\000\000\2440\334_[\002\000\000\177z\226\347\217\225\351\277\217:v(\000\000@hR!\000\000\000\000.\245%\027\000\000\000`\014\032\205\000\030]\3565\005ob\000\000\000\000\000\000\000\000\000\000\200\354t\216\003\000\000\000\000\000\000\000\000\000C\323\354\010\000\000\000\000\000\000\360\226\345T\306\023`T.m\000\000\200~\3266\000\000\000\000\000\000\354\241\304\016\000\000\000\347\013\260\005\002\000\200\253\230\014\002\000c\270qV\242\033\005\000\000\340\036\3621\000\000\000\000\000\000\000\000\000\000\000\372\270q33;\330a\000\000\000\244\'1\005\000\000\000\000\000\000\000\200\275\362t\333\344\271\022\000v\262W\2568\003\000\200-\2176\000\000\000\000\000\000\000\000\220\234\336:\000\000\000\000\000\000\310,\302\212`\204s\004.\344!\000\000\000\000\000\000\000\000\000\000\000@\030\232\340\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200\314\3466\000\000\244\342]_\336\352\2675\253\363\024\000\250\315{\240\270\347\0000\020\330C\352\000\000\000\000\274((\001\000\000\\K\336\005\000\300G\2266\000\000\261i^\007\000\000\000\016RV8\217\366\025\000\000\000z\222\207\2264\373\334\001\000\000\000\000*R\035\006\200\300z\265\354\207\2330\364\2721\000\000\220N\270\331?\347*?\000\242\337\200\350\347\317Q\n!\000\000\000!H\337\030\211\361\010\000\000\000\000\000\000\300;_s\363!1$IHR\000\000\000\000IEND\256B`\202"
+byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\003\002\002\003\002\002\003\003\003\003\004\004\003\004\005\010\005\005\005\005\005\n\007\010\006\010\014\013\r\014\014\013\014\013\r\017\023\020\r\016\022\016\013\014\021\027\021\022\024\024\025\026\025\r\020\030\031\027\025\031\023\025\025\025\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000\272N)\t\315%\003\212u9jU\251T\325\204\253\021\212\265\025Z\217\245Y\216\254!\2531\325\210\352\312T\311S\255J\225&x\244\245\3154\265&\357zB\324\205\261M\337\232i|SK\nM\245\201\"\243\335\203\315\007\024P\t\024\360\331\034\323\223>\225(\346\244S\315J\006i\340S\261@9\251\007\002\234\r8\032x4\365lT\250\3654x4\362)\2148\250Z\22074\342\342\230\317Lg\342\2432Ry\224\276g\2755\245\244\022sSF\365(9\025\363\253\000i\224QN\006\224u\251P\324\310*\304uf:\263\025Z\212\254\240\253\021\212\260\234U\230\315XCS\245L\246\245Z\2234\233\251\t\315!4\332nsHzSi\031\362\270\246)\311\346\217\2366;y\025\023\312\316\334\212\025\275zT\234g\203A\340\365\245\006\245V\251\026LS\303g\265H\216EJ\033>\324\360)q\3158qKK\272\234\r(j\221\032\254\306jBqQ\263\324D\342\231\273\232\013Q\221\212\205\332\241/\315\'\231He\246\0313@\222\254\303 \307\275YV\343\232\371\330\234SI\240\034\322\321O^\265*T\321\232\261\035Y\216\254\305V\243\253)V#5e\rN\225:\032\235\rL\265*\236)\344\321\272\202\324\332BqA9\246\223Q\226\3057p\24655n\032.\224\261]\000\307p\034\323\336H\335\200\002\202\020}\323\317\245F[\232p4\3655*\232\225ML\264\361OW\305J\274\216)3\353J\r-\031\305(4\345lU\230\344\342\236d\250\231\251\205\351\273\362i\013R\346\241\224\342\2533sL\337M2Ry\224o\253V\256\rXy\200\025\363\331bh\034\232R8\244\006\235R-H\2652\n\261\035X\214\325\230\315Y\216\254\306j\312\032\260\206\254!\251\320\324\253S+T\252\324\374\321\272\220\236h\315\004\214{\323s\3054\232i \203\353P\263SK\323\030\346\230E\000b\236\t4\340i\300\323\201\305H\254jtj\231Z\244V\247u\245Vd4\340I\352iC\340\323\304\200\322\346\215\324\233\271\251Q\270\247\227\250\332Jc>i\003\323\303R\347\212\212L\342\252J\330&\2402S\032JO34\241\370\251\341\227h\315:I\363^\030F)(-B\363O\247\257Z\231\006jd\353S\245XAV\343L\212\260\203\025<l*\314f\254%N\22526*e5*\265J\246\234\036\215\364\273\251\013{\322\026\244\335\355M\337\265\263\201M\222R\303\260\250I\246\026\3057p\244&\200i\352i\353\322\234\264\3403R(\251\027\212\225Z\245V\247\206\033\205H_\314>\224\235\r;\250\244\333\212z\356\0359\024\365 \236F)\214\274\361\315*\276(ix\246\357\246\027\2405K\031\315JN*7\034f\263\356[\006\251<\230\250\314\264\202lR\371\325$w<`\232V\236\274d\265&\352Fj\025\271\251T\3565*\212\261\02758Z\225\005XC\212\2317\036\340\n\235C\001\367\252x\330\364\253Q\267\025a\032\247F\251\324\324\252jUj\2207\275\033\275\351K\320\254\017SM\337\315.\372B\331\357HZ\230MF\304\323\016OJa$\036h\007\024\341N\006\236\246\244Z\224\nz\212\220\014S\224S\307\025 \353N\316)GZz\344\324\212\2315e\023h\244q\301\307Z\252\333\272Td\225<\323\302\356\024\326R*6\244\r\212p\227\035\351\3536id\227\345\254\333\247\254\371$\346\2432S\014\264\236o\2755\2560i~\321\307Z\362\25184\300\344S\213\003@\251\222\247CV\241\000\342\255\242\014sR\010\363\320S\202b\244N*\3021\251T\340\324\350\376\365:>*\304r\325\204\220T\252\365*\275?y\305(z7{\322\027\246\227\243}\033\351\013\373\322o\242\230r\016s\3154\345\217\275\000S\200\247\201J\005J\265*\232\225M<S\307Zx\024\264\271\"\236\246\247E\025:&9\251v\323\031O4\302\276\325\014\230\315\021\222GJ~\315\335j\t\242\307J\252\331\006\243.}iC\342\221\245&\250\335\310q\326\250<\225\013KL2\323L\225\014\222\342\210\347\335^p\355\223IM$\203J\257S\244\200\212\221d\301\253pK\216\265v)sV\004\240S\267\346\236\265:t\247\253b\246F\315L\206\247CS)\305L\257R\243\324\201\251\352\324\023M&\220\2657u\005\250\335J\016i\304\036\324\231\365\240\216iv\236\364\241i\340S\202\323\200\3058t\251\001\251\026\244^\325\"\323\200\315.\332r\255Z\206.\346\254\242\374\330\251v\323XsQ:\023LKR\307&\247[p\007Jk\304Gj\211\342\310\254\373\210\366\223T\334\374\324\322\370\025\031\222\250\335I\212\317y*\026\226\233\346SZJ\202I3M\211\3105\302\314\233\032\230\r)\346\230W\035)\350\rH\207\232\267\033qV#sVQ\263S\251\305L\255S#\361N\006\244V\305N\217S\243\324\310\3652\275J\257O\rR\006\247n\3154\232i4\205\250\335J\016i\300\323\206A\3159\206\343\362\344\232r&\334\356\024\245\t\344\034\212r\340\216i\310\233\251\333py\247m\366\245\013O\013O\002\244\003\232z\216jEZxL\324\221\307\223V\207\030\002\246@\005X\205x\311\247\025Ri\273T\032\t\037J\003\001N 2\236*\264\261\225\035*\204\300w\254\313\240\027$U\006\223\232\211\344\"\252\\6\341Y\322\311\212\256\322S|\312C%Dd\346\245\204\356\346\271\t\242\r\332\251<eO\024\200\232n\356i\301\261R\253f\247F\253\021\265XG\305N\222U\204\224b\234$\247\254\225*\311S$\225:=J\217S#\324\312\365\"\265H\257R\003A<u\246\223\232(\240\034S\201\357R\251\315=r\234\251\247\000[\222y\247\246\027\202)v\362H\351SC\226R1\315 \007w4\375\274P\005<\npN3O\013R(\251\024T\2521S\30603OQ\315J\250s\236\325.\374\014Pe\246\027\367\246\357\347\232W\2275-\274\27185\025\365\300\003\002\262e\220\221\232\243rr\206\263]\261\232\257$\265VI2\rf\312\304\223P9\250\367\322\027\342\2412e\261W\341`\024\n\346\0359\250$\2105W\222\334\366\252\354\205M(\346\244U\251P\342\247C\305L\217R\253\342\245Y*E\223\232\225^\245V\251\221\352tz\231\036\245W\251\225\252Uj\225^\244V\247\346\223p\244\335@\247S\207Jz\361R)\251\024\324\200\006\353OX\317n\225\"\002\255\351R\274{\206\357J`9\024\001\212z\212\221E<\n\000\305L\225b4\334jV\030\342\234\213\322\2462\000*\027\226\205485\036\352M\325$rm\3175\024\256\030\032\316\271p\240\325\t\345\005+.Y95RY*\253\313\200j\233\276MB\355Q3\001Q\264\225\032>d\025l>\000\254f\033\252&AQ\236\016\rV\271\213\270\351U\224\020jPx\247\251\251\025\252Uz\220=<IR\254\225*\275N\217S\243\324\310\3652\275J\257S+T\312\325*\265J\246\237\2323K@\353O\247\016\225\"\323\327\245H\275\252U\251T\361\212\225\006i\314H\\g\212b\212v)\300`S\201\247\203N\035jh\305Y\204p}j@\271\2459\244e\3435\t8j_4\n\036\340TE\3019\246\231\000\246\264\343\2654\3146\236y\254\213\353\2541\031\252\022\334~\357\255Pyrz\324\022\277\313Te\223 \363U\214\265\013\311Q\0313Q\274\234RB\300\034\367\251Z~+=\\\021Q\312\334\324;\251s\225\301\252\222(\rB\363\3059i\343\245H8\247\003NV\346\244V\251\021\352d\222\254F\365:=L\217S#\324\350\32525L\255S!\346\244\317\024S\205-8t\247\212x\355R-H\247\025 5\"\232\225N*U\346\220\241\007\245(\\S\266\322\201\212)\312j\304ui\027\002\247E\315$\377\000-Bf\300\301\250\231\205@\357\203Q\273\323|\337z\206K\235\275\352\027\271\'\245Wk\242\271\315f]]y\217U\246\233\013T\232nz\324R\315\201Y\362\315\311\346\252\274\330\246\03123Q<\375\252&\2334y\373\005)\233\"\250\3071\024\222\315\315>9\025\227\'\2558\215\243=\215S\224\341\261H\240\221\232pjz\265H\246\236\264\264\340i\312\325\"\275O\034\225a$\036\265:=N\217S\243\324\350\32525N\215\232\2245(4\340sN\007\326\234\r=MH\246\236\246\244SOSR)\251\024\324\321\266*u!\272\323\374\220\335\370\250Xmb\001\243u&M(nj\314G\221W\020\363Vc#\212e\313dqT$<\323\013\361PH\365\t\220\324\022M\216\365NYI\357LY\361Q\3130#\255gI\367\263T\256\245\301\252\206_z\255=\306\001\2522\\{\324\017.j\007\270+\336\2423S\014\3314<\231\247\t~P*\252\265+\363MF(q\332\254+\344b\222H\367\340\212\221S\312On\364\325X\335\263\234T\253\002\027\300jS\010\031\301\240/\245.8\246\322\203\212pj\221Z\247F\251\321\352\3029\253\010\365b7\251\321\352\304m\232\230\032Pi\340\322\206\247\003OV\247\253\324\212\302\244S\357R)\251\024\324\212jU54uf3\201P\314y&\240\rF\352ru\253P\365\025i[\232\261\023sI75FS\203U\335\361U\344\224Uw\226\253<\235j\t$\315V\222\\UW\224\372\324\022N\243\251\252s\310\037\241\2522\311\266\251K!cT.\034\241\366\252\206\350\223\214\323^l\367\250\374\332\003\374\302\225\245\311\305=^\253$\206\246\rO\n\010\3159x5<d\032.Fb\317\245VCR\2519\251\220\324\310H<R\036\264\201A\007&\233IR)\251P\343\275L\215V\021\252\3025XF\253\010\325b6#\275N\255\353R/JZ\\\323\201\247\003OSR/\"\236\271\251\024\343\275H\255R\243T\312\325<n*u~*)rG\265D\330\n1\326\230\rH\207\006\255\302j\302\266qS#\342\235#\344U\031\001$\232\251?\002\250I&\rD\362qU\244z\211\237\216\265]\316j\254\306\263\346\311\315T\336w\020MT\232n\242\251\274\270\250eu\221qT$P\246\240w\346\2422b\221&\3114\364\223\'&\244\023r9\244QNV\315M\03152\216)A\301\247\013\200r\270\315E\036\014\234\360*V\001[\203\221NSS+R\236i)\247\212ni\312y\251\024\324\350jt5f3V\022\254Fjt5a\rL\000\247\n)FE8S\301\247\203R)4\360i\352\325\"\275J\257R\253\036\3252\313N\337\232\211\371=)*D\353VP\340S\322J\235d\310\244iqP\3138\307\025\237q-g\313\'&\240y\260=\352\253\313U\336b*\007\270\"\242y\362j\007 \203TfLd\326d\3142y\2523>*\017;\006\241\270\231qU\313\202*\254\362m\250b\233\nNi\r\336\323\326\235\366\325\306s\212\323\'\212E\353Vc\"\245-\201B\234\232l\301c\005\325\271\364\250\222r\307\236ju9\025\"\361R\003\212p4\244\323I\3056\201S%XAV#\025b1Vc\025:\n\235*x\352pqJ\016iiA\247S\205<\032x\247\npjplS\325\352U\227\025(\227=i|\332\221f\035\372\322\202\t\366\251\020\202jRr:\323\203Pf\333Q\265\3005ZI}\352\254\322qY\357)\334y\250\036Nj\006qUg\227\035*\233\317\305D&\311\244y\260\246\263o.\372\340\326i\223$\222j\264\355\270\361T\246r*\253\312sL\373F*\033\2517.j\262?\313QJ\3715\013\276k\253lb\231\273\024\0079\342\254\304\333\206\rK\031\302\232\2531$\323c\342\255F\374T\241\251\340\323\301\245\'\212m&iW\255O\030\253(8\251\320U\230\305XAS\255L\2652\034T\241\251\352i\324R\346\224\032z\232\224\032p>\364\264f\22458==d\247\211(\363)VB:\032\267\014\274\034\325\210\316\341\232\221\210\305T\225\215@\315\212\215\344\305T\236^\rQy95\013\275Wv#\2750\270#\232\314\272\0041+\322\252\375\240 9<\325+\215H\356*\005T\226b\340\223U<\302N)\032@\240\216\365RV\006\252I\212\254\347\232\212y?vEB\033b\n\256\362f\243\004\261\342\272\243&ED\316j\315\277)\315O\033\014\324\241\360H\250\231r3Q\201\212\221\rN\206\246\036\264\3523E%=*d\253\010jx\315Y\214\325\224\251\226\246CR\251\251\026\234\016)\340\323\251G4\270\245\035i\340\342\234\r.\352]\324n\243u8=.\372P\365\"6M\\\214\345*x\237\024\347s\216\265VI\016j\026z\257+\361T\346\222\251\310\370\250\036Z\211\245\025VYOj\253$\236\265\233t\303$\212\317b2Oz\206I{Sc\3062j\264\262nbj\253\311P3f\241sU&l\021\236\225VY\263L\211L\257\212\235b\362\230\267\030\025\267\270\346\236\207\'\232\265\023v\251q\212p\342\2279Za\024\345\343\0252v\251\20585.E-(\247\255J\242\247AS\240\253\021\212\260\225a*d\025.)\353\300\247\323\2274\361\323\232z\221\267\030\346\212)\331\2434g\336\227w\275\033\275\350\335K\272\200\324\354\324\210j\344\022`sV\024\214\214T\256\271\025RU\252\3561Ue5RS\326\250\312\3705Y\332\240y8\252\356\370\353U%\223\255T\220n\316k6\340\024$\325u\220\022sM\236m\261\234U(\344\335\232\255<\330b\005WiM7\314\252\367\r\236j\263`\212|\014\250\030\236\275\252\031&\'\275uACt\246\260\332jH\233\346\253@\346\206c\212[bYM8\241\305 \310\251P\342\246V\035M\033\275\351sN\006\236\r=jd\025:U\230\305X\214U\204\025<b\247Q\212}8t\247\251\247\203\232x\247\321IFh\310\243u&\3527R\356\245\006\236\r:\236\231\251\320\325\270\371PjTs\212G\031\025VU\300\2523w\252s\036\rfJy5Y\337\025]\344\252\362\276zU)_\232\205\245\305T\237\347\310\254\306\006)=\251\2679h\270\252\221\222\212j\254\331,j\006\244\311\002\241\235\200CU\026O\222\241iqQ\264\265\330\305.\rJW\177Jr)SS\241\315HFV\235n\273G\326\254\001\217\245B\300\006\240\032x>\364\340sO\035)\303\245=zT\252*d\253\021\212\263\032\325\230\326\254\"\232\235\005N\264\240S\251GZz\323\307J\2202\221\3374g\035\3512\t\346\230H\024\233\250\335\357I\237z\\\373\322\356\245\006\236\246\244SR-J\207\025j\t\007CS.3O$UK\247\000VT\322\365\252SK\326\250J\331\315S\225\360j\0079\025^F\300\252s\266G\025Q\236\243sT\256F\356i\222\250X9\353\212\244\334(\315W\224\014\032\254j9\037\n}\253.\346\353p\"\241\363p\265\013I\232az\354\022J\263\014\265q\030=L\251R\205\315K\034x\253\n\237-G$\031\007\332\253\343\232)\340\324\213OZ\221F*D\353V#\025f1V\342L\325\224Z\235\026\247AS*\346\244\362\3516b\214c\2658\np\024\341\301\344P}\251\244\361M\240\250 \234\323i2(\310\240585=Z\244W\251U\352El\324\361\234T\242o\232\234\322\340\032\313\273\270$\232\241,\265Ji*\244\222U\t\345\303T\006\343\025\004\323dqP\026\371rj\224\357\363qLV\315#\000x\250f\210\273\001\236\007Z\255z\241S\212\315s\225\252\316qUn\030\3545\227(\307Z\205\237\002\242/Lg\256\301N\rX\215\361W \222\264\241;\226\246P\001\251\343\346\254*\322\262qT\'\\\034\016\265\030\007\2759y\372T\312)\343\212\221jd\025b0*\324C5r!VcZ\260\211S*b\247D\251vqI\266\223fM/\227J\022\227m&)\n\232n\337jk\'qLe\033s\236j<\320Z\223u(jpzxz\221d\305L\222\212\23698\315#K\363u\242I\276J\313\271\233\236\265NI*\234\322\325Y%\2523\266MT\227\201\234\325S>\323\203\322\225\344\3711T\244\311$\212\215$&M\264\263\315\261\366\216\265\013\271\343\232\216F\005pk>d\303\022:U9\0178\252\263q\326\263\256OZ\246\347\025\021j\215\232\2735j\235\r\\\267<\326\234\r\300\253\000\324\350\010\253qr)\354x\305g\310\271ri\233M*\255J\242\236\253\315H\253S*\324\361\245Z\211*\334@\325\310\252\302T\351V#\034T\233ivRl\305\033h\305\033h\333F\332\nTl\225\013G\234\342\242\"\231I\234Q\272\223u.\372p\222\244V5<R\340sQ\311>_\255#Jvu\254\351\244\301<\325i%\342\250O5R\226|w\252\257q\223\326\242\222_\227\255g\314\344\032h\234\236*d )\315V_\221\230\323H\347\'\2551\333\212\245;\222x\250\310,\247\326\252N\274V|\355\220k:w\316j\224\207\346\250Y\2522\330\256\3166\2531\265\\\200\340\326\214-\322\256\247&\254\241\342\247C\212s\034)5T\214\2326\212P\224\360\264\365J\231V\246D\251\321*\314kV\243\253q\016\225eV\247D\025*%L\252i\341H\243\024\205A\246\355\305\033iz\322\355\243m!L\324\016\204\036:\325wB\016\rB\303\006\230E5\251\273\2517S\225\252\334X\305$\322m\034U\027\237\347\251\032o\226\251K&I\252w\023`Vl\363f\251O\'\025A\347 \323|\362sQJ\373\205F\277z\247/\205\3050\362*)X\250\252\357\'\030\252\356\016\352\225W\013T\356G&\262g_\230\251\357Y\323\214\022*\224\243\006\253;TL\325\331\304rj\354c\212\267o\326\264c8\305^\205\262\005YS\3058I\212V\237\345\3069\246.M8\n\221\0275(Jz\245J\211S\"\342\246AV#\025f5\253q\n\265\030\251\321jeZ\231V\245\013\3054\257\265!AL(i\010\366\244\344\036\224\340i\303\232\n\324N*\274\313\3115]\327\035j\0228\2460\250\310\305%.\340\242\236\227\033GZ\202k\222\347\212\257\277\232I&\371z\325)n1T\'\271\344\363T\245\234U9g\315S\222L\232a\223\024\335\371\247\240\311\251dC\362\212L\342\240\27095Q\372\322\355\310\247\014\342\252J>bk2\365pr+.a\270\346\251\\\014\032\246\365\003\232\355\241\\\234\325\344 \014U\250[\232\320\210\356\305]\207\212\2348<\003B\276\016EK\2748\347\255>\"\000\301\025 \003\0359\247 \251\200\247*\324\312\265*\255O\032\325\204Z\263\030\253Q\212\263\030\253\010*d\025:/\024\355\264b\220\212M\264\322\264\233h\332)v\320A\2462\373T\016\231\250\036<T\014\225\023-FV\242\221\266\n\204\226sH\347j\340T@\344qLr@\367\252\322\310T\363T.\246\311\254\351\245\343\255S\222CU\336L\016j\264\222\344\346\243\337\223R\'5n\33170\253\206\034\271\317\245V\2256\223T\3465U\2014\344V\003\024\345\004\256\005C,{3\232\313\274\301\315e\272rk6\344\362j\243s\232\202A]\324\021\032\265\034E\215ZH\366\343\232\273\t\332957\33200*E\220\340\037Z\221\036\254F\331\251\222\247SR\250\251PT\250\2252%L\251R\242\373T\350\rX\215sVc\025f1VPT\350*tSN\"\223\024\204SH\244\"\222\212Pii\n\360j6@{T/\036:T\017\025B\361\324\017\035Wh\3135#\247\224\2759\252\3547\nE\213\034\323&^+>\353\245d\\\023\223Y\323\271\031\252\215/5Zyrj\276\372\003d\325\250\252\375\257\336\025\244S\253\037\245Q\270\035k>^sP\221\315;\034dQ\007\315\223\336\241\274<\032\307\270\311\006\250\260\3005\221x0\306\251\023QHx\257DQ\264S\367\355\036\364\251!\315ZI2*\304m\223\315Z\215\227\025:\000OJ\2368\352\302Fjd\210\325\204\204\232\235-\330\366\251\222\335\207j\235b#\265M\032\324\252\2652(\251\321\005Y\215*\302GS\252\221\332\245Nj\300^)i\010\315!\030\246\221LaIE\000\342\235I\232C\3151\2074\306J\205\342\357P\264y=*\'\203\0075V\3423\221Q$9\346\234\352\000\252S\234\n\313\271nk*\355\266\346\262g\223vj\214\255\212\254\304\223M\3159:\325\270\273V\215\262`\203Z|\025\353Y\327\'\004\325\t\0075\0163S\"\322*lb}j\255\3379\254\213\232\2417\025B\3557\214\326\\\243i5\003\362+\320\311\246y\233\232\245V\007\030\2531\032\263\031\2531\366\253q\034U\270\315Z\214\325\250\305Y\214U\270\205YE\366\251\202\003\332\245XA\035)\3020;S\204@\2368\251\02221\320\324\350B\036x\253q`\343\006\254\205\342\200\274\360)\340\221K\272\2274\023M\244\"\230E%\024\233\250\335I\232Jku\244#<TN\273j)\010\306*\244\343\212\213\225\025\034\234\212\317\272l\003YS\234\234\326M\351\313qY\263\r\243\025JE\346\241)Q0\305I\020\253q\016Eh\333rEZ\230\224\000\216\225Rnj\254\221\325v\004\032\232\026\r\305LP2\232\315\273]\254A\254\253\232\316\234pj\233\363\305g^E\264\346\2507\031\256\361\346\3340(\214f\254F\265m>\225j5\346\255F\265f45n(\317\025n(\315]\2123\351V\342\210\325\250\343>\225a\027\025:\216\225*\375)\312\005H\020\032P\n\3644\365s\236EX\216H\317\261\253*\343\03404\345\223\035i\336b\372\323\201\007\275;\002\232h\244\335M$Si\010\3156\212nh\335FsH\033\006\222w\363z\016\225U\227\232\257$e\237\332\221\220\n\255?\265f]\214\346\263&\004f\262\256G\'\326\263\345OZ\251*\324\0148\250\331)cZ\271\n\347\025z\003\203S\264\243\034\364\252\362\020zT}j\t\020f\236\211\261I\3074+aj\205\313n\'5\227rk>a\232\245\"b\252\334G\275k.x\366\223]z\034\325\230\205[\210\n\267\030\025j *\344X\253\221v\253\220\363W\"Z\271\022\325\330\227\212\231W\232\231R\244Q\212\221x\247\001O\031\024\340M8r)@\305H=\252dcS\252\206\352)\342\021\333\212_,\216\206\215\314)7\373P\010&\202\264\306Zg\"\2234\264\323\326\233\272\202\324\224\344p\200\344g5\003u5\031\0315\024\243\212\2437\031\252\027\0039\252\022\256A\342\263.!\316k6\342<\003T\035}j\022\271lP\321\023\332\204\204\203V\342L\n\231\001\006\245\306EU\231\014-\317\3354\003Q1;\263R\031r\017\035j \374\021Tn\233\004\326d\252\\\325YV\253:f\240x\353>\356\014\346\267\342\030\253q\325\230\216*\324mW\"9\253\220\366\253\261\n\271\022\325\350E]\204U\310\370\0252\324\213R\257j\221zS\300\247\205\315H\251\305<\'5 \214b\234\261T\2411R\242\212\224-)\035\2501f\232c>\224\337*\232\312V\231\235\335\251\254\264\322)1\216\224\3265\033\037J\024\022zT\351\016{P\360\342\231\366r\352H\355QI\026\301\232\201\307\031\252s\307\2735JXx\252S\333\221\232\317\236\034\003Y\227\020\3475\2374\030\252\342\334\356\251D<R\210\361\332\234\027\035\251W\255L\244m\250\256Hd\252\3528\024\254\243\025\023\0361Qn\306j\234\377\00005Q\327\002\252J\225U\306\rD\313\305S\2353Z\250j\304mV\2429\253q\n\271\r^\206\256\302j\3645v*\273\025YC\221S\245J\242\245QR\252\361R*sS\"\324\241qJ\026\244\002\244E\251\002\324\212\265 J\236+\1770\212\265\366 \0055\355F8\250M\276;T2C\2361L\026\274\322=\276:\212\206H1\322\242\362\352)\023\025\020^j\3241\003VxE\250\230\356\244Q\203\355QM\036\366<`Uw\207o\025\003\300\016j\254\220\001Tn#\034\326u\324Ca\254Y\223\223T\344L\323L<f\231\267\024\322\270\246\236)\200\344\324\231\342\230\374\212\215W\232R\274Uw\034T\'\241\250LY\036\365^X\261Tf\\f\250\315\305D\016x\250&Z\270\2075f>*\334F\255\304j\344&\256\303W\341\253\320\325\350G5y:\n\261\030\342\246J\231F*T\342\247J\231\005L\213S\004\310\243m<-H\253R\204\315J\211Vb\200\261\025z\030\202\017z\230/\255F\353Q\262qP\264`\232<\241\216\224\206<\212\211\340\007\265D\326\240\347\025NkV\007\245W08=*h\325\224r)\035\213\032thH\251B\361\357@L\347\"\253O\037&\251\312\244UY\006j\214\311\221T.\027*k\036\346.MQh\360h\331\217\245F\321\363QJ\233EVc\315\010\234\323\372\034b\230\353\305G\323\255)pF*\'\035j\000\235\375\351vc<Ui\200\316*\205\314c\232\312\270\\5A\322\243\232\247\210\363V\220\325\270\215[\210\325\330\215^\203\265_\207\265^\206\264!\342\255\307\332\254!\251\320\324\351\315J\243\232\235G\025<B\254*\361\236\325*t\247\005\315=R\244T\251\243\210\261\000U\350,\330\365\025u \013\300\251\026#\232q\212\230\351Q:\361P\221\203I\232F\250\316I\244\0242\206\250\214#\322\232\320f\243kp)\2416\323OZa|S\034\206\353\326\253J\242\251\313\037\025B\340c5\2378\3105\233q\036sT\236\016i\246\034\n\215\243\305W\235;U\177\'\236\224\361\026*7\\S\033$TL\224\300\2314\346\217#\336\230\261eM\006>\243\275T\236-\2475\237q\320\212\312\236>j\273\246*\264\274\324\261\032\265\021\351W\"=*\344Uv\021W\340\035+B\036*\354,\005]\212AVRQVR\\\324\350\365<njtsV\021\252x\316j\314f\247\000\036\203\212r\212\225\0075a\0235\245cl\016I\037J\270\340F\271\024\220\363\315ZA\232s(\306j\244\307\232\205\2335\013\232`\351Q\263b\233\277\236\264\315\374\232z\267\024n\244\335\336\242i)\243\004T.\274\361Q=D\334\324\017\232\253+\366\252\027\025BB9\252\262\340\325V\000\232\215\3005\013\245@b\311\311\250\331\000\250\235qQ0\315F\334\212c/\024\320\234\324\210\233\273Pb\332=\2526\\\034\324S\333\371\200\342\262n *NEf\\&\t\252R-B\361\346\231\025Y\214\325\330NqWa\311\351W\340RqW\340\\c&\256G\326\255\306\3358\2531\265Y\214\325\230\332\255F\371\253\021\232\263\035YJ\235*\314dq\236\225:\310\0008\024\370\311\317Z\271o\036\343\232\321\206\005\034\221WS\n8\247:\356QND\332)\376f(ir*\264\255\326\240\'5\033f\230O\025\023w\246\023\212\211\211\006\236\217N-L-M\004n\346\244b\255\320ST\001PN\240\347\025M\306*\007\006\253J*\234\353\234\325\031c\305S\232#\332\252:\221Q\363J@\"\242a\232\202E\301\250\031sP\272\363\201H#\3074\326J\210.MX\211v\216G4\256\242\242d\3108\355Q\343)\356+:\351wg5\221<<\232\251$\0315^HqT\2435n%\315^\202>\225\243\002\216:\325\330\206:\n\267\035Z\216\254\306\325f3Vb5j3Vc\253QU\250\352\302\n\262\202\245\251\020\032\235\026\264\254\262@\317j\321\007\006\246\214\346\254\306Aa\355R\270\030\342\240aL<T\017\311\246\205\024\327\025\013\212a\031\250\330Tl3Q\234\255\014\374TFS\232z\266i\333\261F\352\216C\221U\237\212\202CU\245\3475VE\315U\221*\254\221\346\252\311\016j\006\203\006\230c\250\3311P\272f\240e\342\242\362\262i\306<\n\206D\300\246\307\037\255LW\002\231\267u\033\006q\336\253\315\031Q\221Tf\217x&\250\315\005Tx;\325ya\366\2548G5z\025\253\360\n\277\027n\365e\032\254\244\200T\361\311VcsV\242j\267\021\315Z\213\234U\310\205\\\211j\334IV\243Z\235EJ\213\232\235\022\246E\305iY\'\313\236\325p)\251\200#\024\365%[4\377\0004\322\356\310\246=@\375i\244\323j6\250\351\030TL\005F\342\243n\225\003\002)\003b\236\257\232~\354\212\215\332\240z\257!\"\253\271\315@\342\240\220f\253\262\365\252\356\274\324f,\323\0145\014\220\361U\344\210\366\250L4\242\034\014\324o\035W\222<\232\025)\2547\034t\245\n{\nk\304B\356\250\316YH\305Pt\303\032\205\300n\242\253I\020\002\251M\0315\315@\247\255]\204\036*\3649\030\253q\261\372T\350y\2531\373\325\250\315Z\210\325\270\252\344C5v\025\253\260\255]\205j\344IVQ*eJ\231\022\254\"U\210\342\315hZ\241E\031\253j@\251\001\3159\223\345\250\263N\335\212k>j2y\246\232\026\243\225qU\331\2151\244\305D\317\232M\304\212k\034\n\210\363Q\260\244\034T\200\366\241\206j\027\030\252\262\234\325s\326\243qP\260\250\235r*\273\'4\242,\322yx\250\246\210v\252\257\025Dc\2464x\250Yq\232\201\327&\230F*23N\217\255:E,\244\016\225\023(\331\323\232\243*rj\263\240\252\263\014\n\243) \327=\004y\306j\344K\201VR\254FsV#\253Q\325\230\352\334@\325\330V\257B\265z\025\351W\242\214\325\350c\253\320\307Wm\355\214\207\000sV\227O}\273\261\3054DV\246\215*\324+\202+B,m\306)TsS\306\274\322\316\301V\252o\346\227}5\236\232M &\224\023\232q\301\025\023F\rA$5\001\210\320#\246J\270\250\266\363H\313\305 JpJ\n\324\022\212\254\353\232\201\226\242aP\270\250\310\3151\323\2759\027\212k.\rF\351\232\253$}j#\036\005F\313\305@\361\324\014\225\023%F\321\320\243\006\236\352v\344Tl7Fj\214\211\315@\351T\347CTe\2175\316\304\274U\244\251\320U\230\305Z\214U\230\226\256D\225r$\351W\241N\225z\030\363\212\320\202.\225~\030\352\374\021U\350\243\253\266\361\266x\025\253bwe\037\246*\013\250\224>\027\2455#\251UqV`\0370\253[0\325\"/5\005\331\311\305T`E\007\2323\212\001\315.\354R\007\247\006\315)\031\246\224\3154\3061Q2c\265A*f\243\t\212B\224\2339\251R-\302\207\217\002\253I\035Wx\352\274\221\342\253:\221P\270\250\2623N\333\225\241W\024:\324%qQ\224\034\324\016\225\003\255D\351\221PI\035B\311Q\262SJc\232Uc\223\216\206\223\313 \032\243*\362j\274\213\201Ud\\\325Ya\256a\027\212\231\005XA\212\261\030\253q.j\334IW\240\2175v\030\372U\370\"\351Z0EW\341\212\257\303\025\\\2111W`NEk\306\321\305\020\332>jH\344*\305\207ZR7}h\306)A\305K\013\374\302\264@\310\006\246E\3435Zd\005\252&\210b\2421\342\230W\024\323\322\230x\243<R\203R\241\251\002\003G\227\315\r\0105ZX}\252\023\026)\214\224\322\2705b\025\364\244\225\000\252\256\225Y\327\223P\272\346\253\274|\364\250d\207\"\252\264<\321\215\242\200\300\032S\206\250\231i\205*\027^j\t\023\232\211\227\212\205\326\242x\352\006CM\332H\305\"C\264\340S\244\033\024\344\326{\216I5VNj\035\2314I\006\361\\J\221\305L\200\232\263\032\325\250\226\256D\265r\024\255\010\022\257B\231\255\010#\351Z0G\322\264a\216\256F\225j1V\242\025iML\225(\300\024\204\322u\253\026\361\234\346\264#<sR\356\342\243h\367sLh\361Q:T.\270\250\210\246\221F8\246\205\346\254F\243\025 \342\244\373\300R\201\223L\222 j\007\213\025\013\305P\262b\244\210b\225\327\"\253\312\265U\326\242)\232O\'4\215jXt\252\323\332l\\\221Td\\\032\213nh\013\212\010\315&\336*\t\027\232\205\3075\013-F\311\236\325\023\257\025\013&i\205q@\343\232\255p\305\2115U\324\232\256\351LX\371\247\272mZ\340#J\263\032\325\230\226\255\304\265n%\253\260\255^\205kB\005\255+t\351ZP%hB\225j4\251\320b\254#b\247V\251\025\352O2\223}>6\347\232\321\203\224\030\253\261\307\362\203O\362\301\247\210\370\246I\037\025]\327\025\013\255@\343\025\013\032g\231\212@\374\324\350\374T\212\331\251\307JQ\326\237\267\"\230S\232k\303\306j\273\303\232\0048\355Lu\305@\351U\235*!\0375<1naWV\004\nF*\245\375\250\021\203\212\347\247\213\014j\r\230\243\034\320S4\335\270\250\244^j\274\211Q\024\246\025\305D\353\315D\311Lh\267\n\207i\\\346\253\310\274\324.\234UvL\322l\301\024\331\311\333\322\2708\326\254F\225j5\253Q%\\\211*\344IW\240^\225\241n\275+R\335:V\225\272t\253\361/\025`\014\npj\221Z\246V\251\224\346\244\024\241I\251\021\ri\331\203\214\032\323\211r)\342,\032\224\307\201PH*\273)\346\2538\250\035MD\361T&>i6\342\234\032\246\214\325\204jx=*d\"\234\024\023S\254*\313\212\202K`\246\242h\270\342\253I\0275\004\253\201U\\d\323\002\202j\314q\343\245I\222\005E;\371\211\264\3265\324\0305BU\305C\212\226%\315$\221\343\232\254\342\241qQ\025\2441dT2GQl\241\227j\3259:\324%*\031\026\242\362\311\355\223J  \344\216j\265\301\3005\303F\225j4\253Q\307V\243J\267\022U\310c\253\360G\322\264 \217\245i[\2461Z0\214U\270\316*PsJ\rJ\200\232\235\026\254 \251Tf\247H\372U\230\340\253pb3V\322M\2475v9C\257\275+\214\324L\225\023\307U\244\217\025Y\327\232\210\256i\014\\TM\0350\256\332P\370\247\t\200\247\t\375\352xe\335V\3435`8\244f\004S\n\361\232\2551P=\352\224\203q5^H\352\014m5b\027\251_\025\013\216*\205\322\203Y\223\2463Uq\315O\025,\203\"\252\272T\016\230\250\310\031\246\362)\214\271\250\335)\222\017\224\325\027NMD\302\2431\367\247A\021/\2228\024\223\234f\262/\017&\271\030\343\253q\307Vc\216\255D\225n(\352\354Q\325\350c\255\010\023\245_\204c\025r#V\223\232\231V\244T\251\221jd\253\010*x\3235n\030\371\025u\"\300\246I\362\232\221$\014\005Y\204\221W\003ei\303\024\216\231\025VHI\252\262C\212\210\305\315)\217\212\215\242\252\322\245Wc\212g&\200H\251\242\224\255[\212\344\325\204\234c\255#\\\320n2:\324,\333\252#\336\241\220T,\224\370\306\rJ\303\"\253\311T\346\2523.j\233\246\r:.\264\347n\325\013s\315E\"\361U\312\322\025\246\204\311\246\310\240T\017\367j\243\2554G\232>\316[\223\322\225\300Q\305P\270<\232\312\272\3475\315\307\035Z\215*\314q\325\270\243\253qGW\"\216\256\304\265v\025\253\221)\253\221\n\271\022\325\204J\235#\251\226*\221b\305L\213V\"\025r\034\n\270\235)\257\021jjZ9\345A\342\254\301\033\257QW\021x\245\034\032V4\3020:T\022&\356\324\317\'\332\203nj)\"\305T\226\022{UW\203\232g\227\212aA\232zGO\306\332]\370\024\320\345\215;q\245\004\232p\031\244d\315Fc\366\244\331R\252\374\265ZU\301\252\262\2409\252\215\0375Rd\301\250\033\216\225\03350>x\244c\232\214\2574\306\030\244\003&\243\225N3U\034f\243a\3055T\361R\221\300\250&\\\212\317\235z\326e\312pk\0068\352\314q\325\270\243\366\253qEW\"\213\245[\212*\267\024Ur(\352\344Q\325\270\242\253\260\307V\222:\263\034u2\240\247m\024\0059\251\343Z\265\020\253\326\343,\005jG\024HG\2329>\224Ks\0349X\200\301\247\333J\222\215\254\243\'\245+\305\260\220E0*\347\255J\226\373\251^\305\207A\3050Y7qN\026\'\322\221\255qU\345\266\036\225VX8\351T\345\267\366\252\222@Gj\207\313\"\235\214\nc57w\024\320qJ\037\232\23004\360x\247\250\240\257\2555\224\na<UiMV\220Uy\005A\"dU\031\327m@y\025\033.)\024\342\234\016\323M\220\206\034R*qQM\351U\212d\323\014D\366\243\313\305\016\265^AT\346\\\326u\304<\032\301\211A\025n(\252\334Q{U\310\242\253\260\303W\"\206\255\305\r[\212\032\267\0145v(3W\"\202\254\254\\T\252\230\251B\323\202S\326>jt\216\247H\361V\"\005Nj\300b\375ML\260\344\003\232\236(0A\025snW\r\311\365\252\262BA\342\256Y\302\315\301\342\265a\2678\033\260jf\264A\332\242\222\327\035\005T\222\337\332\253Kl\007j\250\366\303\322\253Km\355U$\200zUg\267\317j\257,\033j\244\211Q\020i\2704\241NjdZ\235R\236\006\r5\316*=\324\323P\3123U\335j\273/4\307N*\234\361dU6\217\024\306\346\233\266\232A\241c4\366]\213U\\d\324{9\315?\003\030\3051\327\333\212\211\326\253H\271\252\262\246*\235\302\022+\002\030\261Wa\2175v(j\344Q{U\310b\253\221EWb\212\256E\r\\\212\n\273\014\025n8ju\204\267AO6\345z\212r\305N\331\212UZ\261\032U\204J\235#\251V<T\250\010\2531I\212\224\311\350z\320\030\016MX\267\230\036\007Z\270\222g\275O\034\356\247\332\256+\254\253\310\346\241\226\005\365\252\222\333\346\253<\003\035*\254\326\346\250\313\t\007\245B\320\373Uy`\3105Bx0zUW\213\006\231\262\236\221\346\247H\252B1I\263uD\351\212\205\206)\233\351\254sQ\262dUgB\246\242\366\250dPj\264\320\361\232\252\321\340\320S\"\230\027\232\225Pc5\034\252_8\355U\374\274\232x\203\214\322:\n\211\223\216*\007^MU\225qUe<UINA\254x\242\366\253\220\305W\341\212\256E\025\\\212\032\273\0245v\030}\252\3640{U\330\240\351V\342\207\025e\"\366\251\243]\2548\251g-#\014\214b\231\266\220\246i\311\035XE\253P\307\270\325\330\355\263V\340\262V\373\304\nl\266\241[\003\245D\321\354\245V\000S$\220\221\212\201.L2\002zV\225\275\350|sW#\274_Z\261\036\240\212y5an\343\233\2750\220r*6\\\3242G\232\255$\000\366\252\362[\016\325VX=\253>\346\014v\254\351\223\006\253\221\315=3Vc\007\024\342\264\322q\332\243\220\223PI\232\200\212A\326\247H\303\n\206{|\003\305P\2316\346\253\263\001Q\263\202*\254\230\025\036\341M\030\316jBA\000\n\225\341\002>:\324V\361\002\016{S%;x\035*\273\036*3\322\242qU\245\\V}\300\301\252R6\rT\202>\325z(\252\3641U\350a\253\260\301W\241\203\245^\206\017j\273\0245n8\252\324qU\224\213\212\225\"\303\002EXh\004\213\223\301\250V\337\232q\267\3057\312\305H\261\325\250S\025z6\300\251\323s\036*R\017z\215\342,=\251\277c$t\246KhS\255W{\\\216\224\301\026\316\224\276a\035\315><\261\344\325\373gT u5tJ\r/\233\315!|\212\215\230TN\001\035*\254\213T\356#\r\332\250\265\201\225\250\032H\006\206\323\366\364\024\323o\266\230a4\326\207\025\013GQI\017\025VE\301\250X\355\246\264\344\000A\245mDm\303b\262\257\257W\007\007\232\307\233QnEW\373{\223\326\217\2653w\253\020\266\376\365`BH\240\002\247\232\233vF)\3100\325\014\311\315U\221qP1\250]\261U\345z\245q\212\315\230\363N\267\217 qZ0\307\232\275\0145z\030zU\370a\366\253\320\301\322\257E\017\265\\\212\032\267\024\036\325j8=\252\324p\324\353o\237\245;\310\305\006 \242\231\260\236\324y\024\341\016;T\210\270\251\323\025n\027\013VW\347\035*)\"`iV9\010\366\242K\031vn\0075\002\333H\307\232\235l\262>aQI\246\340\344t\246\013<\037J\236;`\247\203V\026\006\3052H\212\212\213\004t&\2170\216\2434y\353\350i\246D=qQ\262\307\327\"\232\002\036\206\220\240\250\331\001\252\362@\t\250\374\237j\215\343\366\250\014\0315Z\350yB\263\234\344\364\250%\340V}\314\373\001\346\262no\260O5\235-\303\312p*\007\215\310\316*\214\322\264MDW\2315\243mq\310\346\265 \270\310\305<\276M\000\212\224)\312\236\324\351Tb\251\312:\325Y\024\212\251!\305U\221\252\234\315Y\363\003\232\267n\230\305i\300\235+J\010\263\212\277\014=8\253\360\303\355W\341\206\256\303\007J\273\0245n(j\324p\325\210\340\315N\260\363\212\224A\221M6\371\355J-=\251~\317\212g\221\232i\200\366\245X\rX\212\"*\314@\251\253\237)^@\252s\273\016\235*8\256\335\0163\305Z\213\347 \346\257\242\002\007\024\343\002\267j\202[%=*\017\262\025<T\211\023}(\221@\3523P\264@\366\250\036,t\250\232#Q4u\023GL)\212o\314;\232Uc\236i\305i\nf\243xr\016\005E\034`\267\314+3T\\H@\355Yn9\250f\031J\304\276V\346\261e\201\345n\001\255\r?J$\202\302\264\233FB\277t\346\271\375[D*\305\224\037\245s\322\332</\323\212\261\014\205@\255\033[\216@\315_G\335OS\223W\341]\310)\322BXf\252\274X\252\263\'\025\233p\270\315P\227\"\252Hj\244\325\241n\235+N\335:V\245\272\003Zv\361V\2040\372U\370a\366\253\321C\355W!\206\256E\016*\314p\347\265XHN*t\200\n\225a\315<[\346\245kr\253\234T&\003\214\221\212\022\001\212\036 \007\002\230\212\007\\Ps\236:S\205I\0319\301\242xs\315W[p[\223\212\277ol\251\374Y5m\006)\347\2450\344\367\244 z\324e\260x\246\222I\351Q\270>\225]\201\3154\220i\257\016j\273\304@\250\212\323\n\324\253\000\3056H\312Ty\243u <\325k\273\025\2343c\346\254\013\210<\246 \326u\313\355\006\251\224\022\347\201O\265\260I\033\356\367\255\213]9P\014\n\270lT\257J\316\277\322VE<s\\\216\265\243\030\325\230\n\304[\023\267$\021L\216\026I=\253z\307N{\224\312\236i\362\330\311n~aVt\366\371\302\236\365zX\212\347\320\3259R\251\316\231\025\231q\037Z\316\2351\232\317\227\202j\224\307\255l\333\247J\323\267J\323\267N\225\251l\275+N\005\034b\264`\217\245hC\035\\\212/J\273\024\036\325e!\251\322*\231!\'\265N\220z\212\231a\031\036\224\347UQ\301\250\035\001\250\212`Sv\2029\246\030\262h1c\2650\214R\031\n\363Q\265\303\023\357L\334\304\344\232\265h\3377\'\351Z\221\003\212yPi\n(\353PH\200\237\224\324a\010\247\034\001Lf\030\250\037\035\252\027S\236)\231\"\243\221\313pzTG\203M\"\254\304\240\201M\2352x\252\345)\273\001\247\010h1\355RH\254\035J1+\235\242\262&\262<\344UAj\310\304\3665r\312\334\253f\266\355\342\340f\246+\201\357PI\030n\010\254\313\3355g\004b\263\016\206\212\245v\214VM\316\204#\223**\355\205\234\220\214\201\322\247\234\t\024\207^k;\3101L\010\351\232\320g,\2035R`*\224\3035\237:u\254\313\224\306x\254\273\201\214\326l\355\326\272;t\351ZV\353ZV\353\322\264\355\326\264\355\327\245i@+B\004\3163Z\020\247J\277\014y\253q\305\355V\022\020{U\230\341\036\2258\200\n\0320\017\024\306\217\216\225\031\216\242h\271\351Q\274x5\031S\232\010&\230\311\305B\321\346\233\345S\2049\253\020A\206\025\242\213\322\236\0234\331\027\002\253\225\346\224\364\353U\345p\017\035j=\244\321\261\215\006\023\216\225\024\221\365\252\254\2074\306\\Sq\232\232\020I\305:Q\203\212f\314\323\226\021K\345\343\250\244\221C\256+:\342\325\024\223Y7\210\t\342\241KA!\2531\330\355#\0258]\264\354R\025\342\242x\301\250Z\034\324\rb\256rE\037fT\\\001T\256\254w\253\021\326\262L\'v\010\344T\245p\270\250%\034r*\214\311\216\235*\234\311\305f\335G\301\254k\265\353Y3\257Z\352`^\225\245n\235+J\335s\212\323\267N\225\243n\275+F\005\351Z0\n\320\207\265_\204U\350V\256F\225:%J\253\305\014\271\246\024\250\312sM\331\223Lx\201\250\032,\032o\225Mhx\250X`\323\243\217y\251\214A\005:-\271\253\nFi\373\300\246I*\036\365\004\223\"\3645U\356\027\326\243\022\253\032\221gU\355N\373W\240\246\233\2064\306\311\352*2\202\230\320\026\357P\264e\r\021Hc|\324\314C\234\320\000\247\002\0075^[\241\234\nh\270\004`\325;\267\315eJ\204\232\265g\007\025x\3006\324M\020QQ\025\301\246\361\322\230z\322`S\031j6\025\003\014\036*\235\325\220\'z\212\250\320\340c\025Rh\372\3259c\252SG\326\250\\\306\0105\215y\017Z\307\270\213\232\351\255\327\030\255;t\316+N\335zV\214\tZ0\001\305h\300\265v\036\265~\001\310\255(EhB\275*\344C\245YU\247\205\305\005i\205i<\274\3224U\033.)\276P4\326\207\025\023\214qP\233}\3074\306_/\245V\232g=\3524\272e8\"\247k\345\211s\234\232\255.\252O@sQ.\244\375\3052[\3170t\246\304\301\271&\254+\014R\0319\247+\346\246N\225:\256E1\343\301\245X\363\212t\260.\334\232\315\234(o\226\231\347m\352qMk\260;\212\201\3577p\rG\2774\253\232VB\303\221I\3660\303\246*h\340\362\307\025&\334\323Y\0075^E^\325]\370\250\035\216x\351H\036\2279\250\330Tdu\250\332\240\226\020\3035B\342\0029\025BX\272\325)S\326\250\317\027Z\312\272\2039\342\262\'\267\311<W\377\331"
+byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\001JIDATx^\355\335!\016\300 \020EA\262\367\277rI\253*\276C4\024\230\221\317b\226d\t\255\001\000\000\000\000\000\000\000\000\000\000\000\254\2552\000\000\000\000\000\000\000\000\000\000\000\234\315\2325\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\\\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030S\031\000\000\000\000\000\000\000\000\200_\260\333\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\323\371F\004\000\000\000\000\000\000\000\000\000\000\000\000\340\345\311\025\000\0000\203\273\010\3004=\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\313\250\014\000\000\354\313\360w0\207\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\360\251\312\260\271\236\001\000\000\000\0367\231\251\003\020\030\305\203\234\000\000\000\000IEND\256B`\202"
diff --git a/core/res/geoid_height_map_assets/tile-3.textpb b/core/res/geoid_height_map_assets/tile-3.textpb
index c147825..9abaaaa 100644
--- a/core/res/geoid_height_map_assets/tile-3.textpb
+++ b/core/res/geoid_height_map_assets/tile-3.textpb
@@ -1,3 +1,3 @@
 tile_key: "3"
-byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\004\003\003\003\003\002\004\003\003\003\004\004\004\004\005\t\006\005\005\005\005\013\010\010\007\t\r\014\016\016\r\014\r\r\017\020\025\022\017\020\024\020\r\r\022\031\022\024\026\026\027\030\027\016\022\032\034\032\027\033\025\027\027\027\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000\367>\235(\335\317Zz\311\212\231d\2517\347\2751\316qP\261\250\330\324L\324\302\324\302\324\233\251\271\2434f\214\322\023M&\232Z\230^\220\2650\2650\2654\265F\315Q\261\250\213Tl\325\0235D\315Q3TL\325\0235D\315P\263T\014\325\013\275Wv\250\035\352\007z\201\236\240w\250]\352\006z\205\232\241f\250Y\2522\324\302\324\322\324\231\244-I\2323J\r.i\300\322\203O\006\236\r<\032\2324-W`\207=\005j[\300\027\006\275\334\2750\275(z\221d\251VOzs8\332>\264\307<\324Lj&5\tjijB\324\233\251s\357I\2327Q\232a4\302\324\302\324\315\364\205\251\205\251\205\251\205\251\214\325\013\032\211\236\243f\250\231\252&j\211\232\242f\250Y\352\026j\201\236\240w\250\035\352\273\275@\357U\331\352\026z\205\336\240w\250Y\370\250Y\2526j\214\2650\265!jB\324\233\275\350\335\357F}\351sK\272\234\r8\032x4\360jh\320\261\366\253\360\307\320b\264`\214\001\315^\213\257\025\354\276g\024\323%\001\352E\222\244\022{\323\304\231\025!`?*\215\273\324,y\250\030\363M&\2234\231\245\335Fi3HZ\232Z\243f\250\313S\013Ro\246\226\2463Tl\325\033=F\317Q3\324E\3526j\205\236\242g\250Y\352\026z\201\336\241w\252\356\365\003\275Ww\250\035\352\007z\205\236\241g\250\035\352\026j\215\233\232\214\2650\2650\265&\352Bi7P\032\215\324\273\251CS\201\247\203R\256jx\243,\325z(\272\014V\2041m\031\"\255\'Z\275\002\2168\257U\022{\321\346R\357\247\t)\342Ozz\311\357S,\231\247n\004~\025\023\324\014j<\321\2322)i3HZ\230Z\230Z\243f\250\313S\013R\026\244\335\221Lf\250\231\352&z\211\236\242g\250\231\352&\222\242i*&z\205\236\241w\250\035\352\007z\201\236\240w\250\035\352\273=@\357P\263\324,\365\013=D\315L-L&\230Z\230M&\354SK\323w\322n4\340I\251\002\223R\254f\244X\215L\220\237J\260\220\037J\271\014\030\034\212\273\014`\021V\366p1SE\0375\241\nb\275\024I\2327\347\275\'\231\216\246\234%\247\211=\351\313%L\222\373\324\353 8\311\244f\343\336\241cQ1\346\215\324\271\2434\204\323\013S\013S\013Tl\325\031jajn\352\003sLsP3\324,\365\023=D\317Q3\324L\365\013IQ4\225\013=B\317P<\225\013\275@\357P;\325wz\201\336\240w\250Y\352\026z\211\236\243-M/Q4\224\303\'\2753~{\320\r8)jx\205\261\322\224D{\212\225!>\225a!\035\352\302D\276\225a!^\302\247HG\245J\261\201\332\245A\315Y\211rE_\216<\212\265\0245r8\253\256YjA\'\275!z\003\323\204\224\361%J\262qS\244\276\365/\230\n\363Q\226\342\243c\3153u(zv\372ijajaj\214\265FZ\230Z\230Z\232Z\223~\r5\236\253\310\3309\252\354\365\023=D\317Q3\324,\365\013=B\317Q3\324,\365\003=B\357P;\324\016\365\003=@\317P\263\324,\365\013=D\316\005F\322\014u\250\213\222z\323K\344\360)\2474\000I\305Y\216\036\346\255\244\\p*_+\326\223f;S\302\n\225\02352&:\325\224Q\212\231G\024w\251\220U\310S\232\321\205*\354iV\343J\332V\367\247\253\340\323\367\323K\340\321\346S\326L\324\312\365*\311R\tx\247\007\033i\254x\250\313a\261@z7\322\027\246\227\246\026\250\313S\013Tl\324\302\324\322\324\302\364\326~*\027z\254\355\203P\263\324L\365\013=D\317P\263\324,\365\013\275B\317P\263\324\016\365\003\275@\357P\263\324,\365\0135B\357\201P4\237\205@\\\036\246\232Z\214T\213\036FM)@\005*(\335V\324\000\225n!\362\212\227\034R\004\317jp\217\332\236\213\265\272qS\205\335\322\246U\307\025*\255\001~j\261\032U\330W\025\241\0168\253\321(5m\026\256\206 sN\363)\302\\w\246\264\264\321\'5\"\311\357S,\225 \226\234%\251R^\324\375\371\034\364\250\334\374\324\315\364o\244/HZ\230Z\230^\230Z\243-L-L-L/Q\263\324,\365\003\276j\026z\205\236\242g\250Y\352\007z\205\236\242g\250Y\352\006z\205\336\240w\250\031\352\026z\211\232\241w\300\252\356\304\362j\027l\364\250\371\3158\nr\34358a\267\2550\276M*\036j\310<\001W`9\214T\340d\324\201i\341i\3733RD\270n\225g\313\357N\013\355OT9\351S\306\225n8\311\350*\334Q\277\241\253\360#\367\025~4=\352q\351Q\267\025\031\223\236\264\236e\002Jp\223\336\245YjA\'\2758KOY\275\352u\224\025\306h-\317ZilSw\321\272\220\2754\2750\275F^\230Z\243-M/Q\263\324,\365\013IP\263\324.\374T-%D\317Q\263\325wz\201\236\241g\250Y\352\026z\205\336\240f\250Y\352\"\325\0335Wrwgw\341Q9\'\251\250\215.\0062i)E<\036(\035jT\034\325\265L\246j\354\t\373\261VUjP\234S\202\232\235\"\251V,v\251BT\253\02052\302OAV\340\264f=+F+eA\310\251\324 \350*\304]zU\330\2235\022\237Jc\037\326\2531\3014\335\364n\245\335NW\251VJ~\372p\223\336\244Yy\251\004\231#\007\2458\276x\246\261\305&\372B\364\322\364\302\365\033=0\275F^\230^\243g\250\036J\205\244\250ZJ\205\344\250^J\205\244\301\353M2f\241\221\252\273\275@\317P\263\324,\365\01351\201#\223\212\205\266z\232\211\266\212\215\231GAQ\2221P7&\232E\030#\212LR\216\224\341\326\244QS\305\031f\000U\365\213\345\n*\344q\355\000U\204J\224-J\221\367\305N\211S,y\251\004^\325b\030\t=*\364V\3309\"\257\307\032*qC\002\306\237\034^\265n(\371\351W\341\210\2228\254\264l\216\264;\201\305V\224\363\326\241\337@pi\341\251CS\303S\303\322\357\367\245\022c\275H\262\343\232\224I\232w\231\3074\335\334\365\246\226\301\246\227\246\027\250\331\3522\365\031z\215\244\250\232J\201\344\250\032Oz\205\244\367\250ZOz\211\344\250\232Oz\217\314\346\230\362\002*\273\267\275B\355\357P3\014\375\352\214\225\317,M1\235{T.\344\367\250Y\251\205\252&4\322s\3054\323H\315\030\346\202))\312*tRN+B\332\036kE!\300\034U\205\216\244\013\212\225\0235a#\251\202T\311\037\025:\307\223V\342P\200U\225\313T\300ai\312\244\232\267\014E\210\300\255(,\316\001j\322\206\331Gj\343b\224\355\247\261\312\3475ZV\371A\252\345\350\017\316\rH\036\236\032\234\032\234\032\227}.\352]\370\247\254\230\251\004\264\246@E4\271\034\365\024\306zaz\214\275F\317Q\264\225\013IP\274\236\365\003I\357P<\236\365\013K\357P\264\225\023I\357Q4\236\364\303\'\275F\363\n\256\363sP\274\265\013I\351L\363)\205\3526z\210\2674\247\356\324$\363I\232\\PzSh\240-H\243<U\310\"\316+N\024\300\034U\344\031\002\247Q\3058)&\254\305\030\025ac\'\265L!\307&\245H\371\253Q\3066\364\251\243\207-\232\264\221{U\204\267-\326\255\307j\275\352\3541*t\025z\030\311\253\321\307^k\024\2318\315Z\007\345\252\356~V\025M\233\006\220==^\246\017N\337N\017\305\033\371\245\017N\rJ\033\024\273\350\337\357K\346\3664\322\370\350sL/Q\264\225\023IQ4\225\003\311\357P<\236\365\003\311\357P\264\276\365\013\311P\264\225\023IQ\264\236\365\031|\232\205\337\035\352\003\'\275B\362d\324e\351\206J\214\311M2Sw\322\231x\3053>\264\264\340h\353K\2126\320\027&\254E\0375\243o\027\025u\027\025j%\343\232\260\027\003\245K\034lM^\206\016*\322\307\212\220GR\244\'=*\322G\201V\"\213\236\225u!\366\2531\303\355Vc\200\347\245]\212\000\0075r4Q\300\025n$\357^I\t\357W\021\262*9N\t\036\265\235+a\351\201\351\341\352E\222\246R[\245)b\247\006\223}(zpzv\3727\321\276\220\311M2S\014\225\023I\357Q<\265\013KP<\236\365\003\313\357P4\274\324-%D\322{\324M%B\322{\324fJM\376\365\014\257\232\256\317P\263\363Q\227\246\027\246\027\246\027\244\337K\272\236\270=\351s\3159i\342\235\364\037\215\001K\032\231c\300\251\242\034\326\225\270\351WUrj\324Q\364\253\211\026{U\210\342\031\253*\010\342\254\306\271\025j8A\031\251\204c\260\251\222.j\3240\367\305]\216?j\267\024G\322\255$x\025*\251&\255\305\025\\D\257\027\212@\006*\322II#du\254\373\203\363f\240\335N\017N\017\203Wm.\021\037/\310\245\273\2366|\247\025]d=\352E\223\212v\356x\243}/\231\357H^\232d\246\231)\215\'\025\013KP\264\265\003\313\357P\274\276\365]\345\367\250^_z\205\245\250\232_z\211\244\367\250\232Z\210\311J$\250\344\222\253;\324E\371\353L/L/M-M\335I\272\200\324\360\325 4\3655*\344\364\247\201\306\007J\236%\343\221R\225\342\204\030<U\353v\350+R\001\272\264\"Z\266\213\305H\243\006\254\304\205\2175v(\272qWR<-J\261\363\322\254\307\017\265[\216!\351W\"\210zU\330\341\343\245L\"\251R.zU\270\343\253I\037\265|\376&\035\215X\206\343<f\247\3633U\2479S\355T\313P\036\236\036\227\314\3474\206BOZ\270\2775\226q\206\035\352\024\227\234T\276e\'\231\357K\277\336\220\311M2S\014\225\023\311P<\276\365\003\313\357P\264\336\365\003\315P<\276\365\013KP\264\276\365\021\227\336\243i}\352&\222\230d\243\314\250\344~\371\250Y\352\"\374\323\013\323w\321\272\2234\322\324\006\247\253T\252y\251\323\006\254\242\022=\005.\3346*\314`b\237\216)\350\225j$\305h\333\261\004V\244\'\200j\330\347\221S\"n5\241\004G\003\212\321\206.3VV:\2328\262zU\264\207\034U\270\240\351\305ZH\260zU\310\22358\216\246\216*\260\251VbN+\346T\2347CV\"\227\r\326\256\307.\345\353M\221\271\252rp\334S\003sN\rN\337I\273\0075e.I\217f@\024\301\265O\336\353K\346`\3434\031W\336\227\315\030\340\232O3\336\232\322TM/\275B\362\325w\233\336\241i\275\352\007\227\336\240y}\352\006\227\336\241i}\352&\227\336\242i}\352#/\2754\312\r4\311@\222\233$\231\\Ur\376\364\322\324\322\324\322\324n\247f\230M 5*\232\231\rY\214\325\245\177\227\024\3602sS \253\010\231\251\322:\265\032v\025n8\361W\355\317!Mi$y\351W!\214zV\214\0108\253\321\250\307\025f8\363W#\213\320U\250\341\307j\275\014=2*\301\204m\006\237\032\342\254\252U\210\322\247H\362j\324q`W\311q\276\323\305\\\216PqV\341\220\347\255N\347\345\025^n*\002\334\321\276\234\036\202\334Sw\363\326\246NS\223M\337\212<\317zo\233\216\364\276w\035i\215/\275D\322\373\324\0177\275Vy\271\353P\274\336\365\003\315\357P4\334u\250Z_z\211\245\250Z_z\211\346\367\250\214\264\3237\275\'\234\t\353OY3\336\232\357\357P\357\347\255&\372\\\346\232M\033\251CQ\326\2009\251V\246A\212\261\035ZJ\235EXE\2531\255[D\310\253\021Fs\322\257F\237-X\216\"\032\257\305\221Z6\304\022\005i\302\231\034U\350b<U\370\241\351\305]\216,\016\225n(\263W\022<T\2732)R.j\312G\355Vc\212\255G\017\265ZH\253\343\262\n\234\036*D|\036\265\243nz15e\232\253L\374\365\252\314\364\233\375\351\301\370\245/L/\316jhf\\\021\232I\030\347\"\2422\373\323\014\247\326\223\315\246\231x\250^oz\256\363{\325w\233\336\253\274\336\365\003M\357Q\264\336\365\013K\357Q4\274\324M/\275B\362\373\324F_zC.{\324fB\017Z\226)\275\352I\030\355\316j\277\231\317Z7\361J\262\032\220\035\302\233\273\006\234\rH\274\323\302\363R\252\363R\250\346\254F*\324kVQj\314iV\243J\271\022U\310\343\253\321\304\002\n\262\221\r\271\315O\032\342\256\333)\r\2221[V\303\201Z\260G\221W\243\216\255$ur\024\305ZT\251|\276*D\213\236\225i\"\253qC\355V\322\036:T\242:\370\302YD\217\236\224\337\272\303\232\320\205\212\250\346\247\363~^j\244\262\345\272\324%\3517\322\211)|\312k?\275C\346\220\335j\337\231\373\260}\252\263I\315Fe\367\2442\373\323\032_z\201\346\367\252\362K\357U\244\233\336\253<\376\365\013M\357Q\031\275\351\246oz\211\245\357\232\211\245\367\250^Z\210\313\357L2\322\371\271\025$rsS\2313\035V\337\363S\203\366\247)\315H\255\203R0\005r(\217\232\235G52\255L\213\305J\250I\253\021\245[\215j\314iW\"\216\256G\025Z\216:\273\024um\024\221\200*\324p\372\325\270\341\366\253\261E\355Zv\311\323\212\327\267\030\000\032\320\215}\252\334k\355V\021qVPT\350\205\217\265Y\021\362*\324Q{U\310\343\342\254\242|\265\"\246M|6_\232U|\236\265e.\230\000=*Ss\271z\324/&M7}4\2774\241\375\350/M2TN\342\246I\363\017&\240i}\352#-4\313\357Li\270\353U\336nz\325y&\367\252\262M\357U^nz\324M7\275F\323{\323\014\334\365\250\314\336\364\303/\275F\322du\250\213\323w\373\322\253f\246L\216jS!\331\326\240W\375\345?q\311\251\021\352Ubjh\316x5*\256\326\253!;\324\252\274U\204\\\214U\210\343\253)\021\364\253\021\307\355W\"\210\232\277\024\'\216*\354p\035\271\305XH}\252\3541{U\370\341\000p*\314p\363\234U\310\341\366\253qE\323\212\323\266\207\332\264#\213\030\255\010\223 U\310\243\253\n\236\225<qs\315[H\352tL\265^\216?\224U\210\323\332\254*\361\322\234\253\315|\036Z\200\364\340\370\251\004\230\245-\306h\335\3057w4\273\251\245\375\351\215%D\322dQ\034\235Fz\323\036B\016*&\226\2432\373\324o/\035j\273\315\357U\336_z\253$\336\365Y\346\367\250\032oz\211\247\367\250\314\376\364\236w\2754\313\357M2\322\027\342\2422sR$\300T\302\340b\236\262nZ\217?=K\273\214\346\244\214\324\361\232\2323\363\325\324R\300U\270\324c\232\221W\245XE\253\320E\221WV\036:T\311\007\265^\206\034v\253\321C\322\264b\207+\216\365:A\317J\271\014\034r*\342DGQV\242\206\256$#\025j(\306j\374*\005\\\214\363\300\253\320c\275]B\265f<\023\212\271\032dU\224\216\247\2159\253\210\265e\005N\027\212r\250\315|\003\346\000y\247\027,7(\340Q\346njv\342\034\n\231\\\037\224\322\026\301\246\226\244-M-Q\263\324L\364\344\340d\323&q\2675M\345\367\250\214\336\365\023\315U\344\227\336\253\274\276\365^Ix\353U\036nz\324\r7\275B\323{\324Fnz\321\347{\321\347Ry\276\364\242N)\254\374\320\262S\267\221Vazs7\315R\253ejTlT\361\236j\344 \026\311\255\010\260\000\305ZT\357\353S\242t\253\t\036H\255+x\361\212\275\034y=*\344Pg\034U\264\207\007\245]\212.\231\253\321 \253\261F\276\225q\020`S\311P\334\232\231$\003\245Z\215\330\216\225f2\336\225r\000\356\370\355Z1G\216\242\245\336\021\261R\306d\310#8\253\261M\203\363V\2043\257\255]\216e\365\253)\"\346\255F\343\212\262\214*\312\034\212\221G5\371\354\314;\232\236\031\000\210\340f\240\016D\234\324\341\263\3159d!\271\342\234\316;\032g\230I\351\305\005\251\245\270\250]\251\201\271\346\225\245\003\203U\346\230\021\200j\234\222\325v\227\336\243i\262:\325g\233\336\253\264\334\365\250d\227\"\251\313/\275Vi\275\352&\233\336\2432\373\322y\276\364\242oz\014\236\364\242^z\324\233\367\n\0019\251\003dU\210_\236jF99\0254-\352*\302\340\325\210\306*\344B\257\303\327\232\274\235\000\253Q\257J\277\024C\203WbLb\257\302\225\247m\036@\253\206\014(oZr\341j\304n\007j\261\024\254OCWc,j\302\333\022\241\2175<v\355\321T\325\330\255% qW\240\261va\272\272\033\r64\3035X\271\201@\371\005f<\017\346g\006\264\254\221v\341\307\343W\r\226\377\000\231j&\267\222>Fx\246,\322\2111\223W\241\235\370\316kB)\233\002\257C6\352\321\210\202\265n5\257\316\326\"\230%d\340P$gq\232\262\255\205\245\335\232\034\341(-\200\007\240\246\357\342\232\317\301\250Y\351\273\352)e\317z\253$\234UY$\252\315/5\023KU\336Z\256\322\363\326\240y=\352\244\322\325V\227\336\242i}\3523/\2757\3164\341/\275<I\305(z\225$\367\251\226L\324\200\324\321\365\251\263S\303V\223\255[\214dqW!\034\212\320\214`\003W\242L\212\275\024}+B\005\253\361\305\236j\3641\361Z0\341ENf\310\3329\247G\031c\223W\240\203w\001kN\r:GL\204\255\013})\3627V\264\032_\000m\253\360ij\017\"\264a\260\205T1\003\025al\341\316G\003\326\255D\261\'\005\270\251\235\240\306\000\311\246\210\"s\222\202\247\216\010\227\370*p\2038Q\201K$\000\257\336\006\253\375\220\003\300\346\234\221\354?2\323\213\205<\036*xf\031\004\032\330\264\2240\034\326\254g+_\235\004\323\r\000c\232\220>E<=\014\371\000{\323K\374\344\032ilS7\361\223\353Q\226$\346\243\222L\n\252\362Ug\223\336\253I%Vy*\026\227\336\240\222N:\3257\227\236\265\033I\225\316j\234\322\036y\252\215-D\322\373\324fJo\233OY\252Q-<IR$\265:IS\243\325\230\233\232\261\232\236\023\315[\217\357U\330\205_\204\002*\364|\340V\215\272\020\005iE\036@\342\257E\021\030\342\264!N*\342\020\242\245\334H\300\253V\220\274\216\025A&\272\013\035\032G \272\221\355[\366\332dQ\340m\346\265#\201\021F@\2531\204\014>^*\324L\003\344-XP\307\247\031\251\222\023\216j\302\333\344c\232p\265m\336\325r;4\013\223\315L\"\033~Q\212z\307\315L\261\361\234S\274\241\216\224\236^:\nF\214\025\344V-\3434Rc\265Od\306\\V\314!\341 \366\255\313V\337\0305\371\323\232L\322\026\245\rN\rJ[\212s\2601\206=j\"\331<\323@%\010\250\331\2609\252\262I\315U\221\352\263\275U\222J\254\362{\324\017%B\362qT\345\223\236\265\020\227*Fj\274\357\212\240\362{\324&Zi\223\336\220\311J\262\017Z\235d\004u\251D\200T\210\3435a\032\254\306\325n.H\253\212\274T\321\214\032\271\020\346\264!^\005]\210b\264!L\340\326\244\013\225\025\251n\274\n\322\2161\264U\204\343\212\263\032g\223W`\265i\233\n8\256\233L\323\342\210\253\021\315tq0U\300\0252d\232\264\212[\255Y\216?j\267\034~\325r(\352\312GV\222<T\311\021c\322\246\333\311\030\251V\023\216\225$p\214d\216jM\203\265(\216\224\304*&\217\212\307\324`.\300\001Ri\360\030\361\221\326\267\202n\200\014U\333\025!p{W\347F\352i4\023FiCS\267Q\270\021\203\322\244\001@\246H\373W5FY2j\244\217U\244z\255#\325Y\036\252\273\325wz\205\344\343\212\2473\325q6\033\255E4\245\207Z\317y9#\336\2412R\031)\206Nh\022sS$\204\324\301\310\251\243sWa~*\3325\\\205\271\253\321\267\034\325\210\3715z\025\351\232\321\210p1Wa^\000\255;x\376QZ\226\351\225\255;t\340U\365l\n\263o\036\362\t\255\004\200\261\001\005tZu\226\310\201\"\266\340\214(\000U\350\226\256F\276\325n5\253q\2575n$\253\261G\232\262\221\324\252ppj\374\0106\347\332\236\"S(\305X\021\324\\\357 T\212\275\252M\243\361\244)\223\315!E\007\025ZKp\356X\216;RE\n\211\000\002\266\241\266\036X\'\275Y\212\r\2475\371\262\307\232n}\3513\317Z]\336\364\240\320Z\223u8LUqPK6\352\252\357U\235\252\254\217Udz\253#\325gz\256\355U\335\370\252r\275S\222Nj&\227\212\251+\376\360\324%\351\206JB\342\215\343\035jx\244\025h0+R!\364\253p\265^\214\346\256\300sZ1\256@\2531\214\032\277\010\316+N\334z\212\320\2059\255;t\030\255[d\034V\224 \001S\240\337 \003\245k\333C\220\024\016MtV6\210\2403\n\327\211@<U\330\305\\\210U\310\305[\214U\330\226\256\304\265r$\311\253\210\234R\264D\034\201W\255ab\225j\030s#g\265<\256\rW#2\222*U\034\342\254\024DL\360O\255D\205H\352\r!\214\023\222i\262\014\200\024S\355\255\031\23468\255U]\240\017J\224\036\342\2774Z\243\'\232i4\241\271\245\rHZ\233\272\232\315P;T\016\325^F\252\222=T\221\352\263\277Z\254\355U\335\352\274\217\301\2523=T\221\352\002\365Zf\301\006\240g\246\0319\246\231\005*\2775b3\315]V\005)\350\304\032\271\003V\204G\245_\207\265h\304zU\310\207\"\264 \034\212\323\200t\2558\000 V\235\272`\212\323\200`\212\267\273\260\253\366\250\024n5\320i\220\227`\304W@\230\030\002\256\302\005]\213\265\\\214dU\330\205]\211j\354KWbZ\267\020\303\n\274\203\212\221\2600=kN\323kE\214v\2516l\311=\352\t\0133`t\246*8=*\302FN8\346\226D##5L\306\342^3\212\267\025\263\267Z\264\226\200\036j\334qm\034\nVC\330S\221Oz\374\321qU\317Zi<\321\236E(jBi3LcP9\250\034\325i\032\252Hj\244\215U]\252\273\265Wv\252\262\265Q\225\252\234\217\212\204\265A;|\265\001n*\"i\205\251U\215Y\212J\266\222U\210\333\'\232\273\t\346\264!l\021Z0\266qZ1\016\005]\213#\025\243\007QZ\260\016+R\335zV\245\270\344U\341\362\342\257\332\307\270nj\321\266O2P;\n\351\354\325b\210\016\365\241\021\3175~\023\305^\213\255]\212\257CZ\020\216\234U\350\226\256\304\265n%\371\261V\300\305\005N\354\326\205\237\030\346\256\345\031\366\036\265\024\221\205|\366\252\263^$-\364\252\347Y\347\345\300\242;\366\232`3\234\232\333\212%\221\001\013V\222\034t\251\322<\366\251\322,\324\313n\270\346\241\2224\022azW\3463\032\256\375j\"y\245\034\2123A4\302i\214j\027\342\253\271\252\322\032\251!\252\222\032\253!\252\356j\263\267\025RV\252R\265S\221\252\020\325\004\315\362\232\256[\212ajajP\330\251\343nj\332t\315Z\210\325\370{V\204<\342\264\255\373V\234\006\257E\202x\255\010GJ\325\267\347\025\255n8\025\247\026\000\006\255G\363\270\002\266m\220\371`\n\324\262\213\016+n&\351W\241=+F\023Wb5~\036\325~\n\321\207\265_\210\216*\364C5m\024\344\032\260\2751Nlm\025f\335\260*\312\034\234\236\264\2636\324\311o\302\261n\225\246\223#\245eK\013\244\235\361\232\333\320\255\274\311\201a\232\353\243\210\"`\n\22249\311\351V\002|\276\224\221\312\021\360\334\323\245\237p\302\361Q\002Ks_\230\354*\273u\250X\320\247\265\024\204\323I\246\023Q9\310\252\322UY\rU\222\252\311Ud\353Ud5ZC\305R\231\252\214\255U$j\215H\r\315C)\3105X\236*2i\264\240\324\261\234\032\273\023\r\265b7\346\257\300\365\247\001\316+N\n\323\267RkB\025\"\264 \035+R\337\265k@x\025\240\216\002\n\277d\233\233q\255\313R\000\305kA\205Q\216\265~\023\232\320\205\272V\204-\322\257\302\334\212\277\021\255\010OJ\320\210\325\370z\212\321\203<U\370\306x\251\3251O\362K\032txK\200\275\253I#V\\\212Im7b\205\323\242#\030\346\263\357\364\320\274\201S\350\351\345K\203]:((\r/\002\227p\'\031\246\225\031\340R\021\201P\271`r\r~i<df\252H1U\\\363H\247\232q\246\236\224\302x\250\330\324l\325\004\235*\254\225Y\352\254\225RJ\253%U\222\250Lj\214\246\2529\346\243\316MF\346\2531\346\242&\227\265 5\"\232\261\023\032\275\0078\255\030\007J\322\203\203Z\266\374\342\265m\306\0005\245\030\'\025z\021\201Z\0206*\3742\363\201ZP+0\031\351Z\2201@\006kn\310\026\301\255X\310\004U\350Z\264 5\241\013U\350\232\264!n\225~\027\351Z0\275_\201\253J\007\255(NqV\324\202\005M\270\001\305Wf\036\177\035\252\3543\221\026\001\247y\356H\346\254\301#n\004\324\367\210\036\020qYq8\212\351~\265\320\3056\020\021\320\212O0\227\"\245_Z\177zC\322\242nk\363nD\004\032\2434UFD\371\252=\270j\030\374\324\323\3235\031\353Lj\205\215B\347\212\256\365ZJ\253 \252\262\n\253%R\224\325\t\215R\226\252=1;\324/\324\212\254\335j>\364\022)2*D5j\"*\354=\210\255(\017J\322\203\222+V\334t\255[s\310\255XG\312*\354}*\314m\310\002\264\255\366\246\t\353Z\266\363\344akR\322&\221\263\330V\335\263\204@\243\255_\211\263\315hBzV\204MWbz\275\013\362+B&\351W\342~\225~\027\351Z\020\311\322\264\355\3378\346\264\340\223\003\025r6\315HX\343\212b\246O5b45f8\363W\"\214\n\262St$W?r\031n\370\365\255k;\221\264#\325\304!\234\232\260\264\341A<TLk\363\201\3075\004\210\030Vl\310C\036*\271S\326\241bFi\212\375\215!84\326\250\230T\014*\007\025ZAU\244\025R^*\224\246\250\312j\214\246\251Hpj\253\236i\253\320\324\017\367\215Wa\311\250\361Q1\371\261J*T\253Qu\255\010G\"\264a\352+J\337\255k[\366\255K~\325\253\007#\232\270\244\001V-\3179=\252\322JL\200\016\365\275a\001*\t\255\350\231c\217j\365\2530\261\3175\245\013t\255(\033\214\325\350\332\255\306\365v\031\017\255h\301\'J\320\211\352\374/\322\264!j\320\267\223\025\251o&MhD\3318\025eA5*\241\007\245N\213V\243\025e8\025f\034\034\347\322\262.\240\r30\355N\2120\252\0335z\334\361\232\264\246\234\255\221\212\t\342\242c\315~r8\252\355U\246Q\203\305R~\265V^\265_\275?!\206i\247\245F\325\023\016*\007\025Y\326\252\313\300\2523\036\265BSTe5FSU$\346\252\2654t5\003\3655\023S\010\342\240\332K\325\210\355\231\206jS\001A\234T\221\255^\206\264`\007\212\323\267\035+R\337\265k[V\244#\24751r\242\244\216|GW\354~i\003\032\350\355\346!\000\035\253B\t\t<\232\323\205\272V\204-\322\264a\223\013W#\227\212\265\034\231=j\374\017Z0?5\241\023\325\370_\000V\204\0161W\340\227\346\305jB\370\301\006\264\355\311 \032\275\024\243 b\256\241V\030\251B\025>\3252T\273\260\264\350n\006Z\263\256\256\202\263\002z\324p\334\371\244\"\236+^\016\024U\215\330\245V\3474\245\273TD\363_\235N\265]\326\253\3102*\204\310A\'\025JNy\250M38z\220\323XqQ0\250\035j\274\202\251MY\363w\254\371\217Z\2435R\222\252I\324\325w\024\323\302\325v\353L\"\221\242%sQ\252s\212\321\267Q\201\232\225\325H8\034TH\234\325\250\227\221Z\020\016+J\016\202\264\355\307J\325\267\343\025\245\023`S\244l\212l,|\320\265\275h\000\003\035+j\335\276Z\321\201\271\255(_\245hB\376\365r9=\352\334Rt\253\260\275h\301\'\003\232\320\206N\225\241\014\235\352\3642qZ0=_Bx\"\264\255f\316\024\326\315\264\230\030\253\221\237\2375m&\332x\255(]eJyR\215\355OH\232s\261i\322Z\371\0216\016N+\234\325\213!\\w\251\364\230\311@\306\267\323\205\247n\241[\232y~*2\334\327\347\244\213U\331*\273\247\265U\232<\251\254\313\204\307J\252EF\302\204b~SR\021\305F\313Q:\361Ue\351Y\363w\254\371\273\326|\335j\224\2435JAUd\025]\2050\216*\006\034\320\250X\324\214\277/\322\243\362\376l\342\254F6\361Nw\300\300\241\016j\334C5z.\325\245o\320V\225\277Z\323\207\265\\V\300\251\003df\235\003\005\230\023\336\267m[*+V\332N\331\2558\032\264!nj\364r`u\253Q\311\357W\"~\225~\031:U\370d\255\010_8\346\264a~+B\006\034V\224\r\300\255(\033\245]C\206\004\032\323\265\230\226\025\250\257\214\037Z\261\033sV\341\220\306\331\006\265\243a4 \324\326\200\3071\357\232\226\340\026\213\031\357\\\366\263lJ\207\307N*M4m\205kU[\212B\324\006\346\236[\345\376U\003HK`\365\257\200\331*\026\212\241x\270\252\322E\362\326U\314?1\315g\272`\324ei\2730sSm\312\212a^*\t\006\005R\233\275g\315\336\250J3\232\243*\363T\245Z\247*\325I\026\253\262\363Le\342\241e\346\237\032\340sO)\224\316)\270\246\222A\246\002X\346\254F*\344C\025r.\265\243\007j\322\267\355Zp\236*\306\356)\352\337\'\024D\314g\003\322\267\255\033\n+J\007\303\n\326\267z\277\024\234\325\270\344\367\253q\311Waz\277\024\225z\027\351Z0I\322\264\241\223\"\257\301\'J\323\267\220qZPIZ0\276j\374\r\265\201\255h\217\231\020\301\346\254\302\177\204\365\025h\034\n\263iz\310\302>\2435\257\034\352\0109\353V%u)\307z\311\325\231D\000T\026g\021\212\274\033\2127\363K\272\224?4\223(\362\374\320y\035k\340\307\216\241d\305D\313\236\325\004\221\326m\324\031\311\254\231b \342\240)L+\315=}\r\014\274t\252\262\214U\t\273\325\tFj\224\213T\345Z\245*\3259\026\252H\274\324%*7^*-\231j\223\313\317\312\005+\302Tz\323V>*9\227\013\305E\032\036*\334kV\343\025f!\315hC\332\264\240\343\025\241\021\253=\251\321\236\325,\n\005\306Ml[\2368\253\3617J\325\201\370\025z\027\253\221\275Z\211\352\364/W\243~\225~\007\351Z0\022qZP1\030\253\321=h\301\'NkN\ty\025\251\014\230 \326\204M\220+J\326L\034V\212\000He<\325\245;\223\007\255X\262E$\226\352*\356\335\304\020zU\230$,\370n\202\262uysr\020S\355\316\020U\235\374R\027\247\007\367\245\335N\335\272&\\\360k\341\246\216\241h\271\346\243h\300\252\322\2475Fx\301\025\223s\017\315UZ<Tf<\364\243c\001\203Q1*\330=;UY\252\214\253T\345^*\224\253T\345Z\247\"\3259\026\252\310\225\026\312\205\322\221c\307&\245\211\024\344\201R4D\216\225\013\304TT\016\201\2074\304\216\254\306\225aF\005X\204d\325\370\227\332\264!\253\361v\253K\310\247\"\374\365!\371\034\021Z\266\257\225\025~#\234V\234\r\362\212\271\023sWQ\352\324OW\242|\n\271\024\2075\241\013\364\255Ki\000\305i$\200\200EY\216Nz\326\204\022V\234\022t\255He\340V\255\264\240\250\031\253\261J7pkV\tr\242\256\243\344U\250\016\016}j\352\277\315V\025\302\2515\317\\\312f\324\233\234\200j\364G\n*m\324\205\3517\323\203\361R#\361\212\370\231\271\250H\371\216i\214\024\016\265]\225I$\325Y\243\004\022+2k|\265U\222\324\366\025\010\200\257Zc%V\232?\227=\305Q\224`U9\006j\244\213\305S\221j\234\213U$J\251\"UY\023\232\205\223\212\214\246\343\322\206\214\364\024\364L\n{\034\n\202F\317\025\t\217\214\323Bc\265O\032\324\273\t\253p&\005]\214U\350\272U\330\272U\264\025&;\212p\371\370\255\033U\302\216kJ,\014U\330Z\257D\330\025j6\346\256Dx\253q\267\275\\\205\372V\204.8\2558\037$V\204r`\014\232\263\034\247ui@\376\365\245\004\2359\2558$\351Z0\277\275h\303\'J\320\206\351P\340\236+J\t\203\214\203\305\\\216R;\325\250\245\3169\251..B[6\0178\254h\016\351\213\236\346\264\221\360)\345\351\013\322o\245\017R+\327\306\005MF\313P\262\232\201\326\240u\342\252\274u\003!^\331\252\322FI\311\252\355\035V\23185\235*rF*\214\213\203\212\255\"\325IR\251\310\236\325VD\252r\247\265Vh\375\252&N)\253\037\265\002\"OJv\312\211\320\236\325\021\210\223\234T\211\010n\242\234m\0068\024\337+oj\221\027\326\254\304\265n5\253\221\n\271\020\"\256\'J\230\016)\240bL\326\235\267\335\253\321\232\271\t\253\3215Y\214\363V\221\210\251\222B*\3442\232\321\202Ny5\251m\'\313\311\342\256\244\331=j\3442g\025\245\003\340V\214\022t\346\264\340\223\245i\301%hE\'\035jUm\362\000I\255\233V)\030QW\321\252}\354\027\212\317\271\270\225\233a<\023S\333\360\242\256+\361K\276\215\364o\245\rR#\363_\036\272\342\242e\366\250Yj\027Z\201\324UvNM@\361\324\016\225]\322\250\3149\254\331\303\006\371y\252\022r\346\241u\310\252\322%T\222:\253,x\006\251\272d\364\250^.*\017+\'\2459\242\332\275)\0263\212\014T\317\'\'\245)\203\216\224\251\006\017J\260\220n\244{,\236\225\013[2v\247E\031\335\322\256\"U\224\\U\270\273U\270\307\025-\030$\325\333m\330\305_\213$\325\330\262\005\\\217\246jx\333\232\266\215\305M\031\031\253H\340U\370\033\245hE6\000\031\253\220\310Oz\275\004\2308\255H\034\034V\215\274\2000\315i\306\340`\203\326\264`\223\2475\247\013\202*\355\242\357\271\031\365\255\204\302\310}\251V\3665lf\255-\332\354\316j\241\1772m\325r6\300\251\203\322\357\367\245\017F\372xjz\265|\240\320q\234Ug\207\232\204\305\317J\257$g8\305Wh\317\245A\"\340\346\253\270\252\356*\254\242\250\314:\325C\030 \346\262d\\JG\2754\257\025\004\221\325g\216\251L\2318\002\2400\340t\250\036,\360(\026\341G#\232\216H\263\320R\010\260:Q\344\236\364yt\276W\035(X\362zT\361\300A\315Z\362\203\247Nj6\265\3349\025\t\264(r\005H\261q\322\246H\352eB\rY@qR\200Oj\2268\217SW!\001j\344#\025z1\362\212\260\275*d\253*~Pjt\311\344U\230\201\316M]\216Lt\2531I\317Z\320\201\317j\277\033g\236\365~\tH\305iC\'C\232\322\202N\225\247o\'J\323\206^\005i\331L\026\\\232\334\204\251\217~z\326}\354[e\016\247\203S[\344\250\005\211\253h\240T\312\370\247\207\247\007\247\007\247\006\247\006\251\025\253\345\271\037\003\002\252\263s\315B\354\000\342\253\273T\017\322\253:\223U\244S\330\212\257\"\2663U\\\022:U9c89\252\254>Z\312\235\017\236O\2557g\025\023\247\265Wt\317AU\332\016rEV\2311\332\243K~7\021Mx\316zS\032/\223\245\'\223\305\'\223G\223\355G\224iV\034\036\2250Zr\214\032\234(`8\240\304)\236X\317J\2368T\212\220B\271\251\2225\0252\"\372T\3012q\212\010*\341E\\\204t\006\257(\343\031\251T\366\251\227\202*\3127\002\255F\325e\033\26152\260\315O\033\340\326\215\264\240V\224R\002j\364,3W\341>\225~\027#\025\245o/J\324\206N:\325\373y\260\343\232\350 \224\375\233\000\3247S\017-S\024\353y1\201\232\272\034\036\224\340\364\360\364\360\331\247\006\374i\341\251\341\252En+\345\311\007<\325g Ui$\025U\345\0035\003\315PI6\005Ty\2115\023MQn\335L\2212\2475E\343\301\252W1\2563\216EV\300\305F\351\305V~\rD\343#\245Vh\213\267J\224A\204\306*&\200Tf!\214Ry9\035(\362@\024\010A\245\3629\244\3629\351Hc \342\200\234\364\251\321)\3738\346\232c\031\340S\320b\244\024\360\265*\014\032\262\230\353Qn\r6M[\211\276aWU\375jU5:\032\231\rX\215\215YC\201\272\245V$\325\270\317\025j#\310\255(\037\245hB\375+F\027\253\360\234\343\232\321\204\364\255\010d#\002\256\306\344r+R\322\365\266\354-\364\253\022\313\271@=E>)\010\357V\322CR\207\251\025\375\352@\324\360\364\340\364\365j\221\036\276c\225\272\325\031Z\250\312\375j\224\216sU\336CP<\204\236\265\00350\234\323\220sR2\356^*\264\261|\244\325\tb\316A\252\262@P\203\330\323\032\034\255S\222\002\rFb$t\240E\264S\266\361\322\242t=j\026\214\322\010\370\2441\n\014D\nn\n\323\270#\232\215\216N1B\21475:\205\305;\002\200\240\322\005\301\247\201R(\247\214T\312F:\325F\312\334u\3435\241\017@j\352\020W\336\246^\225:\324\311V#\342\246R{\324\351V#j\271\023U\350X\325\370_\232\320\205\353F\007\344V\234\017\322\257\304\365md\371j\305\274\204J+FI1\201R\304\371\025i\037\336\247W\251U\352@\364\340\325 jz\265H\255\315|\3131\315P\224\360j\204\247\255S\220\363U\234\324,j2)6\323\227\255XQ\362\342\225\242\005\t\254\311T\0068\252\223\222Wo\2450H6\035\313\323\275@J\276qM1\000\271\246\030\275i\276VzSZ\037ja\203=\251\255\016\321\322\242+\212c\016*\0278\355Q\226\246\026\002\232e\002\220\\c\245H\267$\324\211?52\035\334\232\225W\322\246\0203t\251\005\234\230\247\010vpXTR@I\310\251\340;W\rVQ\271\030\253\211\322\247AS\250\251\324T\243\212\221X\324\350j\324M\357W\241n\225~\026\255\010^\264!n\225\245\003\364\255\030[ U\325\031\025f!\202\017\275Y\022n?J\261\023\374\242\255#T\352\3252\265H\036\244\rO\rOV\251U\253\346\251\253>~\365B^\365NJ\254\365\021\024\200S\266qB\247\315W#\207\271\351Q]\312\021<\265\357Yn3\315U\2226=\252\026\215\300\306*5\211\267\344\255K\262\243u\246\250\031\346\234\311\305FW\024\326P\313\357T\345R\r@\304\201\322\253H\325]\237\025\013\313P\231\t4\201\232\246\215]\217\000\325\350\255\'l|\246\257Eg8\034\241\253q\331\312W;\rJ!\224tSO+2\257\3355RW+\235\331\250#\271\303\340\364\253@\357\371\224\325\210\367\005\346\257\302r\2435eEL\265:\221R\016\224\253\311\251\323\336\254\307\332\256\304\334\201W\341j\275\013t\255\030_\245h\302\331\305h\333\2675\245\023dU\370\202\233r{\212\256n65O\r\320 \014\325\370\245\014:\325\244qV\024\323\301\251\025\251\341\252Ej\221Z\276s\225+>\341q\232\316\225z\325)\005WaQ\221@\024\265<\021\006\033\217AN\222C\214-Sx]\333-J-\0169\024\033U\364\246\233U\307J\202[eQ\322\251\274x\'\212\256\313\223Q\221\203N\004\032k`\364\250\360A\250\245@j\224\213\214\212\245(\252\216\244\232#\264y[\000\023W\342\320\345l\022\r\\\207\303\262\226\037!\307\322\267l\2746\212\0032\201Z\277\3316\311\036\000\031\247\255\235\272\250\033zw\251\014\021\036\000\002\243k(\363\221\326\201e\0360{\326]\356\2302Lc \326,\332k#gn)\320Z\313\274\000\rk\245\231h\307j\222;vC\203V\2218\351S\252qHx\346\225e\003\214\324\213 \365\251\321\363V\3425r3\305Z\211\261W\340|\365\253\360\276+J\007\351Z0\267CZ\020\275h[\310\000 \367\025\\\300\355!\347\214\324\253l\3523\326\255B$S\305^\212^\307\255\\\215\352`sO\006\244SR)\251\001\257\237\344A\212\317\270\217\255e\314\230\315P\225y5]\227\232\210\216i\246\232z\325\373r\r\271\003\255H\220n\346\236`\003\265#E\307J\256\351\212\210\236i\031\003\2575Fxx<V~\300\030\324\022\214U\1773\234S\263\232)\217UdL\325f\266gl(\251\341\322\035\334n\025\320i\372\004`\006a\212\336M2\010\324qR\010\221\006\025E5\233\035*2\304\367\250\330\267\255G\226\035\351<\302;\322\211\275\351\336b\367\252\367\021\305\"\223\201PC\022\356\311\035*\340EQ\236\364\326\306i\353R\214m\252\262H\000\"\2514\247\177\006\247\212~@cW\342pG\025v\027\351W\2439\253(qW!nEhB\365\241\003\363Zp?J\320\211\261\212\273\023U\264\347\232\265\036EM\264u^\r5\217\361\016\243\255O\004\271\357W\2439\025 \247\212\225M<\032\360\211R\250\\/\025\227:pk>U\305Tq\315DE4\2550\306Oj\232\022\3126\326\245\250\314d\232s)\'\000S|\246\352j\274\361\340{\325_(\223\322\232P\216\364\313\210\301\204\340sY+\0212\221\212e\335\261\021\022+\034\214=N\243\212q\034Tdd\324\260\331<\307\201\305l\331h\245\261\362\217\251\255h\364\350!\003(2*|*\016\000\342\230\322\212\211\244\364\250\211$\323zSY\2522i\215Q\223\212n\352B\300\365\241d\301\351O\363s\322\200\331\251\224\324\252x5N\352\027\306\345\351T9\007\232\221^\256\301!\030\007\245iC\222\001\255\010\211\003\232\260\217\315[\205\253B\026\255\010[\221\315iB\331\305h\304\334\n\273\013U\330\232\256\304\325iGqM\222\"N\345\353Q\200\310wU\333y\201\002\256\307\363T\230\002\234\010\024\365a\351^\037 \2523\200A\254\273\201\326\263f\025M\227\232\217nMM\025\266\343\222*\317\331F\334b\237\025\206\366\351W\322\321\243\033q\201Lt\np((\002f\251\310\027<\363P\266\320\274\n\254\351\223K\345\3450zT\006\3324$\201T\357\024\010\017\322\271\326Be<w\251\2218\346\222B\000\246D\215$\240(&\272\235+Mm\240\270\300\255\215\236Z\340T\016\325\003\261\250\311\024\302i\205\275\351\205\207\255F\304z\324e\251\013S\t\250\3154\236)\245\251\310je5*\232\225[\002\244$2`\326m\324!\\\225\025\002\251\2530\203\232\324\266,\007N+F68\035jU\'5r\023\323\232\320\205\253B\026\255\030\rhD\375*\364mW\"j\275\023U\350\233\"\254/ZIP\024\315TV\362\344\343\245h\303)`1S\341\232\236\241\200\371\205<p:\327\212I\310\252\023\326d\375Mg\314*\243/5,0\026n\225~;r;U\270\255ry\025\243\005\272\"\347\003\353Q\335\025H\370\025\234Wsd\324s\023\267\002\251\270\250\034S1\305(\034Tr&GZ\313\276F\362\310\355X\214U\t\342\242iy\3004\350\240\222f\340\032\335\3234\300\0301^k\244M\261G\201\216*\031\245\311\353U]\215FNz\323\t\025\0335D\317Q3\324l\364\302\324\322\370\246\231)\205\250\315&y\247/Z\225[\025\"\265<7\024\364zd\2447j\201Pn\2531\204\317\025r)1\306*\344R\234sS\253\344\325\270\233\245hBsZ\020\234c\232\321\205\272U\370[\245^\211\252\354&\256\304j\344OW\021\252Br\270\252S&\033\353R[JT\355&\264c\223#\255L\037\326\201\327\212\361Y[\212\317\230\365\346\250J*\224\253\232\201b\334\365\255kj\002\347\025q`\311\351S\307\036\0074\362x\364\025F\340\357l\016\202\241\333\305W\224UfZg\227\232\215\242\333@Q\217z\206A\212\314\276\000\245`\\\252\223\362sL\202\325\235\306V\267-mv\000\241q\236\265\271\n\210\241\030\034\322\263\026\250^\2429\3151\311\003\006\253\263T,\365\0239\250\331\2522\324\302\324\322\324\322\324\322\324n\024\241\2058?\275=\\S\274\320)\353&{\323\303\320Xb\221NML\256\243\250\2531J\244\343\245]\216\255F*\324|U\330[\245h\300\325\243\001\342\264\"5z\023W\2435r3V\343j\271\031\310\251A\246H\271R\rUN%\255(NT`\324\340\232\221Mx\224\246\251K\324\325\031zUf\\\232\263kk\275\301\305l\307\000T\002\237\263\260\024\216\002\214TR\034.\007Z\250\343\232a\351T\346?6*\034d\322\220\005F\370\250\310\031\252\362\343\221\232\313\236\007\235\210\317\025\017\366r\2022*\3546Q \014\024dS\335\304m\3063\351RF\354\347\255N~T\252\362\314\250\271j\316\233QD$\356\025I\265`[\236\224\035R\003G\332\343~\215G\230\010\3105\021\224Tm(\250\214\343=i\276x\250\244\271\013\336\253\276\240\007J\204\337\2714\365\276\222\244\027R7\025j9\216\336i\305\331\272qR#\260\034\232\223y\343\232z\276x\2531c\251\251\000\347\212\235#\343=\352\334E\224\200M_\2178\006\255&1V\241\353ZPv\255(M^\210\325\350M^\210\364\253\210j\324f\256Dj\3004\346\033\206*\234\250RM\303\245Oo.\016*\362\266EJ\243\326\274JST&j\250\347&\210\342\334\340b\266-m\302\017z\266W\214R\037\225}\315B\304b\252\310z\232\201\272\3242>\0063Te89\250\214\200rM0\334\002x\300\250\332u\365\252\362^(<\032\315\274\275\000\034\036j(/\224\367\346\256,\276g\275J\031\261\214\3242)\335\232E\234\307\317aT\256\365\226BT\032\306\271\325&\220\237\230\325\026\232G9$\323\014\204u5\033M\203\326\201vW\2759u\'O\342\253\t\252D\303\347\353S\245\3242/\rI#(\344\020j\244\267\014\007\312*\224\263\273\036\265\007\314MO\014d\236EhG\020\002\245X\2239\305N\252\005H\024z\324\200\250\352i\014\311\234u\245Y\001>\325f99\034\325\224`M[\216\255\307\206\"\257\300\017J\266\261\215\271\025<#\014+F\036\325\241\rhE\322\256E\305^\204\325\310\352\324}\252\324f\255!\310\251W\221L\2252\204b\253\307\303}+B#\305N\rx|\306\250JI5\020RM_\262\266gpq[\"\r\253HP/-PH\302\253H\343\025Q\333\232\201\311\316j\026RNMS\270e\000\232\315\226nO5U\347\307z\251%\313d\340\3259n$\355Tf/ $\223N\265\014$\002\267\240\341\005X\310\025\024\207\035\3532\356\361#B\240\363XSHdri\202<\3221U\025Ri@5U\245\367\250Zoz\211\246\347\2553\315\367\245[\211\020\345X\212\235u)G\004\346\2365\014\365\024\357\265#v\025$sC\374U<sD[\203V\321\324\216\032\246WQ\374B\203s\032\177\0275\033]\223\367iD\307\034\234\320\254sV#cV\323;r*\324D\361W\242cWa\373\302\264\242\310\301\307\025y\000)\221RG\301\253\320\032\321\207\245_\212\256\304zU\310\215]\210\346\255\307V\223\025b3\315XQ\315+\256V\251\203\211H\253Q1\035j\322\034\327\207\312\t5\007\224X\340\n\261\r\2133\002El[[\254k\322\2540\000\022GJ\247#\344\223T\345\3115]\220\346\240q\203P\261\366\252\362\260\nI5\215u>X\200x\254\351\036\252H\304\324\'\2558\"\3106\232i\262\344\363\305*\333l\344u\025a$)\301\025\'\332x\351Q\311#:\341k*{7\221\211\344\324\037be<\203QK\031\215N\005e\\\273\202EPvcP\263\032\205\230\323@$\323\3262M?\310cA\2674\303\036\017\"\234\022\234\020\216\365\"\203\330\324\350\362\001\324\324\333\344\307Z\001c\324\323\325\210\342\246F\311\353Vc\000\325\204\025j6*q\332\255\306A\305_\204f\257D:V\244#**\334y\013\322\245N\265r\032\277\t5\241\t\365\253\321t\253q\325\310\215\\\217\232\265\031\253)S\241\251\205Wx\201\223\"\245X\316\337zz\022\016\rx\337\226Y\261\212\267\r\240\000\02295v+p9\305X\330\025x\252\363\002O\265W\362I\344\360*\t\004`\341NMT\223\216r*\234\204\223U\344p\240\222\177\032\307\274\272\334J\251\342\263$bj\263d\324,*&\024\200\355<u\246\275\321Q\353P\265\334\244|\240\325W\274\233wz\222\033\211\\\216\265}\037j\363\326\235\346\344\364\247\022\244r*\255\304\033\324\225\254\251\364\307p[\025\231=\203\241\306\332\246m\034\236\224\323c\'\367i\r\233F2E\"\253\217\340\375(g`:T~n:\232]\352\302\232X\nM\336\225\"\023\351Vc\"\245\355E(\251W\255Y\214\343\265YF\253Q\341\206*\304{\225\260kJ\335\270\255\030\217\250\255\033r6\325\350\275\rN\251V\"\030\340\325\330\273U\370N*\374G\212\271\021\253q\325\310\316*\324f\255\247J\224\034T\252\324\270\371\263V\024er)\216\207\250\353^Oo\016\\\022+I!\317j\234D\024S\037\000Uv\003\005\337\200+2\366\364}\3048\002\262\244\271#\241\252\217rKri\206|\216MP\272\270-\362\251\342\263$\344\324\014*\006\034\324L*?\255C#\2000*\233\362jH\023\'\221V\036\321\034gh\024\261\301\260\000\270\024\363\264\036X\na\220g\345\301\250X\314y\rI\347\262\2141\3152K\206\306\007J\245,\300\217\230Uc,y8\024(\311\315,\2011\363b\250\3154J\n\214U\007\205\246l\2514\337\260c\253\363CZ\021\321\2054[154v\236\3659\216(\323\007\255F\030\026\342\246\013\357O\n1OT\317J\231#=\352t\\v\253\021\2405b1\266\256\304Cu\025~\000\243\232\321\205\2061W\241\306x5z3V\343>\325a\007=*\344B\255\306*\364\006\257GV\3435m\017\025f3V\3435>~ZT|\232\260\204\036\rL\231Z\225\260\303\322\274\272\336\002\010\342\264R<-5\2075Vi\025~\361\342\261\265\013\360F\3058\002\261d\233q\353T\345\227\025_v\343H\344\343\002\252I\336\253=Wz\205\205B\330\250_\247\025RC\315@\331\317\02549\034\346\244i\317L\361Q=\303\021\200q\364\250\303\022rM#\310@\3008\250\274\307\354\306\232\306S\3375\013\254\347\326\241te\\\271\252\336|jNEW\227Pp~A\201Tf\275\231\273\232\250\322\310\307\222jx\245\224\014\002j\302\227=sR\250&\237\222)3\'\360\203H\"y\033\234\324\353m\264sO\021\324\213\037\240\251\0262\265*\223\236\225:c\275N\230\355S(\315XN*\344MW\242n\225~\027\255\010_5z\026\253\211\216*\344X\342\256 \300\2531\034\021W\3425n:\267\031\253IVc\251\213\014b\232\247\232\2367\344U\304~9\251F\010\3105\377\331"
-byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\003JIDATx^\355\334Yn\3430\014\000\320 \275\377\221k\014\246\235\026\250\006\256W1\224\370\336_\2354\213$S\244\344\370\361\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000`RK{\200Z\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\365l\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000-\367\232\000\000\000\000\000\000\000\000\000\000\000\000\340\005\374\254\245\256\245=\000\000\000\000\244g-\007\000\230\226\215\213-RA\000\3160\177\000\000\000\000\000\000\000\000\314\3075!\000\000\005\371\351\r\000\014\345i\001\007\000n\245,\006\000\250\340\255=\000\024ey\025\000\000\200\241(d\263\212\352\231\263\333\331Q\237o\030g\033\222\201\030\365\014\353\275=\000\000\034%\027\334C+Q[\2273\300j\003L\241K|\000\000 \231^Y_\257\327\005x\0101\247\365m\270\357%Ak\203Y\365\035\000$\246\353+X\273\361\342\312\341UB8\014l\337\t|4,0\032=\\\315\235=\276/\212\000\000@\200;\023\335\271\254\255\002\302\313\250%\001\240\013i\037\000\024\245\316&\001\303\020 \216\372\277\254$]\357\026\257P\310j\232\237$ \321\270\332/W\377\037\000\000\200K\276\3122\345\031\220\202`\304\303\246Py\253\233\004\000L\316\014\020.(\371\326\263\300\016A\021\tHD\212P\234\001\000@CM\000\000\231\231\251\001\200M\233\253\276\233O` \207\362\303CO\006\000\000\310GY\003\000\000\300>*\310\342j\r\200Z\337\026\000\000\000\356\347\266\313\000\000\000\000\014\312e#\000\000\300\005nF\367\032M\273\377\275h\341\253\272s\001Ca\316G\000\000\200\001]\330\257U\007\002T!\342\003\017\241\000\240\224\013\213\005\244wlJ7\026\000\n96E\000@g\252\221`~\001\000\000\0000\033\245uC\203\000\000\300Ord\000H\312\325\234\000\000\000\300\026\353\007\000\000@N\252\225\237\\\242\005\000\000\000\3005o\355\001\000\000\210f\033\270\032\033\335\000\000\261d\334H\302\001\352\222\007\000\000\324c\031\000\200\341X\300\270\211,\000\000\000\200\\\346(\371\325\333\000\000\000\003S\324\365\322\266l\373\367\213,I>\007\020\252\327\231?\307\362f1\275\006\003P\224\231`,\037\223\300\221N\333z\356\326\343\3743\354\364\373\313\007\327\371\005\3752\036\000\200\214L\336\000\325\324\216\374K\301\357_\357\033\003\237\"\327f\227\3107c\277\250~\211z\037&%W\201\016\336\333\003\014N\250d\027\247>\214@H\007\200\211\005.\224\313\376+\213\033g\244\245\254\000\000\000\200y=\255\377\000\000\300\334l\366\325\246\342\343\233`\320\3370m,2\324\243\317\0010\033@=\303\024(\264N\004\354\247\356\006(\313\024\000\220\321\275\321\371\336W\243?=\006\3779\261\326\001\000\0000\263\271\312\244\271\276\315\005\032\002\000\000\000\000\000\010b[\002\362q\r9\221\314\003\221>[;\366\034\277\275\207c?>p\320\3069\277\361\3606!\000\000\340\210\313\351\0270\034U\023\000\224#\355\007\230\333\037\020\217U\035\335\242\351\375\000\000\000\000IEND\256B`\202"
+byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\003\002\002\003\002\002\003\003\003\003\004\004\003\004\005\010\005\005\005\005\005\n\007\010\006\010\014\013\r\014\014\013\014\013\r\017\023\020\r\016\022\016\013\014\021\027\021\022\024\024\025\026\025\r\020\030\031\027\025\031\023\025\025\025\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000\372d\361@|T\251.;\325\204\2375/\231\234Ts6qP9\300\250]\252\006|Tl\364\302\364\302\364\205\2517Q\272\215\324\205\251\205\251\205\351\206Jizc=F\317Q\263\324l\325\013\265B\317P\273\324\016\365\013\275@\357P\273\324\016\365\003\275Ww\252\362IU\244\222\252\311%V\222J\251,\225Y\345\252\362IUd\222\253\274\225ZG\252\357%@\357P\263\324e\351\245\351\273\251\245\3517Q\272\224\032v\352P\324\360jE5\"\232z\265M\022\0275\243mm\223\322\266\254\3556\340\232\372\210\3101L2P\262\363S$\336\3652\317R4\200\240\372\323$nj\273\232\201\333\212\201\237\024\302\364\322\364\233\351w{\323wR\357\244-Mg\250\231\3526za\222\232^\243/Q\263\324l\365\023\275@\355P4\225\023\275@\357P\273\324\016\365\003\275W\222J\256\362Ui$\252\322IUd\222\252\311%U\226J\252\362Uy$\252\362IUd\222\240y*\273\311P\273\324,\364\302\364\322\324\322\324\233\275\350\335\357F\352P\324\340\364\345jx5\"\265H\rO\n\027\"\264\255\242\351[\026p\005\031\"\264\341\030\300\257\242<\376)\246j\004\265*MR\254\325(\233#\025&\365\300\346\242\220\360j\273\265Vv\246\026\246\226\243w\275\001\351wf\223u!z\215\236\242w\250\231\3526\177zo\231M/Q\263\324M&*&\222\241y*\t$\315B\322T.\365\003\275@\362Uw\222\253\311%V\222J\255$\265ZYj\254\222UYe\252\262KU\244\222\253<\265]\344\252\362IU\336J\201\337\232\211\236\242f\246\026\246\356\244-I\2734\006\315\033\251w\323\203S\225\252E9\251\223\332\247\2122\354+R\336\016\000\305jZ\333\355\031\"\257\3049\305iZF\0168\257t\023Q\346\322\211i\3136*E\236\245\216~z\324\3516q\232~\374\217\302\240\220\325g5\021jM\324\271\024\264\335\324\205\251\205\3526z\211\236\242g\250\213\323K\321\2775\023\276*\007\222\241yqP\274\265\013\311P<\225\003M\232\205\345\252\362KU\336Z\257$\265^Ij\254\222\325i%\252\262KUe\226\252\311-V\222Z\256\362\325y$\252\357%@\362sQ3\346\230\315Q3\323\013SK\342\232\322S<\312O0\322\253\023R\250&\246H\211\251\222\002jd\2675n;S\351Z\026\266\230\0315\245o\000\004V\200\217\345\030\251\340\207&\265mc\333\212\365\345\2334\276n{\322y\370\247\t\352E\233\336\236\263\363V#\237\034\346\254$\273\200\006\206|\214\036\265Y\332\241f\301\244\017N\014\r.i\254\325\031zc=D\322T,\365\023=F^\233\276\220?4\311[\212\252\362T\017%@\362T/-@\362\324\017-Wyj\007\232\253\274\265\004\222\325i%\252\322KUd\226\253I-U\222Z\255$\265ZI*\263\311P<\225]\244\250\231\351\206@*&\233\025\023K\357Q\231sI\2734\340\245\251\342\006\306qN\020\023\324T\261\333\373U\270\255\275j\334V\313\351V\343\264_J\261\035\250\354*\302@\027\265O\032\325\310\027$V\2341n\002\257Am\355W\340\200\212\364\010\347\307z\224M\357A\220\322\tjE\232\236&\251\322n\0075b9\361S\211\201S\232\210\277\006\241v\246o\247\t)|\312C%F\317Q3\324L\365\023=D\317Q\263\323\013\322y\2304\217&ES\231\360sU\236J\201\245\250\036J\201\345\250$\226\253<\265\003\313U\344\226\253\274\265^Ij\264\222\325Y%\252\322KU\244\227\336\253I-W\222J\254\362T\017%@\362\342\242y}\352\006\224\347\257\024\307\2234\306&\221FM[\206\330\266\t\253\320\333\2008\0258\267\342\217$\016\325\"F=*X\342\315Y\216<U\330\220b\254\"\214R\343\232\236%\253\326\321\344\212\330\266\213\201Z\020\305\323\212\320\212,b\272D\223\245H\262`\324\202L\323ZL\032\004\336\365\"M\232\235%\251\322Z\231g\342\236\262\002\270&\230\355\362\324,\370jA%;\315\246\231i\215%F\322Tm%D\317Q3\324L\364\303%4\311Q\264\265\004\222f\251\313&\rWy*\007\222\240yj\273\313U\344\226\253\274\265\004\222Uw\226\253I-W\222Z\253$\265VIj\273\313U\336J\257$\225\003\311\216\365U\346\316qU\232Pz\232\214\277\245\030\315K\0349\0314\343\020\024G\030\335W\343\000%^\267\\\2408\251\366\361H#\3158ERF\233[\221V\202n\350*\302&\006*d\\R\371\1775Z\206:\320\266Lb\265\355\2008\2558#\315]\2111Z\213!\003\232x\226\236&\3051\347\006\231\347{\324\2517\275XI\275\352e\236\236.*h\347\354jO7 g\245E+`\212\214\311G\233Hd\246\031)\215%1\244\250\232J\211\236\242g\2464\225\033IQ<\265^Ij\264\262f\253<\265\003\313P<\225ZI*\274\222\325w\226\253\274\265\004\222\325g\226\253I%V\226Z\255$\225]\344\250\036J\202Ip*\244\216[\332\253H\371\357P\362i\3529\247.3VT\341z\323\032L\232X\317\315W\003|\240V\215\243e\005YQ\223R\252T\213\036jA\026jXSkU\301\027zz\255=c$\364\253P\307W\242\210\236\202\257\301\023\216\325\251h\217\351Z\220\306N3V\327\232\215\362\246\242i\217\2554\315\232\004\324\345\233\025<w\036\3652\317N\363\375\352D\270\367\2531\334eq\232V\223$s\232c>3M\363i\014\224\206Ja\222\243i*&\222\243i*&\2235\033IQ4\225\003\313U\344\226\253\311-V\222Z\256\322\324-%B\362UY$\252\322IU\344\226\253\274\265]\345\252\322KU\244\2235^I*\006\222\242w\305U\231\2306r1U\344rEBy4\001\221\232\t\367\245SR\003\305\000f\245\215y\253\321E\271sZ6q\376\354U\324\216\247X\370\247\252U\210\341&\254$\030\307\025:\306jd\200\032\235-\275\252\355\255\2139\351Z\366\366\001\007\"\256$h\235\252\324\030\354+F\010\367b\242V\347\212d\215\311\367\252r6\322i\236e\'\231N\022S\326\\T\3517\275I\346\322\211\261S\307q\317Z\224O\2200z\032y\227?Zc6)\276e\006JcIQ\264\225\023IQ4\225\033KQ4\265\023\313U\244\232\253\3115Vy\252\t&\252\362K\305Wi\260j30=\352\t^\252I%V\222Z\256\362\325w\222\253\274\225\023e\206zT\022*\201\313sP8Q\334\324N\352\005D\304b\252\311\311\250\310\342\224\251\034Rb\225E9z\324\250\265b(\3130\000V\254pm\214/z\277o\016\325\002\256G\036je\216\246\216\034\234\342\255\307\025N\221f\246X*\314\026\305\217J\322\267\260\347\221Z\326\366\351\032\361J\340\267\003\245:(\t\353W\340\203\221\305i\333BN8\254x\244\310\024\262H\007\025N\341\271\315V2b\224IO\017N\017R,\230\251\004\264\276m*\315\203\326\245I\371\253\002m\324\341/\03754\310\t\353Lg\307za\222\243i*&\222\242i*&\226\242yj\t&\367\252\322MU\236oz\257$\336\365]\346\367\250$\233\336\240y\263\336\2413`\363L\222`j\244\217\357U\244\177z\254\357\223\367\205D\304g\2265\033:\216\225^YO\255Ww\315D\315P\273S\013dc\2651\2054\214\212\010\346\220\217JJz\014\325\210\220\234V\235\225\267 \326\304V\300(5m \251\226<T\361\307\232\265\034^\325ac\253\021EVR\034\325\350\"\021\201\353W\243;\261\201V\024az\323\321I5r\336\002\304qZ\366\232ql\022+b\326\304.8\256\002\332~9\251]\267)9\252s\276\0235T\311\236\364\325\227\236je\226\244\017\232z\275<=\036e.\372p\223\006\245I\361R\211\370\2453\003MiH\347\250\250\332J\215\244\250\232Z\211\244\250^\\w\252\362MU\344\232\253<\365ZI\275\352\273\317U\336oz\205\347\367\250\036Z\204\315\357Q\311p*\254\22795^K\217z\254\363Tfl\3655\033KP\274\225\013I\315\004|\265\003\036i3\357K\214\322\021\232n(\244\013R\306\265~\326\014\221[6\261\005\305i\3068\025m\020b\234\023\'\212\267\004\036\265q!\317j\235m\372T\321\305\315^\206\016*\304v\345\215^\216\337\245Z\212\320\275]\203O^\365\245ml\221\364\0315\251m\021b+N\030zW\216\333\315\3163WU\216\332\255!\310aY\356\373M4IR\244\2652\311R\t)\342N(2R\211)\336f{\322\207\305;\315\245\363i|\3760i\206Lt9\025\033KQ4\265\013\315\357PI7\275U\222j\255$\365^I\252\263\317\357U\344\232\240y\375\352\007\232\240i\275\352&\224\261\353PI!\035\352\263MU\345\233&\241i*6\227\035\352&\234\372\324m1\246y\234\323\374\377\000\227\336\242\335\223J)\301\251q\2326\322\354\024\005\311\342\254\301\016H\255k8+N(\360\005]\2012*\332\256\005K\024l\304qZV\326\244\362j\364pc\0258\206\245\216\334\236\325z(0*\325\274\034\364\255\030\255\275\252\3446\276\325r\033ROJ\321\267\264\000\014\326\2041*\325\370#\3175\340\366\304\3479\255\030\237\"\243\230\355&\262n_k\232\204IR,\2652MS\243\027\351N.P\340\322\031sN\022S\204\264\341/\275/\231G\233\212i\227\336\232f\2464\325\003\317P<\376\365]\347\252\322O\357Ud\237\336\253I=A$\325]\347\367\250\036oz\201\346\367\250Zzh\226\240\236\\\325W\226\253I/5\023IQ\264\265\023IL2Ry\264\t*E\371\207Z\\\363\212r\232\225i\331\305(\005\217\0252C\201\232\263\010\303\n\327\264\003\212\321D\316*\354\021t\255\010\255\363V\341\200f\256\306\273j\334)\236\242\256\303m\273\265YX\000\355S\307\006j\355\265\2779\255(a\366\253\320\302}*\364P\340t\253\010\204\236*\355\274\035+F(\260+\347[i@\035j\364SzQ3\356\025\225zy\315U\017J$\251\026^kB\302\351\021\306\376\225.\245q\0236c\340U\024\237\326\246IsN\337\315(\226\227\316\2442\323\014\264\3235F\363Uw\237\336\253\275\307=j\264\223\373\325y\'\367\252\262\\Ui\'\367\252\355=B\363\373\324\017?\275A$\365\t\232\205\237\336\242\232l\367\252\222KP4\274\324O%F\322S\013\323\013Ro\245\017OW\251\025\263\315J\246\246L\236\005H\007\030\025b\004\030\351V6qDc\006\264\354\337\030\255\233Q\277\025\253o\035hE\037\0252\215\265j\004.FkJ\010:qZP\303\205\251\222\034\366\253p\333U\370-\353F\013p{V\2046\334\016*\312\333\373T\361A\203\322\257A\017\265^\212,\327\312\342\343\035\rZ\266\274\311\306j\327\237\232\251vASY\305\360i\004\224\365\222\237\347\020sH\367\004\367\253\320\342[2q\363\016\206\240\216~qS\211i<\332_7\216\264\206Zi\227\336\243i\252\t\'\367\252\322\\{\325i\'\367\252\357q\357Ud\270\367\252\322\\{\325w\270\317z\256\363\324\rq\357Q5\305@\363\373\324fjO:\243\232^3U\336Z\256\322sLi)\236g4\205\351\013S\013\320\036\245G\251\221\252\304x=j\334Q\026\034\014\n~\315\247\025n\025\030\251q\305>8\371\253\260G\202+^\315\366\221[v\307 \036\325}y\306*\304Q\226\"\264\355 8\351Z\366\326\371\253\253\027lU\210\240\311\351W\342\266\300\036\265z\013^\234U\350m\366\221\305_\202,\342\255\2545<PsV\322,U\313x\375\253\343H\356\303\3645j\033\202\033\255iC8q\357L\231\352\204\307kqQ\007\346\234$\247\211)\245\360j\354\027\330\217`\3075\037\335$\226\034\322\231\260q\232\014\352;\232w\2341\301\2443S\032lw\250\236\343\336\253Iq\357Ue\270\252\317qU\244\270\367\252\262\\{\325w\270\367\252\317q\203\326\240{\212\201\356*\026\270\246\031\363M3{\322\t\271\246\3136W\025U\245\250\313\363\326\230^\230^\224=.\357zc\032@\325*5X\215\252\344\'\245_\216N)\300d\346\254\304*\314q\346\255G\r]\206.\202\257\303\0161\305jY\260\310SZ\361E\2201Z6\320\217J\326\265\204q\305i\302\200\n\271\0149=*\374\026\370\355W\241\267\347$V\225\265\266q\221W~\315\362d\n|)\266\256$y\253P\305V\322\034\232\271\004\025\360\2142\354<U\370n\003\001\3175~\336c\236\265jG\371\001\315U\270\350\rU/\203G\231\357OY3J_\212\214\312A\340\325\210\216\340ri\246LQ\346\342\233\366\214t\245\027\031\357Q\275\307\275C%\307\275U\226\347\336\252Ks\327\232\255%\317\275V\222\347\2575Y\3563\336\253\275\307\275W{\214\367\250\036\343\336\240\222\343\035\352\023qQ\265\316;\321\366\240i\3136i%\223\212\255\346\363I\346\373\321\2734\326j\003\322\207\245<\322\001\315J\225f!\214U\270\252\354Uj1\232\263\022\325\330V\257E\036EZ\202\"\017J\323\202.:U\250a!\205j\333\222\240V\265\231\014@5\265m\026@\255+x\t\305jAm\323\212\322\206\r\243\245^\202\r\335\253F(6\201S\371Y\024G\001\315\\\212*\271\014\025z\013\177j\273\024\025\371\366AC\315K\034\230\357Z\326m\234\032\274\355\214UK\251;U\'\223\232o\233R,\274Pe\2464\265b\332u\311\031\244\231\3109\025\001\237\336\230g\367\246\233\232c\\`u\250$\271\367\252\222\334\373\325In}\352\264\227>\365U\356\271\353P\265\306{\324\017q\236\365]\347\347\255B\363\373\325y\'\367\250\032zg\3323\305F\323\025\251\240\271\311\353SK!\333\221U<\356h\363iVsR\206\336)\233\360i\341\252U\247\252\363S\306\234\324\350\270\253Q-]\211j\344IW!\216\257C\025hA\037J\277\0145\247on6\325\310\255\3623\232\263\014x\353Z6I\363\347\240\256\216\311x\025\271i\006@\255(a\307j\277\024Y\025z\336,\032\277\034u0\207\212\22689\034U\330\255\372U\350-\275\253B\033n:U\205\207\025\371\333qp%#\025\037(FkR\325\212 \3645p\\|\244\032\245sq\226\252\255.i\276m(\227\002\235\346\323\032J\201\247*\334\032\274&\0060s\332\251\3116\t\250\232\177zi\270\367\250\332\343\336\253\311q\216\365Rk\217z\247-\317\275T\222\353\336\253=\317\275B\327X\357Q\265\317\275C%\306{\324\017qPI>*\006\270\250\314\376\364}\243\"\244\212nj\341\233)T\214\237=9e\353NV\315L\217\203\232\225\200e\310\353DGuYA\315XE\346\247\2118\251\321\t5n(\352\3541\325\310c\255\010!\351Z\020\301\322\257C\rh\333\303\234V\204K\221\200*\3346\344\216j\3746\2758\255\033{\177j\332\261\210\341x\255\3735\300\025\255\n\016*\3641\373U\310\343\305[\214U\250\323q\025lE\302\325\350 \3168\253\360\303\200*\354Q\374\265*\307\223_\232&Ozr\312X\3435r+\362\212\024\366\253\037n\334\265ZI\362j?6\232e\367\247\th2\343\2751\246\250d\227\336\247\202\3531`\236\225]\347\250\032~z\323\r\307\275F\367\034u\252\262\334\347\275T\232\347\336\251Ms\357T\245\271\347\255Wk\232\211\256s\336\242k\236:\324ms\317Z\211\256=\352\'\237\"\240i}\351\206\\\367\247#\344\324\361\2229\251\374\354-V\022\376\363\255I\274\2065$rT\350\371\253\020\266~SS\"mqW\0253\203S\306\265j$\343\025j\030j\354p\037J\265\024X\355Z\026\360\023\216+N\336\330\361\305iAjH\351V\342\266\366\255\033k\177j\324\202\320\005\351\315\\\206\337\'8\253\360\333t\342\264-\355\361\216+b\312\3378\342\265\240\267\306+V\336,\201Z6\360\325\264\212\254\303\001$U\350\242\307\025j8\262EiA\017\312*\344QU\264\217\212z\'5\371\200d\241d\3058KS,\370\036\324\255&Fh\337\3054\311F\374R\031j&\232\242y\263I\014\330$g\2552Y\260H5]\347\250\315\307\2775\014\227\030\357Ud\271\353\315T\226\343\035\352\224\327\036\365NK\216z\325g\271\367\250\036\353\035\352#u\236\364\323s\357L7\024\303?\2754\313\232\211\246\301\251#\271\002\254-\330\"\245I\267\003P\226\303\324\301\370\316jHX\232\265\023sV#8z\321\2157\001W`N0jt\217\332\255E\035iZA\272\264R\333\216\225b+\\\366\255+k]\270\342\265-\355\217\025\255mm\362\343\275Y\216\323\236\225\241mi\216\325\243\025\271\030\342\256\301o\323\212\321\212\333\000qW \203\221Z\266\261\355\305hBGAZv\230\255(\312\216\225n\034\023Z\020F\r\\\212\032\263\024<\326\204I\200*\344KV\221x\247\252\014\327\345q\224\016\264\343&\361\225\350:\321\347\206#\024\377\0000\202*\302H\016\024\323Km4\205\363M/L/\232\211\344\250\032ZX\211\034\232m\304\237-g\3116;\324\rs\357QIq\357T\345\270\367\252\262\\g\275T\232~*\214\267\034\365\252\257s\357U\336\347\336\241k\237zAu\307ZSq\236\364\323?=iD\371\357Ly9\244I\252O7\025n\332\\\361RH\377\0005J\217\271jh\237mZ\211\262j\375\272\006`Mk[\250\000b\256$}\361\326\255G\027J\267\0249#\212\327\264\203\030\255H\241\311\351W\340\264\335\216*\364V\245q\307\025\243o\007N+N\332 +F\010\007\025\243\024@\257\002\246 )\025<R\250\305]\206R@\300\253\220\271\343\212\277l]\334\000+^\336\022\275z\325\215\376[`\324\361\310\371\310\311\025\243os\2023\326\265\255n\227\216kJ\033\205\342\255\307\"\372\325\330d\007\275\\\215\205\\\210\344T\250\274\327\344\373\277\251\253\026\222\205F\357\221U\374\334J{U\245\22384\345\237\r\351Ni1\216sL\363\262z\034z\320\322S\032N\rA$\234T;\362jF\234(\305U\270\271\005H\006\263\246\236\252<\376\365\023\334\344u\252\222\334{\3259.9\353U\245\270\310\353T\'\237\035\352\233\334\373\324\017q\357P\265\307=i>\323\357J.3\336\224\317\357J\267\030\251<\335\343\255\000\234\324\241\362*\325\264\2305<\215\223S[>z\212\270\2407J\263\n\342\264m\326\264\355\272\214\326\244_t\n\271\ng\025\247on\016\riA\036\334V\245\274]+f\312\034\2001Z&\317\010\033\265>5\tV\341\220\014U\270n\t8\305hB\354\325mm\031\306\342j\304V\244`\005\311\255\030,\345`01ZV\272l\214\303=+\251\3224\025\030f\255\033\3134\215p\213X\323[\261~\365\253\245\304\270\303\212\321}7\3149Z\210\332I\017<\323\026\362D\223\031\255;k\307 V\245\265\313`V\235\265\316\354V\265\273\006QW\241L\327\344\233\221\336\230\267&#\307J<\363+\014\325\270\337\013\315;~hv\333\0314o\302\001L2\323ZN\rA$\234TbN\365\024\363\325\031g\252SMT\344\236\253\274\365V[\214\325I\'\311\353U\345\237\031\346\250\\O\305Q{\217z\201\356=\352&\270\246y\376\364\341qR\t\262:\323\204\271\251\242\226\254,\271\342\245V\251\341\'5k&\247\26785z/\275W\342\033\207\025~\331pkV\005\300\006\264\355\323p\315iA\027\002\265m\023\245jC\006{V\235\2548\003\212\327\264P\202\2565\300\333\264Q\024M!\347\245h\333Z\202@\003&\265\355t\227\225r\022\265l\364)N\003t\255\353M\010\340\014f\265-<>\001\031\025\261m\242\306\0241\351V\323J\2107\313\320V\205\274\t\016\006\376*\314\237g\013\352j!g\014\274\224\0305f\013\030S\220\247\025mbU  8\247MhJ\365\006\251\0351C\023\216i\361[\204o\231qR\227\021\236\rY\267\270\031\030\255\375>p\340V\344\007+_\221\254\325\033t\244Q\216je\227\"\236\262R\311&S\024\326\223\346\3051\237\006\2432pj&\223sq\322\242\226]\242\251K=T\226~\265JY\272\3259&\367\252\3177\275V\232l\216\265B[\214\036\265\013O\270u\252\027\023\037Z\240\367\030\250\036\342\242i\351\206|w\247\245\316ju\270\305=f\315M\034\365f9j\314rU\310_\221V\301\315X\26785~\037\275Z\026\353Z\226\312\010\025\247\010\310\002\265\254\343 \014\326\315\2749\002\264\255\340\306+Z\326>+F,(\346\254\t\0168\2536Q4\256\000\031&\272}/\303\362\334\020YH\025\325Xx~8q\270d\326\365\275\204q(;@\037J\273\024Q\2020*\374\014\201\206\027\245[M\304\345F3S\305n\304rO5j;RF\0014\377\000\260\276{\342\257A\246.\320O5im\200_\224T\211\017\265XH=\251\376Fi<\215\2478\244x\003)\310\254\rM\232\335\310\355Ri\222\231\260+\242\265\337nA\355]5\204\276d`\346\277#\267SKR\027\305(zxzql\212Wp\361\002O#\212\204\276H\317Jb\202C\212\215\237h\346\251M.I\252R\313\326\251K/\025Ni\252\234\263{\325Y&\367\252\362M\221Y\367\023sP,\371\004\n\253u.\005e\313>3\315Wi\371\353L3\346\230e\367\247$\243\326\254\3070=\352e\224T\261\3123V\342|\325\310Z\257[\234\221Z\010\271\002\254D0\325\241\000\371\205j\333&Eh\333\2561Z\266\321\356\000\326\325\232e\000\305m\331\247\312+f\010\006\320j\334XJ\271\014[\2715\241\005\223N@Q\232\353\264\035\r\"dv\373\335\353\264\265)\022\200\024U\250\311\' U\310\324\2763\322\255\303\017\265^\202\037j\320\202,v\253\321\303\234U\310\241\305YHw\221\305X\021\355$\017J\231-\317\245M\r\250<\232\227\311\003\2659`\245k~*\027\213\212\301\327-w\200\000\346\233\243\332\030\216H\256\2628\303[\201\214\326\206\224\205x5\371\034[\024\322\324\205\250\335O\rK\276\224\270#\007\247Z\221Q@\246H\341FMg\\M\222j\204\262\342\251\313%R\226J\2454\276\365JY*\254\222\325i&\342\250\\K\357T\376\323\265\272\324WW\005\227\035\253&i\260\314*\263MM3S\014\364\013\216z\325\210\246\317z\260$#\232\236)I5\243o&qW\242j\320\266nEjB\374U\250\2715\243l\271\305k[\257\003\025\245n\207\002\266l\342\371A\255\2738\362+f\316.\005kF\333TU\253X\374\326\006\265\222\324\234\005\344\327S\241i\233c\014\302\272\213H\004`b\265 N\225~\024\034U\370S\245^\206>j\374\021f\264`\213\245]\212\032\260\230^\rh\331\306\010\007\025)\267\006A\352j\332\303\212\210\2349Q\332\244D\305M\260c\2574\2052qH\321*\236zU\033\233!3\223\216\0056\033UG\000\n\350m,\263\020\'\245^\267\264\330\331\257\307\2268\246\356\246\356 \322\356\317zpjB\324y\224\345\271\3320j\275\305\316\341\201Td\223\255T\225\352\224\322pj\214\322U\031\245\252\222IU%\222\252I\'\025B\342^\265\2354\265\013\\ey5B\342O\336Uf\222\230f\246\264\240\321\274c\255X\202aW\225\201^\265,m\216\225~\325\372V\224&\264my\"\265\240N\005]\205qZV\303\245l\331\257J\327\266\217$V\315\224u\267e\0275\265l\241G5iF\367\000V\335\215\267\312\240u5\325\351:Z\340\026\256\216\3325\\\005\351ZP/J\320\201qW\340^\206\257\302\265\243n\235+F\336:\321\202<\342\264\"\213 R\275\271\0075\245a\0032\364\253\266\366\331\230\203\330T\356\233MUu\006S\201R\242\343\212\265\344* -\311\250\223kg&\232\320\356$\347\002\231*\215\230\024\266\226\r#\203\212\337\216?-@\364\253\nk\361\261\372\324E\260i\245\250\r\315855\236\233\276\232\317U\244z\253#\325Yd\305P\236J\2434\225JY:\3259\037\255U\222J\2514\230\315f\334K\326\263\346\222\2534\274\325K\227\306\rUy*&\226\232e\342\225e\367\2530\267\"\264\242`S\255K\033\220j\365\263\363Z\326\307 V\235\261 \212\327\267n\005h\3003\212\324\265^EmZ\250\030\255\233D\316+f\316>EmZ\256\322+C~\000\305h\351\361\377\000\023WS\242[\231\244\007\025\326\302\241\024(\255\033n\325\247\005hCZ\026\353ZP\'J\321\267Z\322\201zU\350\027\014\017j\324\211jW\302\257\326\265\364\300\257\030\035\352\300\214\306\305\217z\257p\314N\026\241TpzU\250\343$\0169\247\313\033(\"\263\335\0369x\316\r]\202\325\345\0035r=;\246kB\013m\200`S\344\214\342\235\022\223\327\275~6\310*\253}\352c5\033\272R\207\244f\246\356\246;Ui^\252\310\325Rg\252\0237Z\2433U\031_\255U\225\352\234\217\326\251\316\365\233q\'Z\316\232LUs\'&\253]?\311U\013\344T,\336\365\0339\241$9\253\260MW\243\232\255C&Mi[\021\305j[>\010\255\213v\334\006+V\334p1ZV\331\342\265\255z\212\334\264\031\255\2535\351[\226\213\310\2554\371\000\255;\010\274\323\270\364\255kX\367\310\024t\025\332i1\010\"_Z\327\201\267\021Zv\307\245i\301Z0v\255Kq\234V\245\272\347\025\247o\037J\321\202>\225~\004\344\n\276\243h\024\256\234\203Z\232a \214V\231(\357\264\236MA4\001\037#\245U\270\275Kc\311\252\315\342DS\362\200\r1u\243q(\036\265\277mn\223F\247nI\253\361Z\355\351Vc\207wj\263\035\276{U\224\262\r\214\3243\333\2428\013_\213\256j\254\234\032\201\2174\240\344Q\232\t\246\023\212\215\2335ZSUdj\2473U\031\233\025Ff&\250\312j\234\255\214\325I\033\031\2527\017\214\326l\357\326\263\347n\265X?5\005\303\374\246\251\227\342\242g\246\026\245W\305X\205\371\253\361t\006\256\300rEi[\036\225\255m\332\266,\373V\325\243\014b\264\340\000\342\265mF1[v}\253v\314p+n\330`\003WP\371\214\000\256\202\3022#\000u\255\2552\337\016+\247\201\370\025\245l\331\305j\333V\244\006\264\255\273V\255\250\351Z\326\300qZ\226\344f\264\355\3008\253\361\2460j\332\034\214S\337\356U\273\'\333Wcm\315\223\326\237;\225\\\226\342\271\335G3\277\313\322\260na\222)\017\\V\357\206,\315\305\302\226\034W\241\333[,(0*h\243%\263\332\255\254\177/\024\221N\"|61R\317v\n\341*\251r\315\223_\214\016*\254\235j\273\234\032D4\247\2554\2654\232\211\232\241\224\345~\225NST\2465JcT\2455Fn\246\251Lz\3259\217\006\263\356_\255fN\375j\204\257P)\033\271\351P\\\034\203T\230\342\242cL\311\245\006\247\211\260kF\007\371j\3342`\326\245\254\235+b\324\347\025\265i\236+b\321\t\255kd#\031\255ka\322\266\254\3061[\266\207\201Z\360\310\002\n\321\323c2>\356\325\323X\340q[\366\200\"\203\336\265-\337&\265m\237\030\255kW\351Zv\355\322\265m\210\342\265mZ\265m\317\002\265-\273V\275\2475\247\022\356\305YX\261R\233r\370\247\306<\231\225kb(\025\227 \323n,\013\201\311\246\246\211\033\016z\326f\255\241l\004\201\305M\341\310E\274\340\032\355\342@\350)\340\005\372S\267\202q\232\215\243\004\361HWh\250%f^\225\370\333,%sTgLf\251Hy\246#sR=F\307\024\302\334TL\330\250]\261U\245\252SU)j\234\325B~\246\251M\315R\230\326e\313u\254\313\203T%<\232\20395\024\247\255S\220\365\250Y\250\355H\016jD5r\007\"\264m\2715\257j\275+b\323\202+r\317\234V\345\242\343\006\265\340\005\200\255Ke\300\025\251j\330\255ki\360@\255k@\362\001\307\025\267f\346 +\243\323A|\032\336\204\343\025\247j\330\305j\332\267J\325\266n\225\251n\375+R\331\361\212\325\266\223\245j\333I\234V\255\254\230\305lZ\311\322\265\355\233v+A0TU\220\301@\252\2238\363\207<\326\225\255\336\330\210\357O7\216{\325\253k\206,\t\253w\361\211\240\007\025\207\033\213{\205\372\327Ykr\004j{\021H\327\031r;T\311\353R\323[\245B\374\214W\343\324\261\202\rf\\\301\214\326d\321|\325\tM\246\225\333\007\006\232\334\212\204\365\246=WsU\345<U9j\244\242\250\314*\224\302\250\315\306k>\341\253.\344\3475\2339\316j\204\246\243\217\357\032\257/\014j\244\207\223P\236\2643`R\006\251#<\325\3109\"\264\355\3060k^\321\272V\275\247\314EnY\016\225\273hzV\345\260\371Eh[\364\253\260\2768\025\257d\002`\267Z\335\264\272\000aG5\263a\013N\343\322\272[\007\020\2463\315j\333\276\356Mj\332\267J\325\267|b\264\355\344\002\264\255\244\311\034\326\265\273\364\255;y\000\305j\333I\322\265-\245\306+f\316L\342\266\255%\305hD\373\273\324\354\347\034T+\031f\311\353V\242\214\212\271\0149\255\013x\000\253\336V\370\210\366\256[RV\216\353\217Z\332\322\357@EG\255\024\303\310qW\023\201\212r\365\241\217\025\013\032\374\201\224sU&\21405\221s\026\326<UFC\326\253\27199\250\322^\306\221\216\r5\271\252\362\n\254\342\253H*\234\302\251\312\265F~+6\341\2536\341\272\326e\301\316k6v\306j\224\247$\323\023\275V\233\2065U\307&\241#\232\206V\371\261H\rO\031\346\257[\363Z\226\243\245k[\016A\255\2331\214V\355\231\351[v\234\342\266\355\016@\255(\360\242\254\331\235\317\223\332\257\245\307\317\201]&\221l\316\001=\353\253\264\333o\036\001\346\256\333\311\226\315lZ\277\002\265\355\037\212\324\205\370\025z\0311\212\321\266\233\2475\257i.qZ\266\362r+N\332^\225\253m\'J\327\264\233i\025\265i.Mj\301&p;\325\324\005\252e\214\251\344U\230\322\256\302\265v!\212\271m\202\307\351Xz\235\240y\230\372R[A\205\r\351Zvm\336\257\243S\325\363\221\357A=j\007nk\362\032QU_\256*\225\312\003\236+6Q\315S\270\0035P\360i\373\203\217qM=*\'\305@\353\221U\245^\265NU\252S\214Vm\317z\313\270=k2\344\365\254\331\332\263\347\346\251IL^\246\253K\313\032\201\206j&^*\261R^\254Cf\322s\332\247\373)\214t\251\340\\\032\322\266$b\265\255\201$V\325\240\350Mm\331\366\255\333#\322\266\255\201\300\305Z2\025\034\324\326\367[T\363Z:o\357e\014zWccrQ\000Z\325\265\235\231\206MlZ\277J\327\266\223\245kZ\312\000\255\010\'\340U\350g\311\025\247k\'CZ\326\222r9\255h%\351Z\226\322`\016kZ\322Pq\315jZ\3167\001[V\262m\301\025\263h\344\220\325\251\004\343 \036\265\243\021W\030\251\204e\017\265X\212\254\207\332)\326\327`;sY\232\205\360W|\367\252\260_\371\273QOZ\335\264\341E\\\r\212T|\266i\345\261\232\201\217&\277#\245J\251\"`\325IW \326e\304eI8\342\263f\3475\\\212\217v\326\251M1\227\212\201\227\025^E\252\262\256+6\344\365\254\273\232\312\271=k.\343<\326l\307\232\243(\346\251\310)\230\300\252\3149\250\212\3224$\256j\005\217\346\344V\265\222\014.j\314\221+d\016\225^8\2005v\005\301\025\253j1\212\330\264\031\002\266\254\307J\333\263\343\025\265n\370\025$\262dTPH|\300\265\323i\253\264\014WId\377\000-k\332?\"\266m\244\340V\255\274\225\241\014\376\365~\t\362\0075\243o.qZ\366\262\342\265me\344V\255\274\331\255Ki\270\353Z\266\222\364\255H\217B+b\302\347v\024\327Ce.\320\005h\306\33785~\033\235\204V\275\264\213:T\245<\266\366\251\0226\234\354^\264\347\323\332\325\t\316I\025\312\370\201\332%R:\232_\017Fd\303\032\353a\371TT\205\350G\371\261R\0318\250\232J\374\232\225*\254\221\3259c\353T\356!\334\246\261\256\342\3300*\213\n\211\305\021\311\374&\245\307\025\023\256j\t\023\203Tn\006\005e\334\212\311\271\357Yw\035Mf\334/Z\316\235z\325\031\205T\220TdqU\234`\232D\214\261\251\214x\\zT\036N[\245[\205v\201R\311 Q\212H\216M]\201A5\247\000\255{1\300\255\233.\010\255\253n\225\243\034\205EJ$\335Kn\300L\t\365\256\237OpTb\267,e\347\006\266\255d\344V\255\274\234\326\244\022\340\016j\3543g\275h[\313\322\265-\245\351Zv\323r9\255ki3\216k^\326N:\326\245\253\216+b\326A\201[\026\257\3235\245\027\312C-l\330\334\226 f\267#\227\0305j\'\311\253\326\323\264,\010\255\350\034\\\302\rO`\0147\004\236\365j\357/\013z\327\'\342K\"\361+\001\300\244\320\223d*+\240F\342\202\364\201\271\315K\277\"\253<\3376\017Z\374\256\222,\325g\202\240\222\337\332\251\315o\301\254;\373|1\342\262\245\217\006\241d\310\250\374\254\034\325\200\231QLd\340\372\325y\227\0035\235p:\326M\317z\313\270\035k2\341z\326t\353Y\363\255P\231*\243\246j6N*\274\211\315>\004\306jO/r\223M\tM$\251\250\367\357j\263\n\326\205\272\363Z\020\036EkZ\234\001[\026\235Em[\034\001W\003qR\243\374\264\330\344&e\002\272}9\360\242\266\255e\303\n\334\263\227\245j\333\315\203Z\020\315\234U\330e\255+yzV\234\022\364\255Kis\216kZ\322~\225\261k6Ei\332\315\310\255\253I\272s[\026\262\342\265\255\244\334\005jZ\276\302\ro[\260\226 \001\346\256[6~S\324U\3458\025r\303S0\037/\031\004\326\374\027J\n\266z\325\271\245V\217#\275b\353\314\242\323\025\235\245\034 \255u\223\212<\312v\372Q%%\304A\243\363\007Q\326\277.\245\202\253\264X\250\035=\252\254\320\326E\375\256\354\326\025\304\005I\315Uh\3526J\221:b\207L\212\247p0\re\334t5\227p\275k:t\353Y\327\tY\263\245g\314\225Fd\346\253\030\262j)\023\002\253\230\367\032\230C\201\2009\247In\321\257\265F\220\344sL\270\217\013\357U\241\214\212\275\nb\257\302\265v\005\371\253Z\333\265kZu\025\255nzU\321\322\237\t\311\"\246\267@.A5\320Y\234\001\212\324\267|b\266\354\344\340V\245\274\225\241\014\225z\t+J\332NEiC\'J\324\265\223\245k\332\266qZ\366\256EjA/J\326\264\233\2475\265iq\310\255\253iq\203Z\320>@\255{\t\366\220+^1\270\206S\315^\214\357L\036\rX\323b\016\344\267j\325\332X\214v\253V\323\231\030!\350+#\304\327\037:\240\246X\035\261\212\276$\342\223\314\245Y}\351\333\375\352A&Q\327<\021_\231\217\017\265Wx2j\026\200\n\251<x\315f\335C\220k\n\372\337\236\225A\341\305B\320\360q\326\201\023*\340\201Q;\024|\036\235\252\235\310\315e\334.sY\363\245gN\225\235:u\254\371\322\250M\035P\232:\203\313\250%\210\365\246\307\0179\251\241\205K\023\336\246h21P=\261AUe\2148\301\250\243\207\025r\030\252\344i\264U\253u\311\255;u#\025\255j1Z\220qW\223\221NE\303\324\355\230\3105\263\247\313\225\034\326\254\r\322\266m\033\345\255+y9\025\243\034\230\305]\267\222\264\355\345\300\253\360M\222+Z\326^\225\265e.1\232\331\212PT\021\326\255\3036\010\346\265\255&\367\255\233I\272V\335\254\374\n\333\261\234\025\000\365\2558\'\001\206\rm\332O\225\034\326\224RdU\333V\332\331\255\024\227\006\255\304\341F\356\365\313\352\367\006\343R\306x\006\257Z\266\024U\235\364\206JA%<K\232\2229:\212\374\336|\265Wu\371\275\2527@\001\346\252\274j\315\315Q\271\200\020p8\254[\273B\306\250\315`q\300\252\302\324\251\344Sd\212\252\\\301\225\'\270\254\311\324\342\263\346\\\325\031\323\203Y\323\245P\232:\317\236*\243<UFh\252\273EP\264{\210\030\241\342 `T\221E\264T\255\205\025Zg\315Vhs\223\212`\217\025f\024\253\033\t\305\\\264\217\025\247\002\364\255+q\214V\234\0035z!Sm\357N\037\274\030\255]>2\2522kf\014\n\322\266~kN\335\273\325\330\237\232\320\267j\320\211\372sW\355\344\306+Z\326P1Z\366\222d\212\327\206l(\346\256\305?\"\265\255%\3169\255\233YzV\315\244\335+^\326_z\327\266\227\245j\332\336\210\310\004\361[\026\267\"N\207\"\264!\234\2560x\253\320\334n\031\315Y\232\360G\003s\316+\231\205\374\333\246s\3175\261\013\340T\276e4\311G\231J$\305K\034\265\371\326\310j\027CU\344CU\244J\255*\022*\214\260\363UZ=\244\344f\252O\021c\234UG\206\252\334E\301\342\261\356#\344\214Vd\311\203U&\217\212\317\236:\2414}j\224\321V|\361\342\251I\026j\007\213\216\225\032\301\311\342\217 \263t\247\3718\250\245\214\232\256\320\0269\305K\035\266\374qN:\177\034SE\267\226zT\321\245[\2011Z\020\247J\275\002\364\255\030\001\342\264a\253\000qL\013\265\301\025\261c\312\212\324\204\326\205\263d\326\235\273U\270\233\232\275\023\220*\314S\020j\375\274\347\212\326\265\237$s[v3q\311\342\264\343\270\316\000\351W\355\246\311\025\257i.1[\026\223t\346\266-&\351[6\222\364\255{yx\034\324\302B\356\006q]\006\234\306(\302\326\264Rg\025ie*8\254\333\355BS\362g\203RY\r\252+I$\300\247y\224y\224y\224\242J\2229pk\363\366D\305@\351\355U\335*\274\211U\244O\312\252<|\221\212\255,UVH\252\244\261\342\263\256W\322\261\356\301S\300\315e\334r\346\253\310\231\025Jx\252\214\321U\031\342\306k>X\267\032\255,\030\355UL98\247\233m\213\234SV\037jSoQ\233\\\236\2245\237\035)c\264\301\351W\"\264\335\332\222]3\'\245Vk#\037j|\021\035\325\241\024X\253\221&*\374\002\257\304\274T\340`PFMhX\223\200+Z\002I\255\013~;V\204\007\200j\334M\310\253\321\277\025b#\3175z\'\002\264\255\037\221Z\366\367\033@\253\366\363\022kN\326r\254+j\322\\\343\232\327\264\224\006\031\351[PH\027\005O\025\257i7Nkb\332P@\253\366k\346\\(=3]\034cd\270\355\212\2215\010\343l\026\253\261\337\251\\\346\250K/\235>{f\257@\330\025dKK\346\322\211)|\312z\275H\217\315|*\366\204\214\342\252KnA5Y\241\347\245U\236-\247\030\252\217\021\367\252\323G\216j\254\242\252H*\224\303\212\315\271\\\346\263\314;\211&\260\356Sl\314=\3523\037\025ZX\252\234\220Vu\314]\252\253[`t\252\263C\236)\022\310(\311\034\323&\267\364\024\301o\2008\243\354\304\362h\362=\251~\317\305\t\006\343\214U\230\255H \212\274-\303\307\323\221P\275\206\361\322\253\235<\306r\005L\220z\212\261\0345a# \325\310\201\305N\001=\252x\241\'\234U\373U\n~\225\243l9\315i@\277(\253q\364\2531\034U\310\317\312\rX\213$\361W-\301&\264\341\220 \000U\310&\311\353Z\226\262\364\255X[v\017z\323\264\270\306+b\332|\343\232\331\265\237\2475\263g?Nkj\326~\0075\261\246\334\004\233&\272kf\022/\231\236\265\231\252@Q\303\251\371I\251l\331\231\002\2268\253\361\240Z\260\217\212\224KO\022S\204\224\360\371\247\253\324\210\365\3614\322\000\010\252.\334\363PH\340t\252\222?Z\253!\315S\225Kt\252\223F@\355T\345F\3015J@Xt\254\371\34289\030\252,0\rb^\307\376\220N:\324~VEC$URX\275\252\233\332\344\344\212\253q\026\321\322\240\216\317vX\212l\220\234\340\n\215\355\360\207\216M4[\361\323\232\r\266i\277e\305/\331\317\245*\333`\364\253\t\036*D\0305aP0\024\255\000\364\250\214\003=*\3046\252EN\266\2438\251\343\267QVc\205}*\300\213<\001C\017(\200*\375\2708\031\255H\324\355\002\247F\355V\023\214U\310\233\214U\330_5r\'\355VQ\200\357Va\223\006\265\254g\000\363[\020J\0161ZV\354\t\255Kc\216\225\253k)\030\255\213I\372V\325\254\335+R\322\343\0149\256\256\306\340\213r=\252+\373\201\344*\236\244\321e.\334\003ZK.E=e\251\004\264\365|\324\201\300\247\253\324\213%J\217_\023\3149&\251\312\300f\251\313(\025JI\200&\253Ir*\264\267 \n\243-\316MW{\232\200\270c\305E4[\201\342\263%\207\004\212\316\275\201H\317qT\302\202*)#\252r\200\rA \310\252R\303\274\364\251\222\323\021\364\250\236\316\241k|\016\224\337\263dt\243\354\270\245[`h6\234\322}\227\232C\001SJ\261{U\210\343\305K\345qLhFx\251\"\\T\313R*\232\232!\203W\"\003\255D\356\036o\245\\\201\271\025\246\222t\315L\215\316j\324m\322\254F\334\325\250_\232\273\021\343uL\222d\325\350[\201W\255\333\007\255lZI\322\265\255\245\344V\255\264\275+V\335\263\216kV\325\272V\275\254\244`V\2242\343\006\266\364\335Q\261\260\236*\335\305\307\231\036\017^\324\353yH\357Z\021Np9\251\326Z\225d\367\251D\225 \222\236$\247\254\231\251\322J\370\276\341\272\326e\304\230\315f\334I\311\254\351\24695RI\210\252\322LMV\222J\204\266ic\034\324\356\233\227\212\247=\271*Me\334A\273\"\250\313hb \343\203Lk}\313Y\363\332\260n\225\t\200\221\322\221m\366\366\247\210\370\351P\313\027\265W\222\023\212E\204\342\232\326\364\236A\002\232\024\255<a\2527#8\3055W\236j\322\"\342\236TP\020\032@\270lS\302\324\250*U\025a8Z\2451+q\327\212\322\265\354kN\"\031y\353S\240\342\255G\322\254G\332\255\305\305YS\232\261\037j\267\013\342\257\300\365\247o&\010\255[i9\025\253m/J\326\265\227\221[6\222\364\255X$\351W\343\233\013V\255f\"E\364\315l\313.\000\036\325,\022\344U\330\245\253Q\313S\244\202\245\022S\326J\220IR,\2252?5\361\235\323u\254\273\203\326\262\356\033\255g\314\335j\234\215U\235\252&\031\246\205\247\257Z\263\030\342\234\326\371Rk\032\3460\256ER\272o\335\355\305E\034\213\264\206\\c\275V\221\222B@\250\315\270\013\234Tm\006E3\310\3155\255\363\332\242kL\366\246\275\266\301P\264x\2460\342\253\310\330\250K\212ap*30\024\013\275\275\352T\275\315K\035\330&\247F\337\315L\253V\026\335\230p*U\260\227\322\236\266\314\235H\250\'\265-\310\2536\237\"\341\252\354O\310\305_\210qV\243\006\254\240\253H8\251\307\0252IV\"j\275\003\364\255;w\340V\235\273\326\255\264\235+Z\326N\225\257i\'J\330\265}\300V\214c U\270\001R\017\275_\363\2677\322\254\333\311\305^\212J\264\222T\351%L\262T\212\365\"\275J\257S#\327\3077#\255e\334\360\re\\V|\335MS\222\240aM\013N\021\346\205\217\346\253\360\333\022\0056\372e\202-\253\367\215aK\226$\325+\210\213\236\005Ux\335F1P\254$\276J\325\203\025E\"b\230\253\3159\242\3435\021Zk\240u\367\252\023\251SUY\260*\244\317\326\252<\270\250$\270\305Vy\311\246\371\204\232\236-\355\320\032\320\202\322f\306\024\326\224\026S(\031C\217\245hAc#\014\3545a`\221;\032\2272\250\345MR\270\224\202wg5V;\354>\030\344U\320\302A\225\306*\324\033\200\351Zv\255\225\031\253\250*\312U\224#\025(\351NNO\025f/z\271\t\255\033w\306+R\331\262+J\335\361\216kZ\326N\225\257j\371\305lY\311\203Z\366\357\221Z\266\252\036\022s\323\232\256\327b\'#5=\265\372\221\214\326\235\275\300lsW\242\222\255\243dT\201\252Uj\221^\246V\251U\253\344Y\343\316k*\356<f\262.\027\255f\316\265Q\326\241e\240-;\245X\265\203\3149=\005M4\273F\026\263g\206I\333-H\272y=\251[O_Ja\323\224\216\202\253M`\024\036*\204\220\355\'\322\252\310\273\217\025\013.\323R\006\004S$\003<T8 \373T7\021\006\031\254\331\223\031\025\237p\275j\204\252M2;7\231\260\007Z\277\017\206\346\223\037)\253\366\376\021\225\230|\204\217\245t\272g\202\001\332\305@\365\315t)\341x\"\213\260j\226=\036\335T\002\006j\177\260B\006\024\n\212M&<\356\030\315 \322\223\030=\353\033U\320\202\222Pd\032\347.tgF-\264\212[[IC\200\001\255\350t\346x\200\350{\324\360\3324x\006\257\307\027\035*\312E\305\007\217\245*\314\007\031\251\222Q\330\325\210\344\315^\200\212\320\204\214\n\275n\370\255KY2qZ\226\317\203Z\366\222d\212\330\265~\230\255[y3\212\325\262\230) \236\242\252\313n\3573c\246jX\354\244Nz\217j\275k\346!\343\221Zv\363\347\031\353Z0\311\232\260\016i\352\3252\265J\246\245S_*\315\027\006\262\257!\340\361X\2671\3435\227:rj\233\246\rB\313M#\024\306\342\264\254X\030\033\007\232\226;_0\232\220\331\205\355H\326\370\035*\264\221m\250\030\340\323^!\"\326u\325\260\301\343\212\3111a\315V\234\000MT3a\251\333\367P*9y\025Jh\263\232\245%\243Hp\005I\006\201$\25420+\250\322< \2743\014WW\007\207a\211\027\"\254\255\234p\214\005\006\206m\2358\250\213\223\336\241vaQ\026`z\322y\344w\245\027\'\326\237\346\253}\352\253wo\024\312x\002\251[\332\256\376\235+EaU\031\357H\341s\322\237\030\305N\203 \325Y\246Q\221Y\222\\\235\334U\233{\254\220\ri\301( V\215\264\203\"\264\340l\325\310\233\025\241l\374\212\324\267\223\245kZI\310\255\233Y1\212\325\267\223\245i@\371\253\321\r\3075z\036*\307\226>\362\360i\254\177\210p\302\254\332\334g\275iD\331\002\246\025\"\366\251\224\324\252k\346\033\210\375\2532\3610\246\260\356\243\353YS\307\212\241*\363P2\324ei\215\021=\252{V1\214z\326\326\2367)\315K\"\222p\005G\3441<\364\252\3271m\004\342\250\030I4\215\031Ze\314@\302Ms\376Qi\210\3056\366\304\210\211\002\271\367]\256jt\\\323\366\340Tn3O\202\301\356O\312+sM\360\3039\037-t6\372\0046\340o_\232\256\254i\020\300\034\nG\234t\315@\363\016\325]\230\261\246\347\024\307l\324L\325\033T,\330\246\371\207=i\255&z\232\026P\247\201R}\243=\371\245\017\232\235\033\245N\207\000\325\013\370\\\002\313\322\262\262A\346\245\216J\320\264\234\214\003\322\266-\311 \032\326\266c\216j\344rsW\255\236\265m\232\265m_\245lZ\311\220=k^\331\376QZ6\357Z0=i[\277J\272\203#\"\2334$\374\313\326\241\001\243;\207\036\265\245gp\010\034\326\214GuM\267\035\351\301\200\251\021\301\353_5\3163Y\227`\021X\267j0k\032\351z\326|\213\223Q\024\311\251a\2632\036G\025pi\343\035)\321i;\333\245j\333\351\315\n\205\333I$!\r\002 \027&\250N\252O5Y\325\024\034\016j\234\261\226\'\024\010\267&\rVm>8\311lsT\357\343\002\006\372W\0374d\314q\353S\305\021\305\022\220\253P\306\246I\000\002\273\017\017\350\316\352\245\224\201]:[\375\235p\000\250%~\271\353U\245sP\026\037\215F\306\230^\243g\367\250]\275\352\"\324\205\35269\250\230\342\230M0\265>3\223S\241\251\321\252t|\n\227*\351\202:\326E\375\250F\312\212\246\251W-\301\310\255\253\027e\300\307\025\261\003\374\242\254)9\253\326\315\322\265\255\237\030\255[W\351Z\366\255\322\265m\344\351Zp>\000\255\033w\351ZV\357\322\264\255\3335m:\322M\010+\221TQ\374\231=\253Z\326\340\260\030\253D\263z\323\323=\307\025*\360+\347\031\216Ee\335\036\265\217w\336\262.W9\252\016\274\323\355\355L\215\322\265a\263+\2161W`\261.y\025\257i\247\242\014\220)oBE\031 V3\2171\252;\203\204\300\254\331\006j\264\253Q\343?Zr\216*)\243\334\rcjh\3026\035\253\231\223lls\326\241k\200:\032#\205\356[\200Mt:.\207\231\025\230\034\327on\213m\030\003\265Csq\357Td\220\363P\261\317Z\215\210\025\023\265B\362T\017%D\322TM\'\2754\311\212cKQ\2313H[4\231\247\241\301\251\321\261\326\245W\251\003\361RG-GpC\325U\210n\253q\"\016\225\241m(N1ZPO\307\265YY7\021W\255\337\245jZ\266\354V\265\261\306+Z\331\372V\255\273\326\235\273\361Z6\355Z05h\333\311\214V\204o\220*br\275k:\352=\255\237Z}\225\301F\332kb\031\262\005XYs\326\200y\342\276s\235\260\246\262\256[\255e\\\016\246\263g\\\346\252y\005\233\245mi\366\003\000\342\264\322\327\'\245Z\206\337\025)8\004\016\225\237|\373\360\243\265T\021\361U\356\027\"\250\272\346\2420\356\250\332\r\204\322\004\004{\3243.+#T\000\306k\224\276E\004\200r}\252\265\275\223H\343#\212\3514\353\017,.\027\223]=\224Ko\020 sR<\205\252\ty\252\355\234\324r\022\006*\264\217\212\256\362\324/)\250\036J\211\244\246\027\250\313\323K\323\014\224\273\351C\373\323\204\225\"\311R\031\302\323\222l\367\251VNhg\007\2751N[\336\254\307\"\216\265n\t\320\340\003Z\020\363W\241Z\273\017\030\255;g\306+Z\325\267b\265\355N1Z\226\347\245j[\266p+J\003\322\264!n\225~\026\255\010\037\"\254)\315G2eH5Er\262\326\275\261\312\214\032\266\244\216\265\"\032\371\302s\301\254\333\203\220k6z\244\351\223S\331Yy\2568\256\212\336\314G\030\030\251\374\2208\002\207]\213PH\333S\336\250H\274\346\243#\212\241t\3308\252\330\335K\260(\250\244\301\025\tQ\237z\255p\007#5\211{\013\3341Px\252gD\003\255hZ\350\361\306\025\261\315Y\220\210O\000\017AR\307;Hq\333\025d\374\251\315V\232u\214d\326e\306\254\221\223\363\014\n\316\223\304\n[\007\245!\326\240=M!\277\216O\272\302\232f\r\322\241i\306z\324/8\250Z\344z\323\r\310\354j)o\002UI5uN\207\232\256\332\301=)\351\2531\355R\215I\332\256AvH\344\323\332v~\202\245\212VQSy\315\201\315=f\317\006\255\301\206<\324\330\031\342\254E\016pz\032\277n\356\270\007\245jC\222\001\253\261t\253\366\335\253^\320\364\255{bx\255H\017J\322\266n\225\247nzV\204F\257@\325~\006\306*\342\232s.\345\254\373\210\214O\270t\253Vs\340\212\323G\334*d\036\265\363}\301\305f\\7Z\317\224\346\231\034%\334\014V\376\237c\345\200kGf\005\004\004\\\367\252\362\020G\277z\2473rMU~\336\265^i6\016\274\326m\303s\223U\314\240rM1\256\206p*7\270\035\315U\232\375P\360y\254\255CS\010\244\203\363UK]QI\311<\325\365\270\363\263\216je\225\207\025^pI\311\244\216\343\312\374*\246\241\342O$\220\017J\347\257\274G,\331\001\270\254\211oe\224\234\223P\231\330u5\033\\\340\3654.\242S\241\251\023[x\377\000\213\212\265\036\271\014\203\34685f;\330\245\034=2b\243\220sT\246\274*>QY\3277\256\375\352\231vcS\301\0331\034V\254\026\300\n\260\226\313\234\325\250\343\002\245\010=jQ\267\035iZt^3B\3123\307J\267\014\335\006j\354n\030\325\350z\n\275\026\033\002\265-\027\034v\253\351\000+\221V\255\306\rkZ\216\005kZ\366\255K~\242\264`\030\255+sZ\021\032\275\r^\205\252\354G T\353\315G<a\224\212\251\010\301\372V\255\273dU\265j\371\256\345\261\232\312\2709\252\333\t5\241\247Y\231$\034WK\035\247\226\203\216h1\001\311\351U\346#\360\252S8\002\251H\374\373UYX\3475VE,rj\225\331P\017=+\036\342\343\223\315R\226\353oz\241>\240\300\234\032\241q\177&8\254\273\251\244\233$\223Ie\2748\004\344WQf0\202\256p*)\230\216\365\223}}\034\010\334\363\\\275\345\301\236BEV\021\026\241\202\245S\271\230\n\243$\365]\356}\352\007\271\367\250\374\362{\323\243\277\222#\225cV\223]\224\0141\310\251\006\260\033\255/\333c~\325$R\302O<U\250\246\213w\rW\242\221H\030j\262\216\001\306i\306\351\023\253\n\211\265\020~\355 \272$rh\022\022j\324.M^\210\222\271\025v\006<V\225\273\234V\215\277Q[6\377\000(\007\034V\234+\2712*X\206\032\264\355\273V\275\267j\324\203\214V\205\273V\214\rZ0\034\325\370M]\213\030\253p\234U\244\034\323\335r\265\234N\311H\253\2609\035j\364m\232\371\256\343\232\250\320\026=*{}1\244#\216+\241\323\354\026\025\034U\346P\001\252\023\311\270\373\016\325\237pI5M\321\211\252\322\214\036j\007#\025Rf\302\222O5\203\250]\374\304\003X\323\315\326\250M!&\2537Zr\302\262\256\332\211\264\302\t\307JrXy|\343\221Wa\224\307\301\025?\333A\035*\031\256\013\247\035k\n\366\302Y\234\223\232\244t\326S\3104\311\2410\257\002\261oge\'\255e\313+1\315Vy\rWw5\037-OX\211\247\213fn\324}\225\251\206\022\0174\365\217\336\236\261\267\255J\233\207CV\342\232A\336\254\013\211\010\353H\031\330\362jTr8\251\343rOZ\267\020\315[\211qWa\223a\307cW\341 \342\264\255FqZ\266\353\214V\315\250\312\n\320\204\341x\251\243\353\232\320\203\265j[61Z\326\315\232\323\200\016*\3645\241n\330\255\030Nj\354&\256GV\243j\235y\252\263[\203&EJ\220\235\276\3654LT\340\327\317\r\021cWmt\354\000H\346\264\255\354\200\355W\026 \213\305W\270\311\310\007\212\246m\313\223\330Ui\242D8\316MQ\230\021\223\332\263\347l\236\225VG\306I\254-N\377\000\222\250k\ny\t\315R\220\222j\273\255B\313MV\330}\350\222\377\000`\347\232\254\372\244\204\035\243\212\245.\255(n\365$\032\204\222\2209\2558e\332\240\267Z\223\355\nN1Jv\260\344U+\273_1\t\025\203w\242\3110\'mb\335\351o\027\360\232\240\326\016\307\030\250\333L|\375\332\016\234\361\214\221\212ER\247\356\322\264\205GJ\214\316GZ]\352\302\230H\024\3372\245\215\271\253\220\220z\324\374b\216\224\340y\251c\253\2216*\354OWa\371\306*\324\005\24385\261f\331\305k[\267J\330\263#\025\245\007\245ZX\270\253P\014\032\322\267\353Zv\315\322\265m\333\245h@j\374=\252\374\007\002\257B\335*\374G\"\247S\212\231\036\234G9\253(\240\2504\331\"=@\346\274\036\326\333{\214\212\330\212\3338\030\253in\024Se\001G5Q\223~Y\270QY:\226\244\261\215\221\234V\024\327\344\022sY\363_\261<\232\214\335\356\035k7P\2758*\207\353Xs\222I\252\222.j\263\216j\027\025\t\031\353PM P@\034\326|\304\261\247\333G\271\271\351Vd\323\222A\220\274\323\241\262\362\207\000T\305\002\236H\2464\241N\027\006\240\222Y\273SE\323\001\206\246KxB\220\005g\\\\+\003\271j\213I\026N\000\315\"\250f\366\247K\022\025\371\261Y\323\311\014@\2163YS\302\327\014v\036=\252?\354\227\352^\221\264\367N\206\233\3667c\212\232-=\217z\266-\243\205>c\315F\030\026\300\251\325}\352P\234u\247\244Y\351V#\204\372U\230\323\025n(\201\253p\256\323\232\321\200\207\306kN\325\024\034\326\275\263/\025\247l\000#\006\265!5v\003V\320d\364\253\366\353\322\264 \004V\225\253t\2558{U\370M_\210\364\253\220\265_\205\270\2539\371i\321I\223V\243!\2705f<\247N\2253\200\353\307Z\361\013Kb\244q[1A\265A\305#\214U;\211\025\017=+\013V\325\225Wb\034W1qu\274\236j\205\304\370\357T\214\273\3155\330\343\212\2455R\220UY*\263\212\201\361U\344\3438\252\0236I\252\256Njkm\331\315Y{\262\0063\305C%\353c\013\305A\346\263\236X\323^b\243\216*\023s&xjc\274\255\357U\244i\333\216j\t\022Le\316\005T\373DH\3075Z}c\3138E\342\263nu\211\\\3655\237%\334\222\036I\251\355\256\345A\200j\332J\355\311&\246RMH\033\002\233\346\260<\nO*I\2179\251\343\261+\311\251\226\n\221a\366\251\222\022\2475:\236zU\230\3005j<\016\225a\006j\324C\030\255\033w\351ZP?J\325\265\227\245j\333\311\232\322\267l\342\264\"\347\025\241\006\016+B%\300\253\220\034\032\324\267n\225~\036\325z\023\322\256\3048\253\260\232\262\\c\002\230\247\232\265\024\244b\257\305\'\034\324\353\310\3105\377\331"
+byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\001\212IDATx^\355\3351\016\3020\014\005\320*\367\2772\025\003\023FA@U\322\374\2747z\214\322V\262]{\333\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200t\255\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000`\270\275\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\230\314^\003\000\000\000\000\000\000\000\000\000\000\000\234\257\325\000\000\000\000\000\000\027rh$\207\0240\000\000\000\000\000\314AN\037\000\000R\035j\377\001\000\000\000\000\000\000\000\000\000\000x\245M\031\000\000\000\000\000\000 \221j0\000\344\361}\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200\261\354\026\004\000\000\000\000\000\000\000\000\256B?\023\360\244\325\000\000\000\000\000\000\000\000\314K\031\234\0077\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000`$\323\240`U6f\002\000\000\000\000\000\000\000\000\000\000\000\000\000\300\347\374\237\013\014\324{\005\031\034\322\321;\260P\267\032\2005,\366\244\003\000\300\202$>\000\000\000\022\250\351\000\000\360\206b\000\000\000\000\304S-\002\000\000\000\000H%\003\374%\007\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\220\315&\026~b \001\000\000\000\000\000\000\000\000\000\000\000\374\335\035/,\023\360\002\312$\322\000\000\000\000IEND\256B`\202"
diff --git a/core/res/geoid_height_map_assets/tile-5.textpb b/core/res/geoid_height_map_assets/tile-5.textpb
index ac2a9ba..0e43c84 100644
--- a/core/res/geoid_height_map_assets/tile-5.textpb
+++ b/core/res/geoid_height_map_assets/tile-5.textpb
@@ -1,3 +1,3 @@
 tile_key: "5"
-byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\004\003\003\003\003\002\004\003\003\003\004\004\004\004\005\t\006\005\005\005\005\013\010\010\007\t\r\014\016\016\r\014\r\r\017\020\025\022\017\020\024\020\r\r\022\031\022\024\026\026\027\030\027\016\022\032\034\032\027\033\025\027\027\027\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000\355\240^@\305^\013\307J\216D\364\254\353\333c$$\250\344W){\033\243\220Ee\274\233N\r@\347q\247\305\037\034\212{E\362\325)\243\366\252n\265\003.j\'LT,\202\253\3128\252\216\224\325\213-Ne\3300*\027\250\271\3154\266\005B\314sQ\371\204S\322\343\007\232\237\355q\221\214b\241\231cu\'uQ\026\310\344\232\206k4\301\305f\313m\206\351Qy\030=*T\213\007\245[\2163\351V\0211\332\234\"\311\351R,>\324\343\032\251\353\212P\201\272\232pD\035\251\331_JQ\317AOU\377\000f\236\0015*)\253(*\314k\236\325j5\301\253\321-^\205j\374+\322\264!\216\257\305\035\\\215qV\343\025f5\346\257B\231\253\221\245[\212>j\322\200)\341\373\nx\315J\242\247\215FsS\203\307\0252\034W\017\034D6E[\t\224\2462\014sPI\030\333\310\256wW\262\004\026Q\\\205\344L\214qU\"$\310\001\255\025N\001\245#\212\247:\216j\204\213\315@W\006\241p*\273\325i\0275\003-4\014Tl3P\277&\230W\212\214\255F\313P:\324{M;i\244*\304w\244\021\277jw\222q\363S\r\242\021\234\212\257%\262\251\342\230\260\200zU\210\340\'\265YX\000\\\232v\305Q\3154\221\351Q\225\014zT\212\240p)\342<\365\247yB\236\261\014p)\333\0058%J\213S\242\325\230\326\255\306\271\355W\242J\277\014}+B\030\353F\004\253\261\216j\324kV\243Z\271\022V\204)\305\\D\346\256G\036\0274\214\010\247 \251S\255L\271&\247\034\n\2259\002\255\302\231<\327\036\251\206\351V\226!\266\242\222,s\212\257\"\022\207\025\221y\021\332w\n\3455\033#\274\2208\254\'\210\3077N\365z\026\312\ns\217J\2470\311\252\217\037z\255\"sU\234T\016\271\250]8\250\031j&\025\036\332\214\307\363S]qQ\025\2462\324f<\320!\366\245\362}\251\2736\236E5\363\216\006*\003\274\232M\222\021\306iD\016\335jT\265\\\344\324\3425Q\300\244a\336\240`\305\263\212M\2714\241\005H\261\343\232\220\001N\243\236\324\000jE\0254jI\253(\225f4\253q%^\2059\351Z0\250\035\252\374J8\253\360\255[E\253Q\255\\\211j\354I\322\257\302\265v5\351V\321N9\250\237\031\241jd\0315a\027\002\244\0315j\024\030\315[\207\357\375:W*c\300\251P|\234\320W#\221UZ<?\326\251_@\032\"}+\005\355\204\214A\025\316_\332\005\231\270\252\211\031S\212{\003\212\253\"T\016\274UY\024sU$Z\256\302\243+\232\201\322\242)\3154\307\3050\307Q\274f\242)M)\232O/\232p@\0055\360\005@\334\3230\017\024\2061\236\005H\213\330\001R\010\217\\T\236_\034\212aJ\210\241\'\035\0055\220\0163L\010=i\330^\324\240\032x\\v\245\333N\013\223O\tN\013S\306\225m\022\254\306\236\325n%\253\261/J\275\020\351W\341Z\277\nU\324J\265\032\325\310\226\256\304\265v!\322\256\305\305L\317\204\305A\324\346\244QVa\025aG\313OE\346\254\246z\n\265\n\363\\\361\217\'\2458G\201HP\212\202H\362sT\356\223\367f\261\204_\276<u\254mV\334,\205\200\254GQ\232\215\252\031\007\025ZJ\251\"\325gC\232\205\243\250\3323\351P\272T,\2304\004\310\244)Q\264y\355Q\230\275\251\246/j\214\307\212c`T.\t\250J\232@\2252(\034b\244\300\035)G\245;\006\220\257\025\023c\322\241h\363\336\223\312\367\024\345E\247\200;\nx\217\"\227\313\301\245\331N\333\3058\016j\304kV\343\\\325\250\322\255F\265r%\253\261/J\321\201+F\024\342\256F\265e\026\255D\265v!Wb^3VPT\233{SJm?Zz\212\23585aNjd\034\325\250\327\240\253\210\002\212\303\331\355F\314S\031j\007\025Ru\005H\"\250\033|\022\330\254\035Wo\314;\3277\"\220\306\240aQ\225\315A\"\014\325y\020UwQ\232f\300i\215\t\003\245@\361Ug\212\231\267\024\205)\n\037J\214\2450\256;TN\265\003\'5\031Z\214\257=)6\201Hr)\273\232\234\254jEcR\003\3051\2004\302\202\233\345\344\373S\304j=\351\352\200\366\251Dy\024\246>\370\244\300\317J@\311\273m</5b%\342\255\306\225i\005[\215j\344IWaNkJ\004\351Z1\257\002\255F\265f5\346\255\306\265n1W\020|\242\254/\025*\323\312\345y\246\250\346\246QS%Z\211sWbL\014\221K,\253\032\034\232\317+L\306\005W\235\302)\365\254\311.\333uBf2\260\024\267\001\226\330\221\326\271{\341\271\215c\313\027=*\263EQ:`UY*\254\202\253\272\324}\rI\031\007\345=\r6Hy\252\317\026:\212\201\243\246\004\244)L)\355Ld\250\032>j\027Z\201\226\243+M\"\215\200\323J{P\023\024\365\000\324\2332\265\023)\007\212L\032x_Zz\306\rH\020/z^\005!q\332\232y\246\264Y\0359\251a\004\214\036\325n5\307j\267\022\325\264^j\324IW\241J\275\nsZ0\'J\277\032\364\253q\255Z\215*\314kV\321p*\312t\251\226\246_j{p\264\325\353S(\2531\246E\\\213\n*Y.c\212<\2223XW\332\226\342@<V\231\036\325\023\234\n\312\274s\222+2CE\270\335\'\025r\347\002\034\037J\347/\"\033\216\005eK\027=*\253\246*\244\313\305g\312\016j\006Z\217f{SZ\016*\r\245Z\254(\336\230\357Q\311\027j\254\361\032\204\246\r\0052*&Z\215\205B\353P:\324\014\234\324e)<\261\232_.\223\313\244)J\261\340\346\236\334t\250\233\336\220\001N\033E(qA\220b\242.I\342\234\240\232\231\022\244\333\315.\3148\"\255\304\271\253\221\247J\267\032U\270\222\257\302\235*\364)\322\264a\\\n\273\032\325\270\326\255F\265f1\317J\235z\324\350je\353V\242^3H\344g\024(\253\021.\346\0259\221cS\236*\244\372\232\247\nk6\343Rg\007-Tw\264\357\355]\211\342\241\224qY\027c\255g\312>Z\257o)I\352\335\314\341\227\255eNCf\263\245A\232\2472b\250L\274\032\317tl\364\250\2323Q\355\3074\326\344qQ\030\211\355RD\2305+\304\010\315V\222,\366\252\357\027\245B\321\221Q\262\032\210\247\034\324L\225\003\245BR\230V\233\266\223\024\204RS]\261\322\242,M\031\244-\351M>\244\322\026 qM\3114\365\031\251\220T\3523R\201\3058\251$\n\267\014d?>\225z4\342\255F\265n%\253\320\255_\205zU\370\226\256D1V\323\000T\351\326\254\307\232\234T\3103V\021y\253 \355J\213\253T\310\274\325\204;W\245W\271Y$S\316\005a]\220\231\033\263T\025\232Y1\236+N\004\n\242\273\006\002\240\227\001I\254[\2627qY\316x\"\251\225\"\\\321+\035\330\252\3563U\2359\252\263G\221Y\363FA\351Ud@*\006@{T\r\037\265 \200\372T\202\334c\2455\241\332sJ\027\326\232\360\2022\005Vx}\252\273\307U\3351P\262\324N\265]\327\232\214\255D\311Q\225\246\221L\"\223\024\205sQ\225\3054\216iBf\230\350s\3050\202(\003\232\231\026\245\013R\n\225~f\002\256,9\301\035\252\314c\236G5n%\342\255F\231\253\221\245\\\211j\354C\245^\212\255\307V\223\232\263\032\325\270\326\245\003\232\225\0075j0:\323\235\2060)\261\365\253\np\000\251\227\2474\311\220\272\234\032\346\265\004\362\344`j\255\240\033\363Z\212p+\252\226P\243\232\316\270\271b0+6f,MRpsM\332B\356\305VpY\363M)Q\264~\325ZD\346\252K\016{UI-s\332\252\275\271\007\2450[\367\305?\310\366\245\362\206:TRG\236\325Y\243*iW8\344S^ FES\226#\232\252\351\353P:b\240t\250Y*\026^j2\265\033/5\031ZiJo\227AJ\215\224\322,y\352*Q\027\035)\031\000\250\314c\322\233\345\217Jr\255N\023\345\243a\251#R\032\264b\344U\205NEZ\2123\332\257\302\203\035*\312\256*\314KWbL\325\310\324\212\267\030\253q\212\267\030\300\253H8\024\363\326\244\214U\220p*6ni\350x\251U\261O\022c\275L\016V\271\215^P\'j\255fr3Z\000\361]=\316zU\007L\325Yb\246G\030$\356\\\323g\215v\340\014U6\204g\212i\207\035\252\'L\n\244\313\226\250\335\001\025]\222\241\222!\351P\371X\2441\373SvS\035\006*\254\211\315F\023\332\224\256*\274\321\036\265JH\371\252\357\035Wh\352\027LUvJ\215\222\243+\232aZn\312]\236\324\236]0\305\226\351N\021\201\332\224\214\016\005B\352z\324x4\355\264\340\225 S\212pZ\221W\025<M\206\305hF\003\n\265\030\013\203\232\273\031\033\263V\223\346 U\310\243\253\221-[@j\324C=j\334iV\321F*`\330\247\003\232\2318\024\346~)\2523\311\251C\000:\322y\271<t\247+\222j\331p\260\023\350+\212\325n7\336\020\017z\265d\010\210U\302x\256\306x\2623Y\356\254\033\030\2440\356^j\006\210&j\273\214\324;9\246\262\361U&Q\212\242\303\rMa\232\201\227\232\215\227\"\243\331\355M)Q\264~\325\033&j\274\221T^Y\007\245\005)\217\036S\025FX\360q\212\250\350EWu\250\035sP\262TE2*3\036\r1\243\246\354\240!\247l\317\024\236X\035)\245)\n\323\031\001\025\021\214f\215\235\251\301qN\3059G5 \034P2\255W\255\337+V\324\234\365\253\260\223\305h\302+B\030\317\004\325\350\243\253q\303V\2221SF0\330\253\033\200\342\225y\251\223\000\212yp(_\230\344\364\247\026\354:SX\361\232\025\262jh\371p(\324\'\362l\334\203\332\270f\224\315\250rs\315o\333\340D*Fj\357\331r1U\336\021\311\252\316\230\252\362.EVh\371\250\312T.\274U)\224\363T\335y\250\312\324n\265\021Za\\\nf)\n\212i\217\212\205\242\250\232:\215\223\212\210\361\326\253\317\020a\270U\'\217\034\032\256\361Uv\214\347\245B\321\373T&:c\'\2657g\2654\307F\316)\205pi6\032_.\230\340TEM0\251\244\300\240\003N\0035\"\245H\026\224G\223V\241M\275j\334K\223Z\020\'J\320\210c\034V\214$`U\370\270\301\253Q\216r*\300\351O\035jA\315J\265 <R\257\'\232y`)7SX\223J\274T\361\023\274b\250\353\262\355\263a\232\344\254\206\353\242}\353\241\214\341\005\016\374W\245\225\302\346\253\311\320\325)\033\006\253\221\223Ld\2462dUI\020\203U\244L\366\252\217\036\r@\313\212\205\326\242\333C\'\025\026\312@\200\232\0311Q\225\250\231*\027J\255\"\363Q\373\032\255<g\265Te\250\231\001\250Z<\324/\030\025\003!\246\204\244d\346\215\234S\0319\246m\346\224\216*3\036M4\246(1\002)\202\036zS\374\216(\020\034\324\202\023\216\224\276^)Pa\352g\004c\025v\331~Q\232\320\210U\350\372U\310\215_\201\270\301\253\252jd\344T\275\351\312j@\302\236\032\220\276)\003f\236\r>\224u\251\342\341\263\336\2615\3713\0063\326\261\364\350q\363\036\365\256\016\005F\357\305z\254\203\002\252\310\274U_\'{\023Q\274\033y\002\242+\332\230\311\305V\222:\252\351\236*\264\221\340\363U\244QP4t\337,b\230\311\355Q2S6R\025\250\310\2460\315A\"\342\253\025\313Tn\230\2462\007Z\253$>\325U\342\305B\350j\007Z\200\2574l\244d\346\220%&\314\324f/jo\227\315\036_\265\'\225\232C\035(\217\035\251\342<\323\304C\024\377\000+\332\243d\035)\004X9\251\025A<\325\270\260\005Z\211\271\253\321\034\325\350\205]\210\340\325\310\316j\324t\362y\240f\245\\c\232\013\372R\014\232x\025\"\324\270\342\201\326\247P\0262Msz\273y\267\001\007\255%\274B8\305H\315\212\206F\257_q\220EV\221\017LP\261m\213=\315B\312\017\006\252J\233[\332\242 \032\202U\342\251Jv\266j\274\256\254*\233\365\250\310\244#\212\215\210\250\331M7e5\200\025\031\003\322\243+\212\205\343$Uf\217\006\241qQ\021\264\344S\035\327o\"\240\"78\250\244\203\216*\244\221c\265V)\316)6\373PV\233\266\215\264\214\244SB\022zS\374\260GJo\226=)\014C4\024\244\nE=G5&\336)\206<\236\224\322\204Sy\006\247\2175a\016\0105\241n\300\342\264b\305YL\223\305_\210`\n\262\247\002\22795\"\212~\323\212\002\323\324S\300\342\234\274T\203\030\247\306\273\2152\366\341m\355\311>\234\n\347\243\314\363\231[\271\253\'\000T\016\330\252\356\365\355,*2}i\254s\326\241\221Fr*\234\343*MT\315F\374\325;\204\342\2502\235\325\033%FW\024\322*\026Ni\n\234Tnq\305G\3114\204S\031y\246\260\312\325vNMV\225y\250\031x\250]\005@\321\200sM\335\203\212\202^j\253&M&\312B\224\302)\n\363\232P\240\360i\341\024\016i\010\002\243`{SB\234\323\274\262\324\276Q\245\010}*EZ]\225\033(\246\010\213\267\002\257Am\201\310\251\036\330\237\273O\2127\214\362+B\007$\201Z\220 \332\r[Q\212\220S\227\255N\20350\240\n\\sN\002\236\253R\005\251\031\322\010K\023\\\305\375\343]\335\354S\300\251\241@\250(\221\270\252\22275]\332\275\300\217\226\242\"\243j\211\263P:\361T$R\030\342\240b{\324\017\310\252\357\0379\250]*\007Z\205\201\024\303\327\232R\006\332\257*\234\346\230\006E!\024\025\342\240~\016\005B\334\036j)\023#5]\227\031\250\030T.8\250\031p3P5FE&(*1Q2\203L)I\202(\301=\315\000{\324\212\027\034\322aI\342\245D\006\236\312\000\342\243\"\200)[\201U\231\362\330\025z\326/\227$U\261\2000*h\3075dF\254:T\321\333\250l\212\275\032\2201V\024T\201x\346\234\027\0252\034\n\225i\364S\224sS*\324\221\250\316\343\320V>\263x\0262\212k\032\321\tb\355\336\257\347\002\241\221\252\253\265Wv\257u\030+La\336\230\302\243+Q\272|\271\2522\'\314j\244\321\367\025X\255F\313PH*\273\212\205\307\025X\3474\274\342\232F\356)\230\000\321\267\232F\034TE\006rj)P\036\202\241\333\301\252\322\016MWu\250\030d\325yW\236*\002\246\220\255&\321A\034T{i\254\242\231\266\202\231\246\354*iH\371r)\213\220\325aM.I4`S\325\0052D\310\250\243\200\2313Z(\241\020\001OQVcQ\212\263\030\305YC\201S\2415a\rJ\005H\242\234\006)\301\261O\rR/5:-L\253\315%\304\253\014\004\347\265r\027\222\233\213\242\001\34354K\265\000\2473b\253\310\365Y\332\253\273W\274#eqN<\212f)\207\2555\271\030\252\262\256\006j\214\300sU\031y\250\234b\253?5\003\017Z\211\300\"\253\270\301\246g&\235\266\230\303&\200\264\256\237-FS\345\250]qU\334aj\254\213\315Wa\315Fc\357P<|\364\250\032>i\205)\n\323H\246c\232\nf\231\345\322m\"\202\271\246c\007\245!Nr)Fi\3034\361\322\244JW\031\024D0sS\257&\245U\315Y\2163\334\325\244\003\0252\214\364\025*}*u\315XOz\224\nv>Z@*H\324U\230\343-\320U\205\214(\250\347\235`\214\223\332\271\275CSiIU<U;t$\356=MZ\316\005D\357U\235\352\263\275B\315^\363\033\032\260\005.\312\205\320\347\212f\323\336\253\312:\212\316\234`\232\252\315\316*\t*\273\016j\tEC\332\241q\223Q\205;\252]\274SJ\322\016\r9\206V\232W\344\342\253J\274UgSU\335*\273\2450`qM1\006\344T/\t\035\252\022\236\325\033-DE0\320r\005&}\250\340\322\025\244\331N\020\223A\207\035\2516R\355\305(\006\214S\324T\350\242\247A\316jl\340f\254E\261\272\234U\224P:\034\324\243\216\265\"\232\231\016ju\351K\221@\345\252\314j8\253J\301\023\336\206\223j\344\326>\245\177\030VBy\305s\250\014\323\356\355\232\276\200(\024;qU\235\252\273\265WsQ\023^\363\023\032\271\021\334qR\260\001j\034\344\032c\364\252\362\216+>\341j\223\2475\013\241\252\3161U\244\316\352\204\234\032C\203M \003E4\321\301\244\301\247\001\362\325yW\232\255\"\325vZ\205\326\240d\346\233\202)\303\004r)\215\022\236\365\013@\247\241\252\317\0378\246y=\3151\227\034b\231\267\332\224\'\265;e<EN\010E\014\265\031JB\236\324\233)BS\302T\212*U8\342\245^jU_J\225\031\222\246Wby\251\325\215O\035O\277\013M\335R\241\2531\236)\346U\034\223\370U[\273\264X\030\206\344\n\345.%\222{\234\003\236j\344\021lA\305NN\005B\355\305Wv\252\356\325\0030\250\213W\276\333\200\307\025\245\014AFOZl\374t\250\020\363C/\025^A\305R\230f\252\262\361Q2qUd\217\025RH\370\316*\253\247sL\000\322\021M&\222\224-.\323\232w\226@\250\244Z\201\2235]\343\250Z:\211\243\250\232>i\245@\355MaQ\260\342\2532\363@L\323Z,\366\246\030\271\245\021\323\204\\\363N\021\322\025\3057\214\320R\223e!JP\224\241)\301qNQS(\251\226\244\034\324\213S%YN\224\254iTqV\020qR\027\001}\252\255\304\247\313f\007\240\256vi\345\222B\245\2163V-\242P3\216j\346\000\034TN\330\252\2621\252\257!\252\317-@\322\023Q\0279\257\241`\005n1\357Z\352\006\320qP\315\311\250@\305.2*\t\005T\221rj\263\246*\"\271\250dL\325Y#\305Vx\262j#\026;To\037\030\002\232\260\023\332\217 \346\236\">\224\361\027\265)\213\"\240\222.\rUd\250\331\006j&\217\332\240x\352\"\236\325\023%4\245F\321\361P4DR*\034\323\214d\016\225\036\337QO\021\361K\345\361\322\232@\025\033\014\232f\312B9\247\201\305 \\\265<\247\024\230\346\214{R\201\212\220T\202\244Z\225z\324\311\326\254)\342\224r\334\323\267\000i\341\317\2552Iq\225\007\232\251.\346\3435VK\022\351\272#\363\016\265\n\273A&\3118\"\254\254\301\207ZF \214\325i\031q\315@\301J\014\n\204\307\023\003\203\315C\373\224\310\3175\032\307\026\342Y\270\257\241b\205\214\275*\371R\261\363P`\263R\355\246\221QH8\252\2169\342\240e\250\212\340\323\0361\212\253\"sP\230\306y\243\311\004t\246\033q\236\224\206 \005 \210zS\274\241G\225\307J\211\320\366\025\003\241\3475Y\343\346\2421\323Z>*\027\212\240h\3523\036{S\014G\322\232c>\225\031\204\236\324\317#\236\224\276W\035)\206\036i6\001H\330\013\212\201\201&\232W\024\3023MaJ\006V\236\006\005\007\232B(\242\234\rH\265*\324\313S(\251A\342\214\220x\240\034\236i\373\360*\256\377\000\230\234\322\226\315\"\311\264\361T\357\224I\363\257Z\247\034\254\255\264\325\245\223\"\231 \014\rU\221[\261\252\305Xg\232\201\220\346\242`\330\353_R,h\234\201QJs\300\250\200\300\351M9>\324\230\250e\342\251\277Z\217\031\246\262Tex\250\214y=)\215\007\265\013\027\035)\216\235\361Qyd\232_/\024\334\200i\330\310\340Tm\031\034\324\017\021\'\245@\360\221\332\2431\037J\215\242\343\245@\361\361\322\2411\323<\256zQ\345f\232\320\373Tf<v\244TRi\222\"\216\225\003\014T,=*2\204\323J\000)\214\275\315D\374TF\236\237v\236\242\224\250\317\002\232E7\275\024\345\025\"\324\253S.ju\351N\035h,(\0075\034\357\265x\252\341\370\245\014i\254\370\346\243-\237z\253s\030\021\357^\010\246A.\345\353\315NX2\324M\327\245Wp*\007\025\023\001_M;\222i\244\214g\275G\272\233\273\232F8\346\240\220\344\325Y94\305\353N#\212\210\255=c\342\203\036x\305\036A\364\250\336\034T^N;S\032#\236\225\030\265f9\251\204!@\030\241\240\310\351P\264\001y\305@\360\226=*&\207\035\252\027\217\332\253\311\027\035*\003\0274\276H\2464U\033\246:\325yF:\n\200\014\032k\363Q\024\3150\240\025\031\317aQ\260\356j&\250XsL*\000\245^\230\247\201\212\\f\221\207\025\021\0304S\205H\246\246NEL\242\244\007\024\273\270\240\036i\335\005A;(_\230\324!\327\265#8\365\250\231\211\250\363\207\251\22614l\246\263$F\266\271\307j\262\207+\221H\336\265\003\214\032\205\252\006\007<W\323n\240T-Q\226\346\22074\214r*\0065\003\212`\034\323\361\305 \034\325\204A\266\237\345\202i\345WnqU\2353\315@E \217\'4\355\273V\232\027\'4\273)J\006\030\"\241x\200\355Q\275\266\344\310\252\022DC\021\212\204\307\221\214T&.i\273;Tl0j\ty\025U\3275\tJiJc\'\245D\312\007Z\211\215@\374\324L*2\270\250\330SA\301\251G#4PNj2)\000\247\001J:\324\250qS\253\nxn(\335\223J\r<\310\002\326e\334\205\244\340\361Q+7\255H\r!l\nb\235\322\342\254D\373%\036\206\253jQ\226>`\250\255\333)R\265B\3759\252\356*&\257\246\237\247Z\256\325\013\032ny\244&\230\325\023S@\357O\307\024c\232\220t\251\024\343\255+\032\211\360\006\rE\263\'4\354`{\323v\026\353N\t\201AZP\234S\0352*\"\n\212\257$a\273sU\274\262\037\030\250\245\213\346\340UwM\240\3256\004\232\211\226\242)\3150\306*6P\007^j\007\340qU\336\240j\214\203M)\216MB\352I\250\231j3\301\247#\343\203N\'=)\246\222\201\315;\"\200i\353R\255;w\024\240\340S\267TRI\216*\204\257\271\350SRg\212c\036)\320\241\332d4\363\326\222\361\317\331\016\006N+2\316_\230\251\253\347\221\232\211\352\007\025\013\n\372T\267\025\013\032\205\271\246\342\222\214dS\031i\240T\212\274P\027\232v\332P\246\244\013\232\206D$\322\204\342\217/&\237\345\340Rl\243fi\3730*7\003\246*\026_J\205\327\332\253\272\214\362*\027\030\311\252r\215\306\252\310\230\342\242)Q\225\000\032\205\224c\232\201\300\354*\263\365\252\362\n\210\306@\311\244\340\016\325\023\234\232\204\203Q\260\250\330TD`\323\220\323\262)\t\244\024\3409\245<S\220\324\303\245\035\005&\352\025\263\234\324\022d\344\325R\tjx\030\024\361\322\230\365a\177\343\330\001L&\235\"o\266#\332\261\020\230\356\361\357Z\200\345*7\250Z\242j\372;vi\247\232i\024\3021I\212P\264\205i\002sN\013\212pZP9\247\005$\323\366\020)6f\234#\000Rl\301\244\"\223m=R\206\\\n\254\343\234\324-\355P\271 T\016x\250\033\200sU\335qU\231rMB\343\035*\006\342\253Hj\273\232\205\252\027\0375A&I\301\246m\342\232W\212\215\226\242aQ0\246\025\244\333\212CI\232\005H\2645*\234T\301\250\'4\323\322\221O4\3761\212\253,a[\212`\031\247\201H\313\221R@\300\257\226\177\nq\214\206\344S\230\205\214f\271\351\330\177hq\3235\251\031\314b\221\252\026\025\003\n\3720S\261F)\254\274S\002\363R\252f\224\307G\227\355F\312]\270\240\'9\251\02503A4\252\274\323\310\342\232V\232W\035\250\013\315H\023\345\246H*\254\202\252\270 \361P\276qP05\014\200\342\253\276j\006#\323\025\004\207\212\255!\252\316sP0\250\230\036\325\023\200\277Z\204\256MF\324\200ToU\330\324li\271\243\212a S:\267\024\247\212p4\244\361\212\001\346\236\032\227&\216\364\243\255:\230\3005B\321\262\362:P)\304TeH9\025 \231\372\032\t2g5\205p\240_\340\036\365\253\010>P\245aP8\250Z\276\214\002\235\203J\007\024\025\240GR$f\244\331\353N\330\r4\307\3155\223\240\247\254|R8\343\002\221c\346\227\0304\355\274R\025\246\3554\001\203R\250\371>\225\024\202\252\270\252\354\271\252\263\0208\025BI\260z\324M)aQ\227\300\346\242r\030d\032\256\334\234\032\2570\317N\325Y\207\025\033.MF\303\265@\353\315FF*\026\034\323\017J\211\352\263\032\214\232i4\274\232c\n#\03148\301\246\203N\355IN\006\236\r8S\200\247\021\306)6\342\224\256T\325}\270\245\034\322\355\246\021\212z\361\023\034v\254\031>k\354\373\326\274C\367c\351C\212\201\205B\342\276\213\214\202\264\360)\312)\341sOT\025\"\256\005;\031\355J\027\024m\243`\353K\267\232i\217-NT\366\244h\271\351K\345\340Ry~\264\206>(\362\300<\212q\\\'\002\253\3108\252\3169\252\322\215\243\216\265\231u.\320Tu\254\311\030\223\232El\234S\23521P\210\310lSd\030\037J\251!\252\315\313`S\\aj\003Lj\211\205D\370\252\354j\0075]\215D\315M\007&\245\310\305FNO4\241\202\232\034\202\271\250\327\255?\265%\003\232\225G\024\3608\247\216\224\360)v\203F\334\016\225]\303g\247\024\325\353O#\212i\024\262\376\356\305\233\326\260#\033\256\363\357[\0100\224\214*\026\025\003\327\320\250p\265<d0\251\300\342\236\253R\001N\003<S\302\322\355\245\013K\266\230\344\001\307Z\024f\246T\035\351\3053\332\223\313\244)\212@\224\273)\245x\252\262\255@S\034\232\317\272\3178\254{\216\033\221\315Rp\\\234t\244\2162\032\255,C\0315\033\247\031\035\252\224\255\203\217Z\256\3000\307z\252\343cS\034\344Uv<\323\t\342\243c\212\255#Uwj\256\355P3\032\211\2157q\007\212vx\347\232B\337\205&\356i\331\342\201\305;4P>\365L:S\327\255H\005<\np\024\374Pc\014\270\305T)\266B)J\322\005\313b\242\324\330Ge\264V5\222n\233uk\205\302\323\030T/P=}\010\237v\236\231V\253\2502\271\251\025jM\264\345\024\340)\364\034\nM\340Td\206oJX\3075:\212\231E<-\005\001\352*#\036\r&\332\211\370\252\356\275\315V\226\251\311\030`I\254\351-D\222{TRZ*\360\005@b\nzPH\013\212\256\354\002\232\312\272r\030\340U?8\347\255\014\341\2075\023t\342\240bA\346\241f\250\236N*\263\275@\355P1\250X\342\243-Q\347\234\203K\270\343\232C&)\276`\025$d\260\346\244\343\024\231\346\236\001\357J\007\315S\252\361O\333\212\220t\247\001\315J\242\235\216i\300UYS\022\223I\266\234\211\316k;X?\273\013T\354\023\0038\255 8\250\334T\016*\006\025\364\"\014\n\221E[\204\360\001\253\010\265(ZpZ\\P~Q\232\210\266\016i\243\0079\243\0254c\212\224S\301\311\305[\21523J\313\307J\205\226\242~*\007\300\025^CT\344\334OC\305V\22398\250w*\365\252\362\260&\251J\3305Y\233\212\257+qY\327<\346\262\246r\215R\307\"\262\212s\343\025ZF\035\352\263\363\336\253H\304\032\254\356j\026\222\240ij\026|\324l\324\320\364\355\374R\026\2461\251\"|\032\230\266E*\014\265[\013\204\243n:T\250\274S\310\247(\251TT\201i\330\245\002\242\222<\266{Sv\361OT\302\023X\032\213\231.\n\203\221\232\232\322-\261\216*\321\034T/U\336\240j\372\031W\212zu\305M\037\016\r_\214n\031\251\200\002\227\0034\340\006*)\272\201P\3435$Q\344\344\364\247\030\300l\366\247\001\201N\035jE\034\325\330\370ZV\306*\006\252\322\036j\']\340\3253\220\331&\240\221\267\0021\212\252\374\003\315R\221\360\335j\264\217\236\365RF\311\252\356j\274\206\250\334t5\213t\334\232[Y\003\246\t\346\245\222L\034\032\254\362\202j\007\222\240f\334j\'L\212\255\"\221U\0379\250\211\300\250\231\251\273\351\301\351wS\031\252H[\236j\312\363SF\274\325\240\016\005<.jUZv\316j@\270\247\001\212\220\nv)v\321\267\"\220G\226\305C}\"\301\t\003\251\025\317\252\031\256\013\037Z\321\2156\255)\250^\253\270\252\357_GF\200\241\372S6\235\3254c\234\342\256\304H\024\362\3314\364\346\244\002\242\224e\251\250\2718\251\210\300\300\246\362E.>Zp\025*\216*\312\034(\024\254j\t\017z\252\334\234\321\301CT\2350\344\365\252\322\232\253.6\363Y\227\r\363qU]\252\263\236j\002q\326\243r\rS\235r\ra^FA&\250\307#\306\374T\322\\\026NG5XHKu\245\222E\333\214\325G\220\347\203Q\231\330w\246\231\367\016j\007`j2\271\025\003\241\315B\331SH\032\235\272\221\216jH\201\334*\344}j\354)\222*\340Q\216\224\005\305H\243\332\2368\355N\034\323\302\373S\302\323\361F\005(\\\364\247\235\261FX\327?\177pg\230\2504[\301\265rEY\306\005F\325\003\346\253\275Wz\372L)\t\305\t\026j@\230\251\001\"\236\t\251\321\224\nq\223\216)\230\'\232z(\316i\314F)\024qGSNQ\315L\243\212\224t\246\226\250\035\263\305@\346\242g\307\031\340\324\016\371\031\025Jg\2523I\3335JS\221U\\\325Y\016\016j\254\262\017Z\252\323d\365\250d\220\342\263\256$R\010\"\263\300_4\361I0]\243\034U\031$\021\236\rWy\263\320\324-6\017Z\215\246\3175\031\230SL\271\246\2311\336\221d\014y4J\237.EV\344\032p\346\236\006M\\\211@\213=\352\324\020\226\347\025\243\024AG\"\245\306\005(Zp\004\236\224\340\005=G5*\343\024\341\326\227\212\007&\245A\203\223T5;\200\020\242\237\255dA\016\3717\032\320T\300\244j\201\352\273\232\201\352\006\257\246\000\036]\n\2705 \024\355\264m\245\301\245\004\324\313\215\264\361\200(<\232\017\024\224\365\0252\322\223\201P\273\361P\027\031\344\324NsQ\034\223Ue}\271\025FY9\353Te|\325g5^R\000\254\371\245\352\001\254\371d9\353U\032S\236)\246V+\315S\230\026=\352\253(S\234\325yd\031\301j\245q\317C\232\250r\rA!9\342\242.GZ\211\236\2247\035j\'\223\234f\221\031\263\232\264\262\345v\2654\246NE*\241\024\360\234\325\270Wq\000V\254*\252\200T\333\261J\244\261\251Gj\221T\236\225\"\307\223\315.\314\036\224\240b\226\223\222x\251Qq\311\246\334>\310\211\2549KM9\006\254\305\026\325\034T\207\201Q9\250\034\325w5\003\232\201\253\351\264\033\233\025\"\257\315N\013O\013F\303K\263\332\215\224\340)NH\247F\0079\241\272\320:\324\252*A\300\250\335\252\254\217U\213\374\324\222I\264Tm8\331\214\325\031_$\325\t\237\006\251\311 \252\3176;\325if\005q\336\263f$\223\212\247\266I\037\030\246\264a\007<\232\214\270\3060*\tYpk.\341\362\373A\252r\3061\235\374\32578\352j\t\037\266j\263\277\275V\222_z\201\246\347\255\'\235\357B\266\346\346\247\\\nvOj\222)\212\234\032\264\256\206\224\272\366\251\355\233\347\255(\332\245\000\232\236%\305N\213\226\253 m\034\014\221Ud\235\222_\230qO[\210\334u\346\236\034\023N,\000\246\371\252\017\024\241\311\250.\245\312\355\252\261E\203\223\326\254`\005\250\334\324\014j\0275\003\232\201\315@\306\276\241\215v\362jLqN\013O\002\227m.=\250\332qQ\3644\274\232r\360\r%9jU\245f\300\252\322=T\221\352\020\3375U\270\234\324BM\313\357L~\225\235p\330\315e\3176\334\325\006\237{\340f\227\2675\013\2202j\234\263\355\310^*\234\223\022z\324&N:\325;\211\361\3005\225q<\212I\004U\031.\244\317&\253\274\356z\324FBj\007\223\236j\254\262b\253\231i\276a\315M\034\225ad\036\265 \224b\205l\234\325\204j\235Wq\253P\215\254+F2x5i9\025b1\212\261\020\313\375*\302\221\232\257w\002\261\311\357U\205\272\250\316iw`\342\245Q\221\232O/\234\322I E\300\250\000.\3315&0)\t\342\241sP1\250X\324,j\0075\003\032\372\224\360qOZ\227\256)\300S\200\243\024\275\25229\244\307\024\023IOZx8\025\034\217T\345z\252\355Qo\301\252\223e\345\300\245\t\265j\031d\254\333\231\0075\217tI\316*\224jD\231\251\035\360:\325I\246\033N\rfO8\007\255Q\222\351W\275V\226\364\343\212\247-\300\332N\356k6I\333\177\'5^Yr:\325f\230\201Q\375\243\265G$\274\365\252\322\313U|\317\232\227\314\031\251\342pj]\370\247\243d\340\325\310\243\316\017AS\252\340\325\210\370\253*\325z\007\312b\257B8\251\301\033\270\251\342?=[\0108#\255Ar\334\212\200\234\216h\n\247\236)\306DE\252\315p\316\330^\224l$e\251\352\000\024\214j\026j\215\332\240f\250Y\252\026j\205\332\240s_T\205\311\251U{S\300 \323\2058R\221IL4\334\361IH\r=x\245f\300\252\262\311T\344z\201\236\242v\001ri\261\000\331j%\220\0055\227s6\001\254\271%\017\236j\224\254NEV\334\007SU\247\234m\3005\235,\303\004\223X\363\334\356\224\200x\252\262L\000\344\325)\256\200\035k>k\337CT\336\357=\352\273\\\373\324/u\357Q\371\371n\264I0\307Z\254\363g\275@d\301\2442\361\326\246\202nz\325\325\220b\247\210\214\346\257$\213\267\203R\207\025:IR\306K8\025\257n\200\'5l8\003\002\236\215\315Z\211\276aW\200\371s\350+>\342_\336\022{UG\231\211\343\245 \226Lb\234r\303\223O\211@5+\035\274S7Tl\325\0135D\315P;TL\325\0135D\315P\261\257\254UMJ\253\212x\\\323\202\214Q\267\006\214SH\246\221\221Q7\006\220\320\r(5\024\217\306*\244\257U$z\204\265FX3\373\n\014\312\203\212\247s8\307\006\261\256g$\360j\231c\234\223U\346\230c\000\325)$\371z\326u\305\301\307\025\2354\216\312rqYsH\251\336\263n.\361\336\262\347\273\'<\325\027\270$\365\250L\331=j)%\003\275C\346g\275\'\233\212\215\356\017\255Df\367\246\231s\336\232$5,r\2259\253\221\316\307\025v)\t^j\3129\003\255L\222\234\3435f7\367\255\0136\005\362kZ7\371i\341\271\251\321\252\314rU\227\270\"\002\027\322\263\335\362\204\223Q\251\024\361\212q\"\225\037\rN\221\352\"\374Tl\365\013=F\317P3TL\325\0235D\315Q3W\327\n\243\025\"\347\275J\005;\024\021M8\2461\246\026\366\250\234\212fx\2434\326|Uid\252rI\326\253<\225\013\310\000\252\223N\300`UG\273!pMT\232\345\210\344\340U\tn\027>\265RK\203\3175RI\262z\325\033\273\235\211\200k1\356\200RI\254\313\273\376\300\361X\367\027\204\347\232\313\232\344\223\326\250\313>{\325V\224\347\255 \177SQ\311&j0\344\320\315\305Ww\346\242g>\264\335\347\326\236\255\232\235\016M]\213\240\253\2616*\300n*X\316M[\210\372\326\205\273a\270\2558\337\345\353R\006\346\247G\340\n\261\034\2035.\360\313\267=j\233\276#\306{\323U\352@\374Q\346P\036\203&i\254\374T,\374\324e\352&z\211\236\242g\250\231\2522\325\0335}x\265*\324\200\323\201\246\263\001Q\263\372TM%F\322Te\363Q\371\2304\246Q\212\201\345\367\252\322I\357U$\222\252\311\'\275V\226^:\3259\3468\353Td\227$\363U%\227\336\251K \346\251K7\275V3ry\351Yw\327\031;Ee\312\314\300\362k>\340\343\275eN\374\236k:W\344\325I\036\252\264\230\246y\324\323&h\363\000\2464\271\250\331\370\250K\363@|\323\325\252\3126*\324RU\264\222\247Y*x\344\253\220\277\025v\031p\302\264\243\227\345\034\324\302J\225\0375:I\212y\223\234\203PL\307#\236)\201\352A\'\035i<\312Q\'\024\027\367\246\031*6z\214\275F\317P\263\324e\3526jajal\327\330\013R\203N\0243\342\242g\250\231\352\026\222\2422S\014\225\033=Df\307z\211\345\252\357/\275U\222J\251,\275j\234\223q\326\251\3137\275R\222lg\232\245,\376\365JY\375\352\234\222\344\365\250%\224\"\365\346\262n\246\031\316k>K\2360+>i\207$\234\326U\304\343\'\025\235$\371&\252\313/\025U\234\223I\300\034\232a|SK\322\027\250\335\352\022\374\320$\251\222J\262\214\010\253\021\266*\302\275L\262U\230\244\253\320\313\212\267\033\022r*\3443`\341\215\\Y2:\325\210\333\212\260\255\353J\314;S\035\267!\035\352\272\311\316\r?\314\2442P$\245\363=\351\206OzcIQ\231*6\222\243g\250\313\323\013S\013\023HZ\276\304\024\360h/\212\215\236\241i*\026\223\336\241g\250\313\323\031\352&\223\336\240y*\006\227\261\250\036_z\255$\265Ni}\352\224\263U\031f\347\255R\226c\353Te\233\2575JI\275\352\263\312z\346\251O?^k\036\356\357\031\254\231n\230\236\rT\222vn\365RP\304d\3259\001\355Udoj\256\316j#!\007\232a\226\2433R\031\270\353L3qL/\236\224\002jtlU\230\333\236\265iZ\246W\251U\252\304lsW\241$\342\256\306\370\253*\371\031\253v\355\317Z\274\215\317Z\230I\357A\223\214\323|\317z\255#m\227>\264\276g\024\323\'\275\036e\036e#I\3150\311Q\231)\205\351\205\3522\364\322\364\233\2517W\331#\245\005\200\250\231\352&\222\241g\250Y\352&\222\241y*#/\275B\362\325w\227\336\253\274\330=j\007\233\336\253I?\275S\226oz\2434\336\365FI\275\352\234\263{\325\031e\346\252\274\252\243,j\214\327@\236\rg\334\\`\036k&y\201\'&\250;\214\232\201\210\353P\311&*\224\262\202x5Q\334\032\254\357\315Ww\250\213\324L\306\243.i\273\351\312\334\324\310je\253\021\346\255#qS\255L\265b.\265\241\020\302\365\251\325\275\352\302\023\212\267\013`\216j\342\2775\'\231G\230qM2b\243\225\262\231\035EF$\312\322y\224\236e\036g\2754\311\357M2S\014\224\322\364\322\364\322\324\335\364\233\250\335_d\227\305F\322TM%B\317P\264\234\365\250^J\205\245\250\036J\210\311\357P\274\236\365]\345\367\252\262KU\236~1\232\253$\336\365NYz\325)$,z\3259\337\000\363T\036ny5N\342\351\020u\311\254\251\356\214\204\363U\332L\014\346\250\\K\327\232\314\236^j\241\227&\242iq\336\253\311.{\325\031\344\367\252fc\232cI\232\201\332\242\335\315\007\245D\324\334\363OZ\260\202\247QS\2409\253(*e\310\251\220\232\263\026sW\020\260\253\t\353V\343n*tl\032\260\262qO\337\317Zpn84\326~y\246\357\312\221\353U\303\320^\233\346R\031)\246Ozi\222\223\314\244\337H^\232^\233\272\215\324\273\253\354fz\205\244\367\250ZOz\215\244\367\250^J\256\362{\324-\'\275@\362\373\324&Rj\'s\212\251,\270\357U%\233\320\325ff<\324\022>:\232\251,\243\034U\031f\300\'5\233qpq\301\254\271\256X\023\315P\226m\304\344\325v`;\324\022\313\307Z\317\270\224\016\365\233+\3565\003\270\002\253<\236\365ZIj\244\262\023\232\252MD_\232k6j<\321\272\232ri6\234\324\210\rYE5e\026\254F\230\253\n\271\251\225*eQV#\035\305ZC\221S\247\0252\032\231Z\247\007\013K\272\244V\244f\346\242g\301\315D_\232izizazizizO2\227}\033\3517Rn\244\335J\032\276\302y}\352\006\223\232\211\244\250\232J\205\345\367\252\357&j\006\226\241g\317z@x\315E+\200+:y0MT,Y\251\256\333S\255g\3157\315T\345\227\216\265Fi\307J\241<\240\326M\324\230\'\025\236\362\234\346\242i}\352\t$\033k>bI\252r6*\254\217Udz\252\356j\2731&\242s\212\2074\322sHzR\001N\002\234\007\265N\211S\242\325\230\326\254\242\324\312\2652\216)\340sSG\232\262\206\254!\251\327\025*.MM\216\202\223\245=Z\234\330\252\357\334\325p\371\'\353HZ\230Z\243/M/M/I\276\227}.\356(\335I\272\215\324\273\361_]<\265\013I\357Q\231=\352\'\227\336\253\274\276\365\003K\212\205\345\311\3115\013INY\206\314T\022\313\226\306j\244\305H\3115X\262\2579\252w7\000\214\003Y\362K\234\363Tn\'\300\"\262\344\270 \236j\244\263\346\251L\340\203Td\034qU\237 Uvz\255+U)MU\220\325I\rT\221\2105\016\354\323\030\023Q\2254\334Q\212P\016jEZ\225PT\312\240T\350\265a\024T\352\270\251@\251T\032\225V\245AR\250\251\220\325\2049\253Q)<\323\317\007\232i4\344>\264;\324r\034G\232\243\273\014i\013f\232Z\243f\250\313SwQ\272\215\324\273\250\337I\272\227u\005\373W\326\317%B\322{\324M-Wy\252\006\227\336\241y}\352\026\226\2432S\014\330R*\264\263\221\3005NY\333\326\252\311p}j\243\315\234\344\325g\227\216\265B\342N\t\315c\3157&\252I>;\325v\227=\352&~*\274\207 \3257l\032\255#UI\rU\221\252\244\215U\334\346\242\305!\3054\323\010\346\224-=R\245T\251U*EZ\225\027\025a\006j\302\255H\253S\306\276\3252\255J\251\305H\022\234\027\232\232>\r_\207\033)\254z\232\210\223\234S\201\305F\362sI#\342\036j\223\037\232\220\2654\232\215\215FZ\230Z\223u\033\251wQ\272\215\364\027\244V\347&\276\260ij\026\227\336\241y}\352\273\315\357U\336oz\211\246\343\255Be\367\2464\330\357Q\231\262z\325ye\025JY\272\3257\227$\344\325g\232\252\311>;\325\033\251\276^\265\2174\274\232\246\356sP\264\204SL\271\024\326|\325I\271\252N\3308\250\035\252\254\246\2529\252\354Ni\2314\224\020i6\232z\255J\251R*T\252\265*\247\265J\022\244U\305XCV\021r2*tJ\231V\236\000\006\244\030\247`S\224U\250O\312E)\351L4\235F*\274\334sLg-\025V-M\335\232B\324\3265\013\036i\204\323wQ\272\215\324\273\2517SY\351U\253\352\271$\307z\256\322\325w\232\253\274\276\365\003\313\357P\264\276\365\031\227\'\2555\234\343\212\214\270U\353U\345\233\212\241$\274\232\251$\270\315T\226n\274\325\031g\353\315Q\270\270$b\250\271\'\232\201\263\232a\217#\255WrP\342\230_\212\202G\343\255S\224\325v5]\352\263\n\204\2574l\366\244\333N\t\232\014t\241*EJ\231PT\252\2652\255I\266\224-J\252j\324+\212\262\253\315J\027\212]\274\324\252\231\024\340\224\340\2475*\002)\335\3151\215D\317\3155\260\352A\250v\262\361\332\240\225\010\344w\2503\203Aji5\033\034\324d\323I\244\315\031\243u1\236\232\016i\341\253\352Y%\343\255T\222_z\256\362\373\324\017/\275Wi}\352\027\230\016\365\021\270\305/\332GL\3242\3161\326\250\315t\000\353T\245\273\003\275U{\215\3035Ri\275\352\233\271\'\255W\220\214f\2531\250\231\271\246\226\"\253Lr*\266\343\320\324\022\276:\032\252\314MD\306\240rMBFi\002\nv\312iOj\000\247\000\r9TT\312\203\035)\341EH\252*UZ\220-=R\247D\036\225aV\246E\251\200\247\005\315<\014S\351\312*U\034\323\010 \232c\n\201\352,\220i\333\276^j2FpG\025Vh\312\234\216\206\240\335\316\r!4\302j3M&\232M4\2654\27579\245\006\234\032\276\235\222^*\234\222\373\325W\233\336\240ij\027\227\336\253\274\265\003\315\212\203\355\030bI\250&\274\367\252\022\334\226\357U\332L\216\265\027\236\001\306j\031d\356*\263\313\317Z\211\237#\255B\306\242cLf\030\252\3625A\301c\232\212U\034\325fQQ2\324\014\265\031Z6\322\320E&\332P)\300b\244Zx\251\024T\252*e\025\"\216jt\305N\270\"\245A\232\233\024\341N\002\236\242\244\013\223\315?a\0074\2143Q\262\361Q\024\317j\205\242\347\212aLSH\317\007\255F\303+\264\325\031\220\253f\243\007\"\232i\206\230\306\243f\250\313\323rO4\354\321\234\322\203_I\274\276\365RI}\352\254\222\363\326\253\274\325]\345\367\250^n*\264\223q\326\252<\307\035j\263\312OSP4\225\004\223\200:\325V\237\346\353O\363\003\'\275Vs\315Dd#\2750\311\232c\277\025\tcLn\225\003g\250\250\035\352\0265\0315\033sQ\355\346\227m\033ph\"\223\024\001\315<\014\214T\212\230=jt\210\021\326\235\345\221R(\251\005IR\'\275L\246\246C\212\260\274\212\220\016)GZ\220b\245SR\021\221HV\243e\250\310\305D\335j6\250\233\255D\302\240\221C-Qa\265\2150\232i5\013\270\002\240f&\2234g\002\214\346\2274\003\315}\022\362\373\325Y%\252\317/\275Wy}\352\273\313U\336_z\253$\276\365U\345\367\252\3575Vy\375\352\264\223g\275ViNiV\340\203\214\323\313\356\250\236\231\237zBj&<\3237Tly\252\3562\325\023\000*6\250\3174\334\021\326\202i2(\316iv\322\2055\"\241\316sS\205\004sN\000\203\201S\205%y\240%<\nu=jd5*\324\350j\300?-\000S\300\251\200\332\2715e0c\030\240\342\242`\rF\343\212\252\343\232\215\205FED\365\021\372U+\205\301\316*\241$\034TO%BI\'&\232i\271\2434\003K\232Q^\374\362\325i%\367\252\257-Wyj\273\313\357U\336_z\253$\265VI}\352\254\222\325w\222\240y*\026zn\376i\353!\365\247\207\334)\271\346\232Z\243\'4\302y\246\223\336\230~\355V\220\363Q\022)\244\323I\246\021F\017zr\216i\304\220)\273\216jE\222\246Y\001\251A\025\"\310A\366\2513\236{S\201\247\365\247\001OS\212\224\032\225\033\232\262\207<T\370\300\241~\360\253\022\220Tc\322\244\201\206\334S\237\025\003pj6<T\r\311\2465B\325\023sP\276{Ui\033q \365\252r\2569\252\254*2i\205\251\271\244\315\024\240\323\301\257\377\331"
-byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\002\217IDATx^\355\335\341n\2020\024\006P\303\373\277\262dq\233\313\2546\020\004i\373\235\363\263\022\025\250\264\367\366\202\227\013\000\000\000\360\312T6\020a.\033\000\000\000\350\235\020\177\201X\030\000\000\200\036\r\032\360\013\323\001\000X4\350\\\230\265t\000^[\352\031\342M\272\243\323\002\000\000\000\000\000\000\260\215\025g\000\000\000\000\000\000\000\340c\024*\000\000\000@\036\371\000\000\000\000\000\000\000\000\030\307\322\377@\326\251 \000\000\000\000\000\000\000\000\330\344\273\354b{\325\006\000\000\000\000\000\000\000\231\016\277\313\337R6\000\000\000\000\000\000\000\211N]/\277\226\r\000\000\000\000\214e\372M?\035~[\010\000\000\000m8\265\014!\330\211\201\367|\342g\003\000\000\000\000\000\000\260\217\347\245\337\242\000\340y\003\000\000\000\000\200*\267\030\001\000@S\254\372\307\021\225\001\377\030\005\000\000Bx\"\\\272\311\344\037\330L>\021\000\240c\327\262\241\352\0366\n\037{e\342\016\000\000\000\334\311\023\204;\252\003\034\365\276\000\000@\n\005\t\000\000\000\000\260\017+\370\000\261,\267\000\000\000\000@\010\311\3000\345\t\237\237Z\2061\354\216\001\000\000p$\341$]\320Q\001\000\000^\332\347\226\330}\336\345\024\342\305l\177]WG\000\000\000\332\320q\204\r\000\000\000\000\000\300G\251{\003\036\271*\204H?\321\n+\000\000\000`Qz\372\000\000\000\000\200\321\3342^\262^\214G\257\376\254\346\216ws_hp\2167-Q\013\013Y\2121\310\220\364I\343\\p\307\331\023\000\310c\034Of\366\017\220\314(\000\000\000\000\217\304\312\000\300\030T\001\000\3002Y\200\r\3328h\357~\013S\245\316\275\333\001\000\000\200\332\254\272\326\316\316\304\245\000\000\000\034\241\022\330\337\233+/W\333\241Iyy\225\325?\321\325\033\366\"\357\\\003\000\000\300!\346\361\262\006\000\000@\377\004*\000\000\000\260\262VV\020\235neG\001h\215\001\014\000\2003\010\243\341,\242@\250H\371q\244\354\'\025\327\262\201(\346\340\220\3155 \335l\036\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\374\360\357\347\000\000\000\000\354a*\033\000\000\000\240[\375VS\210\317\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\340\246\337g\t\001\000\000\000\000@[b\236\202\377\005\355\265M\274\251\013\246j\000\000\000\000IEND\256B`\202"
+byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\003\002\002\003\002\002\003\003\003\003\004\004\003\004\005\010\005\005\005\005\005\n\007\010\006\010\014\013\r\014\014\013\014\013\r\017\023\020\r\016\022\016\013\014\021\027\021\022\024\024\025\026\025\r\020\030\031\027\025\031\023\025\025\025\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000\364kU\301\025\250\251\362\364\250\246\217\003\"\262\265+3,$\257\336\025\303\352\221<n\331\025\207$\305I\252\322\266\376\224\266\361g9\251^\337 \326u\314X\317\025BT\305Ut\315A$dUw\214\032\2552\201\232\317\226<\324K\006\343R\262yC\025^J\200\236i\205\360*\t\034\346\2423\025\247\305v\001\346\255\213\350\210\3069\252\3271$\312H~+/\354\013#\036x\252\327\032b\201\305d\\X\225\'\212\257\366S\236\225<Pc\265^\206,\201\305[\216\034v\247\2102zT\251k\354*C\000\\\034\200i\336V\356\246\234\260\242\373\323\360\202\201\203\332\245E\343\356\324\201sS\304\206\256D\265r$\315\\\2051\212\322\267L\342\264\355\223\245j[\'N+V\326#\305j\333\303\232\277\004aj\374+\300\253\260\2475\245m\036{V\204\021\364\253\360E\223W\221\002\212\224H\007\003\255=rju^\225f(\306j\322\034\n\261\021\300\2572\212\337kt\255\004\213)Lx\2069\252\262\3046\234\327)\342-00.\242\270\rJ\003\033\034V|,L\2305\253\024_(8\247\225\342\250]F9\254\251\323\223UY0j\031FsT\344\340\325I\224\232\252\361\323\025pj)>bj\274\235j\"\225\023.j\'J\255\"b\241\332i\333O\275\014\030\214v\246,n:S\374\206#\346\351Q\266\232\034f\252M\247\210\315D\226\240\036\225j+\\\343\212\273\035\236\006H\251\004*\203\232B@\372T,\241\333\030\251\0220\275:\324\202\"z\323\276\3168\315H\226\340t\025\'\227\212r\307\355S\307\035Y\215*\344)W\241L\326\225\274}+R\332,\342\265\255\242\351Z\326\261\364\255(W\025v$\311\253\360\245^\202<\326\255\254U\243\024x\255\010!\3434\255\220)c\025<g\236j\312\034\325\225\312\201SE\310\025z\336=\304W\237\244xaW\243\203\345\250f\267\307j\251,D\251\000v\254-F\022\312w\016+\205\326\264\322Y\210\034\032\345\346\2670\313\322\264\255\237*3RH=*\205\310\316k>HsT\346\217\025RE\252\262&j\274\221\361U\244J\201\227\025\021Nj\027\213\346\246\274x\025\003.j6\216\241h\263\332\220[R\233l\036\224\236HS\310\246\277\3128\025Y\335\311\246\355\220\2163@\267y:\212\232;\000O5i X\307\002\207\034{Ui2\307\247\024\302\245\2158ER\244]\352eQO\300\240\223\332\200\rH\2435b%&\255\305\035]\206:\277o\027J\322\266\217\245kZ\307\322\265 J\324\266\\b\264\"LU\330R\257\300\235+J\336>\225\251n\230\305iC\037J\277\022\034TR\360i\022\247\215rj\334I\216je\311\253\226\321w\253\326\340y\230\354+\2100\205\025<+\225\346\206L\366\252rC\265\353;R\264\022D\330\256V{\0213\225\"\271-gM\t3`Vtq\030\316*V^*\234\361\325W\217\212\245:U\t\223\025U\326\241d\315V\222:\256\321\344\323L<Tm\rC$F\2411`\323Z,\323<\201OX\200\244u\013U_\222j2\001\342\232\320\016\242\244\216<q\266\246[s\234\342\246\362}\2526\213\322\2411\226b)\217\0268\250\304C=E?b\216\364\252\r=V\236\022\224&MH\"\247\252b\254\301\036j\374Qt\253qG\355W\340\216\264m\343\351Z\226\353\322\264\355\2278\255Kh\372V\224Q\364\253\260\307\322\257\300\225\245o\035i@\235+F\001\212\264e\302\032\252N\346\251PU\273q\315\\\215x4\364Nj\354|`\n\271l\2375rf\035\335\252D\207\002\221\243#5Vhrj\205\354x\214\375+\2350\376\377\000\247Z\300\361\005\220V,\005s2F\001\250\236\253J\271Z\247(\340\325\031\2275JX\311\252\357\017\265D\320\324\022EU\236>i\004y\024\206*\212Hj\026\202\230`\036\225\033C\212\215\206*\274\2715]\224\323Dd\232\2368\361S\004U\344\001\232x>\224\356\324\233=\252\027\002\253<E\211\346\232 >\242\234\261\001\336\245\010\007AR\010\267\n_\'\006\234\"\247\004\342\236\253\315Z\2119\253\320\246j\3641\325\350c\253\360\'J\321\267NEkZ\307\322\265\355\242\300\255\030S\245\\\211*\365\272t\255\030\026\264m\323\212\273\030\251\266\232a\213i\366\251\021j\314\\U\270\333\"\247\215y\253\260\247AZ\021 E\256h\307\203\322\227\313\305F\351\232\255\"\216EQ\271@\312A\254\223g\227-\216+\234\327\302\374\303\275q\227\010C\032\252\353P\262f\253\313\025T\226!T\344\214f\2421\003\3051\355\210\0358\252\322\333\342\252I\007\265C\345\343\265\006<\323Z>:TF:c&\007J\202D\252\322G\315B\311\315D\311\232h\214-!;i\276i\247\254\2075\"\271\'\232\2306EF\352\246\242h\2050\303\223\355R\010\000\003&\244H\207\245N\260\344b\234a\357M\300\3161H\0317c<\324\2019\253P\'\025~\030\352\354KW\241N\225\241\004}+J\336*\327\264\217\245k\300\230\002\257B\225n$\311\025~\024\351W\340^+B\020B\325\310\306\005N\2435!M\313\3151W\232\2361V#\253\260.H\255\033x\261\311\025,\262\210\224\223X\354\202\243+\212\257r\3425\'\275c\\j$1\025Y\356\314\304\016\324\267\nV\335\210\353\\f\256\014\214\331\256r\342\016O\025M\355\352\007\207mS\234c5FQ\232\251\"\363Qt5$L\t\301\351M\226\333\232\245-\276\017\"\253I\005F#\2441S\032.j\'\213\332\253\274X5ZD\305Vu\250Y)\245i<\260i\246!\351H#\307j\221@5*\305\221\322\242\221\n\236)\270&\236\253\236\265\"\302\t\251\226\020\275\351\330\024\206@)\204\356\2464\033\307Nj[pq\203\332\257\302\230\253\360.qW\242J\275\004u\245o\035i\333G\310\255{X\372V\254)\300\253\261\'J\273\014uv$\253\321G\200*\354}*\302\032\262\234\342\245\'\ni\211\311\251\320U\270c\310\255\013e\n9\253Ot\220&I\256wU\326\301$\003\305i\021\355QHv\212\305\324\246<\363X\2236sL\265\313\313\307\255j\\\200!\301\364\256CS\200nb+\002\342\016zU9!\305Q\270L\003YW\000\344\325GZ\204\307\272\230\366\274Ur\205\032\255\306<\330\360z\324\023AT\345\203\025\\\305\203Jc\310\250]1P\272\324\022&j\254\251U^<\232\211\2424\321\016M/\223\212C\027\265#E\351J\220`\346\245~\007\025\003\014\3474\201A\247\000\253\326\236\256\007J\032QP4\244\236)S&\254\305\037\255K\262\227\312\303\002\005]\267]\325\243\004x\305_\206>\225~\010\353J\332>\225\251m\027J\325\265\217\002\264\241L\342\264!\217\245]\211*\344+\203\322\255/\025f3V\023\255]\267N9\242V\031\305$b\254\302\233\230\n\275\275bST\356u\244\207 \036k\"\357]iA\371\270\254\207\270k\247\300\351^\200\334T\023\014\212\302\324\0279\254\211\206T\325;Y\374\253\201\365\255+\313\240\3109\355X7\2046k\"\342,\232\317\271\213\031\254\273\204%MeL\204\223\305Wx\211\355Q\024\307Zk\034\216*\273BX\364\251 \213k\n\263,\001\205S\232\014\366\252\222[\325f\210\212\211\343&\2411z\324\022GU\244\216\253\264\\\324f:aJLb\232E&3Mw\333\322\241g&\2234\322\376\224\207=I\246\357\307Jir\324\344\004\325\210\227\025i\006j`\270\024\346R@\253\326\361\025q\221\332\265!\217\212\273\022U\350\022\264\355\223\247\025\251l\235+R\004\340V\214\013\322\257\305\200*\304G&\256\304sV\200\351S\306*\324k\315]O\221*\022w5O\032\346\255\303\204\035*\275\357\2312\220\274\n\346u\017\335d\026\311\254\2375\246}\271\342\265\254\341\n\242\275\t\327\216j\274\300`\232\347\365\"7\034V4\207\250\254\347R%\310\245\236B03U%\344U9#$\325+\210\262\rd\334\302A<U\tc\000\325w\214\036\325Y\342\250\305\256{T\313g\221\322\232\366\333\017JU^9\246\313n\010\310\252r\333w\305T\222\037j\253$X\250\035*\274\211UdNj\022\225\013\305Q\024\246\025\2460\3053\006\221\3235\021\216\230Tf\224G\236\325\034\221\234\324d\021@\344\325\210\322\247T\251\227\212\231~b\005_Km\312\244v\253p\214\234\021\203W\355\322\257C\035_\202>\225\243n\230\255\033q\322\264\255\372V\204&\256\3043W!J\277\nT\340b\246\214b\257@\235\315I#\205\030\024\310\271<\325\264`\000\251\343\351L\271R\352@<W!\254Db\221\263Y\266*\014\204\326\344g\n+\273\232`\213\223YWw\304\251\002\261.\244.y\254\331s\232\217g\004\342\252M\227|\324f:\212Hj\244\320\325\t\355\263\332\263\347\260\335\332\251=\231^\325\030\263\317Zx\264\013\332\234\266\376\325\014\320\347\265Sx\212\032r\234\216E6H\003\014\212\316\236\014\023T\244\217\256EU\226<Ui#\252\357\025@\351\203P\262\324.\2315\033G\315F\321\323LT\236]D\353\216\324\213\016\343\322\246H0:P\361\001\324T-\002\223\322\243\362\006zT\211\035YH\370\243g5,HCsZ\326\334\212\266\221\347\232\273o\021\355Zv\320\372\212\273\032b\256\300\235+F\010\363\212\320\206<c\212\275\002\325\370W\245_\201p*\354+\220*S\306*XFM\\C\201\327\212\215\337\232|g\212\235_\037Z\224M\214sV\025\267/5\307\370\226`\2635fi\247q\315k\251\300\256\326\364\361\214V\\\261\3475J\342\016\017\025\0040+1\014).-\320&\024Vs\333\014\361L6\274TRE\212\316\225w1\250d\213\"\252\274^\325Z[p{U\177\263b\221\241\3050\307Q\311\020\305S\232*\205c\245\331\212\253s\001\344\343\212\315\232\032\251,5U\341\252\362E\216\325U\342\346\241h\252#\036j&\217\024\337/&\217(\032O\'5\033A\223OX\000\035)J\340p*\t\025\217j\213\006\235\2634\345\216\246U S\225=\252d\217\025f\006\332\325\253\010\016\005]\201\002\340\346\264a \2605z3\270\201Z\020E\323\212\320\2011W\342\034U\330\027=E_\206:\277\022\014U\200\333qN\r\232\261\027\002\244i0)\213\2275:\220\243\255!\234g\002\234\262d\325\364p\261g\332\274\373\304\327\233\356\230\003\337\025&\222\270\214\032\324\335\201^\203u\006\345\254\251\220\253c\025\033[oZ\256\366\376Y&\252\3123U\314\\\323\036<\n\245p\234\034Vd\213\2065\033.EV\2219\250^<\212\207\313\3155\242\250\236*\205\343\342\252\315\006j\017$\203A\212\231$[\220\212\314\270\213\007\245Q\226\"\rT\221*\254\211\232\257$DT-\036GJ\201\241\301\246<Y\246y^\324\242*Q\036i<\220)\246?JiB)\217\020\"\240h9\243\313\247\254x\247\343\332\234\243\0250^)\006Q\205i\331\313\221\212\275\0319\353ZV\314N+V\331s\365\255[h\216\006kN\010\272U\370m\211\253\260\301\212\263\022\340\325\305`\242\225N\343S\3061\212\233xQH\244\271\366\247\2311\300\246\263\034SQ\262j\304G,\005K\250\334\375\236\321\317\240\2571\275\2727Z\207\'\275t\226\003lKV\235\370\257St\310\305S\226\330\022MUx\266\346\251\314\271\006\251<Y\250\332,Uy\023\002\263\356T\214\326t\211\223Q\024\250dJ\201\222\242+\201L+\232B\231\2464<Uw\202\240h*\'\217\002\241#\035j\245\325\270q\220+:Xq\301\252\222\333\372U7\207\223\305W\222\032\201\242\305F\321\323\014\\SL<Ry|S\n`\323v\022i|\254\323$@*\002\231\2462\232hZ\024\032p\031\251\022:\234\'\024y;\215\\\266\213eh@\2315\253k\027J\326\201q\212\327\265#\002\265 \350\t\034U\350\207<U\265\344T\200\343\025(9\251\222\247\007\002\201\2265)`\274f\233\270S]\213\nT\342\254B\330aU<K?\227d\343=\253\316\354\301\226\370\237z\353-\316\324\002\236\362q^\304c\340\232\2557CY\323\276\rT\177\230\324O\035D\321dU)\220\203\355T\346\2135\237,8&\253\274x\252\322%BS\232G\217\212\204\307\311\244\362\30144x\025\013%B\361\325y#\252S/5\020\364=*\235\324=qT]1PI\0305^HsU\244\207\025Y\343\3054GMx\350\021dTo\0253g4\244\014T&\"\306\232b\307jF\267\014*1m\223\322\244\373\'\035)\005\267=*U\267#\265?\311\"\225\027\0168\253\022\002\000\305hX\256G5\253n\274\326\244\030\300\255\013sZ\226\217\221\203ZQ0\307\025b2j|c\024\365j\231\\\001O\017A\227\024\320\344\367\251\024\323\305*\365\2530p\300\232\303\361d\377\000\350\2543\326\271M\036\334\227.}k\242S\265i\222I\305{\214\313\201\355Tf\\\203TZ\330\312\307\322\242\222\323g#\245B\311\333\025\023G\305T\236,\325\031\"\317\326\251\315\016\t\310\252r\306*\263\303\232\217\310\0305\033\305P\274u\037\226i\031}j&\030\250\331sU\246\\\n\242\351\271\2529\"\305F\361\007\\U\031\255\261\236*\224\260\025\250\0362*\254\251U\231\t=)\004t\326\212\220GM1d\364\250\332\014\036\224\317\'\232_#\035\251\206\014\232C\016)\313\016;S\304Y\251V\337\245<[\324o\027j`\203\006\246D\316\001\253\326\340(\342\257@\374\326\225\271\311\025\247n+F\016\rh\302sW \353S1\346\221I\251\320\014sJ\322\001\300\244\311jz\212\231*P2(\003\232\265\n\355R\306\271O\023\311\346\270A\3275Z\306\330C\030\342\2553b\253\313%{\364\203p#\025Jh\360:REm\2662\306\241t\007 \212\241<[\033\332\240#5^d\340\326l\347kUY\335XVt\274\232\205\2054\257\024\307\300\025\003\251=\251\236_\2555\320\n\205\325}*&LT\022\302XU)\"\301\250$Z\256\303a\317jl\256\244r*\253$r\034Uy\25508\2523A\216\325M\243\346\233\263\024\030\351\273(\n\0055\320\212h\217\'\245?\312\004t\246\371#\322\232\320sA\213\002\220&*E^jP\234Tm\016M0\306E7\033MY\204\346\256FpsZ\226l\016+^\337\240\253\261\036kF\334p*\374gh\247\026\311\247\242\223SllR\004&\236\253R\252\323\324`\324\312x\247D\233\332\226\372\345m-\3131\300\002\270\362\306\366\351\244=3\305\\\332\025j\t_\025NY:\327\321l1Q6\017Zk\020EV\231\007QTn\327r\361Y\341\271\250\245\3475\237w\036A5\225\"\035\325\013\307Q2b\232W\265W\222>i\245\016*7 qP\236M!Z\211\322\232\303+U$\217$\3259\343\346\253:dUi#\315Vx0sM\335\216*\275\307\315T\036,\265\'\225M1\342\230W\024\302\274\323\302\356\030\247\254 u\305!P\275\252&\036\224\300\255\232\177\226Z\217 \323\204X\355R\242f\235\345\324O\030\250\274\202\355\305hZX\372\212\261%\221#\345\247\333\306\360\343\"\265\255e\316\005mZ\307\225\004\326\204k\212\230\032r\234\232\263\022\346\254(\245\013\315(^i\312*EJ\224-N\n\333\304Y\215r:\356\252o\'\362\220\374\243\212KH\274\270\305>V\300\2523=T\221\353\351R2\265\003\n\211\352\031:UY\027\"\262\347B\216qU\235\252\264\247p\252rE\223\232\257$X\252\362-VpEFy4\245F*\254\350j%\031\244\"\202\274Uy8\351U\244\340\364\250f\217p\315Sd\306j\273\255W\220pj\253\2569\252\362sP\025\246\340Pc\342\242x\363Q\030\351\270\"\227\223\336\200\t\357R\"/z\n.p*h\342\315H\321\252\255D\313B\2559\206\321U%\223-\212\275a\006\341\222+IT(\300\251\241\031#5u`W\035*hl@l\212\324\201\n\200*\334b\246U\315<&*x\315X^i\342\227\024\364\\\324\310\225<Q\345\262z\n\307\361\026\242!\205\221O5\312YFe\224\310\336\265\254\033\013PM%R\225\352\244\257_M\257+Q\270\357Q:\344TE3QI\027\312Mf\317\026X\325\013\230{\212\244\311Q:\325iV\252H\265^A\305T|\203J\t\3051\206\356*=\241M!Nhe\340\324\r\020&\240\236 G\025_g\006\252L\274\325I\023\232\253\"\363U\247\\\014\n\250T\346\232R\233\345\214\322\225\030\250\212sLt\250\366\342\203\026zS<\262\206\234G\031\024\304\310j\264\206\234X\236)6\212\221c\3152h\370\252\321\332\227\223\245k\303\030\2121\212\225Fj\334)\305\\\205qW\"lU\250\234\325\270\316EN\242\245Q\232x\030\247\253b\244W\251S\346\253\021\245XT\247O\"\333\302I\364\256\017Y\2727W%A\3434\353h\374\264\025+>\005U\232J\245+\325Y\036\276\237\211\3621N<\212f\332\215\261\232c\214\214U)\342\352k6\344\016k=\323\232\202E\300\252\222\325g\036\265\004\200\036\225RE\301\250\363\223N\t\336\243u\311\241R\226H\276Z\213\312\312\325y\027oZ\254\352\0005Fe\346\252:\363Q\030\273\325Ib\313Uw\213\232\210\305Hc\342\232\313\216*2\274\3224y\250\314$Rl\"\206\\\212\217n\0161\3055\243\347\"\234\271\024\361\232\221jX\305,\213\221D\013\203\232\262\274\232\235\0235n\010O\341W\343@\005N\252\017J\2361\355V\243\315Y\216\254(\247\343\345\246\201R\304\225r(\267t\025n86\214\232e\305\302\333!c\332\271]k_2\202\250p+\032\325\014\217\275\273\325\360v\212\206Ij\234\262\325I$\252\316\371\257\250a|U\220\271\002\224\305P\313\031\007\212\213a\357U\256\027\031\025\223t\2705A\333\234Ui\252\243\216j\264\342\253\212\257*\346\240\010wT\3418\246\262f\232\006\016)\3542\264\302\237\'\025Rx\370\252r!\305T\222<\325Yc\250\200\002\232\360\007\344Uim\361\332\253\264X\250\2311P\262\346\243#\006\203\300\3157w\265\030\006\232R\220E\236\324\341nOjSm\216\324\236V(\331\212r\203JsOE\2531-Z\215q\212\262\016\0279\2536\3409\373\325r4\332x9\025:\361\332\246F\253\0216j\324})wv\240\r\315V\241Z\275\033,k\232sM\205\311\254]gS\215\020\241nH\256,\223spq\367sZp\250E\024\347n*\234\257\326\252J\365VF\315Wc_P\333\275_\201\2676*\303.\026\240\316sQ\311\323\212\2478\310\254\273\264\316k2X\260j\274\261\232\251\"\342\251\315\235\325]\210\006\232\300\023L*\001\351E4\322\020\r!\006\234\243\"\253\\%S\2310*\243\255W\221}\252\263\305\3153\004R\200\030|\324\307\266SU\336\320\036\206\251\313\006\322EE\366ni\216\233x\305G\267\332\234#\245\021{S\326\017J\220E\266\206\\\324f:i\216\223\3134\010\363R,u2.*t8\342\247A\232\231S\322\254G#\307\336\247I\331\217\265Y\215\315Z\213\255Z\017\265i\233\31154F\256D\325)\230wlb\252\336_*D\3047A\\6\245y%\325\301\000\236MY\262\267\330\240\232\270x\025\014\217\305S\225\372\325I\036\253\310\365]\236\276\245\265\001\216;\326\275\255\270^M-\326\024qU#<\322\310\274UIW\"\263\256W \325\027\217#\245@\361qT\247\207\031\342\250O\016F{\325)\"\357Q\200i\010\246\023IJ\022\227a\315<DqPL\225U\343\315U\226\032\257$\'\322\240h\252\027\206\230c\307jc\014TL0*\244\253\223M\021\346\232\360g\265Dm\361\316)\313\017\265<A\203O\020\342\232\311\212i\000\236h1\361I\345\323LT\242:p\216\234\251\212\221\005N\213V\023\212\230sR\240\251\342\352*\344})\356\324\253\3235f\025\342\254y\201ET\272\270\371I\007\240\256J\362\376ied\334qRX\333/V\344\326\220@\243\212\212V\305R\232LU)f\252r\317U\236bM@\322\232\372\276\000c\270\307\275o\304\001@j\033\254\032\254\027\024\270\310\252\363-g\314\233\211\252rG\203P2g\265W\226,\212\247,\030\252R\301\223\322\253\233|v\250\236,\017z\215-Kv\245\3731\317J\221m\317\245<[\373S\314\031\025Zh0\rRx\261P\274C5\013\303\236\325ZHqP4U\013\305Q\230\252\'\203\212\253$84\325\217\232{Dq\322\243\331\317Jr\303\336\234b\310\351M*\026\242\220g\245Fc\346\221\205=W\"\223fMI\345\001I\266\214{S\225qR\251\301\251T\324\313\322\246N\265b>\242\255\241\300\245\0371\2517\000jE\220\372\361L\226\343nGz\243;3\0023\301\254\351\264\263\"o\217\357\372Ut\221\255\237d\203\004U\350\356\003\257ZI\030\021\223T\346e\306\rTdS\036GZ\256\326\361\270<\363P\010\241\214\234\234\232\205m\320\271,\303\025\365|p3M\234w\255`\214\221\363U\233.\324\241;SJ\342\240\224pj\214\243\004\232\253\"\344\324\014\2305\034\261\014f\251\315\0275T\303\223\322\217\263\006\355Q5\220\317J>\314\024t\246\213aN\026\303\322\227\354\374\036*\031##\240\252\322FNsT\344\213\255@`\366\2464>\325^H*\263\301\216\325\013A\236\324\306\267>\225\033C\355P\265\266\343\322\243\373)\035\251\337g\2465\2679\3057\312\301\245l*\364\252\2162i\23309\2462\223\364\250\334`S\220ejD\\\014\320M!S\326\212)\300\324\250jx\352\302\n\260\212ju8\024n \322\206$\323\374\315\265Q\245-!$\367\244g\315\"M\260\361TuT\023\215\353\326\263\240\271h\316\323WRm\302\243\231C\203TfV\307\007\212\246\312\312O=j\264\210s\232\205\213\000y\257\266R\331#9\3075\035\303\002\010\025X\000\275z\323X\223\320Rb\253\316+>n\rC\214\323\036:\211\227\"\240hKTOk\337\024,\030\355L\226,t\025\001\204\223J!\307Zi\3004\354\0028\025\023\302s\232\255,%\217J\253-\261\035\252\023\006{Too\307J\255$<Uv\2075\021\267\346\217#=\251\215m\355Q\0301\324SV\025f\246\315\n\216\225U\224\001P:\372T,\204\323\014X\024\306N2j\t8\250[\232tc\345\251\025i\305\007jc)\246\367\242\234\2435*\n\261\030\251\322\255G\322\236\016)Y\205\"\261&\243\272\227bqU\026J\003\232G\223\025\013>\352\243y\016#\336\274\021Q\332\317\274u\344U\242\341\207\275W~\2705Z@9\252\262.*\007Q_gK1\316*6#\0315\031~i\233\362i\035\2603Uf|\232\2457$\324K\326\234\313Q2S\243\207#\221J\320\202:S~\313\355Q\313m\201\315A\366lv\250\336\003\236\225\017\330\232F\310\025:Z\004P1\315+\332\344t\250\032\320)\316*\254\266\345\217J\205\355\266\366\252\362A\355Uf\267\366\252\255o\315\002\330c\2455\240\307J\205\342\307Z\2538\333\320U`0I\246\311\315Wd\315F\321`sQ0\301\340TN\274\344\324\017U\334f\230P\001B\016\325\"\214S\261H\303\"\240a\203E={T\212qVb\346\254 \251\224\342\235\273\336\232\016MH8\025^\344\215\207q\305VVQH\322\001P<\205\270\250w\025j\235\"\373J\262\237J\307\270\211\254\2561\330\325\270\337r\202\r\017\353\351Ud\034\325w\252\322\003\236+\354\327LT\017Q3b\233\277\232I\033\"\2539\353U\244\025\032\203\232\223\034Sv\325\250\242\033jO$\034T\236R\205\004\n\2514`\234\342\252\260\246\210\267\034\323\304a\0050&\343N\021\322\230\203\014\021U\344\266\003\265C%\236\364\310\353Y\223\300T\221\212\256\321d`\212\200\333\363L1`\3242&\016*\274\340\021\305Q\2253U\332:a\212\243x\373\001P<x\353P\276\005V\220\346\253\270\250\331q\326\241q\232`m\246\247\034\214\321\232\031\263P\270\315 \024\360)\303\255M\023b\254\243\202*P\334R\027\311\3059Z\2442\000\265\223\251NY\360\017\025U%oZ\2247\255\033\261Q\006\335 \025j\t|\251A\252\332\334f_\234\016\005U\262\223)\217J\260\365ZA\232\255 \252\357_gJx\342\251\271\305@\315L\335\315!l\324m\315@\342\230\027\275H\027\2126\324\2508\251\220\340\363Ns\305C&\000\346\253\030\367\032xM\243\336\230P\277\322\236\261`R\230\370\241b\246I\026EA\202\231\252\263\302$\347\034\325\023\tW\301\025\024\366\340\036\005Tx\212\202j\214\271$\325gL\324-\026MF\320\324N\200\003\353U\234`qU%\252\317\315B\302\2431\343\223P\312\271<T\016\206\241a\203O\216\\qO,\017Ji\246\322)\311\247\344R\203\212\2219\251\2235&\374\n\003qO\rP\3136\321\214\326e\324\273\232\233\031\315J\017\024\307j-\243,K\366\0253R\337J\005\2418\311\305a\351\363\2370\203Z\207\221P\310*\254\202\253\272\327\331\005\362*\274\206\253\275F\005%\030\315F\351LU\251Q2)D|\323\266\323\202\232\221W5\014\321\222i\022#\216\224\246,\323\3048\024ytyy4\361\026\005G\"\201\306*\263\307\315W\222?j\253\"\002zUy\023\0315B\344\026\'\212\2414[~\246\240h\2526@3\232\256\3500sU\245QT\344\034\325I\252\003\021\306\177\235&\000\3543PJ\334\342\240`j\027\031\250]sP\260\301\247\306\334\323\363McM^\264\3409\247\036)\361\036j\300\340R\203\201\357M\337J\222d\232\253>I$U\026\313=H\243\002\244\035)\222t\2530ql\007\2550\2659\343\363-\310\256o\230/1\357[h\333\220TRUw\025\003\327\327\241\363Mnj2\264\306\\SqN\013\232k%4ER*b\236\0234\005\247\204\311\366\251\0262\0057\312\311\247\254\030\024\236V\r#-&\314\323\322*VL\n\2470\3475]\375\252\t\016\005U\224\344f\253?|\325YS\275R\2252j\273\256*\273\214U9\217Z\247#Uw\346\253J\274\346\240\224\261\342\242\331\305FR\242u\250]j\027Z\210\307\232M\230\2444\231\315 8\251R\225\371\241\016*\312\267\002\202\331\246\223MC\203R`~uJx66EF\006i\300P\353\221R\331\270*c?\2059\342!\272T\207\344\217\232\345u\'\002\377\000\217Z\327\2669\210P\342\253\270\252\3569\257\256V\237\2126\323$N*0\234\324\311\036iLT\276M\'\227N\362\361@\213\234\324\251\025+\032UNjB\274S\0318\246\024\3074*f\246H\360*9\227\212\247*\325)\001C\305V\220\361U\\\021\315A(;j\244\204\325w \347\216j\264\247\031\2522\232\251)\252\2563P:\236\325\014\213\264d\365\252\354\2715\023\361L\0035\024\234\n\255!\250\\\3233\315!\3051\210\025\037V\342\224\361O\007\201N\310\301\244\007\025\"\276)\333\251\001\311\247\001\315:\231\"\357\252\357\013\'=\251\026\236W\212\210\251\007\"\246[\246\003\004f\202\346^+\231\324\223m\3663\336\266m\007\356\227\351O\220Ui\005W\220W\327@S\260i\312\271\024\024\342\220C\315K\034U0\213\035\251\336P\364\246\2309\246<X\251\022\036\006hu\300\300\246$$\232~\334\032p^)\nz\323\n\322\001\203V\021r\265\004\253T\245\035j\254\213\232\247s\204\030\025\2315\306\322y\252\357rXu\250\014\200u\351P\310U\201\332j\234\234\234Uk\201\221\201\320U6\031\250\035sQ\272\343\212\255*sP2\342\240u\246\036\005A/J\247!\346\241c\232i8\240d\324l)\"\031jYW\024\300qO\317\024\224\345j\221Z\236\005<\nq_\226\220.)veMU\331\203N\0034\025\246\025\305>!\303\037A\\\315\351\363/s\357[v\243\021\001Nq\305V\220Uy\005}q\013\006Q\353R\201OE\247\205\315H\221\324\321\240\002\237\264\032Q\036()G\224\r\002>i\255\026\346\247\244T\217\0074\242,\no\223\232\0144\202\000\0175&\300\023\201Uf^\rR\225sU\'\033\006{\326=\365\306\300Gz\305\232B\306\230\217\270\342\235\"n\\Uq\023+SfL\017qT\2465I\371lS\034mZ\254\365\023\214\324.;\324\022\014Ui\rU\225\252\253\232\256\357L\017\223S\203\201Q9\311\241X!\247HC.j\005\344\324\203\245%\003\232\231\005J\2435\"\216)\3523N\331\2326b\252\312\010\'\216)\213\326\236W\212k-<\201\025\244\217\355\\\241\375\345\347\343[\360\014 \241\305W\220UiE}a\021\3323V\242`\342\254\"\324\210\27052-<.x\251\002b\235\262\200\224\341\0352B\000\367\244A\237\255N\221\323\314`\216\224\236I4\215\036\007Jh\216\227\313\024\322\200U)\323\031\252\315\027sY\227\331\000\342\271\353\303\363sY\222\202\347\002\233\024D5]H3\311\250\345\217\214\201\322\263\356\037\004\3257\001\201\365\252R/\226\331\246Hr\265Q\316\rF\307\025\013\260\034\325I\237\255T\221\372\325I$\252\322=@\346\231\270\203\305?q#&\220\277\2457~O4\374\361H\274sO\316x\242\220}\352\260\235*U\353R\252\361OQ\212\220-?m\006\020\352F*\213\305\345\312E8\257\024\315\2318\246j\315\344\330\021\353\\\316\236\236e\306k\240D\302\323d\025^J\253%}_\037\335\002\244\217(\302\264b\033\224\032\231\026\245\013\201OU\301\247\205\247\201\201JF)\013\201\336\242r\035\200\024D>n\265i\005N\253\232\224 \305\r\010#\221P4;M!J\206L\n\251\"n\346\252Lk:h|\314\237J\310\271\261\363\244\300\351U\245\323\204}\005W6\301\017JRB\251\252\3228\000\326&\241.\t\305g}\250\347\255#\310\034sP\277\003\203Udb\r@\357U\345\227\212\251$\231\252\262>j\263\232\256\355\212\205\236\242-\316E8I\3074\3230\024\3230\025$2\0313S`b\233\273\232\221A4\241~j\263\032\346\245\013\212\221\005H\243\232\225\026\244\333NU\252w1\021.i\241ic\213-\232\317\361\021\305\260Z\307\322c\344\234V\332\216*9\005U\224UW\025\365|C\345\025*\214\325\353f\371@5r5\315N\251N\tN\333\216\224\247\345\031\250\032NsL\00414\233jx\0275az\324\241\252\344\021\344S\335\000\025\003\256j\t8\025^@\000\346\251\314\334qT\'$\232\2451<\212\257\225RsU\256\034\023Y\267\017\202j\243\275S\232N\rd\336\374\300\326\035\314\206&\251a\225YG\275>@;UYXt\252Rw\301\252s1S\315S\222J\257$\325ZI\352\273\313\232\205\244\246\t9\247\2113M,*7j\226\336L\032\262_\"\204\031j\274\2106f\201\036*x\227\212\224\216)\310\271\251\221j`\234S\266\323\224b\241\270\210\263g\2650F1\322\244\216\034)5\315k\322\231&(\017\002\2156\337lc\212\321\333\201PJ\005U\222\252\311_YF\274T\221\360\325b\036\034V\234\013\270f\254*\342\235\264\032xN*\033\236\000\003\275V+\270\324\220C\226\347\245H\360\200\331\355OE\000qN^\2652/5\243\007\013\355O|b\252\277z\2473sPH\246@Eg\260`\307\'\245W\232M\300\340`\325\t\006\320Mg\317&\033\223U%\227=\353>w\3115RG\342\252L\325\235vN\rs\267\357\311\311\246\330L\035qVe\233o\004\361T\345\234\023U\244\227\323\245U\222@\374\032\202H\211\025Jd#5FL\202j\0268\025\003\277\2750I\357O\022R\227\250\335\351\366\317\226\346\256\251\315X\205y\253\240\035\242\244U\315N\251O\362\363R,x\025\"\256*U\024\360\264\241(\331\221\212`\207,\0057P\220Z@y\344\327 \352n\256I>\265\255\004;\020T\215\300\252\322\216*\244\243\025VN+\353\270\"\014\277\2050\256\032\247\205y\255+s\201\322\246/\223ONjU\\\3247\003$\n\2164\344\017Z\263\267b\361L<\212p_\226\234\242\247E\342\255\302H\\S\234\346\253\312j\224\207s\023H\000 \372\326|\321\376\360\346\251\334\021\316*\204\337v\262/\030n\342\250\310\365JV$\325f>\265\014\2046j\205\322eMs:\234$\022EeE;C\'\025jK\35719\034\32531f\306ie\220\005\306j\214\263\020x5\021\274e\352i\215u\274r*\244\254\rBW\"\253I\031\315W`T\320\262S\203\323X\346\245\200\022EhE\326\264-\343\334Eh\254C\035)Bm\355R \366\251\027\351R\016i\352\225\"\245H\027\024\273E(\\\324\201DHY\253\231\326\257\276\321)E<\n\202\312\323\003q\034\232\275\263\002\242z\255%U\222\252\313_`\306\230@E\t\016\342ML\261m\251\221\212\324\201\363V\242*\027\2558\312\005Fr\3074\350\323\346\315L\304`\323\021h<\234S\224sVPqS\'\024\326j\257+\366\252\262\032\205\244\333\306x5ZW\316qY\327.9\025\233q/j\314\2709\346\251Jj\224\307\004\232\2454\300\016\265E\3569<\324\023Lv\232\310\275\231\030\020G5\217\265<\323\351E\302\250N8\254\331d\020\234\346\252\313u\236\206\253=\306\017Z\212K\235\325\017\332\0055\247\rL3c\275 \2349\344\322O\027\313\221T\317\006\236\274\323\200\311\253\366\321\201\036j\355\265\271|\034V\275\265\266\321\315X\013\201N\013\232r\256O\002\244U\247\252\347\212\235\000\305<S\216):\232\232$\301\311\351Tu\253\261\034%A\344\3275\004\006iw\036\225\253\034AT\n\034Uy*\254\225VNj\254\235k\354\270\320yt\210\2705(\\\323\302Q\263\024\354\020)T\325\204\306\332\221@\002\203\311\240\214RT\221\255N\202\236N\321U\344\227\002\252\2312\335j\031\0335\003e\217\265T\236M\231\002\262\347\227\336\263n%\311\252R\266j\254\344*\326]\315\300\031\025\221q9\311\346\250IpA\340\323M\313\021\203Y\327YsT\035\002\234\346\253\31778\'\212\315\273\031\034\034\326y$\032\2573\034\361P\031\010\353P\274\234\320\257\307Z\212Y\210\3434\310\335\263\232\273\035\306W\rLh\267\034\212U\214\203R\010\316E^\267\\\341Em\332F\021\006j\320|S\225\267t\251\200\340\n\225T\366\251V\022\307\232_+kS\302\342\226\220\223\232\226$\344\023Ks\'\227\0315\314\336\312\3273\021V-m\302(\342\254\036\005C!\252\322\032\251!\252\262\032\255%}\235\032\356l\n\225S\r\322\236\022\236\022\227g\265\036]\002:\221F0)\304\222)a\034\363J\347\232@9\251\320T\243\201L\221\361T\247\226\251\264\23756Yv\255Dn\206\323\3175\233s6\342k.\342\\\032\317\232QT\245\270\002\252Or\031q\236k\032\351\311c\212\316}\362\266\320)\255\007\226\016z\324%\327\030\305W\235\227\006\261oe\303ak:x\2163\277\232\317\220\221\234\232\2534\270\357Ud\227\025N[\214f\252\275\327\275 \272\317zE\223{rj\302q\336\236I\355SAq\261\260E\\I\021\271\247\227^\325=\233\342J\331\205\363S\200MX\2019\253(\233\232\256\"\010\307L\221U&\2721\313\317\002\245K\270\344\035Fi\342E\'\255<\221\212\217\316U>\364\341)&\240\275\2371\355\254\350`\313\226=j\342\250\013Q\310j\264\215U\2445VCUd5]\315}\251\004{NML\007\036\346\236\250jEZv\312]\276\324m\366\250\317\006\216I\247&Fh\'&\234\242\246Zs6\005U\232^\265BisU\267\374\325R\356\353\031\252\3130a\326\243\220\361Yw\215\2675\211ws\2635\225%\337\230\345A4\203\246I\250$\300\311\2523\334\210\363\267\257\255g\315t[<\325f\233\336\250\335\335\354\007\236k\n\366\356E$\201Y\263j/\336\251\313z\355U\332r\325^Y\216j\224\363U6\234f\233\347\363SC5\\I}\352Q8\035\350Y75Z\215\317\025e\027u]\266]\214\t\255hI\030\364\253\321|\302\255B1V\241]\316*\352\340\036j\256\243j\034\002x\025E,\202\363\232xm\207\0252e\251\255\t-\232W\220D\235j\241&g\311\351R\201\264R\026\305A#Ui\032\253\310\325]\315U\224\325W5\366\341\343\212\221\005L9\305<-<\n\\Q\212\211\327\234\322c\002\202i)\350jU8\025\024\322`U\t\345\252RIPy\230j\241x\333\344\300\244\216\"\213\315E<\270\254\213\331\201\007\232\347\257\337$\201Y\221)\363jy\037h<\325\033\213\200\024\340\3265\335\320\004\363Y\263_*\344\346\251\315\251\341~Z\317\270\274\334\t-X\327\027\214\317\313dU;\213\215\300\3257\271 T_l\355P\315q\234sU\'\232\250\264\331cG\233\315Y\202@\306\254y\200S\322M\307\025z\332-\330\364\253h\2305n\036*\344n8\255+YA\\V\235\260\310\253@\200p*\304\007\016*\360\217\200{\324W\255\300\025P\266G\2654F\t\315I\271\"\\\346\252K|Y\260\202\223cH2\306\237\032\205\241\332\240g\250dz\254\357U\344z\256\357U\244j\255!\257\270\002\2265:&\005<)\006\244\024\341N\"\232)\255Q\223\305% 9\247)\305=\233\002\251\317/Z\317\232Z\250\362\324N\340\002I\250\241\002F,i\323J\021Mc^\334\200\016\rbOp$$f\263.\034\3621\315S\335\264\363\326\252\335]\005R\001\254\213\213\236\2715\201}}\272R\024\361Te\270\000\034\236k:\346\370(<\326U\316\245\214\363Y\322\3529\357U$\276\367\250$\277\317z\203\355Y=i%\270\001G5R[\234\367\252\255>\033\255!\270\343\255Mks\363\016kI%\030\253\020\020[5\251\024\212\027\002\247Y\005Y\216^*x\230\273\001[\2261\000\203=kE$\0100*H\337\'5v\006\344V\222\r\312\rg^\316\014\207\320Vt\267Lx^\224\213r\370\305)fu\344\323\240\214\006\253.v\n\217}G$\225Y\336\241y*\264\217P;\325wz\201\332\240v\257\272cCS\252c\255H\0234\365@h\331\203K\266\230E1\206EB\334\032Bx\244\034S\201\250\245\227\000\325\t\345\252\023IU\331\363P\273\357`;\n_=b^*\215\355\330\333\220k\236\277\273c\320\326a\221\213\022MV\270\270\000\034\036k6i\270<\326M\345\346\001\3075\221sr\356\017j\304\272\220!\'<\326M\336\243\267<\326%\336\242Ny\254\271\257K\036\265Y\256w\036\265\014\323\355\037z\253\031\311=i>\320W\234\324R^\037Z\204\334\363\326\230\323\347\275F&\251\241\270*\300\326\204W\204\201Z\026\323\222*\354R\234u\253\021\334\036\231\253\220\312Oz\324\323\3344\234\326\374\022\341EJ$\346\254D\376\365r\031j\361\275)\t\307\245d\313.\365bM@\204T\253\212y`)c\223\rO\226L\324%\370\250^Z\201\344\250\036J\256\357P\263\325wz\205\336\240w\257\275#A\212\225s\320\324\3528\247\355\244+M \n\215\216)\214\365\004\244T`\346\214\323^@\242\251\3175P\232nMR\222Z\202I\260\247\232\243svP\020\265FMD\205 \232\241s|\314\017<VT\367j\t\3475Fk\323\353T&\271\311\353Y\367\367\236Tg\236k\r\357\201\311&\262u\rX\000B\232\347\257u\"s\315a\335_\026\'\232\314\236\3539\346\250IpI\353M\022\234\344\232\212y\262*\025\2274\254\374UI$\301\250ZSQ\371\247=jE\2235b6\316+F\333\265i[\266\332\270$\310\251bm\306\257\333\236kR\315\266\267\025\267\004\271Z\231d\346\254\305.\000\253QJ\001\253\036`pW5BY6\243\003\3275\032IR\254\274u\2453d\320%\245i\263\336\243ip\265\003\313\315B\322T/%Wy*\027\222\241y*\026z\211\232\276\372J\231jPi\340\323Y\300\250\232Lt\250^Z\205\345\250\232L\324B]\246\225\247\030\353U\244\237\255S\232~\274\325\t\246\252sM\216\365N\342\343\345\353Y\3677\'\034\032\313\236|\223\223Tg\234\343\031\254\351\345\353Y\327\027\030\357T\232\347\223\315c\352\267\274m\315aO3\260<\220+&\355\260\016Mb]\311\327\232\310\270\223\223Y\363IT\336\\w\250\376\323\305F\323\346\220K\264SZ\340\036\365\014\222\203U\336Ni\004\231\251\021\252\334O\214U\373yj\364S\325\224\233\336\255C(\255\013ikF\332\343\004V\304\027\037-X\022\324\361K\223V\243\227\035jF\237\236\rV\271\220\344s\301\250\226Z\224MG\235\357J&\240\313Lij\027\226\241ij\'\226\240y*\026\222\242i*&z\214\276k\357\364\251\224\324\213CI\212\201\244\250^Z\257$\325\013MQ\264\330\250^Z\204\334\220qP\311q\357U%\237\336\251M5Q\236~\265\2375\316A\346\263\347\271\353\223Y\263\334c<\326u\305\327\275g\\]{\326|\367\031\357Uf\230F\275y\254-B\340\023\234\326T\327\300\002\005e]\\g$\232\303\275\272\000\232\310\236\353$\325\031\347\310\342\250\3111&\233\3655\033\311\216\364\303.{\323L\225\033\313\212\256\322\322,\334\325\210\246\253\2218\"\255B\3705q$\253\t5[\202l\326\225\264\340U\370d\311\310\255\033k\255\244\0065\241\034\333\207\006\255C%[Y:f\234\3161\221Q\310\373\220\216\365Qf\303`\324\236u!\232\2015/\237\357Li\252&\232\242ij\'\226\241ij&\222\2432Tl\371\244-_\240\213\305H\246\225\244\305D\362T\017-Vyj\007\227\336\241ij7\227\336\240y\261\336\253I-Vk\216\2435ZY\361\232\247,\376\365\237s?^k:{\234\003Y\227\027\030\'\232\316\270\2715\231qs\327\232\317\236\353\336\250\313pk>\352\354\363\315`j7\340df\260\2565\023\223\203Y\363\336\263g\232\316\234\263d\232\317\230\021T\346\223\002\251\274\265\t\234\212\215\247\250\215\306)\r\316*6\271\315D\322\346\221X\223Vb|U\330^\256F\365e$\251\322J\263\004\2075\247l\304\342\264\241\223h\346\256G&y\253\326\222r\006kR\'\301\253\002lw\2452\344f\231\346\3259\337l\271\365\245\363\270\246\231\250\363\250\363\251\2555F\323TFZ\215\245\250\232Z\215\244\246\031)\013\323w\327\350X\351J_\002\241yj\027\226\253I/\275@\362\325w\226\240y\361\336\241k\212\255%\307\275U\222\343\336\252Ks\203\326\253Ms\357T\346\272\254\371\356s\336\263nnz\363Y\223\334\373\326|\3679\357Y\227\023\362y\252R\314\000%\216+6\346\374d\200k*\356\363\203\315`\336]\006\'&\262\245\220\022j\253\221\234\346\253\3156\005g\3178\347\025\237,\241\263T\345\223\006\252K-@\322\324/!\250Zb;\323|\332r\311\223V#l\325\204\346\254\302H\253\3217\025e*\302U\273~\265\251n\274\003V\321\361V\242cW\355\230\202+E%\351\315M\347{\320\'\374\251\246lTS>\370\311\356*\005\237+\326\220\315I\347Q\347\323L\376\365\031\236\230\323S\014\264\326\222\243i)\236e\'\231F\372\375\r2b\242y\252\007\232\253\274\331\252\362M\317Z\202I\252\264\223\325i&\250\032j\257$\336\365VY\361T\247\270\367\252r]pFj\224\367]y\254\371\356z\326l\367\005\311\031\252\0272m\007\232\313\226\344\223\311\252\027w\251\030?75\207w\250\031I\000\361TZn\2475\233yq\327\232\306\272\270\353\232\316k\214\223QIq\216\365Rk\214\326e\324\276\206\263\332\344\2065\023\315\272\253\310\365\\\2774\036\225\004\225\036y\251R\254\304*\324c\025j sW#\025b<\212\261\031&\256A\234\326\204,\300U\270\315^\201\270\253Q\311\203V\343\233\"\244\363i\352\371\035y\246\274\271\353\326\231\346\365\025Qd\3014\031i\206jC54\315L3S|\337zO6\220\311L2Sw\322o\247o\257\320\207\227\035\352\274\223T\0177\275B\363Uy&\252\262MU\244\232\253K>;\325v\2375\014\262\344U\031\3566\236\265B{\2368<\325)%cUe\224\216\246\250\334N\000\353Y\263\334`\023Y\027\267\247\007\006\261no\230g\232\312\271\273.y5M\334u\315V\232|\014\n\312\273\270\003<\326=\304\333\215Ty\000\025RY\261\232\251,\365\237q>sTY\2715\013I\317Zc\276j\035\324\273\3150\234\3236\234\324\321\203V\342Z\271\022f\255\305\036*\334k\232\235#5e#\253Q\014U\350\216EY\213\217\245Y\214\342\254#\325\224o\226\237\346f\244I1C\311\315@\362`\324\r/\314M5\244\250\314\224\303-0\313M2\322y\264y\224y\224\205\351\246JO3\336\234\036\277@\345\237\035\352\253\317\223\326\240y\275\352\027\233\336\253\311?\275U\222|\325W\236\253\274\271\357MV\315E3\205\006\262n\246\3015\236\362njk\271D\315e\335\\\344\326t\323\365\346\263.n\307J\313\272\270\006\260\357\345\3018\254yg9\315B\327\034Ui\246\033z\326M\323\226&\250J\330\025Fi*\224\322U)e5NG$\324\022\266\005W-Mc\232a\351@\024\340\264\365_j\261\034uf8\352\344)W#QV\021*\314k\305H\006\rO\027\025r#V\3435f0*x\327&\254\343\000\nL\342\244F\247\270\004g\275U\227\255S\3632\315H\317Q\264\225\033IQ\231i\246ZO2\2172\235\346P^\232d\243}8>+\357\231\'\252\357=B\323{\3242O\212\251,\376\365Y\3561\326\253I>M@\363\373\323\243\270\001H\3175Z\342\343<f\250\\\220\3039\252d\252\234\346\251^^\014`\032\307\232|\347\232\316\273\272\332\0175\2115\347\314rj\205\305\336\356\365\233u(`k.Py\252r\022*\263\311T\247z\317\235\252\204\315Tfn\265Bi\0105\\\271&\242\220\026\250\212\221L\332h\333J\024\346\245D\315L\221U\210\343\002\254\305\035[\2121V\243LT\3521S\240\251U*x\324\n\260\202\247\215\261V\3429\253\220!cS\023\206\346\230\3074\350\315:G\305C!\371\t\254\322\373\\\323K\346\230^\242w\250\213\323\014\224\233\351w\323\204\224\031)7\322\207\240\313\201\212\373\312I\252\007\237\336\240{\212\255%\317\275U\222\343=\352\274\227\036\365]\356*\026\2334\303q\264\037Z\251qtW\247Z\317\236\365\217\031\252\023^\020\0175BK\235\331\346\251\313?\006\263o%\340\234\327?us\206<\326|\327X=j\244\227\033\252\273\311\221Ufl\203Y\362\311\202j\234\322g5Ff\2523=P\231\352\244\2475\001\034\322\021\3051\205FW\232P\224\365\216\247H\352d\212\246H\352x\323\025n!\322\255\"\034T\312\225f%\253\013\035M\034|T\253\035=W\232\263\027\025\247j\006\332I\017&\241-\316)U\361L\226\\S^O\334\234\326t\215\316i\245\251\214\325\023\232\205\233\025\031zM\364o\305;\314\243}\036e\036e5d\311\311\257\273\036\343\255@\363\325i.=\352\244\267\036\365VK\237z\201\356=\352\006\270\311\353Q\275\316;\324\rs\223U\247\234Vm\305\307Z\316\226|\223\317\025VY\361\236j\214\327X\315g_\\\374\247\232\347n\247\344\363Y\362\314MWy\210\357L3\202:\324m.j\215\3179\300\254\351_\034UY^\251N\325BSUd\'5\021&\233ASH\024\232z\307S$u:GS$u:G\355S,U*.*\334F\255F\233\272U\230\343\253(\230\251T\000jQ\216)\333i\3503W\255\233\024\255\336\243\"\220s\221\232\255p0:\324m!hqT\231\371\3053}!jc\034\324\016\334\324E\251\273\250\337F\3727\321\276\230\362c\275\010\371\257\271\246\233\025VK\212\253-\317\275T\222\343\336\252\311q\357U\336\343\336\241i\362i\217\'\025\037\233\264d\365\252\227\027<\032\314\232\343,j\204\323\340\236j\204\367=y\254\331\356\371<\326m\345\356V\262\345r\334\325I2MD\321\026\035j\264\244\306qQ\0318\252\363I\305gNy5RCUe\346\251\310*\273\256M7\313\366\243\313\245\021f\203\r9c\251\222:\260\221\324\311\035X\215*P\224\340\2252&j\355\262b\256\242\324\352\224\355\234\324\251\036i\3423\232z\241\315O\030 \324\204\363Q1\342\241y1Mr$R*\260FBG85Zx\312\234\212\255\273\006\202\324\302\325\024\215\232\205\2154\2657u\033\250\337LyqL\r\223R\006\305}\273,\371\006\250Kq\357U$\270\367\252\262\\{\325i\'\252\322\\\343\275Bn\300\357@\275P1\232\206{\260\007Z\315\270\276\000u\254\331\365\000;\325)/7\202sT..sY\322\310I\353U&9\004\3257j\201\333\232a\220\212\251r\333\305R\336rEW\270\223\025A\344$\324\016\325ZV\315Wa\232h\213&\237\345b\230c\366\241V\236\024\032r\3063S\244B\245X\300\251Q\005N\221\324\313\035H\221\325\210\342\036\225i\023\025f4\351V\025i\342<\324\212\273j@)\350\276\2652\2574\307\004\023Q\270\310\252\322qP\357\301\247n\312\363Q1\004\340\216*\215\314%\016GJ\253\277\007\006\202\325\023\032\214\365\250\311\246\226\246\227\246\031*=\305\21586)\341\363_iM?\025By\370\252R\334{\325W\270\367\252\362\\c\275T\222|\325w\271\307z\254o>l\223U\256u\036\0175\225=\361l\363U\036rGZ\200\\\2058\315A<\336\225JI\371\353P<\233\263\315Vv\250]\261Q3\201\232\2533\346\253uz\202\3421T\235\006N*\007\216\253\310\230\250\nP\026\235C-4-(Zz\214T\311R\255H\202\247AS\240\251\324U\210\261V\220\002*h\306j\300^)\353\305=FMH\213\315J\023&\244\362\310\346\211\006j\027^*\006\213&\253\311ns\305Fc+\326\232\313\236\265\013\r\303\006\263nc*\331\305B\033p\246\261\250\330\323\030\324,\365\023J)\233\363N\rF\354\322\206\257\261\345\270\353\315P\232\177z\2434\365RK\212\253%\305W\222\347\031\346\252Ms\220y\252\022\335\020:\325)n\t\3175U\346\367\252\362\334\205\035j\214\227\1777Zx\230:u\346\251\314\334\324\r6\332\214\315\232\216I2*\27395\033\234\212\254\371\352*\274\222\347\255Vv\250Y\252\027\346\242)\232]\231\243e)\024\314\nP*E\\\212\221\"\307\322\255Gn\010\353O\362\266\324\261\255L\243\006\245\003\245K\027\275Y\214\325\210\333\006\255!\334*U^)W\255L\265:\032\224\215\302\232R\243d\250\212b\241s\315@\340\032\205\3075\013\257\347Uf@\343\232\315\221|\267>\225\0336j65\014\216\024\036j\253\310Z\231\234\323\203`Rn\315.\352P\325\365\304\267\036\365Jk\214\367\252R\317\357U$\237\336\252\311=T\226\177z\2455\307^j\224\263\373\325In*\234\267X\357T\346\271\316y\252o?4\253xW\214\323\314\273\205C!5\026}\351\t\250\035\260i\205\263P\271\347\212\251*\345\216*\026\030\250_\025\013sL\301\035iI\244\334)3\232]\231\245\010jT\210\372\325\245@G\"\236\240\257J\262\024\262\362(\021\324\212\264\361R)\346\247\214\325\2045f&\305ZS\362\322\205\247\250\253(\270\\\232\267\010V\217\"\225\200\250]A\315C\"\361T\245^j\026\\TL*\031*\273\016\274U\013\264\301\315g\263`\342\242\222\\UVb\3074\322qL\'\024\233\251CR\3474\345\257\252e\270\252r\317\357T\245\237\336\252I=U\226z\251,\365Ji\352\224\327\036\365F[\217z\251$\376\365ZI\252\273\311Q\371\234\324\2119\025 \227p\246n\346\232\317Q3f\242c\203L\'\275G\216\t\252\223\032\200\232ajc\034\324l:\322`\232z/5!%E3\314\346\245Ij\302J\017z\235Xu\251\222b\275zT\273\263\310\351O\0074\341\203\332\236\242\245S\212\231[\0254o\315\\\211\263VB\340R\257\336\025nb\014k\212\226\321\200\\S\344\305Ws\203P;dUy9\250\236\253\311\305B\374\325y2:U9\237\177\007\255g\334&2j\223\214\346\241c\3151\232\230Z\233\234\321\234R\206\251\025\253\377\331"
+byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\001NIDATx^\355\3351\016\200 \024DA\362\275\377\225\211\375VFE!\314\224\357\006l\002\264\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\277\251\014\223\350\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200\313\216\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020=\003\260\222\312\000\000\000\000\000\300\352L\277\000\000\000\000\000\000\000\260-\227>\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000`^\276\023\000\000\000`+\016\302\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\357\351\031\000\000\000\000\266g1\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\340\013\336\307\007\000\000\000\270\2512\000\000\000\0000\206!\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000`-\225\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000x\352\004b\"\006\010O\232\021\276\000\000\000\000IEND\256B`\202"
diff --git a/core/res/geoid_height_map_assets/tile-7.textpb b/core/res/geoid_height_map_assets/tile-7.textpb
index d00efe8..9667e64 100644
--- a/core/res/geoid_height_map_assets/tile-7.textpb
+++ b/core/res/geoid_height_map_assets/tile-7.textpb
@@ -1,3 +1,3 @@
 tile_key: "7"
-byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\004\003\003\003\003\002\004\003\003\003\004\004\004\004\005\t\006\005\005\005\005\013\010\010\007\t\r\014\016\016\r\014\r\r\017\020\025\022\017\020\024\020\r\r\022\031\022\024\026\026\027\030\027\016\022\032\034\032\027\033\025\027\027\027\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000\367\325\3014\371\"R\231\350j\233.\036\244A\305?\024\273i\301iq\322\237\263&\223i\364\247\000A\247\201\232xRMH\252qR\252\324\253R\255J\265*\324\253S\245J\277xT\303>\264\342\271\003\214\323\343#\247z\260\242\245\024\360i\300\323\301\240\324M\301\315Z\267\225Yv\265H\313\316\005T\224\020qK\0023?z\261s\022,@\216\265\234s\232LPi\247\024\302\005D\3521P\2203PI\212\251 \252\262-V\221j\254\203\002\252J*\253\212\254\331\252\362-T\231x\254\371\220U\031V\251\310\2475\023-B\302\253:\344\324E*\027J\204\307PH\203\025\357\215\021\316E1\303l\301\250\n\372\323\324S\300\247\001N\013N\013J\026\234\027\212v\316)\352\224\360\265 Zx\024\365\025 \251V\244Z\231jT5*\324\313\232\260\200w\250\201\006rW\245ZS\305H\r8\032x4\360ii\214)\261\261W\253\350r\271\250\235C\311\315]\265\214q\201F\241\016\330\201\025\223\267\232M\274\322\025\250\331qQ\034\324MQ0\252\356*\273\212\257 \025NA\317\025Y\306j\254\252MUu\252\316*\274\202\251\312*\214\300sY\362\216j\263\212\256\302\241e\315B\313Q\025\250\230\n\201\326\240u\342\276\200\003\326\241\230\002x\252\373rsJ\020\323\366\032pCJ\0058\nx\024\360\271\247\005\247\205\247\005\247\005\247\205\247\201O\002\244QR\n\225M=H\365\251<\330\323\031aR\255\304{~\\\223@\363enX\201\350*\314h\024T\300\323\301\346\236)\340\323\3058t\245#\"\242a\206\315[\200\3459\241\201\r\221Wme b\245\277\005\255\301\035+\030\214\032J\010\315F\313Q2\324L\265\013\200\005V\222\252\310j\263\325wZ\256\353\212\252\340\232\254\350j\263\245U\224`U)GZ\317\230rj\234\213U\034sQ\025\250\314d\366\250^3\351Q4F\240t\305WqU\334W\2767\003\"\252\3111\r\203J\256\255\300\353S*qK\201\232\\sF)\300R\342\236\007\024\360=\251\340S\200\247b\234\001\247\014\366\247\000i\342\2363N\024\244\344c5\022.\331\366\036A\365\2558\342P\271\310\253\010GJ\220\032p4\3654\360i\340\323\301\251\005<R\024\315 \334\207\212\231\030\267j\263\016U\207\025v\\Ih@\355\332\262^.zS\nSv\323Yj&Z\205\306\007\025VJ\255 \252\262\n\256\303\232\215\326\253\310\265\003 \364\250^>*\244\250\000\2523-P\230\001\232\316\227\255S\220Uw\034\324Ey\2461\307\002\242<\324NqUd9\252\262\014\325y\026\275\335\345UZ\314\272\270_^k5\365/&\\\356\255\013}b9\024|\302\247k\325<\206\024\364\274\004\365\247\033\300\rK\035\310aS\254\253\364\247\254\253\237\274*u\301\024\375\246\227\276)A\247\003O\024\341\326\234)\302\226\242\225\312\014\324\006\360\t\327\'\232\330\266\270\363\024dU\241R\203\221N\024\361R\nx\251\005H)\353O\003\212F\034T\226\303$\214T\340a\263\332\247\21418\035\352\t\227ksU\317Zi\024\302*\'\007\265V|\367\252\322\016j\273\212\255\"\232\256\302\242~\225]\352\026j\201\315U\220\325\031\210\031\254\331\316j\204\243\232\252\353P\024\346\230\311P\264u\013\214\n\251)\364\252\315\222j&Z\201\326\275vk\261\264\363X\267wyc\315e\314^F\342\243\215.c9V5i\'\272\003\251\251\222\356\345G9\253Q\352\017\374`\326\276\237\177\004\214\003\234\032\350\022+Y\"\0048\006\253\315\004jr\257M\212]\235^\254\255\3169\316j\302H\255\315?\000\364\247`\322\342\234)\343\2558S\202\223Q\317\036R\271\3717\256\242\003\036\365\321Y\311\205\025\253\033\202\265(8\251\027\223\221O\002\244\006\236\r<\021R\003R-H)B\356<T\221\241G\006\247n\306\246\204\372\322\\\306]w\001T\212\220i6\212aZ\211\326\253\274u]\323\332\253\272\325Y\024\324\014\225]\322\253:\032\252\343\006\253\271\342\252\312\334V|\3079\2522\373UGSU\335y\250\312\324L*\273\234\n\247+f\2538\315DV\230V\241\221p+\266{\302\313\200j\253\006\221\263S\307\0161\232\262\221\003\306*U\205s\202)\376B\372Q\366d=E\002\324)\312\361Vc\226\3421\2649\253\021\3159a\271\262*\311\212F\\\206\305Vyg\204\363\234\n\267g|\314\303\232\331\212`\313\234\325\205n:\323\301\247\214zT\200\017Jp_jv*\031\234*\034\326\034\314\262\337\215\275\253^\334\020\202\257C!S\315^G\004u\251T\342\234\032\236\032\236\032\236\032\244V\251\225\251\341\252\304c\212\234/\0241\3711L\206C\346\214\326\201\001\243\342\250\314\2705\\\344\032Jkb\240\223\025]\260{\212\201\322\253\274uY\327\007\245@\311\315C$\177-P\2310MS\221j\214\335\352\214\240\232\247\"\324\014\265\003\245B\313\212\253)\364\252rd\324\014\265\023-D\313Q\225\250$\357]zB\005H\261\200zT\303\000\234S\325\260jP\3319\251\003S\267T\212sR\000*\302\000G\246*\310f\362\301\035\272\3222\254\211Y\263F\320\276\350\370\253VZ\211\334\025\215m\305p\254\274\032\262\262\217Z\225$\025:\2605(9\245$\001\363\034VV\247v\261\304Bw\254\315=K\314]\273\232\350\241U\333\214\324\352>n*\322\016\001\251\203qRg\2758\032p4\360jUj\2205K\037/W\342l\214T\300qQI\322\252\031\032)w\036\225\245\005\302I\027\0075\014\304\347\232\256O4\307\220(\250\231\362*\264\231=\352\273d\032p9L\032\215\205@\351\223P\262\n\257 \025Bt\2522%R\225=\252\224\251T\3359\250\0351U\335j\274\213\305S\221\016MWt\250\031j\026Z\205\205F\343\013\305T\220z\327l1\212\t\2405\033\271\247\254\230\251\004\224\355\365\"I\212\235d\253\013.@\036\2252JGzr\271\r\212I\000u\254\371-\312>\345\253V\267m\037\312\306\257\255\360\340f\254%\341\007\255[\212\364g\223V\016\242\2128\305S\271\324x\'uc\3114\267sc<V\265\234F5\034V\254l@\253\021\270\'\232\267\033\034`\366\2513\315<\032p4\360j@i\340\324\201\252h[&\257E\367\205[\003\212k\256k>\355\016\334\212m\263\262\307\221\324u\025\241\023y\311\367j)\241\220\002v\342\263\344\334\257\315\000\344sQ\271\031\250\033\257\025\023\023Q\2279\346\232\317\307\025\013\023P=U\225sT\344J\247,}x\2522\307\355U$J\253 \002\252\272\324\016\231\252\322&*\263\256j\273\255@\353Q\371f\253\315\264qT\2449\351]\216\352B\364\335\376\364\273\3517\363\326\236$\347\031\251\003\232z\311R\254\225b9x\251\204\235\352\306\362@#\222G4\365\177Z~\320\303\2450\333+v\244{b\2540i\271\225s\355H%\237=\rYF\231\327\245<Z\263\237\235\252\335\275\252\241\031\253\340\005\350i\352\376\365j0N\t8\253\260\347\025)<\212p5\"\236i\340\217Zxjz\270\365\247\347\212\226\006\303c5\241\021\031\025u\0334\375\271\025\004\261\344U\031$[@\305\206A\252\366\232\260K\235\270\340\232\350\"\270\216\342.\203\232\247wl\270$V[|\247\025\013\036\265\t84\036j\027Z\256\340\212i9\025\023sPH1Ud\252\262\000j\224\340\n\241/5Q\327\232\256\352*\007\025\003\256j\263\245Wt\315B\321s\322\241\230\205\\V\\\247,j\273\n\353K{\323\031\3523\'=h\363)w\322\356\367\251\026S\334\323\374\301\236*Uz\231d#\275XIr\270\251\343\224\250\353S$\244\266qVc\220\221Sg\"\244\213\030$\214\201I\265\013\020\007\024\341\n\372U\210\320/\030\305J\027\326\234\247\232\223w\024\233\271\342\245\216Gf\003&\265!\225\322?\231\177\032\224J\244\344\236\264\365n\375\251|\320;\323\204\231\357\212\221Y[\370\252@\213\331\310\245\303\257G\006\245\206FY\006\354`\326\234D\214\021\322\256\306\325aNE8\214\326V\261\thN\005`G\003\211\001\036\265\322\332e-\320\223V\334\253\306y\346\261\347]\254j\231<\324Ny\241O\313H\340\325y\001\305CQ\265B\347#\232\253 \252\262\n\243=Q\220UY\005Wu5\021N9\250\231*\t\020Uv\0305ZW\030\306k:\341\3075\225$\247\314<\324-7\035+\253-Lg\342\242f\346\220=/\231O\022f\234\036\244\r\306sR,\225:\276jd|\032\262\217\232\236966j\300\221wqS\253\361SC>\323\214qR\226L\345{\325\210\266\354\334O\"\207\224\0312\016i\333\370\245\337\315(zpl\323\343r\254\rh\255\323<!1\323\2759I\315L\034\201\212P\3709\247\357\247\253\212\225$>\265(|\323\362}kB\326l\240\004\326\224R\002\243\025a^\246F5\235\252\334\241\002 A5\237\n\000FGz\331P\242\025\003\245&y\340\361T/\007$\326y\353P\275*\0361J\325^SP\036\225\023\032\257!\250\031\252\t\000\252\222\2405FD\353UY9\351Q\262\014t\252\322)\002\252\273`UYe\000\034\232\316\270\272\003\214\326t\267LI\252SL\315T\2379\250^\272\306j\214\275FZ\233\276\215\364\241\352E\222\244\016E=^\246I*x\345\303sVc\220g\255XV\315N\2161\201\326\247I*P\374\346\254,\233\227\030\344T\210\375\273\324\245\243\\ps\336\236Y\n\r\275i\241\215<5<5J\204f\264\240h\304G=jx\345]\273v\365\357HH\316(\310\247\003R.jE5\"\2675*\266{\324\360Hc|\036\365\251\024\300\r\302\247[\245\0377j\255s\254$jU3\322\263\340\221\256%.\3479\255\r\277\'\025v\335\213\303\203\332\202p\325Z\353;+9\2175\033S\001\301\245,*\t\016MF\304c\025\013\342\253HqU\335\252\007j\201\310\305U\223\0075U\360\rA#\200j\234\322u\254\313\213\205N3\223YS\312\357\236p*\234\200\325W\025]\305@\342\253\270\256\221\236\242f\246\027\246\227\244\337J\036\236\255\315L\257O\017R\254\203o\275J\222\014`\365\251\243\222\255\244\274U\230\245(Cf\247\363\2030*1S\tr\243\216\225<r.\317z\221\\\203\221R|\3167\366\245W\355O\017OW\315H\246\245V\253\021\310sV\321\216*e9l\324\244/\033M\000T\252=*@3N\000\346\244\000\212\2327\033H#\'\265J\262\270\340\362)Y\344*|\266!\217j\242\320\334H\307w\353E\264\317o7\227 \305m\303.\365\253Q\002\2719\305)j\206\341\263\t\315g\340\236i\215Q\021\315!\340u\250\034\324\016\370\250\214\235\215C#dU\031e\332\330\250\232e#\223\212\201\347L\3435ZI\224w\252sN\240psT%\270l\236*\214\323H\335\361Td\004\234\232\255 \252\316*\263\212\256\342\253\276*\263\326\343=FZ\243-L/@zxjP\3305*=J\032\236\032\236\257\315XG\251\322J\264\222d\016j\3126\027\255O\034\312\001\004g4\364~j\302\276EH%`0\017\02524~I$\374\336\224\320\354G\034\212z=N\257\232\231\030\032\261\031\031\025~-\214\204\226\346\234\016\rH\246\246F\030\247\203\212\225MH\0174\372\221jT4\375\2719\034\032\221\034\243a\300#\351R\313i\004\311\275@\3156\331\014M\260\363\216\225t7\2754\2775RG2\311\264t\315\0050\265\003\255B\303\024\3228\250e\373\265U\352\273\203\236j\t\t\344\003T\244\353\223Ud \232\254@-\311\305W\231\030w\252RUY\rUpOj\253%WqU\334UY*\264\225Y\305WqZ\214\364\302\324\302\325\031j\003S\303S\203T\212j`\324\273\251\352\3252=L\217V\242z\264\030\201\311\251\243q\221\3179\253A\324\215\270\344R\254\234\324\301\262)rj\304\022\005V\311\355\322\235\021R\307q\251\343x\311\347\"\246R\240\360sV\021\252\3129\035*\302\022\3250\343\212\225\010\035\351\373\226\236\033\322\244Y*@\365*\265H\257V#`i\316@\024\353y\227qBz\324\341Fs\336\235\273\034S\033t\234/\342i\025\002P\354\000\252\256\331\'\025\023\017Z\211\216\005B\355\220j\273\363P?CU^\252\3123T\344\030\252\262f\2539>\265]\262\016qU&\31318\250\031\366\202\000\035*\233\325g\252\3626F1U$\252\317\326\253=Wz\276\315Q\226\2463Te\251\312\324\362F)U\371\251\225\252M\324\233\371\247\254\225*\2775:=XG=\252\322\3121\315M\033\215\303\'\0258\223\022gvj_0\023\221\305L\217R\206\315=X\253f\245V\311\311\251A\307\025<mV\021\352\324m\310\253\276daF\336\264\340\376\364\340\304\367\247\206>\265\"\276)\342Jz\275H\262{\324\253%XI)\354\344\212\2127\304\325t\316W\006\234f\004dT\213.!\372\323\004\231\357MbMF\300\001P\261\250\037$qQ\230\230\236\265\023\243\003\216\325V\\\347\025Q\363U\344\351U$\252\317\357U\330\016\265ZNx\002\252\310\010\353U$\034\032\251!\252\262\032\253!\252\357U\234\325g\252\357VY\2522\324\302\324\302\324\241\251\333\351U\271\251D\224\361%858\032\225[\025:\275O\034\225hH\030\016*\304R/\000\212\225~\376\007\"\247\306\334f\247F\342\245C\270\3435(\334\006H\340w\247\253T\241\301\307\255N\273\210\315J\256A\346\254\307\'\025ad\007\275J\257\3163S+{\323\374\314S\204\231\247\007\247\254\224\365\226\247I*\304rU\200\340\256*\031\t\007p\2530\310\255\016\032\246E\017\031\001\272\014\212lr\0026\267j\224\306G(i\271b9\342\230\330\305B\355P\266{\032\217\220:\324lX\036MA$\203?tUY1\234\342\240`\233y\353T\337\000\236*\244\234\236\225\003\223\214\n\256\303\234\325i\201j\245,|U)S\025R@y\252\256*\264\225]\305Wz\254\365#5FZ\230Z\233\2323F\352P\364\3573\336\236\262T\201\352T|\324\271\251Q\215XCVU\370\002\254F\334d\036j\314R\355<\216jP\304\375\354\342\246F\305H\255\315XIH\300=;\324\303i\034R\240\014\330\315YI\n\214\003\370T\236fXdT\312\346\246I1R\254\203\255L\263f\245\016\017zP\324\341%8IOV\357S\243U\204z\260\262qR\002\030S\014\215\t\340dU\210\356\001\371\223\203\334R\312\215\031\022vj\2369\tA\3159\217sP;\222j&$\324D\220qL\'\236hb\n\344\n\252\340T\016\265Y\326\252\310\265VE\252\356\265Y\352\264\225RQT\345\025NQ\326\251\310*\263\212\256\342\253\310*\263\212\215\232\230Z\232Z\233\272\227u!jn\3527\323\325\352ej\225\032\247\017R#\325\224z\260\222b\247G\346\254\240\'\007=j\310\220\340!\355R\241\347\232\235B\263`\034}jN\000\3109\251\020\343\004\364\251c\223k\344T\302M\317\222?*\223~_\203OW\303u\251\225\315X\215\201^MH\254)\352\376\365 zpjP\3075\"\261\365\251\221\361\336\247I*\302?\275L\222`\324\334H9\244\020\341\276S\214S\247\231\374\225\213\25754G\010\005L[\345\250\310\3435\021`F\000\315\001w)\'\202*\t\025\227\250\250w\340\324NFj\007\342\240z\255 \252\262UY*\264\225]\305V\220\n\247*\361T\344\025NE9\252\256\247\255WqU\334Uw\034\32564\302i\245\251\205\2517\321\272\220\265\000\323\225\271\251\225\252ej\225Z\245V\251\221\361V\021\352\314mVc\223\025b=\316r*\3021\035jej\2207\241\253\t 1\355<S\343\004\364\346\244\r\203N\014*Ej\231^\245W\251U\352P\365\"\265<5.\352z\275J\255\357\212\235\034b\247G\346\246W\2530\311\201\223S\253qP<\231\270\031\355Vc\220\032\235\270N)\214\333\223oJ\214.8\245\357\301\243\206\371Z\252\\\302c9\035\rU<\324.j\0075ZF\252\262\032\252\344\325g\250\0335]\371\252\362.j\253\2475RT\346\252H\270\025VAU\234Ug\025\236MF\306\230M34\231\245\317\024\204\363@4\340qR+T\252\3252\265J\255S+T\350\325b7\342\255F\331\346\254\306\3079\007\025`1*9\251U\2601\326\246F\031\03156T\036\016jh\330\203\221R\222Y\263\214f\234\230\r\317\"\227?5H\032\244W\0252\275J\257R\253S\367R\206\247\253sR\253w5*\265L\217Vcl\324\352\330\220\n\266\207#\025Z\351\037\031\217\255V\216\352x\333\016\207\212\275\036\240\2546\234\203SB\354\316I\351R\203\315.h\341\271\035hp%\214\251\353Y\322FU\210\"\253\270\036\225Y\326\252\312\225Y\322\253H\265Y\324\347\245@\374\034\032\254\343\234\324M\310\252\262\216\265RJ\247.MUu\252\322-Vq\305d\226\246\023Q\223Q\356\367\245\315(4QJ)\300\324\252jUj\231Z\245V\251\320\346\254Fj\324lG\025r\006\031\346\247B\017z\2262;\323\267\020j\324j\206\035\333\271\364\247D\344?=*\324\215\362\014\021N\204\253\0341\353J\300\256y\244W\251Fz\324\252\330\025*\275J\257R\007\315<8\306)\301\252Enjej\221\032\254\243\325\210\316X\032\275\033t\251\202\203\324R\375\231I\316(\373\002g~\006j\312*\371x+\217|Uy\303Dp\006j\271\270 \341\201\247\3078\335\234\324\305\260\301\327\241\250\346\001\206ER\221*\263\240\252\322%Wx\2168\025VH\315Wa\216\242\253\312\252z\201T\345\\\032\256\353P\272dUY#\342\252\311\030\364\252\222 \305S\221j\214\301\206qX[\3154\311Q\2264\335\324\007\247\006\247\356\245\315(4\361O\025\"\232\2240\251\021\252\3025X\215\271\353V\243<U\204j\260\217S+T\252rqR\347i\3009\251\343 \216N)\341\311\372T\270*\241\273\032\221\037\236\275}i_n\357\222\236\013\005\301\351R\203\307\006\234\032\245Y8\247\211=\352@\365\"\275J\032\244V\251U\252dz\265\033\236\335j\3542g\212\273\031\253+\332\246^j@(dW\352\240\325Yl\321\262v\326M\305\254\321JY:zS\241\271 l\220b\247,1\301\315B\3705Y\305V\220T,H\340UI3\232\253&j\263\212\255\"\345j\263\257\025\t\025\014\203\255R\224U9{\3259\007Z\204D\013d\212\346\235#Y8l\212a\205\030\375\354Q\035\270c\214\212\212\341\022!\214\202j\274\1773\201S\315\037\227\214w\024\305bx\245$\212r\266j`i\342\237O\006\245SS\241\253\010j\314m\305XV\253\t\22229\251\221\271\251A\305H\255\232\263\033\003\324\324\350\343n\322;\324\310\352\t\004qI\237\234\340`S\267\374\331\251<\302\344f\224\032\221Z\237O\034\nz\265H\257\315J\262T\253\'\025\"\275L\257Vb\223\232\273\033\177\020\352+B\031\001\025q\rN\246\245SN\240\362*\t#\r\326\263o-\201BTr*\22420;[\250\251X\203\355P\275WqP8\252\322\n\253 \252\356\277/\270\252\255\301\346\253\270\344\325g\340\325yMT\227\232\251 \315W1\344\323]6\360+\210!\275i\244\260\356i\242G\\\340\365\250\233s\234\232tm\345\364\024\366\230\276\003\016\225$e<\300{w\253r\305\013G\274\020*\025\2156\360i\n\225\353OSO\310\245\006\245SS\306j\302\036*\304f\254.H\3105v&P\230\024\241\276j\225Z\244V\346\247F\346\247S\305H\037\r\234\324\306r@\030\024\343\206\210z\346\206R\207\203\232P\346\244W\247\207\247\371\234S\225\363R\251\342\236\032\244V\342\245G\251\225\252\304oW`|\361\232\275\003\020\370?\205h\306\325aZ\245V\247\203K\234\212kUy\260T\346\261\034\001x\333jC\322\243aP=B\302\253\310*\264\213P\225\311\305T\232<\023T\344\030\252\322\364\252\217\315VqP\262z\324eB\202j\234\254s\\q\0034\322\242\242*3HV\230V\215\264\240\021\322\2367\221\214\232zeMYb\257\017\'\221L_j~1K\355OZ\235\rYJ\235x\30752\203\334\325\230\316\016\005M\273&\236\rJ\244\324\350jt5 4\360j@\374b\235\274\205\306i\341\325\227\035\351\331B\270\031\315H\2411\202pip\017\3359\246\206 \324\251%L\032\236\255\357S#qS!\253\010j\324M\203Z\020\2718\307Z\320\211\362\005YV\251\225\252@\324\355\324\326<Uy\233\nMd/\31736)\347\245F\325\003\201P\260\036\265\023\343\025]\361P\036\032\242\22523Y\363&\t\252r-T\230\205\025M\245\001\251\254\340\362j\244\217\222Fj\254\307\025\3071 \323KSI\244\315%\024\240T\2129\247\225\364\244\035i\350y\251;f\216\364\361S%XS\201Vb\031\344\324\253\326\254FqR\003\322\245SR\251\251P\324\312\3250jpj~\352pl\323\201\247\251\247\344g\203N\016Tq\336\236\233Yy?7j\010(\3305\"\310jEo\232\247V\346\254!\253\010jtnj\375\273\343\006\264!l\n\264\215S+T\241\251\333\251\013U[\226\375\321\252\01003\353C\032\211\215D\306\240z\201\252\026\250\232\232yZ\2512\003\232\243*V]\337\312\246\262\032L\277\025\034\222\262\346\230\231#&\243\230W\"\3035\013)\034\323OJm(4\341\322\235\3058u\251\001\371i\271\346\245\000\005\036\264\341\315;\024\242\245N\265b<g&\255Fw(\305L\240\324\252jE52\364\251W\000sO\004v\251U\252P\334S\303\016\224\340\303<\364\247\340\377\000\t\006\224\026\035j@\331\247)\347\223\212~\354\232U?5M\221\320\362E4\0346*`@#\006\247Rv\346\246\215\371\253(\325:\265h[0+\357W\342n*\3225L\255R\007\245\337Az\255p\333\276Z\256H\025\033\032\211\215D\306\242j\205\272\324,*&\025\0218\250$\"\251JG5\225z\003Fq\324\326RC\206$\325k\200\014\230\024\364\030J\202q\\\203TmQ0\301\246\321O\006\235\324S\200\247\017\273H:\324\213\315H\235jJ\\qNZ\262\225f\037_z\237<\323\201\346\245SS)\251\001\342\236\rJ\246\244\007\'\024\376\206\216\246\2342;\323\203\266z\324\201\263O\r\357O\006\234\032\237\274\223\223O\334\t\342\244V\305M\033\022x54d\022y\253\010\336\365aZ\256[\276\ri\304\334U\224j\231^\245\034\216\274\322\027\342\230\322`{\324\014\347\251\352j2\325\0315\033\032a5\033T,*6\250\237\245V\223\326\251M&;\325)%\310\254\311\231\235\375\252\274\204\001\201T\235r\371\2511\204\252S\232\344\332\2425\031\246b\2234\240\324\212i\342\237\216)\005=2O\025 \340\324\213\315:\234\242\246CV\242\373\270\251A\346\244S\315H\247\007\025*\265<5H\246\245\006\236\247\030\247\347&\234\r;u8\032x4\354\324\212i\340\214R\203R)\342\244\r\305=\037\232\261\037&\254)\003\241\251\221\253B\324\256\316z\325\350\337\232\266\215R\243v\251\225\360\334\323\032Q\311\364\250w\345\267\032k74\302i\244\324mM=)\206\243aQ\221\232\211\306*\234\355\201Xw\263\034\234UA&\345\246>1\315Tq\223P\224\3074\215\367j\204\347\223\\\253\n\211\2523L4\322)GJr\232\221jL\214R\016\224\345851;\200\300\247\255;\255<\n\221z\342\254\241\251\224\324\203\255<\032z\232x\340\324\273\362j@i\341\251\340\323\301\342\227>\364\3655 4\354\323\324\323\263N\006\244\rO\335R)\035\215M\033\342\254F\377\000.*\324#.\0015u\006\016\001\351V#\227o\007\275^\215\270\251\343o\230S\236O\236\243$\236\275)3\305&I\245#4\322)\214\0050\364\246\355&\232\313\353Q5V\231\302\212\311\272\271\007 \032\307\235\3015\000\366\244+\353Q\262T\022t\250\034\374\265B\342\271\206\250XTG\2555\272RQN\247\255;\275-;<\n\261\000\334qO \251\247-H\242\236\275ju\351S%J\270\301\342\224T\203\255H)\340\001OSO\006\236\246\244\006\234)\303\255H\264\372p\300\247dR\346\236\032\234\032\236\255\315J\255V#j\271\013\373\326\204-\214\036\265e@.\030U\264j\231\032\234y\346\216qJ\026\227o\265\033i\n\323\n\212i\000Td\324N\302\252\3132\"\222Mb\337j\013\310\006\261&\273,x5\n\356\220\344\324\341p)\255Q9\342\252\312j\t\017\025F\342\271\206\250\232\241=i\207\255\'C\365\245\3174\3454\365\247\034R\255<T\3206\331*\334\201J\356\034S\000\251TR\201\315J\265:\032\224R\216\rH*U\353O\305/Jx\247\203\305H\275i\375\005(<\324\212i\343\245(\353N\310\2434\240\323\201\346\236\032\245F\253(j\324m\212\273o(\003\232\271\033\340\017z\270\215\300\251\203T\212\325 l\323\301\036\224\271\244\246\265FMD\316\005U\232\345\020ry\254\253\275P 85\207s\251\273\222\003V{4\262\266NhX\017z\235\020(\247\036\225\013\265@\357U\24495\013\364\252W\035\rsMP\260\250\217Ja\353M>\224\237Zx\353R\255\004\020sNZx\351R\3062\302\256\034\234\016\240R\262\355jr\364\247\201O\002\245PEL\2434\374q\212r\361R/Z\224\032)A\247\253f\246SN\316i\300S\207\024\3658\024\377\000\306\223\232PisJ\r8\032\221\032\254\243U\230\332\255#t\301\253\201\211\333\316M_\211\376Q\315N\255S)\251\226\244\002\235\201Lc\212\201\246\003\275T\226\355\001#p\2527\027\310\001\371\353\036\353P\31085\225!\232v\357\212\022\323\007$T\302\020;PP\na\030\250\235\270\252\356\325]\336\240s\305FNEU\270\037)\256i\205B\365\021\250\3154\322\216\224\240\323\267v\024\365c\322\227\004\032\221jd\353W\004\213\344\343\034\347\255\'\336n:T\252*@8\247\001R\257^j\302.O\2659\200\315\'\361T\202\236\246\235\216)\271\305875*\275H\255R\251\247f\2274\240\320\\\212\177`M\034\2122i\300\324\210jtj\265\033U\224nEZI\006r\0175j\336B\033\035\215_F\315XCS\241\251\205G,\351\022\222\314\005a\337k\221\306v\241\254\306\325%\224\360MW\226I\333\236y\252\315\034\316~f4\253j;\363R\210T\016\224\245@\250\310\002\242sU\335\261U\335\370\252\316\336\365]\233\232\211\333\212\210\266\005V\235\376CX\rP8\250M0\323i;Q\320\322\203O\006\244\\g\232\231zc\0252\240\3019\351O\031\253\366\361\006\204\237J@9\251\025sO\013R*\324\3506\214\320y\315 \247\212x\247\203\305!\353IOZ\221s\332\244V\251\001\245\3158\032\0174\375\304\256(^\264\273\273\032\\q\220i\351\232\2363\315[N\225*\2675idP\177\n\232\031\300q\223\326\264\342\220\021\326\255#\014T\236z \371\230\014T2\352\320\304\244n\025\201\177\252=\303\355\214\361T\022\006w\334\347$\325\264\205@\351S`\001\202\0055\243R\231^\275\352\0221\332\232[\025\0335B\317PH\365VF\252\3625U\221\352\002\324\306j\205\237\212\2513\326CTL*\026\025\031\246\232oJJQOZ\225jd\025a\027\212\220-[\266/\367\027\275?\313*\377\0005J\242\244\002\244E\035i\371\244\301\243\270\342\236:\324\213\203J}\251\264`\323\200\247\251\"\244\024\360i\324\240\323\201\315;4\240\322\343<\3203ORj\302c\031\025b6\342\245\315I\021\314\200z\324\267(\321/\007\236\264\221j\245Wk\360EX\376\332\n\274u\252\263\337\3176Ys\315W\002Y\016]\215N\221\201S.\005J\036\202\325\031r:To/&\242g\r\323\255@\356A\305B\322T.\325\004\215Udj\254\346\253\273S7z\324\022=T\231\253=\2526\250Z\243\"\233M=)\264\243\255=jU\251\343\253H3Sm\253\226k\222@\\\232s\347\314;\252E^)\340T\212)q\203J\000\240\014\344\n\007\002\236\264\277Jv\3363IJ:\323\301\247\212ZP{S\201\247\016\231\245\006\244\340\2504\006\300<\320\rH\246\244S\203S\207\002\245\017\3059d!\262*\353\312&\201r9Z\246\360+6qJ\220\252\365\025(P\006;R\360(\336\005\036e/\233\212<\332i~*6z\205\244\301\3105\021\227\223\236sQ\263)\034u\250\013T.rqU\334\325y\rVs\315D\315\315@\346\252J\325U\205B\325\023S\017Za\246\232oz\007Z\221jU\253\021\366\253q\212\235Fj\345\2332K\362\212t\247t\333\261R \342\244\002\235\333\203\326\202=z\212\024\022\t\024\244`\n\\aA\245Z\221\027\223\2321\212LQ\212p\353N\006\236\016h\3058u\247g\265(\353\305/\"\214\234\346\235\332\234\032\245V\251\001\247\253b\244W\253q8\362O5\037\233\363u\247y\231\024\365l\3655\033H\001\3057}4\311I\346Q\346Q\346S\014\225\0235D\315Q\261\246y\230\353\315D\374\234\3665\004\200\212\253!\252\354j\0268\250\035\270\252\222\032\211\372T\rQ50\323OZa\246\np\353OQR\245Y\216\255\305V\224U\273D\014\373{\232\236ks\020\311\024\304\346\245\024\243\000\344\366\244\357\222)\300\r\271S\370R\362W\036\224\270\342\234\006)\303\257\024\275\261E&)qN\002\224qN\036\224\017J\\\343\232z\236)i{R\322S\303S\303S\267\323\225\352E\230\201\2674\236g4\361/\275?\316\343\031\246\027\367\246\371\224\206OzC%&\372<\312B\364\306zaz\215\232\230MF\304\342\242/\306\337Z\202d+\315Un*\t\rWv\342\252\311Q\275B\325\023Tf\232zS\017\335\246\212z\212x\251TsV#\025r.\325i9\253\020\313\345?R*\371\304\366\244\253\022GPj\262\014\034\032\230R\0323\353J8\351N\0370\372S\205<u\247t<\320\0074b\227\024P:\323\250\247R\201\232^\364\240\323\205.(<Q\232P\324n\243q\243y\365\245\337\357@sK\346R\231\016:\322\t=\350/I\346Q\276\215\364\233\351\245\351\205\251\205\251\245\251\205\252&=\3523/ 7 Uiz\344t5Y\215W\222\253=F\346\241cQ\261\250\217ZC\322\230\3351INZ\221jT\253\021\325\270\373U\264\351R\021W\254\334*\037\\S1\363\232\220t\246\023I\236i\340\322\203\203R\002\017\265<u\25101\326\225\224\216{Sz\322\201\212v3I\214\032\\\023@\024\264\016)A\247\016\264\374R\022h\006\220\361M\335K\270\021\357M.G\024o\243}\001\350/K\2734\205\250\337F\352M\324\233\351w\232k7\024\302\364\322\324\233\251\204\323\031\252\0265\013?\0305\014\253\201\270t5Y\352\264\225\003\232\211\215DM0\322\023M4\224\341R\245J\265:u\253Q\325\270\315L:U\233Y\002?#4\367#\314$\n\\\323M4u\245\006\234\r<\032x5*\362)\343 u\243\003\034u\245\030\305;\036\224\233y\243\245/\247\024\243\030>\246\220\212AN\006\237\236)\t\355M\316)\t\'\245\030\342\220\361M\'\212nqHM&\352v~Z\003PM&\3527\323wsK\272\223u\033\351\245\251\245\251\205\251\013Tli\214j\027\351Qn\307\r\322\240\224\000r\275*\263\325F5\023\032\214\232a4\204\361L\315\002\236\2652\032\231}\252d\315Y\216\255GS\212\236\334fQS\3101!\3157<R\023L\315(4\271\247\203R\003R+qR\344\343\232Q\307Jp\03194\340\010\247\001\232B1IG\265!\244\245\006\226\220\235\304SI\346\200\324\241\251I\3150\212c\036j2\334\320\016i\305\276\\Rn\245\315&sHz\323\t\305&\3527\321\276\220\2654\2654\2654\2654\232\215\215F\306\241j\214\221\336\253\310*\213\032\211\25264\302i\244\323riA\247\251\251P\324\312jh\315[\214\325\244\251\207J\232)60\"\2479\221\2629\246\367\305\006\230i3J\032\234\246\245S\315H\016jU\3509\251\027\337\221R\002:b\234y\342\201\220y\245<\323OZC\301\240\363M\"\212L\321\232i84\233\217Bi\273\260i\333\361\322\220\275F\315\236\365\036y\245\317\275.\352L\363N\006\220\232n\352i4\302i7Q\272\223u\033\251\244\323I\244\317\024\323Q\267J\205\252\026\250\211\347\232\317cQ1\250\311\346\230i\244\322f\226\236\246\245S\305H\246\247CV\2435n3\322\247^\224\345\353\212\322\217\313K3\317\314j\256~j\\\346\232\324\302y\2434\360j@{\324\252F=\352U<T\240\364\305J9\247\001\3158\014\321\212LRc\332\220\375)\017Ja\244\367\244\'\212a<SKS7\322n\240\2650\232L\373\321\2327S\263\225\310\024\252\300\036i\031\275*2\324\205\251\245\251\245\251\245\250\337F\354\320Z\232M74f\230\325\023T-Q5e\223Lf\250\311\250\313sI\236h\240u\247\203R)\251T\324\350j\314f\255\306j\312\364\247\023\216j\365\216\331Q\225\215G*\354\224\257\245 #\024\3265\021\353H\r=[\232\225Z\244SS)\033G\255J\246\245S\305H\032\236\r.\356\306\234W\003\353L>\324\323M\246\232a\342\230\324\302i\204\320\341B\202\246\242\315\033\251\t\244\311\2434\231\347\25586)\\\343\2453p\307^i\205\251\245\251\245\251\013SwQ\272\223u.\352ijn\3527PMF\306\242j\205\215d\261\250\330\323\t\246\023I\232)GJx\247\212\225ML\206\254\306j\324f\255\241\342\234\307\212\237O\230\013\260\t\342\264nmZc\230\2278\364\2522#\304p\343\006\242\335\232a4\314\363OSR\203R\251\251T\324\312\325*\232\221M<\032\\\346\235\274\343\004\320H4\323M=)\264\323Q\234\232a\250\332\230M34\204\322\023Fi(\316)\245\251w\361L\'\232ijB}\351\205\251\244\321\272\214\322n\2434\023M-I\273\336\215\336\364\206\243cP\265b\261\250\311\246\023L&\200iA\247\216\264\365\247\216\225 5*\032\260\206\254\306\325j6\251\031\262*%\220\244\241\207j\3504\375b8am\340\037L\326m\355\351\271\270/\3335\\=!zM\324\3655*\232\225MJ\246\245SS)\251T\322\346\234\032\224\032\\\321\232i\246\232i#\031\250\311\250\311\346\230\325\033S\r74\233\251sK\333\212c\034\034SwRn\244\'<S\t\244\3154\232i4\231\367\245\315\031\2434\231\246\223M\315\033\250\317\024\3265\013\032\302f\250\313S\013SKsI\272\234\rH\246\245Zx4\360rjU\251T\324\350\325a$\300\251<\312i9\2401\035\351\300\323\267R\027\240752\265J\246\245SR\251\251U\252U5(jpjvE(4\264g\336\214\373\323[\332\230i\215Q\223L=)\215Q\223Q\223I\232PiwqH\307\217z\214\223\212ijaj3\336\232Z\220\232i4\231\024f\235\232\t\246\223\212i4\322i3\317Z7PNj6\256t\232\214\2650\265&h\006\234\rJ\246\245SR\003OZ\220\032\221MH\255R\253\323\304\224\360\364\241\251\301\250\335F\352p5*\032\225Z\246SR\251\251\024\324\252\325 jxjx94\372\\\361I\232L\2123Mj\210\222)\214}\251\204\367\246\023Q\261\250\233\2453u.x\245\007\232\225\223(\010\252\344\3434\306\343\361\246\023M\311\307\024\335\324n\242\212L\342\214\321\232\t\246\023HM74\233\250\335\357M&\271\247n*\"\324\233\250\335Fi\300\324\252\325*\232\220\032x5 4\360\324\365jxjxnj@\324\273\251\341\251sJ\r8\036jU5\"\232\231Z\246V\251\024\324\200\324\212j@i\312i\341\251\331\244\315&M\031\367\244&\243c\315FMDN\017\024\205\363\326\243c\305F\304\032\211\216(\031#\255(4\361!\306)\034|\271\250\030\361\212\214\2657y\035)\013qH\r;>\364\271\240\363GJi\244\315!\246\223L\'\232i4\233\251\013W0\355\223M\315&E&is\357J\rH\255S+qR\251\3434\3654\360i\340\323\303S\303S\203S\303S\203S\303S\203S\303S\301\342\236\rJ\246\244SS+T\252j@j@\324\375\324\360i\300\323\263\357FM\031\367\244\315!<Tlj&5\0214\322i\244\373\324lj6<sH\030\003\315/l\203@l\034\324\276p1m#\232\254\307\234TLj2\324\007\3004\003\306E8\036\306\215\324\273\251wR\023M\244=)\244\323I\246\032a4\233\253\227-\223M\335I\273\2323N\315(5\"\232\225NML\rH\r858585<585<5<585<5<5H\rH\rH\246\245SR)\251\025\252Ej\2205=[&\244\006\236\032\235\232\\\322\023M-F\352\215\215D\306\242cL&\232M0\232\215\2150\261\315J\214\n\340\367\2460a\317jh~)\214\325\0314\302i\273\251\341\206\336:\322\344\223K\223\334Q\232L\322\356\244\335A<S\r0\232Bx\246\036\264\322k\223-\3054\265(4\271\367\245\006\224\032\221Z\246\214\361\232\231M<\032p4\340iwS\203S\303S\303S\303S\303S\303S\324\344\324\240\323\301\251T\324\201\252@\325\"\232\2205H\032\236\246\244\rN\rO\r\305.\352\013SKSwSKTlj&5\0314\302i\205\251\205\251\231\245\007\217z\223v\341P\236\t\3050\232\214\2654\232i4\240\324\200\340\360i\373\263Hx\246\223M&\215\324n\244&\232M4\236i\244\323Mq\345\2517Q\276\234\032\224\032p5\"\234\232\235MH\032\236\032\234\032\234\032\215\324\241\251\341\251\341\251\341\251\341\252@\325*\236*Ujx5\"\265H\032\244V\247\206\251U\251\341\252@\325 jpjpj]\324n\244-I\272\232M0\232\215\252&\250\311\246\023L-L\3174\240\322\207\303sC\234\214\216\265\t<\3233\216\264\302sHzQ\236)CT\212\324\377\000\274\277\312\232})\204\323I\243u&h\3154\232i\244\315qE\2517S\201\247\006\247\003N\006\245C\212\224\032xj\220585.\3527R\206\247\206\247\206\247\206\247\206\251\025\262qS\003R+T\200\324\201\251\341\252Ej\221Z\244\rR+T\201\251\301\251\341\251\333\251wQ\272\220\265&\357zBi\271\246\232\215\215D\325\033Tf\232\017ZM\324\204\364\247\356\310\305D\307\006\230M7\214SsI\232\001\247\206\251U\251X\367\025\031\351L=i\2714\271\2434\206\233M\256\037u\031\247\203N\006\236\r8\036jPi\341\251\341\251\341\251\301\251wQ\272\234\032\234\032\234\032\236\032\244V\251P\367\251\203T\212\325 jxjxjxj\221Z\245\rR+T\201\251\301\251\341\251\333\250\335N\rAjij3M\315!5\031\311\250\330\324lj3M\355M\3474\016h&\232O\0353Q\036\231\037\2254\234\322f\214\361IK\232z\265<5!\246\232a\244\2434\244\346\220\364\246\032\3417R\203O\006\236\r8\032\220\032p4\360\324\340\325 jP\324\273\250\335N\335J\032\234\032\244V\251U\252el\n\2245<5<5H\032\234\032\236\032\245V\251U\252Ujxjv\352pjpjv\352\003R\356\244\335F\357zL\323I\247\2466\234\323\n\007REVpT\342\230\324\314\361L&\215\324\023\3050\232i=\361M>\242\233\324\322\023\317\024\231\2434\240\323\303S\201\310\305!4\323\322\222\2234\003KM5\300\003\3158\032x4\360x\247\003O\006\234\r;u85<5.\352]\324\006\247\006\247n\245\rR+T\310\334\346\246\rO\rO\017O\017O\rO\rR\006\251\025\252Tj\2245<5<5;u8585.\357z7Q\237z7Q\237z\017Jn\342(\022`\021\353C&\344\316EVpGZa\351Q\232a4n\240\234\323\017\024\334\343\232C\216\242\223\004\216)2i(\315(4\340\324\354\320Ni\246\222\212RsI^z\r<\032p<\323\301\247\203N\315(4\271\247\206\245\335K\272\227u(jpjpjpni\341\252tl\n\225Z\234\032\236\032\236\032\244\rR\006\247\253T\212\325*\265J\255O\rO\rN\rN\rN\rK\272\215\324\273\250\335F\357z]\324\204\323M |Sd;\215B\325\0314\3064\314\321\232\t\342\232h\315&qM4\334\321FisN\006\235\232J);\322\321^v\r?<S\201\247f\234\r8\032pj\001\247\006\245\rK\272\227u(jpjpjxjz79\251\225\252@\324\340\324\360\325\"\265H\255R\006\247\206\251\003T\212\325*\265<5H\032\224585<5.\3527R\356\2434\273\250\335F\352B\324\322i\t\342\243cQ\023L&\230M!4\271\240\372\323I\240r0i\017\024\323\3274\231\244\245\311\245\006\234\r\031\245\315%\024W\235\203\3158\032p4\340i\333\251\300\321\232]\324\273\251wqK\272\215\334\322\206\247\206\245\rO\rR\253T\212\325 jxjz\265<5J\255R+S\303T\212\325 j\225Z\236\032\236\032\234\032\236\032\234\032\234\032\215\324\273\250\315.\3527{\321\272\2234\204\322f\230MF\324\303M4\323I\232\\\322\032L\363J\334\322\000H\3152\203\322\233\223K\232Pi\331\245\006\214\321\232Z\377\331"
-byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\004RIDATx^\355\335as\2420\020\000P\207\376\377\237\\\346\346\254\236\225\023\205\020`\223}\357\333\341\264\232d\223\335\004\352].\000\000\000\320\216az\001\000\000\200\236\331\006\3466N/\000\000\335\222\367\001\000\222\371\232^ \007\225?\000\247\220\200\000\002\361\034\010\000\000\000l\347\320\363\265\321\301\003\220\210%\017\000\200\030T\246\341,}N\337\001S\237\214+\000\360Dq\000\374\257|\'oMiR\225a\253\362K\000\000\n\250C\222\023\000\313\275\332\352\351\277\354^E\005\275\032.\337\323K7Y\343 k\273\001\240y\2228@8s\373M\330\231\252\340\255\361\247\207\364\022\244\324\351\324wS\013 \214N3M\017>d\313\017//u^\000\234\367\316\274R)\240\272\247\237h\301\341\353\253\211\021\307\341\203\017t\301\332\321\240\263\222\357\375}\253\004\315\322\357J\343\243-\343\261)\2266\375p\\q\233u\033i\317s\000\360\317\352* n\232\343\267\325\003\013ley\004\232\021\277Np\346W\333\320\300\250\223\234\020=\234\342\025(`\351\200\246|\230\262\037^\256g\356\215\032-\000\303~l\367\3779F\330)@O\204\331\223|\335\221\257\305\000\311\314m\021y\341\264\316\252|\243\366\247\035\343i\315a\245\020#\245&\204\276\205Xh8^\345\n\003VQ\\\204`\375\007\256\246\213\301\364\337,\244\343\n\335;\356Z\035\350E\310e\260/ %\331.9\001\000m[_\275\254\377\211\\\364\317\341t\371\361\3649\027a\000\3752\273\201\217\234\202\003\320\021Y\r\322\263\014@c<\235\000G\030\343\375m\336 iW\325\352\367\007J\002\225T\350H\023\262-\317\213z\205\000\000:eu\007 \222\277yi\274\214\276J\260D\272N\233\253b\322uDgL\377\243\305\354\360\271\371\r\300\216\336.\276\236 o_\314\234\017k\335\"y\020\321\200\342\004\000\000\000\240\224\023V\000\010\307\215\017:\242\332\004\330\313\212\025Vm\321\243\025\001\360\244\325\257\230a\336\252\031^\0328\264\312\210\003\301]\277\337pU*;Z\350\017\267F\314\206\310S\000\244\0263=\003\320\001{-\332u-\2206TI\242\277I\033F\234\0164\372\345UV\033\200\014\332\314QT#\000\016\320H\'\337?\346\323\307\r_\017\036\334\271\007\277]\004\t\233\014\354/|va_\033\003@j\0028\234\245\227Q\024\000qY\240\222\373\035\000\202\001b27\001\310@\276\003\000\0008\311\306G\321\032c\373\t\000\000\3009\276\246\027\000\000\000\000X\"\327c\r\000\000\000\241y\026\033\000\000\232\340\356\n\000\313L\017{\366\316 {\377~\200r\323\025\021\000\000h\202R\036(e\375\000\000HK)H\337\276\247\027\266\231\2350\263/\000\000\000\307\363\210vr{\006@\370\335\337\236\215o\314\020~\260\000\330\217$\000@\"\366\201\233\364R5\364\322\016\000\250Fr\004\323\000Rq8@6\2451_\372s@\016*hh\211\031\013\220\217\265\377\215\336;\347\247}\275\267\022J9\360\002\310Ju\004\271\335\326\200uK\301\373\322q|\377r\24166t\2734}w\321{\025\330\213\331\017\000\273\220b\tmv\337*ry\" \000 \225\331\"\021\200\336\331\375U\022=\227\032h\000\000\200\276\335\367\245\321\367\247\034C\034\344\346\034\010\000\000(e?\271T\274\236\252\271\027,h]\315\267\007\3261\377\222\023\000T&\244\000\000\000\000\000:Up\037\030\270\270y\002\300Y\276\246\027`1\321\003\000\000\215Jy\220\357\004\366!e\000\000\000\000\000\355q\240\003@\021\247\3407\2113i\342\246\003\300\203\204\010\220\214\335pb\006?9\001\300\203h\310\352:\362\206?/c\017\300E:\000z7\270\357\005\000\000\000\000y8\r\004\200\\<\362\000\000\000\000\035s\350\017\000\000\000\000\000\000\000\000\000\000\000\375\030\374\241\000\000\000\000\260\220c\004\000\000\000\000\000\000\000\010n\364\337\010\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\177\000UW\201D\216\024\213\243\000\000\000\000IEND\256B`\202"
+byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\003\002\002\003\002\002\003\003\003\003\004\004\003\004\005\010\005\005\005\005\005\n\007\010\006\010\014\013\r\014\014\013\014\013\r\017\023\020\r\016\022\016\013\014\021\027\021\022\024\024\025\026\025\r\020\030\031\027\025\031\023\025\025\025\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000\372\231pH\251$\267VL\367\254\371\020\207\251\243^*@\224\241)\301i\341i\3060y\244\333\216)\343 \324\2523\332\236\02752!52&*t\025:\n\231jt\251\322\254GV\024\362*u\'\326\244d\312\214\363O\207\003\203\326\255\306\265:\361\322\244\rOV\247\203J\335*\007$\034\325\3339\303\200\032\245t\303c\265S\270\0058\246[!w\305]\272\265T\207wz\311nM7o\265\030\2466\rFP\032\206H\306*\263 \315W\230\n\2432\325\031\226\251J\225NU\305P\234u\2522\216\265RJ\2512\325\013\204\310\254\233\230\205f\316\265Be9\252\356\225]\327\025Rd\311\252\355\025W\226*\254\320\325yb\3005\365#\302A\310\246\311\273\313 \325R\236\265\"-H\006)\301y\247\204\247\004\247\004\247\204\342\235\345\360=jD\216\244X\352P\265\"\255J\242\245QS \251\320T\350*h\315XNjt\346\255F\240\365\250\230\217\264|\275\252\344m\305N\032\236\r=MH\r:\243qL\211\366=i\304\373\2275\024\310$z\273cn\001\030Z\227U\266\333\000#\245`\024\346\232S\232B\225\023\246*\026\250\036\240u\252\262\214\346\252J\005T\225EP\234u\252R\214\325+\204\2522\245T\221qU&\025\2378\353Y\267 \020k*u\252R\255Uu\252\316\231\252\356\225\003%B\352*\264\251UeN+\352\245\\\216j\013\224\035\252\231L\267\035\251\313\035<!\247\210\310\247\005\247\201O\013R*f\236\251R*b\236\026\236\026\236\026\244U\251UjU\025*\324\351\305J\206\246\363\02602jd\273\214\016\033\'\332\201$\3236\001\332\265j\030\266\017z\262\207\212\225[&\236\246\244\006\244SO^\224\244dT\016\2705z\315\267.)\322\002\255W\364\371\3600EZ\325\001{P@\342\271\306\0304\334PFj\'J\201\322\241d\252\362.\001\252r\361T\2465RS\232\247*UI\027\0315Ja\315S\2262{U9b\252s.3Y\267\002\262\256FI\254\351\327\223Te\\\232\201\243\250Z\"OJ\257$\'=*\007\204\325i\"\307Z\255(\364\025NQ_S7\000\021T\346\271\303`\212\022E\177\255O\034y\024\355\200\032\\P\006i\301i\333qOQR(\251TS\200\247\201N\000\372S\327\351O\\\324\212jU\'\322\236\r\014\304\214\003P\000V`\247$\037Z\330\202\330*\203\305[\213\013\305N\246\236\rH\206\244V\251\025\252E5*\323\307\"\221\243\317jD-\021\342\254G)~\325n\334\225a\305i\311\373\333B\007\345XR\301\363\032\204\305\212M\230\246:\324\016\225\004\240\000j\224\325Ja\326\251L:\325G\034\324N\225Vh\352\243\304\rW\226\032\245<X\315f\\\'Z\314\271Lf\262nF\t\254\351\206j\234\213P\224\346\243r\027\245@\334\324\022\020\265Nc\232\2450&\251\312\247\232\372~I\225W\232\310\277\273^y\346\262$\326E\274\231\335Z\266^\"\216e\0370\253/\251)\3440\305:=H\023\311\247\235AA\353SCz\257VVe=\352E\225}EYL0\247\205\364\247\016\r8\034S\201\305H\r8\036i\353O\006\226\242\232S\030\315V\223P\013\"\022y\255\353\013\3012\000j\362\234sS+f\236\246\244^\325*\324\253R\255H\265*T\200f\232\353\305If\001b\r\\\003\r\355V!-\236:\032\202\352=\215\315Sn\264\302=\2526\025\004\240\325II\357T\345\034\325I\005S\231s\332\252\272\325y*\264\225ZG\002\253J\331\252S\221\315f\\\340f\262.\3339\002\262\247^\265FT\252\317\025D\361b\253\274U\014\211\264U\031\333\035*\223\344\324\016\234UiR\275\376\343P\\\036k\235\324u\034\261\031\254+\271\236c\305W\207\3550\266T\234U\370\365\013\240\270$\325\230\265[\205\352\r]\207[c\215\340\212\335\32258f`\030\340\327S\r\234\023\304\n\3103U\256\254\204G+%6\t\314g\226\253\251{\216I\310\2531\314\262sRc=)v\220)\300S\307J\220u\247\257ZxRj+\230\267%r\267fD\277U\'\214\327U\245\313\265\026\267a\2202\373U\204;jE\344\202*U\025*\234T\252\325\"\260\251\024\346\245J\231zS\266\356<S\342\214\306\340\325\266\003\031\025=\271\351\232[\330\214\211\220:VaB\r&\312\215\222\241\2213U%\212\252K\026*\244\211\355T\346Bj\244\221\232\253,g\232\251,dU)T\203U%<U)\332\262\256\2379\254\311\372\232\317\225\t5VD\346\241d\025\014\213\232\253)\3329\252\023\276j\224\213\232\256\311Q\262T\023G\2055\351Rj{\327\255g\312Zg\357S\303k\300\315]\216\331N\006*e\264\\\362*O\262\'\245\037`F\355J\272\177\226r\274\032\277oys\000\332\034\325\250\257\356\035\276c\220j\331\216W\\\251\252r]\317lp\331\300\253\372v\254]\205t6\367\"@9\253H\374T\212\303\275H\270\364\251UE=PzS\366\3243\260U9\256b\375\322k\325\333\311\025\271`\244 \255[y\212\032\323\212@\302\247F\301\247\207\247\207\251\003\324\212\365*5XF\251\003\325\250\007\002\255*qC\234&*8f>h\035\253X\200\361\361Y\2671\340\232\250N)3\232c\001U\245\002\252H\001\342\252\313\025T\222,\325Ic\301\252\262G\223U\345\207\212\313\271\217\031\254\371\226\263nA\346\263\'\031\252\023&*\244\211\232\255$u]\343\305S\234\3435\2371&\252:f\241t\250\035*\"\225Zq\332\273\310\355\252t\204)\351S\250\000\361\322\245F\301\251\325\303\034\324\252\324\360\300T\250sS\000\rY\205A\030\002\256\243\237(\021\333\255$\210\263\247AY\0270\265\253\356\217\212\275\246k$0V<\327Gox\035A\006\255\244\342\254G(5b7\006\247SN \001\311\305dk7\311o\t\333\3115\317i\200\317r]\273\232\353\255\021v\201\232\264\253\363qW\242\007h=*\302\277\025(n\375\251\312j@jEj\231\032\246V\251c%\230\n\324\201\301P1VB\361QM\322\2504\246\031\003\036\225\257gv\262\305\327\365\250.\230\347\232\246NM5\344T\025]\345\3348\252\263\263\020y\252O\220z\323\325\267\'5\013\212\255,y5]\342\025VU\0305\231w\037Z\313\232>\265\235q\027\265f\317\0363Y\362\305\315V\222,UIR\252\312\265\2374d\223T\344\213\031\252\317\035Wt\252\356\265\024\203\002\250\3142y\257G\\\001JH\024\007\243~*D\233\025*\315\232x\226\245\216lU\230\346\315Z\216|\256=*\314w\005;\361NY\260\304Q2\211V\262g\263h\337r\344b\256\330j-\016\003\032\327MPp3\326\254\307\251\020G5~\337S^2j\347\366\264h=\352\215\366\263\301;\253\234\274\276\226\376]\203\356\346\265\364\253s\022\251\"\267\341\223h\025r\031\0015z\031\0161Sg\245H\033\214v\247\253T\212jE5*\232\225^\254[>X\326\214\007\221\353Z*8\246H\271\254\275E\010S\212\216\302VD\310\352:\212\325\202Ar\274\255Cqn\343$)\254\251\313+r(V\310\250e\"\253I\327\212\205\230\217cQ4\307<\324l\371\351P;\021U\245\3475Fu\315g\317\025g\334E\326\263\'\207\255P\232*\2452\340\032\245\"\325Y#\353T\345\217\031\252r\246j\244\251U\244J\207\312\'\265V\271\001F+6f\257B\022`SZJo\231G\233G\233OY\360qS,\246\236\263T\351?\275[\206~*\300\237\276j\330\220\262)\030$\324\211&z\323\312\007\355Q=\222\267A\3156K&\214\256\017\024\201\345C\216\270\240^J\017\000\325\250\347\226U\350sO\373\034\223\0343`U\333-5c#8\255dA\030\030\251\322J\267\000/\203\222+J\33759n\224\365o\316\245S\310\364\251\003\017Z\221_\025*\270\247\347\"\246\265|1\025\253n\334\216kJ7\316*R\271\025V\342\r\302\263\244t\260,\314\001\006\252\331x\201\"\271\307\360\223]L\027q]\305\320g\265g\352\026\013\202Eb\3106\022*\273\266sU\231\260i\010\310\250eL\325I\001\024\302\331\025\013\363U&\030\252r\343\025Je\315g\\\240\025\225p2MP\2252j\254\211Ud\025VD\315T\2260*\244\261f\253<\007=*\t\361\032\221\336\261\256X\263\032\245 \256\360\2751\244\305Df\301\240MK\346R\371\207\255J\227\007\216j_4v\251\222\\\325\204\230\212\267\034\371\\U\230\')V\022\340\263f\255\303>F*\306\354\212\232\000\017,2\0055\243B\307\034\212r\332\257\245Z\206%LqS\204\365\251\025\260jP\364o\301\251\342\271v f\266m.\014i\226O\306\254\t\325\316I\305=[\234\366\365\247y\341OZz\317\273\241\251Q\203\177\025J\261\372Hi\303\314^\214\010\251\255\346e\220n\342\266 \'\000\366\255(_8\253\210\331\024\254\271\254\177\021[\227\2678\025\310Gl\342@Gj\354t\260\311l\205\215i\271\022\306\334\344\342\271\373\305\332\346\263\231\2715\004\206\204l\212I\001\252\262\202\001\252\325\024\225^S\221\315R\230zU)Ef\335\034\326d\303\223Te^j\244\250M@\321T/\035U\232!\326\252H\200\032\2553\200\010\351Y\027\222\216k\016\342|H}*\273\334\212\356\032LTo\'\025\003\2774\202Zp\232\236%\3159e\251U\3623R\307.*\322I\232\261\024\2705r93Va\233c\003W\026e\316A\253).EOms\261\260G\025a\212\023\225\357V\255\300e\311=)e\230o\0304\341/\024\242Jp\226\22495,Rm`k^-C|!6\364\357J\214I\253)1\003\024\242NsR\211F*D\220\n\2369\317\324T\353.{\323\267\037Z\325\323\356r\200\023[6\362\202\243\035j\334rU\210\344\317j\315\327\357\021b\331\237\230\326\034\021\0162:\232\350aEKu\307Jql\036\017\025\231\251/$\372\326;u\250e\244\210\323\232\252\334\036*\251\316*\031\017\025VSU]\275j\264\240U\013\210\301\315fM\027Z\245$y5\013\305\301\252\222\246\321\234U)\037\002\251O>3\223YWw\312\200\363Y\027\032\211$\326m\315\333>k2RI\317z\257!\342\273\247\222\242ij&zg\231\315/\231\232\004\270\357R\244\325*\310EL\222T\361\315Vb\237\346\031\351W\"\230g\255[\215\367U\210\344\037\215[\212n*e\223\234\325\270\347\336\240\001\310\251\242\230\203\214\324\244\242\200I;\273\212\224\272\030\301\007\232`\220\324\212\365\"\275M\033\002k^\310\307\345\234\3435n\031c\000\202\271&\202\300\032L\212r\265J\231\251\220\324\312\3652>{\325\233Y\314O\317J\333\267\270\000\002*\332_(9\355P]\370\212+e!I\316;v\254H\256\336\376r\354I\031\255A\036#\342\264l\234\311\026\323\332\225\233kUK\342L|\372\326C\236j\0319\250\324\3554\342\340\325Y\333&\242b\000\252\362UIN*\234\215U\235\252\264\244\032\245.\016j\214\200\003U\246p\265\237s6A\305d]\334\254c\2575\207wt\362\023\216\005fL\t\316MR\225j\254\213U$Z\253(\256\305\344\250\032J\215\244\250\314\224y\264\242L\324\213&\017Z\235$\315J$\305O\034\243o=jhf\0079\353V!\233\025~9\370\025n\t\212\020\325h\334\253\220Tc\326\247Y\362\243\326\255[\314\244\034\236{T\253.\016jR\315/\315\216\005=%\355R\t)\353&jTj\235\036\255C9\365\255\010\2448\025:6\342\017z\260\312\270\004\032EZ\231\027\320\324\240f\236\252sS\000@\253\020H6\220\303\351S\307r\351\307jy\270}\244\306\330>\225\225*\\O!\3349\242\312\351\354\346\331 \305tv\267\036b\014U\373|\253\026\316\0059\233\234\324\027/\230[5\220FMF\365\013\014\232C\220*\264\246\252\311&;\324\r78\252\362\266A\254\351\347\362\332\240k\205#\256*\254\267)\234n\252\223N\243\275g\334\\\252\202sYw\027\244\347\002\263.\257\035\272qY\223\345\216I\252R\255S\224U9ET\224UI@\252\222w\256\225\344\250\231\352&z\214\275 \2234\360\324\341&*x\345\251\325\351\352\365*I\203V\242\222\255G6*\344S\356\000f\256B\370\\\325\250gU\310a\220jH\345\347\212\266\222\344u\251\226\345\220`\036*xJ4e\231\271\246\211I\316:T\221\313VR\\\325\210\3335j\0222+R\334,\213\367\272S\301\332z\324\250j\304l*UlT\310\331\251T\363R\016jX\305O\035I\345\3569\034\032\226960\016\240\217Z\232\343L\206\3517\250\347\326\231e\021\267m\215\310\355Za\370\246\264\225J\346s#\354^\224\337\'\013U\244Nj\273\214S\0108\315A6\002\325\tj\254\240\346\253J\3142\001\254\351\316I,j\214\304\036\225M\300-\311\305U\271G\035zVt\265Jc\326\250\313T\245\252\222\n\247(\353T\346\252r\3259Fj\234\243\255n<\225\033=D\317Q3\320\036\244W\247\206\315J\215S\243\323\367\323\325\352\304r\325\210\345\311\253\260K\322\257,\204\016jx\244\004\216j\362\310\230\301\341\251\311.\rXY2)w\221\322\255Y\314\027vOn\224\370Hy\016N\005Y\211\343\'\222EXB\024\360\331\253Q=]\212R\243\212\265\023\027\253+\307\0254|\036MK\270S\325\375*d\226\245Y3S#\324\351%Y\211\263R\271\000S\254\356@}\205\2705dF7\023\236i\333\361L\221\232N\027\2551!\021\236z\322\273\000*\234\257\270\234T\0143\326\241g\306j\264\215\234\325I\016\357j\255.0sT\245\352j\215\302\206\315g\3141\232\245.j\234\254\335\315S~\271\"\251\\\235\314H\030\252\254\341\007\335\004\326|\334\346\251\313U&~1\212\2431\315R\227\212\251-T\226\265\035\352&z\215\244\250\231\351Q\352R\303\024$\234\325\230\336\245\337@\222\244Y\252T\222\255G%[\212Lt\253\2518*2MX\212O\230sV\274\342\262g9\251\314\312H+S\307&EN\257\232z\271V\253\t&\346\311\251T\355\374j\324Rt\253q\313\212\271\013\344\212\323G\215P`\363O\022{\323\204\204\3645\"\271\251RLT\213/\275J\262\324\3136*d\232\255E6*G\224\225\250#\220\211\205i\233\262\201M8\334\007\031\025,3\205\214\236\346\230&\334j9\030\265D\313\201P;b\252\310I\351P\230\\\232\206H\231N1T\256\t\034b\250JMT\224\365\315Q\233\275R\224\n\251\"\202MT\237\330U\031\201\035\252\214\335\rP\224\325)MR\224\3259j\234\246\252IU%\025q\336\242g\250\331\3526z\026J\177\233NY9\251\226lT\2135H$\31585M\034\230\2531\311V\242\232\256\254\301\224q\315Z\202U\340\021S\203\207\3009\025k\005@\315Y\205\370\251\343m\307\0250\310\352:w\251Q\352e\220\021\327\232\263\033\0223\212\235$\301\346\256C7\025m%\310\353S\244\335\263V\021\252A.:\323\204\331\247\254\265\"\315R\254\376\365b9\275\352\3343U\241 +PLJ\235\302\255\332L\262DCU\210Sz\225\007\334Sa\230\020U\217\"\246h\231yS\370SC1\034\361L~\235MW\221\273Ug\'\261\250\262\300\023\232\212Gu\'5Zi\0279\333\317z\2430\004\203\217\255UtB\t=j\204\240\006\'\025Bq\223\322\252\310p\016*\254\213\222I\252w#x\254\331\341 \032\316\23623T&\025NQT\345\025NA\232\253 \305S\226\245w\250\231\2522\364\302\324n\243}9d\247\211\251\353-L\262\324\321\311\232\237uM\033\325\250\233\245\\\216L\0001V\341l\200GQW \234\003\226\0258\224\2663\322\247\215\361\364\251\326Nj\334w\004\014\036\207\255L\241H\340\323\243\033\233\031\253\221K\345\014\003\305M\346\207#\212\260\222\360;\n\2369qV\026PH5e.=\352Q(\"\234\036\234\263b\236&\251\021\363\315Y\215\352\334Rb\255\244\334T\241\203\212\217\3156\307\246EZ\206\361xd\340\367\024\263\243&%\037t\325\270&,\200f\236\315\236j\264\262\363\305W\221\262*\002\304\032\214\236i_\014\265FU\034\325Y\022\252J\235j\224\311TfJ\251\"\325IES\232\250\316+:q\326\263\347\031\252\023-R\224UI\026\252J*\244\213Q3\324L\364\302\324\335\364\273\3054\265&\372<\337zzI\315N\262U\210\244\305XY3SE%[\212Z\267\024\270\2531K\203Wc\313\000s\326\256,\245Wa\352*h\217J\264\252\031\200\006\245\306\321\234\346\245\211\217\004\236*x\345\332\340\212\263\347\007|\221\217\245Jd\371\370\301\251VB\016\t\251\326SV\240p\303\223S+\014\324\213%J$\247\211)C\234\324\311!\365\253\021I\357Vc\224U\250\245\317z\263\034\2705c\211\206)\237f*\337#\021R\334]2Z\371g\222N*[V*\200U\255\377\000-BFr{T,\352\006\000\311\244X\374\300O\245V\225\n\223\221P\0316\347\322\241\220\214\325ix\252\262\032\2470\2523\n\247-R\232\252H*\234\312*\205\302pk:e\254\371\224\325)P\372UIET\221j\244\253T\031\2526jc>*2\364\236e\005\363H\317H\032\236\257\212\261\033\325\204z\231$\315N\257V#\223\025n)j\334Rf\256\3036\334U\250\231\244n*\334nGZ\260\217\315L\037\035\rZ\206Pc+\306jH\201\'\003\232\225_i\367\251\026L\232\221\037\232\260\222T\351/\275O\034\276\365:\311R\253\324\201\351\336g\275H\222T\251\'<U\270\344\000\n\261\034\2705e$\253\226\263\001\234\366\253)&r}j\264\362\356\231W\323\232\271\014\243\212\260\347\021\344SL\233\243\300\340\324\0016\361N\307<qFC\374\255To-\214\'#\356\325\026\346\240\224\343\212\253!\353U&|U\031\233\255R\225\272\3259MU|\325Yy\252\223&j\214\261\363Tn#\252\023F@5FU\252r\255T\230\016\325\222\306\243c\212\211\232\243&\232Z\234\017\024\322\324\003N\007\025*=N\222U\204z\260\215\322\247G\2531\2661W\"\223\212\271\013\346\256\303!\r\220pj\322\310Y9<\212\261\033\340T\361\2608\253\031\nx9\251\341r\255\221\332\247w\336\331\003\002\237\030\001\271<S\263\206\300\251U\361SG%N\222T\351-N\217R\t)C\363R+\363S$\231<\324\361\311Vc\222\255\305&j\312>\034\014\365\255\010\216\341U/\321\300\334\203-T\241\324\245\211\260\350x\255Hu\210\335v\223\203SA9\222C\351S\203\223K\322\214\007\344u\245p\'\215\220\365\305dM\001\215\210\"\252J\242\251\312\235j\224\361\325)\023\255T\226<f\251J\207=*\264\234pj\234\303\234\324\017\202*\234\342\250MT\'\3475BE\353U&J\245\"\326\031|\324L\325\0135F[\2327R\203\2321KJ\264\3655*5XF\251\321\252\304mVcl\325\270\232\256\301!^\225~\325\306\356j\334g$\216*hH\'\223O\363\n\232\273\004a\342\335\273\237Jt2\025lv\253\3628\362\324\212[b\035\260M9\324\2419\241e\251T\232\2367\305L\222\325\204\227\212\225d\315H$\030\247\253\342\245F\251\321\352h\336\256E.*\324o\270\212\323\205\372U\201\030n\264\206\301X\347\024\035\035Ko\300\253\260E\030\217\005p}qU\356\225\240\372\032\250oppF*H\256\201 \203V\031\371\016\275\372\3247 H2+:h\272\3259\"\025Jhx\353U$\204\3259\241>\225Q\324\001\312\325Y\343V\352+>x\366\237j\251\"\342\253\311\036ER\232\016\rQ\232\021Tf\210`\326|\313\324Vm\310+\234W0e\2464\325\023I\232az\004\224\365\222\244\r\305\033\251\300\323\307Z\225OJ\225\033\0252\267J\2327\346\255F\370\253q6M]\205\270\253qI\212\267\024\225a\036\246V\334j\300c\027\000\325\210\016\356\247\0257\232zv\251T2\250n\3254r\344\363\337\326\235.\325#i\317\255=\035\202\343\034T\312\330\003\006\236\257S\244\274T\253/\275H\262T\311%L\255S#\324\310\370\2531\311W!\223\246+J\332]\303\336\264aj\271\035XQ\221R*\372\200id\205%\306\345\2527\032bHI\013Xw\226S[\313\230\363\266\237k|G\311 \305Z.1U\245\301\252r\255S\225j\273\261Q\212\245>I5Fl\325)GZ\2512n\006\251H\274T\005j\264\313\326\263\347\025\2378\316k>e\353U~\317\275\362G\025\307\315\002#\360\300\255DmC\236\033\255$Ve\333\031\250\356\240X\007\'\232\247\031\334\330\355Vg\204\302\252s\234\323\025\363\305)$S\321\363V\025\270\247\255J\016)\352\330\251\3435f#V\243j\273\013\325\270\332\255Fr29\2531\275L\255\212\231\0375n\026\007\251\2531H\241J\221\370\325\230\244P\304\021\362\323I\001\316\321\305?\177 \342\246\363\314\230\036\224\241\261R\243\346\244\251\024\021R#\342\245Y9\253\t/\0252J\rL\262T\351-[\202n\225\245\013\364#\250\255[Y\203\014\326\204MVQ\252u4\372\017\"\253O\010|\344\n\310\324t\361\260\224\034\212\315\267\235\224\354n\242\246v\007\332\240\222\252J\265ZE\252\223-Q\225G5NE\033H\357T\344\371MS\224rj\244\237)\252\263\265g\317\315Q\230\023\232\246\361d\323^-\203\025\346\315\273\326\232]\307zb\\I\03185\014\316\322\234\223K\003\010\216H\315M%\321\224\000\335\251\321\204\336\247\267z\320\232\3229\"\334\244\n\254\260.8<\320P\245H\2075&sJ\246\247F\2531\032\267\031\253P\267J\266\231a\305h\3332\252\373\323\367\374\325*>jdl\032\263\033\325\244n*Q&\0109\253?j\005@\300\315;\206\213\266sC!\213\036\364\253-L\222S\304\325 \233\212\221$\315J\255\232\221^\247G\300\251\243\2235a\036\255C&1Z6\262\347\0035\247k!W\002\265\242|b\255\306\365:\275J\255K\273\"\230\306\252\334\200T\3277r\241/\016\rJFV\241\220b\253\311U\334UI\226\251\312\265Y\220\036*\215\324;I\252\023.*\224\343\212\243/5NQ\315Vh\362j\023\030\\\232\245p\374\361^vTS\031\001\250Y\0054\307L)I\262\234\001\025\"\311&0\t\305I\031d5wp\226\023\223\363\n\2058\351R\201\214f\227\245H\225f#W\"\253)\306*\312g\327\212\267\t\333\200\017^j\316\374\232\221[?Z\231\t\2531\034\325\250\332\246\0074\36552\311\201\212x\224\205\366\247\253\253\'\275H6l\352wT\221\252\340d\342\234T\037\272sM\022m5<sT\352\365\"=X\215\361V#l\325\250\233\245]\267\223\004V\255\274\273\200\307QZ\320M\2203\326\256\306\365:=L\257N\335H\315\305U\270o\224\327>\307\315\271f\307J\220\360*\'5ZA\236\365]\327\035\352\t\000\305U\224\n\250\303kT7\021\356\004\326]\314x&\263\246J\241q\204\006\250<\301MF\322+sT\247\227$\212\243p@\006\274\371\333\006\230^\230\306\233\272\220\363@\024\240T\2109\251Jw\024\203 \342\244\214\363Su\031\244\3075\"\325\210\215[\214\325\270\006\343\223V\023\203\212\265\t\251\203qS#T\350qS\306\325b7\251\303\361OW\251\003\323\303\346\236\246\236\246\245\317#\006\236\222\030\363RG\266@r~n\324\204\030\3175*KS#\363V\221\352\324MV\242j\265\023\343\025\247i.\334\032\326\266z\275\034\225a\036\246W\247\357\244/U.\237\367m\217J\310\215pI\365\245sP\271\250\034\325i\rV\220\325i9\250\037\236\264\303\2021Tnc\0075\231<X\315cj\000\252\265`I7\316Fj)n\031A\250b,\371&\243\270\351\\\004\213\221P2\225\246\023L\245\006\236\275)\300\017\306\236\274T\252r)\271\346\246U\302\203\353R/\"\227\030\247-M\021\305[\213\223\317J\273\013\356\\\n\260\212jx\316*d5:\216*x\300\035jP\300t\251\221\252\302?\024\365p)\341\3015&\010\344r)U\310\352*U\2234\365njM\371\245V\346\254n\310\303\036E m\255\212\235H\030\346\254#\022\271\2530\313\315[\211\352\324rb\265,\\0\301\255h\037\245\\\215\352\312=L\262`R\371\236\364\031*\245\334\231\033}j\231\300\250\235\252\0275\013\232\256\375j\274\234Uw\025\003\016\265\013\034\034Ui\210\254\351\310\346\261u0\0326\305s\313m\373\302MV\276Q\270\001N\2010\225\005\310\3005\347\356*&\250\034`\373S(\247\251\247\365\036\364\3408\251W\201M\251P\346\246\216\244\305.0)\361\325\270\252\355\261\344\232\267\234\032r\234\324\350\325:5L\255\221R)\251\220\324\312\335\251\375\017\275/Zz\226^\364\361+q\232\224>i\341\217\255H\246\236\036\245\363I\"\237\2701\342\245\215\361\326\254\302\344\236*x\216X\325\270\237\003\255Z\215\372V\205\234\233XV\314\017\300\253\261\275XI*u$\214\346\220\311\212c\315\264UW\220\261$\324,\365\0335B\355Q1\250\234\346\253\270\250XT/\322\252M\305g\\\315\266\263\246\270\0075\215w)\221\360:U9p\242\263f]\317R*\341*\215\321\353\\\023\324-Q79\250\310\30578\247)\251T\323\324\324\240dS@\353R\'^*U\033ML\274\323\251\312*\304F\257[\234-N\247\346\251T\363S)\332qS#T\213%L\215S#T\212\330\305K\273=\351\312\325 zPrjU4\360\325\"5H\030b\234\247\232\225\rJ\257\201R\307&\rY\204\356j\270\207\035\352\304oZ\226\030#$\363Zp\312*\374o\322\247G\253)&\0174\307\230e\275\005V2\356l\366\246;\344\324e\251\214j\'5\031\2465B\302\242e\315A\"\342\250\334\266\320k\234\325.\260N+8O\275}\352)1\216j\204\303$\342\253\264}\351\033\204\254\273\263\326\270g\025\013\324-\336\230i\204P:T\212jU50a\212h\357NC\202*\311!\224c\255=*N\264\365\025*u\253\221\034U\205l\324\253\351R\203R#T\203\202\rO\346g\034T\252\331\251\003\324\212\325 4\340\324\365j\231M;uI\031\2512i\312\325*\276*P\365\"\037z\261\014\273M[\212Q\202;\325\310\001fPkJ!\264\3435r\031\366\016kJ\0312\242\254\304\331\"\244\222o\233\332\241.I#\265&\354\nL\346\2023M+Q\272\212\210\361\232i\\\323\031=j\026\342\252\\8QX\227\367\203\220\rs\327\222\006\'\232\246\247\322\221\224\236\265\013\307U\346\342\2539\371k.\364\365\256)\352\273\212\201\272\323\033\245 9\242\234\006\005J\206\235\234\232Z\220\037\224U\233Q\271\3005+&\323N^jd\024\365\341\252\324g\212\261\035N\2309\247/<T\213\326\246Z\220\014w\247\253T\200\324\250x\251T\346\236\0059z\324\310jJr\361O\335N\r\212x~)\342J\225\037\232\231\037\232\265\013\326\205\264\274\203Z\266\357\310=j\342\252\273\202*\374mV#z\220\374\324\234\342\224-;g\265\033)\254\224\306\216\230\312\005F\307\025\004\217U\'\235P\022Ms\372\246\252\252\010\006\271\233\275Kq85M]\2465a#\332(~*\t\017\025FsU\245<Vm\347C\\[\325w\357U\333\2550\365\246\3644\271\346\234\246\245^i\304b\225j@*{f\331 5\243*\253\240aQ(\305L\213O\013\315L\234U\210\215N\264\341\326\245^jd\346\245\333\305(\030\251\026\244S\201R\247Z\224p)CsR\243T\252sJ\0174\354\322\346\224587=jUz\2327\253q5^\205\361\212\322\263\230\003\311\342\264 \227\201\357W\342\223 U\205z\235^\244\014\rH\270\247n\244\3155\252\0265\013\270\025R\342\355b\034\232\305\277\326\326%85\315_x\201\237 \036\265\2135\304\267\014z\323V\330\236MY\212-\225)\351U\344z\253$\225Rf\315V\224\361Y\367]\rq\222\n\201\307\006\253\267z\215\272\323OJN\334\323\227\265O\035+\002\016i\310sR\255K\022\345\205h6v\252\372S\236=\244S\323\245H\253R(\251\243\004b\254\240\310\025!\030\0304\345\342\246N\2652\232RsJ\016*El\325\210\310\247\356\3158\nx\310\251\021\261R\016E7&\234\r;4\240\363O\017R\306\365r\'\253\221=\\\215\272`\326\202\310J\250\3175\251o\'\3129\253h\365:\034\324\351\315N\242\237\216*7;j\273\316\001\353T\247\277U\'\232\315\273\325\025A;\305`j\032\300 \341\262k\237\271\270\232\351\310\031\3052=<\347-\311\253\th\027\265)\210\001La\212\212F\300\252r\275U\222J\253+T%\262*\235\330\371Mq\256*\274\274T\rQ0\2465\003\221N\007\024\360\373zu\247\253\340`\323\366\225>\306\245Njx\2705\242\222\'\222G\361R\026\336x9\025*-L\243\212z\214\324\3109\031\253Q.H\307J{\214\032N\342\245Z\221\rI\212nqNV\301\251\222J\231_525?4\240\340S\203R\371\204S\271 \0322E(jpn\225,g\232\265\033\325\330_5n7\306*\374Sr\010<\212\273i9\r\203\320\326\244o\234U\250\232\255Fj\302\323&\235b\004\261\002\271\375S\304\261[\202\003sXrx\215\346\'i\340\325+\213\331\337\221\236j\224\236|\247\223M[\022\334\2675:Z\252\366\247\030\200\250\330\001PHj\254\217\212\253$\234U)_\255T\221\362j\031_\212\200\276\005U\272\223\3445\311\270\252\322\212\201\206\005D\324\312N\324\231\301\247\003\315H\016jd=3SG\2001\216j\312E\3019\351R.kJ\306\334K\033\036\343\2326\341\216:\n\231W5\"\245L\253Vb\\\014\320\334\223H9\251\000\251\027\237\255H\017\024\326\244\247\241\315L\244\324\310\365(4\355\324\340iI\315<9\333\212\027\255;p\034\032P\0163\232\2222j\304M\315_\207\245N\215\315^\216E\\\023\351V-\356\202\262\346\266 \230\0209\253\361?\275L.\025z\260\030\250\345\327!\201NXf\271\215k\304F\340\225\210\326\020\201\356d\335!5z\033EP8\253!@\\\020)\255\002\230\362:\324\005v\365\2463\342\242w\250\035\352\254\262U)d\252\223I\212\2454\265X\311QH\374Uw\223\002\250\334\313\305`?z\256\353\232\201\305B\324\306\024\316\224\224\3454\364\251\322\254F3V\243\\\212\230%]\261vS\264\016\274T\306&W;\252d_J\224-M\032\016\265)4\230\244\356=)\353\327\212\225pM8\361\322\233F3NPjT85*\324\212\324\374\322\206\305<6i\300\361N\006\227\357P3\232\221X\325\250G\031\025r\'\342\246\rR\302\344\270\025b\3567\2013\236z\322\332\353\333\027k\360\302\256/\211Q\027\2575J\363]\226\343%3\212\243\346\3179\371\230\342\246\212\000*\314`-N\216(g\250\374\322\265\024\223\363\234T\022H\034q\326\252\313!RA\250\032j\257$\231\252\262\275R\231\252\234\255\326\252\310\370\250|\314\325y\244\2527\017Y2t\250^\253\270\250XS\010\3155\270\3152\224u\251\022\247\216\255E\332\256D*\300^\005_\323P\0311\214\236\325,\333\274\302\017Z\2225\342\245\013\212\225\026\234W\006\224\014\320\253\234\201H\277.jD84\357\247Zv\314\214\367\242\201\326\244SR\255-9Z\234\r<q\315(j\230a\226\200\304g\232\025\252E9\251\220\342\255+\201\203S\254\231\024\364\227k\002+E\356\005\315\262\203\367\226\263\246\265W9\357I\025\242\257QV\025\002\256\007Jp\001i\336f(\363}\351|\374Q\347\373\323Z^3P\274\225]\345\332r\rB\367\033\211&\240vS\337\232\256\317\326\253\310\331\342\252H}j\244\307\025JF\346\241f\252\362\265Q\270z\241 \252\357P=D\335i\207\212a\346\231\336\224T\211\326\247J\265\017QW\241\031\253h\271\025{Oc\024\300\201\223S\335\260y\262\0063N\210qR\205\366\251:\n\010\343\236\264*\226\316)H\302\217Z]\270L\323\226\244\2152y\247c\024\335\264m\247\016\265\"\232x9\245\247\n~{R\200)\303\"\202\304\232p\351\357OW\305L\217S+f\244G\307z\225$\315_\265q\345\2675\027\237\363S\374\340\302\236\217\236\rF\362\200H\3153\315\246\031\275\351<\352<\377\000z\014\371\357Q4\271\250\232L\324\016\325\013\265G\346\343\257J\206S\223\307J\2530+T\246l\325I\rWf\3075ZG\340\325\t\233\223PI\322\253I\326\240z\215\251\215Q\236j0y\247\016\265*\n\232:\267\017QW\340\025v5\253\326\t\272Lw\253W\026M\010,\325\034U8\247\0003\317J\t\311$\216)\312\274eO\341FI\\zS\261\306;S\225qO\035x\245\355@\030\240\214\322\205\247\001\371\323\207\006\236\r\003\216)s\216i\350x\346\237K\212ZNjElT\213%?\314\3059%\251\343\271+\306z\323L\334\365\251\026\343\025 \271\343\255F\322\373\323|\352i\232\232f\2442\321\347R\031i\215%D\322T,\365\0335B\354qQ\031x*{\325[\210\312\363\332\251=V\225\252\244\255\305R\230\344\3242\032\256\374\324\017Q1\3050\324g\200j1\326\244QR\250\251\243\025n\021\315hA\305^\214g\025j\326o!\301\255\\\375\256\331\212\271$v5F0C`\325\221\322\220\321\236)G\035)\353\363S\327\221O\024\374c\024c&\227m\033ih\035i\324\264\341\315(\031\245\3058\032r\323\300\315!\342\214\322\206\305\006JP\346\227\315\243\316\367\245\022\237Zw\236}iL\347\006\232&\240\313M\363h\363\2502Q\346\373\323\032J\211\244\246\031)\215&j6z\201\317z\215\247\316\003r\005R\270\353\221\322\251\310s\232\2515S\224\3242\032\201\215B\346\240c\3154\323\037\2454\014S\320T\2503SG\326\255\303W\341\355W\242\251\212\344V\226\226\342<\347\322\230\334\310}\352Q\322\230\306\223u9M<\034\032\225H<\216\r<u\251@\004u\2472\025\301\355M\'4\240b\235\2674\205piq\232P)h\034R\203O^\264\374\001A$P\016i\033\212n\352\003\202=\351\246B8\240I\232O2\224I\232\014\224\276fE!z\004\231\240\275&\374R\031h\363\r#I\201Q\031sL/HZ\243f\250\335\352\273\232\201\344\300 \212\255:aC\016\225NCT\346\025ZF\250\030\324,j\"ri\244\323\030\346\222\236\017J\2321S\240\2531U\350j\364&\254\003\305\\\260\221c\220\0223SNA\220\2200)\001\355H\335)\235\351A\247\206\315H\246\244\007\0252r:\324\200\2201\332\215\243\035y\247\000\r;o\245!J1\266\234@8\305*\343\222\177\ni\024\202\236\247\025 n)\031\251\205\266\322\026\315\000z\322\021\212c\036)\233\261H[\212M\370\247\006\310\241^\224\232n\374R\031)\276g4\273\363Az\014\224\306j\215\232\230_\336\232\315\357Q\273{\324L\325^Nj\r\370\340\364\252\367\010\001\310\351T\244\346\250\310j\0075\013\032\214\265!j\2174\003\315H\265b3\203S\250\364\253\021qW!\253\321\032\260\246\254\332\214\310>\265nu\333!\3150\036)\031\252=\324\252i\301\251\352\325*\266jdl\016\2658c\217\2558q\365\247(\334\300\366\247\200E8\r\324\2141IA\244n\224\332Pi\331\244f\335\212a<\236i\003\323\203\346\224\234\212c\n\215\233\265D\315\3174\003\232v\377\000\227\024\320\330\247n\244\316i\244\363Q\226\301\244\337\212<\312<\312B\364\322\365\031jizc5D\315Q9\252\362T\004\214\340\364\252\322\257>\325\232\346\253\2675\023\232\214\232ajniA\315=MO\031\305XF\253\02175z\023Wc\253\013\322\254\301/\226\300\325\251\030\314\300\203\222i\235\016(j\214\214Rn\301\245\rOV\251P\344\342\246S\232\235\016GZ\225O\345S.:S\310\310\307zA\22584\247\232a\0304\036\r\007\232a\024t\244\335Fi\214\3304\335\347\241\246\356\301\247\371\270\306\r!\226\241w\317z\210\266M86\005.\374\322\026\245V\241\2157}1\232\243-\212M\364\233\3517\320^\232MFZ\220\2651\252\'\252\356j\0075\0037cY.\331\250]\252\0269\250\330\323\t\244\315-=Njt52\032\263\021\346\257@\325v&\351V\220\323\327\255lZ*Ej\314H\334j\231o\234\322\223\232c\324D\363J\032\236\246\246S\336\246\214\344\023\336\247C\305N\2540\000\251\227\232~1\212x\033\250+\315&)\270\315#q\332\232zS\033\245%4\266\001\250\313qLg\356i\206N\264\233\351\013\323\013Sw{\322\356\244\337O\334\n\214u\241\034\003\315+\270\317\025\013=4\276i\205\351\205\351\013\322y\224n\315\005\361L-L\335K\272\243nj\t*\273\365\250\034qX\254\325\033\265D\315Q3\344\323\t\311\242\224u\247\251\305J\255S\241\25315\\\205\252\374-W#\351O\'\025\243\245\342}\310\307\2652\346?&]\264\325#\024\3275\013\036i\241\251\352\334\324\350\36525XB6\373\324\312jx\315J\255R\003\351N\r\353JW\0034\303\355L\'4\332a\357L\'\025\033\032\215\215D\3074\256\212\250\010<\324\005\250\335Mf\246\356\245\335I\273\232r\276)\322\034c\025\037\231\220y\250\331\351\205\351\245\351\245\351\233\350\337F\3727\323K\323w\221I\276\202\325\033\232\257%@\346\260]\252&j\211\232\243-\212n\354\232\\\346\225M=MJ\2652\034U\230\315[\211\252\364-\322\257D\334T\216x\251\264\253\200\227j\t\342\266u\013371\256OS\212\314\2267\203\357\014\032\204\311\232\215\232\231\273\232z5N\206\246F\251\321\252\302=N\215R\251\251\001\305;9\247\211N\334\032BA\036\364\306\024\303\322\233\322\230\3075\023s\232\215\252\'\342\242-M\3154\236i\t\244\335HM\031\246\226\245\363x\305F\315\3150\265!<u\250\313S\013Ro\245-I\276\215\331\244-M-I\276\215\364\3265\033\232\256\365\316;T,\325\0335F\306\200iA\247\255J\242\244Z\225jx\315Z\211\252\344/\322\257E%L\317\305WYLr\206\025\326h~ \212%>h\007\353Y\232\316\254\267\327\004\250\001{Vx\222\221\244\246\357\251\021\252tj\231\032\247F\251\321\252tj\235\032\235\272\234\036\234\032\227u\005\262)\255L&\230\304\020y\346\242\'\025\023\036j65\023\032\211\251\233\250\337F\354\322\365\034S\\\221Q\226\244\337H[<Td\323wSX\324e\250\335\357K\272\215\324\026\244\3151\2157q\244\337J[5\033\032\201\315s\014\365\023=F^\230_\232M\364\360\325\"\032\235\rH\r=O\"\247CV#5f7\305Z\212\\w\251\304\331\024\306l\322\007+\320\323\325\263O\3631Hd\244W\346\247F\253\010\32525N\215S\243T\350\3252\275<5;4\3458\245\245\335\212L\347\2755\215F\306\242z\215\215F\335*\'\250\230\340\324D\323sJ\032\237\277\212c\220G\275F\314H=*2\324\306z\013\023\317jil\323KqL&\223\"\200\324\355\324\023M\'\024\302\324\322\324\335\324\273\251\013f\242z\344\231\252\026~i\205\263L&\200i\352\3252\032\235\032\245V\251\020\346\246V\305J\255S#\324\313-J\262\324\202L\322\207\247\207\243}\033\363J\255S\306\325:5XF\251\321\252ej\235\036\245W\251\025\351\352\3315 9\245\315!8\243\"\214\212\215\252\026$S\030\212\210\237z\215\216j\'=j\026\357\353Q\357\2406)CT\315\0311\202*\2618&\242s\216{\032c7\024\335\307\007\024\315\374\321\272\202sII\232\001\243u\005\263Q\223M&\233\272\220\265\033\351\254\325\306\311&\005@^\232^\215\324n\247\253T\310\325:5J\032\245V\305J\255R+T\212\325(zz\275J\262S\204\224\360\364\355\324\340i\340\363R\241\251\221\252\304mS\243T\350\325*\265J\215R\253S\325\252P\364\273\275\350&\223&\214\323I\250\234\346\241v\250Y\260i\246L\365\250\334\344T.sP\261\305\"\344\322\206\301\251R\340\201\216\324\331\007\313\232\256\355\306*\026zg\231\264\361M.\010\367\244\rO\316)CPy\244\305#qI\232kS\t\250\330\323KSw\322\027\256.W\317\024\315\324\322E\033\250\335\357NV\251\221\252tz\231\033\214\324\252j@\325\"\265H\255R\007\247\253\324\212\364\360\324\360\364\365j\221Z\236\247\212\225Z\246SS#T\361\265N\215S+T\212\325(zz\265H\032\236\0334n\244\317\275&\352\013T.\325\0035B\315L-Lf\250\235\263P\263qH\257\264\363\322\224\237\342\006\200\365an\025\242*G5NF\346\253\273Tl\324\202Lf\200\334dS\203z\322\356\301\245\337N\335\232i4\312\t\250\313S\t\315F\306\230Z\223v+\211g\334i\245\251\246Nh\rN\rN\rR#T\350\334\342\254\253b\245V\30585<5H\036\236\257R\007\247\253\324\212\324\360\324\365z\2205L\255\305J\255R\251\251\221\252ej\231\036\246W\315H\255R+\344\324\301\251\352\325 jP\324\205\251\245\2517Tnj\007j\201\232\243-\212c5D\315Q\261\250\231\316jx\244\030\301\250\244\014\271=\251\253/\024\307\2235\0135F\315L\335R\006\0058<\322\357\315.\356y\024\023F\354R\356\244\337HO\025\033S\t\246\223\221L=i\204\327\010_\003\336\232\322{\320\r;w\275(jpj\221\033\025f\023\334\325\205j\2205<585;}9^\244W\251U\352Ezxz\221Z\244V\311\251\325\252Ej\231\032\246V\251U\252Tj\225Z\245W\251Q\252P\364\360\365 ~)C\320Z\232Z\232^\230\317\232\211\316j\0075\0135FZ\230Z\242g\250\313sNF\343\2575(\223z\342\240a\264\234~U\0235D\317L-M\'\002\205lT\252pG5.\375\324\323\3054\232n\352M\364\273\351\245\263L&\230M!j\215\272W\000^\233\276\224I\212P\371\247\006\247\206\251\020\344\342\254\243b\246W\251U\251\301\251\341\350\363)\312\364\365z\221d\251\026J\221^\245W\251\221\252uj\221Z\246F\251U\352Tz\225^\246G\251U\352Uz\221^\244\017N\017N\rF\372B\324\335\324\302\324\3065\013\324/Q1\250\231\2526l\032f\356h\r\214\323\204\233N\r\022\034\214\367\252\354s\365\250\313`\363\322\243\'4\207\245 <S\225\352T\222\245\373\312@\250\311\355LcL&\223}\033\251\013SI\2461\244&\274\340\275!zr\265<585H\033\002\246\214\342\247V\251\025\352Uzz\265.\3727\323\203\323\303\324\212\365\"\275J\257R\253\347\212\260\255\212\225Z\246V\251\025\352Uz\225^\245W\251\225\352Dj\231^\244W\247\207\247\207\245\337K\276\220\2657}4\2654\2651\215D\346\240sQ1\305D\306\243\007\223I\272\206$\342\236\037#\025\013\234\032\211\216i\234\032i4\2314\003\212z\265O\033\340\323\2449\347\275D\335*3\326\231\2327Q\272\220\232i4\322s^i\276\200\324\360\324\360jE4\365952\266*Ez\221^\245W\247\206\245\335F\352pzpzx\222\244W\251\221\252x\233<\325\205j\221^\246W\251\025\352Ez\225^\245G\251\225\352d~*P\364\365zxzxz]\364\340\364\026\246\226\244\335\3054\2654\265D\3475\023\032\211\216j\0264\317Zfy\240sJ[\024\306n9\344T,})\204\346\233\272\227<SsJ\033\025\"?\275J\036\232O\345M=j3\300\246\346\214\322\223\232i\351L=+\3147\373\323\225\263O\rR)\247\206\251T\342\236\032\244V\247\207\251U\351\333\351w\321\2774\340\364\340\364\365z\221^\247G\253(\330\0252\275H\257R+\324\252\364\365z\225^\245W\251\321\352ez\224=<5<=<=.\372P\364\355\364\335\364o\244-L-O\213\004\034\323\032! $v\252\222)S\212\205\316\0053\2650\234Rn\346\202x\250\230\323X\217Ja\365\246\3654\214px\244\315&iCT\212\365 l\212i4\323\322\233HN(\0074\264\303^T\0175\"\232z\232\221Z\244SO\rO\rO\337OV\247\207\247\007\245\363)C\323\203\323\203S\203\324\250\325b&\311\315XW\251\025\352Uz\220IR+\324\212\365*\275J\217S\306\3652\275J\257O\017O\017OW\247\007\247o\243}\033\2517R\356\367\244=)\241\312\322\244\333r=i\257\031\225sU$R\265\021\351Q\267Z\214\234Q\276\220\234\323\017\024\314\343\232C\323\"\233\214\212nM!4f\234\032\236\036\234\0334\023\232i4\332)I\310\244\257\'\rR)\247\206\251\024\323\303S\367S\203R\206\251\025\261N\017N\337F\372P\365 zpzz\275H\036\254\306\330\0252\275H\036\236\257R\253\324\252\365\"\275J\257R\253\324\310\370\251\325\352Uz\220=8=9^\244\017N\017F\3727\321\276\227u\033\251\t\246\023\326\205\220\251\347\2452f\335U\337\212\211\215D\346\243\335K\272\202\331\250\3114g\024\231\306i\2074\322h\240\034R\206\247\206\247n\240\234\322\023\212N\374R\321^J\r<7\024\3455 jxjpjpjP\324\360\364\241\351\333\363F\372P\364\360\364\360\365\"\275I\033d\325\204z\231d\247\211*Ez\221^\246W\251U\252Uz\221^\246W\251\321\352Ez\220=<=8=<=<=\033\351wQ\272\227\177\275\001\350\337HZ\232Z\230\307\212\211\315B\306\243cQ\223\212B\324\006\240\372\323I\241Nx\357M<SI\3157u&iriCS\303R\223Fi)sFk\310\303sO\006\236\032\236\255O\rN\rJ\032\224=.\372pz]\364\233\362i\301\351\341\351\352\371\251\003\342\246G\305L\257R\253\323\303\324\212\374\324\252\365*=L\217R\253\324\250\365*\275L\217R\253\324\201\351\352\364\360\324\360\324\340\364\241\251wQ\272\224=\033\351w\323KR\026\246\226\250\331\252&4\302x\24651\272R\003\212]\324\215\326\232OCN~G\024\3003\232a\353A\351M\315(4\340\330\247\356\240\0323F\352Z\377\331"
+byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\001\322IDATx^\355\335K\n\203@\014\000P\321\373\037Y\351\246]4\264\2102\352L\362\3362\224\ne\254I\234\3174\001\000\000\000\000\000\000\000tf\216\001\000\000\222\222\371\001\000\000\000\000\000\000\000\000\000\000\000\000\\m\211\001\000\000\000\000\000\000\000`Dk\014d\263\305\000\000\000\000\000\220\207\006 oN.\003\000\370\351\2664\351\266\013\001\000\0000\210\335\2278\273\037\000\000\000\000\252\3226\350T\363\251\001\315\277\020\000\000\200\356\251\372\001\032\323d\003\000\200\212T\002P\231&+\000MH)\241*w?\000%x\340\221\300\311a\254{\010\000P\305\311\204\021\000\000\240\023\372\331\234\362\0318\006\020\000\000\300\243\326\030\330\241\214\003\000\000\000\000\000\030\303\321\367@\000\000\000\000\000\000\000\000\3000,\373\006\000\000\000\000\200k9`\022\000\000\000\000\000\000\000\000\000 \021\0335\334\243\375\357lZ/\000\000@5*A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\340b\266?\004\000\000\000\000\000\000\000\000\000\000\000H\314\342\021\000\000HN\322\017|\363\257\220\332\026\003\000\000\251,1\000\220\335\032\003\177\250\366\001\000\000\000\000\000\000\000\006c\302\007\000\000\300\2448\302\362x\000\000\000(D+\010\000\000\000\000\240\nS\303\000\000\000\000\000\000\000\000\000\000\000\000\000`8\263\025\202\000\000\000\224`\313t\000\000\030\223\\\036\000\000\000\000\000\016Xb\000\250\30421\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\206\341`\032\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200\'\274\000>R\030\020\037\177\342\335\000\000\000\000IEND\256B`\202"
diff --git a/core/res/geoid_height_map_assets/tile-9.textpb b/core/res/geoid_height_map_assets/tile-9.textpb
index 5f23f1c..f556a35 100644
--- a/core/res/geoid_height_map_assets/tile-9.textpb
+++ b/core/res/geoid_height_map_assets/tile-9.textpb
@@ -1,3 +1,3 @@
 tile_key: "9"
-byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\004\003\003\003\003\002\004\003\003\003\004\004\004\004\005\t\006\005\005\005\005\013\010\010\007\t\r\014\016\016\r\014\r\r\017\020\025\022\017\020\024\020\r\r\022\031\022\024\026\026\027\030\027\016\022\032\034\032\027\033\025\027\027\027\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000\363]\336\364\340\324\355\324\360\324\273\275\351wR\356\245\335F\352]\324\006\245\335K\272\224=<=<?5 z\220=<=H\036\236\032\236\032\244W\251U\252@\325\"\265H\032\244V\251\003S\303S\303S\303S\203R\346\2274\273\251s\357Fh\335F\352L\321\232i4\322i\244\323)\017Zi\244\242\220\364\244\247SC`\021M\240\364\246\321J:\322\346\235E\024\240\327\233Q\234w\247\003N\rN\335J\032\227u\033\250\335K\272\200\324\354\321\272\215\324\340\324\340\365\"\275H\036\244W\251\025\352@\364\365jxj\225^\245W\251U\252Ej\221Z\244V\251\003S\303S\303S\201\247\006\245\315\031\245\315.i3F\352L\321\232\t\246\232i\351IM=i\017ZJBi3\232(\244=i)\r%\024S\273QN\355J\005\037Z\363SI\232\001\247\356\357F\352]\324\241\250\315\033\250\rN\rK\272\215\324n\245\335N\rR\007\342\236\036\236\257R+\324\212\365\"\275H\032\244W\251\225\252dj\225Z\236\032\244V\251\003T\201\251\341\251\301\251\300\323\201\243>\364\271\245\335I\2323I\232Ph\315!4\204\322SqHz\322R\032J(\244=i)\r%\024S\251GZZ^\203\212\017\245y\241\246\236\264S\201\2434f\215\324n\243u\033\251CR\356\245\rK\272\215\324\241\251\341\251\301\252@\325\"\265H\257R\253T\212\325 j\231Z\246V\251\225\251\341\252Ej\2245<5<5<5;u85.isK\2323I\237z3K\232ZC\322\222\212\017Ja\244\2444\224\277\303F8\244\357M\2444\224R\212Zp\035\251qA4\225\346\307\2554\323M.h\311\240\322f\223u\033\2517R\206\245\335K\272\215\324n\247\006\247\006\247\006\251\025\252Ej\221Z\245W\251\025\252Uj\231Z\246V\251U\252P\325 j\221Z\236\032\236\032\236\032\236\r8\032vh\006\234\r.i3\232)\324Q\232(\242\232zRc\212Jozu\024\230\246\221IHG4b\224S\251GJ;RRw\2578\"\230zSOJJQ\326\202i\247\25534g\024\231\245\335J\032\227w\275&\356iwR\206\247\006\247\006\247\253T\212\325 j\221^\245V\251\225\252Uj\235\032\246V\251\025\252@\325 j\2205<5<5<585<5\000\363N\315.h\315(9\247\nZ(\242\212C\326\222\220\322w\243\024\276\364\224\336\364\204RR\342\226\214sN\2444\224\206\274\351\226\230E0\212m\024SI\357M&\233\232i4n\245\315\031\243u\033\251\301\251\301\251CS\303S\303T\201\252Ej\225Z\246V\251\225\252tj\231Z\244V\251\003T\201\252Ej\2205<585<\032x4\354\322\203N\315\024\345\247\212Z(\002\235\212LSH\315\004RRc\232Z\017Jm!\244\242\212Q\353KG\322\220\364\2444\332\340\030TL*2)\204RR`\322S\017Ze!\353M\311\315\031\2434f\214\323\201\367\247f\2245<\032pj\221Z\244V\251U\252ej\231Z\246F\251\325\252Uj\2205H\255OV\251\003S\301\247\203O\006\244\006\236\r(4\240\323\207Zz\323\207Zu(\024\264b\227\024\334sA\036\224\230\244\305\030\244\305!\351IHE\000R\342\212?\032;R\0220\005!\244\315qR[\202*\253\302W5\021^qLe\250\210\244\246\232a\024\303\326\232i\244\322d\321\232L\321\232\\\323\201\342\234\r8\032P\325 j\221Z\246V\251U\252ej\235ML\255R\253T\212\325 j\221MH\r<\032\220\032x5\"\232x4\352p\351NZ\220t\247\216\264\243\255:\224\nZ\\\032LR\021HE&(\305!\244\"\232E%\024PO4\203\024\204\320x\2444\225\312\260`9\025\004\200zUy\"\005r*\263\306\303\255BG\250\246\221L#\232i\250\3150\323i\247\212nM\0314QN\006\234\r8\032p4\340jU5*\232\231MJ\246\247SS)\251T\324\212jU4\360jPi\340\324\200\324\212jE5 \245\035i\342\236\265 \247\216\224\340)\300S\261K\212\\Q\203I\217jB)1HE!\024\323M\244=i(\2444\322qKHOJJ+\005\221[\255V\222\337\236*\253\306\313P\260\004c\364\250\0361U\331\010\250\310\307Za\025\031\024\302)\204S\017ZB)(\242\212p\247S\201\247\212\221MH\246\246SS!\251\324\324\312jE<T\200\324\252j@jE5 5 5\"\232\220\032\220\032x\247\016\224\361\326\245^\264\361O\035i\340S\200\245\002\227\024b\214R\021M\"\220\212B)\206\230z\322\032J)\246\203\322\233E&h\347\025\214\302\242\'\232c\242\272\362*\234\266\304t\025X\243)\344qP\314\233I\307J\201\224\032\205\227\035*2)\214*2)\204SH\244\305%\024\270\245\372S\251\324\361OZ\221jU\251\326\246J\231jU5 \251\024\324\200\324\212jAR\003R)\251A\247\212\220S\326\236*U\251\026\236\005H\0058\np\024`R\340Rb\220\212B)\244SOZ\215\251\246\222\233A\351Hz\323H\346\222\212N\364\265\222\313P\224\346\230\300\255D\314@\252\362\020{\n\254\352\030\020z\325g\214\201P\262\372\212\211\226\243a\3061Q\225\250\310\246\221HE&)1\315.)@\247\005\247b\234\005=EH\242\245Z\231je\251EH\265*\324\213R-H\265\"\324\213R-J:T\202\244Zz\324\200T\213R\250\251\000\251\000\342\234\0058\n\\{Q\2121M\"\232E!\025\031\024\306\246\236\224\332CIM\357E4\365\242\2121T\035*\026Z\205\327\212\256\353U\335\016*\0220zTl@\355Q\224F\351\201PI\001\307\025Y\343#\255B\331\007\221M\306E&\336i\205i6\321\266\227m(Z\\S\200\245\013O\002\244QR\250\251TT\253R\250\251\027\255J\242\244Z\221jE\251\026\244Z\225jU\247\255H\265 \025\"\212\225EJ\242\245QR\001N\002\235\212\\\032JB)\r6\232j6\246\036\264\312i\353Hi)\017ZL`\322b\214\032\000\245\252l8\250XT.\271\252\356\225]\3628\025\003\217j\201\226\241`GJO1\207\024\306\n\343\004sQ\024\003\2028\252\362DP\344t\246\025\244+M\331F\332]\264\273)vS\202S\202\323\202\323\302\324\201jU\025\"\212\225EH\242\245QR\001R\001R\001O\002\244QR\250\251\026\244QR(\251@\251TT\252*U\025\"\212\220\np\024\352(4\332CM=i\206\230\335*3M4\323I\332\233F)\010\244\242\214R\342\252\270\342\240aQ0\250\231I\250Z>y\025\013\307\336\253H\2305]\226\242d\246\025\357I\327\202)\254\274q\310\250Z y\025\031B)6Q\263\332\227e;e.\312P\264\340\264\340\264\340\265 Z\221V\244\013OQR\201R(\251\024T\200T\200T\200S\324T\252*E\025\"\212\221jU\025*\212\231EH\242\244QO\024\341N\002\227\024\332CM4\323\326\230z\323MFi\247\2456\233HE%\035\250\242\212P*\274\213P\024\346\230P\323\n\201\324\325i\016\032\2438\3175\004\221\345x\252\214\204\036\224\302\264\302\225\023%0\202\246\223h<\216\264\2058\344Tf<\036:Q\262\224%(Ojv\3126S\266R\204\247\004\251\002S\302\323\302\323\302\324\212*@*E\025 \024\360*@*@)\340T\200T\252*E\025*\212\225EJ\242\244Z\220S\307Ju:\212CM4\323M4\323Lja\353L=i\010\246\236\224\224QI\2121K\212*)x\340\212\211q\273\232\206C\211\010\252\316Npj6Nri\031A\025\001\0308\250d\217\034\342\242*)\214\225\021Nj6\2175\031B\017\024\014\3644\343\030#\"\243\tN\tJ\024\322\204\245\331K\266\224%<%<%8-<-<-8-<\n\221EH\005<\nx\024\360*@*E\025*\212\221EJ\242\245Z\221jE\247\216\224\372u8QM4\207\2554\365\246\236\264\224\303Q\232i\246\236\224\224\230\243\024c\024\224QED\322\007R\030sP\222\007j\211\260[4\306@Nj&C\217\245G\234q\212c&Nj7\\\212\200\246\r0\246i\0144\323\017\035*&\213\007\030\250\332:n\322)BR\354\245\013\212]\224\2418\245\tN\331N\tO\013\203\365\247l\245\tO\013N\013N\013R\001O\002\236\0058\nx\025 \025\"\212\220T\253R-H\265\"\324\203\265<S\351\300\346\212(\246\236\264\207\2554\212Ja\246\032a\351IHG\024\235\350\2444\224QN\003\025[\200\307\035\351\273AlPb\301\246\024\347\216\224\306Q\214UW\214\206\250\330m\342\243cQ0\365\246b\234\005;\003\024\206 \335*\'\203\035\252#\027\2653\313>\224\230\000\340\323\202\203N\362\351\302*p\217\332\235\262\224\'\265;e8-.\332P\264\340\264\340\264\340\264\360)\300S\300\247\001O\002\244Z\221jE\251\026\244SO\025 \247\212x\247\nZ)\t\244\244=i)\010\246\032a\353M=i\244RRRQF\005\030\242\212\244\033\006\245\005O=(g^\346\243\336\244pj69\357Q0$T.\024s\232\214\340\365\250\331\027\034\032\214\216}\250\307\245\0035\"\323\360\017QH\320\206\034\n\200\304A\351Q\275\276\376q\3150\333\274|\365\251\221r\242\244\021\322\371t\241)vR\354\245\tK\262\215\224\241i\301i\300R\201N\3058\np\024\341\322\244\025 \353O\006\236)\340\324\200\323\301\251\001\247\203K\236i\331\346\214\322QE!\351Hi\207\255Fi\017Jm\030\246\342\220\212J\\\0321F)k=\206\rF\362`\361Q\027$u\246\207\3055\2459\316h\017\221\326\243\221\270\353P\022I\240\222\0055[-\203R\025\343\212P8\247\001\212x\031\025*\255)\213=\251\026<\036\224\366\2002\036*\233Fb~\234\032\224(#4\340\224\276].\3126R\354\244\333K\262\215\264m\245\305.)qN\002\224S\3058t\247\212x\353O\006\234\r<\032\221M<\032\220\032r\236?\032vh\242\212P))\rFi\206\220\322Rb\223\034\323OZ)pi(\245\301\254c!=\351\254sQ\223\212\215\236\243-G\231\212\215\244\367\244\017\315H\030b\231\362\347\212z\236*E\024\360\005=W\232\231W\212\224.i\301)\373\016\336\005E<A\340\351\310\252\261)\350jp\224\355\224\273)6Rm\366\245\333I\266\215\264\233h\305\030\245\305.)i\302\234:R\203N\006\234\r8\032\221M=MH\246\244\006\236)iA\245\245\003\232Z1\3054\364\250\332\232E4\322b\214R\021\3154\212(\242\220R\3275\346\341\252@\374S\031\252\0264\302i\214\306\231\234\236\264\205\2104\375\370^\264\3459\025 \353O\014zS\325\216j\314g$\014U\200\270\251T\n\220.j@\274t\246\252+\266\323\336\252\317\007\2257N)\352\271\024\340\224\273)\nRl\243e&\332M\264\233i6\322b\227\024b\226\212QKN\245\035)\342\244Zz\324\202\244Zvi\302\234:\322\323\251@\243\034SH\250\310\246\232i\244\242\2029\246\221F(\305&9\240u\245\305r\016pjD|\212Rx\250\230\363L&\230\307\212\217<\322\266p\r4\261\305M\033qVW\2454\234R\244\2305e%\350A\346\256G( f\247\030\352\rK\037&\255\"qM1\205\223\212m\324[\323\2475Z!\306\rK\262\215\224\205i6\321\266\223m4\255!ZM\264\322(\307\265&\005.\005\024QN\245\024\341R\n\220T\202\244\024\242\234:\323\307Zp\024\340)\303\255!\246\232a\246\021M\244\305.)\017ZB)1I\212N\364\240S\200\2565\251\020\221O&\243\'\232ajc6h\002\236\006F*6\\R\306qV\026A\266\230_4\201\271\251\221\216j\344r|\2705e\034\025\034\325\210\237\006\264\340!\3059\223\347\316)\356\231\217\245Pd\3319\036\265 Z\\S\n\321\266\215\264\205i\245i\n\323v\323J\322b\223\024\230\244\242\212u(\247\016\225 \251\026\244Z\220t\245\247S\307Zp\351O\035)\324\204SM0\212a\246\036\264QK\216h\"\233\2121HW\346\024\340\271\342\214s\\Su\244\006\224\236*3\307z\211\237\234\nM\324\240\324\252E\004n\030\357M\010i\335\0050\232z\016j\312c\024\362\352\005=%\367\253QI\223\326\264\355f\332\331=*\340\271FoJ\270\245Y\005R\274\217l\200\323TqA\031\244\333F\3326\323J\323H\244+M\333M\"\233\212B)\244SOJJ)\303\245(\247\212x\251\027\255H)\364\341\322\234)\342\236\005<S\205!\246\221L\"\230E6\223\024\270\245\024\021F(\305!\034\322c\270\245\357\\.\352il\032n\342Z\243y2\325\031nh\007&\244\004\342\232\\\203S\306\304\256M?4\302s@\031\241\233h\246\375\240\216\364\206|\367\251RS\353V\341\224\216\365~)\310\3075z<\262\357^\325r\t\333\247\245\027\023\031\016})c!\226\244\333F\3326\320V\230V\232V\232E&\332k\n\214\212B)\244S\r!\024\224\341J:T\202\236)\340T\202\237N\024\360)\340T\200S\200\247v\240\216i\244S\r0\212a\024b\226\224\016(\307\024b\227\002\230E\000R\327\000N\r3\253R\261\010\270\356j\273\032e9z\324\340qQ\262\345\252t\030\\S\261\3057\2759i\262\0163U\331\0163M\000\346\254D\246\256\304*\364K\232\320\210\225L\016\365f\335s\232\260\025J\025#\232\2113\034\245\017N\325l\014\212]\264m\244+M+L+M+I\266\232\313Q\021M\"\232E0\212m\024S\200\247\212\220\nx\247\216\224\361\322\236)\342\244QO\002\236\005.8\242\220\212a\024\302)\244Rb\224t\245\003\2121F)p)\244Rc\212P+\316\331\3014\322\373z\016j&r\334\232ni\247\245I\037Z\234q@\\\265H\007\024\352a\0304\364\034P\343\345\250H\312\342\230\251\315XL\n\267\n\023\316*\374\013\315_U\033j\345\254`\214\216\265e\243\310\334\005A*\344\007\003\221S\304C(\251v\321\266\232V\232V\230E4\212B\264\326Z\211\226\230E0\212a\024\322)1K\212P)\353O\025 \247\212p\353O\025 \251\005H)\302\226\216\324\204SH\246\221L\"\232F){R\322\321\212\\SH\244\305\030\2575\335A\"\243c\3153\275:\244QR\255<u\251(\357L=jD\351D\237v\241\035i\300`f\234\234\266+j\3260\"\000\325\245A\232\260\252M\\\267;\005h\333\200\340\2361\216\225^h\202\310W\261\250\341\033\\\241\355V\200\342\202\264\322)\244TdSv\320E4\212\215\224\223\212cD\303\232\210\212a\024\302)1F)\300S\205<\n\221E<\np\247\212\221EH\264\361O\024\356\377\000J1\305&)1L#\232a\024\322(\242\224t\247\001F8\244\"\223\024b\274\261\237\232P\371\240\232Jp\251\224qN^*@i\324\016\264\207\255K\030\242Nj,sJG\0255\264e\244\007\025\263\020\302\212\264\2035:\n\262\202\256\333d=Ip\271\001\205T<L\033\326\256(\312\321\212B\264\302)\205i6\322\021L\"\230\313\232\\|\270\315Vd\332\306\230\313L\"\233\212\000\245\3058\nx\025\"\212x\024\340)\352*@)\340T\200S\200\357N\003\2574c4\224\207\2454\365\250\315%&8\244\035i\324\341\322\216\324Rb\214W\222\026\346\234\265%.)\300\324\311O\245\006\234Z\205<\323X\374\365<g\214\320NZ\233\216i\t\347\025\245g\026#\004\325\364\025f1V\220U\210\306H\253Q\360\334T\354\277-Tt\371O\265X\204\356\214T\233i\n\323J\323\n\323v\323H\246\021M\"\223\261\250\034e\3526\024\302\264\334Q\212P)\300S\200\247\201O\247\001O\002\244\002\244\002\236\0058\np\353@\242\232z\323\017Ji\024\323\326\220\364\244\3058\np\024\270\342\220\n0(\305y\005<\032\220\036)\371\245\035jE5 4\341Ct\244SA\345\252B\333c\246F\371z\237\265$k\231y\365\255x\016\024\n\266\230\2531\216\346\247\334\000\353R\307 \355Wm\376nj\331\031J\251\"\220\344v4\266\347k\2245so\024\205i\245i\205i\245i\205qQ\221L\"\223\025\023\016j2\264\302\264\233i6\321\212p\024\340)\340S\251\300S\300\251\005<\n\220\np\024\270\343\024\270\242\230z\323H\246\032i\244\305\0304\240S\251q\305(\024\270\243\025\343\200\022*@\264\356\224f\235\232z\265J\246\245\316\0055\233&\225G\024\270\245a\225\250\207\313%[S\225\247\201\206\006\257@zf\264#*\006I\247\031\273-9\035\210\2531\347\326\265\355\006\024f\256\214\036*9b\004t\252\3426\335\323\221V\242\'\030a\315HV\232V\220\2551\226\242e\250\312\323\n\323H\250\312\323J\323\n\323J\322m\244\333J\0058\np\024\240S\300\247\201O\002\244\002\236\005<\n\\s\232\\`\232B)\207\2554\212a\024\204Rb\2008\245\002\227\024\275\251\312)\330\244\"\274\201TR\221\203K\326\233\216h\3178\245S\315XJvE-=\007\024\023\3159y\034\3224y\344S\221\212\234\032\2308\305X\201\302\256z\232\260%c\337\212\261\020\317&\254\251\355V\340\371\234zV\315\277\"\255\247\255K\215\302\205\214n\351Ox\227``9\244Q\221AJa\\TL*2\264\302\264\302\264\322\264\322\224\302\224\302\264\322\264\322\264\233iv\322\355\245\305\000S\300\247\201R\001O\002\236\005<\016)qK\216M!\034S\010\246\221M\"\223\024\230\366\240\016:Q\217j1N\003\212z\216)qF+\306\303S\363\221L-\203NS\232\0104\364\034\363Sn\300\300\247\001\205\315\n2ja\200)\207\2559y5`\001\2120\t\351CE\214\021RB\244\260Z\266\303n\005M\033\361W#\037.\343Wm\227\200kR\026\302\325\244n*\3025L\2705c\311\337\016\341Q,ex4\245j\026^j2\264\302\265\031ZaL\366\243e!J\214\2450\2454\2554\2557e\033h\333F\332P\264\340\265 Zx\024\360)\340S\2004\354z\320G\315HE0\212B)1I\212M\264m\243o\265\033i@\247\201N\333I\212\361`i\331\244\352i\303\201N\r\232z\365\247\365js6N\005=N\00585\004\363J:\324\352\337.)\353\326\236O\313O\265\346Rj\324\270\305,g\232\275\t\310\305_\265\341@>\265}\rZ\214\361S\253\nz\310wU\353i\317\335\'\203\326\247t\347\212\203\222q\212aZaZiCQ\224\244\362\351\336_\2651\222\241p\005B\330\024\302E\'Z]\242\223m\033)6\322\204\247\005\247\205\247\205\247\205\251\002\322\205\364\243i#\212R>jk-&\336)\010\246\342\215\264m\244\333F\3326\320\027\232x\024\354Q\212\361\021KNQN<\320\001\315J\243\024\026\347\002\225GzR\334\320\036\244\006\234\0175*5L\255\315=\210\331\305:\324\341\271\251\345|\200=\352H\217\000z\325\330\010\365\255\010\0161W\243aV\021\275\352da\334\322\356\332\335j\304\022\374\343\025\257\031\335\032\372\324r\000\262t\353M`1\300\244\021\3654\322\234\323\nS0\001\245!\233\356\2551\341\227\031\305S\225\033v\t\241l^E\316N)\255\247\310\017\006\253\2742\304y\024\320\344u\030\251\025\201\251\002\203K\262\227e8%8%8%<-<\201\322\223\234`p)@#\245\033i\010\246\342\220\255\033i\002\321\266\202\264\233h\333J\027\232pZv(\305xfx\245\034\232\224\014\nUZ\221W\034\232By\241W-\223Nf\002\243,)7\324\213\'\2758J;\324\211 \251\204\243\024\365}\334\036\225b2\001\251$\004\374\302\244\211\276\\\372\n\265\003|\243\326\264\241\223\003\232\264\257\357Vc\220c\232\235\037=\351Y\260*\345\202\231\033>\225\261\031\306)%;\345\030\355K\212\017J\215\210\024\314\0265*Z\344g\255L\220m\344\212\222DF\204\340r+<\331\263\276\342\274U\330\255\306\314t\252\363A\"\261\302\325W\210\267\004T/`\031zU\031m\236\022H\351Drs\203V\224\006\024\361\035;\313\245\021\322\354\245\333F\337j)pi\301A\316i\245i\002\322\021I\266\205\030\315\000PV\233\266\215\264\241y\247\205\243\036\324m\257\010=qSF\265!\000\nM\300R\206$R\214c\232kI\201\201Q4\224\3170Ry\235\351\004\2715\"\275X\212E\3163S#\215\306\254\306T\325\205\03052\260\306\323I\235\210G\255Y\265$\256\356\302\264\021\306\320j\304o\315YW\367\025b98\247\227\315i\351\262\000\370=\353m\024\021\305B\331\216R\r;p\306i\217\'aBD_\223\322\255Ch\314\303\002\264\343\264\n\200\021\315Ha\211W\346\003\036\365\023-\257#\201\364\252sK\020;W\265T{\215\247\212\221eyq\351S\010\021\307A\232\032\317\013\362\363\355U&\260.\016V\263&\323\231X\220*$G\214\340\203V\243\000\212\224G\236\324\276]!JiZB\264\005\245\333J\026\202\274Rm\244+I\266\225\000\004\344v\246\343&\215\264\205h\013K\267\232v\3326\373Q\212\360|sR\247\002\225\263MP\t\311\247\026\002\243i=\352&z\215\216EFO\035i\255/\030\024\325\230w\355R%\302\223\367\252T\235\025\303n\251V\343\315\227j\034z\325\350\337h\312\267N\325q%\3713N\206m\357\217J\222\342@\241W\2715r\311\307\220\300\325\244|\212\231d#\245X\216R\306\255\243\361\326\236$\253v\356\341\301\025\320Z\334\345Fz\325\321\373\316\253\232\014#\030T4\211a+\267\3345\243\006\237\267\357U\301\022\3047\020\024\n\257=\337d\374\352\234\227\016\343\004\325Ww\003\203T\345\363\013g5\036H<\325\250\'+\323\025h^\355`1\232\260\223\211\010\303c\332\264Da\243\031\003\006\242k\005q\300\252\027:Y\031!k5\355^&\310\034S\343\301\340\324\245\006)\205)\205)\245)\002S\266\322\205\315)^)\233x\244\333F\336)\241pM\001)J\323J\321\212]\264\270\024`R\021\315xW\227\212xJd\207\260\246tZ\215\230\232\211\211\355Q\222{\232\206K\200\274\016j\277\234X\362i\373\201Z\211\262M\002\244Z\225\030\243nS\315_\202|\340\356\347\275[78m\275\252[\031G\332y=j\325\331\315\322`\366\253p>\325\030\357V\221\30052\311R\244\240\032\231n;f\255\302wsZ18\000f\264\255\'\033\205t\266\222\304c\007\214\325\325x\313\177\016Gz\237\355\020D>f\014}\005!\274\014\270\216<\037Z\2554\354\331\004\325B3\336\220\250\2462\034Uy\"\366\252\355\037\265 B*@\274g\034\324\261\261\004`V\265\254\347\0001\343\336\264\342!\276\3575iaW]\256*\255\316\224\245\013 \315`^X<,]G\025^6\r\305I\2674\322\224\302\224\004\243m.\314PS\212n\312B\264m\342\230S\232]\270\024\323\212a#4\322\302\215\324\271\317j9\364\240+\032\361\027\307ji\'\030\002\243e\307Z\212C\306*\006p\242\240i\217j\202II\030\315Tv\346\242/\203OI\261Ro\3174\241\251\341\300\247\t*X\344\333\322\256+\003\026I\346\232\223\264ro\007\241\255X$7\r\346\236\303\212\272\317\2624a\334T\261M\236\365a$4\343.;\322\305)i\200\256\246\322\301\236\307\316V\343\275\013\033\007\301\253\261\025\214r\016kJ\332\342V!P\034V\325\2742\025\014\355VG\331\3429s\223\351I\347+\003\265\200\366\246\023\270\365\243h\245\002\202\0054\240#\245F\320\217Jg\222=*E\200\021\322\224Z\363\220*e\215\200\003\025\251g\300\003\241\2558\210\316\017\036\365eA\0318\315T\272\263Y\321\206\3203\\\205\375\263Z\\\222\007\031\346\226&\016\271\024\362\231\246\224\244\013N\010)\n\374\324\024\342\231\266\232@\315.\0050\201\326\242w\002\240,\314\330QR-\264\215\353N\373!\034\232h\207\234b\246[s\212w\221\3074\206\"+\303\n\214t\2466\007j\202F5VV\300\346\251\273\0265\023\032\256\344\324\016j\023H\rH\257\212~\372P\364\340\365*\275M\034\254F\301\326\233,\256\256\020\2163]&\237\264\332\241\007\034T\227/\202\251\355\232|,p*\3628\002\230\362|\325r\3220@c\326\272+K\341\024\001\030\344\016\324\246\377\0002|\240\001Z6\227\001\300\336\240\257\251\255\3536\265\333\271H\000u\346\247\270\324\342U\331\021\374j\232\334\226|\223\232\267\034\200\201V\220\347\275?<b\224\032)A4\264\341\0304\364J\220\014\036*U\036\3252\020\033\322\264\354\323y\0319\255o\'\216\230\250\2361\212\347\365{\0375\013m\344W7\261\355\245\350qV\222Du\340\322\340Q\200)\254E7\"\232dP:\324-(\035*##\223\302\2327K\217\272j63\036\324\251m+\234\2605v\013P\274\260\253\001\025z\nk\014\366\250\304\\\364\251\004m\212C\021\244\362\275k\300\310\342\241aU\344\3435JL\261\346\253\277\025\013T/\305@\3435\021\024\303\326\212\\\232]\306\224=H\257RG6\311\001\315K4\233\302\267\275tZt\203\354\303\236@\247\313t\245\366\340\022;\324\221K\221V\004\244w\246\254\273\345\305i\303/\226\240\n\275\0233\212\273i\003K7\314p\243\251\255\026\225\021<\250\317\002\237\034\356\243\001\215XI\030\236M[\211\371\025z)1\336\256G-X\022f\227x\245\337NV\251\003\n\225y\251i\352\001\251\025y\247\205=j\325\275\301\205\3075\277it\223\305\264\375\352\225\2429\252\227\026\341\324\361\234\3277\177\247\215\347\013X\362XJ\247)\221H \273\003\246i\246\013\302x\006\225l\256\330\363\232\177\366m\316psO]\"Rr\304\325\210\264\264\030\3343W\027IR\233\202p)[L\n\333J\001Q6\234\213\316\321\371S>\316\027\200\277\2454\333>y\030\245\020\0009\024\2065\035\251\245\000\346\223\217Ji\351M&\276~j\205\315T\230\374\265M\252\273\365\250\215D\3435\013\n\211\226\230V\233\212LR\032\001\247\203JMJ\035<\276G\"\2654\373\274\305\214\364\247\264\331\227\361\255\013w\312\212\260\317\362\324Q\313\211\263\232\330\266m\300du\255\2100\000\253\242s\267j\360;\323\225\271\253\010\325a$\025j)*\344r\032\265\034\206\247\022\236\306\244Y}MH$\247\t\005J\257\236\365b6\367\251\363\357NV\346\247V\310\342\246S\236\264\021\315i\351\363,N2kx<rE\225 \232\205\2075Z[X\345\352?\032\256\366\010?\204\032\251%\240S\304t\202\025\003\230\261\370S\0322\256\n\256?\n\235c2/*)\342\324zR\033uNqI\346\004R\275\215V\226\343-\221\236=j?\264\215\270lTMq\010~\0056I\303\016\005B_\214\324\016\374\236\325\021\223\336\224\034\212By\305!\353^\000\302\240u\2523\037\233\332\252=@\303&\230G\025\021ZaZaZ\214\2450\2454\2554\2554\212\026\237\216*\265\314\306\030\213\003\212v\217t\314N[9\351[\001\211\223\232\323\201\360\242\2472dT;\366\276s[\226R\201n\246\265\255\345\3348\253\2215XV\251<\317J\2322MZ\215\3105r)F:\325\205\234\016*u\234\032x\226\237\347{\322\211Nz\324\361\313\357Vc\227\336\247Y\275\352T\2235b9*\3026je\031\245%\221\363\236\225j\rL\243\001\223Z\366\367\2512\214\216j\316\321\214\216\225\023f\232p{\ncD\030T\r\003\027\366\251\025\000\343\024\374\001U\256\'U\312\343\025\235#\026\031\016:\361T\245Iwd\034\346\252\315\270q\223Q\251\"\236%\"\225\246\312\324\014\365\021jx\223\024\355\331\244-^\n\3353Ufq\202\005P\227$\325vZ\214\2554\255DR\232R\243e\246\025\250\312\323\010\24651\2056\235\236+\037U\230\210\312\216\365w\303\221\022\273\332\267\177\345\271\253\2217\002\254\003\305C#`\346\266,\\\033e\255\210fU]\242\256E-YW\251\343*OZ\262\222\252\036\231\245\363\tl\216*T\225\263VQ\230\363S\253\221\326\247Yi\341\363\336\236\036\246G\253\013%L\262\373\324\3130\365\2531K\357W\242l\325\264e\365\244\224\344qU\034\025l\212\267e{\345\310\0015\324\303p\222[\202\016iN\322*&\034\322\003K\221M%G5\033L\247#\246=k6\363$d\036\247\212\241+\272G\203P\t\030\237\230\323\\\003M\362\370\315D\303\025\0215\033Te\250\r\305\002L\032V\220W\204J\304\3259\r@\3035\031Z\214\2554\2550\245=`R\205\230\343\025VE\0318\250\030TL*6\353Q50\236i\271\245=+\032\3762\367\001kwL\210Ad6\365\"\257\017\277V\2435a9\2474{\205]\266W\214\016N*\344r\225l\346\257\301>H\346\264\"\2235j&\001\276aVF\037\356\212\2352\007j^Cf\254\305p\024`\212w\234\033\245H\262T\202\\w\247\t\271\353R\245\300\035\352u\270\007\241\251\222l\367\251\222Bj\314R\343\275h\303?\313VR_z\235\033#\255G%W\223(7V\236\223\250\260;\031\270\255\244\272\004\343=jF\270@\247\346\250~\324\203\223Q\276\245\0108\315T{\347\2238<T_io_\306\240\226vv\311n\225\033H\010\301\250\010\311\342\244\0106\362pi\010\000u\252\357\311\250\036\2435\023S\0014\204\323KW\210IU\\d\323v\374\246\243+Q2\323\n\323qMl\342\240qP8\250\036\240cQ1\246\023@\034\323\210\371k*\344\377\000\244\202kr\300\027\267V=+@(\364\251\223\035*\302\005\251<\304\035MZ\212P\311\223\300\035*9n\202\374\240\363V\355&$\016kb\031p\0075n9\t\346\255\3039\3175ie\367\247\371\240\214Q\273\232\221Z\244\017\212w\231G\233\357I\347\034\365\251\343\230\372\325\270\2445z\'\310\253HE\\\205\305ZI9\253\t.;\3224\204\236\264\342\003\246)\210<\246\312\366\253\177n;q\336\217\2661\376*a\272l\365\2463\2269\247\t\0161O\335\305F\306\231\232]\370\034S|\336\324\323\'\025\03385\013\034\232a\353Lnj&\340\323I\246\023\315x\233TEsM\333\216\242\243+Q\224\250\312\323Xf\242aP?z\257%U\223\245@\325\031\353M\3059E8\214\214Ve\344\\\356\255\r&\340cc\270\000V\320*\307\000\203N\344v\247\006n\324\252\214NO\003\326\246\363\202\256\320zUB\314\363\347\336\266l\270Q\232\325\216N\225\245l\341\216*\341\n\007\024\202L\034f\246\215\363\336\245\007\216M<5;}!z\003\323\327\236\36526:\325\270\345\002\255\3057J\271\034\334U\230\346\253qK\236\365:\310H\247\357\251\243z{\236*#\301\251\027\030\240\225\024\007\024\360i\333\270\246\263S\013SKTL\3304\322\324\205\251\271\244&\230j&<\323\r0\212\361vZ@\000\344\323\031A\030\025\023.\rFEF\302\242j\205\315Wz\255%WqP\221L\"\233\266\234\005<&j\265\334Y\\b\262\310\226&\312\344U\273MRH\234\371\271=\253^\333UG<\237\316\257\013\264\362\367\000*\007\276f8\006\234\263\345}\352\305\272\356`kb\001\265j\332>\r^\266\233\007\255^\023\345z\323D\234\365\251\222_z\230K\357O\022\217Zw\231G\230)C\363S\304\331\357Rn\301\353R\306\365n\'\253i\'\275L\263c\275Z\206~y5u\'\036\265*\312*t\224z\324\236h#\004\322n\310\353B\312\001\301\2512\010\3153\200x\247\t1N\337F\352ajajc53u&M.i;PFEA \"\230\016x\242\274h\2551\226\230T\323\031p*\0229\250\231j\026\025\013\n\201\305V\220T\014\265\021ZaZM\264\345L\324\241qP\312\241\252\253\333\206\311\305W6\1777J\r\263#q\305_\267Y\004@\023RyM\2735b\030\361\326\257Dv0\2558\\\025\004U\2255<m\212\262\262\361R\254\2315\"\27752\311\3058K\317Zp\226\234$\247\0075f\027\365\247\031>j\236)*\334oS\254\246\244\023s\326\247\212l\2663WQ\2163\232\262\222q\315J&\301\353R\t\271\251\004\271\350iKg\275H\262`Q\346\346\220\2759^\235\276\220\2654\2654\232i4\264\036\224\200\372\320x\2460\310\250\010\303R\366\346\274\200\2550\2451\226\242qP\262\234\324n8\252\3169\250\230T\016\265]\326\240e\250\331i\233h\331R*\342\221\316\007\025\0263\326\230\303\002\224\247\312\033\035i\2142\300T\312q\306)\306JzIV\243l\212\275l\3308\255\004\"\246SS+\212xq\353R\253T\201\370\244\336sO\017\305=$$\325\224\347\223R\371\201W\002\221d\313U\204\223\025a%\251\304\207\024\345rzT\251!W\255(\256r\243\245X\027\000\216\324\033\201\332\244\216|\367\253)(\251D\264\343%(n\371\240\276(\022\343\275H%\006\227\177\2754\2754\267\275(oZx4\036\224\323\301\243vF)\204\342\230\307\2757<W\2242S\nTl\265\013%@\352j\'Z\201\222\241e\250Yj\273\255DR\243d\346\231\262\200\224\244Te\t\244\331\212\215\3078\241\316\024\n\215G9\251@\244\"\234\243\025b&\253\360\267J\276\207*\r<\312V\2016jd\2235i\033\212\223u\031\245\335R\306\340\036j\320|\257\024\306s\336\225$\301\251\304\2652KV\222\\\255=%\332\324\351\'\3475=\265\316F\t\253Bb\017Zx\2275f91\336\254,\336\365*\315\357O\363\351E\307\275\036w\275!\233\232z\313\307Z\220K\357G\233@\222\244V\251CqK\232F5\021l\032izajn\354W\2332TL\225\033%B\311P:T,\225\013%@\311P\262T,\225\021J\214\307\3154\2454\255&\332M\274\323Yj\273\257\315Q\260$\322\252\324\252\274R\021\315(\025\")\'\212\275\n\236\346\257\307\300\305+\014\323\007\006\254FEYG\342\244\017N\315.M9s\232\265\033`b\226B)\231\305=\036\247G\251\226B*u|\216\264\355\331\251\2418j\266\037\"\234\257\317Z\262\262\340T\253.i\342lw\245\363\362:\321\347c\275(\270\367\245\023d\365\251VOz\221e4\360\365*\265H\255\203S\006\342\234\032\202\334T.\3305\031l\324n\373j#/\275qm\035B\361\324,\225\003\245B\351P2T\014\225\013%B\351Q2Tl\225\021Jk\'\035)\205)\205qM\305#\n\201\327\232\217g4\273qN\246\236\264T\210v\266j\364L8\253\261\234\212V8\342\230y5*f\247CR\203R\003R\003O\004T\212p3Mi3\336\22075\"\232\231MJ\244\324\350I\251T\232\2326\305N\037\212r\261\006\247W\342\244W\342\234[\336\232d\"\220JM<==_\232\260\222T\212\30752\236ju<S\367s\232\225_\212R\374\365\240\311\362\342\242f\346\230[\025\004\222qU\313\232\347\331*\026Ny\025\014\221\200p\005@\361\324\016\225\003%B\321\373T,\236\325\013GQ4u\023G\355Q\230\351\214\224\302\225\023%0\2551\2075\033-3m!\024\322)\244P\0058T\261\271\025z\t\rYnW4\321\326\247S\306*T\0250Z\220\003N\013N\301\315?\234S6\363OQR(\251\227\245J*T8\251\201\245\0143S#\342\237\277\236*\304o\221R\003N\335\305F\314)7S\225\252Uj\235\030\346\254\3063\212\262\240b\236\033\265\014\306\225$\343\2558\311I\2774\271\356j)$\343\212\256\355P\226\254\306J\205\223\212\211\243\343\'\251\250\035*\273GQ4u\013GP\264u\013GQ4u\023\'5\021J\215\322\243d\250\331*2\224\302\225\031J\215\227\rQ\221M\"\220\255&\337jp\024\344\0305f6\305XI{\032\220\016x\251TT\353S)5(aN\337\3158\034\323\201\244\3174\365\305J\005<\034\032pqN\022S\274\33684y\20754r\232\260\215\223V\025\261S\007\310\240\260\365\246\236i\264\340H\251\003U\230[\326\257F8\310\251C\021N\0143\232q<TE\260\334\032pl\216\264\365`:\232I\034m\340\325f\222\241g\315FZ\243d\250Z<\346\242d\343\245@\351P\264u\013GP\264u\013GP\264~\325\023GP\264|\324m\035B\361\324l\225\023%FR\230R\230S\214\324N\2375DS\232\215\226\223m\033h\305*\212\225EL\213\232\271\nqS\354\305\003\212\220\032x&\234\rH)wPI\241\\\203R\211iL\224\236a\247\253\023R\256MH\026\247\215q\326\254.\005?~)\311!\317Zs= \226\245V\006\237\232p54m\203W\242\227\345\251\213\214u\246y\200\032sJJ\340SFOZqm\2439\250\214\347=h3\0221Q3\324E\3513VZ<\324o\0368\025\013%@\321\324M\035B\321\324/\035D\321\324-\037\265B\321\373T-\0375\023GQ2TL\225\023GQ\264t\302\225\031N*\'J\205\222\242t\244\331F\312\nR\005\251\025jx\305[\217\201Sg\212P\0058\n~8\247\np\246\220sJ\017jx\240\232Pi\352EH\246\246SS)\030\247\356\305*\313\332\235\274\232z\032\223vh\003\232\225EL\2314\3609\247\255N\256@\251C\223O\033{\232p#\326\234d\002\243i\001\035j\276\376iwR\026\342\243-\315\000\326\263%D\321\324M\035B\321\324M\035B\321\324M\037\265B\321\324-\035D\321\212\201\223\223P\262TM\037=*&\216\242d\250\312q\322\230R\242)Q\262T,\225\023\247\024\315\224\004\240\245&\314S\302T\252\270\251\224\323\267\032\025\310j\265\033\006\025&)B\322\362)\0175\031$\0327S\203\032r\232x5*\232\225ju\247\020M\0023N\n\300T\250)\371\247+U\204\306*Q\3075*\200\302\244\tN<\nT|f\202\3704\236n\017ZS0\"\231\277\336\233\273\232vx\244\317\024\323\326\214\327B\311\355Q\264u\013GQ4u\023GQ4u\013GP\264u\023\'\265Wu\307nj\026J\205\220b\241e\250]}j\026\025\031\025\033\nf\312i\216\242d\250^<\324e)6R\354\342\202\224\004\251\025i\341i\301i\nsR&T\325\305\303(4\360\264\2168\252\354\304\032a$\320\265 \025\"\212~\332\221\005XE\030\251\300\033h\31752T\233E\030\024\215\301\241:\324\352\330\251T\223V#\004\n\235M#u4\301Lv\300\250\203\344\323\267`Ro\243q\247\253\346\2274\032@k\377\331"
-byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\002\322IDATx^\355\335QR\2030\020\000\320\016\336\377\3102\216N\255\032\241\224\220\322d\367\275\317(\010\311fI \310\345\002\000\000\000\000\000\000@&SY\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\300\002_\203MN\000\000\000p\237\021\343\350\264 \000\000Pc.\013\000\000H\304h\020\000\000\000\000\000r\261\352<)\r\017,\223\035\000 ,+\303X$0\000\000\000\000\000\000\000r\260>\020\000\000\000\000\000\000\000\000^\304\342\035\326\211\016\000\000\000\000\000\000\200\010<\375\005\000\000\000\340\331\334\203\002\000\000\000\000\000\200T<\"\004\200\261\271\226\003\000\367\314e\001\000\000\020\2121?\000\000\000\000\000\244\343\361\000\000@^^%\003\000\000\000\000\000\000\200x\254\r\005\000\000\000\310\306\033\"\000\000\000\221t2\313\353\3440X\241}\000\000\000\000\000\000\000\000\000\000\000\342\261V\034\000\000\000\000\000\000\000F\343i?\000\000\000\260`.\013F\342~G\003\357e\001\000\220\315\320\003B\216\023\000\220\222\256\317\250\334\306\000\000\000\340!\026\023<\215\252\005\000\000\010fj2\323k\262\023\000\000\000j\231\226A\004\303\364\344a\016\024\270x\r\207:2=\300~r\'_zy\177\377z\034\225q9\367r\032\235\253\254\336\016\034i\340#\333\322J\321\n\323\251\301x\346\337\002V\235\224\215\257=^\307\037\310I\241\001@^\337\343\002\343\203\r\277\257\311\273+k\210\013\372\356\263\312e\2106<D\000\374\023\261J\"\236\023\300\013<\222N\343\217\035 \243Gz\377\2154\020\307O\303\357\010\201\035\277J.B\003\272\247\233\322\324\357\200\362\006\020/\"\257eV\266\276\211\352\231\312\332g0\237\r\250\313\000\000$4\374 p6\033\341\211a\374\274=\323N}+M\233\3371x+\013\342\250\257\2664\326\253h\375\'\304\246\345\001\000\030\325\306\344w\323\321\355\007\261u\223\000\000\000\200\230<\002JJ\303\247\264p\373g\241\010\200\030\\\354!\022=\232\372\201{\375\226\001%\251\214\317\214q\313\032S\340\227\001\000\222\010x\371\nxJp\202(\323\302(\347\001p\036\231\263\324\272FZ\357\257\261\303\203\347\303;\000\030\216\314\007\000\361t>s\343D\376\021BJR@j\223\000HM\322g\233\034\001\231\271N \n\022x\340\303\277\242 0C=\000\000\310\304\014\200\277L\370\001\000\000\000\000\000\000\202\260$\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000.\276\324\010\000\000\000\000\000\000\000\000\000\000iYL\014\000\000\000\320\265\017\265\301<:\355\356j\346\000\000\000\000IEND\256B`\202"
+byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\003\002\002\003\002\002\003\003\003\003\004\004\003\004\005\010\005\005\005\005\005\n\007\010\006\010\014\013\r\014\014\013\014\013\r\017\023\020\r\016\022\016\013\014\021\027\021\022\024\024\025\026\025\r\020\030\031\027\025\031\023\025\025\025\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000\361\315\336\364\365z~\372z\277\024\340\364\340\364\241\351w\322\357\245\337@zv\3727\323\204\224\365\222\244\022r*e\222\245Y*U\222\245Y*E\222\244Y*U\222\246I*Uz\231\036\246W\251Q\352ezxz\221^\244\017N\017O\rJ\032\2245.}\350\335\357F\377\000z\013\322n\243u4\2651\2151\215FNi\255\326\232M6\212\t\342\233N\355M\017\264\232a\240\364\246QJ:\323\301\305:\212)A\257\036\240\034S\203S\325\251\341\351CS\267\322o\245\337F\372P\324\355\324\273\350\337N\022S\304\2252KR\254\265*\313R\254\265*\311R\254\231\251\026J\231$\251\322L\324\310\3652\275J\255S#\324\212\325\"\265H\032\236\032\236\032\235\221F\354S\203Q\272\223u\033\251\013P\032\202i\204\361M=)\264\323\326\230\335i)\t\305!9\242\214\323OZJF\351M\242\227\2458t\245\315(\030\024\345\031\243\251\257\035\'\002\232M\001\252M\371\245\337J\036\224=\033\350\337@zxz]\364o\245\335F\372p\222\246Y8\251\026J\221d\251\222J\231e\251\022J\231d\251VJ\235\036\254F\365:=J\257R\243\324\312\365\"\275H\255O\rN\rO\rK\272\2245.\357zB\324n\244&\2245\031\244\'4\322i)\244b\230\324\224\215I@\024u\246\265%#Sh\242\236:R\216\264\352wN\235i\017\002\274p\236i\207\255%=[=iA\305\033\2517\321\276\215\364\007\3058IK\346{\323\203\322\357\244\337J\036\244I*A%J\262T\253%L\222T\312\3652=J\257S\306\365f7\251\325\352Uz\225\036\246W\251U\352Ez\220=8=<5.\352]\336\364\355\324n\244\317\275\0314\240\322\320zSh\244#\"\230zSi\t\244\245\035(\003\212CL<\032F\246\321J\0074\352p\024\340(&\222\274u\272\323Z\232x\024\003\232\\\232Bi7Ro\243}&\352P\364\355\364o\243}(zpjxzxz\221^\246Y*U\222\247I*d\222\246G\251\321\352\314oS\243\324\312\365*\265L\217R\007\251U\352@\364\360\324\365jpjP\324\340\324\273\2513\2323\212u.M\031\242\212)\207\275&8\246\3434\3229\247QF9\246\021M\246\221\315\001i\300S\2058t\245\355M\2445\343\354)\215\322\232zSiA\346\202i\215L&\223v;\322n\245\rN\rK\276\215\334\321\276\234\036\234\032\236\036\236\217S+\324\252\3652IS\244\225:=N\217\305Y\215\352\302=L\255R\253\324\312\365*\265H\255R+\324\201\351\312\325 l\322\206\346\234\032\2274\003N\0074\340i\324QE\024\3229\244\246\221\212LsK\2121IM=i\244RR\201J\006)qN\351H}))\255^H\353\212\211\205FE6\212)\204\323\t\246\223M-I\273\336\2245.\3527Q\276\234\032\236\032\234\036\236\257R\253\324\213%L\217S\243\324\351%X\215\352\314oV\021\352dz\231^\245W\251Q\352Uz\221^\236\032\244\rR+S\303S\203R\203\232Zr\232\220\034S\250\240\014\322\355\243\024\3223HE%&9\366\245\240\364\246R54\363@\030\245\245\002\227\024w\244=))\204\346\274\256E\025\003\255D\313L+M\246\340\232CQ\265Fz\32250\223@jR\331\243w\002\223u9Z\237\272\234\255O\rOW\251U\352dz\235\036\247G\342\254F\365f7\253\010\365:=L\257R\253\324\250\365(z\221Z\244V\251\025\252Ej\22058\032pjp<\324\213O\035i\364\001\232u.(\3054\2574\021M\300\244\013F\3321M#4\332B)\000\315;\034Q\212\010=r(\316)\t\030\036\264\323I\221^q-\230#\212\245%\273)5\003G\212\215\323\025\023\014Si\247\255F\302\243=j6=i\244\323w\0323Fh\335@jxn)\301\251\341\251\312\365*\275L\215S\243T\361\265X\215\252\314mVQ\352dj\231Z\245V\251U\352ej\221Z\245V\251\024\324\252j@i\364\341\322\236\247\245J:S\326\236)\324\240f\235F\r\030\024\204R\025\246\355\243m!\024\3221M\"\233E\024\023\203H1\232BsHN(cM\256\035\324\201\310\252\262\250\252\263[\356\031\035j\234\2210\252\354\274\362)\205i\204sQ\265F\302\243a\326\243\"\232x\246\346\214\232JPqN\rN\rO\006\236\032\236\246\246F\251\321\252tj\261\033U\230\332\254#qS\243T\250\3252\265J\255S+T\252\325*\232\225Z\246SR)\247\016\r<\032\221ja\322\244Zx\024\360)\300f\227\024\355\264\230\244\333HW\212B1HE4\212i\024\303\3054\322QH\324\322qKMc\306):\321\\\274\221\007\342\251\317g\351Te\211\223<T\014\003\014UY`\353U^\">\225\013.\rF\313\232\215\205D\313Q\260\250\330sM\"\222\203E\024\365=)\364\340jE\251P\324\310jt5f3Vc5:\032\235\rJ\255S!\251T\324\310jU52\232\225\rL\246\245SR\003\232p\351R-L\225*\324\240S\300\3158\nx\024\273h\333I\266\220\212i\024\204SH\342\243n\224\303\326\232Fi))\255\315!\351\212L\322R\023@<W:\342\241c\212\216H\226A\315gOdW<qT\3326S\317\"\240\270\217gN\206\252\262f\240x\360x\250XTn\265\023\n\215\226\232E3m%\024\240f\234\005>\234*E\353R/j\231*x\352\304uf3S\255N\206\245SS!\251T\324\310jU5*\232\231\rL\246\245SR\255=jE\0252T\313R\250\251\000\342\236\005<-.\005\030\024m\246\221M\"\232E1\2526\2467Jm4\322\036\224\323HFM4\214QI\336\214b\260\336:\256\321\363Q:\225\250\235\310\315T\237\007\234\n\247*o\004\036\265JHJ\216\225]\227\326\241t\250X`\021\212\205\222\243e\246\025\246\225\244+\212LsK\266\234\026\234\253N\305=EH\202\245QS\240\253\021\325\204\251\326\246SS-J\2252v\251R\245J\231{T\311S-J\265*t\251\026\245QS \251\324T\252*U^*EZpZ\\q\322\227\024\204SH\3054\212a\025\033\n\211\273\323)\264\322))\247\255\006\232z\322Q@\031\254\271#\252\357\035A*\340UI\026\252I\031\301\252\3540j\'*3\307\025\003B\222t\252\363Z\221\234U9\" `\325g\371O\"\232@\"\232S\232c.\r4\245\033(\tN\013N\333\3058-8-H\253R\242\324\310\265:\n\260\202\246AS(\251\220T\312:T\251\332\245Z\225je\355S%L\242\246Z\225z\324\252*T\025:\n\235\026\246U\251TS\300\247\001K\203E!\024\322)\264\302*\'\250\230sL<\032i\353Mn\224\332C\326\233\202\0174c&\223\006\200)\325\236\353\305Wu\252\362&j\244\251Ud\312\325YG\265U\221j\273\251\035)\004\244S\034,\200\372\325s\020^\010\342\252\315o\345\234\216\225\031Zi\216\232c\243e(JQ\035.\316)\353\037\024\340\224\360\225\"\255L\251S\"\324\310*d\0252\212\231\005L\242\245QR\250\251TT\312*U\0252T\310*U\0252\212\2325\251\321jt\0252\212\225E<\np\030\245\244#4\332i\024\323\326\243=j7\025\023S\030SZ\232i\224\021\232B)1E\000f\224\n\247\"\340UGZ\205\305A\"\023U\336\017\230\344Uy \374\252\224\260\340\232\254\351P<U\021J:\360EF\351\201\323\"\240{p\334\212\205\243 \363I\345\321\345\322\210\351\336](\216\236#\245\021\323\304t\365J\225R\245D\251UjTZ\231V\246E\251\224T\252*U\025*\255J\242\246QR\250\251\224T\252*t\025:\n\235\005L\202\245QR\255<\np\024\270\246\32251\2150\365\246\036\265\033\n\211\251\207\221M\246\021\212B)(\355\232LP\006(\245\0035Zd\252\255\0375\023FOja\214\n\2511\332j\006\301<\325y\241\3108\351T\036<\032\210\307\232\215\242\250Z:\210\202\246\220\306\033\221\326\220\305\221\310\250Z\035\247\216\224\010\363J#\247\010\351\302:Q\035/\227N\021\323\326:\225c\251\026:\221R\245T\251\025jeZ\225EL\253R(\251TT\252*U\0252\212\225EL\213S\240\251\320T\312*e\025*\323\307J\222\234:QH\302\230\324\306\246\2651\2051\273\324ML=i\244SOJm\030\243\024\230\244\332i@\305-E>\027\202*\262\343\1775\014\355\266B*\234\254s\203P<d\234\236\224\326\2140\342\253\272\3558\252\323C\337\025\t\214To\035@\321\324O\0205\t\214\255\000\236\204S\214\001\227#\025\030\213\006\234#\245\t\201\322\224GN\362\351|\272p\216\236#\251\026:\221c\342\236\251R,u\"\245H\253R\252\324\252\265\"\255H\253R(\251\224T\250*d\0252\212\231\005L\202\246Z\231;T\213\322\244\035)\364\341\322\212BsLja\353Mn\264\225\033TL)\215M=)\235i6\320E\030\300\244\242\212*\'\234J\010a\317\255Ub\001\250e\303\034\324O\020cP\274d\214TY\301 \212\211\343\334sQ\310\234b\252\264x5\031\2174\326\267\357Lkn:T/\001\035\252\026\203\2769\246\204+J#\245\021\322\204\305;\313\247\010\3704\242:p\212\236\261\324\213\036\010\247\210\351\302:z\245<%<-H\253R*\324\252)\340T\212*U\025*\n\231EL\265*\324\311S/j\225{T\213R\016\224\340sJ\016(\'4SOZa\353MaIQ\265F\335j3\322\233HG\024\206\212C\322\233E\024\3401U\031B\277\006\243d\005\261A\203\007\332\230\361\014\234t\250\3320\005R\226\022\030\324L6\214\032\211\315@\343&\243\333J\242\236\024SL\001\252\t-q\332\241h=\251\236V;Rm\000\340\323\225\001\342\235\345sO\020\323\226\032\177\225N\021S\204T\361\035/\227N\tN\tO\tO\tR\005\247\205\247\201R(\251\024T\252*U\035*e\025*\366\251\026\246Z\225MH\rH\246\234\r:\212Bi\264\326\353IM#\024\306\035j6\246\021\203M\"\222\232GZJ)6\2126\322\321Y\242L\032\234\025l\034\363J\316\275\315D]H\340\324.s\221\336\241pH\252\322 \034\223\223P\260\007\322\243x\2062\r@W\007\332\215\270\351J3R \251\n\206\352)\257l\030\014\n\256\320\020zT3Zy\234\343\232\214\332\2748=j\304i\271EJ\"\247y>\324\242*p\212\224E\305(\216\227\313\245\362\351BS\202S\302\323\202\323\202\323\300\247\201OZ\225jU\353R)\251T\324\200\324\252jU5\"\232z\232~y\305;4\026\240\234\212J1\232B8\2445\023u\250\330S\010\342\233HFi\270\344\320Fi\264`\322\355\243m.+)\327i\250\344\233oJ\205\246\'\275F%\307zk\316s\326\205\227wz\212g\343\255Uf$\320X\201Q\254\233\233\006\245)\307\024\252\274T\212\270\251\024dT\250\224\343\006\352j\300\001\351R\275\240e\316+=\3410?N*e@Fi\342*p\212\217*\227\313\243\313\243\313\245\362\350\331K\262\227m(\036\224\340\264\240S\300\247\201R/Jx\251\024\324\212i\341\252Ej\225Z\245V\251\024\323\324\343>\246\237\221E\000\321J\006h\3074\323Q5F\303\232a\030\244\243m7\034\323H\305%.\r\004b\214Q\203X\006r\303\255F\3075\0218\357Q4\230\250\231\363I\347`To?\2750I\315J\256\010\250\310\031\310\251\021\216*U^jP\264\365Nj\304kS\252f\236\"\006\244\021\235\270\3075\r\315\272\311\007NEP\205\010;MY\021\323\304T\276]\036]\'\227G\227G\227I\262\223e\033h\333K\266\227\024\3401N\003\024\361\322\234\017\024\360i\301\251\340\363R!\251\224\324\252jU5 4\264\340sK@\0314\3721L=*&\246\021\232a\031\246\340\321\212\010\346\230E\000QE \034\322\327\037\347\340\324\242\\\216\265\033\275Wv\250\313{\324n\370\250\213\344\322\027\332jA&\006i\310\333\252Q\326\245Y01R$\204\232\267\021\311\002\255\252c\265L\213S*f\244T\3004\325\214;m\354j\235\325\247\331\345\004\016)\310\231\024\361\035;\313\2441\323|\272<\272\nSJR\024\244+I\267\332\215\264m\245\003\024\264\341KN\024\341O\006\245J\225MJ\2652\032~i\300\323\207Zu8t\247\001F0\r1\205F\302\243aLjJZi\034\212B)1F9\244\306I\244\035i\340W\003#`\324\221K\221Of\342\240f\346\243&\243sP\223\3159\362@4\302\347\0254\r\221W\023\221HN)c\227\006\256E>0A\346\264!\270\016\006z\325\221\201\3105<G\'\025r8\362)\215\010G\342\213\333\1776>\234\342\250\300\274`\365\0258\216\227\313\246\262SvQ\262\220\2454\2454\2454\255!ZM\264m\024`Q\212)i\303\2459i\313S/J\225jU\251\227\2458\034\032p<\323\307Zx\031\247\001\232x\034\212\rF\303\255F\324\306\024\302)6\321\214PG\"\232\313I\266\220\214Rw\245\002\234\005y\353\232lm\203R\226\250\235\271\250\313Tn\371\246\250\251@\310\"\241t#4\260\266*\342L6\323\032L\346\232\037\232\23679\255\010&\371pj\344r\345z\325\270%!\270\255\213V\022\n\222H\376`EH\361\356\217\221YrE\345O\354jP\271\024\245i\205i6Q\262\220\2454\2450\2457m5\226\233\266\220\217jB\264\224QN\034\212Q\326\236\265*\324\253S\255H:\032p\247\016\225\"\365\251\007Jx\351N\307\"\220\212ku\250\310\250\330S\017ZJ)J\362(+M+I\266\221\223\004S\202\372u\245\003\265y\313\034\323A\245f\300\353Q6ED\362\001\300\246o\315(5:\020he\334\017\2550Fi\300m\024\322i\321\216j\354`b\245\363\025GZ|S\373\325\350\'$\216k^\302\340\253\202kL]\2430\002\257!W\214V~\245\006\302\255Q\240\342\202\271\244\331I\262\227e4\2550\2554\2550\255#/\025\031ZB1L\"\220\364\246\321N\035)\303\265<t\251V\245Z\225jAN\035*E\025\"\324\200S\300\346\236)\010\246\221Q\260\250\330S\010\246\225\245\3058\n1I\2674\005\240\2574\230\307\"\227\255y\226\372i|TfB\307\024\311f\371\261P3\363B\266jP\307\024\326\224\251\251\341\223p\311\251wTls@\0314\346m\213L\027eF3C]\347\025$W&\257\333NA\353Z\226\367eqZ1\026\220o^\325\243ix\337w\322\237}rfP=)\260\260e\030\251\266Q\262\215\224\205i\205i\245i\205i\273)\256\265\021\024\3021M#\024\3021M\"\222\234\006)\313R(\251W\265H\242\245Z\222\236;T\212*E\025*\212z\212v(#\232i\025\033\n\215\205FFi1N\351J\006iq\221F\3320)\254)\240f\235\214W\225\261\346\230NM+\021\032\344\365\252\216j<\323\323\223V\024qQ\310\2775X\210m\\T\230\342\243\3178\247\240\346\222a\225\252n\204\214\323\0009\253P)\310\255\033u\306+N\3353Z\326\254cR\007z\267h\273\230\325\304\215H \365\250\"\006\t\212\236\235\252\362.E;e\033)\nS\nS\n\323\n\322\025\2462\324%qQ\221L\"\230E4\214RQO\002\244Z\221EJ\275\252E\251\007J\221jE\025*\212\225E=E;\034PG&\232Fi\214\265\033-FV\223\024\3401J\243\255.\336(\333\315\030\024\326\024\335\264\240W\223\274\200\232\214\310#\347\251\250d\224\277&\231\2734\303\322\244\210d\325\225\030\243n\346\251\202\340S\3526\030\247\3062)\322/\313U\230\002\244Tk\036MZ\210\005\253\326\352[\234V\245\252\364\255H\323\013\315hX\303\236GZ\272\360\344n\003\245V\270\217r\206\035EX\266;\320U\215\224\233i\n\323\n\324l\264\302\264\205)\214\265\013\255D\313L+Q\221L\"\233\266\224\014S\200\251\024T\213R\250\251\007Jx\251\026\245QS-J\242\236\264\3521\326\232E4\214\324l\264\302)\204b\234\007\024\016\224\240R\201K\212aZM\264m\257\036\334)\030\202*\'=\252<\363N\251#\025:\034\324\243\255K\232*6\344\324\260\364\247K\302\325Q\311\247\005\300\315>>XWA\247B\004C5\240\221\000x\025i\024\221Z\026G\313\255{E\022\344\366\252\3276\376\\\205{\032\202\331|\271\n\032\274\027\"\202\264\322\264\306Z\215\226\230V\220\2551\226\242t\250\236\007\035\252\022)\214\265\031\024\335\264m\247\001\232z\212\225EJ\242\244\002\234\005J\242\245QR(\251V\244\024\360:{Q\212M\264\322)\214\274\324l)\204QE(\024\3403JG\006\232Fi6\321\264\327\211<\2704\213&iKf\233O^qS\240\310\251\024`\324\252i\364\016\264\326\353SD:S\245\344Ur\2704\3420\265-\234E\344\034q]\035\262\355QWc\031\253Q\n\271\022\364\255\033\"VJ\236\3617\000\336\225\237!\304\252\325~1\225\024\342\264\322\224\306Z\215\226\231\266\220\2550\255F\311\221J\007\313\214\3259#\330\346\243e\250\212\323J\322\005\247\005\247\201R(\251PT\200f\234\005H\242\246QR(\251TS\300\247\201F):\322\021\221Lj\215\273\323)\010\244\247S\207J\\Q\212M\264\233Mx3>M>3R\322\205\247\255X\217\265IN\006\234[\024)\346\232\347\rVa\351C6Z\232W\232k\036\325\253\245\333\374\233\210\353Z\321\256*\334*j\364iV\342\031\305]\210maV\331r\274\325\tb\341\275\252\315\243n\214z\324\373i\n\324l\264\302\224\302\224\322\265\033-0\212h\035j\274\313\227\250\231j&ZaZ6\322\205\247\205\247\252\324\212*AO\002\244QR\250\251TT\200S\300\247\201\223I\353KM=j6\025\031\024\302)\010\342\220\np\031\247\201\232P8\244\002\227m\033k\300:\324\212qR\251\310\2513J:\324\250\3250jz\320\374\nj\036z\320\307-So\331\036j8\245\334\365g\250\246F\233\345\301\255\353B\025@\255\010\271\253\221\n\266\010QSA(&\264-\016\363\232\320\333\224\2523\251W>\206\2133\345\310T\326\200\\\322\024\246\024\2462S\nTl\230\250\231j6Zn\332\201\327-Q\262Te)\205)6P\026\236\026\236\026\236\005<\014S\324T\212*U\025*\212\221E<\nv0\r(\024b\243jc\na\024\302)\270\243\006\234\0058\014S\200\342\225Fiv\320V\276{PH\251UjA\305\033\251\340\323\321\363S\251\316*el\014\322;\356\244AO\333Nq\224\252\340l\220U\370\316V\236\253\206\006\264\355[\030\255Xq\214\223R\033\220\274->9\313{\325\270\t\365\342\267t\325\302\214\326\232\200x\250\247\267\310\351T\304GwNE^\201\211\030=jb\224\322\224\302\224\306\217\025\003\255DV\243e\246\025\250\231)\205*2\224\302\224\205)6S\202\323\202\323\302\322\201OQ\232\225EH\242\245QR(\251\000\305.?Jv\334\032B*6\024\306\024\302)\245i\273h\0034\240S\202\323\200\342\234\213N\300\240\255|\376\211\3058\215\264\270\3150\216h\335\316)\312pj\324g5&h\315I\020\357J\347\232z\234\365\246<;\206GZ|Rm\340\325\220\340\212\265k&2\304\363V\305\311=:U\2302\335j\354m\214\n\275l72\217z\350l\206kB>jm\241\305\"\300\013r*W\266P\233\207Zj.E+GQ\262\342\241qP\262Tl\225\033%0\2450\307Lh\3523\0354\307L)M\331J\022\224-;m(Zz\212\225EH\242\245QR(\251\000\245\013\232R\274\322\025\246\021\212\214\212iZiZM\264\005\342\200\276\324\270\247(\247\240\342\237\267\332\202\265\363\310z\220\035\302\230_i\245V\r\326\224\203N\210d\363V\203\005\034S\225x\311\241FMXP\025i\215\326\234\247\232\264\2106\212\n\002zP\320\020\001\025-\272\222\333}j\373.\300\242\254\301&\000\253\320\215\313\270\326\225\222\347\346\255\273V\332\242\257E\'\025j7\030\253\t\203V\305\271\222\022EWHJ\032sG\305A\"sQ2TM\035D\311Q\264t\202*C\027\265F\321\324M\0350\307L)I\345\322yt\241(\333\355@J\221R\244U\251\025jEZ\225V\236\006)q\232V^@\246\221M+L+M\333HV\223e\033(\333F\312P\265*\255;m&\332\371\315M?8\246\236M=F\336i\341\263ON\265/qOg\340\001R#m\247\207\244f\245S\315ZG\371i\352\t51?--\227\315=h\317\215\271\244\200\363Zv\315\270b\264\254\006\027\236\346\265\242j\273\013qV\243j\225f9\255\033+\254\034\036\206\254\313\026\017\037QU\317\'\030\250\331*2\225\033F}*&\216\233\345sN\020{S\036,T\016\200\n\201\261Q1\024\334R\354\243e\'\227I\345\322\210\351\341*EJ\220%H\251R\254t\355\277\235\033I\024\245~o\302\232\353M\331\3054\2557m\005h\331I\262\220\255\001)v\363R*\323\366\322m\257\233\026\235OAO&\220\003\232\235\006\005\014\370\351\326\225\0079\247\027\346\224IR\251\310\247\003\315M\023\325\204l\032\225\210\333Kb\333_5ry~Z\222\335\270\255\033R\003\036}\253V\325\261\212\323\205\352\334rU\210\237\236M;v\306\2536\363\374\303\025\277\001\017\022\236\365\034\310\025\307\024\307\003m0C\222OjkG\315F\321\3236\200y\245<\375\321\232\212H$<\355\2527\010\331\301\342\230\232t\223\014\203\3051\364\231\201\340\325i \226\023\3104\325\233\261\251Q\201\251\225sK\345P\"\247\210\251\353\035=c\251\026:\223h\003\031\3054t\342\234\240\251\342\215\234\232F^)\233i\nRl\240%\033h+M\331@J6sR\005\247m\243m|\317\273\002\224rje\004\nURjd\217\326\206ni\252\233\233=\252F`\006*\"\340S|\332\225f\305H\'\025$s\n\262\'\030\353R$\273\270\2530\341MO($dt\251m\333#\351W-$\3435\261m.\000\315^\216N\2075r\t\207\025f93\323\245=\344\300\253\232Z\231\236\2728N\334\016\302\222\351\274\307P(+\322\224\216*& TG.x\251\022\304\260\311\346\254\307i\267\031\025bHQ\2418\034\212\307\222\301\245|\355\340V\215\265\210\362\361\322\253\334\332\2721\302\325\t`\3638+U\344\322C\256@\254\331\354d\266bG\"\210f\347\007\255]A\270T\242\032w\225\212Q\0258E\212pLPS4\001\212P)\312\201\263M)M\333AZn\332\021pM\033sAJiZ\002P\023\232\220-.\337j6W\314-\327\0254I\232\234\250\002\223xZ\004\204\323\206\010\346\221\246\n0*\007\233\236\265\021\230g\255 \224f\223\355\031<T\251.j\324\022.pj\304n7\232\271\tSV\221px\253(\300\214\032@\336PoJ\263b\304\214\366\025\257\023\215\240\325\310e\311\353V\321\370\353V\341\227\003\255Jd\335Z\272$\201e\301=k\246\2120\303\216j\031\007\225)\004S\203\2023L\222`:Sc\204\314rzU\273{\022\354\000\031\255\253}8*\r\303\232\230\331F\027\346\034TMom\310\310\037\215R\271x\243\371W\004U\t.\374\263\221OK\246\237\000\016=ju\263I\006p2i\037M\332\271^}\252\215\316\227\346\203\362\326-\316\214\310\304\205\250c\215\3428\"\256\304\003U\201\016iD\030\2441\323JSJR\004\247\204\240GJS\212O.\232R\223e\021(\336wt\3057h\'\212]\224\322\224\004\245\331O\331F\3126\342\276_+\315M\027\002\234\3474\305\033\217\265<\220\243\002\230\322\343\275@\362T\014\304\346\243-\201\326\230\323\205\030\024\304\270\031\251\243\272R~\360\251\243\270UpwT\342\364K.\330\317=\353J\t\n\016\0338\255\010n2\2314\350.|\327\306y\025=\324\241#Q\236I\253\272L\203\313pj\374Rg\201Vc\233oJ\263\034\345\210\253\361I\201\326\245\023{\325\313I\335\034\021]f\237}\271F\356\265\242\n\317\367\2274\215l\2528\006\230\232l\222\267\nkV\317Ge\003w\025\247\035\240\204\002\000\000w5\025\336\240\020mN\276\265\2355\363\270\"\250\3113\214\234\326u\303\310\315\234\324E\333\275\\\264\271\331\216\005_\032\222\241\000\200j\324wbl\005o\300\326\242B\0360J\216j\t4\205\220\034\n\312\276\320J\344\205\254\231,\036\334\344\016*XpG\275Lc\030\246\030\252&\216\232c\244\021\323\266b\224&iJqM\331L)@\216\232\023\004\320\261\322\224\246\024\243m(Jv\321F\005!\025\363\031\207\024\365\2174\331x\030\025\032\374\253P\273\223P\273\036\325\021c\236j\t\256\226>:\232\250n\313\237jx|\255@\344\344\342\205\030\251S>\2654Nbp\312y\025\253mx_\007<\367\025|\336\355!jM:|\335\362x5\241\2527\357\"\301\253\266Rl\003\007\255^\212@\016j\302M\353S\305>\326\253Ix\007\031\253\226\357\346s\232\327\266p\2523Z\366\027#x\346\273\0355\342h\301\343>\365\246\202\'a\362\256E[Y\341\204e\312\375\0054\352Q\020|\244\371\252\255\305\343\260\3015\234\312X\365\246\224\305D\321g<Ui`\252\217\t&\232\250T\324\241r2GJ\236\027\332F\0075\273\247\335\235\241X\234V\314\005X\214sWR\331e\0048\353To|>\245K \310\256_Q\322^\331\213\250\342\252\304\341\270=jM\231\246\264u\031\216\201\035.\312_/\024\206>)\276_4\215\036)\002qQ\264y4\340\230\024\326\030\250\330\200i\245\205\033\351wf\223\'\322\227k\036\325\363l\240b\243-\306\000\250\235\017z\206V\300\305Vy\002\216j\263\334zUi\256\t\035j\204\317U\314\2705$w&\245\3633\315(l\324\253 \024\341-M\014\373\016{\326\204R\007\217,y\246\245\323C e=+n\336\344\3370s\321Ei\371\236\\(\300\365\353SAu\2209\253q\317O3\342\226+\222\322\201\232\354\264\255-\347\263\363T\344\016\265\"\304\352\3705\241lV!\223\232\331\262\324\037\205L\327Eg\024\322\000\314H\025tG\014|\312\347\351K\366\204l\354 \n\211\233q\353I\260\nP\271\245(*6\2105B\366\243\322\243\373(\364\251c\264\004t\247\013\002\016@\253\021\304\312\000\305l\351\247n3\326\267 a\273\236*\342\251\034\365\025CP\323\222\355Xm\003\"\270-^\301\264\373\202@\3434\226\354%\\\324\206<\323LT\202:p\210\nk\'\"\225\243\342\231\262\230\313\2126\214S\n\014\324R8QU\036R\307\013\315=-d\222\237\366\006\035i>\317\315O\035\241\307Jx\265\365\246\233r\005|\316\321\212\215\200^\325^g\252s>\321\223Y\322\310X\325w5ZF5VSU\230\322\006\305M\034\270\247\371\274\323\204\264\345\222\247Ij\3147\007\033GS\322\231qr\321\235\204u\256\257D\001\355P\251\346\256_I\265\021?\032-_ V\234.\000\246\31575sO\204I\2065\330\351:\240\266\267\362\331\210^\340T\217\253!\223(\270\255->\361g\341\324\021\353]F\227\035\267Ta\307^j\375\316\261\014\021\354\214\344\373Vg\366\213J\371,M]\202`\303\255]\210\347\275K\234\n\024\323\217\326\200i\335z\322\210\203T\221\305\212\230.\323S \007\265Y\210\205#\265li\350e g\212\336\026\270^\230\342\241\226\000\007\245r\376#\323>\320\204\205\344W\031\3455\224\270\376\032\277\024\211*\360y\240\2504\004\002\232\330\246\344\021\357Mi\024\016\265\003\316\253\236j\273\334\022x\006\232f\177\356\232\211\345\224\364\024\211m,\315\222\016+B\323O\003\005\205^\020\254t\331\006z\n\200[\344\364\251\226\026\003\245#@i<\203_-\025\342\240\220UYx\254\331\330\261>\225RN*\273\363U\344\342\252\3103P0\246\021\203FiC\032]\364\345\222\245I*Xn<\271\001\253\027S\tP7|\327Q\240\312>\314\006{U\253\213\324-\264\200H\247\301>G\025q.\n\367\246\033\215\362\343\275lZM\344 \2558%i\007\025z\312\331\356&\013\320w5\270dKX\374\2449>\264\370/$\214aX\214\325\250\356\031\210\311\253\326\362t\346\264\355\346\3069\255\030n*\322\315\221N\363E/\231\357NI9\251\203\003SGS\201\212z(52&\rH\020\365\253\266wf\331\201\315uZu\374w1`\237\233\247\326\246\222\334\222x\2527vbE9\034\327\037\254h\3409\300\256z]2h\3331\346\232\"\272Q\367sM1\3351\341\r\013ev\347\241\247\377\000e]\361\326\236\272\r\303\237\230\232\267o\240\017\342\353W\323\303\252\313\220\234\nsh*\247i\217\255B\372\032/\360\212g\330\202p\026\232m\034\366\3058Z\0009\315\r\002\212a\210\016qM\300\024\215\322\243\'5\362\243\325y\016*\224\347\203Y\322UIj\006\250$\031\252\356\265\013%D\313L\305\030\246\265\000\342\244V\247\023S#\251\210\344\234\326\326\213\250|\230\317J\236{\255\322u\3475\245e.TU\326\223\345\252\361\317\211\253~\306_0\014\212\337\264\001@\025\250\227^Z\355N\017sOG$\344\232\263\023\325\270\246\003\025z\t\272sZ\020\317Wa\230\325\245\234\201S$\371\251Vjz\314*d\223=\352\324-\357Vs\357OG\253H\331\025:6iYy\255m\036q\014\212I\342\272\264\221&\213*Fj\264\213T\256\264\370\356:\216j\224\232*\001\367A\252si\213\0318\216\232\226q\201\314u\033\300\021\301U\375*\322\303\347(\312\014\323\326\300g\240\240\330\252s\212Q\"\304\245GCUn/\001#\004\234T\002\361H;\207\025\004\2270+q\326\2315\312\0206\212\256d\310\342\253I\'5\003K\357B\266h-\316)\207\255|\256\353UeZ\316\272nqT%<UG\031\250\331x\250Yj&J\215\243\250\232:\214\307M)Q\262\323J\322\241\247\343\212\257uq\366x\313\003\310\246\370wQy%b[\255t>c<\2035\261g.\024U\2636EWi6\276k\243\322g\037gS[\326\227\001\272V\214\017\315[F\351R\211{\n\261\013\223Wa\223\004V\214\023\014u\253\221\335*\325\210\356\301\251V~z\323\305\307\275(\2719\353Va\271\367\253\261\\t\346\255%\317\275J\223d\365\253p\315V\342}\325a\006\352RZ&\004\036*\375\256\271\344\220\273\215n\331\352Q\335(\317\006\256m\004dt5\013\361Q\260\007\265F\366\341\207J\253%\253\026\3501SG\010A\323\232\227`\025V\356\345\023+\322\262\'\221\233$0\366\346\263nD\301\263\234\325+\206p1\272\240F#\251\251D\345i\317p\n\361Ud\227\320\324&Jr\315\212x\223u\005\270\257\227\034U+\211\000\004\n\313\237\223U$Z\205\222\243h\352\'\216\230c\250\232<TL\265\023/4\306\025\023\212\215\2052\236\033\212\305\327\256vB\300T\236\014\204\312\373\230q]s\361>*\375\273`\n\266\017\025\014\355\212\335\321\344\006\325k\242\264\235c\\w5~\t\363WR_z\261\021\004\362j\354S,G\221\232y\270\334\331Q\201R\307rj\344S3U\250\345#\255YI\375\352E\227&\244Y*x\245\305\\\216j\235\'\307z\263\035\300\253pO\236\365\245n\371\305hD\303\326\222v\317J\241(*\331\006\257i\232\237\225 \004\327ogv\223[+g4\255\206\350j\026\034\322\006\305\034R\034\016j&\270S\307\245d\352E\230\022\275+\"Y\0368\316EV[\206c\317\024\331@|\234\346\242\020\361\232\212D\305@\306\242sQ3R\006\241f\332i\3170\257\230n$\'\201\322\263\3465Q\306{TL\225\021Jc%Dc\315>;A $\234\001U\'\214\0068\351U\231j\007\025\023\365\250\030\363Q\261\31574\036\225\201\255!\222@+\240\360\335\260\264\264\334:\342\266\027;\301=j\344-V\343$\212{\303\274U\373\005x\225\177\273ZQ\\\025|\347\212\324\265\273\334G5\255\004\333\252\345\273\000\3375^\371_\356\3475<@\201\310\024\354\220\331\305\\\267\272T\034\324\246\3441\342\244I\252U\270\307zz\334\325\210\356\300\357VR\354\036\206\247K\234\367\253\021\314I\253\220O\267\034\326\265\255\320\332*\354w\031=j\304o\272\243\232\252I\230\306\352\331\360\366\264\312\376[7\313],w\300\236\265+] \004\356\252\346\365\007\\Trj\360\251\3015Fm\\\310HN\225X\3371=y\365\252\3677\217!\0377\002\253\3110e\347\223UYw\036*T\213+\311\305!M\243\257\025V^MU\223\212\211\272T/Q\206\301\244-L/_5\315\315R\225rj1\036A\250Yj\027J\214\2554\2551\211\003\025ZE\252\322\014UY*\263\265B\315Q\023H\006MI\217\226\2615\023\231\306k\240\321\263-\270?\302+dD\276\225<J\007\025n0=jp\350\275M]\267\2342\377\000\262)\223\337,@\214\363V\364\353\242\370\346\272\013Y\360\0075\241\024\345\271\253\326\367\\\325\344\270\367\251|\340GjO3\232\225\037\035\352e\227\024\357?\336\227\316\367\244\373Q\007\255X\206\350\325\373y\311\255+yCU\330\230V\205\264\200b\257G(\315[\216|\016\264\2179&\234@\2251QD\237gl\212\322][\010=iN\250\344}\352\215\265\006\317S\212\211\347.sJ\223\0200*@\374T.\325\036iD\201G\275!\270\'\212kM\305B\362\003U\335\262j3\326\242q\232\201\2704\306jc5|\335\'5\003&i\273q\326\241d\250\232:\211\243\2462\347\034TN\270\025VJ\251-S\224\325G\250XsM\333NU\247\221\362\326F\247\001\373\325\243\341\333\276\221\263\000\243\326\272U*\330\000\203N\311SO\0227\255*\253\271\357V\205\300\2116\203\322\250M3K?^3[\332Q \n\336\202\\b\265\354d\016@\255\035\252\243\212\004\333OZ\232\031s\336\254+z\232\221^\235\346\320f\367\240M\236\365\"\362z\324\3616\r_\206p\275\352\374\027=9\253\360\334U\330nj\365\275\306j\322JMI\346f\247\206J\225\317\031\250\017_j\2250E)\305\002A\322\236\016i\341\270\246\273\003Q\227\024\302\365\013\276\r0\2754\2654\2654\232\211\252\'5\023\n\215\201\305|\350\353MT\000\344\323\035F8\352j\006L\032\215\226\241\221j\006\025\004\246\252Hj\244\325NQU\331sQ\262\3236{S\325i\3413U5\0107!\030\254C\346[\266W5\241\247\353\357\024\237\275\311\000`V\375\236\275\034\307\004\376u\246\227\261\354,\024Uy\265bx\035=\250\216\3540\353\315X\265_1\301\256\202\315v\250\255\010\244\301\255;+\235\254+Un\262\274\232`\233\3465<W\030\3075en3\336\236\'\367\247\211\250\363iD\2305f\007\334z\324\245\360z\324\360\311\232\277\004\265z)\252\314w8\357Wm\256\371\034\326\214W@\367\251\326q\353Vc\234z\324\302p\303\031\246\226\316y\241&\npMK\27053\200x\247\211p)\336nh2qQ\227\250\331\352\'jf\372M\306\200i;PFEV\224\021Q\006\317\006\226\276xd\250\331*2\244Tn\230\025\003\016j\t\020\232\257 \252\322\014\325i\026\252J\265RE\250Y*2\224\233)\313\036jdLT71\206\025B[!&x\252m\247|\335(6o\013dqZ\266^`\213\004\232\225\241b\331\253v\321s\315i[\376\351\201\255\253iC(\"\256F\325n\t0j\352\\p9\346\245Y\263R\244\274\325\230\346\342\237\366\214S\305\317\2758NOzp\232\255\333K\315J\323|\325b\tsW\342\226\254\244\370\251\205\306;\325\230.\262@\315hE+c \361W\241\233\216je\270\332z\361S-\317J\224N\017zR\373\273\363R\3076\325\346\227\355\000\232C-9e\247\371\234R\027\315F\317L-M&\226\202qH\017\255\014qQ\270\334*\253.\032\224t\257\001h\3526\216\243h\361PH\265^D\346\243q\305S\225y\252\356\265^E\252\222\245Ut\250\236:\217e\'\227R\244t\262\020\007\025\\\215\335i\2166\212O+r\206\3052A\270\201\212\2363\264\001\212\227\315\036\224\370\346\346\256\302\373\205iY>\016+V20*\324m\212\235\034T\253 \035\352d\222\246Yp)\014\246\236%\342\244\216l\232\267\037\315\311\253\"E\215i\2136\346\253qK\266\255\307qV\226s\214\323\226b\306\246\216r\216+b\336\364\025\034U\265\273\004S\232\360v\251b\273\317z\267\024\343\326\247\023\347\024\3637\024\007\3179\2452b\205\237\025\"\316\r;\314\246\264\224\303%(\177Zx4\247\2450\360h\335\270b\230[\025\023\220i\233\253\302\332:\215\243\250\235*\274\221\325i\020\364\355PH\225ZH\352\273\245W\221*\254\251U\232:\211\343\246\030\375\251\004t\355\270\250\235\t\246\371x\250\245^)_\210\300\250\025rsV\025sH\313\315*\014U\270\037\006\265-_\245jD\331QR\265\306\316)E\331n\365<sg\034\325\330\233\216\2656\372B\324\340\36542\005<\325\345\223+\305F\362\232X\346\301\253Iq\232\261\024\365v)\362\270\315K\034\373Z\2375\326:U\213+\334\361W\226\350\251\353R\375\243v9\2530M\216j\352\\c\275L\227>\365/\332\3061\232Qw\357K\366\234\3654\323s\351OK\217z\231n=\3503\347\275\002l\324\210\371\251\225\360)\373\270\246\271\250\031\360i\036L\212\204\2774\322\370\353^:\361T/\025B\361Uy#\252\262\307U\336:\256\361\325y#\252\362GU\244\2135\003EP\264\\\323LX\246\230\361M)Hc\246<|UYS\232\211\301<P\211S\242\361C/4\252\265$jKqZV\252x\315j\303\302\212s\214\324c\203V\242\"\256\305&\005L\262S\367R\207\247)\253\260>\0074\371Xb\241\r\212\2269j\314r\325\230\347\305XIw\016\265&\375\3255\261\332\325\240\262dS\322S\232\271\035\306\005L\227\031\357R-\316;\323\376\324\017z\005\326;\322\213\302;\323\205\326OZ\231\'\367\251\026\340\324\213!525L\217\203V\025\370\247\207\240\277\025\004\217\203P\263\346\242\222]\203\232\204\334f\274\335\241\250$\213\025Y\343\252\362G\305V\222*\254\361\325i#\250\036*\257$u]\342\250^,\n\205\242\246\264u\021\216\230\311\212f\332FPEV\2259\250LY4\242<S\300\3050\214\232*X\216\326\310\255;w\034V\214-\221Ov\305D\307&\246\2175f2EN\254je5*\232\221H\251\221\273\322<\331\3434\300\3475*\032\261\031\251\321\215X\211\211\253\010\325</\203V\326^)\313!\006\254\244\274T\311%<\2754\315\266\223\355\006\234&\317z\225$\346\254\307-L\262sV\021\216EZF\342\237\276\254G/\024\246Oz_8`\325w\223&\243g\305W\232^*\233Jk\224x\261U\236<\236\225^h@\307\035j\274\220\325Yb\252\317\025V\222*\202H\252\273\303P<=x\250d\212\2410\324o\027\025\031\213\025\013\307Q\224\250\335y\250^:\217e!ZiZa\024\2305\"\324\320\312T\326\225\254\306\256\277\314\240\323\027\255Y\214\214T\361\214\324\352\231\251\225H\247\205\247\001\315J3\212\214\241\315=V\246E\253\021\212\231jx\233\025aNi\312\374\325\210\244\305Hd\346\255E&EL\r;w\035j6|\323w\342\234\262U\204\222\254F\370>\325r!\273\025r5\310\251\025\361\305+>\005,s{\323\314\276\364\206\\\320\016y\250\345\224c\002\251\311&sU\331\361X\262EU\336.*\007\207+\223\370UY\"\252\262CU\336\032\201\341\252\357\rWxj\007\206\240\222*\205\242\250d\212\243h\370\250\036*\210\307Q\264U\023GQ:`\324l\265\033-4\255&\312xZtk\315\\\205\261W#\237\261\251@\311\251\243SVS\212\261\033U\205aN\363\005804\365lP[\232zsS\250\251\001\002\236$\003\275=e\305?\355\024\236y\315X\212\3435n7\334j\334n\026\247Y3N.\000\250\333\236\224\314\232z\222*Uz\267o&x5\245\010\300\315XW\"\236\030\036i\344\344T,\333\032\234\037wz\221\010\035h\226A\267\212\245$\325]\345\315D\322T\017\035Wxwg\025\013\305\307N\225VH\263U\336\032\256\360\325w\206\240xj\274\220\324\017\rV\222\036zTM\rA$U\023\305\305@\361T-\027\024\303\025D\320\324\022\307\315@\321\340\324n\224\335\224l\243m9EL\202\254F\231\253\366\321dU\237+\002\234\274T\252\334T\201\215<\034\324\252iK\343\275.\343BJA\251\326~)L\371\246\231\211\251#\220\223S\256MH\020\232\263\004x\253i\205\251|\334\016\264\370\3469\353OyH\357H.*dp\324\360i\352jx\233\004V\235\274\370Z\263\274c\2553\316\000\323\332\343\345\342\243V-\311\247\357\330:\324-tsA\271\310\353P\311&j\006\223\232n\352\266\361f\241xq\305Wx\252\273\305U\336\032\201\341\252\362CU\336\032\201\341\252\357\rWxy\250^\036\265]\342\250^*\201\342\250\232*\214\305Q4\\T\022\305\223P<U\004\221\361M\362\350\362\351\014t\212\2252%X\210sZ\020\036\005X\335\221J\027<\323\325j@1NQR\016)\257\222iU\217Jr\212q4\252i\352A\251\220\212\235\010\253(\303\025 }\264\344\270\031\247\371\273\251\361\276\rJ\0334\001\223S\240\251\343\313T\240\034\323\320\342\255G)QS\254\245\252P\007sNR\001\353O2\205\025\033\312\010<\325C\'\314i|\312k?\025\01374\241\253q\342\250^*\201\342\252\317\rB\360\373Uw\206\240\222\032\256\360\373T\017\017Z\201\340\252\257\027&\240x\252\007\212\240x\263P\274U\013G\305F\321qP<~\325\023E\232\202H\252\274\261qQ\371t\010\350\362\251<\252z\307SF\230\253(\330\2517\361B\312U\252\344L\034T\333x\245U\245\344Py\250\230\2254y\230\247\007\315=MH\247\025*\032\260\206\254%HA\"\232\"5*\253\001SF\010\251A\3059^\255E\202*t\030\346\247\214\006\025 \213\006\237\214\ntR`\322\264\270=i>\321\212q\270\014*#7\2750\276M?w\024\233\275\3526\353@8\256\261\342\250^*\201\341\250\036\032\201\341\344\324\017\rWxj\007\202\253\311\025V\225\000\252\317\025@\361Uw\217\025^D\252\356\270\250Yj&\025\037\225\232cCP<\\\364\250%\207\"\2411b\223\313\245\021\322yt\010\352UJ\221R\244\021\322\030\371\251a\312\032\276\230u\025*\245#\256\005Uw*j6rh^\265*\214\324\250\265&\312\2265\253Q \253H\200\n\\\363S\3063R\354\030\245\010\0055\270\242>\265i\033\02529<U\250\201\002\255)\241\372\232\210\034\032d\217\201P\tw\034S\367`S|\317z]\344S\326L\323\267R\023\232h5\377\331"
+byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\001\213IDATx^\355\335\313\n\2040\014\005P\321\377\377\344\021q1\013C\231\301\0073Mz\316\362.\004\241\332&\021\234&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200!\3151\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0008m\215\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\333\034\003\000\000\000\000\000\262Yb\000\347\230\026\000\000@\022\016\357\000\000\320\2455\006\351\274\357@\321\001\000\360o>\003\202\316)\233\000\250\"\177S\023:\366\212\001\000Y\335?3\035;\t\367\257\007\017\260\020\001\340;\003!\000h\260A\322h*4\"`\010\236~\000\000\000\000\200\252\214\005\001\000\000\000\240\006_{b\r@\035\3467\000\037yM&\342\017\014p\201\342nX68\000\000\200\003e\022\000\000\000\300(\366N\220n\020\000\000\000\000\000\000@u&\303\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\300\317m\204\275\016\017\263vs\375\000\000\000\000IEND\256B`\202"
diff --git a/core/res/geoid_height_map_assets/tile-b.textpb b/core/res/geoid_height_map_assets/tile-b.textpb
index 83d160b..b9b5bfc 100644
--- a/core/res/geoid_height_map_assets/tile-b.textpb
+++ b/core/res/geoid_height_map_assets/tile-b.textpb
@@ -1,3 +1,3 @@
 tile_key: "b"
-byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\004\003\003\003\003\002\004\003\003\003\004\004\004\004\005\t\006\005\005\005\005\013\010\010\007\t\r\014\016\016\r\014\r\r\017\020\025\022\017\020\024\020\r\r\022\031\022\024\026\026\027\030\027\016\022\032\034\032\027\033\025\027\027\027\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000fy\245\006\202sE\024R\346\224\0323\357J\r=Z\236\032\237\272\215\324\340\324n\243v(\335\223O\337\205\300\250\313\323K\323w\321\276\224?\2758=8I\357O\022\373\324\202S\353O\023{\323\274\363\353@\234\372\323\204\376\364\3617\024\34158M\357N\363\250\363\275\351<\336x5<R\347\251\253\005\262)\204\215\270\254\273\3051I\221\320\324K!\"\224\2755\236\243/M\337\315)z7\322\027\244\337H^\205bM[\213\205\247\023M\335C>\007Z\201\256\000\357Q5\310\365\250\232\346\242k\234\036\264\326\273\000T/z\000\252\315xI\353W(\245\315&h\242\2274\240\321Fy\247\003O\rK\272\2245;u.\352Bis\201\3154\2654\2650\265&\3527Q\276\224=/\231N\022{\322\371\336\364y\336\364\3417\2758K\317Z\221X\232\224\023N\016iw\232w\231F\3727\324\261\315\203\326\254\254\331\034\032\014\240u5Z\361\326H\376\225EO\034S\213\361L/L-L\335\315)z7{\322o\244\335Aj\226.Nj\342\364\306i\030\250\352j\027\231W\275S\232\353<\003U\332R{\324fJas\353Q4\234\324M\'\275@\357P\274\230\255\343\322\212L\321\223Fi3\315.isFM\024\271\247\003J\032\2245(j]\324\273\271\241\245\312\201Q\227\246\026\244\335I\272\233\276\215\364\027\244\363(\363=\350\363=\351|\317zp\222\236\262sV\243\220c\232\233\314\024\236o4y\207\326\227}\033\350\337J$\346\245Y\215=\245\312\373\325Ig \021Q\243\344f\234_\212\211\237\007\2554\2757}\033\351wqM\335NV\024\027\311\342\254Dp*_4\001\301\252\323\\\340\340\034\325\'\230\261\316j2\3714\322i\t\305F\315P\273TE\252\'j\205\216k\244\244&\222\212L\322d\322\346\2234\271\243\"\234\017\024f\2274\271\245\335J\032\215\3704\302\324\322\364\302\324\233\251\013\322\026\246\357\244/I\276\220\275\'\231I\346sR\251$g4\355\3705*\334c\275J.\001\357N\363s\336\224K\317Z\220J=i\336e\033\370\244\337O\022S\314\270Z\257+\023\021\"\233\031\371E+5D\315L\337F\356h\335K\272\233\273\232P\324o\346\246\023`To9\307\006\253\226\'\2754\322\023M&\230Z\243f\250]\252\"\325\0235D\306\272|\322Rf\222\212L\321\232J2isFisK\2323K\272\215\334R\026\246\226\250\331\251\245\2517SK\322\027\246\227\246\227\244\337H^\230d\244\363=\352E\237\003\255)\237=\351<\337zp\233\035\351\353p}jD\234\223\326\247Y}\352A/\275<IK\276\234\032\226G\302\342\221[r0\246n\300\3054\275F\317L-I\272\2245.\343@98\245\346\216i\030\361L\315&}\3513M-\3050\265F\315Q\263T.j\"\325\031j\214\232\352h\244\343\232JL\361IE!\353IE&i\300\322\346\214\373\322\216\005&ri\013Tl\325\031jilSwf\220\2650\2754\2750\275\033\351\206Ja\222\232d\243\315\367\243\315\367\247\t}\351D\264\242_z\221&\301\353VRl\212\231d\367\251\004\224\361%8KD\222\360\006ic\224\003J\347\370\205DZ\230Z\233\272\227u\000\323\306M=p)K\014TL\376\224\204\323I\244\315%4\232\214\232\215\232\242cQ9\250\230\361Q\223L&\272\312)\264Sh4\231\244&\233\237z3I\232Ph\317\275.}\350,i\001\3434\205\252&j\214\232c78\024g\002\230\315Q\226\246\027\246\027\246\231=\351\206Ja\223\336\232d\244\363)<\312Q-8KJ%\367\247\t}\352\304S\201\336\254\254\336\365*\312=i\376p\305\002Nz\3224\271jz\311\357R\244\204\241\007\261\2463\214\323I\315\031\245\006\224\037Z~\3768\244\336h\337\232L\322f\220\232N\264\204\323\t\250\230\324lj2j&5\033\032\214\232\214\232\353\350\244\"\222\233E!\353M4\3123\306)3\315\031\2434f\202h\'\024\302j2j6l\n`9\346\220\265F\315Q\227\250\331\3522\364\302\364\302\364\302\364\303%4\311I\346P$\367\247\t)\302J_7\336\224M\216\365*\\\220z\325\244\234\036\365:\313\232x\223\276i<\301\277\255J\222\017Z\225e\000\020)7\321\2734\240\363N\315\000\363N\335I\232p\342\202i3F3HO\024\302j65\033\032\215\215F\306\243cQ\223Q\223L5\330\212C\326\212i\353Hz\322R\036\264\323M=i\246\222\212L\320\247\234\321\236i\t\250\330\324d\323\030\347\212i5\0335F\315Q3TL\325\031j\215\236\243/L/Q\231)\276e!z<\312<\312_6\227\315\245\022\323\226Oz\235&\307z\265\035\307\024\363?\241\247,\271\347\275L\262\032\263\013|\214\177\n7\032z\26585.ri\300\342\22794\341\307Z\\\320M \365\245&\230MFMF\306\230MF\306\242&\230j3L&\243c]\225:\220\212i\244\244\"\232i\017Ja\246\236\264\334\320\0174\215\305\000\341sM\0353\353HM0\232\215\215G\357McQ3TL\325\0235D\315P\263\324L\365\031\177z\215\237\336\243/M/Hd\246\371\224y\224\276g\275/\231K\346{\323\204\225*\311S$\206\246W\311\2531\232\235MN\222`l\251\003sO\006\235\234\323\301\245\316jE\030\353N\315!4\224\271\244&\230M0\232\214\232\214\232\215\2150\323\r0\324mQ\232\354\351GJZB)1M\"\220\212a\246\265Fz\323i\t\246\261\342\227\370@\240\323\rF\306\243\'4\322j&j\211\215D\315P\263T,\325\013\265D\315Q3\324e\251\205\251\245\251\205\2517Ro\367\244\337\357J\036\234\036\236\255R\243T\350\325a\033\232\265\033qVQ\266\215\304\360) b\316[\326\255)\251\001\247\203N\0075*\3603N\315\031\244\317\255.\3523M&\232M0\232\214\232a\250\3154\324f\230\325\033Tf\273JQ\322\226\212LRb\232E4\212cTf\230zSi\214y\305H=i\033\245D\306\242nM4\232\211\215D\306\242f\250Y\252\026j\201\332\241f\367\250\231\252\"\324\302i\205\251\245\251\205\251\273\251\013\032M\306\227u8\032\225ML\206\247J\235\rXF\307SR\202\362q\310Z\264\230U\300\251\225\252E8\247\203\232\221H\024\360\324\273\2517Q\272\215\324\271\244&\232M4\232a\246\032a\246\032a\246\032\214\323\rv\230\245\245\305)\031\244#\212JLsM\"\243aQ\260\250\330S\r1F^\245\2461\250\230\324,\334\324l\325\0235D\315P\263T,\325\0135@\315Q3TLsQ\223\212\215\2150\232\214\2654\2654\265&\3523J\030S\301\364\251\221X\373U\210\323\025eFjd\025b<\016\242\247V\025 l\364\251\224\342\236\032\234\036\236\036\234\036\203%(jP\324\240\323\263Fi\244\346\232M4\323\017Ji\246\236\264\302)\204Tf\230\325\332R\342\226\212(\307\024\334R0\250\310\250\330Tl*6\024\2120sJMF\306\241v\252\354\3315\0335B\315Q3T,\365\013=B\315P\263TL\325\031j\215\232\243f\250\313S\013SKSKQ\237zQ\311\344\323\327\006\246R\242\245W\0252\275L\217S\243\324\352\325 \177z\225X\001O\363)\302Ozx\222\236\036\227}8585<\032p4\354\321\221A4\334\346\220\323M4\323\010\246\232a\025\031\246\032\355h\240u\247b\220\2121\305%!\024\302*2*6\025\023\016\324\323\301\2461\250\230\324\0225@\306\241f\250Y\252\026z\205\236\241g\250Y\352\026\222\241i*&\222\230^\2432S\013\323K\322n\244\334)\014\200P$\356i\342^i\352\374\365\251\225\352ez\235\036\247Y*U\227\260\251\026@;\323\374\352z\311\357O\022T\202Jxzz\265H\032\236\rH\r8\032p4\271\244\'4\264\230\244\"\232E4\212i\025\033TdS\010\256\327\024b\226\212(\"\212i\034\323XTdTdTdsQ5D\306\241sU\230\344\223P\273Uvj\201\336\241g\250Y\352\006z\205\344\250\031\352\026z\211\244\250\332Ja\222\230d\246\031=\351\246`\007&\231\347\026\351J$\247\007\367\247\253T\252\306\246F\251\325\252E\222\245Y\017\255J\262b\236%\367\247\211=\352E\222\244W\367\251C\373\324\212\325*\265J\255R\251\247\203R\003N\006\224S\200\315(\024b\202)\244S\010\246\221Q\221Q\221L\"\273J)qKF)\010\243\034RS\010\2460\250\310\250\237\241\252\347\245D\306\253\310x\252\354p*\273\265Wv\250\035\252\006j\205\332\253\273\361U\331\371\250\031\363Q3\324,\374\323\013\324M\'\275Fd\250\236b;\324[\3119\251\021\373\342\234\030\023O\rR\251\346\245V\367\251Q\327<\324\202^\302\244W\251U\233\031\3058HI\300\247\356\"\236\262\034\324\253)\251\203\234S\326C\232\260\217\221S+T\352\325*\232\225jAO\002\236\005<\np\024\270\366\244\"\232V\232EFV\230V\230E0\212\354@\245\242\212(\2434\332C\326\2434\306\025ZS\203\212\205\215@\346\253\310{Uw<Ui\rUv\252\356\325\013\265B\315\305Vv\342\253;T\014\365\013=B_\232c=D\315P\264\225\03357w\275=X\221R)5*\324\200\323\203sOROJ\224d\016jh\330c$\324\206\\w\247$\242\247\022\206\340\212p\035\326\244_z\235\010\25103R\243U\2245:T\353S-J\242\244\002\244\002\236\005;\024\270\243\024\322\264\322\264\302\264\302\264\302\265\031Z\353\250\242\212)\017JJL\322\023L4\3065RC\227\250^\240sU\244<\325y\033\212\253!\252\256j\273\236j\027j\205\333\214Ui\032\252\273Uwj\201\232\242/\315F\315Q\263\032\211\216i\233\275h\034\236*d\030\034\323\307Z\221zT\310\204\365\247\355\013\316)\276q\007\002\244\014XS\267\221F\362MO\020&\255\"\234\325\264\217\212\223h\306\010\247,|\361RmaNN\265i*\314ua\005N\242\246QR(\251\000\247\201N\013N\305\033i\n\323J\323J\323\n\324l\265\031Z\352h\242\212L\322\023HM&i\244\323I\250\330\325G?1\250\234\325g5ZS\315V\220\325g\252\362Ug\250\034\325w5^F\252\316j\273\232\256\346\241cL&\243f\250\231\2513\232p\3009\251\224\202)\341j\302\021\266\247\217\024\367\\\257\025\\\307\206\311\247\006\n)7\344\324\2503V\341\034\326\2141\344t\253!@\247\005\315=W\006\246T\004`\323\014{Z\247\214qV\022\254\307V\020T\352\265*\255H\026\236\026\234\026\236\026\227m!ZiJiZaZ\214\245FV\272ZB))\r%4\322\023\212JBi\204\324.\330\025Y\217\314j&5^CUe\252\356*\006\250\034UwZ\254\342\253H*\254\202\253=V\220\325v5\023\032\214\232a\006\243\"\215\246\234\001\251PqS\'5 \03052\234T\341\306\332\202W\035\252\014\222i\352*\324\\\325\310\260\rhE \013R\006\313U\270\307\313\315)\340\324\261\221\234T\255\036W4\210\2705:\216j\314b\255\"\324\352\265*\255H\026\244\013O\013O\tK\266\220\245!JiJaJ\215\222\243)[\324SOZCHzSi\r!\246\032a5\004\207\212\257!\371\252\0265\003\232\201\372Uw\250\030T,*\027\025^E\342\252\310\265RAUd\025U\326\240u\250Yy\246\025\246\225\244\t\223R\210p:R\371B\227`\350*E\\S\366\342\235\217\226\243.@\246\362\306\234\027\024\341\326\256@\274U\214\034\361V\241V5r4\307Z\262\033\003\002\236\212X\325\250\3419\253\033>LS6f\245D\253\010\274\325\250\305XE\251\225j@\265\"\245H\022\234\026\227e\033i\245)\245)\205)\214\265\033%l\342\220\365\246\232i\351IM\244=i\206\232\324\306\252\362Ui{TMP\265B\365\003t\250XT\rQ5@\342\252\310\265ZE\252\262\'5]\2435\023\302qP<-\351L\021\036\342\221\2414\337,\251\247\200qJ\026\224/5*\2558\246i|\274\361I\344R\030\202\324m\201NE\311\253\260\251\025q#\006\256\304\200\n\234\017J\231\"-W!\213\030\310\253\212\203\024\241y\247\375\237\214\212z\305\212xL\032\261\032\325\244J\235R\244T\251U)\341)\333)vRl\244\331HR\230R\243d\250\312V\241\024\334SH\246\322\021M=i\247\2554\323\032\243j\201\352\274\203\"\240j\211\252\027\250Z\241j\205\205D\302\240\220a\261U\335r*\273!\317JF\200\025\346\242hT\014\001P\274\031\355PI\t\003\245Wd\301\246\355\366\2441\322l\245\tJ\023\232\221V\244\013N\000R7\025^F\250\261\226\2531 \253H@\253\021\266M\\\214\234U\250\206H\255\030Pb\254*\363\305N\252H\245\010sV\241\036\264\366L\014\342\232\027&\254F\225i\022\246T\251U*@\265 JpJ]\224\233)6R\024\246\024\250\331*2\225|\214\322\021\212a\024\3029\244\"\233M\"\232zTl*6\250\034d\032\205\207\312j\006\034T,*&\025\013\n\205\226\242e\250XUy*0\205\207JC\0368\305F\311M\362\263L1\214\324\022\240\305Rh\362i\2060)\204Rl\247\004\245\tO\tN\333@^i\031x\252\322G\3151S\232\263\032\032\262\2203U\310\255\310\251\266\355\253V\300\223Z\221.\000\253H\271\253\010\265(\2175*\307\212~\323\212EL\265YD\305YE\251\325*EZ\220-<-<%\033(\331HR\220\2450\245F\311Q\262U\254sMaM\"\232E4\212f9\246\221L\"\232EF\302\241aU\334u\025\013\016*&\025\013\n\215\226\242e\342\240qP\260\250|\262\355\212\231cU^\225^A\223Q\371t\2458\250$\\\032\255(\310\252\254\274\324.\r0!\245\331K\266\234\022\237\262\224&i\306>:T.\0105\023.i\026\"Z\256E\017\265]\215@\034\212\260\244c\212\031rj\325\252\340\326\244``U\244P*d\0315i\023\212\220\n\230E\2713B\305\216\265*\246MN\211\212\230-J\253R*T\241)\301(\333F\312M\224\322\264\322\224\306J\211\222\244\"\220\364\246\032B)\270\246\221\3154\212a\024\302*6\250Z\240q\315@\302\242aQ0\250\330T-P\260\250\231sBFG4\327\004\234\n\217\313\311\240\246\005F\302\253\310*\264\211U\3319\250\212Rm\244\331\355N\021\323\266S\3262{T\253\007\265<\3041U\244\207\236\225\030\207\236\2252@\007j\235c\003\265J\"8\251\021\016jm\207\035*X\201\006\257\304\330\025ad\346\256C\223\212\275\022\2265a`=qV#\213\003\004PS\234b\225W\0252\212\225\0275:\245H\026\244\013N\333\355K\262\223e\033)\245)\nTl\225\023%\004qL\"\230E\024\332a\024\204SO\025\021\250\332\241aP\270\250\\TL*&\025\023\n\205\205D\313H\221nz\225\243\003 Ur\234\322m\2468\250Yj\007J\201\326\240d\250\314t\337+\332\227\312\247\010\371\251\226\337=\252d\203\007\245I\345\200*6^i\276V{S\01484\345\213\332\245HI=*\342[dt\251\222\320\223\322\246\373\031\364\245[2;T\202\022;T\261Bw\016+N\010\016\005i[B3\315h\010\227oJ_+\322\221\255\311\\\212\211\243\301\351OU\251\321juZ\221R\244\t\3058!=i\333}\2516Rl\244)M+Le\250\231*\034qM\"\230E6\232i\264\323M&\230j6\025\023\n\205\207\025\013\n\211\205D\302\242aP\262\323\031i\321.)\354\244\324-\035FV\242q\212\204\324N*\022\231\250\332:\217e!JQ\021=\252X\340\346\256\307\010\003\245\014\200\032c\n\204\2474\365N)\032<\232\226(3\332\255$\000v\253\221D1\322\256G\010\035\252u\205Oj\224Z\202:R}\217\332\245\216\317\236\225r86\216\225:\r\247\212\262\233\215N\243\0254k\220j\t#\347\212ENjeJ\235R\245T\247\205\247\005\245\333F\312M\224\205i\205j2\264\306Z\251\212i\024\322)\204SH\246\032i\250\233\351M\243\025\033\200\rB\302\241e\250\231j&Z\211\226\242e\250\233\212\2265\371A\365\251vqQ\272UvNj\027J\213\313\250\236:\217\313\244h\275\252?+\236\224\341\007=*U\200b\245X\200\355R\005\300\246:\324L*=\2715:E\232\231m\362zT\361\301\216\325e-\363\332\254G\001\035\252q\031\307J\232(\3115z8\370\351S\010A=*\304v\343\322\234\360\340p)b\267,\335*\362Z\355^EF\351\206\305M\022\374\265\033\246\r5W\232\231\022\254*\324\241)\301)v\322\355\243m\005i\245i\205i\205j6Z\240E7\024\204S\010\246\021L\"\232V\230\313L\305!\025\033\016*&\025\033\n\214\255F\311\362\346\241e\250\235}\005B`bjq\031\030\247\201Mu\342\2532\363Q:\361P\225\346\220\307\232i\217\024\206:o\225\317Jx\213\002\224&)\341i\016*7\250H\311\245D\346\256E\037\265\\\216\034\366\251\322\016zU\310\240\343\245N \366\247\213\177j\2328\000\355V\226>*x\342\315[H\260:S\274\235\307\245Z\202\330\001\234T\262(\013\212\244\351\226\251\025p\224\205i\2339\251Q*\302\245J\027\212pZ]\264\273h\333HV\232V\232V\243+Q\225\254\322(\3054\212a\024\302)\204Sq\355H\313Q\020sI\216*2*&\025\031ZaJa\217vqP\262SDY8\250\335v\266*`\277&M3o4:\374\265]\223\232a\2174\323\0057\313\305F\353\212\210\212r\250\247\034b\231\212\017\025\021&\214f\234#\315J\220\363\322\255\305\017N*\354q{U\310\240\317j\273\035\277\035*u\203\332\244\020q\322\225a\301\251\322/j\2368\361VU8\251#\217\236\225qW\013QH\271\252\355\035.\314\n\002Q\345\324\212\230\251UjP\264\355\264\273iv\321\266\220\2554\2550\2550\255FV\262qF)\010\246\021L\"\243\"\223\006\220\216*\"9\244#\212a\034\324L\275j2)\244S\031j2\264\335\274\323\014E\244\251\031p\270\246\005\346\224\257\025\003\245F\027\236\224\255\214T\014y\250^\242\3074\034\201H\001cR\210\270\246:\324$`\323\220d\325\250\342\317j\265\034\036\325i!\307j\263\034^\325z\010}\253B8\206:T\342/jp\217\332\236\"\030\351OX\371\251\204u\"%XH\275\252P\274SYj=\224\323\035\036].\316)\3018\251\025x\251\002\323\266\322\355\245\333K\266\232V\232V\232V\243e\250\331k\037\024\204SH\246\221M\"\230V\230E!\025\033\016i1L+Le\250\212\323H\244+L\333M+\315*\'\314N)\254\23757g4\2458\250Y9\250\33103Ud$\032\211\272T\014y\244\035iH\251#\0035+\260\013U]\362j2\244\232\236\030\211=+B(\270\351W#AV\022<\232\271\014#\214\212\275\024C\216*\342GV\222!\216\225\034\253\266\232\204\032\231W\232\235W\212\2268\376j\266\261\374\264\214\224\322\224\233)\241)\002sN\021\363\212_.\225W\025*\250\305.\332v\332]\264m\244+M+L+Q\262\324l\265\211\216i1I\212n)\010\246\025\250\310\244\3054\2554\2554\212\214\255FV\220\245!Jn\312n\316jA\036\027\2450\307I\345\320c\343\245W\2210j\007\373\265RE\346\253\270\250\212\346\223n)v\223NDjq\211\332\220[7qR-\267\265Y\216\034v\253q\307S\204\"\247\204sZ\021\216*\324Ur1V\025\260*)\262\325\002\202\032\256\3042\005YD\253\021\2475eG\0242\212\214\255\005i\212\275iU2jU\213&\245\020g\2651\241\332i\241i\301{\032xZ]\224m\244+M+L+Q\262\324L\265\204G4\204Rb\220\212i\024\322\264\302\264\322\264\205i\245i\205i\205i\2739\243g4\206:iJn\316je\217*8\246\264~\324\303\035&\312\215\341\310\315Q\2322\265M\305@\353\315F\313\201Qc-V\0220EN\221\214\325\225\211q\322\203\032\216\324\004\036\224\355\270\251b<\325\325\2140\247\254EM[\210g\025z$\253\013\201R\001O\330\010\250\2360\017\025$\\\032\270\207\212\235\030f\254\003\305\031\311\245\013\232d\230\007\003\255\"\247\024\364R\rYD\350juN8\244x\301\031\252\357\036\326\351H\027\'\024\340\0108\306i\341r3K\266\220\2550\255F\313Q\262\324L\265\201\267\2326\322\025\246\342\223m!ZiZiOJiJiZiZ\214\255\033)Dt\246>)\236_4\357\'\'\245J\"\343\030\246\264U\033G\201Ql\313S\231\000J\315\271\003&\263\344Z\254\303\232M\231\024\337(\206\351R\250\300\251QI5aT\342\227a4\340\270\245\333\232T\\5i[\256@\253~W\035*H\342 \364\253j0)\3435*\323\306iJ\023@\\\032\231I\305L\204\346\255\253|\264`\223R*\220\264\320\231l\232\225S\212~\312\231\007\0252\212~\316*9#\310\250<\262\r9W\007\353Rl\347\353K\262\232V\243+Q\225\250\331j&Z\347\361I\212B)1F\332n\332\n\323J\323J\323J\323\n\322l\245\tN\021\322\371t\323\025L\221a9\035i\302:kDOj\211\341\366\246yX\250g\000-d\3162\306\251\310\265\001\217&\234\261\322\262qQ\343\006\246L\n\260\244S\270\246\023\223OPML\221\222G\025\245m\021\002\257\254|T\252\200T\201i\301y\251R<\325\210\341\317j{F\024Tb<\232\225!>\225am\217\245L\260\221\332\245Xy\351S,9RMDS\006\236\242\244\331OE\251\321j]\237-4\245G\345rx\246\224\305I\260l\006\202\224\306Z\214\255F\313Q2\324,\265\317\201\232B\264\205i1F(\333HE&\332iZaZM\224l\247\010\371\247\004\247yt\253\026Z\246\020\322\3714\276P\250\244@*\234\244\016\225Br[5FH\3175Y\342>\224\317+\332\232W\006\220\256EG\263\232\221b5\"\304jC\031\3059!$\363V\222\337\212\261\034 \032\273\032\200*\302\324\203\232\225W5*\307\315Y\216>*\302\256\005#\246i\360\301\232\264\260\200zU\270\241\005zS\314 \036\224\205\000\246\223\306\321L\330M8&)\340S\224T\361\212\230\201\214SvR\204\310\243\312\366\2451b/\306\230V\230V\243e\250\231j\026Z\211\205s\252\275iv\323J\323\033\212i4d\322a\275)\t\"\2200&\234\0274\276]8%8G\3058GN\021\324\251\027\031\305L\261q\322\231 \333U\332J\255#\223U]KT\r\0175\023C\355U\236\036zTf/Z\257,X5\032\246E\036Q\317J\221W\035EL\212\t\351S\210\301\024\005\njtaS\'&\247U52\n\235\0275j4\342\246U\251\320T\200T\201s\332\247\215j\312\246j\334I\307JVZ\215\227\212\257\267.H\251\024qK\266\225V\237\264\324\211\305H94\375\274S\221j@\234S\214\177.*\273\246\030\212\214\255F\313P\262\324L*\026Z\347\302\361AZ\215\2054D\315\332\245Kbz\212\220[\250\2450\247LTF\321I\3105Zks\033dR\'\241\253\010\234T\236^{R\210\215<GN\021sS\254T\362\201ES\230d\325VJ\257(\010\t\252\236o4\241\201\353C(\"\253\274c4\303\026{T\023A\362\236*\252\246\033\025a`\005zP`\364\024,$\036\225(R\005!Bi\311\031\315Z\2123\351V\2250*U^j\314kV\221x\251\225*u\216\245\021\324\211\035XH\252\302G\315[\2158\241\327\232\211\327\212\256\024\006\247m\346\227\024\345\024\360\264\273jH\327-S\025\002\225EM\032\2268\251\0310*\t\020\036{\325vZ\211\226\241e\250\231j\026\025\317Q\214\322\254\034\345\252p\021F\000\245\332\314x\034R\025\n\271&\243$Sr\000\353H@\220`\324F\327\234\212t@\347\004r*\312\245H\251K\345\343\245\"\237\336\343\035*\322/\025\034\302\251\272\022j\tp\242\263\346\313f\251\224 \321\234R\027\"\241y\r\021\315\316*\313F$L\372\325Co\206\351R\004 R\252\344\324\342\000GJcC\216\324,\\\364\251\343\204zU\225\210\001N\331\315J\221f\254\307\025[H\270\251\0250j\312&EL\022\235\214T\321\325\204\034\325\310\300\333L\221y\250\231~^j\271O\232\235\266\227m9E<\nq\034S\342\031\351O\307<\323\200\251cm\255R\261\315F\302\253\272\374\330\250XT,\265\013\n\205\205s\313\037\343S\307\037\255H\261g\236\324\335\2007L\322\273\235\270\252\356\334sP\263\034\322\000Z\246\217\n*P\271\346\232B\357\351\310\251\220df\244\000S\261\305G\n\346s\305]U\371j\031W5ZE\n\244\326l\331,j\273&j\t\022\253\262Tl\274T.\231\250\260T\325\225\224\225\305:3\275\360j\317\223\225\246\010\366\265\\\211AZy\200\036\324\013oj\220A\216\325 \212\225a\251\322<U\210\323\236\225m#\371i\010\301\251\342 \212\233\214Sr7U\250\224\021R}\323S\305\'\025)\301\246>1P\0203@Z\\R\355\366\245\031\247{T\361&\324\244?z\226\214\343\232\23662\014c\245\014y\250\235rs\212\205\327\232\205\226\241qP0\254D\217\332\246\330\000\245\347mFN:T26j\273\234\232\217\034\324\212\006i\314q\315<I\362\214S\224f\247E\251\202\322\225\371j;~%\"\256\250\342\241\230\020\t\254\351\\\223U\235sP\262\324.\225\003%D\351P\262Te3@LS\327\206\315hBw-\022\2469\3056\027;\260kR\024\014\271\251\274\260\005\036Vz\np\200\372S\304\007\322\245X*UUS\315L$P\265ZY\006x\245\212S\232\263\346\344S7\374\325n)HZ\223~O5b>\231\2517\340Rn;j>\364\365\034S\200\346\234\026\224(\247\205\251\024\361Mj^\324\224\344fS\305XD\3343\353H\361\372T/\037\025ZE\252\356*\026\025\226\020\n\033\000Tl\334\323\010\030\252\362\036qP56\236\240\322\271\302\323P\374\265j!\221VPT\230\312\323\271\306;RE\030\363\267U\203\362\256j\031\016\344>\265FH\216s\212\210\3061Q<u\013\245B\310*\007J\256\313\3157e\033(\331V-\316\033\025y\243\336\225_\311*\371\305[\206]\243\0258\233&\254\302\340\365\253>d`Q\346\307CN\270\342\253<\304\236)\201\234\236\264\361\0337Z\231\"\305N\0234\361\016MN\252\000\305<\001\236\265*6:T\301\262)\254\307\245\000T\213\322\234)\340S\361K\212\\Q\212A\311\305(\251\000\253\020\237\227\024\366\002\240q\201T\344\034\232\256\342\240qYg\326\243cP\261\250\331\316:\324\005\263Q\223\223OU\024\360\274S$\031\024@\001\340\325\304]\274\032\235*A\332\226\234\230\r\223Ng\312\221Q\036\225\023\255B\351P\262\324\016\206\241e\346\243e\250\032>j2\224\233h\333NQ\264\361W\240\223\200\rX\362\325\2057\311\247,52\251\003\212\033\177\255 \017\357O\010\306\236\261z\323\200Pi\301\261N\023\021R\307?8\"\247-\221\225\245\334M=sS\2408\251E?niB\323\200\251\024S\302\323\200\247\001K\217j6\322\025\346\225E=\006\346\305I\215\217\305H\033\"\242\223\221T\344\250\036\240z\310v\250]\207\255@\357P\226\3150\323@\346\245^\006i\301\201\246\311\323\002\240G)6\ri!\014\231\315H\254i\341\263N\3158\036)\001\000\340\367\251\004G\251\246I\036:Uv\025\023-B\313P\262\373T,*6Z\214\2557m&\332]\264\36485a%5/\232@\353J\'\247\211\351\353.i\342Oj\220?\035(\363N*=\304\232]\324\240\346\245QR\2432\237j\262\244\036\2252\n\260\202\245U\251\000\245\002\234\026\236\242\236\005<\nxZ6\321M\"\227\034P\207k\323\231\262\331\240H\0055\334Ui\030Uv\250\230V\023\2775\0035@\3074\322qM\243\275H:R\343\034\323O&\253\316\010\031\025%\265\321\306\322j\354r\203S\206\356i\300\203O\024\216\017\336\035E>+\257\340\224s\353R;\'\250\252\304d\323\035y\250Yj\026Z\205\226\242+L+L#\024\230\315\033h\003\232x\315<\014\365\247\005\346\234\026\244Q\212\225A\305H\277v\224\016(\333\315;fi\301*EZ\225W\"\244U \361Vc\351VR\247Q\305H\0058-<-<%8%=V\236\026\235\260R\024\024\322\224\230\342\233\201\236ha\305D\331\025\021j\215\216j6\250\315s,\365\0335GHM%&i\301\251\341\205!<\324\023\034\203U\341\037\275\255$\371qVQ\263R\017j\220\034S\263Q\355\033\263O\330\016\017B)\301N3Mt\004\006\025\023%B\311\355P:\373TL\276\325\031Z\215\226\233\266\214Q\212x\024\365\024\360\rH\250i\341)\341jE\025(A\212B\230\024\241i\341i\341jU\025\"\255J\203\025a*\302T\252*P)\340T\201i\301)\330\305L\";s\212B\234\321\267\212a\024\322\264\302\264\326\025\023T.8\250\215F\324\303\\\2514\302i\224\204\323K\201L2R\253\322\357\245\017\223L\220\361P!\333%]Y\tQVb~*un)\340\361N\rN\034\323\207Jz\212v\334\323\031=\252\026OJ\201\320\372T,\225\013-FV\233\266\223m\030\247\001O\002\236\243\232\260\200T\233(\333\216\364\345\025\"\212x\\\366\243e8-H\026\236\242\245U\251Ujd\025:\212\225\005N\242\244QR\252\324\252\224\2730\300\342\237\271\215!\004v\243\024\3229\340S\n\323J\323\031j\026Z\201\305BEF\325\033W$M4\232Bp*\007\224\016\225\t\2234\322\364\202LS\274\321\353J\262\363\326\234_\"\243|\343\212[I7K\261\217\322\265Tm\025\"\277cR\203OZ\220S\326\244\024\361H\325Ji\325\033\024\315\340\214\220y\244*\032\242t\364\025\tC\232aCM\332iBR\342\200)\353R\253\021R\253f\236)\352*eZ\220-8-(A\332\234\006:\323\302\324\252*@*D\353S(\251\220sV\020T\312\265*\245L\253\212p_\233\245+(+\221MbJ\340\323qHE&)\244Tl\265\023-Wu\250\030T,*3\\\205!\300\025^G\347\002\252\2719\353Q4\235\251\206CI\276\220\261\354i\310\374\363S\253\347\212\224`\255@\312VM\313V\241\273l\205sZ1\374\303\"\246^\005H\255\332\246\025\"\363R->\232\325\223{\362\236\007z\226\333\230\206j\177,\036\224\306\214\342\241h\315Fc\246\224\036\224\233)\n\321\266\227\024\341\305H\265*\232\225qS%J1J:\323\200\247S\200\364\251\026\245Z\221EL\242\246J\235\005Z\215j\302\'\025&\332\224\304\004Y\250\266\361Q\221M\243\006\212i\024\322*&Z\256\353U\335j\006Z\205\2075\310\036\265\034\215\205\252N\374\223U\235\262j#\326\232M3u\033\251\340\324\250\376\265b3\236\364\375\271\355L(T\346\246\216\351\343\030\006\264l\356\322S\206\340\326\232$L3\300\240\371j\247\221\305\n\300\3645(aK\277\212\202i\302\016\274\326l\322\033\211B\257AW!]\250\005N\016)H\343\232c-DS\332\230S\332\230V\220\255&\3326\320\0058\nx\251\024\324\252\3252\265<\032x4\341O\035*A\315<T\313S%N\202\247J\263\031\2531\232\235F\356\22418\301\355Q\236\225\031\353IE&3O\362\211Bj\022*6\250\034T\016*\273\255Wq\\i5Vw\343\025E\337&\242&\230MFZ\230M jpj\225MX\211\271\253\310AZk\340\232a\217540\225;\201\253\3134\201p)\256e+\303\032dW3\3020y\025:jK\234?\025$\232\244\013\031!\3015\234\3273]I\204\004\002z\326\205\265\276\305\347\223V\300\300\245\351\332\224\026\244,\331\351I\237QF\001\351M)\355I\345\322yt\236U/\227I\263\024\270\366\245\000\323\306E8\032\225Z\244^\2652\212\225EH\027\322\236\026\244U\346\245Z\235ML\246\254!\253\010\325:\271\035\r\005\263Q\263S\013sKHi\321\215\315\212\270A\362\260\007j\242\343\004\324L*\027\025]\305@\365]\305p\362\260U&\263\246|\265VcL&\230Ni\206\230i)GZ\225*\304mVR^1\232p\223&\245C\223V\025\206*x\306\357\245M\201\322\232\321\n\255-\250s\322\243\217OR\3315\247\005\262 \030\025gn\321K\364\244\003\232u.)B\217Jp\214g\245;\313\036\224\206!\212o\226\007jM\224\233)\nq\322\232R\223n(\002\234\026\244U\251\320T\310\2652\257\245L\253R\004\315;\313 S\325j@\010\251\026\246F\251\321\352P\324\355\331\2444\303J\0175 \031\024\203(\371\025?\3322\274\365\252\316rMFzTn*\273\212\256\342\253\270\257=\236N*\203\266MDMFM%4\365\246\032LS\200\247\202\005H\215\315J\032\234\244\203VcoZ\260\204n\007\265[\216A\214\n\235XS\211\024\001\232\221\023\275XP\000\342\226\227\031\024\241iqK\266\234\024\323\200\247\201F>\270\244#\330\322m\246\224\245\331Hc\3154\306})6\036\342\224\'\265=R\246E\251\224T\352=\252dZ\235S\326\236\253\371PS\272\322+s\203\326\245\013\334S\205H\246\244V\247\006\346\234\016h4\200\366\251Q\205<\340\366\250\310\346\233M#\212\215\252\027\031\035*\273\n\256\342\274\276Y2j\273\032\214\232a4\224\032i\351H1HM\033\252E5*\265N\246\246Z\235\rXCS\251\251\223\232\235@\333R)\340\np\315<S\300\245\305<\nP\264\360\264\340)\300R\342\224\n6\212k(\354(\010\t\245(\000\244+\3521M+\3528\240 \247\210\352EJ\225\022\247U\365\251\224zT\2038\247n\240\036x\244 \037\255*1\007\006\247\030#\212p\007\245<\nv)Fi\343\221K\030\033\276j1\206\342\237\223\212i4\332CQ\265D\334T\016*\007Z\362Vj\205\232\230M74f\220\232ijn\3523\232\005<\032\221O5b3VR\246\003\270\251Q\210\343\025e2@5a8\02504\365\251E<\nx\024\360)\340S\200\247\001K\212p\024\354RQ\2322)\264\2718\244\335FE\003\320T\2528\251W\334T\243\247Jx\307z~\3527\036\324\241\263N\335J\030w\247\202\017\006\236\244\257CS\243+q\320\324\252)\373i\312\027?0\245\003i8\245\003\212B)3M4\332Bi\246\2435\023\n\205\205x\3435DM4\232n\357zB\324\322\324\205\251\273\275\351A\247\212x\251\026\254F*\302\n\262\225:\255N\240\324\313S\240\251Ui\340T\212*E\031\247\201N\013N\000\212p\247R\340b\222\220\232JL\322n\243\266i3FiA\251\025\210\251RQ\322\245\017\31587\024\241\215;u;4\273\251wS\203\324\210\376\2652\225\"\247W\350\017\347S\251\342\2361\216)@\245\351Hy\025\031\004u\246\344\322u\246\236\264\204Tf\232EF\350\010\257\023cL&\230M4\232i4\334\322QO\002\236\265*\212\225V\254 \251\343Z\262\202\254 \251\320T\312*e\025*\203R(\315H\005=EH\0058\016iizR\320M4\232L\212B\324\205\2513\305\'\030\243\240\240\222\007J\003S\324\346\227$\232\225I\007\223R\006\367\247\006\251\024\323\263Fis\315(4\241\210\251RLT\353/\275L\262\343\277\025:\313\3375*\2704\244\212B\337\225#\020E0\364\244\355Hy\353\371\323H\244\333\336\232G\2751\200\257\014&\232M0\323M4\232i\245\035)\300S\300\251\025jU\025:\n\235\026\254\306\265a\005N\242\246QS \251\224T\252*@*@)\340T\200S\200\243\002\220\323KRn\246\226\244-M\335I\272\215\324\271\245\245\014G\322\221\207p\r9\001\306i\343\030\247\251\035)\343\2558T\212i\331\245\245\031\245\245\006\22784\340\325*\311\305N\222\361\305J$\343 \324\202\\\216iw\322o\243}\031\3474\245\251\245\251\273\361\327\245#\021\216)\205\205xQ4\204\323I\246\023IE8\nx\025\"\212\221V\246E\251\321*\302-XE\251\321jeZ\231V\246QS(\251TT\252*@)\340\014sK\322\234\r\006\230O4\303M\'\232ni\271\2434\231\244\315\0314\241\215<\023\330\323\376ls\315*\000s\221N\343\024\003O\r\315H\rH)\340S\205-\024QJ3N\335NW\"\245Y8\251\004\224\341\'\024\276`\243}/\231K\276\223u4\2654\266)\205\353\303\363IM\246\2321N\002\234\005H\005H\005J\242\246E\253(*t\0252\212\235\005N\202\246QS(\251\225jE\025\"\212\220S\262h\311\244&\232X\322\026\004sM\'\212ni\244\322Q\232i4\231\2434\240\324\212i\373\200\357G9\342\224\003O\035)\364\340j@j@i\300\322\346\2274\352(\244\"\200{S\201\"\224?4\341%;}\'\231\357N\022{\323\267\322y\224\273\363HMF\306\274K4\224\204\322\016\264\352\007Z\221EJ\242\244QR\252\325\204Z\260\213S\242\324\312\2652\255N\202\246QS(\251TT\212*AK\2323Fi3IHqM\"\232A\246\346\220\221A`\005!#\256i(\305(\343\2558\023\332\234:\324\253N\245\024\361\322\235\236)\300\361O\006\236\032\224\032p\351O\035)@\245\333A\025\037z_j1A4\231\305\033\250\017\357N\337H^\220I\315H$\310\244-_\377\331"
-byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\001\355IDATx^\355\334\355\n\2020\024\000P\261\367\177\344$\022\214\270\344Wl\272\217s~\004m\2452k\314\273\355\016C\211\306X\000\000\000\000\000\000\000\000\000\000\000\000-\231b\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000p\3343\026\000\000\000\000\260\255\326L\210\343\373%\303\305g8$\000\000\000\000\000\000\000\000\000\000\000\000\260\2307\006\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\371I\376\005\000\000\000\000\000\000\000|XH\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\007\244\331\000\000h_\301c\276\261\340k\243FS,\000\000\000\000\232\'\036\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\300\255$\316\007\000\000\000\000h\337\030\013\000\000\000\000\000\000\000\000\262\260c\r\000\000\000\000\000\000\000\000\000Hi5\203\322j\005\000\000\000\000\000\000\000\220\234\344B\000\000\000\000\000\000\000\000\211H\230\000\000\000\000\000\000\000\360mm\026u\331\346\276V_\n\333\361S\323\242\000\000\000l\330}l\334\375\000\000\000\000@\023J_Oq=q!\000\000\000\000\000\000\200\266\230\007\006\000\000\000\000\000\000\200\036X!\000\000\000\000\235\210A\000\t\365f\232\241w\361\217\001\000\000\000\000\000\000p3\023\331i\324\336\216\217X\000\000\000\000t\307rw\200\376\350\373\001\0008\240\366%\021\000\000\300\037<\010\000\000\000\000$#\324\002\000\000\000\000P\026q[\000\000\310\340\352\\FW\237\217cN\337\227\323_\000j!\000C&;?\255\235j\000\000~2\212\002\000\240\036&\227\000\212\223\271k\316|x\000\240\026qP\020\337\003\220\234\256\026\000\000\000\240[\266\030\364\313\275\007\000\000\000\000\000\000\000\000\000\000\212\363\002\273\027\037\377]\026V#\000\000\000\000IEND\256B`\202"
+byte_jpeg: "\377\330\377\340\000\020JFIF\000\001\002\000\000\001\000\001\000\000\377\333\000C\000\003\002\002\003\002\002\003\003\003\003\004\004\003\004\005\010\005\005\005\005\005\n\007\010\006\010\014\013\r\014\014\013\014\013\r\017\023\020\r\016\022\016\013\014\021\027\021\022\024\024\025\026\025\r\020\030\031\027\025\031\023\025\025\025\377\300\000\013\010\002\000\002\000\001\001\021\000\377\304\000\037\000\000\001\005\001\001\001\001\001\001\000\000\000\000\000\000\000\000\001\002\003\004\005\006\007\010\t\n\013\377\304\000\265\020\000\002\001\003\003\002\004\003\005\005\004\004\000\000\001}\001\002\003\000\004\021\005\022!1A\006\023Qa\007\"q\0242\201\221\241\010#B\261\301\025R\321\360$3br\202\t\n\026\027\030\031\032%&\'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\203\204\205\206\207\210\211\212\222\223\224\225\226\227\230\231\232\242\243\244\245\246\247\250\251\252\262\263\264\265\266\267\270\271\272\302\303\304\305\306\307\310\311\312\322\323\324\325\326\327\330\331\332\341\342\343\344\345\346\347\350\351\352\361\362\363\364\365\366\367\370\371\372\377\332\000\010\001\001\000\000?\000\214\234\032PiI\244\242\212]\324\340irh\rR+T\252\370\247\357\245\337N\017F\372]\370\244\3632jA(U>\265\021\227\232kKL\363}\350\363iD\264\341-H&\305H\263\373\324\253p}jArGz\177\3338\353@\274>\264\361u\357O\0275\"\334\373\323\205\317\275<\\{\320n)>\322j\304\027\033\272\232\264_+Lf\302\220k\027RCn\341\207CU\322rGZq\2234\306\222\2432\232g\231\223A\223\336\21734\206JC%4\312iU\362j\355\270\3322z\324\205\316i\245\351\014\230\025\004\227A{\324\rz1\326\240{\341\353P=\356\017Zcj\000\n\206MI@\353T\344\324\213\036:U\332)wR\023Fh\315(4\340i(\316\r=Z\244W\247o\245\017N\rN\017HZ\200qHd\2464\224\303%7\314\244\337J$\245\363iD\324\3616)~\320i\302\346\224\\g\2758\\g\275L\222\223S+\232x\220\212Q)\247\211\215/\233\357@\226\246\212\343i\353W\022\347#\255)\237\003\223T\365)\026hq\351Yhx\342\235\346qLi3Q\231*=\374\322\231(\3631Hd\244\363)\013\324\266\374\232\321\214\3601J\344\016\246\253\311:\257z\243s\177\331MR{\222{\324M1\365\250\332S\353P<\334\324/7\035j\264\222\346\253<\333{\327LzP:Rn\243u\033\250\3174\273\250\rK\223FiCS\203S\203\322\206\247\007\247\007\305\033\371\245y\376]\265\021\222\243i)\245\363I\276\232^\223\314\243\314\243\315\305\036u\036u\002ozx\237\336\236\263sW\240\230`f\254\t\206)\014\324y\330\245\022\322\371\264y\264\t\271\251\322\344\203\326\245i\367/\275R\236\354\200A\252\361\313\236i\346N*\007\223\006\230d\246\371\234\321\346R\357\342\230^\236\256(i2x\2536\347\0035k\317\013\365\252\2277\273{\363Y\322\335\227<\232\256\322\222i\205\251\245\2527z\257#\324-%A#\325i\0335\330R\023\332\233E!8\244\334h\335F\352]\324dS\203R\206\245\006\227q\245\337NW\2452`\346\243g\250\332Ja\222\223}4\311M/M2SL\224\206ZC-\'\235\212O?\236\265,nZ\244\022\355=jh\356\361\336\247[\300{\323\276\320\017zp\237\236\265*\3161\326\237\346\212<\317zO3\006\236\262\324\276~\0279\252\223\2711\261\250\340o\224S\336N\325\004\222S<\312B\3704\007\245\337M/@z\004\234\325\224\271\300\250\345\273<\340\325G\220\261\353L4\302i\245\2526z\211\336\253\310\365\0035B\357P\273Wg\272\233I\232BsII\272\215\324\204\321\223K\272\2245.\354\320\032\227u.\3727\322\027\246\263\324M%F^\223\314\3054\311M2SL\264\303%\'\231\232i\222\230\322\323|\341\353R\307w\264u\247\233\254\322}\247\336\225n\260z\324\213xA\353S%\336OZ\260\227\007\326\247\023\323\304\331\357K\346S\326Jt\262\341)\221\276\365a\355Q\206\3321Mi*\'\222\2432Ry\224\241\351w\363@bN)\3314\2314\214\307\035j2\331\344\322\026\246\226\246\226\250\331\252\'z\205\336\240\221\252\006z\205\336\242f\256\332\212i\034\322Q\232m\024\323I\2323F\357zUjR\331\245\317\275(8\372Swd\320\315Q3\324L\364\303&)\236fM#IQ\264\224\303%0\313I\346\361Li\2526\232\2433Q\347\373\322\375\242\234.)\302\177zQ?\275J\227\030=j\344W9\025a&\317z\224MR,\324\361=\023\\|\203\232X\'\001\251\322\266~aP4\225\033=3v{\322\356\2406)\353\223R \003\255=\230\001P\274\236\224\302\336\264\322\324\233\251\271\246\263TL\325\013\275B\315P\310\325\0035B\306\243f\256\352\212i\244\246\322\023\2123M&\233\272\202sM\335J\032\227&\215\306\224\271\30547zFz\205\336\242-Q<\230\240\034\nc=D\322Tm%Fe\2464\270\357Q\264\325\031\232\230f\246\371\336\364y\336\364\t\351\342zp\237\024\365\237\336\254\301s\216\365u.}\352d\270\007\275K\366\221\214\n\004\374\322I>H\024\370\345\251\342\234\262\220{S\036Nx\250\313f\220\032p4\340\325 \220\001\201M\363\010\243\314\315&i7SKR\003\232F8\250\231\252\'j\205\332\241f\250]\252\027j\211\215F\306\273\332)\010\246\232i\242\232\324\326\250\315\033\261M\335\315.\341F\356h-C\032\t\300\250\331\252\026j\215\233\002\242\316Ni\031\352\'z\205\244\250\232Z\211\245\367\250\332J\215\245\250\232Za\226\230f\367\2443P&\247\t\351\342ozQ=8\\\220j\304W\304w\253\221]\206\350j\312O\236\364\3617\275\006_\233\255M\034\276\365<s\205\310\365\246\371\2314\273\363J\030\346\235\272\22474\273\250\316i\303\326\224\234\323I\244\344\320N\005F\315Q3T.\325\023\032\211\232\241sP\261\250\330\324Lk\320@\315\007\255%4\214\032i\353IMji\024\306\246\2656\212i<\322\251\311\240\234\232k5F\315Q1\315E#v\246\023\201\212\215\336\241g\250]\352\006z\205\244\250\332\\T--F\322\324M-0\313M2\321\347c\275(\237\336\234\'\243\317\367\245\023\373\323\326z\263\025\311\007\255]\206\363\324\324\306\357\003 \323\222\343y\316jt\233\336\256[I\2703\036\302\215\374\324\210\371\247\207\247n\311\245V\305.sO^\234\323\263HZ\220s\364\245\'\322\230\315Q3TL\325\023\032\211\332\241cQ1\250\230\324lj&5\350T\354R\021\212i\031\246\322\021\212cR\036\225\031\024\3064\334\342\223<\3227\024!\3004\320s\223McQ\261\250\231\261Q\023\316i\214\325\013\265B\355\212\256\357P\273\324\017%@\362\324-%D\362\324FZa\226\232e\246\231\250\363\251D\324\276q\365\245\023T\2135L\223f\254G1\025a$\315Z\205\252\3325Z\206]\203o\2575(|\324\212qO\r\232z\234S\267f\244A\353O\315!jN\264\354\342\232Z\243f\250\331\252&5\023\032\211\315D\324\306\353Q5B\306\242j\364JU4\270\244#\024\3223HF)\204SH\301\2460\305Dz\324f\220\232k\036)G\335\307\255\007\201\212\215\215D\355P\263f\230\306\241w\250]\252\007z\256\357U\335\352\t$\252\357%B\362T,\365\031zazcIM\363)<\312O6\224KN\022\324\211%O\033\325\230\336\255F\365v\007\253\26169=\005$\022\031%f\317\025uMJ\0335*\232p9\342\246\214c\232\2234\026\246\347\326\227u\033\251\245\251\204\324lj&5\033\032\211\216i\215Q5F\325\013w\250\232\275\026\225i\324R\021M\"\232E0\212\215\205B\302\243<f\233Q\271\355R(\357C\360*\0278\250\034\347\212\214\234TN\330\250\035\252\t\036\253\310\365^G\252\362IU\244z\201\236\241g\250\331\252&\177Jazc=3}4\275\001\351CS\225\252dj\261\033U\230\216j\324f\255\306\370\306O\0258\221\345\033W\205\356j\344\n#P\005YV\251\220\323\303f\246V\002\244\022R\357\2442Q\276\215\324\273\251\t\246\223Q\261\250\330\324d\324li\215\326\243c\305D\375\3526\025\023W\243m\245\245\003\024\244f\220\216))\244sLe\250\230TN\265\013\na\342\243\333\271\305M\214S\034\324\016j\273\276*&z\201\336\241w\252\356\365]\332\253\273\325gz\256\355P\273f\242c\212\211\332\242f\250\331\3522\364\322\324\233\3517R\206\031\251\025\252x\3037AV\342\217\034\232\267\030\342\254\306\265j ;\212\266\214\000\251U\352t8\251C\323\326J\220IO\022Q\346\373\322\207\245\017N\rN\335\357F}\351\244\346\230M0\232\215\272SZ\243n\265\033\n\215\205F\302\243a\326\275\026\224\014R\321E\030\246\342\232\302\243aP\270\250XTL1MA\203\232{5B\355U\344j\250\355\223Q;\324\016\365\003\311U\336J\202I*\264\217U\335\352\007z\211\236\241g\250\231\352&\222\242/M-M-I\223J9\357R*\203V#\n*tp*\304r\n\261\034\225f9*\312IS,\225<n\005I\347\001\336\234&\315H&\251\026Zw\233NW\247\207\315=Z\244\rN\335K\232B\324\302i\r0\363L\"\230E1\205F\302\242aQ\265z5\024\243\255.(#4m\244\3051\2051\205B\313Q2\324.\264\3220~\225\0335@\355U\246~*\253\266*\007z\256\362Uy$\252\357%Wy*\274\222Uy%\250\036Z\201\346\250ZZ\214\313Q\264\264\303%4\311I\274R\031\200\240MO[\216jU\233\236\265:KV#\222\254\307%Y\216Z\260\263\342\245I\261\324\324\242\347\322\236\263{\324\2135J\262\324\202Z\221d\251U\352Uj\221Z\244\rN\rN\335HNh\305&)\010\246\025\246\221Q\260\250\330TL*&\025\350\373h\333KE\024\021E4\216j6\025\033-B\302\242e\346\240s\326\241sU\344j\247#e\217\265W\221\352\253\275V\222LUg\222\253\274\225]\345\252\322KU^_z\201\345\315@\362\324M5F\322\324fj\214\315M7 w\250\315\326\343\305 \232\236\262g\275H\257\212\235$\346\254F\365a\036\247Ijt\23352\315\212\220O\357R,\325*MS$\2652\313R\243\324\350\365:=L\255R\253T\212i\340\323\201\3158\014\323\200\243m!Zk\naZ\215\205D\302\242e\250\331k\321h\245\333K\214Q\212\010\315\030\342\233\326\243aQ\260\250\230T2\034f\2521\342\240s\305V\225\260\rSv\353Uez\251#\325Y\036\253\273\325i\036\252\311&\005T\222Nj\264\222\346\240y*\273I\315F\322T/-B\323TR\\m\025X\314X\346\245\216N\234qRy\200\232z\311\216\36527=jt\177z\2369\006z\324\302\340/J\221&\367\253\t!\306E;\3179\300\251\004\204T\2119&\247[\212\235%\3435\"\316sV\343\223\"\254#\325\204z\260\215S\241\251W\265H\265\"\255<-<-.\332\n\323\n\323\031j6Z\211\226\243e\250\231k\320\200\315(\245\242\212)\t\3056\232\302\243aQ\260\252\227\007\031\025U\317\025^C\305S\230\361\212\253)\300\252r\265R\225\352\254\257U\244j\256\357\305U\225\270\252R\275Vy1\232\254\362\324\r%D\362\324/%W\222j\211\2335\036\357zz9\351S!52sS\251\3058IR+\223\322\246B@\311\2530\260<\223R\233\214\016\264\370\347\035j\302\316\030`\324\201zm\251\023\336\255D\302\245\3075<O\322\255\306j\324f\254\245XJ\235\005J\242\246U\247\205\247\201N\333HV\232R\230R\230\311Q2Tl\225\023%w\324QE\024\207\2456\220\232i4\306\250\334\325\033\206\313\325i:Ui\032\251\316\334\212\253+qTfj\247+U9Z\253\310\325]\337\212\251+\3435JW\252\222\265V\221\352\273IP\263\324L\365\003\234\324{\371\346\214\344\325\210\227\003\232\220u\342\245N\225<hZ\245\362\202s\212O\264m8\305H%/O\022\025\243\315-\305X\204\026\305\\\211\017\025~(\211\0258A\214\032r\305\351R\205aRFpj\344\\\325\310j\344b\254\242\324\350\2652\255J\253R\005\247\205\247\355\243e!JaJc%F\311Q2TL\225\333\342\212(\244\316)\254i\t\342\233\232i9\2461\250\234\325\031O\314j\274\206\252\312j\225\301\252r\267\025RZ\251/J\247-U\220\325YZ\252J\325JS\232\253+UY\032\253\271\346\242f\250\235\252\027jfsNP\001\006\254\306\300\212\221P\325\230\200\003\236\265j\020*i\023r\361T\332\022\0335\"\260QM2n5,k\232\275l\274\212\326\266\20788\253\312\233E<&i\352\2305e#\0140j6\204\251\2530\257\025j1\212\273\r[\214U\204Z\235V\245T\251\025j@\224\360\224\357.\220\2450\2451\243\250\331*&\216\242d\256\306\220\212JF\351M\246\223\232BqM\246\261\2461\250%l\n\245!\371\215@\346\252\312z\325)\352\244\265VAUeZ\251*\325YW\025JaT\346\025JZ\247)\252\256\325\003\265B\306\242`j&SI\260\323\300\305O\030\3435b>je]\265b6\305YY\001Z\202y\006*\241r\306\244A\212\267\0078\255\030\006\010\255ky\000Z\230I\270\361W`_\227\232{\014T\261\020MN\360\356\\\322D\205N;U\224Z\271\n\325\330\226\255F\225:%J\251R\252T\253\035<GN\362\351\014t\323\0351\243\250\314u\023GQ4u\324\342\222\232z\32256\231H\324\332a<Tlj\264\315\301\252\223\034\021U\335\263U\3445R^sUd\351U\244\025ZAU\344Z\253*U\031\222\250\314\265FU\252R\255U\221*\273\245FS4\302\224\202-\306\245[n9\247\013qN\021`b\245D\305K\263\034\323\200\302\323\014\244qQ\026/OT\305<\n\275j\225s\004c\025r\3301\305h\303\031\3175u[h\247\240.j\3446\3479\305]\021e1Q\371u4Q\325\230\223\232\275\nU\270\322\254\"T\313\035L\261\324\253\035<GK\345\322\030\351\014t\306\216\243h\352&\216\242h\353\242\3054\214SZ\232zSi\224\215L4\306\250\230\325Y\272\032\2519\340Uv\250\036\253\311Ud\025^AU\234T\016*\264\242\251N\230\317\255R\2313T\246\213\006\252<$\324\022[\222:Ui-\330v\250\204\014{SZ\335\275)\004%y\247\214\221\3158-(Njh\343\315H\321\347\245\036Q\"\232ms\332\217\263\205\250\330c\212X\3275\243l\207\212\277\034[\253F\332 \242\255\252\342\247\216\022\325~\332\333\030\342\264\243\204\001\322\235\263\232x\264\317\"\237\035\276;T\313\026\rZ\205*\354Q\325\224\216\246X\352d\216\245X\351\342:_.\223\313\2441\323Lu\033GQ4u\023G[dS\010\246\221L\246\221L#\024\326\2460\250\336\242z\255/J\2530\310\252\317\322\253\275A\'J\254\342\253\310*\273\212\202A\332\253\3146\232\251*\344U7L\236\224\215i\275sU\336\325@\367\252\362[f\253\313j@\252\217\026\r4\246{SL9\246\371x\247\010\351DU2GR\204\247\005\002\225\206\005U\231\352\261\033\232\255\333\307\322\257G\205\253p\276j\374-\300\253\320\r\304V\255\264#\025q#\305Z\215\t\024\276Y\315\\\266^pzT\315\020\031\342\230\023&\255A\025^\212:\260\221\324\351\035J\261\324\253\035<GK\345\322\030\351\014t\323\0351\243\250^:\211\243\255B3M#\024\306\025\031\034\322\021L\2460\246\032\215\305B\365^A\234\325g\037)\252\316\274Uw\025\003\212\256\353U\335j\007Z\201\305T\236\240\010[\2654\301\267\250\250\336:g\221\236\325\033@=*\275\304 \n\315\222\034\267J\215\241\305FV\233\345\346\234#\247\010\352E\216\237\345\322\0049\245h\362*\224\361sQ\244|\325\270P\325\270\255\331\361W\355\354\310\253a6U\2730K\n\334\267R\024U\330\2235n$\251\204;\252x\341\305I\260\343\245\"E\226\351W\"\213\025n$\253I\035L\261\324\253\035J\261\323\304t\276^h\362\351\246:i\216\232\321\324-\035B\361\325\354sMa\232\214\212iZc-0\2574\302*2)\214\265\023\255Wu\346\252\3100MVa\305@\353P:\324.\265\003\245W\220b\253H*\263E\3466*x\340T^EW\235r\325\017\225\232_+\002\253J\270\252\223\216*\213\2475^U\250Dd\323\374\254R\371t\345\216\244\021\323\204y\247\030p*\t\001Z\201\327u5 %\272U\353{~\234V\234\021\252\343\212\270\230\307\024\216\233\252\335\204xa[\260  U\330\220\001Vc\\\232\271\024|T\301EN\226\373\322\204\266\301\351V\026*\263\024x\253*\225*%N\221\324\253\035<GK\345\322yt\206:C\0351\243\250\236:\205\343\251\231{\323OJa\031\246\221L\"\230\302\230Fi\214\265\023\n\215\305W\220u\252\262\2575]\305Wu\250]j\027\025\003\214Ui\005@\353\232H\3419\315$\240\364\025\017\222X\320a\300\351Q2\342\252\314\271\252r\307U\036:\201\242\246\371x\246\354\311\251\026\032p\213\025\"\303\232\225-\252Sm\305T\236\327&\241\026\307=*h\255=\252\334p\201S\210MI\024g5g\312\342\247\267\005Z\265m\344\300\025m&\344U\373c\270V\214*[\002\256%\251=\252\3240m\035)Z,\034b\225#\333V\021jx\3235e#\251\225*UJ~\312Q\035!\216\223\313\2441\323\014u\033GP<t\025\342\243aL#\232JmFFi\245i\244`\324\rQ8\250$\025ZE\252\362\n\201\305B\342\240\220Uw\025\003\2451!\336\370\253\r\010Q\212\250\321sI\263\025\034\213U\335*\264\221\325ic\252\317\025@\320\346\233\344P \247\254\\\324\351h[\265X\216\323\007\245M\344`Tn\224\303o\277\265F\326\330\355NHjh\355\311=*\3746y\035*\304zy\'\245X\376\315>\224\253\247\021\332\246[b\275\252xm\211n\225\263ijv\212\327\262\265\371\205l%\272\205\024\242\001\351H\326\204\256@\250Z\r\264\364J\265\032U\224J\231#\311\251V:x\214\232w\227G\227M1\322\030\351\215\035F\321\324/\037\265W#\212c\n\214\212i\030\246\036\264\312i\2467z\211\252\'\025\013\212\256\353\326\253\272\324\016\265\013\255A\"\325vJ\211\322\237o\036\0335#\241<\325w\206\241)QJ\270\252\355\326\240\221j\273\307\232\205\342\250\274\252i\213\332\224BOj\232\033R[\245h\301l\000\344S\232 \265\023/\025\003G\315H\221\361\322\221\341\311\351RCk\236\325v+@\017J\320\267\266\030\255\010mW\322\255%\262\2361S\215<2\364\246\377\000f\363\322\245\213M\301\351ZPZl\035*\334K\262\256DKU\225\030\305X\205s\236*\264\320\362p)\253\0175b8\361Vc\212\247H\261R\210\351\302:_.\217.\223\313\244)Q\262TL\225\023%Q \212k\naZ\214\2551\2050\212\215\252\'\250\350\306j)\027\030\252\362-@\351P:T\016\225\004\221\324.\225\003\361SB\231\\\324\336^EE$\\UG\217\232\206X\363U\314U\014\260\324>O=)\257\006{T_g\245\026\2715<v\203\322\247K`;T\353\036\005G\"T\014\265\026\314\232\261\024\031\355S\255\236{U\230m1\332\256GfOj\267\r\251\035\252\332\304EO\014D\265i\303\006W\245N\266\300\366\253P\331\203\216*Y-v\216\005$6\205\333\245i\305a\265A\3052X\366\232\261m\036EE,|\236)\212\234\325\210\343\253Q\307S,t\361\0358%.\312<\272\nS\nS\032:\211\243\250\231+,\214R\021M+Q\262\324l*2)\205j7J\214\245!Z\212E\310\250\035j\027Z\211\222\242x\270&\253\272\324\022\'\265VkfsVV\022\200\n\224-6D\342\251\272sPJ\234Ur\274\322\030\267S\r\276;SL<t\246y\0314\365\267\366\247\254x\251\002Pp*\031*\273)4G\0275~\336\037j\320\212\337=\252\314v\274\364\253\366\366\271\355V\326\323\332\245\026\236\325<6\240\036\225v80*\314Pd\364\253\360\333\340t\251\r\266\352\267ib\006\016*\324\261\204\\\n\316\232<\265I\022ah)\232\210\307\315O\024uj8\352uN)\341)Dt\276].\312B\224\302\224\306J\211\222\242d\254b\264m\246\225\250\331j6Z\215\226\231\267\332\232\313\305B\313\355I\214\212\211\227\232\205\326\241d\250\3313Q\230Kd\n\256\361\021Q\371%\216*9\023\313lT\351\036P\032f\317\232\207O\226\252<|\324M\026\352\214\332g\265\'\221\216\325\034\221\342\240+J\2503R\034\001L\306O\024\215\305B\315I\215\324\253\006jh\355\275\252\375\275\267N+J\013~\234U\370-A\307\025\243\r\237\035*\322Z{T\302\327\332\234\266\330=*\314v\376\325f(0zU\304\217\212\232(\262j\374Q\205Z\216d\316j\233\303K\345`P#\243\311\366\251#\213\025a\022\246T\251\004t\273)Dt\273)\245)\205)\214\225\023%D\311Xei6\322\021Q\260\250\331j&\024\334\032B\274T.\274\323\n\361Le\346\240t\353Q\025\246\225\250\231H\351Q2f\232\023\006\241\222\002\362\n\230\246\325\305F\023\232s&EU\226,TA0i[\030\252\362\021U\344\252\345y\240\360)\000,je\200\343\2452H\361U\334b\2265\311\253\260\301\273\265]\206\323=\252\364V\330\355W!\203\245iZ\333\3628\255h-\370\351V\226\337=\251\302\014v\251\005\276{T\221\303\203\322\254,\025*EV\342\203\275XU\300\246I\036j/\'\232i\207\255\'\223J\"\300\247\254u*\'\0252\245<-.\312v\3126SJSJS\031*&J\205\222\271\362)\010\246\221L#4\306Z\211\226\230V\220\212\211\327\232n\332\215\226\242e\250\2311L+Md\250\366S\014|\322\307\026^\222H\376cQ\230\351L|T\022G\315D\361`f\251\314\304\023U\334\361U\244<\323\027\223O\"\237\n\214\325\207eU\252r\311\223P0,j\305\264\004\232\326\267\203\201\305hC\020\305Z\216\034\325\373{n\231\025\247ol8\255\030\241\351Wb\267\310\250\347\214%6&\007\212\235R\254\242dT\321E\223W\343\207\345\241\242\307ja\216\223\312\246\010\363\232A\037\315N\020\323\274\234\nT\217\025:F\010\247\004\247\004\245\331G\227HR\232R\243d\250\231*\027J\346\312\363HV\232V\232V\232V\243e\250\212\323J\323Y*2\230\355M+Q2\324M\0357\313\2441\324~U4\305\315J\221aI\246\030}\251\276Oz\014<UY\242\301\252\357\323\232\241:rj\254\203\025\003&i\233piH&\237\0325=\241v\246-\233\023\310\251R\310\372U\310-v\342\264!\206\254\254Ej\325\270\371\205j@\006\005_\200t\255\010E[F\300\250n~q\305T@U\253B\001\270U\330\243\253QG\315]\215@\024\256\200\324E)\nb\243U\3114\251\026Z\247X2zT\302\327=\2527\266\330O\2455S\024\365^j@\224\276]/\227M1\323\031*6J\211\322\240u\256d\257\"\220\2557m!ZaZk%F\311L)\212iZiJ\215\223\025\033%3\313\346\223\313\2441dS\014T\323\0275:E\225\244x\275\2523\r7\313\250\245\266\334\017\025\233s\tL\326|\213UdL\232\211\223\002\241+\226\2531C\270U\230\340\000\325\270\355\224\216\224\343n\243\265\"\302)\3731S\301\324V\212B\035i\351\006\323W\355\326\264\255\342\253\261\200*U\025 \217p\250d\204\003R@v\232\321\205\206*\314L3V\324\340Q\273&\224.i\222\341F;\323c\217\214\324\210\2305n8\307\025e\"\343\212$\2040\252\222\301\264\322\004\311\002\234\252Cc\025(L\212<\272C\035F\311Q2TL\225\003\245r\305rh)M+M+HR\232V\231\345\323Lg\265Fc\244)Q\262Te)<\272Q\026i\306\016*?\'\236\224\277f\317j\235-\3601Mx=\252&\207\002\2411d\364\2474@/5\223|\203&\262fLf\251\270\346\233\345\356\024\317\263\363\232\2325\300\251\321I5m\024\342\235\260\232pLu\245\331\221K\032a\253^\311w\001W\305\266{T\320\300A\351W\243R\005J\271\251\322\244V4\343\031jE\217i\253\021\222*\304lA\253\3216V\227\222jTR\0053\313,\3715:G\305I\345b\247\205x\253H\274qO\362\370\250\245\207p\252\246\")\350\270l\232\230G\203\365\2451\323\032:\211\222\242d\250]*\027Z\3456\365\244\333HV\233\266\220\245&\312B\224\322\224\306\216\230R\243d\244\362\251DT\361\r/\223M0s\322\246\212\014.q\311\251\004>\324\326\2035\004\226\307\322\242\026\3705\r\312\355SXw|\261\254\351\222\252<9=)\321\303Nx@\025\026\334\032\236,\n\266\204T\234S\030\346\234\200\232\2368\211\"\265\354\240#\034V\254qqS\244 T\312\202\236#\251\243\2135j+l\324\257\000QQy[\217J\226;cV\222\314\236\325b;v^\325:[\373U\224\267\334\rBb\332\325$kR\371|T\221\245Z\212<\324\336_\313M1\346\2410ri\206,T\302 c\006\203\035F\351Q2TL\225\003\245@\351\\\230\\\232B\224\322\264\233h\333F\332B\264\322\224\322\224\302\224\337.\201\035(\213\006\244\021\323\204T\253\006\342\005X\026\375\251\377\000f\366\245\3738\003\245A4@U\031\210Z\313\272r\331\025\2274D\223T\345\200\372T?g>\224\323\036\323C.EBb\346\244H\rL\220\232\224\302\330\247GnX\363Wb\263\343\245Z\206\327\006\264\340\214(\253iS\016\3254hML\220\363W!\202\255\307\036)%\217u>\336\327q\346\256\245\250\004qW\340\265\004t\251M\250\035\251\014Ai\013\000\n\216\265\t\214\223NX\261R\205\247\242\325\230\205X m\3053\313\3159b\310\243\310\006\224[\3423Q\262Tl\225\023\245@\353P:T\016\265\311*rh)M+Ln)\204\322d\322\022OjBH\355H\034\032v\314\322\210\263\332\234\261sO\020\346\234!\247\210jx\255\370\315N\220SeP\202\252\274\330\252\223I\232\2412\027\252\262[\222j\007\265\366\252s[s\322\2416\376\325Z\342\337i\250V<\320` \364\251cLT\361\240&\255,\000\216\224\253\020SVcaV#\000\232\264\212jx\326\254\306\231\253\260\305\305YH\361VcZ\231V\244X\363V`\217\025v8\363\212\275o\026\005=\343\305D\361\344UB\271s\216\325\"-;m9S4\375\230\251c\371j`sO\013\232|kS\210\262)L_.*\264\221\341\210\250Y*\'J\256\351PH\265]\322\271EJ\nsQ8\305G\344\263\366\342\245\216\310\236\242\247\026*:\212q\265Lb\240}?q\310<UK\2133\021\310\351M\210\347\203V\243\217\"\245\020S\326\002)\353\016i\342\n\262\226\374b\2451l\025B\345rj\213\305UgP\200\223TL\377\0001\245\014\033\255#\306\010\252\262\3023Q\033l\325k\233S\203\305QH\266\266*\322\332\206\035)\032\323\035\251R\330\203\322\254*\2201Mh\311\247G\023U\330!<U\344\217\002\246D\346\256A\035^\2158\253\t\036j\324p\324\313\rK\034<\325\270\240\253q\305W\240\217\002\226D\250$N*\246\315\255O+\212]\271\024\365Z\220%;f*HS-V\n\000)\310\005O\022\2268\251\232,\n\2574[\371\357U\035*\027J\254\351P:T\016\265\311t\245\306\352AjX\202zU\264\215\021q\216iv\263}\321CG\265rMDH\346\231\235\243\2555\200\230`\325v\260 \345i\360\002\016\3229\025q#\315J\261S\274\2209\246\203\373\300\270\253\321G\232\216\341p8\254\371P\223U\246\0021\317Z\312\272%\363Y\315\031\006\214\343\275!\224\216\365^Y\315\021]d\200j\333\302&L\326{\331\355j\231#\332)\313\036\343V\026\327#\2451\355\210\355H\266\374\364\2530\333\017J\270\226\340\016\224\361\035O\034\031\253\220\301\322\257E\007\025:E\203V\342\217\"\254,T\360\273j\3045n 3W\341Q\266\2332T\014\234sU^?\232\224-;\313\247*b\245QO\333\305:\005\334x\251\261\3174\3409\251\241p\244\032\263#f\241u\252\222\246\032\253\310\265]\326\240u\252\322-rI\026z\325\210`\317QS\255\276\343\355M1\005ny\245yv\246\000\002\252\310\374\032\256\362s\3053\226\253\020\200\275z\324\341s\3151\321wt\344T\361.EL\252)\341x\250b@\323\326\224i\200j\031\3239\252rF\024\022k\"\350\226cT\236<\325ib\305Ux\352\026^1U\344\2175\000R\206\256\3059\333\212tG\314|\032\266-\262\264\301\016\326\253\360F\010\251\032\3207jE\261\366\251\226\323oj\225`\247\013nj\314P\343\265[\212.zU\350\241\342\206]\246\254\333\220j\3168\246\222\t\253v\350\010\251\217\312j\324\023T\347\014*)\000\002\253\0203@\\\323\266\322\355\366\245\003\006\235\232\261m\036\0018\245c\363\322\321\234sVa\1774\001\216E+\236qPJ\2719\250$Z\254\353\326\253\310*\254\213\232\346\342\213\247\025`D\002\322\214\225\300\351Q\263\n\202f\315T\221\262j\0223RF\000\247\261\3075*M\362\361NA\272\254\306\206\247\t\305<\247\313P[\014\\\034\326\232\016\265\004\343\000\232\311\236bMR\221wUgLUyc\315Vx\252\t\"\252\357\035B\321f\205\217mH\237+f\265m[z\212Y\342\333\3152\336\\6+f\3361\"\346\254\210\000\355G\221\236\224\345\265>\225\"\333\037J\236;SS\244A\0175edEZ\255q0\317\024\333{\214\032\274\'\312\324f_\232\256\333\334\020*o7q\253Pt\315O\346`S\013\222=\252,\363R(\310\247\201\3158.iB\n\221R\246C\201\212k\2009\240\0369\244\247\306\3463\305ZD\363~oZI!\300\342\253\311\017\0075Nd\252\262-Vu\254E\210(\346\225\200\305D\355\203\305F\303<\325Y\2175U\373\323)\350)\362\034-G\021\371j\354\003 U\310\226\247\301+N\031\306;Sb\200\031\301\253dl\004\324\022\266\365<V\\\320\222O\025\013CPI\rW\2221U\336!U\244\212\252\311\035Fc\243\312\315\036V*\325\237\312\325\250\320\371\211T\215\261G\316+F\326o,\000j\327\332\201\253V\356\017Z\274\035\000\240K\030\245k\224\003\212\2475\326O\025\020\231\333\275=Q\237\255O\024\004U\224\210\232\221m\311\253Q\307\216\rH\024g\255X\215\266\364\253\010\340\212k\276)\2523S%<\n\221E<\np\024\240PA\240\014\361J\242\244\013V\255\230\001\212\232@\rV\225x\254\371\207&\252H\265ZAX\254;\324\022\032\201\315D\362\235\265U\237&\242c\223ND\315J\022\231(\342\233j\240\234V\204I\263\212\265\037^\225(<S\251\321\360\300\366\251\032L\206\025\t\351PH\265ZH\352\273\245V\222:\256\353\315B\351\305V\222\032\204\307\212M\224\004\247\240\332sZV\263d\000j\331\205\\S>\313\216\224\364\2665a\020\245+3\323F\374\324\201\035\252E\267\365\247\205T\247\207\305<\\m\251\241\272\031\301\034U\243&W+K\346\026\247\243\022j\324`\342\246\\\324\2337S\202b\236\005H\253\232\220-H\005<-(_j6SJ\340\346\225V\244A\271\261R\355\362\237\212\230>\341QJx\254\371\207&\252H*\264\225\203#b\253\310\336\365VI*\006|\324ML\306MO\030\300\247\253\206\342\2310\300\300\252\251!\212lv\255\210O\230\200\347\232\231\\\212\220>i\340\323\203qH\030\002A=jE\204\236\275)\222\303\212\252\353\326\240\2211PH\225VD\250\035j\027Z\211\222\230R\223e.\334T\221\235\246\255\307pEX\027\030\024\345\272\247\213\241OY\367T\242Q\351R\254\240\016\224\033\216:TFM\306\227}*\266jd\251\343vC\355W\021\203\036>\265<C5n1\212\260\251R\005\247\005\247\004\251\021j@*EZ\220%.\337j1\212i\\\320\007\024\261\266\331*I\037sf\221e\002\233$\202\251\316\300\346\2529\250\034f\271\211d\346\253H\371\252\316\331\250\311\3057\255\003\255H\274\212p\\\034\323[\223UnW\0035-\215\371_\225\215h\3038cVU\363\326\236\030\032z\232IA\352;T\266\367\340\235\222\014\037Z\232V_QT\\d\237Jd\211\315Vt\252\356\225]\343\250Y*&J\214\256(\306{Q\262\220.\rH\271\025*\344\365\247\0049\247\204\251P\021S\24052t4\252\264l\347\245.\314\323\326<T\312\225:.EI\032\224<U\330:\n\271\030\253(*`\264\360\231\251\004t\341\035H#\247\254u(LS\204`\320b\030\250\314x\244\333\201M\333\223C\017\226\241|\202j\026\222\242s\232\201\352\026\357\\{\311\232\201\336\242\246\222))\t\3059^\244W\024\326<\324\027\' \325\030?\327V\304#f3\336\256\306\371\0252\217J\225N\r?\"\241d\005\263R\030\303\000{\212pBA\244\2220\3000\250\036:\257$~\325ZD\250\031*&J\205\222\231\267\024\273h\333O\013R*\324\212\rJ\221\237J\224GR*\324\250\2652\306\010\2441\001NT\247\252\324\252\225*-N\251\232\2321\203V\343\253Q\324\3503S*\324\252\265*\245<GN\013\212\260\260\222\271\305!\217\006\215\224\302\264\306J\214\2455\205@\365^A\305BzTOQ\265p\354j&5\0319\244\'\024\323 \025\021\233\232U\2274\377\0007\024\tri\2237\025Q\016\311+E&%j\344\022f\255#\324\252\324\360\364\243\223O\007\212\2221\332\235\267\265F\361{Uw\217\322\253I\037\265W\222?j\201\343\305B\311M)M+@Zr\255H\027\025\"/5n%\006\246\362\275)6c\322\236\252EJ\242\244\013\232_+\035)\312\225*\245H\213S\242\324\352\225<k\212\262\202\254F*\302.jeZ\231\022\247H\351\306 \010\251D\204\361\214\nk\016\364\233r)\254\240\236\0050\2450\255D\351U\344Z\257 \252\356*\027\025\023\n\341\031\25264\322qPK8\\\325f\230\2650\313\357H\263b\236\'\315*\334sOi7\n\206N\001\307Z[\031\313K\261\217^\225\267\032\354\0252I\330\365\251\325\252E\251W\212\221\006jU\025\"\212\034\014sT.n\022&\344\324>ha\232c ~j\031#\307AU\232>i\2062i\205\r\002:v\334R\201R-M\033\225\253\013&jA\315=\0275:\'\265J\251O\t\355N\021\323\202\342\244T\251\343Z\231V\245\214sVPT\361\216j\324kV\0213V\022:\235\023\024\375\231#\212s\306\245r8\2461%pzS1\305!\036\324\205i\214\265\033%W\221*\254\251UdZ\201\305B\325\300\323H\342\253O.8\025FW9\353P\264\330\025\021\230\323|\343Hd=\215:9ry\353VR\\\361S\2140\252\262!I\003/Z\277m\2517\n\365\253\t\3362*\312p*dqS)\251\226\245J\224S_\245a\352\243a8\247\330\035\361\014\325\257$\036\234S\036\003\212\256\360\221Q\030i\206 )\276_4\2051F\312P\264\361\305J\246\247CS\245O\035X\\R\216M<\nu=W\035*T\251\226\246E\253\0101S\306*\324b\256B\225r(\352_.\247\362\007\225\273\275C\263\212\211\206)\224\2704\230\246\225\250\331j\027J\253*UI\022\253:\325w\025\347\354y\250\345}\252k:Yy&\251\313&\343P1\346\230\315Q\227\240IO\rS\307&O=j\324-\272\245)\236\325\033E\264\346\254\301\250<\000\000kWO\324\022\340\341\2705\263\0241\270\317\002\235\345\242\203\363t\244F\007\241\251\325\2058\276\005W\236\344F2Mc^\334\375\245\225\027\361\253\266\221\354@1V\324\342\234FED\351P\264^\325\023G\355L)\212i\216\223e&\314R\205\247\001R\257\025*5N\217S\243\324\252\325\"\265=MH\265\"\363R/\025a*\304|\325\230\326\254\307W!5v#VUwt\024\256\314\006\337J\210\364\250[\255%\024\204f\234 ,\244\324\014\270\250\234UiEU\221j\254\213Ud\025\347\214pj\245\324\200\014V\\\262d\232\256Z\243f\250\231\2522\324\320\374\323\325\352dj\267\003\340\212\322\210\202\240\322K\206\250\2149\251\255\255\331\033p\342\265c\274\221\027\003\255#\3133)!\272\324V\367\363[d0\310\253qkh[\014pjw\326`H\311\363\006~\265\217>\251%\353\225\214\034z\325\353\0132\230g\373\306\264\325p1K\322\2241\241\2449\373\274Sw\016\342\202\001\351Lh\251\246\032O&\220\301G\223G\225\212P\264\345\024\361\221R+b\246F\311\251\224\344\212\235\005N\213\212\225S\320T\212\265*.\rN\202\254\306j\314f\255Dj\334OVc\220\251\3104\255&\343Q;\324e\371\240\034\320ib\033\233\025\240\001\021`\016\325\2350\303\032\201\306j\264\253Ud\025ZJ\251 \2576\231\202\2515\223u)$\325\'j\211\232\243-\232\214\324m\322\233J\0175<f\255B\325z)\360)\336v\343SF\333\210\253q\270\002\254\3047\366\253\001\0061M{p{U\033\213\020\347\212\202=\037{rN+b\317NH@\300\255\001\036\301\322\227\267\024c\232p\024\273iB\003NXA\355O\362\007\245\rn1\326\231\344\201Hb\002\232c\2441f\230b\244\333\2121N\013R\242\325\230\326\254\306\265a\023\322\247D\251\226<\232\177\222T{T\210\271\251UH54f\254\306\325f9*u\222\237\276\232Nj3J\247\006\245Q\221H3\033\003V\205\350+\357U%m\314MBzT2.j\244\253U$Z\253\"\327\224\335\315\201\212\312\226L\232\256\315Q1\246\323OZ\215\251\000\315(\030\251\025\200\251\243~j\302\276i\310\304\032\267\013\346\255\306\303p\347\212\277\014\300\014\n\262\214\0174\362i6\206\251\"\217\034\325\324\000\001\212w^\246\215\271\245\tN\n\005;fi\301\r=V\236\026\227o=\351\031i\2733M1\320#\2440\347\2450\302A\351H\"\366\247\010\351\351\0375b4\253\010\265f5\253\021\246j\314qz\324\252\230\351\322\206\213\003+H\255\316\017Z\230\'q\322\236\274T\250\330\251\221\263O\017\203O\r\232\033\2455[\034T\3610\251\016\rD\313\203\3050\323\030qQ\277J\255(\315T\220UiEx\265\314\333\211\025E\332\242cQ\223I\232BqM<\322\001\212B\324\201\352X\332\254#\325\230\333\"\247N9\355Vbj\271\021\253(\307\275N\231j\262\2126\373\324\311\200\270\251\0014\365\355\232\220\014\323\202\323\300\247\005\247\252\323\300\3158-;m(Z<\261Mh\307jE\213u8\304\005&\317Q\212a_^\224\2421OXjU\217\025<q\325\230\343\315XE\305L\271\247\357\300\240\036sH\3007=\351br\247\006\254\014\021\305=G\025*\214S\361\232Q\221O\034\212t(\013\363JWk\234t\251\003\034S\031\251\224\326\250\236\241a\201U\245Z\253\"W\203\310\371\250\035\252&jnE\033\251\245\251\245\251\205\350\316h\025\"\232\225\rZ\211\252\334g5eW\270\251\342\220\216\r\\\213,\001\253q\034\001S\253T\253S-H\242\244QR\250\315=V\236\026\236\026\224-<-8-\024\231\243\"\232z\361K\270\201H_\212L\212U\343\216\242\246A\221S\'\270\251\320\016\302\245_z\2208\003\212]\364\241\363J\037\024\360\340\365\247\251\007\203R!+\364\2531\262\277\035\rL\243\232\224%9\025s\363\016)\300\004\'\035(U\357\212\010\244&\232Ni\204\322\023\212\215\271\250\233\245B\353U\234f\276|\221\352\026j\214\2657u!zazizij\003T\213\315J\265*\n\263\020\253\221\n\267\030\315ZD\351VPb\254Fj\314c5:-J\253R(\305L\2435\"\256)\341M8\002*A\332\235\212v)\r4\232JL\373Ro\244\355\221M\335J\032\234\rH\222\021S\3078\3163S\2111N\017\232psO\r\232pjpj7\342\236\262v\251\242\227\362\253\010CU\224\227\240?\235YC\221\357R\014c\212p\031\245\351H\303\"\242e#\2550\232o^\235i\247\2554\212\215\2522*)#\3348\257\233\335\25265\0314\302i\245\251\205\263I\232)\352*D\251\220g\025:%Z\215j\334KV\342Z\267\030\253Q\255XE\251\321ju\315J\253\232\225V\245U\251TS\300\247\016iq\212\\\320M4\232M\302\220\260\365\246\227\246\223\201G\033}\351\275\006iK`f\200\365\"6i\331$\361S#\021\214\232\225^\244\017\357R+S\367Q\272\235\273\245\001\251\352\344T\321\315\212\264\223\202*\302O\264{U\230\346\3175:J\033\332\202\302\232_\267j\031\262*3\300\244\355HNG?\2350\212iZk-F\312+\346Ri\204\323\t\2461\246\023M\'\212\007Jr\255J\253R\242\324\350\265b5\253Q%[\211*\334kVcZ\262\202\254F*\302-N\213S*\324\252\265\"\255J\253N\013N\330)\247\212ijizizizn\372B\324\007\243u8`\322\207+\3068\244p\007#4\261\203\214\324\252F*D qR)\346\236\265*5I\232ZQ\234\322\322\203J\033\006\244Y*x\347\343\025f9\360\006\rN\263dpjQq\221\203Jd\244\363qG\231AnsJ_\002\230_\024\323\'\277\024\214EF\314+\3462\324\322i\214i\204\342\233E*\255J\253R\252\324\250\225:%Z\212:\267\024uj5\253Q\245Y\215*\302%N\213V\021j\302-L\213R\250\251\002\323\200\3059M+\032\214\236j6\246\022sL-I\232Bi\271\244\335@jr\271\247\2065*\226\306\010\342\210\300bGj~\006\r\nqR+t\251T\324\253\322\244QO\002\235E\024R\214\323\303S\322R8\251\322oz\225f\247\211\251|\341\353K\346\323\274\332\014\224\335\364\322\364\323!\025\033I_4n\244&\232Ni\204\344\321\214\323\200\305=EJ\253\232\225W\025<b\254D\225n%\253Q\255X\215j\314b\255F*\302-X\215jtZ\231V\246QR\250\305?8\243u!4\323!\006\232\322\006\034\365\246\023L\335M&\233Fi\244\323I\243u8\032\221\rL\030\016\364\200\220x\245\031=jE\030\247\216\203\212\225MH\255S+S\301\305(j\\\323\205\004f\226\220\212@{S\303\021N\022\363O\022\323\274\332O7\006\236&\367\247y\224\236m/\233\232B\331\025\023\032\371\2674\204\346\232M%:\224u\251\020T\310*eZ\2365\253Q%Z\215j\324kV\021*\302-Y\215j\312-N\202\254 \251TT\2521N\007\024n\315\005\2517R\023\232i\3054\214\323\0104\334\342\232X\032\013\000)\244\203\3104\224c\024\243\216\264\365$t\247\214\324\313O\247-=M<\021\212z\236*ElT\212\324\241\251\343\245=i\300R\354\240\212\214\365\245\316\r\000PN)7b\223}\002\\w\247\211\251\014\264\202njA6E\014\365\377\331"
+byte_png: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002\000\000\000\002\000\010\000\000\000\000\321\023\213&\000\000\001GIDATx^\355\3359\016\2000\014E\301(\367?\263E\377+\220\034D\310L\371n`9\313\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\300\013f\006\000\000\000\330\234Y\027\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\240\213\227\034\000\000\000\200\273*\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000l\2402\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\234\2552\000\000\000\000\000\000\000\000\000\000\000\000<43\000\000\000p\204\206\373\352FJ\000\000\000\000\000\000\200\337h\330\"\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@/\377$\001\000\000\000\000\000\000\000\000\000,\344\260&\000\000\000\000\000\000\000\000\000\000\000_p\001c\233\005\005v\341\233P\000\000\000\000IEND\256B`\202"
diff --git a/core/res/res/color-watch/btn_watch_default_dark.xml b/core/res/res/color-watch/btn_watch_default_dark.xml
index 68b0eb6..333b44b 100644
--- a/core/res/res/color-watch/btn_watch_default_dark.xml
+++ b/core/res/res/color-watch/btn_watch_default_dark.xml
@@ -17,6 +17,6 @@
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_enabled="false"
           android:alpha="?attr/disabledAlpha"
-          android:color="?attr/colorPrimaryDark"/>
-    <item android:color="?attr/colorPrimaryDark"/>
+          android:color="?attr/colorSurface"/>
+    <item android:color="?attr/colorSurface"/>
 </selector>
diff --git a/core/res/res/color-watch/overview_background.xml b/core/res/res/color-watch/overview_background.xml
new file mode 100644
index 0000000..48ad0e7
--- /dev/null
+++ b/core/res/res/color-watch/overview_background.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- customizing to black for watches as this is used as the background for task transitions
+         (and WindowContainer fallback color) and all themes on watches are typically dark for
+         power savings -->
+    <item android:color="@android:color/black"/>
+</selector>
\ No newline at end of file
diff --git a/core/res/res/color-watch/switch_track_watch_default_dark.xml b/core/res/res/color-watch/switch_track_watch_default_dark.xml
index 15bbeda..5af2566 100644
--- a/core/res/res/color-watch/switch_track_watch_default_dark.xml
+++ b/core/res/res/color-watch/switch_track_watch_default_dark.xml
@@ -17,6 +17,6 @@
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_enabled="false"
           android:alpha="?attr/disabledAlpha"
-          android:color="?android:colorPrimaryDark" />
-    <item android:color="?android:colorPrimaryDark" />
+          android:color="?android:colorSurface" />
+    <item android:color="?android:colorSurface" />
 </selector>
diff --git a/core/res/res/layout-watch/app_anr_dialog.xml b/core/res/res/layout-watch/app_anr_dialog.xml
new file mode 100644
index 0000000..f9605af
--- /dev/null
+++ b/core/res/res/layout-watch/app_anr_dialog.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2022 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.
+  -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:showDividers="middle"
+    android:divider="@drawable/global_action_item_divider">
+    <Button
+        android:id="@+id/aerr_close"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/aerr_close_app"
+        android:drawableStart="@drawable/ic_close"
+        style="@style/aerr_list_item"/>
+    <Button
+        android:id="@+id/aerr_wait"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/aerr_wait"
+        android:drawableStart="@drawable/ic_schedule"
+        style="@style/aerr_list_item"/>
+    <Button
+        android:id="@+id/aerr_report"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/aerr_report"
+        android:drawableStart="@drawable/ic_feedback"
+        style="@style/aerr_list_item"/>
+</LinearLayout>
diff --git a/core/res/res/layout-watch/app_error_dialog.xml b/core/res/res/layout-watch/app_error_dialog.xml
new file mode 100644
index 0000000..8857b5f
--- /dev/null
+++ b/core/res/res/layout-watch/app_error_dialog.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2022 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.
+  -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:showDividers="middle"
+    android:divider="@drawable/global_action_item_divider">
+    <Button
+        android:id="@+id/aerr_restart"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/aerr_restart"
+        android:drawableStart="@drawable/ic_refresh"
+        style="@style/aerr_list_item" />
+    <Button
+        android:id="@+id/aerr_app_info"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/app_info"
+        android:drawableStart="@drawable/ic_info_outline_24"
+        style="@style/aerr_list_item" />
+    <Button
+        android:id="@+id/aerr_close"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/aerr_close_app"
+        android:drawableStart="@drawable/ic_close"
+        style="@style/aerr_list_item" />
+    <Button
+        android:id="@+id/aerr_report"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/aerr_report"
+        android:drawableStart="@drawable/ic_feedback"
+        style="@style/aerr_list_item" />
+    <Button
+        android:id="@+id/aerr_mute"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/aerr_mute"
+        android:drawableStart="@drawable/ic_eject_24dp"
+        style="@style/aerr_list_item" />
+</LinearLayout>
diff --git a/core/res/res/layout-watch/global_actions_item.xml b/core/res/res/layout-watch/global_actions_item.xml
index 3d3f341..f964a4a 100644
--- a/core/res/res/layout-watch/global_actions_item.xml
+++ b/core/res/res/layout-watch/global_actions_item.xml
@@ -15,21 +15,18 @@
 -->
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="match_parent"
-	android:layout_height="wrap_content"
+        android:layout_height="52dp"
         android:gravity="center"
-        android:minHeight="52dp"
         android:minWidth="172dp"
-        android:paddingStart="12dp"
-        android:paddingEnd="12dp"
-        android:paddingTop="6dp"
-        android:paddingBottom="6dp"
+        android:paddingStart="14dp"
+        android:paddingEnd="14dp"
         android:background="@drawable/global_actions_item_grey_background">
 
     <ImageView android:id="@+id/icon"
             android:duplicateParentState="true"
             android:scaleType="centerInside"
             android:gravity="center"
-            android:layout_marginEnd="8dp"
+            android:layout_marginEnd="6dp"
             android:layout_width="24dp"
             android:layout_height="24dp"/>
 
diff --git a/core/res/res/layout-watch/grant_credentials_permission.xml b/core/res/res/layout-watch/grant_credentials_permission.xml
new file mode 100644
index 0000000..5012b54
--- /dev/null
+++ b/core/res/res/layout-watch/grant_credentials_permission.xml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2008, Google Inc.
+ *
+ * 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.
+ */
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:divider="?android:attr/dividerHorizontal"
+    android:showDividers="middle"
+    android:dividerPadding="0dip"
+    android:theme="@style/Theme.DeviceDefault"
+    android:background="?attr/colorBackground">
+
+    <!-- The list of packages that correspond to the requesting UID
+    and the account/authtokenType that is being requested -->
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:fillViewport="true"
+        android:layout_weight="1"
+        android:gravity="top|center_horizontal">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:paddingTop="36dip"
+            android:orientation="vertical">
+
+            <TextView
+                android:id="@+id/grant_credentials_permission_message_header"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/grant_credentials_permission_message_header"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:paddingStart="28dip"
+                android:paddingEnd="20dp"
+                android:paddingBottom="12dip" />
+
+            <LinearLayout
+                android:id="@+id/packages_list"
+                android:orientation="vertical"
+                android:paddingStart="16dip"
+                android:paddingEnd="12dip"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content" />
+
+            <RelativeLayout
+                android:paddingStart="16dip"
+                android:paddingEnd="12dip"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <ImageView
+                    android:id="@+id/permission_icon"
+                    android:layout_width="30dip"
+                    android:layout_height="30dip"
+                    android:src="@drawable/ic_bullet_key_permission"
+                    android:layout_alignParentStart="true"
+                    android:scaleType="fitCenter" />
+
+                <TextView
+                    android:id="@+id/account_type"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textColor="@color/perms_dangerous_perm_color"
+                    android:textStyle="bold"
+                    android:paddingStart="16dip"
+                    android:layout_toEndOf="@id/permission_icon"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content" />
+
+                <TextView
+                    android:id="@+id/account_name"
+                    android:textAppearance="?android:attr/textAppearanceSmall"
+                    android:textColor="@color/perms_dangerous_perm_color"
+                    android:layout_marginTop="-4dip"
+                    android:paddingBottom="8dip"
+                    android:paddingStart="16dip"
+                    android:layout_below="@id/account_type"
+                    android:layout_toEndOf="@id/permission_icon"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content" />
+
+                <TextView
+                    android:id="@+id/authtoken_type"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textColor="@color/perms_dangerous_perm_color"
+                    android:textStyle="bold"
+                    android:layout_marginTop="-4dip"
+                    android:paddingBottom="8dip"
+                    android:paddingStart="16dip"
+                    android:layout_below="@id/account_name"
+                    android:layout_toEndOf="@id/permission_icon"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content" />
+            </RelativeLayout>
+
+            <TextView
+                android:id="@+id/grant_credentials_permission_message_footer"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/grant_credentials_permission_message_footer"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:paddingStart="19dip"
+                android:paddingBottom="12dip" />
+        </LinearLayout>
+    </ScrollView>
+
+    <!-- The buttons to allow or deny -->
+    <LinearLayout
+        android:id="@+id/buttons"
+        android:layout_marginStart="25dp"
+        android:layout_marginEnd="25dp"
+        android:layout_marginBottom="10dp"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        style="?android:attr/buttonBarStyle">
+
+        <Button
+            android:id="@+id/deny_button"
+            android:text="@string/deny"
+            android:layout_width="0dip"
+            android:layout_height="wrap_content"
+            android:layout_weight="2"
+            style="?android:attr/buttonBarButtonStyle" />
+
+        <Button
+            android:id="@+id/allow_button"
+            android:text="@string/allow"
+            android:layout_width="0dip"
+            android:layout_height="wrap_content"
+            android:layout_weight="2"
+            style="?android:attr/buttonBarButtonStyle" />
+
+    </LinearLayout>
+</LinearLayout>
diff --git a/core/res/res/layout-watch/permissions_package_list_item.xml b/core/res/res/layout-watch/permissions_package_list_item.xml
new file mode 100644
index 0000000..e2171c1
--- /dev/null
+++ b/core/res/res/layout-watch/permissions_package_list_item.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 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.
+  -->
+
+<!--
+  Defines the layout of a single package item.
+  Contains a bullet point icon and the name of the package.
+-->
+
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:theme="@style/Theme.DeviceDefault">
+
+    <ImageView
+        android:id="@+id/package_icon"
+        android:layout_width="30dip"
+        android:layout_height="30dip"
+        android:layout_alignParentStart="true"
+        android:src="@drawable/ic_text_dot"
+        android:scaleType="fitCenter" />
+
+
+    <TextView
+        android:id="@+id/package_label"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:textStyle="bold"
+        android:paddingStart="6dip"
+        android:layout_toEndOf="@id/package_icon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" />
+
+</RelativeLayout>
diff --git a/core/res/res/layout-watch/watch_base_error_dialog.xml b/core/res/res/layout-watch/watch_base_error_dialog.xml
new file mode 100644
index 0000000..0f3fb42
--- /dev/null
+++ b/core/res/res/layout-watch/watch_base_error_dialog.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2022 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.internal.widget.WatchListDecorLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/parentPanel"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <ScrollView
+        android:id="@+id/scrollView"
+        android:fillViewport="true"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingLeft="?dialogPreferredPadding"
+            android:paddingRight="?dialogPreferredPadding"
+            android:paddingTop="@dimen/base_error_dialog_top_padding"
+            android:paddingBottom="@dimen/base_error_dialog_bottom_padding"
+            android:orientation="vertical" >
+            <!-- Top Panel -->
+            <FrameLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:id="@+id/topPanel">
+                <include android:id="@+id/title_template"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    layout="@layout/watch_base_error_dialog_title"/>
+            </FrameLayout>
+            <FrameLayout
+                android:layout_width="match_parent"
+                android:layout_height="16dp">
+            </FrameLayout>
+            <!-- Content Panel -->
+            <FrameLayout
+                android:id="@+id/contentPanel"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:clipToPadding="false">
+                <TextView
+                    android:id="@+id/message"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:gravity="center_horizontal|top"
+                    android:textAppearance="@style/TextAppearance.DeviceDefault.Body1"
+                    android:paddingTop="8dip"
+                    android:paddingBottom="8dip"/>
+            </FrameLayout>
+            <!-- Custom Panel, to replace content panel if needed -->
+            <FrameLayout
+                android:id="@+id/customPanel"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:minHeight="64dp">
+                <FrameLayout
+                    android:id="@+android:id/custom"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"/>
+            </FrameLayout>
+
+            <!-- Button Panel -->
+            <FrameLayout
+                android:id="@+id/buttonPanel"
+                android:layout_weight="1"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="bottom"
+                    android:orientation="vertical"
+                    style="?android:attr/buttonBarStyle"
+                    android:measureWithLargestChild="true">
+                    <Button
+                        android:id="@+id/button1"
+                        android:layout_gravity="start"
+                        android:layout_weight="1"
+                        style="?android:attr/buttonBarButtonStyle"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"/>
+                    <Button
+                        android:id="@+id/button3"
+                        android:layout_gravity="start"
+                        android:layout_weight="1"
+                        style="?android:attr/buttonBarButtonStyle"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"/>
+                    <Button
+                        android:id="@+id/button2"
+                        android:layout_gravity="start"
+                        android:layout_weight="1"
+                        style="?android:attr/buttonBarButtonStyle"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"/>
+                </LinearLayout>
+            </FrameLayout>
+        </LinearLayout>
+    </ScrollView>
+</com.android.internal.widget.WatchListDecorLayout>
diff --git a/core/res/res/layout-watch/watch_base_error_dialog_title.xml b/core/res/res/layout-watch/watch_base_error_dialog_title.xml
new file mode 100644
index 0000000..aa14c08
--- /dev/null
+++ b/core/res/res/layout-watch/watch_base_error_dialog_title.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2022 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.
+  -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingLeft="@dimen/base_error_dialog_contents_padding"
+    android:paddingRight="@dimen/base_error_dialog_contents_padding"
+    android:orientation="vertical"
+    android:gravity="top|center_horizontal">
+    <FrameLayout
+        android:adjustViewBounds="true"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+        <ImageView
+            android:id="@+id/icon"
+            android:adjustViewBounds="true"
+            android:maxHeight="24dp"
+            android:maxWidth="24dp"
+            android:layout_marginTop="@dimen/screen_percentage_10"
+            android:layout_gravity="center_horizontal"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@null"/>
+    </FrameLayout>
+    <TextView
+        android:id="@+id/alertTitle"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:minHeight="38dp"
+        android:textAppearance="@style/TextAppearance.Watch.BaseErrorDialog.Title"
+        android:maxLines="3"
+        android:gravity="center_horizontal|top"/>
+</LinearLayout>
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index a12b3ac..a1fe314 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Gesighandeling is gekanselleer."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Gebruiker het Gesigslot gekanselleer"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Te veel pogings. Probeer later weer."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Te veel pogings. Gesigslot is gedeaktiveer."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Te veel pogings. Gebruik eerder skermslot."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Kan nie gesig verifieer nie. Probeer weer."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Jy het nie Gesigslot opgestel nie"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Tik om aan te skakel"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Geen werkprogramme nie"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Geen persoonlike programme nie"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Maak <xliff:g id="APP">%s</xliff:g> in jou persoonlike profiel oop?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Maak <xliff:g id="APP">%s</xliff:g> in jou werkprofiel oop?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Gebruik persoonlike blaaier"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Gebruik werkblaaier"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM se netwerkontsluiting-PIN"</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index c923218..94482e4 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"ዚፊቔ ሄርዓተ ክወና ተሰርዟል፱"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"በመልክ መክፈቔ በተጠቃሚ ተሰርዟል"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"ኹልክ በላይ ቄዙ áˆ™áŠšáˆ«á‹Žá‰œáą በኋላ ላይ ኄንደገና á‹­áˆžáŠ­áˆ©áą"</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"በጣም ቄዙ áˆ™áŠšáˆ«á‹Žá‰œáą በመልክ መክፈቔ ተሰናክሏል፱"</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"በጣም ቄዙ áˆ™áŠšáˆ«á‹Žá‰œáą በምቔኩ ዚማያ ገጜ መቆለፊያን á‹«áˆ”áŒˆá‰Ąáą"</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"ፊቔን ማሚጋገጄ áŠ á‹­á‰»áˆáˆáą ኄንደገና á‹­áˆžáŠ­áˆ©áą"</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"በመልክ መክፈቔን áŠ áˆ‹á‹‹á‰€áˆ©áˆáą"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ለማቄራቔ መታ ያዔርጉ"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"ምንም ዚሄራ መተግበáˆȘያዎቜ ዹሉም"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"ምንም ዹግል መተግበáˆȘያዎቜ ዹሉም"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"<xliff:g id="APP">%s</xliff:g> በግል መገለጫዎ ውሔጄ ይኚፈቔ?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"<xliff:g id="APP">%s</xliff:g> በሔራ መገለጫዎ ውሔጄ ይኚፈቔ?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"ዹግል áŠ áˆłáˆœ ተጠቀም"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"ዚሔራ áŠ áˆłáˆœ ተጠቀም"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"ዹáˆČም አውታሹ መሚቄ መክፈቻ ፒን"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 0d52cac..bcb89fc 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -713,8 +713,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"ŰȘمّ Ű„Ù„Űșۧۥ ŰčÙ…Ù„ÙŠŰ© Ù…Ű”Ű§ŰŻÙ‚Ű© Ű§Ù„ÙˆŰŹÙ‡."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"ŰŁÙ„Űșى Ű§Ù„Ù…ŰłŰȘŰźŰŻÙ… ميŰČŰ© \"فŰȘŰ­ Ű§Ù„ŰŹÙ‡Ű§ŰČ ŰšŰ§Ù„ŰȘŰčŰ±Ù Űčلى Ű§Ù„ÙˆŰŹÙ‡\"."</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"ŰȘمّ ۄۏ۱ۧۥ Ù…Ű­Ű§ÙˆÙ„Ű§ŰȘ ÙƒŰ«ÙŠŰ±Ű©. ŰŁŰčÙŰŻ Ű§Ù„Ù…Ű­Ű§ÙˆÙ„Ű© Ù„Ű§Ű­Ù‚Ù‹Ű§."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"ŰȘم ۄۏ۱ۧۥ ŰčŰŻŰŻ ÙƒŰšÙŠŰ± ŰŹŰŻÙ‹Ű§ من Ű§Ù„Ù…Ű­Ű§ÙˆÙ„Ű§ŰȘی Ù„Ű°Ű§ ŰȘم Ű„ÙŠÙ‚Ű§Ù ميŰČŰ© \"فŰȘŰ­ Ű§Ù„ŰŹÙ‡Ű§ŰČ ŰšŰ§Ù„ŰȘŰčŰ±Ù Űčلى Ű§Ù„ÙˆŰŹÙ‡\"."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"ŰȘم ۄۏ۱ۧۥ ŰčŰŻŰŻ ÙƒŰšÙŠŰ± ŰŹŰŻÙ‹Ű§ من Ű§Ù„Ù…Ű­Ű§ÙˆÙ„Ű§ŰȘ. ŰŁŰŻŰźÙÙ„ قفل Ű§Ù„ŰŽŰ§ŰŽŰ© ŰšŰŻÙ„Ű§Ù‹ من Ű°Ù„Ùƒ."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"يŰȘŰčŰ°Ù‘Ű± Ű§Ù„ŰȘŰ­Ù‚Ù‚ من Ű§Ù„ÙˆŰŹÙ‡. Ű­Ű§ÙˆÙ„ Ù…Ű±Ű© ŰŁŰźŰ±Ù‰."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"لم ÙŠŰłŰšÙ‚ لك Ű„Űčۯۧۯ ميŰČŰ© \"فŰȘŰ­ Ű§Ù„ŰŹÙ‡Ű§ŰČ ŰšŰ§Ù„ŰȘŰčŰ±Ù Űčلى Ű§Ù„ÙˆŰŹÙ‡\"."</string>
@@ -2167,10 +2166,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Ű§Ù†Ù‚Ű± لŰȘفŰčيل Ű§Ù„Ù…ÙŠŰČŰ©"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Ù…Ű§ مِن ŰȘŰ·ŰšÙŠÙ‚Ű§ŰȘ Űčمل."</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Ù…Ű§ مِن ŰȘŰ·ŰšÙŠÙ‚Ű§ŰȘ ŰŽŰźŰ”ÙŠŰ©."</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"هل ŰȘŰ±ÙŠŰŻ فŰȘŰ­ <xliff:g id="APP">%s</xliff:g> في ملفك Ű§Ù„ŰŽŰźŰ”ÙŠŰŸ"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"هل ŰȘŰ±ÙŠŰŻ فŰȘŰ­ <xliff:g id="APP">%s</xliff:g> في ملفك Ű§Ù„ŰŽŰźŰ”ÙŠ للŰčÙ…Ù„ŰŸ"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"ۧ۳ŰȘŰźŰŻŰ§Ù… Ű§Ù„Ù…ŰȘŰ”ÙÙ‘Ű­ Ű§Ù„ŰŽŰźŰ”ÙŠ"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"ۧ۳ŰȘŰźŰŻŰ§Ù… مŰȘŰ”ÙÙ‘Ű­ Ű§Ù„Űčمل"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"‏Ű±Ù‚Ù… Ű§Ù„ŰȘŰčŰ±ÙŠÙ Ű§Ù„ŰŽŰźŰ”ÙŠ Ù„Ű„Ù„Űșۧۥ قفل ŰŽŰšÙƒŰ© ŰŽŰ±ÙŠŰ­Ű© SIM"</string>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index a113934..798bae6 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -379,7 +379,7 @@
     <string name="permdesc_readSms" product="default" msgid="774753371111699782">"àŠàŠ‡ àŠàŠȘ্‌àŠŸà§‹à§±à§‡ àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ«\'àŠšàŠ€ àŠžàŠ‚à§°àŠ•à§àŠ·àŠżàŠ€ àŠ†àŠŸàŠŸàŠ‡àŠŹà§‹à§° àŠàŠ›àŠàŠźàŠàŠ› (àŠȘàŠŸàŠ ) àŠŹàŠŸà§°à§àŠ€àŠŸ àŠȘàŠąàŠŒàŠżàŠŹ àŠȘàŠŸà§°à§‡à„€"</string>
     <string name="permlab_receiveWapPush" msgid="4223747702856929056">"àŠȘàŠŸàŠ  àŠŹàŠŸàŠ°à§àŠ€àŠŸ (WAP) àŠŹà§‹à§° àŠČàŠŸàŠ­ àŠ•à§°àŠ•"</string>
     <string name="permdesc_receiveWapPush" msgid="1638677888301778457">"àŠàŠȘ্‌àŠŸà§‹àŠ• WAP àŠŹàŠŸà§°à§àŠ€àŠŸàŠŹà§‹à§° àŠȘàŠŸàŠŹàŠČৈ àŠ†à§°à§ àŠȘà§à§°àŠ•à§à§°àŠżàŠŻàŠŒàŠŸ àŠžàŠźà§àŠȘàŠšà§àŠš àŠ•à§°àŠżàŠŹàŠČৈ àŠ…àŠšà§àŠźàŠ€àŠż àŠŠàŠżàŠŻàŠŒà§‡à§· àŠàŠ‡ àŠ…àŠšà§àŠźàŠ€àŠżàŠ€ àŠ†àŠȘà§‹àŠšàŠŸàŠČৈ àŠȘàŠ àŠżàŠ“à§±àŠŸ àŠŹàŠŸà§°à§àŠ€àŠŸàŠŹà§‹à§° àŠ†àŠȘà§‹àŠšàŠŸàŠ• àŠšà§‡àŠŠà§‡àŠ–à§à§±àŠŸàŠ•à§ˆàŠŻàŠŒà§‡ àŠšàŠżà§°à§€àŠ•à§àŠ·àŠŁ àŠŹàŠŸ àŠźàŠšàŠŸà§° àŠžàŠ•à§àŠ·àŠźàŠ€àŠŸ àŠ…àŠšà§àŠ€à§°à§àŠ­à§àŠ•à§àŠ€ àŠ„àŠŸàŠ•à§‡à§·"</string>
-    <string name="permlab_getTasks" msgid="7460048811831750262">"àŠšàŠČàŠż àŠ„àŠ•àŠŸ àŠàŠȘ্‌àŠžàŠźà§‚àŠč àŠŹàŠżàŠšàŠŸà§°àŠż àŠ‰àŠČàŠżàŠŻàŠŒàŠŸàŠ“àŠ•"</string>
+    <string name="permlab_getTasks" msgid="7460048811831750262">"àŠšàŠČàŠż àŠ„àŠ•àŠŸ àŠàŠȘàŠžàŠźà§‚àŠč àŠŹàŠżàŠšàŠŸà§°àŠż àŠ‰àŠČàŠżàŠŻàŠŒàŠŸàŠ“àŠ•"</string>
     <string name="permdesc_getTasks" msgid="7388138607018233726">"àŠàŠȘ্‌àŠŸà§‹àŠ• àŠŹà§°à§àŠ€àŠźàŠŸàŠšà§‡ àŠ†à§°à§ àŠ¶à§‡àŠčàŠ€à§€àŠŻàŠŒàŠŸàŠ­àŠŸà§±à§‡ àŠšàŠČàŠż àŠ„àŠ•àŠŸ àŠ•àŠŸà§°à§àŠŻàŠžàŠźà§‚àŠčà§° àŠŹàŠżàŠ·àŠŻàŠŒà§‡ àŠ€àŠ„à§àŠŻ àŠȘà§àŠšà§°à§àŠŠà§àŠ§àŠŸà§° àŠ•à§°àŠżàŠŹàŠČৈ àŠ…àŠšà§àŠźàŠ€àŠż àŠŠàŠżàŠŻàŠŒà§‡à§· àŠàŠ‡àŠŸà§‹à§±à§‡ àŠàŠȘ্‌àŠŸà§‹àŠ• àŠĄàŠżàŠ­àŠŸàŠ‡àŠšàŠŸà§‹àŠ€ àŠ•à§‹àŠšàŠŹà§‹à§° àŠàŠȘ্àŠČàŠżàŠ•à§‡àŠ¶à§àŠŹàŠš àŠŹà§àŠŻà§±àŠčàŠŸà§° àŠčৈ àŠ†àŠ›à§‡ àŠ€àŠŸà§° àŠŹàŠżàŠ·àŠŻàŠŒà§‡ àŠ€àŠ„à§àŠŻ àŠŹàŠżàŠšàŠŸà§°àŠż àŠ‰àŠČàŠżàŠŻàŠŒàŠŸàŠŹàŠČৈ àŠ…àŠšà§àŠźàŠ€àŠż àŠŠàŠżàŠŹ àŠȘàŠŸà§°à§‡à§·"</string>
     <string name="permlab_manageProfileAndDeviceOwners" msgid="639849495253987493">"àŠȘ্ৰ\'àŠ«àŠŸàŠ‡àŠČ àŠ†à§°à§ àŠĄàŠżàŠ­àŠŸàŠ‡àŠšà§° àŠ—à§°àŠŸàŠ•à§€àŠžàŠ•àŠČàŠ• àŠȘà§°àŠżàŠšàŠŸàŠČàŠšàŠŸ àŠ•à§°àŠżàŠŹ àŠȘàŠŸà§°à§‡"</string>
     <string name="permdesc_manageProfileAndDeviceOwners" msgid="7304240671781989283">"àŠȘ্ৰ\'àŠ«àŠŸàŠ‡àŠČà§° àŠ—à§°àŠŸàŠ•à§€ àŠ†à§°à§ àŠĄàŠżàŠ­àŠŸàŠ‡àŠšà§° àŠ—à§°àŠŸàŠ•à§€ àŠ›à§‡àŠŸ àŠ•à§°àŠżàŠŹàŠČৈ àŠàŠȘ্‌àŠŸà§‹àŠ• àŠ…àŠšà§àŠźàŠ€àŠż àŠŠàŠżàŠŻàŠŒà§‡à„€"</string>
@@ -387,8 +387,8 @@
     <string name="permdesc_reorderTasks" msgid="8796089937352344183">"àŠ—àŠ€àŠżàŠŹàŠżàŠ§àŠżàŠ• àŠ…àŠ—à§à§°àŠ­àŠŸàŠ— àŠ†à§°à§ àŠšà§‡àŠȘàŠ„à§àŠŻàŠČৈ àŠšàŠżàŠŹàŠČৈ àŠàŠȘàŠ• àŠ…àŠšà§àŠźàŠ€àŠż àŠŠàŠżàŠŻàŠŒà§‡à„€ àŠàŠȘে àŠàŠ‡ àŠ•àŠŸàŠ°à§àŠŻ àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ‡àŠšàŠȘà§àŠŸ àŠ…àŠŹàŠżàŠčàŠšà§‡àŠ‡ àŠ•à§°àŠżàŠŹ àŠȘàŠŸà§°à§‡à„€"</string>
     <string name="permlab_enableCarMode" msgid="893019409519325311">"àŠ—àŠŸàŠĄàŠŒà§€à§° àŠź\'àŠĄ àŠžàŠ•à§àŠ·àŠź àŠ•à§°àŠ•"</string>
     <string name="permdesc_enableCarMode" msgid="56419168820473508">"àŠ—àŠŸàŠĄàŠŒà§€ àŠź\'àŠĄ àŠžàŠ•à§àŠ·àŠź àŠ•à§°àŠżàŠŹàŠČৈ àŠàŠȘ্‌àŠŸà§‹àŠ• àŠ…àŠšà§àŠźàŠ€àŠż àŠŠàŠżàŠŻàŠŒà§‡à§·"</string>
-    <string name="permlab_killBackgroundProcesses" msgid="6559320515561928348">"àŠ…àŠšà§àŠŻ àŠàŠȘ্‌àŠŹà§‹à§° àŠŹàŠšà§àŠ§ àŠ•à§°àŠ•"</string>
-    <string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"àŠàŠȘ্‌àŠŸà§‹àŠ• àŠ…àŠšà§àŠŻ àŠàŠȘ্‌àŠžàŠźà§‚àŠčà§° àŠšà§‡àŠȘàŠ„à§àŠŻà§° àŠȘà§à§°àŠ•à§à§°àŠżàŠŻàŠŒàŠŸàŠžàŠźà§‚àŠč àŠ¶à§‡àŠ· àŠ•à§°àŠżàŠŹàŠČৈ àŠ…àŠšà§àŠźàŠ€àŠż àŠŠàŠżàŠŻàŠŒà§‡à§· àŠàŠ‡ àŠ•àŠŸàŠ°à§àŠŻà§° àŠŹàŠŸàŠŹà§‡ àŠ…àŠšà§àŠŻ àŠàŠȘ্‌àŠžàŠźà§‚àŠč àŠšàŠČàŠŸàŠŸà§‹ àŠŹàŠšà§àŠ§ àŠč\'àŠŹ àŠȘàŠŸà§°à§‡à§·"</string>
+    <string name="permlab_killBackgroundProcesses" msgid="6559320515561928348">"àŠ…àŠšà§àŠŻ àŠàŠȘàŠŹà§‹à§° àŠŹàŠšà§àŠ§ àŠ•à§°àŠ•"</string>
+    <string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"àŠàŠȘ্‌àŠŸà§‹àŠ• àŠ…àŠšà§àŠŻ àŠàŠȘàŠžàŠźà§‚àŠčà§° àŠšà§‡àŠȘàŠ„à§àŠŻà§° àŠȘà§à§°àŠ•à§à§°àŠżàŠŻàŠŒàŠŸàŠžàŠźà§‚àŠč àŠ¶à§‡àŠ· àŠ•à§°àŠżàŠŹàŠČৈ àŠ…àŠšà§àŠźàŠ€àŠż àŠŠàŠżàŠŻàŠŒà§‡à§· àŠàŠ‡ àŠ•àŠŸàŠ°à§àŠŻà§° àŠŹàŠŸàŠŹà§‡ àŠ…àŠšà§àŠŻ àŠàŠȘàŠžàŠźà§‚àŠč àŠšàŠČàŠŸàŠŸà§‹ àŠŹàŠšà§àŠ§ àŠč\'àŠŹ àŠȘàŠŸà§°à§‡à§·"</string>
     <string name="permlab_systemAlertWindow" msgid="5757218350944719065">"àŠàŠ‡ àŠàŠȘ্‌àŠŸà§‹ àŠ…àŠ‡àŠš àŠàŠȘà§° àŠ“àŠȘà§°àŠ€ àŠȘà§à§°àŠŠà§°à§àŠ¶àŠżàŠ€ àŠč\'àŠŹ àŠȘàŠŸà§°à§‡"</string>
     <string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"àŠàŠ‡ àŠàŠȘ্‌àŠŸà§‹ àŠ…àŠšà§àŠŻ àŠàŠȘà§° àŠ“àŠȘà§°àŠ€ àŠŹàŠŸ àŠžà§àŠ•à§à§°à§€àŠšà§° àŠ…àŠšà§àŠŻ àŠ…àŠ‚àŠ¶àŠ€ àŠȘà§à§°àŠŠà§°à§àŠ¶àŠżàŠ€ àŠč\'àŠŹ àŠȘàŠŸà§°à§‡à„€ àŠàŠ‡ àŠ•àŠŸà§°à§àŠŻàŠ‡ àŠàŠȘà§° àŠžà§àŠŹàŠŸàŠ­àŠŸà§±àŠżàŠ• àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ€ àŠŹà§àŠŻàŠŸàŠ˜àŠŸàŠ€ àŠœàŠšà§àŠźàŠŸàŠŹ àŠȘàŠŸà§°à§‡ àŠ†à§°à§ àŠ…àŠšà§àŠŻ àŠàŠȘ্‌àŠžàŠźà§‚àŠčàŠ• àŠžà§àŠ•à§à§°à§€àŠšàŠ€ àŠ•à§‡àŠšà§‡àŠ•à§ˆ àŠŠà§‡àŠ–àŠŸ àŠȘà§‹à§±àŠŸ àŠŻàŠŸàŠŻàŠŒ àŠžà§‡àŠ‡àŠŸà§‹ àŠžàŠČàŠšàŠż àŠ•à§°àŠżàŠŹ àŠȘàŠŸà§°à§‡à„€"</string>
     <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"àŠ…àŠšà§àŠŻ àŠàŠȘà§° àŠ…’àŠ­àŠŸà§°àŠČে’ àŠČà§àŠ•à§à§±àŠŸàŠ“àŠ•"</string>
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"àŠźà§àŠ–àŠźàŠŁà§àŠĄàŠČà§° àŠȘà§à§°àŠ•à§à§°àŠżàŠŻàŠŒàŠŸ àŠŹàŠŸàŠ€àŠżàŠČ àŠ•à§°àŠŸ àŠč’àŠČà„€"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€àŠŻàŠŒà§‡ àŠ«à§‡àŠš àŠ†àŠšàŠČàŠ• àŠŹàŠŸàŠ€àŠżàŠČ àŠ•à§°àŠżàŠ›à§‡"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"àŠ…àŠ€à§àŠŻàŠ§àŠżàŠ• àŠ­à§àŠČ àŠȘà§à§°àŠŻàŠŒàŠŸàŠžà„€ àŠ•àŠżàŠ›à§àŠžàŠźàŠŻàŠŒà§° àŠȘàŠŸàŠ›àŠ€ àŠ†àŠ•à§Œ àŠšà§‡àŠ·à§àŠŸàŠŸ àŠ•à§°àŠ•à„€"</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"àŠ…àŠ€àŠż àŠŹà§‡àŠ›àŠżàŠžàŠ‚àŠ–à§àŠŻàŠ• àŠȘà§à§°àŠŻàŠŒàŠŸàŠžà„€ àŠ«à§‡àŠš àŠ†àŠšàŠČàŠ• àŠžà§àŠŹàŠżàŠ§àŠŸàŠŸà§‹ àŠ…àŠ•à§àŠ·àŠź àŠ•à§°àŠŸ àŠčà§ˆàŠ›à§‡à„€"</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"àŠ…àŠ€àŠż àŠŹà§‡àŠ›àŠżàŠžàŠ‚àŠ–à§àŠŻàŠ• àŠȘà§à§°àŠŻàŠŒàŠŸàŠžà„€ àŠ‡àŠŻàŠŒàŠŸà§° àŠžàŠČàŠšàŠż àŠžà§àŠ•à§à§°à§€àŠš àŠČàŠ• àŠŠàŠżàŠŻàŠŒàŠ•à„€"</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"àŠźà§àŠ–àŠźàŠŁà§àŠĄàŠČ àŠžàŠ€à§àŠŻàŠŸàŠȘàŠš àŠ•à§°àŠżàŠŹ àŠȘà§°àŠŸ àŠšàŠ—’àŠČà„€ àŠ†àŠ•à§Œ àŠšà§‡àŠ·à§àŠŸàŠŸ àŠ•à§°àŠ•à„€"</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"àŠ«à§‡àŠš àŠ†àŠšàŠČàŠ• àŠžà§àŠŹàŠżàŠ§àŠŸàŠŸà§‹ àŠ›à§‡àŠŸ àŠ†àŠȘ àŠ•à§°àŠŸ àŠšàŠŸàŠ‡"</string>
@@ -1252,7 +1251,7 @@
     <string name="android_upgrading_notification_title" product="default" msgid="3509927005342279257">"àŠ›àŠżàŠ·à§àŠŸà§‡àŠź àŠ†àŠȘàŠĄà§‡’àŠŸ àŠžàŠźà§àŠȘà§‚à§°à§àŠŁ àŠ•à§°àŠŸ àŠčà§ˆàŠ›à§‡…"</string>
     <string name="app_upgrading_toast" msgid="1016267296049455585">"<xliff:g id="APPLICATION">%1$s</xliff:g>àŠ• àŠ†àŠȘàŠ—à§à§°à§‡àŠĄ àŠ•à§°àŠż àŠ„àŠ•àŠŸ àŠčà§ˆàŠ›à§‡…"</string>
     <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g>àŠžàŠŸàŠœà§ àŠ•à§°àŠż àŠ„àŠ•àŠŸ àŠčà§ˆàŠ›à§‡à„€"</string>
-    <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"àŠ†à§°àŠźà§àŠ­ àŠčৈ àŠ„àŠ•àŠŸ àŠàŠȘ্‌àŠžàŠźà§‚àŠčà„€"</string>
+    <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"àŠ†à§°àŠźà§àŠ­ àŠčৈ àŠ„àŠ•àŠŸ àŠàŠȘàŠžàŠźà§‚àŠčà„€"</string>
     <string name="android_upgrading_complete" msgid="409800058018374746">"àŠŹà§àŠŸ àŠ•àŠŸà§°à§àŠŻ àŠžàŠźàŠŸàŠȘà§àŠ€ àŠ•à§°àŠżàŠ›à§‡à„€"</string>
     <string name="fp_power_button_enrollment_message" msgid="5648173517663246140">"àŠ†àŠȘà§àŠšàŠż àŠȘàŠŸà§±àŠŸà§° àŠŹà§àŠŸàŠŸàŠźàŠŸà§‹ àŠŸàŠżàŠȘàŠżàŠ›à§‡ — àŠàŠ‡àŠŸà§‹à§±à§‡ àŠžàŠŸàŠ§àŠŸà§°àŠŁàŠ€à§‡ àŠžà§àŠ•à§à§°à§€àŠšàŠ–àŠš àŠ…àŠ« àŠ•à§°à§‡à„€\n\nàŠ†àŠȘà§‹àŠšàŠŸà§° àŠ«àŠżàŠ‚àŠ—àŠŸà§°àŠȘà§à§°àŠżàŠŁà§àŠŸàŠŸà§‹ àŠ›à§‡àŠŸ àŠ†àŠȘ àŠ•à§°àŠŸà§° àŠžàŠźàŠŻàŠŒàŠ€ àŠČàŠŸàŠčà§‡àŠ•à§ˆ àŠŸàŠżàŠȘàŠż àŠšàŠŸàŠ“àŠ•à„€"</string>
     <string name="fp_power_button_enrollment_title" msgid="6976841690455338563">"àŠ›à§‡àŠŸàŠ†àŠȘ àŠžàŠźàŠŸàŠȘà§àŠ€ àŠ•à§°àŠżàŠŹàŠČৈ àŠžà§àŠ•à§à§°à§€àŠš àŠ…àŠ« àŠ•à§°àŠ•"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"àŠ…àŠš àŠ•à§°àŠżàŠŹàŠČৈ àŠŸàŠżàŠȘàŠ•"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"àŠ•à§‹àŠšà§‹ àŠ•à§°à§àŠźàŠžà§àŠ„àŠŸàŠšà§° àŠàŠȘ্‌ àŠšàŠŸàŠ‡"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"àŠ•à§‹àŠšà§‹ àŠŹà§àŠŻàŠ•à§àŠ€àŠżàŠ—àŠ€ àŠàŠȘ্‌ àŠšàŠŸàŠ‡"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"àŠ†àŠȘà§‹àŠšàŠŸà§° àŠŹà§àŠŻàŠ•à§àŠ€àŠżàŠ—àŠ€ àŠȘ্ৰ’àŠ«àŠŸàŠ‡àŠČàŠ€ <xliff:g id="APP">%s</xliff:g> àŠ–à§àŠČàŠżàŠŹàŠšà§‡?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ•àŠ°à§àŠźàŠžà§àŠ„àŠŸàŠšà§° àŠȘ্ৰ\'àŠ«àŠŸàŠ‡àŠČàŠ€ <xliff:g id="APP">%s</xliff:g> àŠ–à§àŠČàŠżàŠŹàŠšà§‡?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"àŠŹà§àŠŻàŠ•à§àŠ€àŠżàŠ—àŠ€ àŠŹà§à§°àŠŸàŠ‰àŠœàŠŸà§° àŠŹà§àŠŻà§±àŠčàŠŸà§° àŠ•à§°àŠ•"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"àŠ•à§°à§àŠźàŠžà§àŠ„àŠŸàŠšà§° àŠŹà§à§°àŠŸàŠ‰àŠœàŠŸà§° àŠŹà§àŠŻà§±àŠčàŠŸà§° àŠ•à§°àŠ•"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"àŠ›àŠżàŠź àŠšà§‡àŠŸà§±à§°à§àŠ• àŠ†àŠšàŠČàŠ• àŠ•à§°àŠŸ àŠȘàŠżàŠš"</string>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index c9876b0..5485abd 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Üz əməliyyatı ləğv edildi."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"İstifadəçi üz ilə kiliddən çıxarmanı ləğv edib"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Həddindən çox cəhd. Sonraya saxlayın."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Həddindən çox cəhd. Üz ilə kiliddən çıxarma deaktiv edildi."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Həddindən çox cəhd. Əvəzində ekran kilidi daxil edin."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Üz doğrulanmadı. Yenidən cəhd edin."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Üz ilə kiliddən çıxarma ayarlamamısınız"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Aktiv etmək üçün toxunun"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"İƟ tətbiqi yoxdur"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"ƞəxsi tətbiq yoxdur"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"ƞəxsi profilinizdə <xliff:g id="APP">%s</xliff:g> tətbiqi açılsın?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"İß profilinizdə <xliff:g id="APP">%s</xliff:g> tətbiqi açılsın?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"ƞəxsi brauzerdən istifadə edin"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"İƟ brauzerindən istifadə edin"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM Ɵəbəkəsi kilidaçma PİN\'i"</string>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 4d8bc70..e0c39d3 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -710,8 +710,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Obrada lica je otkazana."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Korisnik je otkazao otključavanje licem"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Previše pokušaja. Probajte ponovo kasnije."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Previše pokušaja. Otključavanje licem je onemogućeno."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Previše pokušaja. Koristite zaključavanje ekrana za to."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Provera lica nije uspela. Probajte ponovo."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Niste podesili otključavanje licem"</string>
@@ -2164,10 +2163,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Dodirnite da biste uključili"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Nema poslovnih aplikacija"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Nema ličnih aplikacija"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Ćœelite da na ličnom profilu otvorite: <xliff:g id="APP">%s</xliff:g>?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Ćœelite da na poslovnom profilu otvorite: <xliff:g id="APP">%s</xliff:g>?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Koristi lični pregledač"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Koristi poslovni pregledač"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN za otključavanje SIM mreĆŸe"</string>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 2925fe6..e38bd9d 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -711,8 +711,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Đ Đ°ŃĐżĐ°Đ·ĐœĐ°ĐČĐ°ĐœĐœĐ” тĐČару сĐșасаĐČĐ°ĐœĐ°."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Đ Đ°ŃĐżĐ°Đ·ĐœĐ°ĐČĐ°ĐœĐœĐ” тĐČару сĐșасаĐČĐ°ĐœĐ° ĐșĐ°Ń€Ń‹ŃŃ‚Đ°Đ»ŃŒĐœŃ–ĐșĐ°ĐŒ"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Đ—Đ°ĐœĐ°ĐŽŃ‚Đ° ŃˆĐŒĐ°Ń‚ ŃĐżŃ€ĐŸĐ±. ĐŸĐ°ŃžŃ‚Đ°Ń€Ń‹Ń†Đ” ŃĐżŃ€ĐŸĐ±Ńƒ ĐżĐ°Đ·ĐœĐ”Đč."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Đ—Đ°ĐœĐ°ĐŽŃ‚Đ° ŃˆĐŒĐ°Ń‚ ŃĐżŃ€ĐŸĐ±. Đ Đ°ŃĐżĐ°Đ·ĐœĐ°ĐČĐ°ĐœĐœĐ” тĐČару ĐČыĐșĐ»ŃŽŃ‡Đ°ĐœĐ°."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Đ—Đ°ĐœĐ°ĐŽŃ‚Đ° ŃˆĐŒĐ°Ń‚ ŃĐżŃ€ĐŸĐ±. РазблаĐșіруĐčцД эĐșŃ€Đ°Đœ Ń–ĐœŃˆŃ‹ĐŒ ŃĐżĐŸŃĐ°Đ±Đ°ĐŒ."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"ĐĐ” ŃžĐŽĐ°Đ»ĐŸŃŃ ŃĐżŃ€Đ°ŃžĐŽĐ·Ń–Ń†ŃŒ тĐČар. ĐŸĐ°ŃžŃ‚Đ°Ń€Ń‹Ń†Đ” ŃĐżŃ€ĐŸĐ±Ńƒ."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Вы ĐœĐ” ĐœĐ°Đ»Đ°ĐŽĐ·Ń–Đ»Ń– Ń€Đ°ŃĐżĐ°Đ·ĐœĐ°ĐČĐ°ĐœĐœĐ” тĐČару"</string>
@@ -2165,10 +2164,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ĐĐ°Ń†Ń–ŃĐœŃ–Ń†Đ”, Đșаб уĐșĐ»ŃŽŃ‡Ń‹Ń†ŃŒ"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"ĐŃĐŒĐ° ĐżŃ€Đ°Ń†ĐŸŃžĐœŃ‹Ń… ĐżŃ€Đ°ĐłŃ€Đ°ĐŒ"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"ĐŃĐŒĐ° асабістых ĐżŃ€Đ°ĐłŃ€Đ°ĐŒ"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"АЎĐșрыць ĐżŃ€Đ°ĐłŃ€Đ°ĐŒŃƒ \"<xliff:g id="APP">%s</xliff:g>\" Đ· ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ”ĐŒ асабістага ĐżŃ€ĐŸŃ„Ń–Đ»ŃŽ?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"АЎĐșрыць ĐżŃ€Đ°ĐłŃ€Đ°ĐŒŃƒ \"<xliff:g id="APP">%s</xliff:g>\" Đ· ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ”ĐŒ ĐżŃ€Đ°Ń†ĐŸŃžĐœĐ°ĐłĐ° ĐżŃ€ĐŸŃ„Ń–Đ»ŃŽ?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"ĐĄĐșарыстаць асабісты браўзДр"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"ĐĄĐșарыстаць ĐżŃ€Đ°Ń†ĐŸŃžĐœŃ‹ браўзДр"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN-ĐșĐŸĐŽ разблаĐșŃ–Ń€ĐŸŃžĐșі сДтĐșі ĐŽĐ»Ń SIM-Đșарты"</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 35efb0a..a1877cc 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"ĐžĐżĐ”Ń€Đ°Ń†ĐžŃŃ‚Đ° с лОцД Đ” Đ°ĐœŃƒĐ»ĐžŃ€Đ°ĐœĐ°."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"ОтĐșлючĐČĐ°ĐœĐ”Ń‚ĐŸ с лОцД Đ” Đ°ĐœŃƒĐ»ĐžŃ€Đ°ĐœĐŸ ĐŸŃ‚ ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»Ń"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"ĐąĐČърЎД ĐŒĐœĐŸĐłĐŸ ĐŸĐżĐžŃ‚Đž. ОпотаĐčтД ĐŸŃ‚ĐœĐŸĐČĐŸ ĐżĐŸ-ĐșŃŠŃĐœĐŸ."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"ĐąĐČърЎД ĐŒĐœĐŸĐłĐŸ ĐŸĐżĐžŃ‚Đž. ОтĐșлючĐČĐ°ĐœĐ”Ń‚ĐŸ с лОцД Đ” ЎДаĐșтоĐČĐžŃ€Đ°ĐœĐŸ."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"ĐąĐČърЎД ĐŒĐœĐŸĐłĐŸ ĐŸĐżĐžŃ‚Đž. Đ˜Đ·ĐżĐŸĐ»Đ·ĐČаĐčтД ĐŸĐżŃ†ĐžŃŃ‚Đ° за заĐșлючĐČĐ°ĐœĐ” ĐœĐ° Đ”ĐșŃ€Đ°ĐœĐ°."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Đ›ĐžŃ†Đ”Ń‚ĐŸ ĐœĐ” ĐŒĐŸĐ¶Đ” Ўа сД ĐżĐŸŃ‚ĐČърЮо. ОпотаĐčтД ĐŸŃ‚ĐœĐŸĐČĐŸ."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"ĐĐ” стД ĐœĐ°ŃŃ‚Ń€ĐŸĐžĐ»Đž ĐŸŃ‚ĐșлючĐČĐ°ĐœĐ”Ń‚ĐŸ с лОцД"</string>
@@ -1715,7 +1714,7 @@
     <string name="color_inversion_feature_name" msgid="2672824491933264951">"Đ˜ĐœĐČĐ”Ń€Ń‚ĐžŃ€Đ°ĐœĐ” ĐœĐ° цĐČĐ”Ń‚ĐŸĐČДтД"</string>
     <string name="color_correction_feature_name" msgid="7975133554160979214">"ĐšĐŸŃ€Đ”Đșцоя ĐœĐ° цĐČĐ”Ń‚ĐŸĐČĐ”"</string>
     <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Đ Đ°Đ±ĐŸŃ‚Đ° с Đ”ĐŽĐœĐ° ръĐșа"</string>
-    <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Đ”ĐŸĐżŃŠĐ»ĐœĐžŃ‚Đ”Đ»ĐœĐŸ Đ·Đ°Ń‚ŃŠĐŒĐœŃĐČĐ°ĐœĐ”"</string>
+    <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Đ”ĐŸĐż. Đ·Đ°Ń‚ŃŠĐŒĐœ."</string>
     <string name="hearing_aids_feature_name" msgid="1125892105105852542">"ĐĄĐ»ŃƒŃ…ĐŸĐČĐž апарато"</string>
     <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ЗаЎържахтД Đ±ŃƒŃ‚ĐŸĐœĐžŃ‚Đ” за сОлата ĐœĐ° Đ·ĐČуĐșа. ĐŁŃĐ»ŃƒĐłĐ°Ń‚Đ° <xliff:g id="SERVICE_NAME">%1$s</xliff:g> Đ” ĐČĐșĐ»ŃŽŃ‡Đ”ĐœĐ°."</string>
     <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ЗаЎържахтД Đ±ŃƒŃ‚ĐŸĐœĐžŃ‚Đ” за сОлата ĐœĐ° Đ·ĐČуĐșа. ĐŁŃĐ»ŃƒĐłĐ°Ń‚Đ° <xliff:g id="SERVICE_NAME">%1$s</xliff:g> Đ” ОзĐșĐ»ŃŽŃ‡Đ”ĐœĐ°."</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Đ”ĐŸĐșĐŸŃĐœĐ”Ń‚Đ” за ĐČĐșлючĐČĐ°ĐœĐ”"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"ĐŃĐŒĐ° ĐżĐŸĐŽŃ…ĐŸĐŽŃŃ‰Đž ŃĐ»ŃƒĐ¶Đ”Đ±ĐœĐž ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃ"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"ĐŃĐŒĐ° ĐżĐŸĐŽŃ…ĐŸĐŽŃŃ‰Đž Đ»ĐžŃ‡ĐœĐž ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃ"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"ИсĐșатД лО Ўа ĐŸŃ‚ĐČĐŸŃ€ĐžŃ‚Đ” <xliff:g id="APP">%s</xliff:g> ĐČ Đ»ĐžŃ‡ĐœĐžŃ сО ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»ŃĐșĐž ĐżŃ€ĐŸŃ„ĐžĐ»?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"ИсĐșатД лО Ўа ĐŸŃ‚ĐČĐŸŃ€ĐžŃ‚Đ” <xliff:g id="APP">%s</xliff:g> ĐČ ŃĐ»ŃƒĐ¶Đ”Đ±ĐœĐžŃ сО ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»ŃĐșĐž ĐżŃ€ĐŸŃ„ĐžĐ»?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Đ˜Đ·ĐżĐŸĐ»Đ·ĐČĐ°ĐœĐ” ĐœĐ° Đ»ĐžŃ‡ĐœĐžŃ Đ±Ń€Đ°ŃƒĐ·ŃŠŃ€"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Đ˜Đ·ĐżĐŸĐ»Đ·ĐČĐ°ĐœĐ” ĐœĐ° ŃĐ»ŃƒĐ¶Đ”Đ±ĐœĐžŃ Đ±Ń€Đ°ŃƒĐ·ŃŠŃ€"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"ПИН за ĐŸŃ‚ĐșлючĐČĐ°ĐœĐ” ĐœĐ° ĐŒŃ€Đ”Đ¶Đ°Ń‚Đ° за SIM"</string>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index 05d40bf..36fe792 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"àŠ«à§‡àŠž àŠ…àŠȘàŠŸàŠ°à§‡àŠ¶àŠš àŠŹàŠŸàŠ€àŠżàŠČ àŠ•àŠ°àŠŸ àŠčàŠŻàŠŒà§‡àŠ›à§‡à§·"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠ•àŠŸàŠ°à§€ \'àŠ«à§‡àŠž àŠ†àŠšàŠČàŠ•\' àŠŹàŠŸàŠ€àŠżàŠČ àŠ•àŠ°à§‡ àŠŠàŠżàŠŻàŠŒà§‡àŠ›à§‡àŠš"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"àŠ…àŠšà§‡àŠ•àŠŹàŠŸàŠ° àŠšà§‡àŠ·à§àŠŸàŠŸ àŠ•àŠ°àŠŸ àŠčàŠŻàŠŒà§‡àŠ›à§‡à„€ àŠȘàŠ°à§‡ àŠ†àŠŹàŠŸàŠ° àŠšà§‡àŠ·à§àŠŸàŠŸ àŠ•àŠ°à§àŠšà„€"</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"àŠ…àŠšà§‡àŠ•àŠŹàŠŸàŠ° àŠšà§‡àŠ·à§àŠŸàŠŸ àŠ•àŠ°à§‡àŠ›à§‡àŠšà„€ \'àŠ«à§‡àŠž àŠ†àŠšàŠČàŠ•\' àŠŹàŠšà§àŠ§ àŠ•àŠ°àŠŸ àŠčàŠŻàŠŒà§‡àŠ›à§‡à„€"</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"àŠ…àŠšà§‡àŠ•àŠŹàŠŸàŠ° àŠšà§‡àŠ·à§àŠŸàŠŸ àŠ•àŠ°à§‡àŠ›à§‡àŠšà„€ àŠàŠ° àŠȘàŠ°àŠżàŠŹàŠ°à§àŠ€à§‡ àŠžà§àŠ•à§àŠ°àŠżàŠš àŠČàŠ• àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ° àŠ•àŠ°à§àŠšà„€"</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"àŠ†àŠȘàŠšàŠŸàŠ° àŠźà§àŠ– àŠŻàŠŸàŠšàŠŸàŠ‡ àŠ•àŠ°àŠŸ àŠŻàŠŸàŠšà§àŠ›à§‡ àŠšàŠŸà„€ àŠ†àŠŹàŠŸàŠ° àŠšà§‡àŠ·à§àŠŸàŠŸ àŠ•àŠ°à§àŠšà„€"</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"àŠàŠ–àŠšàŠ“ \'àŠ«à§‡àŠž àŠ†àŠšàŠČàŠ•\' àŠžà§‡àŠŸ àŠ†àŠȘ àŠ•àŠ°à§‡àŠšàŠšàŠż"</string>
@@ -1715,7 +1714,7 @@
     <string name="color_inversion_feature_name" msgid="2672824491933264951">"àŠ•àŠŸàŠČàŠŸàŠ° àŠ‡àŠšàŠ­àŠŸàŠ°à§àŠžàŠš"</string>
     <string name="color_correction_feature_name" msgid="7975133554160979214">"àŠ°àŠ™ àŠžàŠ‚àŠ¶à§‹àŠ§àŠš àŠ•àŠ°àŠŸ"</string>
     <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"àŠàŠ• àŠčàŠŸàŠ€à§‡ àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ° àŠ•àŠ°àŠŸàŠ° àŠźà§‹àŠĄ"</string>
-    <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"àŠ…àŠ€àŠżàŠ°àŠżàŠ•à§àŠ€ àŠ•àŠź àŠŹà§àŠ°àŠŸàŠ‡àŠŸàŠšà§‡àŠž"</string>
+    <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"àŠ…àŠ€àŠżàŠ°àŠżàŠ•à§àŠ€ àŠ•àŠź àŠ†àŠČো"</string>
     <string name="hearing_aids_feature_name" msgid="1125892105105852542">"àŠčàŠżàŠŻàŠŒàŠŸàŠ°àŠżàŠ‚ àŠĄàŠżàŠ­àŠŸàŠ‡àŠž"</string>
     <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"àŠ­àŠČàŠżàŠ‰àŠź àŠ•à§€ àŠ§àŠ°à§‡ àŠ›àŠżàŠČà§‡àŠšà„€ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> àŠšàŠŸàŠČু àŠ•àŠ°àŠŸ àŠčàŠŻàŠŒà§‡àŠ›à§‡à„€"</string>
     <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"àŠ­àŠČàŠżàŠ‰àŠź àŠ•à§€ àŠ§àŠ°à§‡ àŠ›àŠżàŠČà§‡àŠšà„€ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> àŠŹàŠšà§àŠ§ àŠ•àŠ°àŠŸ àŠčàŠŻàŠŒà§‡àŠ›à§‡à„€"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"àŠšàŠŸàŠČু àŠ•àŠ°àŠ€à§‡ àŠŸà§àŠŻàŠŸàŠȘ àŠ•àŠ°à§àŠš"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"àŠàŠ° àŠœàŠšà§àŠŻ àŠ•à§‹àŠšàŠ“ àŠ…àŠ«àŠżàŠž àŠ…à§àŠŻàŠŸàŠȘ àŠšà§‡àŠ‡"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"àŠŹà§àŠŻàŠ•à§àŠ€àŠżàŠ—àŠ€ àŠ…à§àŠŻàŠŸàŠȘে àŠŠà§‡àŠ–àŠŸ àŠŻàŠŸàŠŹà§‡ àŠšàŠŸ"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"àŠ†àŠȘàŠšàŠŸàŠ° àŠŹà§àŠŻàŠ•à§àŠ€àŠżàŠ—àŠ€ àŠȘà§àŠ°à§‹àŠ«àŠŸàŠ‡àŠČ àŠ„à§‡àŠ•à§‡ <xliff:g id="APP">%s</xliff:g> àŠ–à§àŠČàŠŹà§‡àŠš?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"àŠ†àŠȘàŠšàŠŸàŠ° àŠ…àŠ«àŠżàŠž àŠȘà§àŠ°à§‹àŠ«àŠŸàŠ‡àŠČ àŠ„à§‡àŠ•à§‡ <xliff:g id="APP">%s</xliff:g> àŠ–à§àŠČàŠŹà§‡àŠš?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"àŠŹà§àŠŻàŠ•à§àŠ€àŠżàŠ—àŠ€ àŠŹà§àŠ°àŠŸàŠ‰àŠœàŠŸàŠ° àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ° àŠ•àŠ°à§àŠš"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"àŠ…àŠ«àŠżàŠž àŠŹà§àŠ°àŠŸàŠ‰àŠœàŠŸàŠ° àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ° àŠ•àŠ°à§àŠš"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"àŠžàŠżàŠź àŠšà§‡àŠŸàŠ“àŠŻàŠŒàŠŸàŠ°à§àŠ• àŠ†àŠšàŠČàŠ• àŠȘàŠżàŠš"</string>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index 6688938..4dec95f 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -710,8 +710,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Prepoznavanje lica je otkazano."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Korisnik je otkazao otključavanje licem"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Previše pokušaja. Pokušajte ponovo kasnije."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Previše pokušaja. Otključavanje licem je onemogućeno."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Previše pokušaja. Umjesto toga unesite zaključavanje ekrana."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Nije moguće potvrditi lice. Pokušajte ponovo."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Niste postavili otključavanje licem"</string>
@@ -1605,8 +1604,8 @@
     <string name="expires_on" msgid="1623640879705103121">"Ističe:"</string>
     <string name="serial_number" msgid="3479576915806623429">"Serijski broj:"</string>
     <string name="fingerprints" msgid="148690767172613723">"Otisci prstiju:"</string>
-    <string name="sha256_fingerprint" msgid="7103976380961964600">"Digitalni otisak SHA-256:"</string>
-    <string name="sha1_fingerprint" msgid="2339915142825390774">"Digitalni otisak SHA-1:"</string>
+    <string name="sha256_fingerprint" msgid="7103976380961964600">"SHA-256 otisak prsta:"</string>
+    <string name="sha1_fingerprint" msgid="2339915142825390774">"SHA-1 otisak prsta:"</string>
     <string name="activity_chooser_view_see_all" msgid="3917045206812726099">"PrikaĆŸi sve"</string>
     <string name="activity_chooser_view_dialog_title_default" msgid="8880731437191978314">"Odaberite aktivnost"</string>
     <string name="share_action_provider_share_with" msgid="1904096863622941880">"Podijeliti sa"</string>
@@ -1874,7 +1873,7 @@
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Uredu"</string>
     <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"Ušteda baterije uključuje tamnu temu i ograničava ili isključuje aktivnost u pozadini, određene vizuelne efekte i funkcije te neke mreĆŸne veze."</string>
     <string name="battery_saver_description" msgid="8518809702138617167">"Ušteda baterije uključuje tamnu temu i ograničava ili isključuje aktivnost u pozadini, određene vizuelne efekte i funkcije te neke mreĆŸne veze."</string>
-    <string name="data_saver_description" msgid="4995164271550590517">"Radi smanjenja prijenosa podataka, Ušteda podataka sprečava da neke aplikacije šalju ili primaju podatke u pozadini. Aplikacija koju trenutno koristite moĆŸe pristupati podacima, ali će to činiti rjeđe. Naprimjer, to moĆŸe značiti da se slike ne prikazuju dok ih ne dodirnete."</string>
+    <string name="data_saver_description" msgid="4995164271550590517">"Radi smanjenja prijenosa podataka, Ušteda podataka sprečava da neke aplikacije šalju ili primaju podatke u pozadini. Aplikacija koju trenutno koristite moĆŸe pristupiti podacima, ali će to činiti rjeđe. Naprimjer, to moĆŸe značiti da se slike ne prikazuju dok ih ne dodirnete."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Uključiti Uštedu podataka?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Uključi"</string>
     <string name="zen_mode_duration_minutes_summary" msgid="4555514757230849789">"{count,plural, =1{Traje jednu minutu (do {formattedTime})}one{Traje # min (do {formattedTime})}few{Traje # min (do {formattedTime})}other{Traje # min (do {formattedTime})}}"</string>
@@ -2164,10 +2163,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Dodirnite da uključite"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Nema poslovnih aplikacija"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Nema ličnih aplikacija"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Otvoriti aplikaciju <xliff:g id="APP">%s</xliff:g> na ličnom profilu?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Otvoriti aplikaciju <xliff:g id="APP">%s</xliff:g> na radnom profilu?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Koristi lični preglednik"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Koristi poslovni preglednik"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN za otključavanje mreĆŸe na SIM-u"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 11e052a..7414189 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -710,8 +710,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"S\'ha cancel·lat el reconeixement facial."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"L\'usuari ha cancel·lat Desbloqueig facial"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Massa intents. Torna-ho a provar més tard."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Massa intents. Desbloqueig facial s\'ha desactivat."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Massa intents. Introdueix el bloqueig de pantalla."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"No es pot verificar la cara. Torna-ho a provar."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"No has configurat Desbloqueig facial"</string>
@@ -1952,7 +1951,7 @@
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> no està disponible en aquests moments. Aquesta opció es gestiona a <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Més informació"</string>
     <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Reactiva l\'aplicació"</string>
-    <string name="work_mode_off_title" msgid="6367463960165135829">"Reactivar les apps de treball?"</string>
+    <string name="work_mode_off_title" msgid="6367463960165135829">"Reactives les apps de treball?"</string>
     <string name="work_mode_turn_on" msgid="5316648862401307800">"Reactiva"</string>
     <string name="work_mode_emergency_call_button" msgid="6818855962881612322">"Emergència"</string>
     <string name="app_blocked_title" msgid="7353262160455028160">"L\'aplicació no està disponible"</string>
@@ -2164,10 +2163,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Toca per activar"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Cap aplicació de treball"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Cap aplicació personal"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Vols obrir <xliff:g id="APP">%s</xliff:g> al teu perfil personal?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Vols obrir <xliff:g id="APP">%s</xliff:g> al teu perfil de treball?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Utilitza el navegador personal"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Utilitza el navegador de treball"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN de desbloqueig de la xarxa SIM"</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index d93efa2..0f4972f 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -686,7 +686,7 @@
     <string name="face_acquired_too_right" msgid="6245286514593540859">"Umístěte telefon víc doleva"</string>
     <string name="face_acquired_too_left" msgid="9201762240918405486">"Umístěte telefon víc doprava"</string>
     <string name="face_acquired_poor_gaze" msgid="4427153558773628020">"Dívejte se pƙímo na zaƙízení."</string>
-    <string name="face_acquired_not_detected" msgid="1057966913397548150">"Obličej není vidět. DrĆŸte telefon v úrovni očí."</string>
+    <string name="face_acquired_not_detected" msgid="1057966913397548150">"Obličej není vidět. DrĆŸte telefon na úrovni očí."</string>
     <string name="face_acquired_too_much_motion" msgid="8199691445085189528">"Pƙíliš mnoho pohybu. DrĆŸte telefon nehybně."</string>
     <string name="face_acquired_recalibrate" msgid="8724013080976469746">"Zaznamenejte obličej znovu."</string>
     <string name="face_acquired_too_different" msgid="2520389515612972889">"Obličej se nepodaƙilo rozpoznat. Zkuste to znovu."</string>
@@ -711,8 +711,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Operace snímání obličeje byla zrušena."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Odemknutí obličejem zrušeno uĆŸivatelem"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Pƙíliš mnoho pokusĆŻ. Zkuste to později."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Pƙíliš mnoho pokusĆŻ. Odemknutí obličejem bylo deaktivováno."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Pƙíliš mnoho pokusĆŻ. Zadejte zámek obrazovky."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Obličej se nepodaƙilo ověƙit. Zkuste to znovu."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Odemknutí obličejem nemáte nastavené."</string>
@@ -2165,10 +2164,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Klepnutím ho zapnete"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Ćœádné pracovní aplikace"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Ćœádné osobní aplikace"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Otevƙít aplikaci <xliff:g id="APP">%s</xliff:g> v osobním profilu?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Otevƙít aplikaci <xliff:g id="APP">%s</xliff:g> v pracovním profilu?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"PouĆŸít osobní prohlíĆŸeč"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"PouĆŸít pracovní prohlíĆŸeč"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Kód PIN odblokování sítě pro SIM kartu"</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 36c6ddc..61b9fe7 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -612,7 +612,7 @@
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Tillader, at appen kan læse lokationer fra din mediesamling."</string>
     <string name="biometric_app_setting_name" msgid="3339209978734534457">"Brug biometri"</string>
     <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Brug biometri eller skærmlås"</string>
-    <string name="biometric_dialog_default_title" msgid="55026799173208210">"Verificer, at det er dig"</string>
+    <string name="biometric_dialog_default_title" msgid="55026799173208210">"Bekræft, at det er dig"</string>
     <string name="biometric_dialog_default_subtitle" msgid="8457232339298571992">"Brug dine biometriske data for at fortsætte"</string>
     <string name="biometric_or_screen_lock_dialog_default_subtitle" msgid="159539678371552009">"Brug dine biometriske data eller din skærmlås for at fortsætte"</string>
     <string name="biometric_error_hw_unavailable" msgid="2494077380540615216">"Biometrisk hardware er ikke tilgængelig"</string>
@@ -703,14 +703,13 @@
     <string name="face_acquired_mouth_covering_detected_alt" msgid="1122294982850589766">"Ansigtsdækning er registreret. Dit ansigt skal være helt synligt."</string>
   <string-array name="face_acquired_vendor">
   </string-array>
-    <string name="face_error_hw_not_available" msgid="5085202213036026288">"Ansigt ikke verificeret. Hardware ikke tilgængelig."</string>
+    <string name="face_error_hw_not_available" msgid="5085202213036026288">"Ansigt ikke bekræftet. Hardware ikke tilgængelig."</string>
     <string name="face_error_timeout" msgid="2598544068593889762">"Prøv ansigtslås igen"</string>
     <string name="face_error_no_space" msgid="5649264057026021723">"Der kan ikke gemmes nye ansigtsdata. Slet et gammelt først."</string>
     <string name="face_error_canceled" msgid="2164434737103802131">"Ansigtshandlingen blev annulleret."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Ansigtslås blev annulleret af brugeren"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Du har prøvet for mange gange. Prøv igen senere."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Du har brugt for mange forsøg. Ansigtslås er deaktiveret."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Du har brugt for mange forsøg. Angiv skærmlåsen i stedet."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Ansigtet kan ikke genkendes. Prøv igen."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Du har ikke konfigureret ansigtslås."</string>
@@ -1258,7 +1257,7 @@
     <string name="fp_power_button_enrollment_title" msgid="6976841690455338563">"Sluk skærmen for at afslutte konfigurationen"</string>
     <string name="fp_power_button_enrollment_button_text" msgid="3199783266386029200">"Deaktiver"</string>
     <string name="fp_power_button_bp_title" msgid="5585506104526820067">"Vil du verificere dit fingeraftryk?"</string>
-    <string name="fp_power_button_bp_message" msgid="2983163038168903393">"Du har trykket på afbryderknappen, hvilket som regel slukker skærmen.\n\nPrøv at trykke let på knappen for at verificere dit fingeraftryk."</string>
+    <string name="fp_power_button_bp_message" msgid="2983163038168903393">"Du har trykket på afbryderknappen, hvilket som regel slukker skærmen.\n\nPrøv at trykke let på knappen for at bekræfte dit fingeraftryk."</string>
     <string name="fp_power_button_bp_positive_button" msgid="728945472408552251">"Sluk skærm"</string>
     <string name="fp_power_button_bp_negative_button" msgid="3971364246496775178">"Fortsæt"</string>
     <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> er i gang"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Tryk for at aktivere"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Der er ingen arbejdsapps"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Der er ingen personlige apps"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Vil du åbne <xliff:g id="APP">%s</xliff:g> på din personlige profil?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Vil du åbne <xliff:g id="APP">%s</xliff:g> på din arbejdsprofil?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Brug personlig browser"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Brug arbejdsbrowser"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Pinkode til oplåsning af SIM-netværket"</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index db97bc1..35f0a84 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Gesichtserkennung abgebrochen."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Entsperrung per Gesichtserkennung vom Nutzer abgebrochen"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Zu viele Versuche, bitte später noch einmal versuchen"</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Zu viele Versuche. Die Entsperrung per Gesichtserkennung wurde deaktiviert."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Zu viele Versuche. Verwende stattdessen die Displaysperre."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Gesichtsprüfung nicht möglich. Noch mal versuchen."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Entsperrung per Gesichtserkennung ist nicht eingerichtet"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Zum Aktivieren tippen"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Keine geschäftlichen Apps"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Keine privaten Apps"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"<xliff:g id="APP">%s</xliff:g> in deinem privaten Profil öffnen?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"<xliff:g id="APP">%s</xliff:g> in deinem Arbeitsprofil öffnen?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Privaten Browser verwenden"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Arbeitsbrowser verwenden"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Entsperr-PIN für netzgebundenes Gerät"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 96eacaa..da630ac 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -684,7 +684,7 @@
     <string name="face_acquired_too_right" msgid="6245286514593540859">"ΜετακινÎźστε το τηλέφωνο προς τα αριστερÎŹ"</string>
     <string name="face_acquired_too_left" msgid="9201762240918405486">"ΜετακινÎźστε το τηλέφωνο προς τα δεξιÎŹ"</string>
     <string name="face_acquired_poor_gaze" msgid="4427153558773628020">"ΚοιτÎŹξτε απευθεÎŻας τη συσκευÎź σας."</string>
-    <string name="face_acquired_not_detected" msgid="1057966913397548150">"ΚρατÎźστε το τηλέφωνο στο ύψος των ματιών σας."</string>
+    <string name="face_acquired_not_detected" msgid="1057966913397548150">"Δεν εντοπÎŻστηκε το πρόσωπό σας. ΚρατÎźστε το τηλέφωνο στο ύψος των ματιών."</string>
     <string name="face_acquired_too_much_motion" msgid="8199691445085189528">"ΠÎŹρα πολλÎź κÎŻνηση. ΚρατÎźστε σταθερό το τηλέφωνο."</string>
     <string name="face_acquired_recalibrate" msgid="8724013080976469746">"ΚαταχωρÎŻστε ξανÎŹ το πρόσωπό σας."</string>
     <string name="face_acquired_too_different" msgid="2520389515612972889">"Το πρόσωπο δεν αναγνωρÎŻζεται. ΔοκιμÎŹστε ξανÎŹ."</string>
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Η ενέργεια προσώπου ακυρώθηκε."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Το ΞεκλεÎŻδωμα με το πρόσωπο ακυρώθηκε από τον χρÎźστη"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"ΠÎŹρα πολλές προσπÎŹθειες. ΔοκιμÎŹστε ξανÎŹ αργότερα."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"ΠÎŹρα πολλές προσπÎŹθειες. Το ΞεκλεÎŻδωμα με το πρόσωπο απενεργοποιÎźθηκε."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"ΠÎŹρα πολλές προσπÎŹθειες. ΧρησιμοποιÎźστε εναλλακτικÎŹ το κλεÎŻδωμα οθόνης."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Αδύνατη επαλÎźθευση του προσώπου. ΕπανÎŹληψη."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Δεν έχετε ρυθμÎŻσει το ΞεκλεÎŻδωμα με το πρόσωπο"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ΠατÎźστε για ενεργοποÎŻηση"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Δεν υπÎŹρχουν εφαρμογές εργασιών"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Δεν υπÎŹρχουν προσωπικές εφαρμογές"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Θέλετε να ανοÎŻξετε την εφαρμογÎź <xliff:g id="APP">%s</xliff:g> στο προσωπικό σας προφÎŻλ;"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Θέλετε να ανοÎŻξετε την εφαρμογÎź <xliff:g id="APP">%s</xliff:g> στο προφÎŻλ σας εργασÎŻας;"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"ΧρÎźση προσωπικού προγρÎŹμματος περιÎźγησης"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"ΧρÎźση προγρÎŹμματος περιÎźγησης εργασÎŻας"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN ξεκλειδώματος δικτύου κÎŹρτας SIM"</string>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 623460b..4f0df05 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Face operation cancelled."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Face Unlock cancelled by user"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Too many attempts. Try again later."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Too many attempts. Face Unlock disabled."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Too many attempts. Enter screen lock instead."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Can’t verify face. Try again."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"You haven’t set up Face Unlock"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Tap to turn on"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"No work apps"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"No personal apps"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Open <xliff:g id="APP">%s</xliff:g> in your personal profile?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Open <xliff:g id="APP">%s</xliff:g> in your work profile?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Use personal browser"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Use work browser"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM network unlock PIN"</string>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index efe2c52..ba65c58 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Face operation canceled."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Face Unlock canceled by user"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Too many attempts. Try again later."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Too many attempts. Face Unlock disabled."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Too many attempts. Enter screen lock instead."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Can’t verify face. Try again."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"You haven’t set up Face Unlock"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Tap to turn on"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"No work apps"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"No personal apps"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Open <xliff:g id="APP">%s</xliff:g> in your personal profile?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Open <xliff:g id="APP">%s</xliff:g> in your work profile?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Use personal browser"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Use work browser"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM network unlock PIN"</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index ca28756..0db0376 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Face operation cancelled."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Face Unlock cancelled by user"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Too many attempts. Try again later."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Too many attempts. Face Unlock disabled."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Too many attempts. Enter screen lock instead."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Can’t verify face. Try again."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"You haven’t set up Face Unlock"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Tap to turn on"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"No work apps"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"No personal apps"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Open <xliff:g id="APP">%s</xliff:g> in your personal profile?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Open <xliff:g id="APP">%s</xliff:g> in your work profile?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Use personal browser"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Use work browser"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM network unlock PIN"</string>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index b20520f..54affd3 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Face operation cancelled."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Face Unlock cancelled by user"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Too many attempts. Try again later."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Too many attempts. Face Unlock disabled."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Too many attempts. Enter screen lock instead."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Can’t verify face. Try again."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"You haven’t set up Face Unlock"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Tap to turn on"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"No work apps"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"No personal apps"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Open <xliff:g id="APP">%s</xliff:g> in your personal profile?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Open <xliff:g id="APP">%s</xliff:g> in your work profile?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Use personal browser"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Use work browser"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM network unlock PIN"</string>
diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml
index 30ed170..8f45ae2 100644
--- a/core/res/res/values-en-rXC/strings.xml
+++ b/core/res/res/values-en-rXC/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‎‎‎‎‏‎‎‏‏‎‎‏‏‏‎‏‏‏‏‎‏‏‎‎‏‏‏‏‏‏‎‎‏‎‎‏‎‏‏‎‏‎‎‎‏‏‏‏‎‎‎‏‎‎‏‏‎Face operation canceled.‎‏‎‎‏‎"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‎‎‏‏‎‏‎‎‏‏‏‏‏‏‏‎‎‎‎‏‏‎‎‎‏‏‎‏‎‎‏‎‎‏‎‎‎‏‏‏‏‏‎‏‎‏‏‏‏‎‏‎‏‎Face Unlock canceled by user‎‏‎‎‏‎"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‏‏‎‎‎‏‎‎‎‏‏‎‏‏‏‏‎‎‎‎‏‏‎‏‎‎‏‎‎‏‏‏‎‏‎Too many attempts. Try again later.‎‏‎‎‏‎"</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‏‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‎‎‏‏‎‎‎‏‎‎‎‎‎‎‏‎‎‎‏‏‏‏‎‎‎Too many attempts. Face Unlock disabled.‎‏‎‎‏‎"</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‎‎‎‎‏‎‎‎‎‎‎‎‎‎‏‏‎‎‏‏‎‏‎‎‎‎‎‎‏‏‎‎‎‎‎‏‎‏‏‎‏‏‏‎‎‎‎‎‎‎‎‎‎‎‎Too many attempts. Enter screen lock instead.‎‏‎‎‏‎"</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‏‎‏‏‎‏‎‎‏‏‏‎‎‎‎‏‏‎‎‎‏‎‏‎‎‎‏‏‎‎‎‎‎‏‏‎‎‎‎‏‏‎‏‏‎‏‏‎‎‏‎‏‏‎‎Can’t verify face. Try again.‎‏‎‎‏‎"</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‏‏‎‏‎‏‎‎‎‎‎‏‎‏‎‎‎‎‏‏‎‏‎‎‏‎‎‎‎‎‏‏‎‏‏‏‎‎‎You haven’t set up Face Unlock‎‏‎‎‏‎"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‎‏‏‎‏‏‏‏‎‏‏‎‏‏‎‎‏‏‏‎‏‎‏‏‎‎‎‏‏‎‎‏‏‏‏‎‏‏‏‎‎‏‎‎‎‏‎‎‏‏‏‏‎‏‎‎‎Tap to turn on‎‏‎‎‏‎"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‏‏‎‎‎‏‎‏‏‏‏‎‎‎‏‎‏‎‎‎‎‏‎‎‎‏‎‏‎‏‏‎‎‏‏‏‏‏‎‎‏‏‎‏‎‎‎‎‏‎‏‏‎‏‏‎‎No work apps‎‏‎‎‏‎"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‎‏‏‏‎‎‎‎‎‏‏‏‎‏‎‎‎‏‎‏‎‎‎‏‏‎‏‎‎‏‏‏‎‏‎‎‏‏‏‎‏‏‎‏‏‎‎‏‎‎‎‎‎‎‏‎No personal apps‎‏‎‎‏‎"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‎‎‎‏‎‏‎‎‎‏‎‎‎‏‏‏‎‏‏‏‎‎‏‎‎‏‏‏‎‏‏‏‎‏‏‎‏‏‏‎‎‎‎‎‎‏‎‏‎‏‏‏‏‎‎Open ‎‏‎‎‏‏‎<xliff:g id="APP">%s</xliff:g>‎‏‎‎‏‏‏‎ in your personal profile?‎‏‎‎‏‎"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‎‏‎‎‎‏‏‎‎‎‎‎‎‏‏‎‏‎‏‎‎‏‎‏‏‏‎‎‎‎‎‏‏‎‎‎‎‏‏‎‎‏‏‏‏‎‏‏‎‎‏‎‏‏‏‏‎Open ‎‏‎‎‏‏‎<xliff:g id="APP">%s</xliff:g>‎‏‎‎‏‏‏‎ in your work profile?‎‏‎‎‏‎"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‏‏‎‎‎‏‎‏‎‎‏‎‏‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‏‎‎‏‏‎‏‎‏‏‎‎‎‏‎‏‎‎‎‏‏‏‏‏‎‎‎Use personal browser‎‏‎‎‏‎"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‏‏‎‎‎‏‎‏‏‎‎‏‎‏‎‏‎‏‏‎‏‏‏‎‎‎‏‏‎‏‏‎‏‏‏‎‏‎‎‏‎‎‏‏‎‎‎‏‏‎‏‏‎‎‎‏‎‎Use work browser‎‏‎‎‏‎"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‏‏‎‏‏‎‏‎‎‏‏‏‏‎‎‎‎‎‎‏‏‏‎‎‎‏‏‏‎‎‎‎‏‏‎‎‏‏‏‏‏‏‎‏‏‎SIM network unlock PIN‎‏‎‎‏‎"</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 55da602..f397168 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -710,8 +710,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Se canceló el reconocimiento facial."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"El usuario canceló Desbloqueo facial"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Demasiados intentos. Inténtalo de nuevo más tarde."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Demasiados intentos. Se inhabilitó Desbloqueo facial."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Demasiados intentos. En su lugar, utiliza el bloqueo de pantalla."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"No se pudo verificar el rostro. Vuelve a intentarlo."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"No configuraste Desbloqueo facial"</string>
@@ -2164,10 +2163,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Presionar para activar"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"El contenido no es compatible con apps de trabajo"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"El contenido no es compatible con apps personales"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"¿Quieres abrir <xliff:g id="APP">%s</xliff:g> en tu perfil personal?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"¿Quieres abrir <xliff:g id="APP">%s</xliff:g> en tu perfil de trabajo?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Usar un navegador personal"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Usar un navegador de trabajo"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN de desbloqueo del dispositivo para la red de tarjeta SIM"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 4b4b481..8bdfb98 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -572,7 +572,7 @@
     <string name="permdesc_changeWimaxState" product="tv" msgid="5373274458799425276">"Permite que la aplicación active y desactive la conexión entre tu dispositivo Android TV y las redes WiMAX."</string>
     <string name="permdesc_changeWimaxState" product="default" msgid="1551666203780202101">"Permite que la aplicación conecte el teléfono a redes WiMAX y lo desconecte de ellas."</string>
     <string name="permlab_bluetooth" msgid="586333280736937209">"emparejar con dispositivos Bluetooth"</string>
-    <string name="permdesc_bluetooth" product="tablet" msgid="3053222571491402635">"Permite que la aplicación acceda a la configuración de Bluetooth de la tablet y que establezca y acepte conexiones con los dispositivos sincronizados."</string>
+    <string name="permdesc_bluetooth" product="tablet" msgid="3053222571491402635">"Permite que la aplicación acceda a la configuración de Bluetooth del tablet y que establezca y acepte conexiones con los dispositivos sincronizados."</string>
     <string name="permdesc_bluetooth" product="tv" msgid="8851534496561034998">"Permite que la aplicación vea la configuración de Bluetooth de tu dispositivo Android TV y que cree y acepte conexiones con los dispositivos vinculados."</string>
     <string name="permdesc_bluetooth" product="default" msgid="2779606714091276746">"Permite que la aplicación acceda a la configuración de Bluetooth del teléfono y que establezca y acepte conexiones con los dispositivos sincronizados."</string>
     <string name="permlab_bluetooth_scan" msgid="5402587142833124594">"detectar y emparejar dispositivos Bluetooth cercanos"</string>
@@ -624,11 +624,11 @@
     <string name="biometric_error_generic" msgid="6784371929985434439">"No se ha podido autenticar"</string>
     <string name="screen_lock_app_setting_name" msgid="6054944352976789228">"Usar bloqueo de pantalla"</string>
     <string name="screen_lock_dialog_default_subtitle" msgid="120359538048533695">"Introduce tu bloqueo de pantalla para continuar"</string>
-    <string name="fingerprint_acquired_partial" msgid="4323789264604479684">"Pulsa firmemente el sensor"</string>
+    <string name="fingerprint_acquired_partial" msgid="4323789264604479684">"Mantén pulsado firmemente el sensor"</string>
     <string name="fingerprint_acquired_insufficient" msgid="623888149088216458">"No se puede reconocer la huella digital. Inténtalo de nuevo."</string>
     <string name="fingerprint_acquired_imager_dirty" msgid="1770676120848224250">"Limpia el sensor de huellas digitales e inténtalo de nuevo"</string>
     <string name="fingerprint_acquired_imager_dirty_alt" msgid="9169582140486372897">"Limpia el sensor e inténtalo de nuevo"</string>
-    <string name="fingerprint_acquired_too_fast" msgid="1628459767349116104">"Pulsa firmemente el sensor"</string>
+    <string name="fingerprint_acquired_too_fast" msgid="1628459767349116104">"Mantén pulsado firmemente el sensor"</string>
     <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Has movido el dedo demasiado despacio. Vuelve a intentarlo."</string>
     <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Prueba con otra huella digital"</string>
     <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Demasiada luz"</string>
@@ -710,8 +710,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Se ha cancelado el reconocimiento facial."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"El usuario ha cancelado Desbloqueo facial"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Demasiados intentos. Inténtalo de nuevo más tarde."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Demasiados intentos. Desbloqueo facial inhabilitado."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Demasiados intentos. Usa el bloqueo de pantalla."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"No se ha verificado tu cara. Vuelve a intentarlo."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"No has configurado Desbloqueo facial"</string>
@@ -2093,7 +2092,7 @@
     <string name="nas_upgrade_notification_enable_action" msgid="3046406808378726874">"Aceptar"</string>
     <string name="nas_upgrade_notification_disable_action" msgid="3794833210043497982">"Desactivar"</string>
     <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Más información"</string>
-    <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"Las notificaciones mejoradas sustituyeron las notificaciones adaptativas en Android 12. Esta función te muestra acciones y respuestas sugeridas, y organiza tus notificaciones.\n\nLas notificaciones mejoradas pueden acceder al contenido de tus notificaciones, incluida información personal, como nombres de contactos y mensajes. También permiten descartar o responder a notificaciones (por ejemplo, puedes contestar llamadas telefónicas) y controlar el modo No molestar."</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"Las notificaciones mejoradas sustituyeron las notificaciones adaptativas en Android 12. Esta función te muestra acciones y respuestas sugeridas, y organiza tus notificaciones.\n\nLas notificaciones mejoradas pueden acceder al contenido de tus notificaciones, incluida información personal, como nombres de contactos y mensajes. También permiten descartar o responder a notificaciones; por ejemplo, es posible contestar llamadas telefónicas y controlar el modo No molestar."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notificación sobre el modo rutina"</string>
     <string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Ahorro de batería activado"</string>
     <string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Reduciendo el uso de batería para prolongar su duración"</string>
@@ -2164,10 +2163,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Toca para activar"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Ninguna aplicación de trabajo"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Ninguna aplicación personal"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"¿Abrir <xliff:g id="APP">%s</xliff:g> en tu perfil personal?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"¿Abrir <xliff:g id="APP">%s</xliff:g> en tu perfil de trabajo?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Usar navegador personal"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Usar navegador de trabajo"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN de desbloqueo de red de tarjeta SIM"</string>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 528d42f4..2a4fe6b 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Näotuvastuse toiming tühistati."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Kasutaja tühistas näoga avamise"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Liiga palju katseid. Proovige hiljem uuesti."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Liiga palju katseid. Näoga avamine on keelatud."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Liiga palju katseid. Kasutage selle asemel ekraanilukku."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Nägu ei saa kinnitada. Proovige uuesti."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Näoga avamine ei ole seadistatud"</string>
@@ -2109,7 +2108,7 @@
     <string name="mime_type_audio_ext" msgid="2615491023840514797">"<xliff:g id="EXTENSION">%1$s</xliff:g>-helifail"</string>
     <string name="mime_type_video" msgid="7071965726609428150">"Video"</string>
     <string name="mime_type_video_ext" msgid="185438149044230136">"<xliff:g id="EXTENSION">%1$s</xliff:g>-videofail"</string>
-    <string name="mime_type_image" msgid="2134307276151645257">"Pilt"</string>
+    <string name="mime_type_image" msgid="2134307276151645257">"Kujutis"</string>
     <string name="mime_type_image_ext" msgid="5743552697560999471">"<xliff:g id="EXTENSION">%1$s</xliff:g>-kujutisefail"</string>
     <string name="mime_type_compressed" msgid="8737300936080662063">"Arhiiv"</string>
     <string name="mime_type_compressed_ext" msgid="4775627287994475737">"<xliff:g id="EXTENSION">%1$s</xliff:g>-arhiivifail"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Puudutage sisselülitamiseks"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Töörakendusi pole"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Isiklikke rakendusi pole"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Kas avada <xliff:g id="APP">%s</xliff:g> teie isiklikul profiilil?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Kas avada <xliff:g id="APP">%s</xliff:g> teie tööprofiilil?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Kasuta isiklikku brauserit"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Kasuta tööbrauserit"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM-kaardi võrgu avamise PIN-kood"</string>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index 20caa3c..20e6bf1 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Utzi da aurpegiaren bidezko eragiketa."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Erabiltzaileak aurpegi bidez desblokeatzeko aukera utzi du"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Saiakera gehiegi egin dituzu. Saiatu berriro geroago."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Saiakera gehiegi egin dira. Desgaitu egin da aurpegi bidez desblokeatzeko eginbidea."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Saiakera gehiegi egin dira. Horren ordez, erabili pantailaren blokeoa."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Ezin da egiaztatu aurpegia. Saiatu berriro."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Ez duzu konfiguratu aurpegi bidez desblokeatzeko eginbidea"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Sakatu aktibatzeko"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Ez dago laneko aplikaziorik"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Ez dago aplikazio pertsonalik"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Profil pertsonalean ireki nahi duzu <xliff:g id="APP">%s</xliff:g>?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Laneko profilean ireki nahi duzu <xliff:g id="APP">%s</xliff:g>?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Erabili arakatzaile pertsonala"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Erabili laneko arakatzailea"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIMaren sarearen bidez desblokeatzeko PINa"</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 519f89f..4ff4369 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"ŰčÙ…Ù„ÛŒŰ§ŰȘ ŰŽÙ†Ű§ŰłŰ§ÛŒÛŒ Ú†Ù‡Ű±Ù‡ لŰșو ŰŽŰŻ."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"کۧ۱ۚ۱ «Ù‚فل‌ÚŻŰŽŰ§ÛŒÛŒ ۚۧ Ú†Ù‡Ű±Ù‡» ۱ۧ لŰșو ک۱ۯ"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"ŰȘŰčۯۧۯ ŰČÛŒŰ§ŰŻÛŒ ŰȘÙ„Ű§ŰŽ Ù†Ű§Ù…ÙˆÙÙ‚. ŰšŰčŰŻŰ§Ù‹ ŰŻÙˆŰšŰ§Ű±Ù‡ Ű§Ù…ŰȘŰ­Ű§Ù† Ú©Ù†ÛŒŰŻ."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"ŰȘÙ„Ű§ŰŽ‌Ù‡Ű§ ŰšÛŒŰŽ ۧŰČ Ű­ŰŻÙ…ŰŹŰ§ŰČ ŰŽŰŻÙ‡ ۧ۳ŰȘ. «Ù‚فل‌ÚŻŰŽŰ§ÛŒÛŒ ۚۧ Ú†Ù‡Ű±Ù‡» ŰșÛŒŰ±ÙŰčŰ§Ù„ ۧ۳ŰȘ."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"ŰȘÙ„Ű§ŰŽ‌Ù‡Ű§ ŰšÛŒŰŽ ۧŰČ Ű­ŰŻÙ…ŰŹŰ§ŰČ ŰŽŰŻÙ‡ ۧ۳ŰȘ. ۯ۱ŰčÙˆŰ¶ قفل Ű”ÙŰ­Ù‡ ۱ۧ ÙˆŰ§Ű±ŰŻ Ú©Ù†ÛŒŰŻ."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Ú†Ù‡Ű±Ù‡ ŰȘŰŁÛŒÛŒŰŻ Ù†ŰŽŰŻ. ŰŻÙˆŰšŰ§Ű±Ù‡ Ű§Ù…ŰȘŰ­Ű§Ù† Ú©Ù†ÛŒŰŻ."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"«Ù‚فل‌ÚŻŰŽŰ§ÛŒÛŒ ۚۧ Ú†Ù‡Ű±Ù‡» ۱ۧ Ű±Ű§Ù‡‌Ű§Ù†ŰŻŰ§ŰČی Ù†Ú©Ű±ŰŻÙ‡‌Ű§ÛŒŰŻ"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ŰšŰ±Ű§ÛŒ Ű±ÙˆŰŽÙ† Ú©Ű±ŰŻÙ†ŰŒ Ű¶Ű±ŰšÙ‡ ŰšŰČÙ†ÛŒŰŻ"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"ŰšŰ±Ù†Ű§Ù…Ù‡ Ú©Ű§Ű±ÛŒ‌Ű§ÛŒ ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"ŰšŰ±Ù†Ű§Ù…Ù‡ ŰŽŰźŰ”ÛŒ‌Ű§ÛŒ ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"<xliff:g id="APP">%s</xliff:g> ۯ۱ Ù†Ù…Ű§ÛŒÙ‡ ŰŽŰźŰ”ÛŒ ۚۧŰČ ŰŽÙˆŰŻŰŸ"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"<xliff:g id="APP">%s</xliff:g> ۯ۱ Ù†Ù…Ű§ÛŒÙ‡ Ú©Ű§Ű±ÛŒ ۚۧŰČ ŰŽÙˆŰŻŰŸ"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"ۧ۳ŰȘÙŰ§ŰŻÙ‡ ۧŰČ Ù…Ű±ÙˆŰ±ÚŻŰ± ŰŽŰźŰ”ÛŒ"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"ۧ۳ŰȘÙŰ§ŰŻÙ‡ ۧŰČ Ù…Ű±ÙˆŰ±ÚŻŰ± Ú©Ű§Ű±ÛŒ"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"ٟین ۚۧŰČ Ú©Ű±ŰŻÙ† قفل ŰŽŰšÚ©Ù‡ ŰłÛŒÙ…‌کۧ۱ŰȘ"</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index e4227ce..d6a7005 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Kasvotoiminto peruutettu"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Käyttäjä perui kasvojentunnistusavauksen"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Liian monta yritystä. Yritä myöhemmin uudelleen."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Liian monta yritystä. Kasvojentunnistusavaus poistettu käytöstä."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Liian monta yritystä. Lisää sen sijaan näytön lukitus."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Kasvoja ei voi vahvistaa. Yritä uudelleen."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Et ole ottanut käyttöön kasvojentunnistusavausta"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Laita päälle napauttamalla"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Ei työsovelluksia"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Ei henkilökohtaisia sovelluksia"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Avataanko <xliff:g id="APP">%s</xliff:g> henkilökohtaisessa profiilissa?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Avataanko <xliff:g id="APP">%s</xliff:g> työprofiilissa?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Käytä henkilökohtaista selainta"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Käytä työselainta"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM-kortin verkkoversion lukituksen avaamisen PIN-koodi"</string>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index af769ab..5bbe49c 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -710,8 +710,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Opération de reconnaissance du visage annulée."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Le déverrouillage par reconnaissance faciale a été annulé"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Trop de tentatives. Veuillez réessayer plus tard."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Trop de tentatives. Le déverrouillage par reconnaissance faciale est désactivé."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Trop de tentatives. Entrez plutôt le verrouillage de l\'écran."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Impossible de vérifier le visage. Réessayez."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Déverrouillage par reconnaissance faciale non configuré"</string>
@@ -2164,10 +2163,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Touchez pour activer"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Aucune application professionnelle"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Aucune application personnelle"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Ouvrir <xliff:g id="APP">%s</xliff:g> dans votre profil personnel?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Ouvrir <xliff:g id="APP">%s</xliff:g> dans votre profil professionnel?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Utiliser le navigateur du profil personnel"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Utiliser le navigateur du profil professionnel"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"NIP de déverrouillage du réseau associé au module SIM"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index b2cef66..407f7ca 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -317,7 +317,7 @@
     <string name="permgroupdesc_microphone" msgid="1047786732792487722">"enregistrer des fichiers audio"</string>
     <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"Activité physique"</string>
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"accéder aux données d\'activité physique"</string>
-    <string name="permgrouplab_camera" msgid="9090413408963547706">"Caméra"</string>
+    <string name="permgrouplab_camera" msgid="9090413408963547706">"Appareil photo"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"prendre des photos et enregistrer des vidéos"</string>
     <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"Appareils à proximité"</string>
     <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"détecter des appareils à proximité et s\'y connecter"</string>
@@ -710,8 +710,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Opération de reconnaissance faciale annulée."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Déverrouillage par reconnaissance faciale annulé par l\'utilisateur"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Trop de tentatives. Réessayez plus tard."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Tentatives trop nombreuses. Déverrouillage par reconnaissance faciale désactivé."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Tentatives trop nombreuses. Utilisez le verrouillage de l\'écran."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Impossible de valider votre visage. Réessayez."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Déverrouillage par reconnaissance faciale non configuré"</string>
@@ -1357,7 +1356,7 @@
     <string name="no_permissions" msgid="5729199278862516390">"Aucune autorisation requise"</string>
     <string name="perm_costs_money" msgid="749054595022779685">"Cela peut engendrer des frais"</string>
     <string name="dlg_ok" msgid="5103447663504839312">"OK"</string>
-    <string name="usb_charging_notification_title" msgid="1674124518282666955">"Recharge de cet appareil via USB"</string>
+    <string name="usb_charging_notification_title" msgid="1674124518282666955">"Appareil en charge via USB"</string>
     <string name="usb_supplying_notification_title" msgid="5378546632408101811">"Recharge via USB de l\'appareil connecté"</string>
     <string name="usb_mtp_notification_title" msgid="1065989144124499810">"Transfert de fichiers via USB activé"</string>
     <string name="usb_ptp_notification_title" msgid="5043437571863443281">"PTP via USB activé"</string>
@@ -1872,7 +1871,7 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Mis à jour par votre administrateur"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Supprimé par votre administrateur"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"L\'économiseur de batterie active le thème sombre et limite ou désactive l\'activité en arrière-plan ainsi que certains effets visuels, fonctionnalités et connexions réseau."</string>
+    <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"L\'économiseur de batterie active le thème sombre et limite ou désactive les activités en arrière-plan ainsi que certains effets visuels, fonctionnalités et connexions réseau."</string>
     <string name="battery_saver_description" msgid="8518809702138617167">"L\'économiseur de batterie active le thème sombre et limite ou désactive les activités en arrière-plan ainsi que certains effets visuels, fonctionnalités et connexions réseau."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Pour réduire la consommation des données, l\'Économiseur de données empêche certaines applis d\'envoyer ou de recevoir des données en arrière-plan. Les applis que vous utiliserez pourront toujours accéder aux données, mais le feront moins fréquemment. Par exemple, les images pourront ne pas s\'afficher tant que vous n\'aurez pas appuyé dessus."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Activer l\'Économiseur de données ?"</string>
@@ -2093,7 +2092,7 @@
     <string name="nas_upgrade_notification_enable_action" msgid="3046406808378726874">"OK"</string>
     <string name="nas_upgrade_notification_disable_action" msgid="3794833210043497982">"Désactiver"</string>
     <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"En savoir plus"</string>
-    <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"Les notifications améliorées ont remplacé les notifications intelligentes dans Android 12. Cette fonctionnalité affiche des suggestions d\'actions et de réponses, et organise vos notifications.\n\nElle a accès au contenu des notifications, y compris à des infos personnelles tels que les noms et les messages des contacts. Elle peut aussi fermer les notifications, ou y répondre (répondre aux appels téléphoniques, par exemple), et contrôler Ne pas déranger."</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"Les notifications améliorées remplacent les notifications intelligentes dans Android 12. Cette fonctionnalité affiche les suggestions d\'actions et de réponses, et organise vos notifications.\n\nElle a accès au contenu des notifications, y compris aux informations personnelles tels que les noms des contacts et les messages. Elle peut aussi fermer les notifications ou effectuer des actions comme répondre à un appel téléphonique et contrôler le mode Ne pas déranger."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notification d\'information du mode Routine"</string>
     <string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Économiseur de batterie activé"</string>
     <string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Réduction de l\'utilisation de la batterie pour prolonger son autonomie"</string>
@@ -2164,10 +2163,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Appuyez pour l\'activer"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Aucune appli professionnelle"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Aucune appli personnelle"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Ouvrir <xliff:g id="APP">%s</xliff:g> dans votre profil personnel ?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Ouvrir <xliff:g id="APP">%s</xliff:g> dans votre profil professionnel ?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Utiliser le navigateur personnel"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Utiliser le navigateur professionnel"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Code PIN de déblocage du réseau SIM"</string>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 8bd6b9e..026f80e 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Cancelouse a operación relacionada coa cara"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"O usuario cancelou o desbloqueo facial"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Demasiados intentos. Téntao de novo máis tarde."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Realizaches demasiados intentos. Desactivouse o desbloqueo facial."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Realizaches demasiados intentos. Mellor usa o bloqueo de pantalla."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Non se puido verificar a cara. Téntao de novo."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Non configuraches o desbloqueo facial"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Tocar para activar o perfil"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Non hai ningunha aplicación do traballo compatible"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Non hai ningunha aplicación persoal compatible"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Queres abrir <xliff:g id="APP">%s</xliff:g> no teu perfil persoal?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Queres abrir <xliff:g id="APP">%s</xliff:g> no teu perfil de traballo?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Utilizar navegador persoal"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Utilizar navegador de traballo"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN de desbloqueo da rede SIM"</string>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index a96de9c..11f9f83 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -300,7 +300,7 @@
     <string name="managed_profile_label" msgid="7316778766973512382">"àȘ•àȘŸàȘ°à«àȘŻàȘŸàȘČàȘŻàȘšà«€ àȘȘ્àȘ°à«‹àȘ«àȘŸàȘ‡àȘČ àȘȘàȘ° àȘžà«àȘ”àȘżàȘš àȘ•àȘ°à«‹"</string>
     <string name="permgrouplab_contacts" msgid="4254143639307316920">"àȘžàȘ‚àȘȘàȘ°à«àȘ•à«‹"</string>
     <string name="permgroupdesc_contacts" msgid="9163927941244182567">"àȘ€àȘźàȘŸàȘ°àȘŸ àȘžàȘ‚àȘȘàȘ°à«àȘ•à«‹àȘšà«‡ àȘàȘ•્àȘžà«‡àȘž àȘ•àȘ°àȘ”àȘŸàȘšà«€"</string>
-    <string name="permgrouplab_location" msgid="1858277002233964394">"àȘČોàȘ•ેàȘ¶àȘš"</string>
+    <string name="permgrouplab_location" msgid="1858277002233964394">"àȘžà«àȘ„àȘŸàȘš"</string>
     <string name="permgroupdesc_location" msgid="1995955142118450685">"àȘ† àȘ‰àȘȘàȘ•àȘ°àȘŁàȘšàȘŸ àȘžà«àȘ„àȘŸàȘšàȘšà«‡ àȘàȘ•્àȘžà«‡àȘž àȘ•àȘ°àȘ”àȘŸàȘšà«€"</string>
     <string name="permgrouplab_calendar" msgid="6426860926123033230">"àȘ•à«…àȘČેàȘšà«àȘĄàȘ°"</string>
     <string name="permgroupdesc_calendar" msgid="6762751063361489379">"àȘ€àȘźàȘŸàȘ°àȘŸ àȘ•ેàȘČેàȘšà«àȘĄàȘ°àȘšà«‡ àȘàȘ•્àȘžà«‡àȘž àȘ•àȘ°àȘ”àȘŸàȘšà«€"</string>
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"àȘšàȘčેàȘ°àȘŸ àȘžàȘ‚àȘŹàȘ‚àȘ§àȘżàȘ€ àȘ•àȘŸàȘ°à«àȘŻàȘ”àȘŸàȘčી àȘ°àȘŠ àȘ•àȘ°àȘ”àȘŸàȘźàȘŸàȘ‚ àȘ†àȘ”ી àȘ›à«‡."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"àȘ”àȘȘàȘ°àȘŸàȘ¶àȘ•àȘ°à«àȘ€àȘŸàȘ àȘ«à«‡àȘž àȘ…àȘšàȘČૉàȘ• àȘ•àȘŸàȘ°à«àȘŻ àȘ°àȘŠ àȘ•àȘ°à«àȘŻà«àȘ‚"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"àȘ˜àȘŁàȘŸ àȘŹàȘ§àȘŸ àȘȘ્àȘ°àȘŻàȘ€à«àȘšà«‹. àȘ„ોàȘĄàȘŸ àȘžàȘźàȘŻ àȘȘàȘ›à«€ àȘ«àȘ°à«€ àȘȘ્àȘ°àȘŻàȘŸàȘž àȘ•àȘ°à«‹."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"àȘ˜àȘŁàȘŸ àȘŹàȘ§àȘŸ àȘȘ્àȘ°àȘŻàȘŸàȘžà«‹. àȘ«à«‡àȘž àȘ…àȘšàȘČૉàȘ• àȘžà«àȘ”àȘżàȘ§àȘŸ àȘŹàȘ‚àȘ§ àȘ•àȘ°à«‡àȘČી àȘ›à«‡."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"àȘ˜àȘŁàȘŸ àȘŹàȘ§àȘŸ àȘȘ્àȘ°àȘŻàȘŸàȘžà«‹. àȘ€à«‡àȘšà«‡ àȘŹàȘŠàȘČે àȘžà«àȘ•્àȘ°à«€àȘš àȘČૉàȘ•àȘšà«‹ àȘ‰àȘȘàȘŻà«‹àȘ— àȘ•àȘ°à«‹."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"àȘšàȘčેàȘ°à«‹ àȘšàȘ•àȘŸàȘžà«€ àȘ¶àȘ•àȘŸàȘ€à«‹ àȘšàȘ„ી. àȘ«àȘ°à«€ àȘȘ્àȘ°àȘŻàȘŸàȘž àȘ•àȘ°à«‹."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"àȘ€àȘźà«‡ àȘ«à«‡àȘž àȘ…àȘšàȘČૉàȘ• àȘžà«àȘ”àȘżàȘ§àȘŸàȘšà«àȘ‚ àȘžà«‡àȘŸàȘ…àȘȘ àȘ•àȘ°à«àȘŻà«àȘ‚ àȘšàȘ„ી"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"àȘšàȘŸàȘČુ àȘ•àȘ°àȘ”àȘŸ àȘźàȘŸàȘŸà«‡ àȘŸà«…àȘȘ àȘ•àȘ°à«‹"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"àȘ•à«‹àȘˆ àȘ‘àȘ«àȘżàȘž àȘźàȘŸàȘŸà«‡àȘšà«€ àȘàȘȘ àȘžàȘȘોàȘ°à«àȘŸ àȘ•àȘ°àȘ€à«€ àȘšàȘ„ી"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"àȘ•à«‹àȘˆ àȘ”્àȘŻàȘ•્àȘ€àȘżàȘ—àȘ€ àȘàȘȘ àȘžàȘȘોàȘ°à«àȘŸ àȘ•àȘ°àȘ€à«€ àȘšàȘ„ી"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"àȘ€àȘźàȘŸàȘ°à«€ àȘ”્àȘŻàȘ•્àȘ€àȘżàȘ—àȘ€ àȘȘ્àȘ°à«‹àȘ«àȘŸàȘ‡àȘČàȘźàȘŸàȘ‚ <xliff:g id="APP">%s</xliff:g> àȘ–à«‹àȘČીàȘ?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"àȘ€àȘźàȘŸàȘ°à«€ àȘ‘àȘ«àȘżàȘžàȘšà«€ àȘȘ્àȘ°à«‹àȘ«àȘŸàȘ‡àȘČàȘźàȘŸàȘ‚ <xliff:g id="APP">%s</xliff:g> àȘ–à«‹àȘČીàȘ?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"àȘ”્àȘŻàȘ•્àȘ€àȘżàȘ—àȘ€ àȘŹà«àȘ°àȘŸàȘ‰àȘàȘ°àȘšà«‹ àȘ‰àȘȘàȘŻà«‹àȘ— àȘ•àȘ°à«‹"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"àȘ‘àȘ«àȘżàȘžàȘšàȘŸ àȘŹà«àȘ°àȘŸàȘ‰àȘàȘ°àȘšàȘŸ àȘ‰àȘȘàȘŻà«‹àȘ— àȘ•àȘ°à«‹"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"àȘžàȘżàȘź àȘšà«‡àȘŸàȘ”àȘ°à«àȘ•àȘšà«‡ àȘ…àȘšàȘČૉàȘ• àȘ•àȘ°àȘ”àȘŸàȘšà«‹ àȘȘàȘżàȘš"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 84634d4..736ab23 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"à€šà„‡à€čà€°à€Ÿ à€Șà€čà€šà€Ÿà€šà€šà„‡ à€•à„€ à€•à€Ÿà€°à„à€°à€”à€Ÿà€ˆ à€°à€Šà„à€Š à€•à„€ à€—à€ˆ."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"à€‰à€Șà€Żà„‹à€—à€•à€°à„à€€à€Ÿ à€šà„‡ à€«à€Œà„‡à€ž à€…à€šà€Čà„‰à€• à€•à„‹ à€°à€Šà„à€Š à€•à€żà€Żà€Ÿ"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"à€•à€ˆ à€Źà€Ÿà€° à€•à„‹à€¶à€żà€¶ à€•à„€ à€—à€ˆ. à€Źà€Ÿà€Š à€źà„‡à€‚ à€•à„‹à€¶à€żà€¶ à€•à€°à„‡à€‚."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"à€•à€ˆ à€Źà€Ÿà€° à€•à„‹à€¶à€żà€¶ à€•à„€ à€œà€Ÿ à€šà„à€•à„€ à€čà„ˆ. à€«à€Œà„‡à€ž à€…à€šà€Čà„‰à€• à€•à„‹ à€Źà€‚à€Š à€•à€° à€Šà€żà€Żà€Ÿ à€—à€Żà€Ÿ à€čà„ˆ."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"à€•à€ˆ à€Źà€Ÿà€° à€•à„‹à€¶à€żà€¶ à€•à„€ à€œà€Ÿ à€šà„à€•à„€ à€čà„ˆ. à€‡à€žà€•à„‡ à€Źà€œà€Ÿà€Ż, à€žà„à€•à„à€°à„€à€š à€Čà„‰à€• à€•à€Ÿ à€‡à€žà„à€€à„‡à€źà€Ÿà€Č à€•à€°à„‡à€‚."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"à€šà„‡à€čà€°à€Ÿ à€šà€čà„€à€‚ à€Șà€čà€šà€Ÿà€š à€Șà€Ÿ à€°à€čà„‡. à€«à€żà€° à€žà„‡ à€•à„‹à€¶à€żà€¶ à€•à€°à„‡à€‚."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"à€†à€Șà€šà„‡ à€«à€Œà„‡à€ž à€…à€šà€Čà„‰à€• à€žà„‡à€Ÿ à€…à€Ș à€šà€čà„€à€‚ à€•à€żà€Żà€Ÿ à€čà„ˆ"</string>
@@ -1368,8 +1367,8 @@
     <string name="usb_power_notification_message" msgid="7284765627437897702">"à€œà„‹à€Ąà€Œà€Ÿ à€—à€Żà€Ÿ à€Ąà€żà€”à€Ÿà€‡à€ž à€šà€Ÿà€°à„à€œ à€čà„‹ à€°à€čà€Ÿ à€čà„ˆ. à€œà€Œà„à€Żà€Ÿà€Šà€Ÿ à€”à€żà€•à€Čà„à€Șà„‹à€‚ à€•à„‡ à€Čà€żà€ à€Ÿà„ˆà€Ș à€•à€°à„‡à€‚."</string>
     <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"à€à€šà€Ÿà€Čà„‰à€— à€‘à€Ąà€żà€Żà„‹ à€à€•à„à€žà„‡à€žà€°à„€ à€•à€Ÿ à€Șà€€à€Ÿ à€šà€Čà€Ÿ"</string>
     <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"à€…à€Ÿà„ˆà€š à€•à€żà€Żà€Ÿ à€—à€Żà€Ÿ à€Ąà€żà€”à€Ÿà€‡à€ž à€‡à€ž à€«à€Œà„‹à€š à€žà„‡ à€žà€‚à€—à€€ à€šà€čà„€à€‚ à€čà„ˆ. à€œà€Œà„à€Żà€Ÿà€Šà€Ÿ à€œà€Ÿà€šà€šà„‡ à€•à„‡ à€Čà€żà€ à€Ÿà„ˆà€Ș à€•à€°à„‡à€‚."</string>
-    <string name="adb_active_notification_title" msgid="408390247354560331">"à€Żà„‚à€à€žà€Źà„€ à€Ąà„€à€Źà€— à€•à€°à€šà„‡ à€•à„‡ à€Čà€żà€ adb à€•à€šà„‡à€•à„à€Ÿ à€•à€żà€Żà€Ÿ à€—à€Żà€Ÿ"</string>
-    <string name="adb_active_notification_message" msgid="5617264033476778211">"à€Żà„‚à€à€žà€Źà„€ à€Ąà„€à€Źà€— à€•à€°à€šà„‡ à€•à„€ à€žà„à€”à€żà€§à€Ÿ à€Źà€‚à€Š à€•à€°à€šà„‡ à€•à„‡ à€Čà€żà€ à€Ÿà„ˆà€Ș à€•à€°à„‡à€‚"</string>
+    <string name="adb_active_notification_title" msgid="408390247354560331">"à€Żà„‚à€à€žà€Źà„€ à€Ąà„€à€Źà€— à€•à€°à€šà„‡ à€•à„‡ à€Čà€żà€ à€à€Ąà„€à€Źà„€ à€•à€šà„‡à€•à„à€Ÿ à€•à€żà€Żà€Ÿ à€—à€Żà€Ÿ"</string>
+    <string name="adb_active_notification_message" msgid="5617264033476778211">"à€Żà„‚à€à€žà€Źà„€ à€•à„‹ à€Ąà„€à€Źà€— à€•à€°à€šà„‡ à€•à„€ à€žà„à€”à€żà€§à€Ÿ à€Źà€‚à€Š à€•à€°à€šà„‡ à€•à„‡ à€Čà€żà€ à€Ÿà„ˆà€Ș à€•à€°à„‡à€‚"</string>
     <string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB à€Ąà„€à€Źà€— à€•à€°à€šà€Ÿ à€…à€•à„à€·à€ź à€•à€°à€šà„‡ à€•à„‡ à€Čà€żà€ à€šà„à€šà„‡à€‚."</string>
     <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"à€”à„‰à€Żà€°à€Čà„‡à€ž à€Ąà„€à€Źà€—à€żà€‚à€— à€•à€šà„‡à€•à„à€Ÿ à€čà„ˆ"</string>
     <string name="adbwifi_active_notification_message" msgid="930987922852867972">"à€”à„‰à€Żà€°à€Čà„‡à€ž à€Ąà„€à€Źà€—à€żà€‚à€— à€•à„€ à€žà„à€”à€żà€§à€Ÿ à€Źà€‚à€Š à€•à€°à€šà„‡ à€•à„‡ à€Čà€żà€ à€Ÿà„ˆà€Ș à€•à€°à„‡à€‚"</string>
@@ -1873,8 +1872,8 @@
     <string name="confirm_battery_saver" msgid="5247976246208245754">"à€ à„€à€• à€čà„ˆ"</string>
     <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"à€Źà„ˆà€Ÿà€°à„€ à€žà„‡à€”à€°, à€—à€čà€°à„‡ à€°à€‚à€— à€”à€Ÿà€Čà„€ à€„à„€à€ź à€•à„‹ à€šà€Ÿà€Čà„‚ à€•à€°à€€à€Ÿ à€čà„ˆ. à€žà€Ÿà€„ à€čà„€, à€‡à€ž à€źà„‹à€Ą à€źà„‡à€‚ à€Źà„ˆà€•à€—à„à€°à€Ÿà€‰à€‚à€Ą à€•à„€ à€—à€€à€żà€”à€żà€§à€ż, à€•à„à€› à€”à€żà€œà€Œà„à€…à€Č à€‡à€«à€Œà„‡à€•à„à€Ÿ, à€”à€° à€•à„à€› à€–à€Ÿà€ž à€žà„à€”à€żà€§à€Ÿà€à€‚ à€•à€ź à€Żà€Ÿ à€Źà€‚à€Š à€čà„‹ à€œà€Ÿà€€à„€ à€čà„ˆà€‚. à€•à„à€› à€‡à€‚à€Ÿà€°à€šà„‡à€Ÿ à€•à€šà„‡à€•à„à€¶à€š à€­à„€ à€Șà„‚à€°à„€ à€€à€°à€č à€•à€Ÿà€ź à€šà€čà„€à€‚ à€•à€°à€€à„‡."</string>
     <string name="battery_saver_description" msgid="8518809702138617167">"à€Źà„ˆà€Ÿà€°à„€ à€žà„‡à€”à€°, à€—à€čà€°à„‡ à€°à€‚à€— à€”à€Ÿà€Čà„€ à€„à„€à€ź à€•à„‹ à€šà€Ÿà€Čà„‚ à€•à€°à€€à€Ÿ à€čà„ˆ. à€žà€Ÿà€„ à€čà„€, à€‡à€ž à€źà„‹à€Ą à€źà„‡à€‚ à€Źà„ˆà€•à€—à„à€°à€Ÿà€‰à€‚à€Ą à€•à„€ à€—à€€à€żà€”à€żà€§à€ż, à€•à„à€› à€”à€żà€œà€Œà„à€…à€Č à€‡à€«à€Œà„‡à€•à„à€Ÿ, à€”à€° à€•à„à€› à€žà„à€”à€żà€§à€Ÿà€à€‚ à€žà„€à€źà€żà€€ à€Żà€Ÿ à€Źà€‚à€Š à€čà„‹ à€œà€Ÿà€€à„€ à€čà„ˆà€‚. à€•à„à€› à€‡à€‚à€Ÿà€°à€šà„‡à€Ÿ à€•à€šà„‡à€•à„à€¶à€š à€­à„€ à€Șà„‚à€°à„€ à€€à€°à€č à€•à€Ÿà€ź à€šà€čà„€à€‚ à€•à€°à€€à„‡."</string>
-    <string name="data_saver_description" msgid="4995164271550590517">"à€Ąà„‡à€Ÿà€Ÿ à€–à€°à„à€š à€•à„‹ à€•à€ź à€•à€°à€šà„‡ à€•à„‡ à€Čà€żà€, à€Ąà„‡à€Ÿà€Ÿ à€Źà€šà€Ÿà€šà„‡ à€•à„€ à€žà„‡à€Ÿà€żà€‚à€— à€•à„à€› à€à€Șà„à€Čà€żà€•à„‡à€¶à€š à€•à„‹ à€Źà„ˆà€•à€—à„à€°à€Ÿà€‰à€‚à€Ą à€źà„‡à€‚ à€Ąà„‡à€Ÿà€Ÿ à€­à„‡à€œà€šà„‡ à€Żà€Ÿ à€Ąà„‡à€Ÿà€Ÿ à€Șà€Ÿà€šà„‡ à€žà„‡ à€°à„‹à€•à€€à„€ à€čà„ˆ. à€«à€Œà€żà€Čà€čà€Ÿà€Č, à€œà€żà€ž à€à€Șà„à€Čà€żà€•à„‡à€¶à€š à€•à€Ÿ à€‡à€žà„à€€à„‡à€źà€Ÿà€Č à€•à€żà€Żà€Ÿ à€œà€Ÿ à€°à€čà€Ÿ à€čà„ˆ à€”à€č à€Ąà„‡à€Ÿà€Ÿ à€à€•à„à€žà„‡à€ž à€•à€° à€žà€•à€€à€Ÿ à€čà„ˆ, à€Čà„‡à€•à€żà€š à€à€žà€Ÿ à€•à€­à„€-à€•à€­à„€ à€čà„€ à€čà„‹ à€Șà€Ÿà€à€—à€Ÿ. à€‰à€Šà€Ÿà€čà€°à€Ł à€•à„‡ à€Čà€żà€, à€‡à€źà„‡à€œ à€€à€Ź à€€à€• à€šà€čà„€à€‚ à€Šà€żà€–à„‡à€‚à€—à„€, à€œà€Ź à€€à€• à€‰à€š à€Șà€° à€Ÿà„ˆà€Ș à€šà€čà„€à€‚ à€•à€żà€Żà€Ÿ à€œà€Ÿà€à€—à€Ÿ."</string>
-    <string name="data_saver_enable_title" msgid="7080620065745260137">"à€Ąà„‡à€Ÿà€Ÿ à€Źà€šà€Ÿà€šà„‡ à€•à„€ à€žà„‡à€Ÿà€żà€‚à€— à€šà€Ÿà€Čà„‚ à€•à€°à€šà„€ à€čà„ˆ?"</string>
+    <string name="data_saver_description" msgid="4995164271550590517">"à€Ąà„‡à€Ÿà€Ÿ à€–à€°à„à€š à€•à„‹ à€•à€ź à€•à€°à€šà„‡ à€•à„‡ à€Čà€żà€, à€Ąà„‡à€Ÿà€Ÿ à€Źà€šà€Ÿà€šà„‡ à€•à„€ à€žà„‡à€Ÿà€żà€‚à€— à€•à„à€› à€à€Șà„à€Čà€żà€•à„‡à€¶à€š à€•à„‹ à€Źà„ˆà€•à€—à„à€°à€Ÿà€‰à€‚à€Ą à€źà„‡à€‚ à€Ąà„‡à€Ÿà€Ÿ à€­à„‡à€œà€šà„‡ à€Żà€Ÿ à€Ąà„‡à€Ÿà€Ÿ à€Șà€Ÿà€šà„‡ à€žà„‡ à€°à„‹à€•à€€à„€ à€čà„ˆ. à€«à€Œà€żà€Čà€čà€Ÿà€Č, à€œà€żà€ž à€à€Șà„à€Čà€żà€•à„‡à€¶à€š à€•à€Ÿ à€‡à€žà„à€€à„‡à€źà€Ÿà€Č à€•à€żà€Żà€Ÿ à€œà€Ÿ à€°à€čà€Ÿ à€čà„ˆ à€”à€č à€Ąà„‡à€Ÿà€Ÿ à€à€•à„à€žà„‡à€ž à€•à€° à€žà€•à€€à€Ÿ à€čà„ˆ, à€Čà„‡à€•à€żà€š à€à€žà€Ÿ à€•à€­à„€-à€•à€­à„€ à€čà„€ à€čà„‹ à€Șà€Ÿà€à€—à€Ÿ. à€‰à€Šà€Ÿà€čà€°à€Ł à€•à„‡ à€Čà€żà€, à€‡à€źà„‡à€œ à€€à€Ź à€€à€• à€Šà€żà€–à€Ÿà€ˆ à€šà€čà„€à€‚ à€Šà„‡à€‚à€—à„€, à€œà€Ź à€€à€• à€‰à€š à€Șà€° à€Ÿà„ˆà€Ș à€šà€čà„€à€‚ à€•à€żà€Żà€Ÿ à€œà€Ÿà€à€—à€Ÿ."</string>
+    <string name="data_saver_enable_title" msgid="7080620065745260137">"à€Ąà„‡à€Ÿà€Ÿ à€Źà€šà€Ÿà€šà„‡ à€•à„€ à€žà„‡à€Ÿà€żà€‚à€— à€šà€Ÿà€Čà„‚ à€•à€°à„‡à€‚?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"à€šà€Ÿà€Čà„‚ à€•à€°à„‡à€‚"</string>
     <string name="zen_mode_duration_minutes_summary" msgid="4555514757230849789">"{count,plural, =1{à€à€• à€źà€żà€šà€Ÿ à€•à„‡ à€Čà€żà€ ({formattedTime} à€€à€•)}one{# à€źà€żà€šà€Ÿ à€•à„‡ à€Čà€żà€ ({formattedTime} à€€à€•)}other{# à€źà€żà€šà€Ÿ à€•à„‡ à€Čà€żà€ ({formattedTime} à€€à€•)}}"</string>
     <string name="zen_mode_duration_minutes_summary_short" msgid="1187553788355486950">"{count,plural, =1{1 à€źà€żà€šà€Ÿ à€•à„‡ à€Čà€żà€ ({formattedTime} à€€à€•)}one{# à€źà€żà€šà€Ÿ à€•à„‡ à€Čà€żà€ ({formattedTime} à€€à€•)}other{# à€źà€żà€šà€Ÿ à€•à„‡ à€Čà€żà€ ({formattedTime} à€€à€•)}}"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"à€”à€°à„à€• à€Șà„à€°à„‹à€«à€Œà€Ÿà€‡à€Č à€šà€Ÿà€Čà„‚ à€•à€°à€šà„‡ à€•à„‡ à€Čà€żà€ à€Ÿà„ˆà€Ș à€•à€°à„‡à€‚"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"à€Żà€č à€•à„‰à€šà„à€Ÿà„‡à€‚à€Ÿ, à€‘à€«à€Œà€żà€ž à€•à„‡ à€•à€Ÿà€ź à€žà„‡ à€œà„à€Ąà€Œà„‡ à€†à€Șà€•à„‡ à€•à€żà€žà„€ à€­à„€ à€à€Șà„à€Čà€żà€•à„‡à€¶à€š à€Șà€° à€–à„‹à€Čà€Ÿ à€šà€čà„€à€‚ à€œà€Ÿ à€žà€•à€€à€Ÿ"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"à€Żà€č à€•à„‰à€šà„à€Ÿà„‡à€‚à€Ÿ à€†à€Șà€•à„‡ à€•à€żà€žà„€ à€­à„€ à€šà€żà€œà„€ à€à€Șà„à€Čà€żà€•à„‡à€¶à€š à€Șà€° à€–à„‹à€Čà€Ÿ à€šà€čà„€à€‚ à€œà€Ÿ à€žà€•à€€à€Ÿ"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"à€•à„à€Żà€Ÿ <xliff:g id="APP">%s</xliff:g> à€•à„‹ à€šà€żà€œà„€ à€Șà„à€°à„‹à€«à€Œà€Ÿà€‡à€Č à€źà„‡à€‚ à€–à„‹à€Čà€šà€Ÿ à€čà„ˆ?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"à€•à„à€Żà€Ÿ <xliff:g id="APP">%s</xliff:g> à€•à„‹ à€”à€°à„à€• à€Șà„à€°à„‹à€«à€Œà€Ÿà€‡à€Č à€źà„‡à€‚ à€–à„‹à€Čà€šà€Ÿ à€čà„ˆ?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"à€šà€żà€œà„€ à€Źà„à€°à€Ÿà€‰à€œà€Œà€° à€•à€Ÿ à€‡à€žà„à€€à„‡à€źà€Ÿà€Č à€•à€°à„‡à€‚"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"à€‘à€«à€Œà€żà€ž à€•à„‡ à€•à€Ÿà€ź à€žà„‡ à€œà„à€Ąà€Œà„‡ à€Źà„à€°à€Ÿà€‰à€œà€Œà€° à€•à€Ÿ à€‡à€žà„à€€à„‡à€źà€Ÿà€Č à€•à€°à„‡à€‚"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"à€žà€żà€ź à€šà„‡à€Ÿà€”à€°à„à€• à€•à„‹ à€…à€šà€Čà„‰à€• à€•à€°à€šà„‡ à€•à€Ÿ à€Șà€żà€š"</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 1246649..e4a0e6b 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -710,8 +710,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Otkazana je radnja s licem."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Korisnik je otkazao otključavanje licem"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Previše pokušaja. Pokušajte ponovo kasnije."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Previše pokušaja. Otključavanje licem onemogućeno."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Previše pokušaja. Umjesto toga prijeđite na zaključavanje zaslona."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Lice nije potvrđeno. Pokušajte ponovo."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Niste postavili otključavanje licem"</string>
@@ -1874,7 +1873,7 @@
     <string name="confirm_battery_saver" msgid="5247976246208245754">"U redu"</string>
     <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"Štednja baterije uključuje tamnu temu i ograničava ili isključuje aktivnosti u pozadini, neke vizualne efekte, određene značajke i neke mreĆŸne veze."</string>
     <string name="battery_saver_description" msgid="8518809702138617167">"Štednja baterije uključuje tamnu temu i ograničava ili isključuje aktivnosti u pozadini, neke vizualne efekte, određene značajke i neke mreĆŸne veze."</string>
-    <string name="data_saver_description" msgid="4995164271550590517">"Da bi se smanjila potrošnja podatkovnog prometa, štednja podatkovnog prometa onemogućuje nekim aplikacijama slanje ili primanje podataka u pozadini. Aplikacija koju trenutačno upotrebljavate moĆŸe pristupati podacima, no to će moĆŸda činiti rjeđe. To moĆŸe značiti da se, na primjer, slike neće prikazivati dok ih ne dodirnete."</string>
+    <string name="data_saver_description" msgid="4995164271550590517">"Da bi se smanjio podatkovni promet, značajka Štednja podatkovnog prometa onemogućuje nekim aplikacijama slanje ili primanje podataka u pozadini. Aplikacija koju trenutačno upotrebljavate moĆŸe pristupiti podacima, no moĆŸda će to činiti rjeđe. To moĆŸe značiti da se, na primjer, slike neće prikazivati dok ih ne dodirnete."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Uključiti štednju podatkovnog prometa?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Uključi"</string>
     <string name="zen_mode_duration_minutes_summary" msgid="4555514757230849789">"{count,plural, =1{1 min (do {formattedTime})}one{# min (do {formattedTime})}few{# min (do {formattedTime})}other{# min (do {formattedTime})}}"</string>
@@ -2164,10 +2163,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Dodirnite da biste uključili"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Poslovne aplikacije nisu dostupne"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Osobne aplikacije nisu dostupne"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Ćœelite li otvoriti aplikaciju <xliff:g id="APP">%s</xliff:g> na osobnom profilu?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Ćœelite li otvoriti aplikaciju <xliff:g id="APP">%s</xliff:g> na poslovnom profilu?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Koristi osobni preglednik"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Koristi poslovni preglednik"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN za otključavanje SIM mreĆŸe."</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 27e4ab7..6427a70 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Az arccal kapcsolatos mƱvelet törölve."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Az Arcalapú feloldást megszakította a felhasználó"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Túl sok próbálkozás. Próbálja újra késƑbb."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Túl sok próbálkozás. Az Arcalapú feloldás letiltva."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Túl sok próbálkozás. Használja inkább a képernyƑzárat."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Nem sikerült ellenƑrizni az arcát. Próbálja újra."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Nem állította be az Arcalapú feloldást"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Koppintson a bekapcsoláshoz"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Nincs munkahelyi alkalmazás"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Nincs személyes alkalmazás"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Megnyitja a(z) <xliff:g id="APP">%s</xliff:g> alkalmazást a személyes profil használatával?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Megnyitja a(z) <xliff:g id="APP">%s</xliff:g> alkalmazást a munkaprofil használatával?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Személyes böngészƑ használata"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Munkahelyi böngészƑ használata"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Hálózati SIM feloldó PIN-kódja"</string>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index 56281fe..c12aca1 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"ÔŽŐ„ŐŽÖ„Ő« ŐłŐĄŐ¶ŐĄŐčվւծչ ŐčŐ„ŐČŐĄÖ€ŐŻŐŸŐ„ŐŹ է։"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"ÔŽŐ„ŐŽÖ„ŐžŐŸ ŐĄŐșŐĄŐŻŐžŐČծվւծչ ŐčŐ„ŐČŐĄÖ€ŐŻŐŸŐ„ŐŹ Ő§ Ö…ŐŁŐżŐĄŐżŐ«Ö€ŐžŐ» ŐŻŐžŐČՎից"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Ő‰ŐĄÖƒŐ«Ö Ő·ŐĄŐż ÖƒŐžÖ€Ő±Ő„Ö€ Ő„Ö„ ŐŻŐĄŐżŐĄÖ€Ő„ŐŹ: Ő“ŐžÖ€Ő±Ő„Ö„ ŐĄŐŸŐ„ŐŹŐ« ŐžÖ‚Ő·:"</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Ő‰ŐĄÖƒŐĄŐŠŐĄŐ¶Ö Ő·ŐĄŐż ÖƒŐžÖ€Ő±Ő„Ö€ Ő„Ő¶ ŐĄÖ€ŐŸŐ„ŐŹÖ‰ ÔŽŐ„ŐŽÖ„ŐžŐŸ ŐĄŐșŐĄŐŻŐžŐČŐșŐžÖ‚ŐŽŐ¶ ŐĄŐ¶Ő»ŐĄŐżŐŸŐĄŐź է։"</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Ő‰ŐĄÖƒŐĄŐŠŐĄŐ¶Ö Ő·ŐĄŐż ÖƒŐžÖ€Ő±Ő„Ö€ Ő„Ő¶ ŐĄÖ€ŐŸŐ„ŐŹÖ‰ Ő•ŐŁŐżŐĄŐŁŐžÖ€ŐźŐ„Ö„ Ő§ŐŻÖ€ŐĄŐ¶Ő« ŐŻŐžŐČŐșվւծչ։"</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Ő‰Ő°ŐĄŐ»ŐžŐČŐŸŐ„Ö Ő°ŐĄŐœŐżŐĄŐżŐ„ŐŹ Ő€Ő„ŐŽÖ„ŐšÖ‰ Ն՞րից ÖƒŐžÖ€Ő±Ő„Ö„Ö‰"</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Ԯվւք ŐčŐ„Ö„ ŐŻŐĄÖ€ŐŁŐĄŐŸŐžÖ€Ő„ŐŹ Ő€Ő„ŐŽÖ„ŐžŐŸ ŐĄŐșŐĄŐŻŐžŐČŐșվւծչ։"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ՀŐșŐ„Ö„ ՎիեցնՄՏ՞ւ հածար"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Ô±Ő·Ő­ŐĄŐżŐĄŐ¶Ö„ŐĄŐ”Ő«Ő¶ Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ¶Ő„Ö€ ŐčŐŻŐĄŐ¶"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Ô±Ő¶Ő±Ő¶ŐĄŐŻŐĄŐ¶ Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ¶Ő„Ö€ ŐčŐŻŐĄŐ¶"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"ÔČեցՄ՞Տ <xliff:g id="APP">%s</xliff:g> Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐš Ő±Ő„Ö€ ŐĄŐ¶Ő±Ő¶ŐĄŐŻŐĄŐ¶ ŐșÖ€ŐžÖ†Ő«ŐŹŐžÖ‚ŐŽ"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"ÔČեցՄ՞Տ <xliff:g id="APP">%s</xliff:g> Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐš Ő±Ő„Ö€ ŐĄŐ·Ő­ŐĄŐżŐĄŐ¶Ö„ŐĄŐ”Ő«Ő¶ ŐșÖ€ŐžÖ†Ő«ŐŹŐžÖ‚ŐŽ"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Ő•ŐŁŐżŐĄŐŁŐžÖ€ŐźŐ„ŐŹ ŐĄŐ¶Ő±Ő¶ŐĄŐŻŐĄŐ¶ Ő€Ő«ŐżŐĄÖ€ŐŻŐ«ŐčŐš"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Ő•ŐŁŐżŐĄŐŁŐžÖ€ŐźŐ„ŐŹ ŐĄŐ·Ő­ŐĄŐżŐĄŐ¶Ö„ŐĄŐ”Ő«Ő¶ Ő€Ő«ŐżŐĄÖ€ŐŻŐ«ŐčŐš"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM Network Ö„ŐĄÖ€ŐżŐ« ŐĄŐșŐĄŐŻŐžŐČŐșŐŽŐĄŐ¶ PIN"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index cd7f613..1cd91ed 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -684,7 +684,7 @@
     <string name="face_acquired_too_right" msgid="6245286514593540859">"Gerakkan ponsel ke kiri Anda"</string>
     <string name="face_acquired_too_left" msgid="9201762240918405486">"Gerakkan ponsel ke kanan Anda"</string>
     <string name="face_acquired_poor_gaze" msgid="4427153558773628020">"Lihat langsung ke perangkat."</string>
-    <string name="face_acquired_not_detected" msgid="1057966913397548150">"Wajah tidak terlihat. Pegang ponsel sejajar mata."</string>
+    <string name="face_acquired_not_detected" msgid="1057966913397548150">"Tidak dapat melihat wajah Anda. Pegang ponsel sejajar dengan mata."</string>
     <string name="face_acquired_too_much_motion" msgid="8199691445085189528">"Terlalu banyak gerakan. Stabilkan ponsel."</string>
     <string name="face_acquired_recalibrate" msgid="8724013080976469746">"Daftarkan ulang wajah Anda."</string>
     <string name="face_acquired_too_different" msgid="2520389515612972889">"Tidak dapat mengenali wajah. Coba lagi."</string>
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Pemrosesan wajah dibatalkan."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Buka dengan Wajah dibatalkan oleh pengguna"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Terlalu banyak percobaan. Coba lagi nanti."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Terlalu banyak upaya gagal. Buka dengan Wajah dinonaktifkan."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Terlalu banyak upaya gagal. Masukkan kunci layar."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Tidak dapat memverifikasi wajah. Coba lagi."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Anda belum menyiapkan Buka dengan Wajah"</string>
@@ -1873,7 +1872,7 @@
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Oke"</string>
     <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"Penghemat Baterai akan mengaktifkan Tema gelap dan membatasi atau menonaktifkan aktivitas latar belakang, beberapa efek visual, fitur tertentu, dan beberapa koneksi jaringan."</string>
     <string name="battery_saver_description" msgid="8518809702138617167">"Penghemat Baterai akan mengaktifkan Tema gelap dan membatasi atau menonaktifkan aktivitas latar belakang, beberapa efek visual, fitur tertentu, dan beberapa koneksi jaringan."</string>
-    <string name="data_saver_description" msgid="4995164271550590517">"Untuk membantu mengurangi penggunaan data, Penghemat Data mencegah beberapa aplikasi mengirim atau menerima data di latar belakang. Aplikasi yang sedang digunakan dapat mengakses data, tetapi frekuensinya agak lebih jarang. Misalnya, gambar hanya akan ditampilkan setelah diketuk."</string>
+    <string name="data_saver_description" msgid="4995164271550590517">"Untuk membantu mengurangi penggunaan data, Penghemat Data mencegah beberapa aplikasi mengirim atau menerima data di latar belakang. Aplikasi yang sedang digunakan dapat mengakses data, tetapi frekuensinya agak lebih jarang. Misalnya saja, gambar hanya akan ditampilkan setelah diketuk."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Aktifkan Penghemat Data?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktifkan"</string>
     <string name="zen_mode_duration_minutes_summary" msgid="4555514757230849789">"{count,plural, =1{Selama 1 menit (hingga {formattedTime})}other{Selama # menit (hingga {formattedTime})}}"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Ketuk untuk mengaktifkan"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Tidak ada aplikasi kerja"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Tidak ada aplikasi pribadi"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Buka <xliff:g id="APP">%s</xliff:g> di profil pribadi?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Buka <xliff:g id="APP">%s</xliff:g> di profil kerja?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Gunakan browser pribadi"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Gunakan browser kerja"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN pembuka kunci SIM network"</string>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index 2558dae..71edfbf 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Hætt við andlitsgreiningu."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Notandi hætti við andlitskenni."</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Of margar tilraunir. Reyndu aftur síðar."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Of margar tilraunir. Slökkt á andlitskenni."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Of margar tilraunir. Sláðu inn skjálásinn í staðinn."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Ekki tókst að staðfesta andlit. Reyndu aftur."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Þú hefur ekki sett upp andlitskenni."</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Ýttu til að kveikja"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Engin vinnuforrit"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Engin forrit til einkanota"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Opna <xliff:g id="APP">%s</xliff:g> í þínu eigin sniði?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Opna <xliff:g id="APP">%s</xliff:g> í vinnusniðinu þínu?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Nota einkavafra"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Nota vinnuvafra"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN-númer fyrir opnun á SIM-korti netkerfis"</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 0bfa643..dfc2cf6 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -710,8 +710,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Operazione associata al volto annullata."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Sblocco con il volto annullato dall\'utente"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Troppi tentativi. Riprova più tardi."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Troppi tentativi. Sblocco con il volto disattivato."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Troppi tentativi. Inserisci il blocco schermo."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Impossibile verificare il volto. Riprova."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Non hai configurato lo sblocco con il volto"</string>
@@ -2164,10 +2163,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Tocca per attivare"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Nessuna app di lavoro"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Nessuna app personale"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Aprire <xliff:g id="APP">%s</xliff:g> nel tuo profilo personale?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Aprire <xliff:g id="APP">%s</xliff:g> nel tuo profilo di lavoro?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Usa il browser personale"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Usa il browser di lavoro"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN di sblocco rete SIM"</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 40dead0..efa2c1a 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -685,7 +685,7 @@
     <string name="face_acquired_too_right" msgid="6245286514593540859">"ŚŠŚšŚ™Śš ŚœŚ”Ś–Ś™Ś– ڐŚȘ Ś”Ś˜ŚœŚ€Ś•ŚŸ Ś©ŚžŚŚœŚ”"</string>
     <string name="face_acquired_too_left" msgid="9201762240918405486">"ŚŠŚšŚ™Śš ŚœŚ”Ś–Ś™Ś– ڐŚȘ Ś”Ś˜ŚœŚ€Ś•ŚŸ Ś™ŚžŚ™Ś Ś”"</string>
     <string name="face_acquired_poor_gaze" msgid="4427153558773628020">"ڙک ŚœŚ”Ś‘Ś™Ś˜ Ś™Ś©Ś™ŚšŚ•ŚȘ ڐڜ Ś”ŚžŚ›Ś©Ś™Śš."</string>
-    <string name="face_acquired_not_detected" msgid="1057966913397548150">"ڐڙ ŚŚ€Ś©Śš ŚœŚšŚŚ•ŚȘ ڐŚȘ Ś”Ś€Ś Ś™Ś کڜښ. ڙک ŚœŚ”Ś—Ś–Ś™Ś§ ڐŚȘ Ś”Ś˜ŚœŚ€Ś•ŚŸ ڑڒڕڑڔ Ś”ŚąŚ™Ś Ś™Ś™Ś."</string>
+    <string name="face_acquired_not_detected" msgid="1057966913397548150">"ڐڙ ŚŚ€Ś©Śš ŚœŚšŚŚ•ŚȘ ڐŚȘ Ś”Ś€Ś Ś™Ś کڜښ. ŚŠŚšŚ™Śš ŚœŚ”Ś—Ś–Ś™Ś§ ڐŚȘ Ś”Ś˜ŚœŚ€Ś•ŚŸ ڑڒڕڑڔ Ś”ŚąŚ™Ś Ś™Ś™Ś."</string>
     <string name="face_acquired_too_much_motion" msgid="8199691445085189528">"ڙڕŚȘŚš ŚžŚ“Ś™ ŚȘŚ Ś•ŚąŚ”. ڙک ŚœŚ”Ś—Ś–Ś™Ś§ ڐŚȘ Ś”Ś˜ŚœŚ€Ś•ŚŸ Ś‘ŚŠŚ•ŚšŚ” Ś™ŚŠŚ™Ś‘Ś”."</string>
     <string name="face_acquired_recalibrate" msgid="8724013080976469746">"ڙک ŚœŚĄŚšŚ•Ś§ کڕڑ ڐŚȘ Ś”Ś€Ś Ś™Ś."</string>
     <string name="face_acquired_too_different" msgid="2520389515612972889">"ڜڐ Ś Ś™ŚȘڟ ŚœŚ–Ś”Ś•ŚȘ ڐŚȘ Ś”Ś€Ś Ś™Ś. ڙک ŚœŚ ŚĄŚ•ŚȘ کڕڑ."</string>
@@ -710,8 +710,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Ś”Ś€ŚąŚ•ŚœŚ” ŚœŚŚ™ŚžŚ•ŚȘ Ś”Ś€Ś Ś™Ś Ś‘Ś•Ś˜ŚœŚ”."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"ڔڀŚȘڙڗڔ Śą\"Ś™ ږڙڔڕڙ Ś”Ś€Ś Ś™Ś Ś‘Ś•Ś˜ŚœŚ” ŚąŚœ ڙړڙ Ś”ŚžŚ©ŚȘŚžŚ©"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"ڙڕŚȘŚš ŚžŚ“Ś™ Ś Ś™ŚĄŚ™Ś•Ś Ś•ŚȘ. ڙک ŚœŚ ŚĄŚ•ŚȘ کڕڑ ŚžŚŚ•Ś—Śš ڙڕŚȘŚš."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Ś‘Ś•ŚŠŚąŚ• ڙڕŚȘŚš ŚžŚ“Ś™ Ś Ś™ŚĄŚ™Ś•Ś Ś•ŚȘ. ڔڕکڑŚȘŚ” ڔڀŚȘڙڗڔ Śą\"Ś™ ږڙڔڕڙ Ś”Ś€Ś Ś™Ś."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Ś‘Ś•ŚŠŚąŚ• ڙڕŚȘŚš ŚžŚ“Ś™ Ś Ś™ŚĄŚ™Ś•Ś Ś•ŚȘ. ڙک ŚœŚ”Ś©ŚȘŚžŚ© Ś‘Ś ŚąŚ™ŚœŚȘ Ś”ŚžŚĄŚš Ś‘ŚžŚ§Ś•Ś."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"ڜڐ Ś Ś™ŚȘڟ ŚœŚŚžŚȘ ڐŚȘ Ś”Ś€Ś Ś™Ś. ڙک ŚœŚ ŚĄŚ•ŚȘ کڕڑ."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"ڜڐ Ś”Ś’Ś“ŚšŚȘ Ś€ŚȘڙڗڔ Śą\"Ś™ ږڙڔڕڙ Ś”Ś€Ś Ś™Ś"</string>
@@ -1179,7 +1178,7 @@
     <string name="not_selected" msgid="410652016565864475">"ڜڐ Ś Ś‘Ś—Śš"</string>
     <string name="rating_label" msgid="1837085249662154601">"{rating,plural, =1{ڛڕڛڑ ڐڗړ ŚžŚȘŚ•Śš {max}}one{# Ś›Ś•Ś›Ś‘Ś™Ś ŚžŚȘŚ•Śš {max}}two{# Ś›Ś•Ś›Ś‘Ś™Ś ŚžŚȘŚ•Śš {max}}other{# Ś›Ś•Ś›Ś‘Ś™Ś ŚžŚȘŚ•Śš {max}}}"</string>
     <string name="in_progress" msgid="2149208189184319441">"Ś‘ŚȘŚ”ŚœŚ™Śš"</string>
-    <string name="whichApplication" msgid="5432266899591255759">"Ś”Ś©ŚœŚžŚȘ Ś”Ś€ŚąŚ•ŚœŚ” ŚąŚ"</string>
+    <string name="whichApplication" msgid="5432266899591255759">"Ś”Ś©ŚœŚžŚȘ Ś”Ś€ŚąŚ•ŚœŚ” Ś‘ŚŚžŚŠŚąŚ•ŚȘ"</string>
     <string name="whichApplicationNamed" msgid="6969946041713975681">"‏Ś”Ś©ŚœŚžŚȘ Ś”Ś€ŚąŚ•ŚœŚ” Ś‘ŚŚžŚŠŚąŚ•ŚȘ %1$s"</string>
     <string name="whichApplicationLabel" msgid="7852182961472531728">"ŚœŚ”Ś©ŚœŚžŚȘ Ś”Ś€ŚąŚ•ŚœŚ”"</string>
     <string name="whichViewApplication" msgid="5733194231473132945">"Ś€ŚȘڙڗڔ Ś‘ŚŚžŚŠŚąŚ•ŚȘ"</string>
@@ -2164,10 +2163,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ڙک ŚœŚ”Ś§Ś™Ś© ڛړڙ ŚœŚ”Ś€ŚąŚ™Śœ ڐŚȘ Ś€ŚšŚ•Ś€Ś™Śœ Ś”ŚąŚ‘Ś•Ś“Ś”"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"ŚŚ™ŚŸ ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś•ŚȘ ŚœŚąŚ‘Ś•Ś“Ś”"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"ŚŚ™ŚŸ ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś•ŚȘ ŚœŚ©Ś™ŚžŚ•Ś© ڐڙکڙ"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"ڜڀŚȘڕڗ ڐŚȘ <xliff:g id="APP">%s</xliff:g> Ś‘Ś€ŚšŚ•Ś€Ś™Śœ ڔڐڙکڙ?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"ڜڀŚȘڕڗ ڐŚȘ <xliff:g id="APP">%s</xliff:g> Ś‘Ś€ŚšŚ•Ś€Ś™Śœ Ś”ŚąŚ‘Ś•Ś“Ś”?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Ś‘Ś“Ś€Ś“Ś€ŚŸ ڔڐڙکڙ"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Ś‘Ś“Ś€Ś“Ś€ŚŸ کڜ Ś”ŚąŚ‘Ś•Ś“Ś”"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"‏ڧڕړ ŚŚ™ŚžŚ•ŚȘ ŚœŚ‘Ś™Ś˜Ś•Śœ Ś”Ś ŚąŚ™ŚœŚ” کڜ ŚšŚ©ŚȘ SIM"</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 6b3bc87..078b3ce 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"éĄ”ăźæ“äœœă‚’ă‚­ăƒŁăƒłă‚»ăƒ«ă—ăŸă—ăŸă€‚"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"顔èȘèšŒăŻăƒŠăƒŒă‚¶ăƒŒă«ă‚ˆă‚Šă‚­ăƒŁăƒłă‚»ăƒ«ă•ă‚ŒăŸă—ăŸ"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"è©ŠèĄŒć›žæ•°ăźäžŠé™ă§ă™ă€‚ćŸŒă§ă‚‚ă†äž€ćșŠăŠè©Šă—ăă ă•ă„ă€‚"</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"è©ŠèĄŒć›žæ•°ăŒäžŠé™ă‚’è¶…ăˆăŸă—ăŸă€‚éĄ”èȘèšŒăŒç„ĄćŠčにăȘă‚ŠăŸă—ăŸă€‚"</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"è©ŠèĄŒć›žæ•°ăŒäžŠé™ă‚’è¶…ăˆăŸă—ăŸă€‚ä»Łă‚ă‚Šă«ç”»éąăƒ­ăƒƒă‚Żè§Łé™€ă‚’ć…„ćŠ›ă—ăŠăă ă•ă„ă€‚"</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"顔をçąșèȘă§ăăŸă›ă‚“。もう䞀ćșŠăŠè©Šă—ăă ă•ă„ă€‚"</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"顔èȘèšŒă‚’èš­ćźšă—ăŠă„ăŸă›ă‚“"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"タップしど ON にする"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"仕äș‹ç”šă‚ąăƒ—ăƒȘăŻă‚ă‚ŠăŸă›ă‚“"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"怋äșș甹ケプăƒȘăŻă‚ă‚ŠăŸă›ă‚“"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"怋äșșç”šăƒ—ăƒ­ăƒ•ă‚Ąă‚€ăƒ«ă§ <xliff:g id="APP">%s</xliff:g> ă‚’é–‹ăăŸă™ă‹ïŒŸ"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"仕äș‹ç”šăƒ—ăƒ­ăƒ•ă‚Ąă‚€ăƒ«ă§ <xliff:g id="APP">%s</xliff:g> ă‚’é–‹ăăŸă™ă‹ïŒŸ"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"怋äșșç”šăƒ–ăƒ©ă‚Šă‚¶ă‚’äœżç”š"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"仕äș‹ç”šăƒ–ăƒ©ă‚Šă‚¶ă‚’äœżç”š"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM ăźăƒăƒƒăƒˆăƒŻăƒŒă‚Ż ăƒ­ăƒƒă‚Żè§Łé™€ PIN"</string>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index 2c05e82..d33ad3b 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"ქაჟიქ ამოáƒȘნობა áƒ’áƒáƒŁáƒ„áƒ›áƒ“áƒ."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"საჼით განბლოკვა áƒ’áƒáƒŁáƒ„áƒ›áƒ“áƒ მომჼმარებლის მიერ"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"áƒ“áƒáƒ€áƒ˜áƒ„áƒĄáƒ˜áƒ áƒ“áƒ ბევრი მáƒȘდელობა. áƒȘადეთ მოგვიანებით."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"მეჱისმეჱად ბევრი მáƒȘდელობა იყო. საჼით განბლოკვა გათიჹულია."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"მეჱისმეჱად ბევრი მáƒȘდელობა იყო. ჹეიყვანეთ ეკრანის დაბლოკვის პარამეჱრები."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"ქაჟიქ დადასჱურება ვერ ჼერჼდება. áƒȘადეთ ჼელაჼლა."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"თჄვენ არ დაგიყენებიათ საჼით განბლოკვა."</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ჹეეჼეთ áƒ©áƒáƒĄáƒáƒ áƒ—áƒáƒ•áƒáƒ“"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"სამსაჼურის აპები არ არის"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"პირადი აპები არ არის"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"გსურთ <xliff:g id="APP">%s</xliff:g>-იქ გაჼსნა áƒ—áƒ„áƒ•áƒ”áƒœáƒĄ პირად პროჀილლი?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"გსურთ <xliff:g id="APP">%s</xliff:g>-იქ გაჼსნა áƒ—áƒ„áƒ•áƒ”áƒœáƒĄ სამსაჼურის პროჀილლი?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"პირადი ბრაუზერის გამოყენება"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"სამსაჼურის ბრაუზერის გამოყენება"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM áƒ„áƒĄáƒ”áƒšáƒ˜áƒĄ განბლოკვის PIN-კოდი"</string>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index 543aaa5..f8d7ddf 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"БДтті Ń‚Đ°ĐœŃƒĐŽĐ°Đœ бас тартылЎы."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"ПаĐčĐŽĐ°Đ»Đ°ĐœŃƒŃˆŃ‹ бДт Ń‚Đ°ĐœŃƒ Ń„ŃƒĐœĐșŃ†ĐžŃŃŃ‹ĐœĐ°Đœ бас тартты."</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"ĐąŃ‹ĐŒ ĐșÓ©Đż әрДĐșДт жасалЎы. КДĐčŃ–ĐœŃ–Ń€Đ”Đș Ò›Đ°ĐčŃ‚Đ°Đ»Đ°ÒŁŃ‹Đ·."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"ĐąŃ‹ĐŒ ĐșÓ©Đż әрДĐșДт жасалЎы. БДт Ń‚Đ°ĐœŃƒ Ń„ŃƒĐœĐșцоясы Ó©ŃˆŃ–Ń€Ń–Đ»ĐŽŃ–."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"ĐąŃ‹ĐŒ ĐșÓ©Đż әрДĐșДт жасалЎы. ĐžĐœŃ‹ÒŁ ĐŸŃ€ĐœŃ‹ĐœĐ° эĐșŃ€Đ°Đœ Ò›Ò±Đ»ĐżŃ‹Đœ Đ”ĐœĐłŃ–Đ·Ń–ÒŁŃ–Đ·."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"БДтті Ń‚Đ°ĐœŃƒ ĐŒÒŻĐŒĐșŃ–Đœ Đ”ĐŒĐ”Ń. Ó˜Ń€Đ”ĐșДтті Ò›Đ°ĐčŃ‚Đ°Đ»Đ°ÒŁŃ‹Đ·."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"БДт Ń‚Đ°ĐœŃƒ Ń„ŃƒĐœĐșцоясы Ń€Đ”Ń‚Ń‚Đ”Đ»ĐŒĐ”ĐłĐ”Đœ."</string>
@@ -1360,7 +1359,7 @@
     <string name="usb_supplying_notification_title" msgid="5378546632408101811">"Đ–Đ°Đ»Ò“Đ°ĐœÒ“Đ°Đœ Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ USB Đ°Ń€Ò›Ń‹Đ»Ń‹ Đ·Đ°Ń€ŃĐŽŃ‚Đ°Đ»ŃƒĐŽĐ°"</string>
     <string name="usb_mtp_notification_title" msgid="1065989144124499810">"USB Đ°Ń€Ò›Ń‹Đ»Ń‹ фаĐčĐ» Đ¶Ń–Đ±Đ”Ń€Ńƒ ĐŒÒŻĐŒĐșŃ–ĐœĐŽŃ–ĐłŃ– Ò›ĐŸŃŃ‹Đ»ĐŽŃ‹"</string>
     <string name="usb_ptp_notification_title" msgid="5043437571863443281">"PTP Ń€Đ”Đ¶ĐžĐŒŃ– USB Đ°Ń€Ò›Ń‹Đ»Ń‹ Ò›ĐŸŃŃ‹Đ»ĐŽŃ‹"</string>
-    <string name="usb_tether_notification_title" msgid="8828527870612663771">"USB-Ń‚Đ”Ń‚Đ”Ń€ĐžĐœĐł Ń€Đ”Đ¶ĐžĐŒŃ– Ò›ĐŸŃŃ‹Đ»ĐŽŃ‹"</string>
+    <string name="usb_tether_notification_title" msgid="8828527870612663771">"USB Ń‚Đ”Ń‚Đ”Ń€ĐžĐœĐł Ń€Đ”Đ¶ĐžĐŒŃ– Ò›ĐŸŃŃ‹Đ»ĐŽŃ‹"</string>
     <string name="usb_midi_notification_title" msgid="7404506788950595557">"MIDI Ń€Đ”Đ¶ĐžĐŒŃ– USB Đ°Ń€Ò›Ń‹Đ»Ń‹ Ò›ĐŸŃŃ‹Đ»ĐŽŃ‹"</string>
     <string name="usb_uvc_notification_title" msgid="2030032862673400008">"ÒšÒ±Ń€Ń‹Đ»Ò“Ń‹ ĐČДб-ĐșĐ°ĐŒĐ”Ń€Đ° Ń€Đ”Ń‚Ń–ĐœĐŽĐ” Đ¶Đ°Đ»Ò“Đ°ĐœĐŽŃ‹"</string>
     <string name="usb_accessory_notification_title" msgid="1385394660861956980">"USB Đ¶Đ°Đ±ĐŽŃ‹Ò“Ń‹ Đ¶Đ°Đ»Ò“Đ°ĐœÒ“Đ°Đœ"</string>
@@ -1628,7 +1627,7 @@
     <string name="media_route_button_content_description" msgid="2299223698196869956">"ĐąŃ€Đ°ĐœŃĐ»ŃŃ†ĐžŃĐ»Đ°Ńƒ"</string>
     <string name="media_route_chooser_title" msgid="6646594924991269208">"ÒšÒ±Ń€Ń‹Đ»Ò“Ń‹Ò“Đ° Đ¶Đ°Đ»Ò“Đ°Ńƒ"</string>
     <string name="media_route_chooser_title_for_remote_display" msgid="3105906508794326446">"Đ­ĐșŃ€Đ°Đœ Ń‚Ń€Đ°ĐœŃĐ»ŃŃ†ĐžŃŃŃ‹"</string>
-    <string name="media_route_chooser_searching" msgid="6119673534251329535">"ÒšÒ±Ń€Ń‹Đ»Ò“Ń‹Đ»Đ°Ń€ ізЎДліп жатыр…"</string>
+    <string name="media_route_chooser_searching" msgid="6119673534251329535">"ÒšÒ±Ń€Ń‹Đ»Ò“Ń‹Đ»Đ°Ń€ Ń–Đ·ĐŽĐ”Đ»ŃƒĐŽĐ”…"</string>
     <string name="media_route_chooser_extended_settings" msgid="2506352159381327741">"ĐŸĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ»Đ”Ń€"</string>
     <string name="media_route_controller_disconnect" msgid="7362617572732576959">"ĐĐ¶Ń‹Ń€Đ°Ń‚Ńƒ"</string>
     <string name="media_route_status_scanning" msgid="8045156315309594482">"йДĐșŃĐ”Ń€ŃƒĐŽĐ”..."</string>
@@ -1873,7 +1872,7 @@
     <string name="confirm_battery_saver" msgid="5247976246208245754">"ЖараĐčЮы"</string>
     <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"Đ‘Đ°Ń‚Đ°Ń€Đ”ŃĐœŃ‹ ÒŻĐœĐ”ĐŒĐŽĐ”Ńƒ Ń€Đ”Đ¶ĐžĐŒŃ– Ò›Đ°Ń€Đ°ÒŁÒ“Ń‹ Ń€Đ”Đ¶ĐžĐŒĐŽŃ– ісĐșĐ” Ò›ĐŸŃĐ°ĐŽŃ‹ Đ¶Ó™ĐœĐ” Ń„ĐŸĐœĐŽŃ‹Ò› әрДĐșДттДргД, ĐșĐ”Đčбір ĐČĐžĐ·ŃƒĐ°Đ»ĐŽŃ‹Ò› әсДрлДргД, бДлгілі бір Ń„ŃƒĐœĐșŃ†ĐžŃĐ»Đ°Ń€ ĐŒĐ”Đœ ĐșĐ”Đčбір жДлі баĐčĐ»Đ°ĐœŃ‹ŃŃ‚Đ°Ń€Ń‹ĐœĐ° шДĐșŃ‚Đ”Ńƒ Ò›ĐŸŃĐŽŃ‹ ĐœĐ”ĐŒĐ”ŃĐ” ĐŸĐ»Đ°Ń€ĐŽŃ‹ Ó©ŃˆŃ–Ń€Đ”ĐŽŃ–."</string>
     <string name="battery_saver_description" msgid="8518809702138617167">"Đ‘Đ°Ń‚Đ°Ń€Đ”ŃĐœŃ‹ ÒŻĐœĐ”ĐŒĐŽĐ”Ńƒ Ń€Đ”Đ¶ĐžĐŒŃ– Ò›Đ°Ń€Đ°ÒŁÒ“Ń‹ Ń€Đ”Đ¶ĐžĐŒĐŽŃ– ісĐșĐ” Ò›ĐŸŃĐ°ĐŽŃ‹ Đ¶Ó™ĐœĐ” Ń„ĐŸĐœĐŽŃ‹Ò› әрДĐșДттДргД, ĐșĐ”Đčбір ĐČĐžĐ·ŃƒĐ°Đ»ĐŽŃ‹Ò› әсДрлДргД, бДлгілі бір Ń„ŃƒĐœĐșŃ†ĐžŃĐ»Đ°Ń€ ĐŒĐ”Đœ ĐșĐ”Đčбір жДлі баĐčĐ»Đ°ĐœŃ‹ŃŃ‚Đ°Ń€Ń‹ĐœĐ° шДĐșŃ‚Đ”Ńƒ Ò›ĐŸŃĐŽŃ‹ ĐœĐ”ĐŒĐ”ŃĐ” ĐŸĐ»Đ°Ń€ĐŽŃ‹ Ó©ŃˆŃ–Ń€Đ”ĐŽŃ–."</string>
-    <string name="data_saver_description" msgid="4995164271550590517">"ДДрДĐș ŃˆŃ‹Ò“Ń‹ĐœŃ‹Đœ азаĐčту ÒŻŃˆŃ–Đœ трафоĐșті ÒŻĐœĐ”ĐŒĐŽĐ”Ńƒ Ń€Đ”Đ¶ĐžĐŒŃ–ĐœĐŽĐ” ĐșĐ”Đčбір Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°Đ»Đ°Ń€Ò“Đ° ЎДрДĐșті Ń„ĐŸĐœĐŽŃ‹Ò› Ń€Đ”Đ¶ĐžĐŒĐŽĐ” Đ¶Ń–Đ±Đ”Ń€ŃƒĐłĐ” Đ¶Ó™ĐœĐ” Đ°Đ»ŃƒÒ“Đ° тыĐčŃ‹ĐŒ ŃĐ°Đ»Ń‹ĐœĐ°ĐŽŃ‹. ĐŃˆŃ‹Ò› Ń‚Ò±Ń€Ò“Đ°Đœ Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ° ЎДрДĐșті шДĐșŃ‚Đ”ŃƒĐ»Ń– ŃˆĐ°ĐŒĐ°ĐŽĐ° паĐčĐŽĐ°Đ»Đ°ĐœĐ°ĐŽŃ‹ (ĐŒŃ‹ŃĐ°Đ»Ń‹, ĐșДсĐșŃ–ĐœĐŽĐ”Ń€ ĐŸĐ»Đ°Ń€ĐŽŃ‹ Ń‚ÒŻŃ€Ń‚ĐșĐ”ĐœĐłĐ” ĐŽĐ”ĐčŃ–Đœ ĐșÓ©Ń€ŃĐ”Ń‚Ń–Đ»ĐŒĐ”ĐčЮі)."</string>
+    <string name="data_saver_description" msgid="4995164271550590517">"ДДрДĐș ŃˆŃ‹Ò“Ń‹ĐœŃ‹Đœ азаĐčту ÒŻŃˆŃ–Đœ брафоĐșті ÒŻĐœĐ”ĐŒĐŽĐ”Ńƒ Ń€Đ”Đ¶ĐžĐŒŃ–ĐœĐŽĐ” ĐșĐ”Đčбір Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°Đ»Đ°Ń€Ò“Đ° ЎДрДĐșті Ń„ĐŸĐœĐŽŃ‹Ò› Ń€Đ”Đ¶ĐžĐŒĐŽĐ” Đ¶Ń–Đ±Đ”Ń€ŃƒĐłĐ” Đ¶Ó™ĐœĐ” Đ°Đ»ŃƒÒ“Đ° тыĐčŃ‹ĐŒ ŃĐ°Đ»Ń‹ĐœĐ°ĐŽŃ‹. ĐŃˆŃ‹Ò› Ń‚Ò±Ń€Ò“Đ°Đœ Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ° ЎДрДĐșті шДĐșŃ‚Đ”ŃƒĐ»Ń– ŃˆĐ°ĐŒĐ°ĐŽĐ° паĐčĐŽĐ°Đ»Đ°ĐœĐ°ĐŽŃ‹ (ĐŒŃ‹ŃĐ°Đ»Ń‹, ĐșДсĐșŃ–ĐœĐŽĐ”Ń€ ĐŸĐ»Đ°Ń€ĐŽŃ‹ Ń‚ÒŻŃ€Ń‚ĐșĐ”ĐœĐłĐ” ĐŽĐ”ĐčŃ–Đœ ĐșÓ©Ń€ŃĐ”Ń‚Ń–Đ»ĐŒĐ”ĐčЮі)."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"брафоĐșті ÒŻĐœĐ”ĐŒĐŽĐ”Ńƒ Ń€Đ”Đ¶ĐžĐŒŃ– Ò›ĐŸŃŃ‹Đ»ŃŃ‹Đœ ба?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"ÒšĐŸŃŃƒ"</string>
     <string name="zen_mode_duration_minutes_summary" msgid="4555514757230849789">"{count,plural, =1{Бір ĐŒĐžĐœŃƒŃ‚ ({formattedTime} ĐŽĐ”ĐčŃ–Đœ)}other{# ĐŒĐžĐœŃƒŃ‚ ({formattedTime} ĐŽĐ”ĐčŃ–Đœ)}}"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ÒšĐŸŃŃƒ ÒŻŃˆŃ–Đœ Ń‚ÒŻŃ€Ń‚Ń–ÒŁŃ–Đ·"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Đ–Ò±ĐŒŃ‹Ń Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°Đ»Đ°Ń€Ń‹ Đ¶ĐŸÒ›."</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Đ–Đ”ĐșĐ” Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°Đ»Đ°Ń€ Đ¶ĐŸÒ›."</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"<xliff:g id="APP">%s</xliff:g> Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°ŃŃ‹Đœ жДĐșĐ” ĐżŃ€ĐŸŃ„ĐžĐ»Ń–ÒŁŃ–Đ·ĐŽĐ” ашу ĐșДрДĐș пД?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"<xliff:g id="APP">%s</xliff:g> Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°ŃŃ‹Đœ Đ¶Ò±ĐŒŃ‹Ń ĐżŃ€ĐŸŃ„ĐžĐ»Ń–ÒŁŃ–Đ·ĐŽĐ” ашу ĐșДрДĐș пД?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Đ–Đ”ĐșĐ” Đ±Ń€Đ°ŃƒĐ·Đ”Ń€ĐŽŃ– паĐčĐŽĐ°Đ»Đ°ĐœŃƒ"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Đ–Ò±ĐŒŃ‹Ń Đ±Ń€Đ°ŃƒĐ·Đ”Ń€Ń–Đœ паĐčĐŽĐ°Đ»Đ°ĐœŃƒ"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM Đ¶Đ”Đ»Ń–ŃŃ–ĐœŃ–ÒŁ Ò›Ò±Đ»ĐżŃ‹Đœ Đ°ŃˆĐ°Ń‚Ń‹Đœ PIN ĐșĐŸĐŽŃ‹"</string>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index aef2196..1c28eea 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"បាន​បោះបង់​ប្រតិបត្តិការចាប់​ផ្ទៃមុខ។"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"ážąáŸ’áž“áž€áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹â€‹áž”áž¶áž“áž”áŸ„áŸ‡áž”áž„áŸ‹â€‹áž€áž¶ážšážŠáŸ„áŸ‡ážŸáŸ„â€‹ážáž¶áž˜áž‘áž˜áŸ’ážšáž„áŸ‹áž˜áž»áž"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"ព្យាយាមចឌលច្រសនពេកហសយ។ សឌមព្យាយាមម្តងទៀតពេលក្រោយ។"</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"ព្យាយាម​ដោះសោ​ច្រសនដងពេក។ ការដោះសោ​តាមទម្រង់មុខ​ត្រឌវបានបិទ​។"</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"ព្យាយាម​ដោះសោ​ច្រសនដងពេក។ ážŸážŒáž˜áž”áž‰áŸ’áž…ážŒáž›â€‹áž€áž¶ážšáž…áž¶áž€áŸ‹ážŸáŸ„â€‹ážąáŸáž€áŸ’ážšáž„áŸ‹â€‹áž‡áŸ†áž“ážœážŸážœáž·áž‰â€‹áŸ”"</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"áž˜áž·áž“â€‹ážąáž¶áž…â€‹áž•áŸ’áž‘áŸ€áž„áž•áŸ’áž‘áž¶ážáŸ‹â€‹áž˜áž»ážâ€‹áž”áž¶áž“â€‹áž‘áŸáŸ” សឌមព្យាយាមម្ដងទៀត។"</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"ážąáŸ’áž“áž€â€‹áž˜áž·áž“áž”áž¶áž“â€‹ážšáŸ€áž”áž…áŸ†â€‹áž€áž¶ážšážŠáŸ„áŸ‡ážŸáŸ„ážáž¶áž˜áž‘áž˜áŸ’ážšáž„áŸ‹áž˜áž»ážâ€‹áž‘áŸ"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ចុច​ដសម្បឞ​បសក"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"គ្មាន​កម្មវិធឞ​ការងារ​ទេ"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"គ្មាន​កម្មវិធឞ​ផ្ទាល់ខ្លវន​ទេ"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"បសក <xliff:g id="APP">%s</xliff:g> áž“áŸ…áž€áŸ’áž“áž»áž„áž€áž˜áŸ’ážšáž„â€‹áž–áŸážáŸŒáž˜áž¶áž“â€‹áž•áŸ’áž‘áž¶áž›áŸ‹â€‹ážáŸ’áž›ážœáž“ážšáž”ážŸáŸ‹ážąáŸ’áž“áž€ážŹ?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"បសក <xliff:g id="APP">%s</xliff:g> áž“áŸ…áž€áŸ’áž“áž»áž„áž€áž˜áŸ’ážšáž„áž–áŸážáŸŒáž˜áž¶áž“áž€áž¶ážšáž„áž¶ážšážšáž”ážŸáŸ‹ážąáŸ’áž“áž€ážŹ?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"áž”áŸ’ážšážŸâ€‹áž€áž˜áŸ’áž˜ážœáž·áž’ážžážšáž»áž€ážšáž€â€‹ážáž¶áž˜ážąáŸŠážžáž“áž’ážșណិត​ផ្ទាល់ខ្លវន"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"áž”áŸ’ážšážŸâ€‹áž€áž˜áŸ’áž˜ážœáž·áž’ážžážšáž»áž€ážšáž€â€‹ážáž¶áž˜ážąáŸŠážžáž“áž’ážșណិត​សម្រាប់​ការងារ"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"កឌដ PIN ដោះ​សោ​បណ្ដាញ​ស៊ឞម"</string>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index 2faf699..1ab4832f 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -65,7 +65,7 @@
     <string name="CnirMmi" msgid="885292039284503036">"àȕàČ°àł† àČźàČŸàČĄàłàČ” àČžàȂàČ–àłàČŻàł†àČŻàČšàłàČšàł àČšàČżàČ°àłàČŹàȂàȧàČżàČžàČČàČŸàȗàČżàČŠàł†"</string>
     <string name="ThreeWCMmi" msgid="2436550866139999411">"àČźàł‚àČ°àł àČźàČŸàČ°àłàȗàČŠàČČàłàČČàČż àȕàČ°àł† àČźàČŸàČĄàłàČ”àČżàČ•àł†"</string>
     <string name="RuacMmi" msgid="1876047385848991110">"àȅàČšàČȘàł‡àČ•àłàČ·àČżàČ€ àȕàČżàȰàČżàȕàČżàȰàČż àČźàČŸàČĄàłàČ” àȕàČ°àł†àȗàČł àČ€àČżàȰàČžàłàȕàČŸàȰ"</string>
-    <string name="CndMmi" msgid="185136449405618437">"àȕàČ°àł† àČźàČŸàČĄàłàČ” àČžàȂàČ–àłàČŻàł†àČŻ àČĄàł†àČČàČżàČ”àȰàČż"</string>
+    <string name="CndMmi" msgid="185136449405618437">"àȕàČ°àł† àČźàČŸàČĄàłàČ” àČžàȂàČ–àłàČŻàł†àČŻ àČ”àČżàČ€àȰàČŁàł†"</string>
     <string name="DndMmi" msgid="8797375819689129800">"àȅàČĄàȚàČŁàł† àČźàČŸàČĄàČŹàł‡àČĄ"</string>
     <string name="CLIRDefaultOnNextCallOn" msgid="4511621022859867988">"àȕàČ°àł†àČźàČŸàČĄàłàČ”àČ”àȰ ID àȅàČšàłàČšàł àČšàČżàČ°àłàČŹàȂàȧàČżàČžàłàČ”àȂàČ€àł† àČĄàČżàČ«àČŸàČČàłàČŸàł àČźàČŸàČĄàČČàČŸàȗàČżàČŠàł†. àČźàłàȂàČŠàČżàČš àȕàČ°àł†: àČšàČżàČ°àłàČŹàȂàȧàČżàČžàČČàČŸàȗàČżàČŠàł†"</string>
     <string name="CLIRDefaultOnNextCallOff" msgid="5036749051007098105">"àȕàČ°àł†àČźàČŸàČĄàłàČ”àČ”àȰ ID àȅàČšàłàČšàł àČšàČżàČ°àłàČŹàȂàȧàČżàČžàłàČ”àȂàČ€àł† àČĄàČżàČ«àČŸàČČàłàČŸàł àČźàČŸàČĄàČČàČŸàȗàČżàČŠàł†. àČźàłàȂàČŠàČżàČš àȕàČ°àł†: àČšàČżàČ°àłàČŹàȂàȧàČżàČžàČżàČČàłàČČ"</string>
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"àČźàłàȖàČŠ àȕàČŸàČ°àłàČŻàȚàȰàČŁàł†àČŻàČšàłàČšàł àȰàČŠàłàČŠàłàČ—àłŠàČłàČżàČžàČČàČŸàȗàČżàČŠàł†."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"àČ«àł‡àČžàł àȅàČšàł‌àČČàČŸàČ•àł àȅàČšàłàČšàł àČŹàČłàČ•àł†àČŠàČŸàȰàČ°àł àȰàČŠàłàČŠàłàČ—àłŠàČłàČżàČžàČżàČŠàłàČŠàČŸàČ°àł†"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"àČčàČČàČ”àł àČŹàČŸàȰàČż àČȘàłàȰàČŻàČ€àłàČšàČżàČžàČżàČŠàłàČŠàł€àȰàČż. àČšàȂàČ€àȰ àČźàČ€àłàČ€àł† àČȘàłàȰàČŻàČ€àłàČšàČżàČžàČż."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"àČčàČČàČ”àł àČŹàČŸàȰàČż àČȘàłàȰàČŻàČ€àłàČšàČżàČžàČżàČŠàłàČŠàł€àȰàČż. àČ«àł‡àČžàł àȅàČšàł‌àČČàČŸàČ•àł àȅàČšàłàČšàł àČšàČżàČ·àłàČ•àłàȰàČżàČŻàČ—àłŠàČłàČżàČžàČČàČŸàȗàČżàČŠàł†."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"àČčàČČàČ”àł àČŹàČŸàȰàČż àČȘàłàȰàČŻàČ€àłàČšàČżàČžàČżàČŠàłàČŠàł€àȰàČż. àČŹàČŠàČČàČŸàȗàČż àČžàłàČ•àłàČ°àł€àČšàł àČČàČŸàČ•àł àȅàČšàłàČšàł àČšàČźàł‚àČŠàČżàČžàČż."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"àČźàłàȖàČ”àČšàłàČšàł àČŠàłƒàČąàł€àȕàȰàČżàČžàČČàł àČžàČŸàČ§àłàČŻàČ”àČŸàȗàČČàČżàČČàłàČČ àČȘàłàČšàȃ àČȘàłàȰàČŻàČ€àłàČšàČżàČžàČż."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"àČšàł€àČ”àł àČ«àł‡àČžàł àȅàČšàł‌àČČàČŸàČ•àł àȅàČšàłàČšàł àČžàł†àȟàČȘàł àČźàČŸàČĄàČżàČČàłàČČ"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"àȆàČšàł‌‌‌ àČźàČŸàČĄàČČàł àČŸàłàČŻàČŸàČȘàł‌ àČźàČŸàČĄàČż"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"àČŻàČŸàČ”àłàČŠàł‡ àČ•àł†àČČàČžàČ•àłàČ•àł† àČžàȂàČŹàȂàȧàČżàČžàČżàČŠ àČ†àłàČŻàČȘàł‌àȗàČłàČżàČČàłàČČ"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"àČŻàČŸàČ”àłàČŠàł‡ àČ”àłˆàČŻàČ•àłàČ€àČżàȕ àČ†àłàČŻàČȘàł‌àȗàČłàČżàČČàłàČČ"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"àČšàČżàČźàłàČź àČ”àłˆàČŻàČ•àłàČ€àČżàȕ àČȘàłàČ°àłŠàČ«àłˆàČČàł‌àČšàČČàłàČČàČż <xliff:g id="APP">%s</xliff:g> àȅàČšàłàČšàł àČ€àł†àČ°àł†àČŻàČŹàł‡àČ•àł†?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"àČšàČżàČźàłàČź àȉàČŠàłàČŻàł‹àȗàČŠ àČȘàłàČ°àłŠàČ«àłˆàČČàł‌àČšàČČàłàČČàČż <xliff:g id="APP">%s</xliff:g> àȅàČšàłàČšàł àČ€àł†àČ°àł†àČŻàČŹàł‡àČ•àł†?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"àČ”àłˆàČŻàČ•àłàČ€àČżàȕ àČŹàłàČ°àłŒàČžàČ°àł àČŹàČłàČžàČż"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"àȉàČŠàłàČŻàł‹àȗ àČŹàłàČ°àłŒàČžàČ°àł àČŹàČłàČžàČż"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM àČšàł†àČŸàł‌àČ”àČ°àłàČ•àł‌ àȅàČšàł‌àČČàČŸàČ•àł‌ àČźàČŸàČĄàłàČ” àČȘàČżàČšàł‌"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index b4c0599..1efb87a 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"얌ꔎ 읞식 작업읎 췚소되었슔니닀."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"ì‚Źìš©ìžê°€ 얌ꔎ 읞식 잠ꞈ 핎제넌 췚소했슔니닀."</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"시도 횟수가 너묮 많슔니닀. 나쀑에 닀시 시도하섞요."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"시도 횟수가 너묮 많슔니닀. 얌ꔎ 읞식 잠ꞈ 핎제가 ì‚Źìš© 쀑지되었슔니닀."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"시도 횟수가 너묮 많슔니닀. 화멎 잠ꞈ을 대신 ì‚Źìš©í•˜ì„žìš”."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"얌ꔎ을 확읞할 수 없슔니닀. 닀시 시도하섞요."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"얌ꔎ 읞식 잠ꞈ 핎제넌 섀정하지 않았슔니닀."</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"íƒ­í•˜ì—Ź ì‚Źìš© 섀정"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"직임 앱 없음"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"개읞 앱 없음"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"개읞 í”„ëĄœí•„ì—ì„œ <xliff:g id="APP">%s</xliff:g> 앱을 ì—Źì‹œêČ ìŠ”ë‹ˆêčŒ?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"직임 í”„ëĄœí•„ì—ì„œ <xliff:g id="APP">%s</xliff:g> 앱을 ì—Źì‹œêČ ìŠ”ë‹ˆêčŒ?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"개읞 람띌우저 ì‚Źìš©"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"직임 람띌우저 ì‚Źìš©"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM ë„€íŠžì›ŒíŹ 잠ꞈ 핎제 PIN"</string>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index 7b87b83..f05fe73 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -684,7 +684,7 @@
     <string name="face_acquired_too_right" msgid="6245286514593540859">"ĐąĐ”Đ»Đ”Ń„ĐŸĐœĐŽŃƒ ŃĐŸĐ»ĐłĐŸ Đ¶Ń‹Đ»ĐŽŃ‹Ń€Ń‹ÒŁŃ‹Đ·"</string>
     <string name="face_acquired_too_left" msgid="9201762240918405486">"ĐąĐ”Đ»Đ”Ń„ĐŸĐœĐŽŃƒ ĐŸÒŁĐłĐŸ Đ¶Ń‹Đ»ĐŽŃ‹Ń€Ń‹ÒŁŃ‹Đ·"</string>
     <string name="face_acquired_poor_gaze" msgid="4427153558773628020">"ĐąÒŻĐ·ĐŒÓ©ĐłÒŻÒŁÒŻĐ·ĐłÓ© Ń‚ÒŻĐ· ĐșĐ°Ń€Đ°ÒŁŃ‹Đ·."</string>
-    <string name="face_acquired_not_detected" msgid="1057966913397548150">"Đ–ÒŻĐ·ÒŻÒŁÒŻĐ· ĐșÓ©Ń€ÒŻĐœĐ±Ó©Đč жатат. ĐąĐ”Đ»Đ”Ń„ĐŸĐœĐŽŃƒ ĐŒĐ°ÒŁĐŽĐ°ĐčŃ‹ÒŁŃ‹Đ·ĐłĐ° ĐșĐ°Ń€ĐŒĐ°ÒŁŃ‹Đ·."</string>
+    <string name="face_acquired_not_detected" msgid="1057966913397548150">"Đ–ÒŻĐ·ÒŻÒŁÒŻĐ· ĐșÓ©Ń€ÒŻĐœĐ±Ó©Đč жатат. ĐąĐ”Đ»Đ”Ń„ĐŸĐœĐŽŃƒ ĐșÓ©Đ·ĐŽÓ©Ń€ÒŻÒŁÒŻĐ·ĐŽÒŻĐœ ĐŽĐ”ÒŁĐłŃŃĐ»ĐžĐœĐŽĐ” ĐșĐ°Ń€ĐŒĐ°ÒŁŃ‹Đ·."</string>
     <string name="face_acquired_too_much_motion" msgid="8199691445085189528">"КыĐčĐŒŃ‹Đ»ĐŽĐ°Đż Đ¶ĐžĐ±Đ”Ń€ĐŽĐžÒŁĐžĐ·. ĐąĐ”Đ»Đ”Ń„ĐŸĐœĐŽŃƒ Ń‚ÒŻĐ· ĐșĐ°Ń€ĐŒĐ°ÒŁŃ‹Đ·."</string>
     <string name="face_acquired_recalibrate" msgid="8724013080976469746">"Đ–ÒŻĐ·ÒŻÒŁÒŻĐ·ĐŽÒŻ ĐșаĐčра Ń‚Đ°Đ°ĐœŃ‹Ń‚Ń‹ÒŁŃ‹Đ·."</string>
     <string name="face_acquired_too_different" msgid="2520389515612972889">"Đ–ÒŻĐ· Ń‚Đ°Đ°ĐœŃ‹Đ»Đ±Đ°Đč жатат. КаĐčŃ‚Đ°Đ»Đ°ÒŁŃ‹Đ·."</string>
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Đ–ÒŻĐ·ĐŽÒŻĐœ Đ°ĐœŃ‹ĐșŃ‚Ń‹ĐłŃ‹Đœ тДĐșŃˆĐ”Ń€ÒŻÒŻ Đ¶ĐŸĐșĐșĐŸ чыгарылЎы."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Đ–ÒŻĐ·ÒŻĐœÓ©Đœ Ń‚Đ°Đ°ĐœŃ‹Đż ачуу Ń„ŃƒĐœĐșŃ†ĐžŃŃŃ‹Đœ ĐșĐŸĐ»ĐŽĐŸĐœŃƒŃƒŃ‡Ńƒ Ó©Ń‡ÒŻŃ€ÒŻĐż салЎы"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Ӛтө ĐșÓ©Đż Đ¶ĐŸĐ»Ńƒ араĐșДт Đ¶Đ°ŃĐ°ĐŽŃ‹ÒŁŃ‹Đ·. Бор Đ°Đ·ĐŽĐ°Đœ ĐșĐžĐčĐžĐœ ĐșаĐčталап ĐșÓ©Ń€ÒŻÒŁÒŻĐ·."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Ӛтө ĐșÓ©Đż Đ¶ĐŸĐ»Ńƒ араĐșДт ĐșŃ‹Đ»ĐŽŃ‹ÒŁŃ‹Đ·. Đ–ÒŻĐ·ÒŻĐœÓ©Đœ Ń‚Đ°Đ°ĐœŃ‹Đż ачуу Ń„ŃƒĐœĐșцоясы Ó©Ń‡ÒŻŃ€ÒŻĐ»ĐŽÒŻ."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Ӛтө ĐșÓ©Đż Đ¶ĐŸĐ»Ńƒ араĐșДт ĐșŃ‹Đ»ĐŽŃ‹ÒŁŃ‹Đ·. ЭрĐșĐ°ĐœĐŽŃ‹ ĐșŃƒĐ»ĐżŃƒĐ»ĐŸĐŸ Ń„ŃƒĐœĐșŃ†ĐžŃŃŃ‹Đœ ĐșĐŸĐ»ĐŽĐŸĐœŃƒÒŁŃƒĐ·."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Đ–ÒŻĐ· ырасталбаĐč жатат. КаĐčталап ĐșÓ©Ń€ÒŻÒŁÒŻĐ·."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Đ–ÒŻĐ·ÒŻĐœÓ©Đœ Ń‚Đ°Đ°ĐœŃ‹Đż ачуу Ń„ŃƒĐœĐșŃ†ĐžŃŃŃ‹Đœ Đ¶Ó©ĐœĐŽÓ©Đč ŃĐ»Đ”ĐșсОз"</string>
@@ -1080,7 +1079,7 @@
     <string name="menu_function_shortcut_label" msgid="2367112760987662566">"Function+"</string>
     <string name="menu_space_shortcut_label" msgid="5949311515646872071">"Đ±ĐŸŃˆŃ‚ŃƒĐș"</string>
     <string name="menu_enter_shortcut_label" msgid="6709499510082897320">"enter"</string>
-    <string name="menu_delete_shortcut_label" msgid="4365787714477739080">"Ó©Ń‡ÒŻŃ€ÒŻÒŻ"</string>
+    <string name="menu_delete_shortcut_label" msgid="4365787714477739080">"Đ¶ĐŸĐș ĐșŃ‹Đ»ŃƒŃƒ"</string>
     <string name="search_go" msgid="2141477624421347086">"ИзЎөө"</string>
     <string name="search_hint" msgid="455364685740251925">"ИзЎөө…"</string>
     <string name="searchview_description_search" msgid="1045552007537359343">"ИзЎөө"</string>
@@ -1146,7 +1145,7 @@
     <string name="paste" msgid="461843306215520225">"Đ§Đ°ĐżŃ‚ĐŸĐŸ"</string>
     <string name="paste_as_plain_text" msgid="7664800665823182587">"Đ–Ó©ĐœÓ©ĐșÓ©Đč тДĐșст Đșатары Ń‡Đ°ĐżŃ‚ĐŸĐŸ"</string>
     <string name="replace" msgid="7842675434546657444">"ĐĐ»ĐŒĐ°ŃˆŃ‚Ń‹Ń€ŃƒŃƒ…"</string>
-    <string name="delete" msgid="1514113991712129054">"ÓšŃ‡ÒŻŃ€ÒŻÒŻ"</string>
+    <string name="delete" msgid="1514113991712129054">"Đ–ĐŸĐș ĐșŃ‹Đ»ŃƒŃƒ"</string>
     <string name="copyUrl" msgid="6229645005987260230">"URL ĐșÓ©Ń‡ÒŻŃ€ĐŒÓ©Đ»Ó©Ó©"</string>
     <string name="selectTextMode" msgid="3225108910999318778">"йДĐșст Ń‚Đ°ĐœĐŽĐŸĐŸ"</string>
     <string name="undo" msgid="3175318090002654673">"АртĐșа ĐșаĐčтаруу"</string>
@@ -1154,7 +1153,7 @@
     <string name="autofill" msgid="511224882647795296">"АĐČŃ‚ĐŸŃ‚ĐŸĐ»Ń‚ŃƒŃ€ŃƒŃƒ"</string>
     <string name="textSelectionCABTitle" msgid="5151441579532476940">"йДĐșст Ń‚Đ°ĐœĐŽĐŸĐŸ"</string>
     <string name="addToDictionary" msgid="8041821113480950096">"ĐĄÓ©Đ·ĐŽÒŻĐșĐșÓ© ĐșĐŸŃˆŃƒŃƒ"</string>
-    <string name="deleteText" msgid="4200807474529938112">"ÓšŃ‡ÒŻŃ€ÒŻÒŻ"</string>
+    <string name="deleteText" msgid="4200807474529938112">"Đ–ĐŸĐș ĐșŃ‹Đ»ŃƒŃƒ"</string>
     <string name="inputMethod" msgid="1784759500516314751">"ĐšĐžŃ€ĐłĐžĐ·ÒŻÒŻ ыĐșĐŒĐ°ŃŃ‹"</string>
     <string name="editTextMenuTitle" msgid="857666911134482176">"йДĐșст Đ±ĐŸŃŽĐœŃ‡Đ° ĐžŃˆŃ‚Đ”Ń€"</string>
     <string name="input_method_nav_back_button_desc" msgid="3655838793765691787">"АртĐșа"</string>
@@ -1556,7 +1555,7 @@
     <string name="date_picker_next_month_button" msgid="4858207337779144840">"КоĐčĐžĐœĐșĐž аĐč"</string>
     <string name="keyboardview_keycode_alt" msgid="8997420058584292385">"Alt"</string>
     <string name="keyboardview_keycode_cancel" msgid="2134624484115716975">"АĐčĐœŃƒŃƒ"</string>
-    <string name="keyboardview_keycode_delete" msgid="2661117313730098650">"ÓšŃ‡ÒŻŃ€ÒŻÒŻ"</string>
+    <string name="keyboardview_keycode_delete" msgid="2661117313730098650">"Đ–ĐŸĐș ĐșŃ‹Đ»ŃƒŃƒ"</string>
     <string name="keyboardview_keycode_done" msgid="2524518019001653851">"Даяр"</string>
     <string name="keyboardview_keycode_mode_change" msgid="2743735349997999020">"Đ Đ”Đ¶ĐžĐŒĐŽĐž Ó©Đ·ĐłÓ©Ń€Ń‚ÒŻÒŻ"</string>
     <string name="keyboardview_keycode_shift" msgid="3026509237043975573">"Shift"</string>
@@ -1713,9 +1712,9 @@
     <string name="disable_accessibility_shortcut" msgid="5806091378745232383">"КысĐșа Đ¶ĐŸĐ»ĐŽŃƒ Ó©Ń‡ÒŻŃ€ÒŻÒŻ"</string>
     <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"КысĐșа Đ¶ĐŸĐ»ĐŽŃƒ ĐșĐŸĐ»ĐŽĐŸĐœŃƒŃƒ"</string>
     <string name="color_inversion_feature_name" msgid="2672824491933264951">"ĐąÒŻŃŃ‚Ó©Ń€ĐŽÒŻ ĐžĐœĐČĐ”Ń€ŃĐžŃĐ»ĐŸĐŸ"</string>
-    <string name="color_correction_feature_name" msgid="7975133554160979214">"ĐąÒŻŃÒŻĐœ Ń‚ŃƒŃƒŃ€Đ°Đ»ĐŸĐŸ"</string>
+    <string name="color_correction_feature_name" msgid="7975133554160979214">"ĐąÒŻŃŃ‚Ó©Ń€ĐŽÒŻ Ń‚ŃƒŃƒŃ€Đ°Đ»ĐŸĐŸ"</string>
     <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Бор ĐșĐŸĐ» Ń€Đ”Đ¶ĐžĐŒĐž"</string>
-    <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Дагы ĐșĐ°Ń€Đ°ÒŁĐłŃ‹"</string>
+    <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ĐšĐŸŃˆŃƒĐŒŃ‡Đ° ĐșĐ°Ń€Đ°ÒŁĐłŃ‹Đ»Đ°Ń‚ŃƒŃƒ"</string>
     <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Угуу Ń‚ÒŻĐ·ĐŒÓ©ĐșŃ‚Ó©Ń€ÒŻ"</string>
     <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ÒźĐœĐŽÒŻ ĐșĐ°Ń‚ŃƒŃƒĐ»Đ°Ń‚ŃƒŃƒ/аĐșŃ‹Ń€Ń‹ĐœĐŽĐ°Ń‚ŃƒŃƒ басĐșычтары басылып, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ĐșÒŻĐčĐłÒŻĐ·ÒŻĐ»ĐŽÒŻ."</string>
     <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ÒźĐœĐŽÒŻ ĐșĐ°Ń‚ŃƒŃƒĐ»Đ°Ń‚ŃƒŃƒ/аĐșŃ‹Ń€Ń‹ĐœĐŽĐ°Ń‚ŃƒŃƒ басĐșычтары басылып, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> Ó©Ń‡ÒŻŃ€ÒŻĐ»ĐŽÒŻ."</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ĐšÒŻĐčĐłÒŻĐ·ÒŻÒŻ ÒŻŃ‡ÒŻĐœ таптап ĐșĐŸŃŽÒŁŃƒĐ·"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Đ–ŃƒĐŒŃƒŃˆ ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸĐ»ĐŸŃ€Ńƒ Đ¶ĐŸĐș"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Đ–Đ”ĐșĐ” ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸĐ»ĐŸŃ€ Đ¶ĐŸĐș"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"<xliff:g id="APP">%s</xliff:g> ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸŃŃƒ жДĐșĐ” ĐżŃ€ĐŸŃ„ĐžĐ»ĐŽĐ” Đ°Ń‡Ń‹Đ»ŃŃ‹ĐœĐ±Ń‹?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"<xliff:g id="APP">%s</xliff:g> ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸŃŃƒ Đ¶ŃƒĐŒŃƒŃˆ ĐżŃ€ĐŸŃ„ĐžĐ»ĐžĐœĐŽĐ” Đ°Ń‡Ń‹Đ»ŃŃ‹ĐœĐ±Ń‹?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Đ–Đ”ĐșĐ” ŃĐ”Ń€Đ”ĐżŃ‡ĐžĐœĐž ĐșĐŸĐ»ĐŽĐŸĐœŃƒŃƒ"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Đ–ŃƒĐŒŃƒŃˆ ŃĐ”Ń€Đ”ĐżŃ‡ĐžŃĐžĐœ ĐșĐŸĐ»ĐŽĐŸĐœŃƒŃƒ"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM Đșарта Ń‚Đ°Ń€ĐŒĐ°ĐłŃ‹ĐœŃ‹Đœ ĐșŃƒĐ»ĐżŃƒŃŃƒĐœ ачуучу PIN ĐșĐŸĐŽ"</string>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index 49b7732..95ae260 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -262,7 +262,7 @@
     <string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"ໂໝàș”àș›àșŽàș”àșȘàșœàș‡"</string>
     <string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"àș›àșŽàș”àșȘàșœàș‡à»àș„້àș§"</string>
     <string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"ເàș›àșŽàș”àșȘàșœàș‡à»àș„້àș§"</string>
-    <string name="global_actions_toggle_airplane_mode" msgid="6911684460146916206">"ໂໝàș”àșąàșč່ໃàș™àșàș»àș™"</string>
+    <string name="global_actions_toggle_airplane_mode" msgid="6911684460146916206">"ໂໝàș”ໃàș™àșàș»àș™"</string>
     <string name="global_actions_airplane_mode_on_status" msgid="5508025516695361936">"ເàș›àș”àș”ໂໝàș”àșąàșč່ໃàș™àșàș»àș™à»àș„້àș§"</string>
     <string name="global_actions_airplane_mode_off_status" msgid="8522219771500505475">"àș›àșŽàș”ໂໝàș”ໃàș™àșàș»àș™à»àș„້àș§"</string>
     <string name="global_action_settings" msgid="4671878836947494217">"​àșàșČàș™â€‹àș•àș±à»‰àș‡â€‹àș„່àșČ"</string>
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"àșàș»àșà»€àș„àș”àșàșàșČàș™àș”àșłà»€àș™àș”àș™àșàșČàș™àșàș±àșšà»ƒàșšà»œà»‰àșČແàș„້àș§."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"àșœàșč້ໃàșŠà»‰àșàș»àșà»€àș„àș”àșàșàșČàș™àș›àș»àș”àș„àș±àș­àșàș”້àș§àșà»œà»‰àșČແàș„້àș§"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"àșĄàș”àș„àș§àșČàșĄàșžàș°àșàșČàșàșČàșĄàș«àșŒàșČàșàș„àș±à»‰àș‡à»€àșàș”àș™à»„àș›. àșàș°àș„àșžàș™àșČàș„àș­àș‡à»ƒà»à»ˆà»ƒàș™àșžàșČàșàș«àșŒàș±àș‡."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"àșžàș°àșàșČàșàșČàșĄàș«àșŒàșČàșà»€àș—àș·à»ˆàș­à»€àșàș”àș™à»„àș›. àș›àșŽàș”àșàșČàș™àș™àșłà»ƒàșŠà»‰àșàșČàș™àș›àș»àș”àș„àș±àș­àșàș”້àș§àșà»œà»‰àșČແàș„້àș§."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"àșžàș°àșàșČàșàșČàșĄàș«àșŒàșČàșà»€àș—àș·à»ˆàș­à»€àșàș”àș™à»„àș›. àșàș°àș„àșžàș™àșČເàș‚àș»à»‰àșČàșàșČàș™àș„àș±àș­àșà»œà»‰àșČàșˆà»à»àș—àș™."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"àșšà»à»ˆàșȘàșČàșĄàșČàș”àșąàș±à»‰àș‡àșąàș·àș™à»ƒàșšà»œà»‰àșČໄàș”້. àșàș°àș„àșžàș™àșČàș„àș­àș‡à»ƒà»à»ˆ."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"àș—່àșČàș™àșàș±àș‡àșšà»à»ˆà»„àș”້àș•àș±à»‰àș‡àș„່àșČàșàșČàș™àș›àș»àș”àș„àș±àș­àșàș”້àș§àșà»œà»‰àșČເàș—àș·à»ˆàș­"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ແàș•àș°à»€àșžàș·à»ˆàș­à»€àș›àș”àș”ໃàșŠà»‰"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"àșšà»à»ˆàșĄàș”ແàș­àș±àșšàșšà»ˆàș­àș™à»€àșźàș±àș”àș§àșœàș"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"àșšà»à»ˆàșĄàș”ແàș­àș±àșšàșȘ່àș§àș™àș•àș»àș§"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"ເàș›àș”àș” <xliff:g id="APP">%s</xliff:g> ໃàș™à»‚àș›àșŁà»„àșŸàș„໌àșȘ່àș§àș™àș•àș»àș§àș‚àș­àș‡àș—່àșČàș™àșšà»?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"ເàș›àș”àș” <xliff:g id="APP">%s</xliff:g> ໃàș™â€‹à»‚àș›àșŁâ€‹à»„àșŸàș„໌​àșšà»ˆàș­àș™â€‹à»€àșźàș±àș”​àș§àșœàșàș‚àș­àș‡àș—່àșČàș™àșšà»?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"ໃàșŠà»‰à»‚àș›àșŁà»àșàșŁàșĄàș—່àș­àș‡à»€àș§àș±àșšàșȘ່àș§àș™àș•àș»àș§"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"ໃàșŠà»‰à»‚àș›àșŁà»àșàșŁàșĄàș—່àș­àș‡à»€àș§àș±àșšàșšà»ˆàș­àș™à»€àșźàș±àș”àș§àșœàș"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN àș›àș»àș”àș„àș±àș­àșà»€àș„àș·àș­àș‚່àșČàșàșŠàșŽàșĄ"</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 11cd09d..cf1619e 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -711,8 +711,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Veido atpaĆŸinimo operacija atšaukta."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Atrakinimą pagal veidą atšaukė naudotojas"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Per daug bandymƳ. Vėliau bandykite dar kartą."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Per daug bandymĆł. Atrakinimas pagal veidą išjungtas."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Per daug bandymĆł. Geriau naudokite ekrano uĆŸraktą."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Nepavyko patvirtinti veido. Bandykite dar kartą."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Nenustatėte atrakinimo pagal veidą"</string>
@@ -2165,10 +2164,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Paliesti, norint ÄŻjungti"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Nėra darbo programƳ"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Nėra asmeniniƳ programƳ"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Atidaryti „<xliff:g id="APP">%s</xliff:g>“ asmeniniame profilyje?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Atidaryti „<xliff:g id="APP">%s</xliff:g>“ darbo profilyje?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Naudoti asmeninę naršyklę"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Naudoti darbo naršyklę"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM tinklo operatoriaus pasirinkimo ribojimo panaikinimo PIN kodas"</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index b72502e..f7c3711 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -710,8 +710,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Darbība ar sejas datiem atcelta."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Lietotājs atcēla autorizāciju pēc sejas."</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Pārāk daudz mēģinājumu. Vēlāk mēģiniet vēlreiz."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Pārāk daudz mēģinājumu. Autorizācija pēc sejas ir atspējota."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Pārāk daudz mēģinājumu. Tā vietā ievadiet ekrāna bloķēšanas akreditācijas datus."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Nevar verificēt seju. Mēģiniet vēlreiz."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Autorizācija pēc sejas nav iestatīta."</string>
@@ -2164,10 +2163,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Lai ieslēgtu, pieskarieties"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Nav darba lietotƆu"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Nav personÄ«gu lietotƆu"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Vai atvērt lietotni <xliff:g id="APP">%s</xliff:g> jĆ«su personÄ«gajā profilā?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Vai atvērt lietotni <xliff:g id="APP">%s</xliff:g> jĆ«su darba profilā?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Izmantot personīgo pārlƫku"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Izmantot darba pārlƫku"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM tÄ«kla atbloķēšanas PIN"</string>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index 8c0cf6d..7778b7b 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -671,7 +671,7 @@
     <string name="face_sensor_privacy_enabled" msgid="7407126963510598508">"За Ўа ĐșĐŸŃ€ĐžŃŃ‚ĐžŃ‚Đ” „ОтĐșĐ»ŃƒŃ‡ŃƒĐČањД ŃĐŸ лОĐș“, ĐČĐșĐ»ŃƒŃ‡Đ”Ń‚Đ” "<b>"Простап ĐŽĐŸ ĐșĐ°ĐŒĐ”Ń€Đ°Ń‚Đ°"</b>" ĐČĐŸ „ĐŸĐŸŃŃ‚Đ°ĐČĐșĐž &gt; ПроĐČĐ°Ń‚ĐœĐŸŃŃ‚“"</string>
     <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"ĐŸĐŸŃŃ‚Đ°ĐČДтД ŃƒŃˆŃ‚Đ” ĐœĐ°Ń‡ĐžĐœĐž за ĐŸŃ‚ĐșĐ»ŃƒŃ‡ŃƒĐČањД"</string>
     <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Đ”ĐŸĐżŃ€Đ”Ń‚Đ” за Ўа ĐŽĐŸĐŽĐ°ĐŽĐ”Ń‚Đ” ĐŸŃ‚ĐżĐ”Ń‡Đ°Ń‚ĐŸĐș"</string>
-    <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"ОтĐșĐ»ŃƒŃ‡ŃƒĐČањД ŃĐŸ ĐŸŃ‚ĐżĐ”Ń‡Đ°Ń‚ĐŸĐș"</string>
+    <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"ОтĐșĐ»ŃƒŃ‡ŃƒĐČањД ŃĐŸ ĐŸŃ‚ĐżĐ”Ń‡Đ°Ń‚ĐŸĐș ĐœĐ° прст"</string>
     <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"ĐĐ” ĐŒĐŸĐ¶Đ” Ўа сД ĐșĐŸŃ€ĐžŃŃ‚Đž ŃĐ”ĐœĐ·ĐŸŃ€ĐŸŃ‚ за ĐŸŃ‚ĐżĐ”Ń‡Đ°Ń‚ĐŸŃ†Đž"</string>
     <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"ĐžĐŽĐœĐ”ŃĐ”Ń‚Đ” ĐłĐŸ ĐœĐ° ĐżĐŸĐżŃ€Đ°ĐČĐșа."</string>
     <string name="face_acquired_insufficient" msgid="6889245852748492218">"ĐĐ” ĐŒĐŸĐ¶Đ” Ўа ŃĐŸĐ·ĐŽĐ°ĐŽĐ” ĐŒĐŸĐŽĐ”Đ» ĐœĐ° лОĐș. ОбОЎДтД сД паĐș."</string>
@@ -684,7 +684,7 @@
     <string name="face_acquired_too_right" msgid="6245286514593540859">"ĐŸĐŸĐŒĐ”ŃŃ‚Đ”Ń‚Đ” ĐłĐŸ Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐŸŃ‚ ĐœĐ°Đ»Đ”ĐČĐŸ"</string>
     <string name="face_acquired_too_left" msgid="9201762240918405486">"ĐŸĐŸĐŒĐ”ŃŃ‚Đ”Ń‚Đ” ĐłĐŸ Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐŸŃ‚ ĐœĐ°ĐŽĐ”ŃĐœĐŸ"</string>
     <string name="face_acquired_poor_gaze" msgid="4427153558773628020">"ĐŸĐŸĐłĐ»Đ”ĐŽĐœĐ”Ń‚Đ” ĐżĐŸĐŽĐžŃ€Đ”ĐșŃ‚ĐœĐŸ ĐČĐŸ ŃƒŃ€Đ”ĐŽĐŸŃ‚."</string>
-    <string name="face_acquired_not_detected" msgid="1057966913397548150">"ĐĐ” ĐČĐž сД глДЎа лОĐșĐŸŃ‚. ДржДтД ĐłĐŸ Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐŸŃ‚ ĐČĐŸ ĐČĐžŃĐžĐœĐ° ĐœĐ° ĐŸŃ‡ĐžŃ‚Đ”."</string>
+    <string name="face_acquired_not_detected" msgid="1057966913397548150">"ĐĐ” ĐČĐž сД глДЎа Đ»ĐžŃ†Đ”Ń‚ĐŸ. ДржДтД ĐłĐŸ Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐŸŃ‚ ĐČĐŸ ĐČĐžŃĐžĐœĐ° ĐœĐ° ĐŸŃ‡ĐžŃ‚Đ”."</string>
     <string name="face_acquired_too_much_motion" msgid="8199691445085189528">"ĐŸŃ€Đ”ĐŒĐœĐŸĐłŃƒ ĐŽĐČОжДњД. ДржДтД ĐłĐŸ Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐŸŃ‚ ŃŃ‚Đ°Đ±ĐžĐ»ĐœĐŸ."</string>
     <string name="face_acquired_recalibrate" msgid="8724013080976469746">"ĐŸĐŸĐČŃ‚ĐŸŃ€ĐœĐŸ Ń€Đ”ĐłĐžŃŃ‚Ń€ĐžŃ€Đ°Ń˜Ń‚Đ” ĐłĐŸ Đ»ĐžŃ†Đ”Ń‚ĐŸ."</string>
     <string name="face_acquired_too_different" msgid="2520389515612972889">"ĐĐ” сД ĐżŃ€Đ”ĐżĐŸĐ·ĐœĐ°ĐČа лОĐșĐŸŃ‚. ОбОЎДтД сД паĐș."</string>
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"ĐžĐżĐ”Ń€Đ°Ń†ĐžŃ˜Đ°Ń‚Đ° ŃĐŸ лОцД сД ĐŸŃ‚Đșажа."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"ĐšĐŸŃ€ĐžŃĐœĐžĐșĐŸŃ‚ ĐłĐŸ ĐŸŃ‚Đșажа „ОтĐșĐ»ŃƒŃ‡ŃƒĐČĐ°ŃšĐ”Ń‚ĐŸ ŃĐŸ лОĐș“"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"ĐŸŃ€Đ”ĐŒĐœĐŸĐłŃƒ ĐŸĐ±ĐžĐŽĐž. ОбОЎДтД сД ĐżĐŸĐČŃ‚ĐŸŃ€ĐœĐŸ ĐżĐŸĐŽĐŸŃ†ĐœĐ°."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"ĐŸŃ€Đ”ĐŒĐœĐŸĐłŃƒ ĐŸĐ±ĐžĐŽĐž. „ОтĐșĐ»ŃƒŃ‡ŃƒĐČĐ°ŃšĐ”Ń‚ĐŸ ŃĐŸ лОĐș“ Đ” ĐŸĐœĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶Đ”ĐœĐŸ."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"ĐŸŃ€Đ”ĐŒĐœĐŸĐłŃƒ ĐŸĐ±ĐžĐŽĐž. ĐĐ°ĐŒĐ”ŃŃ‚ĐŸ Ń‚ĐŸĐ°, ĐșĐŸŃ€ĐžŃŃ‚Đ”Ń‚Đ” ĐłĐŸ заĐșĐ»ŃƒŃ‡ŃƒĐČĐ°ŃšĐ”Ń‚ĐŸ ĐœĐ° Đ”ĐșŃ€Đ°ĐœĐŸŃ‚."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"ЛоĐșĐŸŃ‚ ĐœĐ” ĐŒĐŸĐ¶Đ” Ўа сД ĐżĐŸŃ‚ĐČрЮо. ОбОЎДтД сД ĐżĐŸĐČŃ‚ĐŸŃ€ĐœĐŸ."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"ĐĐ” стД ĐżĐŸŃŃ‚Đ°ĐČОлД „ОтĐșĐ»ŃƒŃ‡ŃƒĐČањД ŃĐŸ лОĐș“"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Đ”ĐŸĐżŃ€Đ”Ń‚Đ” за Ўа ĐČĐșĐ»ŃƒŃ‡ĐžŃ‚Đ”"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"ĐĐ”ĐŒĐ° Ń€Đ°Đ±ĐŸŃ‚ĐœĐž аплОĐșацоо"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"ĐĐ”ĐŒĐ° Đ»ĐžŃ‡ĐœĐž аплОĐșацоо"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Да сД ĐŸŃ‚ĐČĐŸŃ€Đž <xliff:g id="APP">%s</xliff:g> ĐČĐŸ Đ»ĐžŃ‡ĐœĐžĐŸŃ‚ ĐżŃ€ĐŸŃ„ĐžĐ»?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Да сД ĐŸŃ‚ĐČĐŸŃ€Đž <xliff:g id="APP">%s</xliff:g> ĐČĐŸ Ń€Đ°Đ±ĐŸŃ‚ĐœĐžĐŸŃ‚ ĐżŃ€ĐŸŃ„ĐžĐ»?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"ĐšĐŸŃ€ĐžŃŃ‚Đž Đ»ĐžŃ‡Đ”Đœ ĐżŃ€Đ”Đ»ĐžŃŃ‚ŃƒĐČач"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"ĐšĐŸŃ€ĐžŃŃ‚Đž Ń€Đ°Đ±ĐŸŃ‚Đ”Đœ ĐżŃ€Đ”Đ»ĐžŃŃ‚ŃƒĐČач"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN за ĐŸŃ‚ĐșĐ»ŃƒŃ‡ŃƒĐČањД ĐœĐ° ĐŒŃ€Đ”Đ¶Đ°Ń‚Đ° ĐœĐ° SIM-ĐșарточĐșата"</string>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index 7ba5181..b9cc095 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -684,7 +684,7 @@
     <string name="face_acquired_too_right" msgid="6245286514593540859">"àŽ«à”‹à”ș àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† àŽ‡àŽŸàŽ€à”àŽ”àŽ¶àŽ€à”àŽ€à”‡àŽ•à”àŽ•à” àŽšà”€àŽ•à”àŽ•à”àŽ•"</string>
     <string name="face_acquired_too_left" msgid="9201762240918405486">"àŽ«à”‹à”ș àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† àŽ”àŽČàŽ€à”àŽ”àŽ¶àŽ€à”àŽ€à”‡àŽ•à”àŽ•à” àŽšà”€àŽ•à”àŽ•à”àŽ•"</string>
     <string name="face_acquired_poor_gaze" msgid="4427153558773628020">"àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† àŽ‰àŽȘàŽ•àŽ°àŽŁàŽ€à”àŽ€àŽżàŽšà” àŽšà”‡àŽ°à”† àŽ•à”‚àŽŸà”àŽ€à”œ àŽšàŽšà”àŽšàŽŸàŽŻàŽż àŽšà”‹àŽ•à”àŽ•à”àŽ•."</string>
-    <string name="face_acquired_not_detected" msgid="1057966913397548150">"àŽźà”àŽ–àŽ‚ àŽ•àŽŸàŽŁàŽŸàŽšàŽŸàŽ•à”àŽšà”àŽšàŽżàŽČà”àŽČ. àŽ«à”‹à”ș àŽ•àŽŁà”àŽŁàŽżàŽšà” àŽšà”‡àŽ°à”† àŽȘàŽżàŽŸàŽżàŽ•à”àŽ•à”àŽ•."</string>
+    <string name="face_acquired_not_detected" msgid="1057966913397548150">"àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† àŽźà”àŽ–àŽ‚ àŽ•àŽŸàŽŁàŽŸàŽšàŽŸàŽ•à”àŽšà”àŽšàŽżàŽČà”àŽČ. àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† àŽ«à”‹à”ș àŽ•àŽŁà”àŽŁàŽżàŽšà” àŽšà”‡àŽ°à”† àŽȘàŽżàŽŸàŽżàŽ•à”àŽ•à”àŽ•."</string>
     <string name="face_acquired_too_much_motion" msgid="8199691445085189528">"àŽ”àŽłàŽ°à”†àŽŻàŽ§àŽżàŽ•àŽ‚ àŽšàŽČàŽšàŽ‚. àŽ«à”‹à”ș àŽ…àŽšàŽ•à”àŽ•àŽŸàŽ€à”† àŽšà”‡àŽ°à”† àŽȘàŽżàŽŸàŽżàŽ•à”àŽ•à”àŽ•."</string>
     <string name="face_acquired_recalibrate" msgid="8724013080976469746">"àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† àŽźà”àŽ–àŽ‚ àŽ”à”€àŽŁà”àŽŸà”àŽ‚ àŽŽà”»àŽ±à”‹à”Ÿ àŽšà”†àŽŻà”àŽŻà”àŽ•."</string>
     <string name="face_acquired_too_different" msgid="2520389515612972889">"àŽźà”àŽ–àŽ‚ àŽ€àŽżàŽ°àŽżàŽšà”àŽšàŽ±àŽżàŽŻàŽŸàŽšàŽŸàŽ•à”àŽšà”àŽšàŽżàŽČà”àŽČ. àŽ”à”€àŽŁà”àŽŸà”àŽ‚ àŽ¶à”àŽ°àŽźàŽżàŽ•à”àŽ•à”‚."</string>
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"àŽźà”àŽ–àŽ€à”àŽ€àŽżàŽšà”àŽ±à”† àŽȘà”àŽ°àŽ”à”ŒàŽ€à”àŽ€àŽšàŽ‚ àŽ±àŽŠà”àŽŠàŽŸàŽ•à”àŽ•àŽż."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ”à” àŽ«à”†àŽŻà”‌àŽžà” àŽ…à”șàŽČà”‹àŽ•à”àŽ•à” àŽ±àŽŠà”àŽŠàŽŸàŽ•à”àŽ•àŽż"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"àŽšàŽżàŽ°àŽ”àŽ§àŽż àŽ€àŽ”àŽŁ àŽ¶à”àŽ°àŽźàŽżàŽšà”àŽšà”. àŽȘàŽżàŽšà”àŽšà”€àŽŸà” àŽ”à”€àŽŁà”àŽŸà”àŽ‚ àŽ¶à”àŽ°àŽźàŽżàŽ•à”àŽ•à”àŽ•."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"àŽšàŽżàŽ°àŽ”àŽ§àŽż àŽ¶à”àŽ°àŽźàŽ™à”àŽ™à”Ÿ. àŽ«à”†àŽŻà”‌àŽžà” àŽ…à”șàŽČà”‹àŽ•à”àŽ•à” àŽȘà”àŽ°àŽ”à”ŒàŽ€à”àŽ€àŽšàŽ°àŽčàŽżàŽ€àŽźàŽŸàŽ•à”àŽ•àŽż."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"àŽšàŽżàŽ°àŽ”àŽ§àŽż àŽ¶à”àŽ°àŽźàŽ™à”àŽ™à”Ÿ. àŽȘàŽ•àŽ°àŽ‚ àŽžà”‌àŽ•à”àŽ°à”€à”» àŽČà”‹àŽ•à”àŽ•à” àŽšà”œàŽ•à”àŽ•."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"àŽźà”àŽ–àŽ‚ àŽȘàŽ°àŽżàŽ¶à”‹àŽ§àŽżàŽ•à”àŽ•àŽŸà”» àŽ•àŽŽàŽżàŽŻàŽżàŽČà”àŽČ. àŽ”à”€àŽŁà”àŽŸà”àŽ‚ àŽ¶à”àŽ°àŽźàŽżàŽ•à”àŽ•à”‚."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"àŽšàŽżàŽ™à”àŽ™à”Ÿ àŽ«à”†àŽŻà”‌àŽžà” àŽ…à”șàŽČà”‹àŽ•à”àŽ•à” àŽžàŽœà”àŽœà”€àŽ•àŽ°àŽżàŽšà”àŽšàŽżàŽŸà”àŽŸàŽżàŽČà”àŽČ"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"àŽ“àŽŁàŽŸàŽ•à”àŽ•àŽŸà”» àŽŸàŽŸàŽȘà”àŽȘà” àŽšà”†àŽŻà”àŽŻà”àŽ•"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"àŽ”àŽŠà”àŽŻà”‹àŽ—àŽżàŽ• àŽ†àŽȘà”àŽȘà”àŽ•à”Ÿ àŽ‡àŽČà”àŽČ"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"àŽ”à”àŽŻàŽ•à”àŽ€àŽżàŽȘàŽ° àŽ†àŽȘà”àŽȘà”àŽ•à”Ÿ àŽ‡àŽČà”àŽČ"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"<xliff:g id="APP">%s</xliff:g>, àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† àŽ”à”àŽŻàŽ•à”àŽ€àŽżàŽȘàŽ°àŽźàŽŸàŽŻ àŽȘà”àŽ°à”ŠàŽ«à”ˆàŽČàŽżà”œ àŽ€à”àŽ±àŽ•à”àŽ•àŽŁà”‹?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"<xliff:g id="APP">%s</xliff:g>, àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† àŽ”àŽŠà”àŽŻà”‹àŽ—àŽżàŽ• àŽȘà”àŽ°à”ŠàŽ«à”ˆàŽČàŽżà”œ àŽ€à”àŽ±àŽ•à”àŽ•àŽŁà”‹?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"àŽ”à”àŽŻàŽ•à”àŽ€àŽżàŽȘàŽ°àŽźàŽŸàŽŻ àŽŹà”àŽ°à”—àŽžà”Œ àŽ‰àŽȘàŽŻà”‹àŽ—àŽżàŽ•à”àŽ•à”àŽ•"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"àŽ”àŽŠà”àŽŻà”‹àŽ—àŽżàŽ• àŽŹà”àŽ°à”—àŽžà”Œ àŽ‰àŽȘàŽŻà”‹àŽ—àŽżàŽ•à”àŽ•à”àŽ•"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"àŽžàŽżàŽ‚ àŽšà”†àŽ±à”àŽ±à”‌àŽ”à”ŒàŽ•à”àŽ•à” àŽ…à”șàŽČà”‹àŽ•à”àŽ•à” àŽšà”†àŽŻà”àŽŻàŽŸàŽšà”àŽłà”àŽł àŽȘàŽżà”»"</string>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index f5f7851..81e8f6b 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"ЩараĐčĐœŃ‹ ÒŻĐčĐ» ажОллагааг Ń†ŃƒŃ†Đ°Đ»Đ»Đ°Đ°."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Đ„ŃŃ€ŃĐłĐ»ŃĐłŃ‡ ЩараĐčгаар Ń‚ÒŻĐłĐ¶ŃŃ таĐčлахыг Ń†ŃƒŃ†Đ°Đ»ŃĐ°Đœ"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Đ„ŃŃ‚ ĐŸĐ»ĐŸĐœ уЎаа ĐŸŃ€ĐŸĐ»ĐŽĐ»ĐŸĐŸ. Дараа ĐŽĐ°Ń…ĐžĐœ ĐŸŃ€ĐŸĐ»ĐŽĐŸĐœĐŸ уу."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Đ„ŃŃ‚ ĐŸĐ»ĐŸĐœ уЎаа ĐŸŃ€ĐŸĐ»ĐŽĐ»ĐŸĐŸ. ЩараĐčгаар Ń‚ÒŻĐłĐ¶ŃŃ таĐčлахыг оЮэĐČŃ…ĐłÒŻĐč Đ±ĐŸĐ»ĐłĐŸŃĐŸĐœ."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Đ„ŃŃ‚ ĐŸĐ»ĐŸĐœ уЎаа ĐŸŃ€ĐŸĐ»ĐŽĐ»ĐŸĐŸ. ĐžŃ€ĐŸĐœĐŽ ĐœŃŒ ĐŽŃĐ»ĐłŃŃ†ĐžĐčĐœ Ń‚ÒŻĐłĐ¶ŃŃ ĐŸŃ€ŃƒŃƒĐ»ĐœĐ° уу."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"ЩараĐčĐł бататгаж Ń‡Đ°ĐŽŃĐ°ĐœĐłÒŻĐč. Đ”Đ°Ń…ĐžĐœ ĐŸŃ€ĐŸĐ»ĐŽĐŸĐœĐŸ уу."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"йа ЩараĐčгаар Ń‚ÒŻĐłĐ¶ŃŃ таĐčлахыг Ń‚ĐŸŃ…ĐžŃ€ŃƒŃƒĐ»Đ°Đ°ĐłÒŻĐč баĐčĐœĐ°"</string>
@@ -1506,7 +1505,7 @@
     <string name="vpn_lockdown_config" msgid="8331697329868252169">"ĐĄÒŻĐ»Đ¶ŃŃ эсĐČŃĐ» VPN Ń‚ĐŸŃ…ĐžŃ€ĐłĐŸĐŸĐł өөрчлөх"</string>
     <string name="upload_file" msgid="8651942222301634271">"ЀаĐčĐ» ŃĐŸĐœĐłĐŸŃ…"</string>
     <string name="no_file_chosen" msgid="4146295695162318057">"ĐĄĐŸĐœĐłĐŸŃĐŸĐœ фаĐčĐ» баĐčŃ…ĐłÒŻĐč"</string>
-    <string name="reset" msgid="3865826612628171429">"ĐšĐžĐœŃŃ‡Đ»ŃŃ…"</string>
+    <string name="reset" msgid="3865826612628171429">"Đ‘ÒŻĐłĐŽĐžĐčĐł цэĐČŃŃ€Đ»ŃŃ…"</string>
     <string name="submit" msgid="862795280643405865">"Đ˜Đ»ĐłŃŃŃ…"</string>
     <string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Đ–ĐŸĐ»ĐŸĐŸ барОх апп ажОллаж баĐčĐœĐ°"</string>
     <string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Đ–ĐŸĐ»ĐŸĐŸĐœŃ‹ аппаас ĐłĐ°Ń€Đ°Ń…Ń‹Đœ Ń‚ŃƒĐ»ĐŽ Ń‚ĐŸĐČŃˆĐžĐœĐŸ уу."</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ĐŃĐ°Đ°Ń…Ń‹Đœ Ń‚ŃƒĐ»ĐŽ Ń‚ĐŸĐČшох"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"ĐŻĐŒĐ°Ń€ ч Đ°Đ¶Đ»Ń‹Đœ апп баĐčŃ…ĐłÒŻĐč баĐčĐœĐ°"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"ĐŻĐŒĐ°Ń€ ч хуĐČĐžĐčĐœ апп баĐčŃ…ĐłÒŻĐč баĐčĐœĐ°"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"ЄуĐČĐžĐčĐœ ĐżŃ€ĐŸŃ„Đ°ĐčĐ» Юээрээ <xliff:g id="APP">%s</xliff:g>-Đł ĐœŃŃŃ… ÒŻÒŻ?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"ĐĐ¶Đ»Ń‹Đœ ĐżŃ€ĐŸŃ„Đ°ĐčĐ» Юээрээ <xliff:g id="APP">%s</xliff:g>-Đł ĐœŃŃŃ… ÒŻÒŻ?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"ЄуĐČĐžĐčĐœ хөтөч Đ°ŃˆĐžĐłĐ»Đ°Ń…"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"ĐĐ¶Đ»Ń‹Đœ хөтөч Đ°ŃˆĐžĐłĐ»Đ°Ń…"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"ĐĄÒŻĐ»Đ¶ŃŃĐœĐžĐč SIM-Đœ Ń‚ÒŻĐłĐ¶ŃŃĐł таĐčлах ПИН"</string>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index eeba652..df2c45b 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"à€šà„‡à€čà€°à€Ÿ à€‘à€Șà€°à„‡à€¶à€š à€°à€Šà„à€Š à€•à„‡à€Čà„‡ à€—à„‡à€Čà„‡."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"à€”à€Ÿà€Șà€°à€•à€°à„à€€à„à€Żà€Ÿà€šà„‡ à€«à„‡à€ž à€…à€šà€Čà„‰à€• à€°à€Šà„à€Š à€•à„‡à€Čà„‡ à€†à€čà„‡"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"à€–à„‚à€Ș à€œà€Ÿà€žà„à€€ à€Șà„à€°à€Żà€€à„à€š à€•à„‡à€Čà„‡. à€šà€‚à€€à€° à€Șà„à€šà„à€čà€Ÿ à€Șà„à€°à€Żà€€à„à€š à€•à€°à€Ÿ."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"à€Źà€°à„‡à€š à€Șà„à€°à€Żà€€à„à€š. à€«à„‡à€ž à€…à€šà€Čà„‰à€• à€Źà€‚à€Š à€•à„‡à€Čà„‡ à€†à€čà„‡."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"à€Źà€°à„‡à€š à€Șà„à€°à€Żà€€à„à€š. à€€à„à€Żà€Ÿà€à€”à€œà„€ à€žà„à€•à„à€°à„€à€š à€Čà„‰à€• à€”à€Ÿà€Șà€°à€Ÿ."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"à€šà„‡à€čà€°à€Ÿ à€Șà€Ąà€€à€Ÿà€łà€Łà„€ à€•à€°à„‚ à€¶à€•à€€ à€šà€Ÿà€čà„€. à€Șà„à€šà„à€čà€Ÿ à€Șà„à€°à€Żà€€à„à€š à€•à€°à€Ÿ."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"à€€à„à€źà„à€čà„€ à€«à„‡à€ž à€…à€šà€Čà„‰à€• à€žà„‡à€Ÿ à€•à„‡à€Čà„‡ à€šà€Ÿà€čà„€"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"à€žà„à€°à„‚ à€•à€°à€Łà„à€Żà€Ÿà€žà€Ÿà€ à„€ à€Ÿà„…à€Ș à€•à€°à€Ÿ"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"à€•à„‹à€Łà€€à„€à€čà„€ à€•à€Ÿà€°à„à€Ż à„Čà€Șà„à€ž à€žà€Șà„‹à€°à„à€Ÿ à€•à€°à€€ à€šà€Ÿà€čà„€à€€"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"à€•à„‹à€Łà€€à„€à€čà„€ à€”à„ˆà€Żà€•à„à€€à€żà€• à„Čà€Șà„à€ž à€žà€Șà„‹à€°à„à€Ÿ à€•à€°à€€ à€šà€Ÿà€čà„€à€€"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"à€€à„à€źà€šà„à€Żà€Ÿ à€”à„ˆà€Żà€•à„à€€à€żà€• à€Șà„à€°à„‹à€«à€Ÿà€‡à€Čà€źà€§à„à€Żà„‡ <xliff:g id="APP">%s</xliff:g> à€‰à€˜à€Ąà€Ÿà€Żà€šà„‡ à€†à€čà„‡ à€•à€Ÿ?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"à€€à„à€źà€šà„à€Żà€Ÿ à€•à€Ÿà€°à„à€Ż à€Șà„à€°à„‹à€«à€Ÿà€‡à€Čà€źà€§à„à€Żà„‡ <xliff:g id="APP">%s</xliff:g> à€‰à€˜à€Ąà€Ÿà€Żà€šà„‡ à€†à€čà„‡ à€•à€Ÿ?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"à€”à„ˆà€Żà€•à„à€€à€żà€• à€Źà„à€°à€Ÿà€‰à€à€° à€”à€Ÿà€Șà€°à€Ÿ"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"à€•à€Ÿà€°à„à€Ż à€Źà„à€°à€Ÿà€‰à€à€° à€”à€Ÿà€Șà€°à€Ÿ"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"à€žà€żà€ź à€šà„‡à€Ÿà€”à€°à„à€• à€…à€šà€Čà„‰à€• à€Șà€żà€š"</string>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 9ec0483..ebd7b66 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Pengendalian wajah dibatalkan."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Buka Kunci Wajah dibatalkan oleh pengguna"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Terlalu banyak percubaan. Cuba sebentar lagi."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Terlalu banyak percubaan. Buka Kunci Wajah dilumpuhkan."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Terlalu banyak percubaan. Sebaliknya, masukkan kunci skrin."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Tidak dapat mengesahkan wajah. Cuba lagi."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Anda belum menyediakan Buka Kunci Wajah"</string>
@@ -1951,8 +1950,10 @@
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> tidak tersedia sekarang. Ini diurus oleh <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Ketahui lebih lanjut"</string>
     <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Nyahjeda apl"</string>
-    <string name="work_mode_off_title" msgid="6367463960165135829">"Nyahjeda apl kerja?"</string>
-    <string name="work_mode_turn_on" msgid="5316648862401307800">"Nyahjeda"</string>
+    <!-- no translation found for work_mode_off_title (6367463960165135829) -->
+    <skip />
+    <!-- no translation found for work_mode_turn_on (5316648862401307800) -->
+    <skip />
     <string name="work_mode_emergency_call_button" msgid="6818855962881612322">"Kecemasan"</string>
     <string name="app_blocked_title" msgid="7353262160455028160">"Apl tidak tersedia"</string>
     <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak tersedia sekarang."</string>
@@ -2163,10 +2164,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Ketik untuk menghidupkan profil"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Tiada apl kerja"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Tiada apl peribadi"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Buka <xliff:g id="APP">%s</xliff:g> dalam profil peribadi anda?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Buka <xliff:g id="APP">%s</xliff:g> dalam profil kerja anda?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Gunakan penyemak imbas peribadi"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Gunakan penyemak imbas kerja"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN buka kunci rangkaian SIM"</string>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index a94bc70..6141734 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -580,8 +580,8 @@
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"တလá€Čချိတá€șထဏသသေဏ ဘလူှတုသá€șသုံသစကá€șá€™á€»á€Źá€žá€”á€Ÿá€„á€·á€ș ချိတá€șဆကá€șရနá€ș အကá€șပá€șá€€á€­á€Żá€á€œá€„á€·á€șá€•á€Œá€Żá€™á€Šá€ș"</string>
     <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"အနြှတစá€șဝိုကá€șရဟိ ဘလူှတုသá€șသုံသစကá€șá€™á€»á€Źá€žá€á€œá€„á€ș á€€á€Œá€±á€Źá€șá€„á€Œá€Źá€á€Œá€„á€șှ"</string>
     <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"အနြှတစá€șဝိုကá€șရဟိ ဘလူှတုသá€șသုံသစကá€șá€™á€»á€Źá€žá€á€œá€„á€ș á€€á€Œá€±á€Źá€șá€„á€Œá€Źá€›á€”á€ș အကá€șပá€șအာှ ခလင့á€șá€•á€Œá€Żá€™á€Šá€ș"</string>
-    <string name="permlab_uwb_ranging" msgid="8141915781475770665">"á€Ąá€”á€źá€žá€›á€Ÿá€­ ‘á€Ąá€œá€œá€”á€șကျယá€șပဌန့á€șသေဏ á€œá€Ÿá€­á€Żá€„á€șá€žá€Ąá€œá€»á€Źá€žá€žá€Żá€¶á€žá€…á€€á€șမျဏသ’ á€€á€Œá€Źá€ž မဟနá€șá€žá€á€Œá€±á€”á€±á€›á€Źá€€á€­á€Ż သတá€șမဟတá€șခဌငá€șှ"</string>
-    <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"á€Ąá€”á€źá€žá€›á€Ÿá€­ ‘á€Ąá€œá€œá€”á€șကျယá€șပဌန့á€șသေဏ á€œá€Ÿá€­á€Żá€„á€șá€žá€Ąá€œá€»á€Źá€žá€žá€Żá€¶á€žá€…á€€á€șမျဏသ’ á€€á€Œá€Źá€ž မဟနá€șá€žá€á€Œá€±á€”á€±á€›á€Źá€€á€­á€Ż သတá€șမဟတá€șရနá€ș အကá€șပá€șကို ခလင့á€șá€•á€Œá€Żá€™á€Šá€ș"</string>
+    <string name="permlab_uwb_ranging" msgid="8141915781475770665">"အနြှတစá€șဝိုကá€șရဟိ ‘á€Ąá€œá€œá€”á€șကျယá€șပဌန့á€șသေဏ á€œá€Ÿá€­á€Żá€„á€șá€žá€Ąá€œá€»á€Źá€žá€žá€Żá€¶á€žá€…á€€á€șမျဏသ’ á€€á€Œá€Źá€ž ဆကá€șစပá€șနေရဏကို သတá€șမဟတá€șခဌငá€șှ"</string>
+    <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"အနြှတစá€șဝိုကá€șရဟိ ‘á€Ąá€œá€œá€”á€șကျယá€șပဌန့á€șသေဏ á€œá€Ÿá€­á€Żá€„á€șá€žá€Ąá€œá€»á€Źá€žá€žá€Żá€¶á€žá€…á€€á€șမျဏသ’ á€€á€Œá€Źá€ž ဆကá€șစပá€șနေရဏကို သတá€șမဟတá€șရနá€ș အကá€șပá€șကို ခလင့á€șá€•á€Œá€Żá€™á€Šá€ș"</string>
     <string name="permlab_nearby_wifi_devices" msgid="392774237063608500">"á€Ąá€”á€źá€žá€›á€Ÿá€­ Wi-Fi စကá€șá€™á€»á€Źá€žá€”á€Ÿá€„á€·á€ș ပဌနá€șလဟနá€șá€á€Żá€¶á€·á€•á€Œá€”á€șခဌငá€șှ"</string>
     <string name="permdesc_nearby_wifi_devices" msgid="3054307728646332906">"á€€á€Œá€±á€Źá€șá€„á€Œá€Źá€›á€”á€ș၊ ချိတá€șဆကá€șရနá€șနဟင့á€ș အနြှတစá€șဝိုကá€șရဟိ Wi-Fi စကá€șá€™á€»á€Źá€žá နေရဏကို သတá€șမဟတá€șရနá€ș အကá€șပá€șကို ခလင့á€șá€•á€Œá€Żá€žá€Šá€ș"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"ညသစဏသပေသ NFC á€„á€œá€±á€•á€±á€žá€á€»á€±á€™á€Ÿá€Żá€†á€­á€Żá€„á€șရာ ဝနá€șဆေဏငá€șá€™á€Ÿá€Ż ဥချကá€șအလကá€șမျဏသ"</string>
@@ -684,7 +684,7 @@
     <string name="face_acquired_too_right" msgid="6245286514593540859">"ဖုနá€șှကို သင့á€șဘယá€șဘကá€șသို့ ရလဟေ့ပါ"</string>
     <string name="face_acquired_too_left" msgid="9201762240918405486">"ဖုနá€șှကို သင့á€șညာဘကá€șသို့ ရလဟေ့ပါ"</string>
     <string name="face_acquired_poor_gaze" msgid="4427153558773628020">"သင့á€șစကá€șပစá€čစညá€șှကို တည့á€șတည့á€șကဌည့á€șပါ။"</string>
-    <string name="face_acquired_not_detected" msgid="1057966913397548150">"သင့á€șမျကá€șá€”á€Ÿá€Ź မမဌငá€șရပါ။ ဖုနá€șသနဟင့á€ș မျကá€șစိ တစá€șတနá€șှတညá€șသထဏသပါ။"</string>
+    <string name="face_acquired_not_detected" msgid="1057966913397548150">"သင့á€șမျကá€șá€”á€Ÿá€Źá€€á€­á€Ż မမဌငá€șရပါ။ ဖုနá€șှကို မျကá€șá€œá€Żá€¶á€žá€”á€Ÿá€„á€·á€ș တစá€șတနá€șှတညá€șှထာှ၍ ကိုငá€șပါ။"</string>
     <string name="face_acquired_too_much_motion" msgid="8199691445085189528">"á€œá€Ÿá€Żá€•á€șလလနá€șှသညá€ș။ ဖုနá€șှကို ငဌိမá€șငဌိမá€șကိုငá€șပါ။"</string>
     <string name="face_acquired_recalibrate" msgid="8724013080976469746">"သင့á€șမျကá€șá€”á€Ÿá€Źá€€á€­á€Ż ပဌနá€șစာရငá€șသသလငá€șသပါ။"</string>
     <string name="face_acquired_too_different" msgid="2520389515612972889">"မျကá€șá€”á€Ÿá€Źá€€á€­á€Ż မသိပါ။ ထပá€șစမá€șသကဌည့á€șပါ။"</string>
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"မျကá€șá€”á€Ÿá€Ź ဆေဏငá€șရလကá€șခဌငá€șှကို ပယá€șဖျကá€șလိုကá€șá€•á€«á€•á€Œá€źá‹"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€°á€€ မျကá€șá€”á€Ÿá€Źá€•á€Œ á€œá€±á€Źá€·á€á€șဖလင့á€șခဌငá€șှကို ပယá€șဖျကá€șထာှသညá€ș"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"á€Ąá€€á€Œá€­á€™á€șá€™á€»á€Źá€žá€…á€œá€Ź စမá€șá€žá€•á€Œá€źá€žá€•á€«á€•á€Œá€źá‹ နေဏကá€șမဟထပá€șစမá€șသပါ။"</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"á€€á€Œá€­á€Żá€žá€•á€™á€șá€žá€™á€Ÿá€Żá€Ąá€€á€Œá€­á€™á€șရေ á€™á€»á€Źá€žá€œá€œá€”á€șှသညá€ș။ မျကá€șá€”á€Ÿá€Źá€•á€Œ á€œá€±á€Źá€·á€á€șဖလင့á€șခဌငá€șှကို ပိတá€șလိုကá€șသညá€ș။"</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"á€€á€Œá€­á€Żá€žá€•á€™á€șá€žá€™á€Ÿá€Żá€Ąá€€á€Œá€­á€™á€șရေ á€™á€»á€Źá€žá€œá€œá€”á€șှသညá€ș။ ဖနá€șá€žá€Źá€žá€•á€Œá€„á€ș á€œá€±á€Źá€·á€á€șကို ဥစဏသထိုသထည့á€șသလငá€șသပါ။"</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"မျကá€șá€”á€Ÿá€Źá€€á€­á€Ż အတညá€șá€•á€Œá€Żá မရပါ။ ထပá€șစမá€șသကဌည့á€șပါ။"</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"မျကá€șá€”á€Ÿá€Źá€•á€Œ á€œá€±á€Źá€·á€á€șဖလင့á€șခဌငá€șှကို ထည့á€șသလငá€șသမထဏသပါ"</string>
@@ -1360,7 +1359,7 @@
     <string name="usb_supplying_notification_title" msgid="5378546632408101811">"USB မဟတစá€șဆင့á€ș ချိတá€șဆကá€șထဏသသည့á€ș စကá€șပစá€čစညá€șှကို á€Ąá€Źá€žá€žá€œá€„á€șသနေသညá€ș"</string>
     <string name="usb_mtp_notification_title" msgid="1065989144124499810">"USB ဖဌင့á€ș ဖိုငá€șလလဟá€Čá€•á€Œá€±á€Źá€„á€șသခဌငá€șှကို ဖလင့á€șထာှသညá€ș"</string>
     <string name="usb_ptp_notification_title" msgid="5043437571863443281">"USB မဟတစá€șဆင့á€ș PTP ကို á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€›á€”á€ș ဖလင့á€șထာှသညá€ș"</string>
-    <string name="usb_tether_notification_title" msgid="8828527870612663771">"USB á€žá€Żá€¶á€žá ချိတá€șဆကá€șခဌငá€șှ ဖလင့á€șထာှသညá€ș"</string>
+    <string name="usb_tether_notification_title" msgid="8828527870612663771">"USB မဟတစá€șဆင့á€ș မိုဘိုငá€șှဖုနá€șှကို မိုဒမá€șá€Ąá€–á€Œá€…á€șသုံသရနá€ș ဖလင့á€șထာှသညá€ș"</string>
     <string name="usb_midi_notification_title" msgid="7404506788950595557">"USB မဟတစá€șဆင့á€ș MIDI ကို á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€›á€”á€ș ဖလင့á€șထာှသညá€ș"</string>
     <string name="usb_uvc_notification_title" msgid="2030032862673400008">"စကá€șပစá€čစညá€șှကို ‘ဝဘá€șကမá€ș’ á€Ąá€–á€Œá€…á€ș ချိတá€șဆကá€șလိုကá€șသညá€ș"</string>
     <string name="usb_accessory_notification_title" msgid="1385394660861956980">"USB တလá€Čဖကá€șပစá€čစညá€șှကို ချိတá€șဆကá€șထာှသညá€ș"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ဖလင့á€șရနá€șတို့ပါ"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"အလုပá€șသုံသဥကá€șပá€șမျဏသ မရဟိပါ"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"ကိုယá€șပိုငá€șအကá€șပá€șမျဏသ မရဟိပါ"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"<xliff:g id="APP">%s</xliff:g> ကို သင့á€șကိုယá€șပိုငá€șပရိုဖိုငá€șတလငá€ș ဖလင့á€șမလာှ။"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"<xliff:g id="APP">%s</xliff:g> ကို သင့á€șအလုပá€șပရိုဖိုငá€șတလငá€ș ဖလင့á€șမလာှ။"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"ကိုယá€șပိုငá€șá€˜á€›á€±á€Źá€„á€șဇာ သုံသရနá€ș"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"အလုပá€șá€žá€Żá€¶á€žá€˜á€›á€±á€Źá€„á€șဇာ သုံသရနá€ș"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"ဆငá€șှမá€șကလနá€șရကá€ș á€œá€±á€Źá€·á€á€șဖလင့á€șရနá€ș ပငá€șနံပါတá€ș"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index a52c9b8..cfc464c 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Ansikt-operasjonen ble avbrutt."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Ansiktslås ble avbrutt av brukeren"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"For mange forsøk. Prøv på nytt senere."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"For mange forsøk. Ansiktslås er slått av."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"For mange forsøk. Skriv inn skjermlås i stedet."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Kan ikke bekrefte ansiktet. Prøv på nytt."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Du har ikke konfigurert ansiktslås"</string>
@@ -2092,7 +2091,7 @@
     <string name="nas_upgrade_notification_enable_action" msgid="3046406808378726874">"OK"</string>
     <string name="nas_upgrade_notification_disable_action" msgid="3794833210043497982">"Slå av"</string>
     <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Finn ut mer"</string>
-    <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"Forbedrede varsler erstatter tilpassede Android-varsler i Android 12. Denne funksjonen viser foreslåtte handlinger og svar og organiserer varslene dine.\n\nForbedrede varsler har tilgang til varselinnhold, inkludert personopplysninger som kontaktnavn og meldinger. Funksjonen kan også lukke og svare på varsler, for eksempel svare på anrop og kontrollere «Ikke forstyrr»."</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"Forbedrede varsler erstatter tilpassede Android-varsler i Android 12. Denne funksjonen viser foreslåtte handlinger og svar og organiserer varslene dine.\n\nForbedrede varsler har tilgang til varselinnhold, inkludert personopplysninger som kontaktnavn og meldinger. Funksjonen kan også avvise og svare på varsler, for eksempel svare på anrop og kontrollere «Ikke forstyrr»."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Varsel med informasjon om rutinemodus"</string>
     <string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Batterisparing er slått på"</string>
     <string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Reduserer batteribruken for å forlenge batterilevetiden"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Trykk for å slå på"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Ingen jobbapper"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Ingen personlige apper"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Vil du åpne <xliff:g id="APP">%s</xliff:g> i den personlige profilen din?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Vil du åpne <xliff:g id="APP">%s</xliff:g> i jobbprofilen din?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Bruk den personlige nettleseren"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Bruk jobbnettleseren"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN-kode for å fjerne operatørlåser"</string>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index f94646e..3f2763a 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -446,9 +446,9 @@
     <string name="permdesc_broadcastSticky" product="tv" msgid="2338185920171000650">"à€à€Șà€Čà€Ÿà€ˆ à€Șà„à€°à€žà€Ÿà€°à€Ł à€žà€źà€Ÿà€Șà„à€€ à€­à€‡à€žà€•à„‡à€Șà€›à€ż à€Șà€šà€ż à€°à€čà€żà€°à€čà€šà„‡ à€žà„à€Ÿà€żà€•à„€ à€Șà„à€°à€žà€Ÿà€°à€Łà€čà€°à„‚ à€Șà€ à€Ÿà€‰à€šà„‡ à€…à€šà„à€źà€€à€ż à€Šà€żà€šà„à€›à„€ à€Żà„‹ à€žà„à€”à€żà€§à€Ÿà€•à„‹ à€…à€€à„à€Żà€§à€żà€• à€Șà„à€°à€Żà„‹à€—à€Čà„‡ à€§à„‡à€°à„ˆ à€źà„‡à€źà„‹à€°à„€ à€Șà„à€°à€Żà„‹à€— à€čà„à€šà„‡ à€­à€à€•à€Ÿà€Čà„‡ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ Android à€Ÿà€żà€­à„€ à€Żà€šà„à€€à„à€° à€žà„à€žà„à€€ à€”à€Ÿ à€…à€žà„à€„à€żà€° à€čà„à€š à€žà€•à„à€›à„€"</string>
     <string name="permdesc_broadcastSticky" product="default" msgid="134529339678913453">"à€”à€Șà€šà€Ÿà€°à€żà€• à€Șà„à€°à€žà€Ÿà€°à€Łà€Čà€Ÿà€ˆ à€Șà€ à€Ÿà€‰à€šà€•à„‹ à€Čà€Ÿà€—à€ż à€à€• à€à€Șà€Čà€Ÿà€ˆ à€…à€šà„à€źà€€à€ż à€Šà€żà€šà„à€›, à€œà„à€š à€Șà„à€°à€žà€Ÿà€°à€Ł à€žà€źà€Ÿà€Șà„à€€ à€­à€à€Șà€›à€ż à€Źà€Ÿà€à€•à„€ à€°à€čà€šà„à€›à„€ à€…à€€à„à€Żà€§à€żà€• à€Șà„à€°à€Żà„‹à€—à€Čà„‡ à€§à„‡à€°à„ˆ à€źà„‡à€źà„‹à€°à„€ à€Șà„à€°à€Żà„‹à€— à€—à€°à„‡à€•à„‹ à€•à€Ÿà€°à€Łà€Čà„‡ à€«à„‹à€šà€Čà€Ÿà€ˆ à€ąà€żà€Čà„‹ à€° à€…à€žà„à€„à€żà€° à€Źà€šà€Ÿà€‰à€š à€žà€•à„à€›à„€"</string>
     <string name="permlab_readContacts" msgid="8776395111787429099">"à€€à€Șà€Ÿà€ˆà€à€•à€Ÿ à€žà€źà„à€Șà€°à„à€•à€čà€°à„‚ à€Șà€ąà„à€šà„à€čà„‹à€žà„"</string>
-    <string name="permdesc_readContacts" product="tablet" msgid="6430093481659992692">"à€à€Șà€Čà€Ÿà€ˆ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€Ÿà„à€Żà€Ÿà€Źà„à€Čà„‡à€Ÿà€źà€Ÿ à€­à€Łà„à€Ąà€Ÿà€°à€Ł à€—à€°à€żà€à€•à€Ÿ à€•à€šà„à€Ÿà„à€Żà€Ÿà€•à„à€Ÿà€čà€°à„‚à€žà€à€— à€žà€źà„à€Źà€šà„à€§à€żà€€ à€Ąà„‡à€Ÿà€Ÿ à€Șà€ąà„à€šà„‡ à€…à€šà„à€źà€€à€ż à€Šà€żà€šà„à€›à„€ à€à€Șà€čà€°à„‚à€Čà„‡ à€•à€šà„à€Ÿà„à€Żà€Ÿà€•à„à€Ÿà€čà€°à„‚ à€Źà€šà€Ÿà€‰à€šà„‡ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€Ÿà„à€Żà€Ÿà€Źà„à€Čà„‡à€Ÿà€źà€Ÿ à€­à€Łà„à€Ąà€Ÿà€°à€Ł à€—à€°à€żà€à€•à€Ÿ à€–à€Ÿà€€à€Ÿà€čà€°à„‚à€źà€Ÿà€„à€ż à€Șà€šà€ż à€Șà€čà„à€à€š à€Șà„à€°à€Ÿà€Șà„à€€ à€—à€°à„à€šà„‡ à€›à€šà„à„€ à€Żà€žà€źà€Ÿ à€€à€Șà€Ÿà€ˆà€‚à€Čà„‡ à€žà„à€„à€Ÿà€Șà€šà€Ÿ à€—à€°à„‡à€•à€Ÿ à€à€Șà€čà€°à„‚à€Čà„‡ à€Źà€šà€Ÿà€à€•à€Ÿ à€–à€Ÿà€€à€Ÿà€čà€°à„‚ à€Șà€°à„à€š à€žà€•à„à€›à€šà„à„€ à€Żà€ž à€…à€šà„à€źà€€à€żà€Čà„‡ à€à€Șà€čà€°à„‚à€Čà€Ÿà€ˆ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€žà„‡à€­ à€—à€°à„à€š à€Šà€żà€šà„‡ à€­à€à€•à€Ÿà€Čà„‡ à€čà€Ÿà€šà€żà€•à€Ÿà€°à€• à€à€Șà€čà€°à„‚à€Čà„‡ à€€à€Șà€Ÿà€ˆà€‚à€Čà€Ÿà€ˆ à€„à€Ÿà€čà„ˆ à€šà€Šà€żà€‡à€•à€š à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€†à€Šà€Ÿà€š à€Șà„à€°à€Šà€Ÿà€š à€—à€°à„à€š à€žà€•à„à€›à€šà„à„€"</string>
-    <string name="permdesc_readContacts" product="tv" msgid="8400138591135554789">"à€à€Șà€Čà€Ÿà€ˆ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ Android à€Ÿà€żà€­à„€ à€Ąà€żà€­à€Ÿà€‡à€žà€źà€Ÿ à€­à€Łà„à€Ąà€Ÿà€°à€Ł à€—à€°à€żà€à€•à€Ÿ à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€Șà€ąà„à€š à€…à€šà„à€źà€€à€ż à€Šà€żà€šà„à€›à„€ à€à€Șà€čà€°à„‚à€Čà„‡ à€•à€šà„à€Ÿà„à€Żà€Ÿà€•à„à€Ÿà€čà€°à„‚ à€Źà€šà€Ÿà€‰à€šà„‡ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ Android à€Ÿà€żà€­à„€ à€Ąà€żà€­à€Ÿà€‡à€žà€źà€Ÿ à€­à€Łà„à€Ąà€Ÿà€°à€Ł à€—à€°à€żà€à€•à€Ÿ à€–à€Ÿà€€à€Ÿà€čà€°à„‚à€źà€Ÿà€„à€ż à€Șà€šà€ż à€Șà€čà„à€à€š à€Șà„à€°à€Ÿà€Șà„à€€ à€—à€°à„à€šà„‡ à€›à€šà„à„€ à€Żà€žà€źà€Ÿ à€€à€Șà€Ÿà€ˆà€‚à€Čà„‡ à€žà„à€„à€Ÿà€Șà€šà€Ÿ à€—à€°à„‡à€•à€Ÿ à€à€Șà€čà€°à„‚à€Čà„‡ à€Źà€šà€Ÿà€à€•à€Ÿ à€–à€Ÿà€€à€Ÿà€čà€°à„‚ à€Șà€°à„à€š à€žà€•à„à€›à€šà„à„€ à€Żà€ž à€…à€šà„à€źà€€à€żà€Čà„‡ à€à€Șà€čà€°à„‚à€Čà€Ÿà€ˆ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€žà„‡à€­ à€—à€°à„à€š à€Šà€żà€šà„‡ à€­à€à€•à€Ÿà€Čà„‡ à€čà€Ÿà€šà€żà€•à€Ÿà€°à€• à€à€Șà€čà€°à„‚à€Čà„‡ à€€à€Șà€Ÿà€ˆà€‚à€Čà€Ÿà€ˆ à€„à€Ÿà€čà„ˆ à€šà€Šà€żà€‡à€•à€š à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€†à€Šà€Ÿà€š à€Șà„à€°à€Šà€Ÿà€š à€—à€°à„à€š à€žà€•à„à€›à€šà„à„€"</string>
-    <string name="permdesc_readContacts" product="default" msgid="4911989776203207644">"à€à€Șà€Čà€Ÿà€ˆ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€«à„‹à€šà€źà€Ÿ à€­à€Łà„à€Ąà€Ÿà€°à€Ł à€—à€°à€żà€à€•à€Ÿ à€•à€šà„à€Ÿà„à€Żà€Ÿà€•à„à€Ÿà€čà€°à„‚à€žà€à€— à€žà€źà„à€Źà€šà„à€§à€żà€€ à€Ąà„‡à€Ÿà€Ÿ à€Șà€ąà„à€šà„‡ à€…à€šà„à€źà€€à€ż à€Šà€żà€šà„à€›à„€ à€à€Șà€čà€°à„‚à€Čà„‡ à€•à€šà„à€Ÿà„à€Żà€Ÿà€•à„à€Ÿà€čà€°à„‚ à€Źà€šà€Ÿà€‰à€šà„‡ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€«à„‹à€šà€źà€Ÿ à€­à€Łà„à€Ąà€Ÿà€°à€Ł à€—à€°à€żà€à€•à€Ÿ à€–à€Ÿà€€à€Ÿà€čà€°à„‚à€źà€Ÿà€„à€ż à€Șà€šà€ż à€Șà€čà„à€à€š à€Șà„à€°à€Ÿà€Șà„à€€ à€—à€°à„à€šà„‡ à€›à€šà„à„€ à€Żà€žà€źà€Ÿ à€€à€Șà€Ÿà€ˆà€‚à€Čà„‡ à€žà„à€„à€Ÿà€Șà€šà€Ÿ à€—à€°à„‡à€•à€Ÿ à€à€Șà€čà€°à„‚à€Čà„‡ à€Źà€šà€Ÿà€à€•à€Ÿ à€–à€Ÿà€€à€Ÿà€čà€°à„‚ à€Șà€°à„à€š à€žà€•à„à€›à€šà„à„€ à€Żà€ž à€…à€šà„à€źà€€à€żà€Čà„‡ à€à€Șà€čà€°à„‚à€Čà€Ÿà€ˆ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€žà„‡à€­ à€—à€°à„à€š à€Šà€żà€šà„‡ à€­à€à€•à€Ÿà€Čà„‡ à€čà€Ÿà€šà€żà€•à€Ÿà€°à€• à€à€Șà€čà€°à„‚à€Čà„‡ à€€à€Șà€Ÿà€ˆà€‚à€Čà€Ÿà€ˆ à€„à€Ÿà€čà„ˆ à€šà€Šà€żà€‡à€•à€š à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€†à€Šà€Ÿà€š à€Șà„à€°à€Šà€Ÿà€š à€—à€°à„à€š à€žà€•à„à€›à€šà„à„€"</string>
+    <string name="permdesc_readContacts" product="tablet" msgid="6430093481659992692">"à€à€Șà€Čà€Ÿà€ˆ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€Ÿà„à€Żà€Ÿà€Źà„à€Čà„‡à€Ÿà€źà€Ÿ à€­à€Łà„à€Ąà€Ÿà€°à€Ł à€—à€°à€żà€à€•à€Ÿ à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€čà€°à„‚à€žà€à€— à€žà€źà„à€Źà€šà„à€§à€żà€€ à€Ąà„‡à€Ÿà€Ÿ à€Șà€ąà„à€šà„‡ à€…à€šà„à€źà€€à€ż à€Šà€żà€šà„à€›à„€ à€à€Șà€čà€°à„‚à€Čà„‡ à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€čà€°à„‚ à€Źà€šà€Ÿà€‰à€šà„‡ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€Ÿà„à€Żà€Ÿà€Źà„à€Čà„‡à€Ÿà€źà€Ÿ à€­à€Łà„à€Ąà€Ÿà€°à€Ł à€—à€°à€żà€à€•à€Ÿ à€–à€Ÿà€€à€Ÿà€čà€°à„‚à€źà€Ÿà€„à€ż à€Șà€šà€ż à€Șà€čà„à€à€š à€Șà„à€°à€Ÿà€Șà„à€€ à€—à€°à„à€šà„‡ à€›à€šà„à„€ à€Żà€žà€źà€Ÿ à€€à€Șà€Ÿà€ˆà€‚à€Čà„‡ à€žà„à€„à€Ÿà€Șà€šà€Ÿ à€—à€°à„‡à€•à€Ÿ à€à€Șà€čà€°à„‚à€Čà„‡ à€Źà€šà€Ÿà€à€•à€Ÿ à€–à€Ÿà€€à€Ÿà€čà€°à„‚ à€Șà€°à„à€š à€žà€•à„à€›à€šà„à„€ à€Żà€ž à€…à€šà„à€źà€€à€żà€Čà„‡ à€à€Șà€čà€°à„‚à€Čà€Ÿà€ˆ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€žà„‡à€­ à€—à€°à„à€š à€Šà€żà€šà„‡ à€­à€à€•à€Ÿà€Čà„‡ à€čà€Ÿà€šà€żà€•à€Ÿà€°à€• à€à€Șà€čà€°à„‚à€Čà„‡ à€€à€Șà€Ÿà€ˆà€‚à€Čà€Ÿà€ˆ à€„à€Ÿà€čà„ˆ à€šà€Šà€żà€‡à€•à€š à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€†à€Šà€Ÿà€š à€Șà„à€°à€Šà€Ÿà€š à€—à€°à„à€š à€žà€•à„à€›à€šà„à„€"</string>
+    <string name="permdesc_readContacts" product="tv" msgid="8400138591135554789">"à€à€Șà€Čà€Ÿà€ˆ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ Android à€Ÿà€żà€­à„€ à€Ąà€żà€­à€Ÿà€‡à€žà€źà€Ÿ à€­à€Łà„à€Ąà€Ÿà€°à€Ł à€—à€°à€żà€à€•à€Ÿ à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€Șà€ąà„à€š à€…à€šà„à€źà€€à€ż à€Šà€żà€šà„à€›à„€ à€à€Șà€čà€°à„‚à€Čà„‡ à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€čà€°à„‚ à€Źà€šà€Ÿà€‰à€šà„‡ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ Android à€Ÿà€żà€­à„€ à€Ąà€żà€­à€Ÿà€‡à€žà€źà€Ÿ à€­à€Łà„à€Ąà€Ÿà€°à€Ł à€—à€°à€żà€à€•à€Ÿ à€–à€Ÿà€€à€Ÿà€čà€°à„‚à€źà€Ÿà€„à€ż à€Șà€šà€ż à€Șà€čà„à€à€š à€Șà„à€°à€Ÿà€Șà„à€€ à€—à€°à„à€šà„‡ à€›à€šà„à„€ à€Żà€žà€źà€Ÿ à€€à€Șà€Ÿà€ˆà€‚à€Čà„‡ à€žà„à€„à€Ÿà€Șà€šà€Ÿ à€—à€°à„‡à€•à€Ÿ à€à€Șà€čà€°à„‚à€Čà„‡ à€Źà€šà€Ÿà€à€•à€Ÿ à€–à€Ÿà€€à€Ÿà€čà€°à„‚ à€Șà€°à„à€š à€žà€•à„à€›à€šà„à„€ à€Żà€ž à€…à€šà„à€źà€€à€żà€Čà„‡ à€à€Șà€čà€°à„‚à€Čà€Ÿà€ˆ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€žà„‡à€­ à€—à€°à„à€š à€Šà€żà€šà„‡ à€­à€à€•à€Ÿà€Čà„‡ à€čà€Ÿà€šà€żà€•à€Ÿà€°à€• à€à€Șà€čà€°à„‚à€Čà„‡ à€€à€Șà€Ÿà€ˆà€‚à€Čà€Ÿà€ˆ à€„à€Ÿà€čà„ˆ à€šà€Šà€żà€‡à€•à€š à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€†à€Šà€Ÿà€š à€Șà„à€°à€Šà€Ÿà€š à€—à€°à„à€š à€žà€•à„à€›à€šà„à„€"</string>
+    <string name="permdesc_readContacts" product="default" msgid="4911989776203207644">"à€à€Șà€Čà€Ÿà€ˆ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€«à„‹à€šà€źà€Ÿ à€­à€Łà„à€Ąà€Ÿà€°à€Ł à€—à€°à€żà€à€•à€Ÿ à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€čà€°à„‚à€žà€à€— à€žà€źà„à€Źà€šà„à€§à€żà€€ à€Ąà„‡à€Ÿà€Ÿ à€Șà€ąà„à€šà„‡ à€…à€šà„à€źà€€à€ż à€Šà€żà€šà„à€›à„€ à€à€Șà€čà€°à„‚à€Čà„‡ à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€čà€°à„‚ à€Źà€šà€Ÿà€‰à€šà„‡ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€«à„‹à€šà€źà€Ÿ à€­à€Łà„à€Ąà€Ÿà€°à€Ł à€—à€°à€żà€à€•à€Ÿ à€–à€Ÿà€€à€Ÿà€čà€°à„‚à€źà€Ÿà€„à€ż à€Șà€šà€ż à€Șà€čà„à€à€š à€Șà„à€°à€Ÿà€Șà„à€€ à€—à€°à„à€šà„‡ à€›à€šà„à„€ à€Żà€žà€źà€Ÿ à€€à€Șà€Ÿà€ˆà€‚à€Čà„‡ à€žà„à€„à€Ÿà€Șà€šà€Ÿ à€—à€°à„‡à€•à€Ÿ à€à€Șà€čà€°à„‚à€Čà„‡ à€Źà€šà€Ÿà€à€•à€Ÿ à€–à€Ÿà€€à€Ÿà€čà€°à„‚ à€Șà€°à„à€š à€žà€•à„à€›à€šà„à„€ à€Żà€ž à€…à€šà„à€źà€€à€żà€Čà„‡ à€à€Șà€čà€°à„‚à€Čà€Ÿà€ˆ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€žà„‡à€­ à€—à€°à„à€š à€Šà€żà€šà„‡ à€­à€à€•à€Ÿà€Čà„‡ à€čà€Ÿà€šà€żà€•à€Ÿà€°à€• à€à€Șà€čà€°à„‚à€Čà„‡ à€€à€Șà€Ÿà€ˆà€‚à€Čà€Ÿà€ˆ à€„à€Ÿà€čà„ˆ à€šà€Šà€żà€‡à€•à€š à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€†à€Šà€Ÿà€š à€Șà„à€°à€Šà€Ÿà€š à€—à€°à„à€š à€žà€•à„à€›à€šà„à„€"</string>
     <string name="permlab_writeContacts" msgid="8919430536404830430">"à€€à€Șà€Ÿà€ˆà€à€•à€Ÿ à€žà€źà„à€Șà€°à„à€•à€čà€°à„‚ à€Șà€°à€żà€”à€°à„à€€à€š à€—à€°à„à€šà„à€čà„‹à€žà„"</string>
     <string name="permdesc_writeContacts" product="tablet" msgid="6422419281427826181">"à€à€Șà€Čà€Ÿà€ˆ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€Ÿà„à€Żà€Ÿà€Źà„à€Čà„‡à€Ÿà€źà€Ÿ à€­à€Łà„à€Ąà€Ÿà€°à€Ł à€—à€°à€żà€à€•à€Ÿ à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€Șà€°à€żà€źà€Ÿà€°à„à€œà€š à€—à€°à„à€š à€…à€šà„à€źà€€à€ż à€Šà€żà€šà„à€›à„€ à€Żà„‹ à€…à€šà„à€źà€€à€żà€Čà„‡ à€à€Șà€Čà€Ÿà€ˆ à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€źà„‡à€Ÿà€Ÿà€‰à€š à€…à€šà„à€źà€€à€ż à€Šà€żà€šà„à€›à„€"</string>
     <string name="permdesc_writeContacts" product="tv" msgid="6488872735379978935">"à€à€Șà€Čà€Ÿà€ˆ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ Android à€Ÿà€żà€­à„€ à€Ąà€żà€­à€Ÿà€‡à€žà€źà€Ÿ à€­à€Łà„à€Ąà€Ÿà€°à€Ł à€—à€°à€żà€à€•à€Ÿ à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€Șà€°à€żà€źà€Ÿà€°à„à€œà€š à€—à€°à„à€š à€…à€šà„à€źà€€à€ż à€Šà€żà€šà„à€›à„€ à€Żà„‹ à€…à€šà„à€źà€€à€żà€Čà„‡ à€à€Șà€Čà€Ÿà€ˆ à€žà€źà„à€Șà€°à„à€• à€ à„‡à€—à€Ÿà€šà€Ÿà€žà€źà„à€Źà€šà„à€§à„€ à€Ąà„‡à€Ÿà€Ÿ à€źà„‡à€Ÿà€Ÿà€‰à€š à€…à€šà„à€źà€€à€ż à€Šà€żà€šà„à€›à„€"</string>
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"à€…à€šà„à€čà€Ÿà€° à€Șà€čà€żà€šà€Ÿà€š à€°à€Šà„à€Š à€—à€°à€żà€Żà„‹à„€"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿà€Čà„‡ à€«à„‡à€ž à€…à€šà€Čà€• à€žà„‡à€Ÿà€…à€Ș à€—à€°à„à€šà„‡ à€•à€Ÿà€°à„à€Ż à€°à€Šà„à€Š à€—à€°à„à€šà„à€­à€Żà„‹"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"à€§à„‡à€°à„ˆà€Șà€Ÿà€• à€Șà„à€°à€Żà€Ÿà€žà€čà€°à„‚ à€­à€à„€ à€Șà€›à€ż à€«à„‡à€°à€ż à€Șà„à€°à€Żà€Ÿà€ž à€—à€°à„à€šà„à€čà„‹à€žà„‌à„€"</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"à€šà€żà€•à„ˆ à€§à„‡à€°à„ˆ à€Șà„à€°à€Żà€Ÿà€žà€čà€°à„‚ à€­à€à„€ à€«à„‡à€ž à€…à€šà€Čà€• à€…à€« à€—à€°à€żà€à€•à„‹ à€›à„€"</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"à€šà€żà€•à„ˆ à€§à„‡à€°à„ˆ à€Șà„à€°à€Żà€Ÿà€žà€čà€°à„‚ à€­à€à„€ à€Żà€žà€•à„‹ à€žà€Ÿà€Ÿà„‹ à€žà„à€•à„à€°à€żà€š à€Čà€• à€Șà„à€°à€Żà„‹à€— à€—à€°à„à€šà„à€čà„‹à€žà„à„€"</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"à€…à€šà„à€čà€Ÿà€° à€Șà„à€·à„à€Ÿà€ż à€—à€°à„à€š à€žà€•à€żà€à€šà„€ à€«à„‡à€°à€ż à€Șà„à€°à€Żà€Ÿà€ž à€—à€°à„à€šà„à€čà„‹à€žà„à„€"</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"à€€à€Șà€Ÿà€ˆà€‚à€Čà„‡ à€«à„‡à€ž à€…à€šà€Čà€• à€žà„‡à€Ÿà€…à€Ș à€—à€°à„à€šà„à€­à€à€•à„‹ à€›à„ˆà€š"</string>
@@ -2088,11 +2087,11 @@
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"à€Żà€ž à€žà„‚à€šà€šà€Ÿà€Čà€Ÿà€ˆ à€§à„‡à€°à„ˆ à€źà€čà€€à„à€€à„à€”à€Șà„‚à€°à„à€Ł à€žà„‚à€šà€šà€Ÿà€•à€Ÿ à€°à„‚à€Șà€źà€Ÿ à€žà„‡à€Ÿ à€—à€°à€żà€à€•à„‹ à€›à„€ à€Șà„à€°à€€à€żà€•à„à€°à€żà€Żà€Ÿ à€Šà€żà€š à€Ÿà„à€Żà€Ÿà€Ș à€—à€°à„à€šà„à€čà„‹à€žà„à„€"</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"à€Żà€ž à€žà„‚à€šà€šà€Ÿà€Čà€Ÿà€ˆ à€•à€ź à€źà€čà€€à„à€€à„à€”à€Șà„‚à€°à„à€Ł à€žà„‚à€šà€šà€Ÿà€•à€Ÿ à€°à„‚à€Șà€źà€Ÿ à€žà„‡à€Ÿ à€—à€°à€żà€à€•à„‹ à€›à„€ à€Șà„à€°à€€à€żà€•à„à€°à€żà€Żà€Ÿ à€Šà€żà€š à€Ÿà„à€Żà€Ÿà€Ș à€—à€°à„à€šà„à€čà„‹à€žà„à„€"</string>
     <string name="nas_upgrade_notification_title" msgid="8436359459300146555">"à€Șà€°à€żà€·à„à€•à„ƒà€€ à€žà„‚à€šà€šà€Ÿà€čà€°à„‚"</string>
-    <string name="nas_upgrade_notification_content" msgid="5157550369837103337">"à€…à€Ź à€Șà€°à€żà€·à„à€•à„ƒà€€ à€žà„‚à€šà€šà€Ÿà€čà€°à„‚ à€šà€Ÿà€źà€• à€žà„à€”à€żà€§à€Ÿà€Čà„‡ à€•à€Ÿà€°à€Źà€Ÿà€čà„€ à€€à€„à€Ÿ à€œà€”à€Ÿà€«à€čà€°à„‚à€žà€źà„à€Źà€šà„à€§à„€ à€žà„à€à€Ÿà€” à€Šà„‡à€–à€Ÿà€‰à€à€›à„€ Android à€•à„‹ à€à€Ąà„à€Żà€Ÿà€Șà„à€Ÿà€żà€­ à€žà„‚à€šà€šà€Ÿà€čà€°à„‚ à€šà€Ÿà€źà€• à€žà„à€”à€żà€§à€Ÿà€Čà„‡ à€…à€Ź à€‰à€Șà„à€°à€Ÿà€šà„à€€ à€•à€Ÿà€ź à€—à€°à„à€Šà„ˆà€šà„€"</string>
+    <string name="nas_upgrade_notification_content" msgid="5157550369837103337">"à€…à€Ź à€Șà€°à€żà€·à„à€•à„ƒà€€ à€žà„‚à€šà€šà€Ÿà€čà€°à„‚ à€šà€Ÿà€źà€• à€žà„à€”à€żà€§à€Ÿà€Čà„‡ à€•à€Ÿà€°à€Źà€Ÿà€čà„€ à€€à€„à€Ÿ à€œà€”à€Ÿà€«à€čà€°à„‚à€žà€źà„à€Źà€šà„à€§à„€ à€žà„à€à€Ÿà€” à€Šà„‡à€–à€Ÿà€‰à€à€›à„€ Android à€•à„‹ à€…à€šà„à€•à„‚à€Č à€Șà€Ÿà€°à„à€š à€źà€żà€Čà„à€šà„‡ à€žà„‚à€šà€šà€Ÿà€čà€°à„‚ à€šà€Ÿà€źà€• à€žà„à€”à€żà€§à€Ÿà€Čà„‡ à€…à€Ź à€‰à€Șà„à€°à€Ÿà€šà„à€€ à€•à€Ÿà€ź à€—à€°à„à€Šà„ˆà€šà„€"</string>
     <string name="nas_upgrade_notification_enable_action" msgid="3046406808378726874">"à€ à€żà€• à€›"</string>
     <string name="nas_upgrade_notification_disable_action" msgid="3794833210043497982">"à€…à€« à€—à€°à„à€šà„à€čà„‹à€žà„"</string>
     <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"à€„à€Ș à€œà€Ÿà€šà„à€šà„à€čà„‹à€žà„"</string>
-    <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"Android à„§à„š à€źà€Ÿ Android à€•à„‹ à€à€Ąà„à€Żà€Ÿà€Șà„à€Ÿà€żà€­ à€žà„‚à€šà€šà€Ÿà€čà€°à„‚ à€šà€Ÿà€źà€• à€žà„à€”à€żà€§à€Ÿà€Čà€Ÿà€ˆ à€Șà€°à€żà€·à„à€•à„ƒà€€ à€žà„‚à€šà€šà€Ÿà€čà€°à„‚ à€šà€Ÿà€źà€• à€žà„à€”à€żà€§à€Ÿà€Čà„‡ à€Șà„à€°à€€à€żà€žà„à€„à€Ÿà€Șà€š à€—à€°à„‡à€•à„‹ à€›à„€ à€Żà„‹ à€žà„à€”à€żà€§à€Ÿà€Čà„‡ à€•à€Ÿà€°à€Źà€Ÿà€čà„€ à€€à€„à€Ÿ à€œà€”à€Ÿà€«à€žà€źà„à€Źà€šà„à€§à„€ à€žà„à€à€Ÿà€” à€Šà„‡à€–à€Ÿà€‰à€à€› à€° à€€à€Șà€Ÿà€ˆà€‚à€•à€Ÿ à€žà„‚à€šà€šà€Ÿà€čà€°à„‚ à€”à„à€Żà€”à€žà„à€„à€żà€€ à€—à€°à„à€›à„€\n\nà€Șà€°à€żà€·à„à€•à„ƒà€€ à€žà„‚à€šà€šà€Ÿà€čà€°à„‚ à€šà€Ÿà€źà€• à€žà„à€”à€żà€§à€Ÿà€Čà„‡ à€žà„‚à€šà€šà€Ÿà€źà€Ÿ à€‰à€Čà„à€Čà€żà€–à€żà€€ à€žà€źà„à€Șà€°à„à€• à€”à„à€Żà€•à„à€€à€żà€•à„‹ à€šà€Ÿà€ź à€° à€źà„à€Żà€Ÿà€žà„‡à€œ à€œà€žà„à€€à€Ÿ à€”à„à€Żà€•à„à€€à€żà€—à€€ à€œà€Ÿà€šà€•à€Ÿà€°à„€à€Čà€—à€Ÿà€Żà€€à€•à€Ÿ à€žà€Ÿà€źà€—à„à€°à„€ à€čà„‡à€°à„à€š à€€à€„à€Ÿ à€Șà„à€°à€Żà„‹à€— à€—à€°à„à€š à€žà€•à„à€›à„€ à€Żà„‹ à€žà„à€”à€żà€§à€Ÿà€Čà„‡ à€«à„‹à€š à€‰à€ à€Ÿà€‰à€šà„‡ à€€à€„à€Ÿ \'à€Źà€Ÿà€§à€Ÿ à€šà€Șà„à€±à„à€Żà€Ÿà€‰à€šà„à€čà„‹à€žà„\' à€źà„‹à€Ą à€šà€żà€Żà€šà„à€€à„à€°à€Ł à€—à€°à„à€šà„‡ à€•à€Ÿà€°à„à€Żà€žà€čà€żà€€ à€žà„‚à€šà€šà€Ÿà€čà€°à„‚ à€čà€Ÿà€Ÿà€‰à€šà„‡ à€”à€Ÿ à€žà„‚à€šà€šà€Ÿà€čà€°à„‚à€•à„‹ à€œà€”à€Ÿà€« à€Šà€żà€šà„‡ à€•à€Ÿà€°à„à€Ż à€Șà€šà€ż à€—à€°à„à€š à€žà€•à„à€›à„€"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"Android à„§à„š à€źà€Ÿ Android à€•à„‹ à€…à€šà„à€•à„‚à€Č à€Șà€Ÿà€°à„à€š à€źà€żà€Čà„à€šà„‡ à€žà„‚à€šà€šà€Ÿà€čà€°à„‚ à€šà€Ÿà€źà€• à€žà„à€”à€żà€§à€Ÿà€Čà€Ÿà€ˆ à€Șà€°à€żà€·à„à€•à„ƒà€€ à€žà„‚à€šà€šà€Ÿà€čà€°à„‚ à€šà€Ÿà€źà€• à€žà„à€”à€żà€§à€Ÿà€Čà„‡ à€Șà„à€°à€€à€żà€žà„à€„à€Ÿà€Șà€š à€—à€°à„‡à€•à„‹ à€›à„€ à€Żà„‹ à€žà„à€”à€żà€§à€Ÿà€Čà„‡ à€•à€Ÿà€°à€Źà€Ÿà€čà„€ à€€à€„à€Ÿ à€œà€”à€Ÿà€«à€žà€źà„à€Źà€šà„à€§à„€ à€žà„à€à€Ÿà€” à€Šà„‡à€–à€Ÿà€‰à€à€› à€° à€€à€Șà€Ÿà€ˆà€‚à€•à€Ÿ à€žà„‚à€šà€šà€Ÿà€čà€°à„‚ à€”à„à€Żà€”à€žà„à€„à€żà€€ à€—à€°à„à€›à„€\n\nà€Șà€°à€żà€·à„à€•à„ƒà€€ à€žà„‚à€šà€šà€Ÿà€čà€°à„‚ à€šà€Ÿà€źà€• à€žà„à€”à€żà€§à€Ÿà€Čà„‡ à€žà„‚à€šà€šà€Ÿà€źà€Ÿ à€‰à€Čà„à€Čà€żà€–à€żà€€ à€žà€źà„à€Șà€°à„à€• à€”à„à€Żà€•à„à€€à€żà€•à„‹ à€šà€Ÿà€ź à€° à€źà„à€Żà€Ÿà€žà„‡à€œ à€œà€žà„à€€à€Ÿ à€”à„à€Żà€•à„à€€à€żà€—à€€ à€œà€Ÿà€šà€•à€Ÿà€°à„€à€Čà€—à€Ÿà€Żà€€à€•à€Ÿ à€žà€Ÿà€źà€—à„à€°à„€ à€čà„‡à€°à„à€š à€€à€„à€Ÿ à€Șà„à€°à€Żà„‹à€— à€—à€°à„à€š à€žà€•à„à€›à„€ à€Żà„‹ à€žà„à€”à€żà€§à€Ÿà€Čà„‡ à€«à„‹à€š à€‰à€ à€Ÿà€‰à€šà„‡ à€€à€„à€Ÿ \'à€Źà€Ÿà€§à€Ÿ à€šà€Șà„à€±à„à€Żà€Ÿà€‰à€šà„à€čà„‹à€žà„\' à€źà„‹à€Ą à€šà€żà€Żà€šà„à€€à„à€°à€Ł à€—à€°à„à€šà„‡ à€•à€Ÿà€°à„à€Żà€žà€čà€żà€€ à€žà„‚à€šà€šà€Ÿà€čà€°à„‚ à€čà€Ÿà€Ÿà€‰à€šà„‡ à€”à€Ÿ à€žà„‚à€šà€šà€Ÿà€čà€°à„‚à€•à„‹ à€œà€”à€Ÿà€« à€Šà€żà€šà„‡ à€•à€Ÿà€°à„à€Ż à€Șà€šà€ż à€—à€°à„à€š à€žà€•à„à€›à„€"</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"à€Šà€żà€šà€šà€°à„à€Żà€Ÿ à€źà„‹à€Ąà€•à„‹ à€œà€Ÿà€šà€•à€Ÿà€°à„€à€źà„‚à€Čà€• à€žà„‚à€šà€šà€Ÿ"</string>
     <string name="dynamic_mode_notification_title" msgid="1388718452788985481">"à€Źà„à€Żà€Ÿà€Ÿà„à€°à„€ à€žà„‡à€­à€° à€…à€š à€—à€°à€żà€à€•à„‹ à€›"</string>
     <string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"à€Źà„à€Żà€Ÿà€Ÿà„à€°à„€à€•à„‹ à€†à€Żà„ à€Źà€ąà€Ÿà€‰à€š à€Źà„à€Żà€Ÿà€Ÿà„à€°à„€à€•à„‹ à€–à€Șà€€ à€•à€ź à€—à€°à€żà€à€Šà„ˆ à€›"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"à€…à€š à€—à€°à„à€š à€Ÿà„à€Żà€Ÿà€Ș à€—à€°à„à€šà„à€čà„‹à€žà„"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"à€Żà„‹ à€žà€Ÿà€źà€—à„à€°à„€ à€–à„‹à€Čà„à€š à€źà€żà€Čà„à€šà„‡ à€•à„à€šà„ˆ à€Șà€šà€ż à€•à€Ÿà€źà€žà€źà„à€Źà€šà„à€§à„€ à€à€Ș à€›à„ˆà€š"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"à€Żà„‹ à€žà€Ÿà€źà€—à„à€°à„€ à€–à„‹à€Čà„à€š à€źà€żà€Čà„à€šà„‡ à€•à„à€šà„ˆ à€Șà€šà€ż à€”à„à€Żà€•à„à€€à€żà€—à€€ à€à€Ș à€›à„ˆà€š"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"<xliff:g id="APP">%s</xliff:g> à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€”à„à€Żà€•à„à€€à€żà€—à€€ à€Șà„à€°à„‹à€«à€Ÿà€‡à€Čà€źà€Ÿ à€–à„‹à€Čà„à€šà„‡ à€čà„‹?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"<xliff:g id="APP">%s</xliff:g> à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€•à€Ÿà€°à„à€Ż à€Șà„à€°à„‹à€«à€Ÿà€‡à€Čà€źà€Ÿ à€–à„‹à€Čà„à€šà„‡ à€čà„‹?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"à€”à„à€Żà€•à„à€€à€żà€—à€€ à€Źà„à€°à€Ÿà€‰à€œà€° à€Șà„à€°à€Żà„‹à€— à€—à€°à„à€šà„à€čà„‹à€žà„"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"à€•à€Ÿà€°à„à€Ż à€Źà„à€°à€Ÿà€‰à€œà€° à€Șà„à€°à€Żà„‹à€— à€—à€°à„à€šà„à€čà„‹à€žà„"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM à€•à„‹ à€šà„‡à€Ÿà€”à€°à„à€• à€…à€šà€Čà€• à€—à€°à„à€šà„‡ PIN"</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 40ec59e..da6c651 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Bewerking voor gezichtsherkenning geannuleerd."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Ontgrendelen via gezichtsherkenning geannuleerd door gebruiker"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Te veel pogingen. Probeer het later opnieuw."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Te veel pogingen. Ontgrendelen via gezichtsherkenning uitgezet."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Te veel pogingen. Gebruik schermvergrendeling."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Kan gezicht niet verifiëren. Probeer het nog eens."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Je hebt Ontgrendelen via gezichtsherkenning niet ingesteld."</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Tik om aan te zetten"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Geen werk-apps"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Geen persoonlijke apps"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"<xliff:g id="APP">%s</xliff:g> openen in je persoonlijke profiel?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"<xliff:g id="APP">%s</xliff:g> openen in je werkprofiel?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Persoonlijke browser gebruiken"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Werkbrowser gebruiken"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Ontgrendelingspincode voor SIM-netwerk"</string>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index f9842d7..bf35b3f 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -302,7 +302,7 @@
     <string name="permgroupdesc_contacts" msgid="9163927941244182567">"àŹ†àŹȘàŹŁàŹ™à­àŹ• àŹŻà­‹àŹ—àŹŸàŹŻà­‹àŹ— àŹ†àŹ•à­àŹžà­‡àŹžà­ àŹ•àŹ°à­‡"</string>
     <string name="permgrouplab_location" msgid="1858277002233964394">"àŹČà­‹àŹ•à­‡àŹžàŹš"</string>
     <string name="permgroupdesc_location" msgid="1995955142118450685">"àŹàŹčàŹż àŹĄàŹżàŹ­àŹŸàŹ‡àŹžà­‌àŹ° àŹČà­‹àŹ•à­‡àŹžàŹšà­‍ àŹ†àŹ•à­àŹžà­‡àŹžà­‍ àŹ•àŹ°à­‡"</string>
-    <string name="permgrouplab_calendar" msgid="6426860926123033230">"àŹ•à­‡àŹČà­‡àŹŁà­àŹĄàŹ°"</string>
+    <string name="permgrouplab_calendar" msgid="6426860926123033230">"àŹ•à­à­ŸàŹŸàŹČà­‡àŹŁà­àŹĄàŹ°"</string>
     <string name="permgroupdesc_calendar" msgid="6762751063361489379">"àŹ†àŹȘàŹŁàŹ™à­àŹ• àŹ•à­à­ŸàŹŸàŹČà­‡àŹŁà­àŹĄàŹ°à­‍ àŹ†àŹ•à­àŹžà­‡àŹžà­‍ àŹ•àŹ°à­‡"</string>
     <string name="permgrouplab_sms" msgid="795737735126084874">"SMS"</string>
     <string name="permgroupdesc_sms" msgid="5726462398070064542">"SMS àŹźà­‡àŹžà­‡àŹœà­‍ àŹȘàŹ àŹŸàŹšà­àŹ€à­ àŹ“ àŹŠà­‡àŹ–àŹšà­àŹ€à­"</string>
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"àŹ«à­‡àŹžà­‍àŹ° àŹ…àŹȘàŹ°à­‡àŹ¶àŹšà­‍ àŹ•à­à­ŸàŹŸàŹšà­àŹžàŹČ୍‍ àŹčୋ‍àŹ‡àŹ—àŹČàŹŸ"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"àŹ‰àŹȘàŹŻà­‹àŹ—àŹ•àŹ°à­àŹ€à­àŹ€àŹŸàŹ™à­àŹ• àŹŠà­à­±àŹŸàŹ°àŹŸ àŹ«à­‡àŹžà­ àŹ…àŹšàŹČàŹ•à­ àŹŹàŹŸàŹ€àŹżàŹČ୍ àŹ•àŹ°àŹŸàŹŻàŹŸàŹ‡àŹ›àŹż"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"àŹŹàŹŸàŹ°àŹźà­àŹŹàŹŸàŹ° àŹšà­‡àŹ·à­àŹŸàŹŸà„€ àŹȘàŹ°à­‡ àŹȘà­àŹŁàŹżàŹ„àŹ°à­‡ àŹšà­‡àŹ·à­àŹŸàŹŸ àŹ•àŹ°àŹšà­àŹ€à­à„€"</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"àŹ…àŹšà­‡àŹ•àŹ—à­àŹĄàŹŒàŹżàŹ àŹȘà­àŹ°àŹšà­‡àŹ·à­àŹŸàŹŸà„€ àŹ«à­‡àŹžà­ àŹ…àŹšàŹČàŹ•à­ àŹ…àŹ•à­àŹ·àŹź àŹ•àŹ°àŹŸàŹŻàŹŸàŹ‡àŹ›àŹżà„€"</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"àŹ…àŹšà­‡àŹ•àŹ—à­àŹĄàŹŒàŹżàŹ àŹȘà­àŹ°àŹšà­‡àŹ·à­àŹŸàŹŸà„€ àŹàŹčàŹŸ àŹȘàŹ°àŹżàŹŹàŹ°à­àŹ€à­àŹ€à­‡ àŹžà­àŹ•à­àŹ°àŹżàŹšà­ àŹČàŹ•à­ àŹàŹŁà­àŹŸàŹ°à­ àŹ•àŹ°àŹšà­àŹ€à­à„€"</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"àŹźà­àŹčàŹ àŹšàŹżàŹčà­àŹšàŹŸ àŹ•àŹ°àŹżàŹȘàŹŸàŹ°àŹżàŹČàŹŸ àŹšàŹŸàŹčàŹżàŹà„€ àŹȘà­àŹŁàŹż àŹšà­‡àŹ·à­àŹŸàŹŸ àŹ•àŹ°àŹšà­àŹ€à­à„€"</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"àŹ†àŹȘàŹŁ àŹ«à­‡àŹžà­ àŹ…àŹšàŹČàŹ•à­ àŹžà­‡àŹŸà­ àŹ…àŹȘ୍ àŹ•àŹ°àŹżàŹšàŹŸàŹčàŹŸàŹàŹšà­àŹ€àŹż"</string>
@@ -1873,8 +1872,8 @@
     <string name="confirm_battery_saver" msgid="5247976246208245754">"àŹ àŹżàŹ• àŹ…àŹ›àŹż"</string>
     <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"àŹŹà­‡àŹŸà­‡àŹ°à­€ àŹžà­‡àŹ­àŹ° àŹ—àŹŸàŹąàŹŒàŹŸ àŹ„àŹżàŹźàŹ•à­ àŹšàŹŸàŹČୁ àŹ•àŹ°à­‡ àŹàŹŹàŹ‚ àŹȘà­ƒàŹ·à­àŹ àŹȘàŹŸ àŹ•àŹŸàŹ°à­àŹŻà­à­ŸàŹ•àŹłàŹŸàŹȘ, àŹ•àŹżàŹ›àŹż àŹ­àŹżàŹœà­àŹ†àŹČ àŹ‡àŹ«à­‡àŹ•à­àŹŸ, àŹ•àŹżàŹ›àŹż àŹ«àŹżàŹšàŹ° àŹàŹŹàŹ‚ àŹ•àŹżàŹ›àŹż àŹšà­‡àŹŸà­±àŹŸàŹ°à­àŹ• àŹžàŹ‚àŹŻà­‹àŹ—àŹ•à­ àŹžà­€àŹźàŹżàŹ€ àŹ•àŹżàŹźà­àŹŹàŹŸ àŹŹàŹšà­àŹŠ àŹ•àŹ°à­‡à„€"</string>
     <string name="battery_saver_description" msgid="8518809702138617167">"àŹŹà­à­ŸàŹŸàŹŸà­‡àŹ°à­€ àŹžà­‡àŹ­àŹ°à­ àŹ—àŹŸàŹąàŹŒàŹŸ àŹ„àŹżàŹźàŹ•à­ àŹšàŹŸàŹČୁ àŹ•àŹ°à­‡ àŹàŹŹàŹ‚ àŹȘà­ƒàŹ·à­àŹ àŹȘàŹŸ àŹ•àŹŸàŹ°à­àŹŻà­à­ŸàŹ•àŹłàŹŸàŹȘ, àŹ•àŹżàŹ›àŹż àŹ­àŹżàŹœà­àŹ†àŹČ୍ àŹ‡àŹ«à­‡àŹ•à­àŹŸ, àŹ•àŹżàŹ›àŹż àŹ«àŹżàŹšàŹ°à­ àŹàŹŹàŹ‚ àŹ•àŹżàŹ›àŹż àŹšà­‡àŹŸà­±àŹŸàŹ°à­àŹ• àŹžàŹ‚àŹŻà­‹àŹ—àŹ•à­ àŹžà­€àŹźàŹżàŹ€ àŹ•àŹżàŹźà­àŹŹàŹŸ àŹŹàŹšà­àŹŠ àŹ•àŹ°à­‡à„€"</string>
-    <string name="data_saver_description" msgid="4995164271550590517">"àŹĄàŹŸàŹŸàŹŸàŹ° àŹŹà­à­ŸàŹŹàŹčàŹŸàŹ°àŹ•à­ àŹ•àŹź àŹ•àŹ°àŹżàŹŹàŹŸàŹ°à­‡ àŹžàŹŸàŹčàŹŸàŹŻà­à­Ÿ àŹ•àŹ°àŹżàŹŹàŹŸàŹ•à­, àŹĄàŹŸàŹŸàŹŸ àŹžà­‡àŹ­àŹ° àŹŹà­‡àŹ•àŹ—à­àŹ°àŹŸàŹ‰àŹŁà­àŹĄàŹ°à­‡ àŹĄàŹŸàŹŸàŹŸ àŹȘàŹ àŹŸàŹ‡àŹŹàŹŸ àŹ•àŹżàŹźà­àŹŹàŹŸ àŹȘàŹŸàŹ‡àŹŹàŹŸàŹ•à­ àŹ•àŹżàŹ›àŹż àŹ†àŹȘà­àŹžàŹ•à­ àŹŹàŹŸàŹ°àŹŁ àŹ•àŹ°à­‡à„€ àŹ†àŹȘàŹŁ àŹŹàŹ°à­àŹ€à­àŹ€àŹźàŹŸàŹš àŹŹà­à­ŸàŹŹàŹčàŹŸàŹ° àŹ•àŹ°à­àŹ„àŹżàŹŹàŹŸ àŹ†àŹȘàŹŸàŹż àŹĄàŹŸàŹŸàŹŸàŹ•à­ àŹ†àŹ•à­àŹžà­‡àŹž àŹ•àŹ°àŹżàŹȘàŹŸàŹ°à­‡, àŹ•àŹżàŹšà­àŹ€à­ àŹàŹčàŹŸ àŹ•àŹź àŹ„àŹ° àŹ•àŹ°àŹżàŹȘàŹŸàŹ°à­‡à„€ àŹàŹčàŹŸàŹ° àŹ…àŹ°à­àŹ„ àŹčà­‹àŹ‡àŹȘàŹŸàŹ°à­‡ àŹŻà­‡àŹźàŹżàŹ€àŹż àŹ†àŹȘàŹŁ àŹ‡àŹźà­‡àŹœàŹ—à­àŹĄàŹŒàŹżàŹ•à­ àŹŸàŹŸàŹȘ àŹšàŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹ°à­àŹŻà­à­ŸàŹšà­àŹ€ àŹžà­‡àŹ—à­àŹĄàŹŒàŹżàŹ• àŹĄàŹżàŹžàŹȘ୍àŹČେ àŹčà­àŹ àŹšàŹŸàŹčàŹżàŹà„€"</string>
-    <string name="data_saver_enable_title" msgid="7080620065745260137">"àŹĄàŹŸàŹŸàŹŸ àŹžà­‡àŹ­àŹ° àŹšàŹŸàŹČୁ àŹ•àŹ°àŹżàŹŹà­‡?"</string>
+    <string name="data_saver_description" msgid="4995164271550590517">"àŹĄàŹŸàŹŸàŹŸ àŹŹà­à­ŸàŹŹàŹčàŹŸàŹ° àŹ•àŹźà­‍ àŹ•àŹ°àŹżàŹŹàŹŸàŹ°à­‡ àŹžàŹŸàŹčàŹŸàŹŻà­à­Ÿ àŹ•àŹ°àŹżàŹŹàŹŸàŹ•à­, àŹĄàŹŸàŹŸàŹŸ àŹžà­‡àŹ­àŹ°à­‍ àŹŹà­à­ŸàŹŸàŹ•à­‌àŹ—à­àŹ°àŹŸàŹ‰àŹŁà­àŹĄàŹ°à­‡ àŹĄàŹŸàŹŸàŹŸ àŹȘàŹ àŹŸàŹ‡àŹŹàŹŸ àŹ•àŹżàŹźà­àŹŹàŹŸ àŹȘà­àŹ°àŹŸàŹȘà­àŹ€ àŹ•àŹ°àŹżàŹŹàŹŸàŹ•à­ àŹ•àŹżàŹ›àŹż àŹ†àŹȘ୍‍àŹ•à­ àŹŹàŹŸàŹ°àŹŁ àŹ•àŹ°à­‡à„€ àŹ†àŹȘàŹŁ àŹŹàŹ°à­àŹ€à­àŹ€àŹźàŹŸàŹš àŹŹà­à­ŸàŹŹàŹčàŹŸàŹ° àŹ•àŹ°à­àŹ„àŹżàŹŹàŹŸ àŹ†àŹȘ୍‍, àŹĄàŹŸàŹŸàŹŸ àŹ†àŹ•à­àŹžà­‡àŹžà­‍ àŹ•àŹ°àŹżàŹȘàŹŸàŹ°à­‡, àŹ•àŹżàŹšà­àŹ€à­ àŹàŹčàŹŸ àŹ•àŹźà­‍ àŹ„àŹ° àŹ•àŹ°àŹżàŹȘàŹŸàŹ°à­‡à„€ àŹàŹčàŹŸàŹ° àŹ…àŹ°à­àŹ„ àŹčà­‹àŹ‡àŹȘàŹŸàŹ°à­‡ àŹŻà­‡àŹźàŹżàŹ€àŹż àŹ†àŹȘàŹŁ àŹ‡àŹźà­‡àŹœàŹ—à­àŹĄàŹŒàŹżàŹ•à­ àŹŸàŹŸàŹȘ୍‍ àŹšàŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹ°à­àŹŻà­à­ŸàŹšà­àŹ€ àŹžà­‡àŹ—à­àŹĄàŹŒàŹżàŹ• àŹĄàŹżàŹžàŹȘ୍àŹČେ àŹčà­àŹ àŹšàŹŸàŹčàŹżàŹà„€"</string>
+    <string name="data_saver_enable_title" msgid="7080620065745260137">"àŹĄàŹŸàŹŸàŹŸ àŹžà­‡àŹ­àŹ°à­‌ àŹšàŹŸàŹČୁ àŹ•àŹ°àŹżàŹŹà­‡?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"àŹšàŹŸàŹČୁ àŹ•àŹ°àŹšà­àŹ€à­"</string>
     <string name="zen_mode_duration_minutes_summary" msgid="4555514757230849789">"{count,plural, =1{àŹàŹ• àŹźàŹżàŹšàŹżàŹŸ àŹȘàŹŸàŹ‡àŹ ({formattedTime} àŹȘàŹ°à­àŹŻà­à­ŸàŹšà­àŹ€)}other{# àŹźàŹżàŹšàŹżàŹŸ àŹȘàŹŸàŹ‡àŹ ({formattedTime} àŹȘàŹ°à­àŹŻà­à­ŸàŹšà­àŹ€)}}"</string>
     <string name="zen_mode_duration_minutes_summary_short" msgid="1187553788355486950">"{count,plural, =1{1 àŹźàŹżàŹšàŹżàŹŸ àŹȘàŹŸàŹ‡àŹ ({formattedTime} àŹȘàŹ°à­àŹŻà­à­ŸàŹšà­àŹ€)}other{# àŹźàŹżàŹšàŹżàŹŸ àŹȘàŹŸàŹ‡àŹ ({formattedTime} àŹȘàŹ°à­àŹŻà­à­ŸàŹšà­àŹ€)}}"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"àŹšàŹŸàŹČୁ àŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ àŹŸàŹŸàŹȘ୍ àŹ•àŹ°àŹšà­àŹ€à­"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"àŹ•à­ŒàŹŁàŹžàŹż à­±àŹŸàŹ°à­àŹ• àŹ†àŹȘ୍ àŹšàŹŸàŹčàŹżàŹ"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"àŹ•à­ŒàŹŁàŹžàŹż àŹŹà­à­ŸàŹ•à­àŹ€àŹżàŹ—àŹ€ àŹ†àŹȘ୍ àŹšàŹŸàŹčàŹżàŹ"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"<xliff:g id="APP">%s</xliff:g>àŹ•à­ àŹ†àŹȘàŹŁàŹ™à­àŹ• àŹŹà­à­ŸàŹ•à­àŹ€àŹżàŹ—àŹ€ àŹȘà­àŹ°à­‹àŹ«àŹŸàŹ‡àŹČàŹ°à­‡ àŹ–à­‹àŹČàŹżàŹŹà­‡?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"<xliff:g id="APP">%s</xliff:g>àŹ•à­ àŹ†àŹȘàŹŁàŹ™à­àŹ• à­±àŹŸàŹ°à­àŹ• àŹȘà­àŹ°à­‹àŹ«àŹŸàŹ‡àŹČàŹ°à­‡ àŹ–à­‹àŹČàŹżàŹŹà­‡?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"àŹŹà­à­ŸàŹ•à­àŹ€àŹżàŹ—àŹ€ àŹŹà­àŹ°àŹŸàŹ‰àŹœàŹ°à­ àŹŹà­à­ŸàŹŹàŹčàŹŸàŹ° àŹ•àŹ°àŹšà­àŹ€à­"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"à­±àŹŸàŹ°à­àŹ• àŹŹà­àŹ°àŹŸàŹ‰àŹœàŹ°à­ àŹŹà­à­ŸàŹŹàŹčàŹŸàŹ° àŹ•àŹ°àŹšà­àŹ€à­"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM àŹšà­‡àŹŸà­±àŹŸàŹ°à­àŹ• àŹ…àŹšàŹČàŹ•à­ PIN"</string>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index 0b09f9f..7f4c4ac 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"àššàšżàščàš°àšŸ àšȘàš›àšŸàšŁàšš àšŠà©€ àšȘà©àš°àš•àšżàš°àšżàš† àš°à©±àšŠ àš•à©€àš€à©€ àš—àšˆà„€"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"àš”àš°àš€à©‹àš‚àš•àšŸàš° àššà©‡ àš«àšŒà©‡àšž àš…àšŁàšČàšŸàš• àš°à©±àšŠ àš•à©€àš€àšŸ"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"àščà©±àšŠà©‹àš‚ àš”à©±àš§ àš•à©‹àšžàšŒàšżàšžàšŒàšŸàš‚à„€ àšŹàšŸàš…àšŠ àš”àšżà©±àšš àšŠà©àšŹàšŸàš°àšŸ àš•à©‹àšžàšŒàšżàšžàšŒ àš•àš°à©‹à„€"</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"àšŹàščà©àš€ àšžàšŸàš°à©€àš†àš‚ àš•à©‹àšžàšŒàšżàšžàšŒàšŸàš‚à„€ àš«àšŒà©‡àšž àš…àšŁàšČàšŸàš• àšŹà©°àšŠ àš•à©€àš€àšŸ àš—àšżàš†à„€"</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"àšŹàščà©àš€ àšžàšŸàš°à©€àš†àš‚ àš•à©‹àšžàšŒàšżàšžàšŒàšŸàš‚à„€ àš‡àšžàšŠà©€ àšŹàšœàšŸàš àšžàš•à©àš°à©€àšš àšČàšŸàš• àšŠàšŸàš–àšČ àš•àš°à©‹à„€"</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"àššàšżàščàš°à©‡ àšŠà©€ àšȘà©àšžàšŒàšŸà©€ àššàščà©€àš‚ àš•à©€àš€à©€ àšœàšŸ àšžàš•à©€à„€ àšŠà©àšŹàšŸàš°àšŸ àš•à©‹àšžàšŒàšżàšžàšŒ àš•àš°à©‹à„€"</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"àš€à©àšžà©€àš‚ àš«àšŒà©‡àšž àš…àšŁàšČàšŸàš• àšŠàšŸ àšžà©ˆà©±àšŸàš…à©±àšȘ àššàščà©€àš‚ àš•à©€àš€àšŸ àščà©ˆà„€"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"àššàšŸàšČੂ àš•àš°àšš àšČàšˆ àšŸà©ˆàšȘ àš•àš°à©‹"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"àš•à©‹àšˆ àš•à©°àšź àšžà©°àšŹà©°àš§à©€ àšàšȘ àššàščà©€àš‚"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"àš•à©‹àšˆ àššàšżà©±àšœà©€ àšàšȘ àššàščà©€àš‚"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"àš•à©€ àš†àšȘàšŁà©‡ àššàšżà©±àšœà©€ àšȘà©àš°à©‹àš«àšŸàšˆàšČ àš”àšżà©±àšš <xliff:g id="APP">%s</xliff:g> àššà©‚à©° àš–à©‹àšČ੍àščàšŁàšŸ àščੈ?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"àš•à©€ àš†àšȘàšŁà©‡ àš•àšŸàš°àšœ àšȘà©àš°à©‹àš«àšŸàšˆàšČ àš”àšżà©±àšš <xliff:g id="APP">%s</xliff:g> àššà©‚à©° àš–à©‹àšČ੍àščàšŁàšŸ àščੈ?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"àššàšżà©±àšœà©€ àšŹà©àš°àšŸàšŠàšœàšŒàš° àš”àš°àš€à©‹"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"àš•à©°àšź àšžà©°àšŹà©°àš§à©€ àšŹà©àš°àšŸàšŠàšœàšŒàš° àš”àš°àš€à©‹"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"àšžàšżàšź àššà©ˆà©±àšŸàš”àš°àš• àš…àšŁàšČàšŸàš• àšȘàšżà©°àšš"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 7965830..41cd054 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -306,7 +306,7 @@
     <string name="permgroupdesc_location" msgid="1995955142118450685">"dostęp do informacji o lokalizacji tego urządzenia"</string>
     <string name="permgrouplab_calendar" msgid="6426860926123033230">"Kalendarz"</string>
     <string name="permgroupdesc_calendar" msgid="6762751063361489379">"dostęp do kalendarza"</string>
-    <string name="permgrouplab_sms" msgid="795737735126084874">"SMS-y"</string>
+    <string name="permgrouplab_sms" msgid="795737735126084874">"SMS"</string>
     <string name="permgroupdesc_sms" msgid="5726462398070064542">"wysyƂanie i wyƛwietlanie SMS‑ów"</string>
     <string name="permgrouplab_storage" msgid="17339216290379241">"Pliki"</string>
     <string name="permgroupdesc_storage" msgid="5378659041354582769">"dostęp do plików na urządzeniu"</string>
@@ -711,8 +711,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Analiza twarzy zostaƂa anulowana."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"UĆŒytkownik anulowaƂ rozpoznawanie twarzy"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Zbyt wiele prób. Spróbuj ponownie póĆșniej."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Zbyt wiele prób. Rozpoznawanie twarzy zostaƂo wyƂączone."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Zbyt wiele prób. UĆŒyj blokady ekranu."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Nie moĆŒna zweryfikować twarzy. Spróbuj ponownie."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Rozpoznawanie twarzy nie zostaƂo skonfigurowane"</string>
@@ -1371,7 +1370,7 @@
     <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"Wykryto analogowe urządzenie audio"</string>
     <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"PodƂączone urządzenie nie jest zgodne z tym telefonem. Kliknij, by dowiedzieć się więcej."</string>
     <string name="adb_active_notification_title" msgid="408390247354560331">"PodƂączono moduƂ debugowania USB"</string>
-    <string name="adb_active_notification_message" msgid="5617264033476778211">"Kliknij, ĆŒeby wyƂączyć debugowanie USB"</string>
+    <string name="adb_active_notification_message" msgid="5617264033476778211">"Kliknij, by wyƂączyć debugowanie USB"</string>
     <string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Wybierz, aby wyƂączyć debugowanie USB."</string>
     <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"PodƂączono debugowanie bezprzewodowe"</string>
     <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Kliknij, by wyƂączyć debugowanie bezprzewodowe"</string>
@@ -1953,8 +1952,10 @@
     <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikacja <xliff:g id="APP_NAME_0">%1$s</xliff:g> nie jest teraz dostępna. Zarządza tym aplikacja <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Więcej informacji"</string>
     <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Wznów dziaƂanie aplikacji"</string>
-    <string name="work_mode_off_title" msgid="6367463960165135829">"Cofnąć wstrzymanie aplikacji sƂuĆŒbowych?"</string>
-    <string name="work_mode_turn_on" msgid="5316648862401307800">"Cofnij wstrzymanie"</string>
+    <!-- no translation found for work_mode_off_title (6367463960165135829) -->
+    <skip />
+    <!-- no translation found for work_mode_turn_on (5316648862401307800) -->
+    <skip />
     <string name="work_mode_emergency_call_button" msgid="6818855962881612322">"PoƂączenie alarmowe"</string>
     <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacja jest niedostępna"</string>
     <string name="app_blocked_message" msgid="542972921087873023">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> jest obecnie niedostępna."</string>
@@ -2094,7 +2095,7 @@
     <string name="nas_upgrade_notification_enable_action" msgid="3046406808378726874">"OK"</string>
     <string name="nas_upgrade_notification_disable_action" msgid="3794833210043497982">"WyƂącz"</string>
     <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Więcej informacji"</string>
-    <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"W Androidzie 12 ulepszone powiadomienia zastąpiƂy dotychczasowe powiadomienia adaptacyjne. Ta funkcja pokazuje sugerowane dziaƂania i odpowiedzi oraz porządkuje powiadomienia. \n\nUlepszone powiadomienia mogą czytać caƂą zawartoƛć powiadomieƄ, w tym informacje prywatne, takie jak nazwy kontaktów i treƛć wiadomoƛci. Funkcja ta moĆŒe teĆŒ zamykać powiadomienia oraz na nie reagować, np. odbierać poƂączenia telefoniczne i sterować trybem Nie przeszkadzać."</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"W Androidzie 12 ulepszone powiadomienia zastąpiƂy dotychczasowe powiadomienia adaptacyjne. Ta funkcja pokazuje sugerowane dziaƂania i odpowiedzi oraz porządkuje powiadomienia.\n\nUlepszone powiadomienia mogą czytać caƂą zawartoƛć powiadomieƄ, w tym informacje osobiste takie jak nazwy kontaktów i treƛć wiadomoƛci. Funkcja moĆŒe teĆŒ zamykać powiadomienia oraz reagować na nie, np. odbierać poƂączenia telefoniczne i sterować trybem Nie przeszkadzać."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Powiadomienie z informacją o trybie rutynowym"</string>
     <string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Oszczędzanie baterii jest wƂączone"</string>
     <string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Ograniczam wykorzystanie baterii, aby przedƂuĆŒyć jej ĆŒywotnoƛć"</string>
@@ -2165,10 +2166,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Kliknij, aby wƂączyć"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Brak aplikacji sƂuĆŒbowych"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Brak aplikacji osobistych"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Otworzyć aplikację <xliff:g id="APP">%s</xliff:g> w profilu osobistym?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Otworzyć aplikację <xliff:g id="APP">%s</xliff:g> w profilu sƂuĆŒbowym?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"UĆŒyj przeglądarki osobistej"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"UĆŒyj przeglądarki sƂuĆŒbowej"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Kod PIN do karty SIM odblokowujący sieć"</string>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 4256bfa..7cb67a2 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -710,8 +710,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Operação facial cancelada."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Desbloqueio facial cancelado pelo usuário"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Excesso de tentativas. Tente novamente mais tarde."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Muitas tentativas. Desbloqueio facial desativado."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Muitas tentativas. Como alternativa, use o bloqueio de tela."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Não é possível verificar o rosto. Tente novamente."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"O Desbloqueio facial não foi configurado"</string>
@@ -2164,10 +2163,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Toque para ativar"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Nenhum app de trabalho"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Nenhum app pessoal"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Abrir o app <xliff:g id="APP">%s</xliff:g> no seu perfil pessoal?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Abrir o app <xliff:g id="APP">%s</xliff:g> no seu perfil de trabalho?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Usar o navegador pessoal"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Usar o navegador de trabalho"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN para desbloqueio da rede do chip"</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 06c8183..a8f25a3 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -685,7 +685,7 @@
     <string name="face_acquired_too_right" msgid="6245286514593540859">"Mova o telemóvel para a sua esquerda"</string>
     <string name="face_acquired_too_left" msgid="9201762240918405486">"Mova o telemóvel para a sua direita"</string>
     <string name="face_acquired_poor_gaze" msgid="4427153558773628020">"Olhe mais diretamente para o dispositivo."</string>
-    <string name="face_acquired_not_detected" msgid="1057966913397548150">"Rosto não detetado. Segure o telemóvel ao nível dos olhos."</string>
+    <string name="face_acquired_not_detected" msgid="1057966913397548150">"Não é possível ver o seu rosto. Mantenha o telemóvel ao nível dos olhos."</string>
     <string name="face_acquired_too_much_motion" msgid="8199691445085189528">"Demasiado movimento. Mantenha o telemóvel firme."</string>
     <string name="face_acquired_recalibrate" msgid="8724013080976469746">"Volte a inscrever o rosto."</string>
     <string name="face_acquired_too_different" msgid="2520389515612972889">"Impossível reconhecer o rosto. Tente novamente."</string>
@@ -710,8 +710,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Operação de rosto cancelada."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Desbloqueio facial cancelado pelo utilizador"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Demasiadas tentativas. Tente mais tarde."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Demasiadas tentativas. O Desbloqueio facial foi desativado."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Demasiadas tentativas. Em alternativa, introduza o bloqueio de ecrã."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Não é possível validar o rosto. Tente novamente."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Não configurou o Desbloqueio facial"</string>
@@ -2164,10 +2163,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Tocar para ativar"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Sem apps de trabalho"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Sem apps pessoais"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Abrir a app <xliff:g id="APP">%s</xliff:g> no seu perfil pessoal?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Abrir a app <xliff:g id="APP">%s</xliff:g> no seu perfil de trabalho?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Usar navegador pessoal"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Usar navegador de trabalho"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN para desbloqueio de rede do cartão SIM"</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 4256bfa..7cb67a2 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -710,8 +710,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Operação facial cancelada."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Desbloqueio facial cancelado pelo usuário"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Excesso de tentativas. Tente novamente mais tarde."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Muitas tentativas. Desbloqueio facial desativado."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Muitas tentativas. Como alternativa, use o bloqueio de tela."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Não é possível verificar o rosto. Tente novamente."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"O Desbloqueio facial não foi configurado"</string>
@@ -2164,10 +2163,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Toque para ativar"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Nenhum app de trabalho"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Nenhum app pessoal"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Abrir o app <xliff:g id="APP">%s</xliff:g> no seu perfil pessoal?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Abrir o app <xliff:g id="APP">%s</xliff:g> no seu perfil de trabalho?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Usar o navegador pessoal"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Usar o navegador de trabalho"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN para desbloqueio da rede do chip"</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 7405f22..84c8625 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -710,8 +710,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Operațiunea privind chipul a fost anulată."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Deblocarea facială a fost anulată de utilizator"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Prea multe încercări. Reîncearcă mai târziu."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Prea multe încercări. Deblocarea facială este dezactivată."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Prea multe încercări. Folosește blocarea ecranului."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Nu se poate confirma fața. Încearcă din nou."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Nu ai configurat Deblocarea facială"</string>
@@ -2164,10 +2163,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Atinge pentru a activa"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Nicio aplicație pentru lucru"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Nicio aplicație personală"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Deschizi <xliff:g id="APP">%s</xliff:g> în profilul personal?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Deschizi <xliff:g id="APP">%s</xliff:g> în profilul de serviciu?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Folosește browserul personal"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Folosește browserul de serviciu"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Codul PIN de deblocare SIM privind rețeaua"</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index e3262f5..83521e9 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -711,8 +711,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Đ Đ°ŃĐżĐŸĐ·ĐœĐ°ĐČĐ°ĐœĐžĐ” ĐŸŃ‚ĐŒĐ”ĐœĐ”ĐœĐŸ"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"ЀДĐčсĐșĐŸĐœŃ‚Ń€ĐŸĐ»ŃŒ: ĐŸĐżĐ”Ń€Đ°Ń†ĐžŃ ĐŸŃ‚ĐŒĐ”ĐœĐ”ĐœĐ° ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»Đ”ĐŒ."</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"ХлОшĐșĐŸĐŒ ĐŒĐœĐŸĐłĐŸ ĐżĐŸĐżŃ‹Ń‚ĐŸĐș. ĐŸĐŸĐČŃ‚ĐŸŃ€ĐžŃ‚Đ” ĐżĐŸĐ·Đ¶Đ”."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"ХлОшĐșĐŸĐŒ ĐŒĐœĐŸĐłĐŸ ĐżĐŸĐżŃ‹Ń‚ĐŸĐș. ЀДĐčсĐșĐŸĐœŃ‚Ń€ĐŸĐ»ŃŒ ĐŸŃ‚ĐșĐ»ŃŽŃ‡Đ”Đœ."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"ХлОшĐșĐŸĐŒ ĐŒĐœĐŸĐłĐŸ ĐżĐŸĐżŃ‹Ń‚ĐŸĐș. Đ˜ŃĐżĐŸĐ»ŃŒĐ·ŃƒĐčтД ĐŽŃ€ŃƒĐłĐŸĐč ŃĐżĐŸŃĐŸĐ± Ń€Đ°Đ·Đ±Đ»ĐŸĐșĐžŃ€ĐŸĐČĐșĐž эĐșŃ€Đ°ĐœĐ°."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"ĐĐ” ŃƒĐŽĐ°Đ»ĐŸŃŃŒ Ń€Đ°ŃĐżĐŸĐ·ĐœĐ°Ń‚ŃŒ Đ»ĐžŃ†ĐŸ. ĐŸĐŸĐČŃ‚ĐŸŃ€ĐžŃ‚Đ” ĐżĐŸĐżŃ‹Ń‚Đșу."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Вы ĐœĐ” ĐœĐ°ŃŃ‚Ń€ĐŸĐžĐ»Đž фДĐčсĐșĐŸĐœŃ‚Ń€ĐŸĐ»ŃŒ."</string>
@@ -2165,10 +2164,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ĐĐ°Đ¶ĐŒĐžŃ‚Đ”, Ń‡Ń‚ĐŸĐ±Ń‹ ĐČĐșĐ»ŃŽŃ‡ĐžŃ‚ŃŒ"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"ĐĐ” ĐżĐŸĐŽĐŽĐ”Ń€Đ¶ĐžĐČĐ°Đ”Ń‚ŃŃ Ń€Đ°Đ±ĐŸŃ‡ĐžĐŒĐž ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃĐŒĐž."</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"ĐĐ” ĐżĐŸĐŽĐŽĐ”Ń€Đ¶ĐžĐČĐ°Đ”Ń‚ŃŃ Đ»ĐžŃ‡ĐœŃ‹ĐŒĐž ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃĐŒĐž."</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"ОтĐșрыть ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” \"<xliff:g id="APP">%s</xliff:g>\" ĐČ Đ»ĐžŃ‡ĐœĐŸĐŒ ĐżŃ€ĐŸŃ„ĐžĐ»Đ”?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"ОтĐșрыть ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” \"<xliff:g id="APP">%s</xliff:g>\" ĐČ Ń€Đ°Đ±ĐŸŃ‡Đ”ĐŒ ĐżŃ€ĐŸŃ„ĐžĐ»Đ”?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Đ˜ŃĐżĐŸĐ»ŃŒĐ·ĐŸĐČать Đ»ĐžŃ‡ĐœŃ‹Đč Đ±Ń€Đ°ŃƒĐ·Đ”Ń€"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Đ˜ŃĐżĐŸĐ»ŃŒĐ·ĐŸĐČать Ń€Đ°Đ±ĐŸŃ‡ĐžĐč Đ±Ń€Đ°ŃƒĐ·Đ”Ń€"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN-ĐșĐŸĐŽ ĐŽĐ»Ń Ń€Đ°Đ·Đ±Đ»ĐŸĐșĐžŃ€ĐŸĐČĐșĐž сДтО SIM-Đșарты"</string>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index f01cfab..3856b20 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"ඞුහුණු ඞෙහෙà¶șුඞ අවගංගු කරන à¶œà¶Żà·“."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"ඎරිශීගකà¶șා විසින් ඞුහුණෙන් අගුළු හැරීඞ අවගංගු කරන à¶œà¶Żà·’"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"උත්සාහà¶șන් ඉතා වැඩි ගණනකි. ඎසුව නැවත උත්සාහ කරන්න."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"උත්සාහà¶șන් ඉතා වැඩි ගණනකි. ඞුහුණෙන් අගුළු හැරීඞ à¶…à¶¶à¶œà¶șි."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"උත්සාහà¶șන් ඉතා වැඩි ගණනකි. ඒ වෙනුවට තිර අගුග ඇතුළු කරන්න."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"ඞුහුණ සත්‍à¶șාඎන කළ නොහැක. නැවත උත්සාහ කරන්න."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"ඔබ ඞුහුණෙන් අගුළු හැරීඞ ඎිහිටුවා නැත"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ක්‍රිà¶șාත්ඞක කිරීඞට තට්ටු කරන්න"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"කාර්à¶șාග à¶șà·™à¶Żà·”à¶žà·Š නැත"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"à¶Žà·”à¶Żà·Šà¶œà¶œà·’à¶š à¶șà·™à¶Żà·”à¶žà·Š නැත"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"<xliff:g id="APP">%s</xliff:g> ඔබගේ à¶Žà·”à¶Żà·Šà¶œà¶œà·’à¶š ඎැතිකඩ තුළ විවෘත à¶šà¶»à¶±à·Šà¶±à¶Ż?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"<xliff:g id="APP">%s</xliff:g> ඔබගේ කාර්à¶șාග ඎැතිකඩ තුළ විවෘත à¶šà¶»à¶±à·Šà¶±à¶Ż?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"à¶Žà·”à¶Żà·Šà¶œà¶œà·’à¶š බ්‍රව්සරà¶ș භාවිත කරන්න"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"කාර්à¶șාග බ්‍රව්සරà¶ș භාවිත කරන්න"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM à¶ąà·à¶œ අගුගු හැරීඞේ PIN"</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 64ec9ae..abb87a1 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -625,11 +625,11 @@
     <string name="biometric_error_generic" msgid="6784371929985434439">"Chyba overenia"</string>
     <string name="screen_lock_app_setting_name" msgid="6054944352976789228">"PouĆŸiĆ„ zámku obrazovky"</string>
     <string name="screen_lock_dialog_default_subtitle" msgid="120359538048533695">"Pokračujte zadaním zámky obrazovky"</string>
-    <string name="fingerprint_acquired_partial" msgid="4323789264604479684">"Pevne pritlačte prst na senzor"</string>
+    <string name="fingerprint_acquired_partial" msgid="4323789264604479684">"Pevne pridrĆŸte senzor"</string>
     <string name="fingerprint_acquired_insufficient" msgid="623888149088216458">"Odtlačok prsta sa nedá rozpoznaĆ„. Skúste to znova."</string>
     <string name="fingerprint_acquired_imager_dirty" msgid="1770676120848224250">"Vyčistite senzor odtlačkov prstov a skúste to znova"</string>
     <string name="fingerprint_acquired_imager_dirty_alt" msgid="9169582140486372897">"Vyčistite senzor a skúste to znova"</string>
-    <string name="fingerprint_acquired_too_fast" msgid="1628459767349116104">"Pevne pritlačte prst na senzor"</string>
+    <string name="fingerprint_acquired_too_fast" msgid="1628459767349116104">"Pevne pridrĆŸte senzor"</string>
     <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Pohli ste prstom príliš pomaly. Skúste to znova."</string>
     <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Vyskúšajte iný odtlačok prsta"</string>
     <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Príliš jasno"</string>
@@ -711,8 +711,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Operácia týkajúca sa tváre bola zrušená"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Odomknutie tvárou zrušil pouĆŸívateÄŸ"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Príliš veÄŸa pokusov. Skúste to neskôr."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Príliš veÄŸa pokusov. Odomknutie tvárou bolo zakázané."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Príliš veÄŸa pokusov. Zadajte namiesto toho zámku obrazovky."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Nedá sa overiĆ„ tvár. Skúste to znova."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Nenastavili ste odomknutie tvárou"</string>
@@ -2165,10 +2164,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ZapnúĆ„ klepnutím"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Ćœiadne pracovné aplikácie"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Ćœiadne osobné aplikácie"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Chcete otvoriĆ„ <xliff:g id="APP">%s</xliff:g> v osobnom profile?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Chcete otvoriĆ„ <xliff:g id="APP">%s</xliff:g> v pracovnom profile?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"PouĆŸiĆ„ osobný prehliadač"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"PouĆŸiĆ„ pracovný prehliadač"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN na odomknutie siete pre SIM kartu"</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index b8692d7..14f2a60 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -625,11 +625,11 @@
     <string name="biometric_error_generic" msgid="6784371929985434439">"Napaka pri preverjanju pristnosti"</string>
     <string name="screen_lock_app_setting_name" msgid="6054944352976789228">"Uporaba odklepanja s poverilnico"</string>
     <string name="screen_lock_dialog_default_subtitle" msgid="120359538048533695">"Odklenite zaslon, če ĆŸelite nadaljevati."</string>
-    <string name="fingerprint_acquired_partial" msgid="4323789264604479684">"Prst dobro pridrĆŸite na tipalu"</string>
+    <string name="fingerprint_acquired_partial" msgid="4323789264604479684">"Prst dobro pridrĆŸite na tipalu."</string>
     <string name="fingerprint_acquired_insufficient" msgid="623888149088216458">"Prstnega odtisa ni mogoče prepoznati. Poskusite znova."</string>
     <string name="fingerprint_acquired_imager_dirty" msgid="1770676120848224250">"Očistite tipalo prstnih odtisov in poskusite znova."</string>
     <string name="fingerprint_acquired_imager_dirty_alt" msgid="9169582140486372897">"Očistite tipalo in poskusite znova."</string>
-    <string name="fingerprint_acquired_too_fast" msgid="1628459767349116104">"Prst dobro pridrĆŸite na tipalu"</string>
+    <string name="fingerprint_acquired_too_fast" msgid="1628459767349116104">"Prst dobro pridrĆŸite na tipalu."</string>
     <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Prepočasen premik prsta. Poskusite znova."</string>
     <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Poskusite z drugim prstnim odtisom."</string>
     <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Presvetlo je."</string>
@@ -711,8 +711,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Dejanje z obrazom je bilo preklicano."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Odklepanje z obrazom je preklical uporabnik."</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Preveč poskusov. Poskusite znova pozneje."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Preveč poskusov. Odklepanje z obrazom je onemogočeno."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Preveč poskusov. Uporabite odklepanje zaslona s poverilnico."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Obraza ni mogoče preveriti. Poskusite znova."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Odklepanja z obrazom niste nastavili."</string>
@@ -2165,10 +2164,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Dotaknite se za vklop"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Nobena delovna aplikacija ni na voljo"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Nobena osebna aplikacija"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Ćœelite aplikacijo <xliff:g id="APP">%s</xliff:g> odpreti v osebnem profilu?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Ćœelite aplikacijo <xliff:g id="APP">%s</xliff:g> odpreti v delovnem profilu?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Uporabi osebni brskalnik"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Uporabi delovni brskalnik"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Koda PIN za odklepanje omreĆŸja kartice SIM"</string>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index 78e1d89..a0460f2 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Veprimi me fytyrën u anulua."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"\"Shkyçja me fytyrë\" u anulua nga përdoruesi"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Shumë përpjekje. Provo sërish më vonë."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Shumë përpjekje. \"Shkyçja me fytyrë\" u çaktivizua."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Shumë përpjekje. Fut më mirë kyçjen e ekranit."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Fytyra nuk mund të verifikohet. Provo përsëri."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Nuk e ke konfiguruar \"Shkyçjen me fytyrë\""</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Trokit për ta aktivizuar"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Nuk ka aplikacione pune"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Nuk ka aplikacione personale"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Të hapet <xliff:g id="APP">%s</xliff:g> në profilin tënd personal?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Të hapet <xliff:g id="APP">%s</xliff:g> në profilin tënd të punës?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Përdor shfletuesin personal"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Përdor shfletuesin e punës"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Kodi PIN i shkyçjes së rrjetit të kartës SIM"</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 5807e1e..9059fdc 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -710,8 +710,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"ОбраЎа лОца јД ĐŸŃ‚ĐșĐ°Đ·Đ°ĐœĐ°."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"ĐšĐŸŃ€ĐžŃĐœĐžĐș јД ĐŸŃ‚ĐșĐ°Đ·Đ°ĐŸ ĐŸŃ‚ĐșључаĐČањД Đ»ĐžŃ†Đ”ĐŒ"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"ĐŸŃ€Đ”ĐČОшД ĐżĐŸĐșушаја. ĐŸŃ€ĐŸĐ±Đ°Ń˜Ń‚Đ” ĐżĐŸĐœĐŸĐČĐŸ ĐșĐ°ŃĐœĐžŃ˜Đ”."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"ĐŸŃ€Đ”ĐČОшД ĐżĐŸĐșушаја. ОтĐșључаĐČањД Đ»ĐžŃ†Đ”ĐŒ јД ĐŸĐœĐ”ĐŒĐŸĐłŃƒŃ›Đ”ĐœĐŸ."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"ĐŸŃ€Đ”ĐČОшД ĐżĐŸĐșушаја. ĐšĐŸŃ€ĐžŃŃ‚ĐžŃ‚Đ” заĐșључаĐČањД Đ”ĐșŃ€Đ°ĐœĐ° за Ń‚ĐŸ."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"ĐŸŃ€ĐŸĐČДра лОца ĐœĐžŃ˜Đ” успДла. ĐŸŃ€ĐŸĐ±Đ°Ń˜Ń‚Đ” ĐżĐŸĐœĐŸĐČĐŸ."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"ĐĐžŃŃ‚Đ” ĐżĐŸĐŽĐ”ŃĐžĐ»Đž ĐŸŃ‚ĐșључаĐČањД Đ»ĐžŃ†Đ”ĐŒ"</string>
@@ -2164,10 +2163,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Đ”ĐŸĐŽĐžŃ€ĐœĐžŃ‚Đ” Ўа бОстД уĐșŃ™ŃƒŃ‡ĐžĐ»Đž"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"ĐĐ”ĐŒĐ° ĐżĐŸŃĐ»ĐŸĐČĐœĐžŃ… аплОĐșацоја"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"ĐĐ”ĐŒĐ° Đ»ĐžŃ‡ĐœĐžŃ… аплОĐșацоја"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"ЖДлОтД Ўа ĐœĐ° Đ»ĐžŃ‡ĐœĐŸĐŒ ĐżŃ€ĐŸŃ„ĐžĐ»Ńƒ ĐŸŃ‚ĐČĐŸŃ€ĐžŃ‚Đ”: <xliff:g id="APP">%s</xliff:g>?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"ЖДлОтД Ўа ĐœĐ° ĐżĐŸŃĐ»ĐŸĐČĐœĐŸĐŒ ĐżŃ€ĐŸŃ„ĐžĐ»Ńƒ ĐŸŃ‚ĐČĐŸŃ€ĐžŃ‚Đ”: <xliff:g id="APP">%s</xliff:g>?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"ĐšĐŸŃ€ĐžŃŃ‚Đž Đ»ĐžŃ‡ĐœĐž прДглДЎач"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"ĐšĐŸŃ€ĐžŃŃ‚Đž ĐżĐŸŃĐ»ĐŸĐČĐœĐž прДглДЎач"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN за ĐŸŃ‚ĐșључаĐČањД SIM ĐŒŃ€Đ”Đ¶Đ”"</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index fbb4ff4..dbe1a5c 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Ansiktsåtgärden har avbrutits."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Ansiktslås avbröts av användaren"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Du har gjort för många försök. Försök igen senare."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"För många försök. Ansiktslås har inaktiverats."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"För många försök. Ange skärmlås i stället."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Det gick inte att verifiera ansiktet. Försök igen."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Du har inte konfigurerat ansiktslås"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Tryck för att aktivera"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Inga jobbappar"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Inga privata appar"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Vill du öppna <xliff:g id="APP">%s</xliff:g> i din privata profil?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Vill du öppna <xliff:g id="APP">%s</xliff:g> i din jobbprofil?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Använd privat webbläsare"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Använd jobbwebbläsare"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Pinkod för upplåsning av nätverk för SIM-kort"</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index ce28bd7..c6e548e 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Utendaji wa kitambulisho umeghairiwa."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Hatua ya Kufungua kwa Uso imeghairiwa na mtumiaji"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Umejaribu mara nyingi mno. Jaribu tena baadaye."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Umejaribu mara nyingi mno. Umezima kipengele cha Kufungua kwa Uso."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Umejaribu mara nyingi mno. Weka mbinu ya kufunga skrini badala yake."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Imeshindwa kuthibitisha uso. Jaribu tena."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Hujaweka mipangilio ya kipengele cha Kufungua kwa Uso"</string>
@@ -1873,7 +1872,7 @@
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Sawa"</string>
     <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"Kiokoa Betri huwasha Mandhari meusi na kudhibiti au kuzima shughuli za chinichini, baadhi ya madoido yanayoonekana, vipengele fulani na baadhi ya miunganisho ya mtandao."</string>
     <string name="battery_saver_description" msgid="8518809702138617167">"Kiokoa Betri huwasha Mandhari meusi na kudhibiti au kuzima shughuli za chinichini, baadhi ya madoido yanayoonekana, vipengele fulani na baadhi ya miunganisho ya mtandao."</string>
-    <string name="data_saver_description" msgid="4995164271550590517">"Ili kusaidia kupunguza matumizi ya data, Kiokoa Data huzuia baadhi ya programu kupokea na kutuma data chinichini. Programu ambayo unatumia sasa inaweza kufikia data, lakini si kila wakati. Kwa mfano, haitaonyesha picha hadi utakapozigusa."</string>
+    <string name="data_saver_description" msgid="4995164271550590517">"Ili kusaidia kupunguza matumizi ya data, Kiokoa Data huzuia baadhi ya programu kupokea na kutuma data chinichini. Programu ambayo unatumia sasa inaweza kufikia data, lakini si kila wakati. Kwa mfano, haitaonyesha picha hadi utakapozifungua."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Ungependa Kuwasha Kiokoa Data?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Washa"</string>
     <string name="zen_mode_duration_minutes_summary" msgid="4555514757230849789">"{count,plural, =1{Kwa dakika moja (hadi {formattedTime})}other{Kwa dakika # (hadi {formattedTime})}}"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Gusa ili uwashe"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Hakuna programu za kazini"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Hakuna programu za binafsi"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Je, unataka kufungua <xliff:g id="APP">%s</xliff:g> katika wasifu wako binafsi?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Je, unataka kufungua <xliff:g id="APP">%s</xliff:g> katika wasifu wako wa kazi?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Tumia kivinjari cha binafsi"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Tumia kivinjari cha kazini"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN ya kufungua mtandao wa SIM"</string>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index 26121c2..07223ed 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"àźźàŻàź• àź…àź™àŻàź•àŻ€àź•àźŸàź°àźšàŻ àźšàŻ†àźŻàźČàŻàźȘàźŸàźŸàŻ àź°àź€àŻàź€àŻàźšàŻ†àźŻàŻàźŻàźȘàŻàźȘàźŸàŻàźŸàź€àŻ."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"àźȘàźŻàź©àź°àźŸàźČàŻ \'àźźàŻàź•àźźàŻ àź•àźŸàźŸàŻàźŸàźżàź€àŻ àź€àźżàź±àź€àŻàź€àźČàŻ\' àź°àź€àŻàź€àŻàźšàŻ†àźŻàŻàźŻàźȘàŻàźȘàźŸàŻàźŸàź€àŻ"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"àźȘàźČàźźàŻàź±àŻˆ àźźàŻàźŻàź©àŻàź±àŻàź”àźżàźŸàŻàźŸàŻ€àź°àŻàź•àźłàŻ. àźȘàźżàź±àź•àŻ àźźàŻàźŻàźČàź”àŻàźźàŻ."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"àźȘàźČàźźàŻàź±àŻˆ àźźàŻàźŻàź©àŻàź±àŻàź”àźżàźŸàŻàźŸàŻ€àź°àŻàź•àźłàŻ. \'àźźàŻàź•àźźàŻ àź•àźŸàźŸàŻàźŸàźżàź€àŻ àź€àźżàź±àź€àŻàź€àźČàŻ\' àź…àźźàŻàźšàźźàŻ àźźàŻàźŸàź•àŻàź•àźȘàŻàźȘàźŸàŻàźŸàź€àŻ."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"àźȘàźČàźźàŻàź±àŻˆ àźźàŻàźŻàź©àŻàź±àŻàź”àźżàźŸàŻàźŸàŻ€àź°àŻàź•àźłàŻ. àź‡àź€àź±àŻàź•àŻàźȘàŻ àźȘàź€àźżàźČàźŸàź•, àź€àźżàź°àŻˆàźȘàŻ àźȘàŻ‚àźŸàŻàźŸàŻˆàźȘàŻ àźȘàźŻàź©àŻàźȘàźŸàŻàź€àŻàź€àź”àŻàźźàŻ."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"àźźàŻàź•àź€àŻàź€àŻˆàźšàŻ àźšàź°àźżàźȘàźŸàź°àŻàź•àŻàź• àź‡àźŻàźČàź”àźżàźČàŻàźČàŻˆ. àźźàŻ€àźŁàŻàźŸàŻàźźàŻ àźźàŻàźŻàźČàź”àŻàźźàŻ."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"\'àźźàŻàź•àźźàŻ àź•àźŸàźŸàŻàźŸàźżàź€àŻ àź€àźżàź±àź€àŻàź€àźČàŻ\' àź…àźźàŻàźšàź€àŻàź€àŻˆ àź…àźźàŻˆàź•àŻàź•àź”àźżàźČàŻàźČàŻˆ."</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"àź†àź©àŻ àźšàŻ†àźŻàŻàźŻàź€àŻ àź€àźŸàŻàźŸàŻàź•"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"àźȘàźŁàźż àź†àźȘàŻàźžàŻ àźŽàź€àŻàź”àŻàźźàźżàźČàŻàźČàŻˆ"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"àź€àź©àźżàźȘàŻàźȘàźŸàŻàźŸ àź†àźȘàŻàźžàŻ àźŽàź€àŻàź”àŻàźźàźżàźČàŻàźČàŻˆ"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"àź‰àź™àŻàź•àźłàŻ àź€àź©àźżàźȘàŻàźȘàźŸàŻàźŸ àź•àźŁàź•àŻàź•àźżàźČàŻ <xliff:g id="APP">%s</xliff:g> àź†àźȘàŻàźžàŻˆàź€àŻ àź€àźżàź±àź•àŻàź•àź”àźŸ?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"àź‰àź™àŻàź•àźłàŻ àźȘàźŁàźżàź•àŻ àź•àźŁàź•àŻàź•àźżàźČàŻ <xliff:g id="APP">%s</xliff:g> àź†àźȘàŻàźžàŻˆàź€àŻ àź€àźżàź±àź•àŻàź•àź”àźŸ?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"àź€àź©àźżàźȘàŻàźȘàźŸàŻàźŸ àź‰àźČàźŸàź”àźżàźŻàŻˆàźȘàŻ àźȘàźŻàź©àŻàźȘàźŸàŻàź€àŻàź€àŻ"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"àźȘàźŁàźż àź‰àźČàźŸàź”àźżàźŻàŻˆàźȘàŻ àźȘàźŻàź©àŻàźȘàźŸàŻàź€àŻàź€àŻ"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"àźšàźżàźźàŻ àźšàŻ†àźŸàŻàź”àŻŠàź°àŻàź•àŻ àź…àź©àŻàźČàźŸàź•àŻ àźȘàźżàź©àŻ"</string>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index fbac1c4..29c5555 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"à°źà±à°– à°Żà°Ÿà°•à±à°Ÿà°żà°”à°żà°Ÿà±€ à°°à°Šà±à°Šà°Żà°żà°‚à°Šà°ż."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"ఫేఞ్ అచ్‌à°Čటక్‌చు à°Żà±‚à°œà°°à± రఊ్ఊు చేశటరు"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"à°šà°Ÿà°Čà°Ÿ ఎక్కుఔ à°Șà±à°°à°Żà°€à±à°šà°Ÿà°Čు చేశటరు. ఀర్ఔటఀ à°źà°łà±à°Čీ à°Șà±à°°à°Żà°€à±à°šà°żà°‚à°šà°‚à°Ąà°ż."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"à°šà°Ÿà°Čà°Ÿ ఎక్కుఔ ఞటర్à°Čు à°Șà±à°°à°Żà°€à±à°šà°żà°‚à°šà°Ÿà°°à±. ఫేఞ్ అచ్‌à°Čటక్ à°Ąà°żà°œà±‡à°Źà±à°Č్ à°šà±‡à°Żà°Źà°Ąà°żà°‚à°Šà°ż."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"à°šà°Ÿà°Čà°Ÿ ఎక్కుఔ ఞటర్à°Čు à°Șà±à°°à°Żà°€à±à°šà°żà°‚à°šà°Ÿà°°à±. à°Źà°Šà±à°Čుగట ఞ్క్రీచ్ à°Čటక్‌చు ఎంటర్ à°šà±‡à°Żà°‚à°Ąà°ż."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"à°źà±à°–à°‚ à°§à±ƒà°”à±€à°•à°°à°żà°‚à°šà°Čేకà°Șà±‹à°Żà°żà°‚à°Šà°ż. à°źà°łà±à°Čీ à°Șà±à°°à°Żà°€à±à°šà°żà°‚à°šà°‚à°Ąà°ż."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"à°źà±€à°°à± ఫేఞ్ అచ్‌à°Čటక్‌చు ఞెటà°Ș్ à°šà±‡à°Żà°Čేఊు"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ఆచ్ à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż à°Ÿà±à°Żà°Ÿà°Ș్ à°šà±‡à°Żà°‚à°Ąà°ż"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"ఔర్క్ à°Żà°Ÿà°Ș్‌à°Čు à°Čేఔు"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"à°”à±à°Żà°•à±à°€à°żà°—à°€ à°Żà°Ÿà°Ș్‌à°Čు à°Čేఔు"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"<xliff:g id="APP">%s</xliff:g>చు à°źà±€ à°”à±à°Żà°•à±à°€à°żà°—à°€ à°Ș్రొఫైà°Č్‌à°Čో ఀెరఔటà°Čà°Ÿ?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"<xliff:g id="APP">%s</xliff:g>చు à°źà±€ ఔర్క్ à°Ș్రొఫైà°Č్‌à°Čో ఀెరఔటà°Čà°Ÿ?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"à°”à±à°Żà°•à±à°€à°żà°—à°€ à°Źà±à°°à±Œà°œà°°à±‌చు ఉà°Șà°Żà±‹à°—à°żà°‚à°šà°‚à°Ąà°ż"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"ఔర్క్ à°Źà±à°°à±Œà°œà°°à±‌చు ఉà°Șà°Żà±‹à°—à°żà°‚à°šà°‚à°Ąà°ż"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM చెట్‌ఔర్క్ అచ్‌à°Čటక్ à°Șà°żà°šà±‌"</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index f0340c3..c97fa8a 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"àžąàžàč€àž„àžŽàžàžàžČàžŁàž”àžłàč€àž™àžŽàž™àžàžČàžŁàžàž±àžšàčƒàžšàž«àž™àč‰àžČàčàž„àč‰àž§"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"àžœàžčàč‰àčƒàžŠàč‰àžąàžàč€àž„àžŽàžàžàžČàžŁàčƒàžŠàč‰àžàžČàžŁàž›àž„àž”àž„àč‡àž­àžàž”àč‰àž§àžąàčƒàžšàž«àž™àč‰àžČ"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"àž”àžłàč€àž™àžŽàž™àžàžČàžŁàž«àž„àžČàžąàž„àžŁàž±àč‰àž‡àč€àžàžŽàž™àč„àž› àž„àž­àž‡àž­àž”àžàž„àžŁàž±àč‰àž‡àčƒàž™àž àžČàžąàž«àž„àž±àž‡"</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"àž„àž­àž‡àž«àž„àžČàžąàž„àžŁàž±àč‰àž‡àč€àžàžŽàž™àč„àž› àž›àžŽàž”àčƒàžŠàč‰àžàžČàžŁàž›àž„àž”àž„àč‡àž­àžàž”àč‰àž§àžąàčƒàžšàž«àž™àč‰àžČàčàž„àč‰àž§"</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"àž„àž­àž‡àž«àž„àžČàžąàž„àžŁàž±àč‰àž‡àč€àžàžŽàž™àč„àž› àčƒàžŠàč‰àžàžČàžŁàž„àč‡àž­àžàž«àž™àč‰àžČàžˆàž­àčàž—àž™"</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"àžąàž·àž™àžąàž±àž™àčƒàžšàž«àž™àč‰àžČàč„àžĄàčˆàč„àž”àč‰ àž„àž­àž‡àž­àž”àžàž„àžŁàž±àč‰àž‡"</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"àž„àžžàž“àžąàž±àž‡àč„àžĄàčˆàč„àž”àč‰àž•àž±àč‰àž‡àž„àčˆàžČàžàžČàžŁàž›àž„àž”àž„àč‡àž­àžàž”àč‰àž§àžąàčƒàžšàž«àž™àč‰àžČ"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"àčàž•àž°àč€àžžàž·àčˆàž­àč€àž›àžŽàž”"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"àč„àžĄàčˆàžĄàž”àčàž­àž›àž‡àžČàž™"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"àč„àžĄàčˆàžĄàž”àčàž­àž›àžȘàčˆàž§àž™àž•àž±àž§"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"àč€àž›àžŽàž” <xliff:g id="APP">%s</xliff:g> àčƒàž™àč‚àž›àžŁàč„àžŸàž„àčŒàžȘàčˆàž§àž™àž•àž±àž§àč„àž«àžĄ"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"àč€àž›àžŽàž” <xliff:g id="APP">%s</xliff:g> àčƒàž™àč‚àž›àžŁàč„àžŸàž„àčŒàž‡àžČàž™àč„àž«àžĄ"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"àčƒàžŠàč‰àč€àžšàžŁàžČàž§àčŒàč€àž‹àž­àžŁàčŒàžȘàčˆàž§àž™àž•àž±àž§"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"àčƒàžŠàč‰àč€àžšàžŁàžČàž§àčŒàč€àž‹àž­àžŁàčŒàž‡àžČàž™"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN àž›àž„àž”àž„àč‡àž­àžàč€àž„àžŁàž·àž­àž‚àčˆàžČàžąàž—àž”àčˆàčƒàžŠàč‰àžàž±àžš SIM"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index d993981..02acc44 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Nakansela ang operation kaugnay ng mukha."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Kinansela ng user ang Pag-unlock Gamit ang Mukha"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Masyadong maraming pagsubok. Subukang muli mamaya."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Masyado nang maraming beses sinubukan. Na-disable ang Pag-unlock Gamit ang Mukha."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Masyado nang maraming beses sinubukan. Ilagay na lang ang lock ng screen."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Hindi ma-verify ang mukha. Subukang muli."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Hindi mo pa nase-set up ang Pag-unlock Gamit ang Mukha"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"I-tap para i-on"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Walang app para sa trabaho"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Walang personal na app"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Buksan ang <xliff:g id="APP">%s</xliff:g> sa iyong personal na profile?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Buksan ang <xliff:g id="APP">%s</xliff:g> sa iyong profile sa trabaho?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Gamitin ang personal na browser"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Gamitin ang browser sa trabaho"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN para sa pag-unlock ng network ng SIM"</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 1ec3682..0b022592 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Yüz ißlemi iptal edildi."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Yüz Tanıma Kilidi kullanıcı tarafından iptal edildi"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Çok fazla deneme yapıldı. Daha sonra tekrar deneyin."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Çok fazla deneme yapıldı. Yüz Tanıma Kilidi devre dıßı."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Çok fazla deneme yapıldı. Bunun yerine ekran kilidini girin."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Yüz doğrulanamıyor. Tekrar deneyin."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Yüz Tanıma Kilidi ayarlamadınız"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Açmak için dokunun"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"İß uygulaması yok"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Kißisel uygulama yok"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"<xliff:g id="APP">%s</xliff:g> uygulaması kißisel profilinizde açılsın mı?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"<xliff:g id="APP">%s</xliff:g> uygulaması iß profilinizde açılsın mı?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Kißisel tarayıcıyı kullan"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"İß tarayıcısını kullan"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM ağ kilidi açma PIN kodu"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 235e538b..7bdd5f6 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -665,7 +665,7 @@
   </string-array>
     <string name="fingerprint_error_vendor_unknown" msgid="4170002184907291065">"ĐĄŃ‚Đ°Đ»Đ°ŃŃ ĐżĐŸĐŒĐžĐ»Đșа. ĐŸĐŸĐČŃ‚ĐŸŃ€Ń–Ń‚ŃŒ ŃĐżŃ€ĐŸĐ±Ńƒ."</string>
     <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Đ—ĐœĐ°Ń‡ĐŸĐș ĐČіЎбОтĐșа ĐżĐ°Đ»ŃŒŃ†Ń"</string>
-    <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"ЀДĐčс-ĐșĐŸĐœŃ‚Ń€ĐŸĐ»ŃŒ"</string>
+    <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"ЀДĐčсĐșĐŸĐœŃ‚Ń€ĐŸĐ»ŃŒ"</string>
     <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"ĐĄŃ‚Đ°Đ»Đ°ŃŃ ĐżĐŸĐŒĐžĐ»Đșа Đ· фДĐčсĐșĐŸĐœŃ‚Ń€ĐŸĐ»Đ”ĐŒ"</string>
     <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"ĐĐ°Ń‚ĐžŃĐœŃ–Ń‚ŃŒ, Ń‰ĐŸĐ± ĐČОЎалОтО сĐČĐŸŃŽ ĐŒĐŸĐŽĐ”Đ»ŃŒ ĐŸĐ±Đ»ĐžŃ‡Ń‡Ń, а ĐżĐŸŃ‚Ń–ĐŒ Đ·ĐœĐŸĐČу ĐŽĐŸĐŽĐ°ĐčтД її"</string>
     <string name="face_setup_notification_title" msgid="8843461561970741790">"ĐĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ фДĐčсĐșĐŸĐœŃ‚Ń€ĐŸĐ»ŃŽ"</string>
@@ -711,8 +711,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Дію Đ· ĐŸĐ±Đ»ĐžŃ‡Ń‡ŃĐŒ сĐșĐ°ŃĐŸĐČĐ°ĐœĐŸ."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"ĐšĐŸŃ€ĐžŃŃ‚ŃƒĐČач сĐșасуĐČаĐČ ĐŸĐżĐ”Ń€Đ°Ń†Ń–ŃŽ фДĐčсĐșĐŸĐœŃ‚Ń€ĐŸĐ»ŃŽ"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Đ—Đ°Đ±Đ°ĐłĐ°Ń‚ĐŸ ŃĐżŃ€ĐŸĐ±. ĐŸĐŸĐČŃ‚ĐŸŃ€Ń–Ń‚ŃŒ ĐżŃ–Đ·ĐœŃ–ŃˆĐ”."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Đ—Đ°Đ±Đ°ĐłĐ°Ń‚ĐŸ ŃĐżŃ€ĐŸĐ±. ЀДĐčсĐșĐŸĐœŃ‚Ń€ĐŸĐ»ŃŒ ĐČĐžĐŒĐșĐœĐ”ĐœĐŸ."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Đ—Đ°Đ±Đ°ĐłĐ°Ń‚ĐŸ ŃĐżŃ€ĐŸĐ±. Đ ĐŸĐ·Đ±Đ»ĐŸĐșуĐčтД Đ”ĐșŃ€Đ°Đœ Ń–ĐœŃˆĐžĐŒ ŃĐżĐŸŃĐŸĐ±ĐŸĐŒ."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"ĐĐ” ĐČЮається пДрДĐČірото ĐŸĐ±Đ»ĐžŃ‡Ń‡Ń. ĐŸĐŸĐČŃ‚ĐŸŃ€Ń–Ń‚ŃŒ ŃĐżŃ€ĐŸĐ±Ńƒ."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Во ĐœĐ” ĐœĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČалО фДĐčсĐșĐŸĐœŃ‚Ń€ĐŸĐ»ŃŒ"</string>
@@ -1042,7 +1041,7 @@
     <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Đ ĐŸĐ·ĐłĐŸŃ€ĐœŃƒŃ‚Đž ĐŸĐ±Đ»Đ°ŃŃ‚ŃŒ Ń€ĐŸĐ·Đ±Đ»ĐŸĐșуĐČĐ°ĐœĐœŃ."</string>
     <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Đ ĐŸĐ·Đ±Đ»ĐŸĐșуĐČĐ°ĐœĐœŃ ĐżĐŸĐČĐ·ŃƒĐœĐșĐŸĐŒ."</string>
     <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Đ ĐŸĐ·Đ±Đ»ĐŸĐșуĐČĐ°ĐœĐœŃ ĐșĐ»ŃŽŃ‡Đ”ĐŒ."</string>
-    <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"ЀДĐčс-ĐșĐŸĐœŃ‚Ń€ĐŸĐ»ŃŒ."</string>
+    <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"ЀДĐčсĐșĐŸĐœŃ‚Ń€ĐŸĐ»ŃŒ."</string>
     <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Đ ĐŸĐ·Đ±Đ»ĐŸĐșуĐČĐ°ĐœĐœŃ PIN-ĐșĐŸĐŽĐŸĐŒ."</string>
     <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Đ ĐŸĐ·Đ±Đ»ĐŸĐșуĐČĐ°ĐœĐœŃ SIM-Đșарто PIN-ĐșĐŸĐŽĐŸĐŒ."</string>
     <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Đ ĐŸĐ·Đ±Đ»ĐŸĐșуĐČĐ°ĐœĐœŃ SIM-Đșарто PUK-ĐșĐŸĐŽĐŸĐŒ."</string>
@@ -2165,10 +2164,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ĐąĐŸŃ€ĐșĐœŃ–Ń‚ŃŒŃŃ, Ń‰ĐŸĐ± уĐČŃ–ĐŒĐșĐœŃƒŃ‚Đž"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"ĐĐ”ĐŒĐ°Ń” Ń€ĐŸĐ±ĐŸŃ‡ĐžŃ… ĐŽĐŸĐŽĐ°Ń‚ĐșіĐČ"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"ĐĐ”ĐŒĐ°Ń” ĐŸŃĐŸĐ±ĐžŃŃ‚ĐžŃ… ĐŽĐŸĐŽĐ°Ń‚ĐșіĐČ"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"ВіЮĐșрото ĐŽĐŸĐŽĐ°Ń‚ĐŸĐș <xliff:g id="APP">%s</xliff:g> ĐČ ĐŸŃĐŸĐ±ĐžŃŃ‚ĐŸĐŒŃƒ ĐżŃ€ĐŸŃ„Ń–Đ»Ń–?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"ВіЮĐșрото ĐŽĐŸĐŽĐ°Ń‚ĐŸĐș <xliff:g id="APP">%s</xliff:g> у Ń€ĐŸĐ±ĐŸŃ‡ĐŸĐŒŃƒ ĐżŃ€ĐŸŃ„Ń–Đ»Ń–?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"ВоĐșĐŸŃ€ĐžŃŃ‚Đ°Ń‚Đž ĐŸŃĐŸĐ±ĐžŃŃ‚ĐžĐč ĐČДб-ĐżĐ”Ń€Đ”ĐłĐ»ŃĐŽĐ°Ń‡"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"ВоĐșĐŸŃ€ĐžŃŃ‚Đ°Ń‚Đž Ń€ĐŸĐ±ĐŸŃ‡ĐžĐč ĐČДб-ĐżĐ”Ń€Đ”ĐłĐ»ŃĐŽĐ°Ń‡"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN-ĐșĐŸĐŽ Ń€ĐŸĐ·Đ±Đ»ĐŸĐșуĐČĐ°ĐœĐœŃ ĐŒĐ”Ń€Đ”Đ¶Ń– SIM-Đșарто"</string>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index cafa9d2..01a81e5 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Ú†ÛŰ±Û’ ÙŸŰ± ہونے ÙˆŰ§Ù„ÛŒ Ú©Ű§Ű±Ű±ÙˆŰ§ŰŠÛŒ Ù…Ù†ŰłÙˆŰź ہو ÚŻŰŠÛŒÛ”"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Ű”Ű§Ű±Ù نے ÙÛŒŰł Ű§ÙŽÙ†Ù„Ű§Ú© کو Ù…Ù†ŰłÙˆŰź ک۱ ŰŻÛŒŰ§"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Ú©Ű§ÙÛŒ ŰČÛŒŰ§ŰŻÛ Ú©ÙˆŰŽŰŽÛŒÚș کی ÚŻŰŠÛŒÚș۔ ŰŻÙˆŰšŰ§Ű±Û Ú©ÙˆŰŽŰŽ Ú©Ű±ÛŒÚș۔"</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Ú©Ű§ÙÛŒ ŰČÛŒŰ§ŰŻÛ Ú©ÙˆŰŽŰŽÛŒÚș۔ ÙÛŒŰł Ű§ÙŽÙ†Ù„Ű§Ú© کو ŰșÛŒŰ± فŰčŰ§Ù„ ک۱ ŰŻÛŒŰ§ ÚŻÛŒŰ§Û”"</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Ú©Ű§ÙÛŒ ŰČÛŒŰ§ŰŻÛ Ú©ÙˆŰŽŰŽÛŒÚș۔ ۧ۳ کے ŰšŰŹŰ§ŰŠÛ’ Ű§ŰłÚ©Ű±ÛŒÙ† Ù„Ű§Ú© ۯ۱ۏ Ú©Ű±ÛŒÚș۔"</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Ú†ÛŰ±Û’ کی ŰȘÙˆŰ«ÛŒÙ‚ نہیÚș کی ۏۧ ŰłÚ©ÛŒÛ” ÙŸÚŸŰ± ŰąŰČÙ…Ű§ŰŠÙŠÚș۔"</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"ŰąÙŸ نے ÙÛŒŰł Ű§ÙŽÙ†Ù„Ű§Ú© کو ŰłÛŒÙč نہیÚș Ú©ÛŒŰ§ ہے"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ŰąÙ† Ú©Ű±Ù†Û’ Ú©ÛŒÙ„ŰŠÛ’ ŰȘÚŸÙŸŰȘÚŸÙŸŰ§ŰŠÛŒÚș"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Ú©ÙˆŰŠÛŒ ÙˆŰ±Ú© Ű§ÛŒÙŸ نہیÚș"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Ú©ÙˆŰŠÛŒ ۰ۧŰȘی Ű§ÛŒÙŸ نہیÚș"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Ű§ÙŸÙ†ÛŒ ۰ۧŰȘی ÙŸŰ±ÙˆÙŰ§ŰŠÙ„ میÚș <xliff:g id="APP">%s</xliff:g> کڟولیÚș۟"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Ű§ÙŸÙ†ÛŒ ŰŻÙŰȘŰ±ÛŒ ÙŸŰ±ÙˆÙŰ§ŰŠÙ„ میÚș <xliff:g id="APP">%s</xliff:g> کڟولیÚș۟"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"۰ۧŰȘی ۚ۱ۧۀŰČ۱ ۧ۳ŰȘŰčÙ…Ű§Ù„ Ú©Ű±ÛŒÚș"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"ÙˆŰ±Ú© ۚ۱ۧۀŰČ۱ ۧ۳ŰȘŰčÙ…Ű§Ù„ Ú©Ű±ÛŒÚș"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"‏SIM نیÙč ÙˆŰ±Ú© ŰșÛŒŰ± مقفل Ú©Ű±Ù†Û’ کۧ PIN"</string>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index 6104446..b90219a 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -310,7 +310,7 @@
     <string name="permgroupdesc_storage" msgid="5378659041354582769">"qurilmangizdagi fayllarga kirish"</string>
     <string name="permgrouplab_readMediaAural" msgid="1858331312624942053">"Musiqa va audio"</string>
     <string name="permgroupdesc_readMediaAural" msgid="7565467343667089595">"qurilmadagi musiqa va audioga ruxsat"</string>
-    <string name="permgrouplab_readMediaVisual" msgid="4724874717811908660">"Suratlar va videolar"</string>
+    <string name="permgrouplab_readMediaVisual" msgid="4724874717811908660">"Video va suratlar"</string>
     <string name="permgroupdesc_readMediaVisual" msgid="4080463241903508688">"qurilmadagi rasm va videolarga ruxsat"</string>
     <string name="permgrouplab_microphone" msgid="2480597427667420076">"Mikrofon"</string>
     <string name="permgroupdesc_microphone" msgid="1047786732792487722">"ovoz yozib olish"</string>
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Yuzni aniqlash bekor qilindi."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Yuz bilan ochishni foydalanuvchi bekor qildi"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Juda ko‘p urinildi. Keyinroq qaytadan urining."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Juda koʻp urinildi. Yuz bilan ochish faolsizlantirildi."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Juda koʻp urinildi. Ekran qulfi bilan oching."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Yuzingiz tasdiqlanmadi. Qaytadan urining."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Hali yuz bilan ochishni sozlamagansiz"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Yoqish uchun bosing"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Ishga oid ilovalar topilmadi"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Shaxsiy ilovalar topilmadi"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"<xliff:g id="APP">%s</xliff:g> shaxsiy profilda ochilsinmi?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"<xliff:g id="APP">%s</xliff:g> shaxsiy profilda ochilsinmi?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Shaxsiy brauzerdan foydalanish"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Ishga oid brauzerdan foydalanish"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM kartaning tarmoqdagi qulfini ochish uchun PIN kod"</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index eba580c..38bd8a6 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Đã há»§y thao tác dùng khuôn máș·t."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Người dùng đã há»§y thao tác Mở khóa báș±ng khuôn máș·t"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"BáșĄn đã thá»­ quá nhiều láș§n. Hãy thá»­ láșĄi sau."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"BáșĄn đã thá»­ quá nhiều láș§n. Thao tác Mở khóa báș±ng khuôn máș·t đã bị vô hiệu hóa."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"BáșĄn đã thá»­ quá nhiều láș§n. Hãy nháș­p phÆ°ÆĄng thức khóa màn hình."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Không thể xác minh khuôn máș·t. Hãy thá»­ láșĄi."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"BáșĄn chưa thiáșżt láș­p tính năng Mở khóa báș±ng khuôn máș·t"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Nháș„n để báș­t"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Không có ứng dỄng công việc"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Không có ứng dỄng cá nhân"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Mở <xliff:g id="APP">%s</xliff:g> trong hồ sÆĄ cá nhân cá»§a báșĄn?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Mở <xliff:g id="APP">%s</xliff:g> trong hồ sÆĄ công việc cá»§a báșĄn?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Dùng trình duyệt cá nhân"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Dùng trình duyệt công việc"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Mã PIN mở khóa máșĄng SIM"</string>
diff --git a/packages/SettingsLib/AppPreference/res/values-ar/strings.xml b/core/res/res/values-w180dp-notround-watch/dimens.xml
similarity index 64%
copy from packages/SettingsLib/AppPreference/res/values-ar/strings.xml
copy to core/res/res/values-w180dp-notround-watch/dimens.xml
index 024c0a6..5887661 100644
--- a/packages/SettingsLib/AppPreference/res/values-ar/strings.xml
+++ b/core/res/res/values-w180dp-notround-watch/dimens.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
+<?xml version="1.0" encoding="utf-8"?>
+<!--
   ~ Copyright (C) 2022 The Android Open Source Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,9 +13,12 @@
   ~ 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="install_type_instant" msgid="7217305006127216917">"ŰȘŰ·ŰšÙŠÙ‚ ÙÙˆŰ±ÙŠ"</string>
+  -->
+<resources>
+    <!-- 14.4% of display size -->
+    <dimen name="base_error_dialog_top_padding">26dp</dimen>
+    <!-- 2.8% of display size -->
+    <dimen name="base_error_dialog_padding">5dp</dimen>
+    <!-- 35.56% of display size -->
+    <dimen name="base_error_dialog_bottom_padding">64dp</dimen>
 </resources>
diff --git a/packages/SettingsLib/AppPreference/res/values-ar/strings.xml b/core/res/res/values-w192dp-round-watch/dimens.xml
similarity index 64%
rename from packages/SettingsLib/AppPreference/res/values-ar/strings.xml
rename to core/res/res/values-w192dp-round-watch/dimens.xml
index 024c0a6..5aed20e 100644
--- a/packages/SettingsLib/AppPreference/res/values-ar/strings.xml
+++ b/core/res/res/values-w192dp-round-watch/dimens.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
+<?xml version="1.0" encoding="utf-8"?>
+<!--
   ~ Copyright (C) 2022 The Android Open Source Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,9 +13,12 @@
   ~ 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="install_type_instant" msgid="7217305006127216917">"ŰȘŰ·ŰšÙŠÙ‚ ÙÙˆŰ±ÙŠ"</string>
+  -->
+<resources>
+    <!-- 16.7% of display size -->
+    <dimen name="base_error_dialog_top_padding">32dp</dimen>
+    <!-- 5.2% of display size -->
+    <dimen name="base_error_dialog_padding">10dp</dimen>
+    <!-- 20.83% of display size -->
+    <dimen name="base_error_dialog_bottom_padding">40dp</dimen>
 </resources>
diff --git a/packages/SettingsLib/AppPreference/res/values-ar/strings.xml b/core/res/res/values-w213dp-round-watch/dimens.xml
similarity index 64%
copy from packages/SettingsLib/AppPreference/res/values-ar/strings.xml
copy to core/res/res/values-w213dp-round-watch/dimens.xml
index 024c0a6..27fff75 100644
--- a/packages/SettingsLib/AppPreference/res/values-ar/strings.xml
+++ b/core/res/res/values-w213dp-round-watch/dimens.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
+<?xml version="1.0" encoding="utf-8"?>
+<!--
   ~ Copyright (C) 2022 The Android Open Source Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,9 +13,12 @@
   ~ 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="install_type_instant" msgid="7217305006127216917">"ŰȘŰ·ŰšÙŠÙ‚ ÙÙˆŰ±ÙŠ"</string>
+  -->
+<resources>
+    <!-- 16.7% of display size -->
+    <dimen name="base_error_dialog_top_padding">36dp</dimen>
+    <!-- 5.2% of display size -->
+    <dimen name="base_error_dialog_padding">11dp</dimen>
+    <!-- 36.46% of display size -->
+    <dimen name="base_error_dialog_bottom_padding">78dp</dimen>
 </resources>
diff --git a/core/res/res/values-watch/colors_device_defaults.xml b/core/res/res/values-watch/colors_device_defaults.xml
index 6ffd6e6..ee9481c 100644
--- a/core/res/res/values-watch/colors_device_defaults.xml
+++ b/core/res/res/values-watch/colors_device_defaults.xml
@@ -16,102 +16,51 @@
 
 <!-- Colors specific to Theme.DeviceDefault on watches, as specified via themes_device_default.xml
      Note: These colors specifically proide a darker, high-contrast UI that is suitable for
-     wearables with respect to 'glanceability'. OEM customization is supported within this set. -->
+     wearables with respect to 'glanceability'. -->
 <resources>
     <!--
        accent_device_default_dark
-         > from values/colors_material/accent_material_dark
-         > from values/colors_material/material_deep_teal_200
-         = #ff80cbc4
-         ! replaced with custom color #5E97F6
-         ! OEMS can customize as per specification
+         > from values/system_accent1_100
+         ! replaced with color/system_accent1_400
     -->
-    <color name="accent_device_default_dark">#5E97F6</color>
+    <color name="accent_device_default_dark">@color/system_accent1_400</color>
 
     <!--
        foreground_device_default_dark
          - introduced to avoid coupling to foreground_material_dark
          - colorForeground typically falls through Theme.DeviceDefault to Theme.Material
          ! fixed as white for optimal glanceability/contrast
-         ! OEMs should not customize
     -->
     <color name="foreground_device_default_dark">@color/white</color>
 
     <!--
        background_device_default_dark
-         > from values/colors_material/background_material_dark
-         > from values/colors_material/material_grey_850
-         = #ff303030
+         > from values/system_neutral1_900
          ! replaced with custom color #000000
-         ! OEMs can customized as per specification
-           (derived from accent color, constrained by brightness)
     -->
     <color name="background_device_default_dark">#000000</color>
 
-    <!--
-       background_floating_device_default_dark
-         > from values/colors_material/background_floating_material_dark
-         > from values/colors_material/material_grey_800
-         = #ff424242
-         ! replaced with custom color #1D2E4D
-           (derived from accent color, constrained by brightness)
-    -->
-    <color name="background_floating_device_default_dark">#1D2E4D</color>
+    <!-- Derived from accent color at 20% luminance -->
+    <color name="background_floating_device_default_dark">@color/system_accent1_800</color>
 
     <!--
-       primary_device_default_dark
-         > from values/colors_material/primary_material_dark
-         > from values/colors_material/material_grey_900
-         = #ff212121
-         ! replaced with custom color #808080
-         ! OEMs can customize as per specification
-           (derived from background color + foreground @ 50% opacity)
-    -->
-    <color name="primary_device_default_dark">#808080</color>
+        primary_device_default_dark
+          > from values/colors/system_neutral1_900
+          ! replaced with system_neutral1_500
+     -->
+    <color name="primary_device_default_dark">@color/system_neutral1_500</color>
 
-    <!--
-       primary_dark_device_default_dark
-         > from values/colors_material/primary_dark_material_dark
-         = @color/black
-         ! replaced with custom color #333333
-         ! OEMS can customize as per specification
-           (derived from background color + foreground @ 20% opacity)
-    -->
-    <color name="primary_dark_device_default_dark">#333333</color>
+    <!-- Currently matches the "surface dark" definition for phones. -->
+    <color name="surface_dark">@color/system_neutral1_800</color>
 
     <!--
        button_normal_device_default_dark
-         - uses ?attr/disabledAlpha and ?attr/colorPrimaryDark to draw state list
+         - uses ?attr/disabledAlpha and ?attr/colorSurface to draw state list
            (used as colorButtonNormal attribute in theme)
          - see color-watch/btn_watch_default_dark.xml
     -->
     <color name="button_normal_device_default_dark">@color/btn_watch_default_dark</color>
 
-    <!--
-       error_color_device_default_dark
-         - introduced to avoid coupling to error_color_mtterial (also #F4511E)
-         - colorError typically falls through Theme.DeviceDefault to Theme.Material
-         ! OEMs can customize as per specification
-    -->
-    <color name="error_color_device_default_dark">#F4511E</color>
-
-    <!-- no customization required/suggested below this point -->
-
-    <!--
-       background_cache_hint_selector_device_default
-         - note that this is based off of colors/background_cache_hint_selector_device_default
-           xml drawable
-         - uses ?attr/colorBackground and transparency to draw
-         - no color customization required here
-    -->
-
-    <!-- deprecated for Wear
-         these overrides exist only for compatibility with existing
-         WTS theme test heuristics, based on the previous modifications
-         to the material theme, they should not be used for customization
-         as they are not exposed via publicly accessible attributes -->
-    <color name="accent_device_default_dark_60_percent_opacity">#995E97f6</color>
-    <color name="accent_device_default_700">#5385DB</color>
-    <color name="accent_device_default_light">#75A4F5</color>
-    <color name="accent_device_default_50">#93B7F5</color>
+    <!-- Matches the Wear Compose error color. -->
+    <color name="error_color_device_default_dark">#FF746E</color>
 </resources>
diff --git a/core/res/res/values-watch/dimens.xml b/core/res/res/values-watch/dimens.xml
index 5472316..c7caa39 100644
--- a/core/res/res/values-watch/dimens.xml
+++ b/core/res/res/values-watch/dimens.xml
@@ -20,4 +20,9 @@
     <dimen name="alert_dialog_button_bar_height">0dp</dimen>
 
     <dimen name="toast_y_offset">0dip</dimen>
+
+    <!-- AppErrorDialog's list item height -->
+    <dimen name="aerr_list_item_height">52dp</dimen>
+    <!-- Padding for contents in a view of BaseErrorDialog such as a title and buttons -->
+    <dimen name="base_error_dialog_contents_padding">14dp</dimen>
 </resources>
diff --git a/core/res/res/values-watch/styles.xml b/core/res/res/values-watch/styles.xml
index 3172f73..6e84f39 100644
--- a/core/res/res/values-watch/styles.xml
+++ b/core/res/res/values-watch/styles.xml
@@ -19,4 +19,43 @@
         <item name="fontFamily">sans-serif-regular</item>
         <item name="textSize">13sp</item>
     </style>
+
+    <!-- @hide -->
+    <style name="TextAppearance.Watch"/>
+
+    <!-- @hide -->
+    <style name="TextAppearance.Watch.BaseErrorDialog">
+        <item name="fontFamily">google-sans-text-medium</item>
+        <item name="textColor">@android:color/white</item>
+        <item name="textAllCaps">false</item>
+    </style>
+
+    <!-- @hide -->
+    <style name="TextAppearance.Watch.BaseErrorDialog.Title">
+        <item name="textSize">16sp</item>
+        <item name="letterSpacing">0.024</item>
+    </style>
+
+    <!-- @hide -->
+    <style name="TextAppearance.Watch.AppErrorDialog"
+           parent="TextAppearance.Watch.BaseErrorDialog"/>
+
+    <!-- @hide -->
+    <style name="TextAppearance.Watch.AppErrorDialog.Item">
+        <item name="textSize">15sp</item>
+        <item name="letterSpacing">0.01</item>
+    </style>
+
+    <!-- @hide -->
+    <style name="aerr_list_item">
+        <item name="minHeight">@dimen/aerr_list_item_height</item>
+        <item name="textAppearance">@style/TextAppearance.Watch.AppErrorDialog.Item</item>
+        <item name="gravity">center_vertical</item>
+        <item name="paddingStart">@dimen/base_error_dialog_contents_padding</item>
+        <item name="paddingEnd">@dimen/base_error_dialog_contents_padding</item>
+        <item name="background">@drawable/global_actions_item_grey_background</item>
+        <item name="drawablePadding">6dp</item>
+        <item name="drawableTint">@android:color/white</item>
+        <item name="drawableTintMode">src_atop</item>
+    </style>
 </resources>
diff --git a/core/res/res/values-watch/styles_device_default.xml b/core/res/res/values-watch/styles_device_default.xml
index e2261af..8a2ce5d 100644
--- a/core/res/res/values-watch/styles_device_default.xml
+++ b/core/res/res/values-watch/styles_device_default.xml
@@ -34,4 +34,7 @@
         <item name="android:textSize">16sp</item>
         <item name="android:fontFamily">google-sans-medium</item>
     </style>
+    <style name="BaseErrorDialog.DeviceDefault" parent="AlertDialog.DeviceDefault">
+        <item name="layout">@layout/watch_base_error_dialog</item>
+    </style>
 </resources>
diff --git a/core/res/res/values-watch/themes_device_defaults.xml b/core/res/res/values-watch/themes_device_defaults.xml
index 1db006f..c4c1ed9 100644
--- a/core/res/res/values-watch/themes_device_defaults.xml
+++ b/core/res/res/values-watch/themes_device_defaults.xml
@@ -427,6 +427,8 @@
 
     <!-- Theme for the dialog shown when an app crashes or ANRs. Override to make it dark. -->
     <style name="Theme.DeviceDefault.Dialog.AppError" parent="Theme.DeviceDefault.Dialog.Alert">
+        <item name="alertDialogStyle">@style/BaseErrorDialog.DeviceDefault</item>
+        <item name="dialogPreferredPadding">@dimen/base_error_dialog_padding</item>
         <item name="windowContentTransitions">false</item>
         <item name="windowActivityTransitions">false</item>
         <item name="windowCloseOnTouchOutside">false</item>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 1e25289..14e635c 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"éąć­”ć€„ç†æ“äœœć·Čć–æ¶ˆă€‚"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"甚户ć·Čć–æ¶ˆäșșè„žè§Łé”"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"ć°èŻ•æŹĄæ•°èż‡ć€šïŒŒèŻ·çšćŽé‡èŻ•ă€‚"</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"ć°èŻ•æŹĄæ•°èż‡ć€šïŒŒäșșè„žè§Łé”ć·Č恜甹。"</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"ć°èŻ•æŹĄæ•°èż‡ć€šïŒŒèŻ·æ”čäžșé€šèż‡è§Łé™€ć±ćč•锁ćꚿ„éȘŒè݁èș«ä»œă€‚"</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"æ— æł•éȘŒè݁äșșè„žïŒŒèŻ·é‡èŻ•ă€‚"</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"æ‚šć°šæœȘèźŸçœźäșșè„žè§Łé”"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"ç‚čæŒ‰ćłćŻćŒ€ćŻ"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"æČĄæœ‰æ”ŻæŒè݄ㆅćźčçš„ć·„äœœćș”甚"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"æČĄæœ‰æ”ŻæŒè݄ㆅćźč的äžȘäșșćș”甚"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"èŠäœżç”šäžȘäșșè”„æ–™æ‰“ćŒ€ <xliff:g id="APP">%s</xliff:g> ć—ïŒŸ"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"èŠäœżç”šć·„äœœè”„æ–™æ‰“ćŒ€ <xliff:g id="APP">%s</xliff:g> ć—ïŒŸ"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"äœżç”šäžȘäșșæ”è§ˆć™š"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"äœżç”šć·„äœœæ”è§ˆć™š"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM çœ‘ç»œè§Łé” PIN 码"</string>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 74e44a6..c0b44e2 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"éąć­”æ“äœœć·Čć–æ¶ˆă€‚"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"äœżç”šè€…ć·Čć–æ¶ˆă€Œéąć­”è§ŁéŽ–ă€"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"ć˜—è©ŠæŹĄæ•žéŽć€šïŒŒè«‹çšćŸŒć†è©Šă€‚"</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"ć˜—è©ŠæŹĄæ•žéŽć€šïŒŒć› æ­€çł»ç”±ć·Čćœç”šă€Œéąć­”è§ŁéŽ–ă€ă€‚"</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"ć˜—è©ŠæŹĄæ•žéŽć€šïŒŒè«‹æ”čç‚șè§Łé™€èžąćč•éŽ–ćźšäŸ†é©—è­‰èș«ćˆ†ă€‚"</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"ç„Ąæł•é©—è­‰éąć­”ă€‚è«‹ć†è©Šäž€æŹĄă€‚"</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"æ‚šć°šæœȘèš­ćźšă€Œéąć­”è§ŁéŽ–ă€"</string>
@@ -1871,8 +1870,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"ć·Čç”±æ‚šçš„çźĄç†ć“Ąæ›Žæ–°"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"ć·Čç”±æ‚šçš„çźĄç†ć“ĄćˆȘ陀"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"ć„œ"</string>
-    <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"ă€Œæ…łé›»æšĄćŒă€æœƒé–‹ć•Ÿæ·±è‰Čäž»éĄŒèƒŒæ™ŻïŒŒäžŠé™ćˆ¶æˆ–é—œé–‰èƒŒæ™ŻæŽ»ć‹•ă€éƒšćˆ†èŠ–èŠșæ•ˆæžœă€ç‰čćźšćŠŸèƒœć’Œéƒšćˆ†ç¶Č甥連線。"</string>
-    <string name="battery_saver_description" msgid="8518809702138617167">"ă€Œæ…łé›»æšĄćŒă€æœƒé–‹ć•Ÿæ·±è‰Čäž»éĄŒèƒŒæ™ŻïŒŒäžŠé™ćˆ¶æˆ–é—œé–‰èƒŒæ™ŻæŽ»ć‹•ă€éƒšćˆ†èŠ–èŠșæ•ˆæžœă€ç‰čćźšćŠŸèƒœć’Œéƒšćˆ†ç¶Č甥連線。"</string>
+    <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"ă€Œçœé›»æšĄćŒă€æœƒé–‹ć•Ÿæ·±è‰Čäž»éĄŒèƒŒæ™ŻïŒŒäžŠé™ćˆ¶æˆ–é—œé–‰èƒŒæ™ŻæŽ»ć‹•ă€éƒšćˆ†èŠ–èŠșæ•ˆæžœă€ç‰čćźšćŠŸèƒœć’Œéƒšćˆ†ç¶Č甥連線。"</string>
+    <string name="battery_saver_description" msgid="8518809702138617167">"ă€Œçœé›»æšĄćŒă€æœƒé–‹ć•Ÿæ·±è‰Čäž»éĄŒèƒŒæ™ŻïŒŒäžŠé™ćˆ¶æˆ–é—œé–‰èƒŒæ™ŻæŽ»ć‹•ă€éƒšćˆ†èŠ–èŠșæ•ˆæžœă€ç‰čćźšćŠŸèƒœć’Œéƒšćˆ†ç¶Č甥連線。"</string>
     <string name="data_saver_description" msgid="4995164271550590517">"ă€Œæ•žæ“šçŻ€çœæšĄćŒă€ćŻé˜Čæ­ąéƒšćˆ†æ‡‰ç”šçš‹ćŒćœšèƒŒæ™Żæ”¶ç™Œèł‡æ–™ïŒŒä»„çŻ€çœæ•žæ“šç”šé‡ă€‚æ‚šæ­Łćœšäœżç”šçš„æ‡‰ç”šçš‹ćŒćŻć­˜ć–èł‡æ–™ïŒŒäœ†æŹĄæ•žćŻèƒœæœƒæž›ć°‘ă€‚äŸ‹ćŠ‚ïŒŒćœ–ç‰‡ćŻèƒœéœ€èŠèŒ•æŒ‰æ‰æœƒéĄŻç€ș。"</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"èŠé–‹ć•Ÿă€Œæ•žæ“šçŻ€çœæšĄćŒă€ć—ŽïŒŸ"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"開敟"</string>
@@ -2094,10 +2093,10 @@
     <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"çž­è§Łè©łæƒ…"</string>
     <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"ćŠ ćŒ·ç‰ˆé€šçŸ„ćœš Android 12 ć–ä»Łäș† Android è‡Ș拕èȘżæ•Žé€šçŸ„ă€‚æ­€ćŠŸèƒœæœƒéĄŻç€șć»șè­°çš„æ“äœœć’Œć›žèŠ†ïŒŒæ›ŽćŻç‚șæ‚šæ•Žç†é€šçŸ„ă€‚\n\nćŠ ćŒ·ç‰ˆé€šçŸ„ćŠŸèƒœćŻć­˜ć–æ‚šçš„é€šçŸ„ć…§ćźč (ćŒ…æ‹ŹèŻç”Ąäșșć§“ćć’ŒèšŠæŻç­‰ć€‹äșșèł‡æ–™)äșŠćŻä»„é—œé–‰æˆ–ć›žæ‡‰é€šçŸ„ïŒŒäŸ‹ćŠ‚æŽ„èœäŸ†é›»ć’ŒæŽ§ćˆ¶ă€Œè«‹ć‹żéš·æ“Ÿă€ćŠŸèƒœă€‚"</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ă€Œæ—„ćžžćź‰æŽ’æšĄćŒă€èł‡æ–™é€šçŸ„"</string>
-    <string name="dynamic_mode_notification_title" msgid="1388718452788985481">"ć·Čé–‹ć•Ÿă€Œæ…łé›»æšĄćŒă€"</string>
+    <string name="dynamic_mode_notification_title" msgid="1388718452788985481">"ć·Čé–‹ć•Ÿă€Œçœé›»æšĄćŒă€"</string>
     <string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"æž›ć°‘ç”šé›»ćŻć»¶é•·é›»æ± ćŁœć‘œ"</string>
-    <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"æ…łé›»æšĄćŒ"</string>
-    <string name="battery_saver_off_notification_title" msgid="7637255960468032515">"ć·Čé—œé–‰æ…łé›»æšĄćŒ"</string>
+    <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"çœé›»æšĄćŒ"</string>
+    <string name="battery_saver_off_notification_title" msgid="7637255960468032515">"ć·Čé—œé–‰çœé›»æšĄćŒ"</string>
     <string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"æ‰‹æ©Ÿé›»é‡ć……è¶łă€‚ć„é …ćŠŸèƒœć·Č侍憍揗限。"</string>
     <string name="battery_saver_charged_notification_summary" product="tablet" msgid="4426317048139996888">"ćčłæżé›»è…Šé›»é‡ć……è¶łă€‚ć„é …ćŠŸèƒœć·Č侍憍揗限。"</string>
     <string name="battery_saver_charged_notification_summary" product="device" msgid="1031562417867646649">"èŁçœźé›»é‡ć……è¶łă€‚ć„é …ćŠŸèƒœć·Č侍憍揗限。"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"èŒ•æŒ‰ćłćŻć•Ÿç”š"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"æČ’æœ‰é©ç”šçš„ć·„äœœæ‡‰ç”šçš‹ćŒ"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"æČ’æœ‰é©ç”šçš„ć€‹äșșæ‡‰ç”šçš‹ćŒ"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"èŠćœšć€‹äșșèš­ćźšæȘ”äž­é–‹ć•Ÿă€Œ<xliff:g id="APP">%s</xliff:g>ă€ć—ŽïŒŸ"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"èŠćœšć·„äœœèš­ćźšæȘ”äž­é–‹ć•Ÿă€Œ<xliff:g id="APP">%s</xliff:g>ă€ć—ŽïŒŸ"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"äœżç”šć€‹äșșç€èŠœć™š"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"äœżç”šć·„äœœç€èŠœć™š"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM ç¶Čç”Ąè§ŁéŽ– PIN"</string>
@@ -2324,7 +2321,7 @@
     <string name="concurrent_display_notification_thermal_title" msgid="5921609404644739229">"èŁçœźéŽç†±"</string>
     <string name="concurrent_display_notification_thermal_content" msgid="2075484836527609319">"ç”±æ–Œæ‰‹æ©ŸéŽç†±ïŒŒé›™èžąćč•ćŠŸèƒœç„Ąæł•äœżç”š"</string>
     <string name="concurrent_display_notification_power_save_title" msgid="1794569070730736281">"ç„Ąæł•äœżç”šé›™èžąćč•ćŠŸèƒœ"</string>
-    <string name="concurrent_display_notification_power_save_content" msgid="2198116070583851493">"ç”±æ–Œă€Œæ…łé›»æšĄćŒă€ć·Čé–‹ć•ŸïŒŒć› æ­€ç„Ąæł•äœżç”šé›™èžąćč•ćŠŸèƒœă€‚æ‚šćŻä»„ć‰ćŸ€ă€Œèš­ćźšă€äž­é—œé–‰æ­€æšĄćŒă€‚"</string>
+    <string name="concurrent_display_notification_power_save_content" msgid="2198116070583851493">"ç”±æ–Œă€Œçœé›»æšĄćŒă€ć·Čé–‹ć•ŸïŒŒć› æ­€ç„Ąæł•äœżç”šé›™èžąćč•ćŠŸèƒœă€‚æ‚šćŻä»„ć‰ćŸ€ă€Œèš­ćźšă€äž­é—œé–‰æ­€æšĄćŒă€‚"</string>
     <string name="device_state_notification_settings_button" msgid="691937505741872749">"ć‰ćŸ€ă€Œèš­ćźšă€"</string>
     <string name="device_state_notification_turn_off_button" msgid="6327161707661689232">"關閉"</string>
     <string name="keyboard_layout_notification_selected_title" msgid="1202560174252421219">"ć·Čèš­ćźšă€Œ<xliff:g id="DEVICE_NAME">%s</xliff:g>」"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 7a036bf..71674c1 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"è‡‰ć­”è™•ç†äœœæ„­ć·Čć–æ¶ˆă€‚"</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"äœżç”šè€…ć·Čć–æ¶ˆäșșè‡‰è§ŁéŽ–äœœæ„­"</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"ć˜—è©ŠæŹĄæ•žéŽć€šïŒŒè«‹çšćŸŒć†è©Šă€‚"</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"ć˜—è©ŠæŹĄæ•žéŽć€šïŒŒć› æ­€çł»ç”±ć·Č恜甹äșșè‡‰è§ŁéŽ–ćŠŸèƒœă€‚"</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"ć˜—è©ŠæŹĄæ•žéŽć€šïŒŒè«‹æ”čç”šèžąćč•éŽ–ćźšćŠŸèƒœé©—è­‰èș«ćˆ†ă€‚"</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"ç„Ąæł•é©—è­‰è‡‰ć­”ïŒŒè«‹ć†è©Šäž€æŹĄă€‚"</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"äœ ć°šæœȘèš­ćźšäșșè‡‰è§ŁéŽ–ćŠŸèƒœ"</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"èŒ•è§žćłćŻć•Ÿç”š"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"æČ’æœ‰é©ç”šçš„ć·„äœœæ‡‰ç”šçš‹ćŒ"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"æČ’æœ‰é©ç”šçš„ć€‹äșșæ‡‰ç”šçš‹ćŒ"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"èŠćœšć€‹äșșèł‡æ–™ć€Ÿäž­é–‹ć•Ÿă€Œ<xliff:g id="APP">%s</xliff:g>ă€ć—ŽïŒŸ"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"èŠćœšć·„äœœèł‡æ–™ć€Ÿäž­é–‹ć•Ÿă€Œ<xliff:g id="APP">%s</xliff:g>ă€ć—ŽïŒŸ"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"äœżç”šć€‹äșșç€èŠœć™š"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"äœżç”šć·„äœœç€èŠœć™š"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM 捡ç¶Čè·Żè§ŁéŽ– PIN çąŒ"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 1bd0d80..5f8c2f9 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -316,7 +316,7 @@
     <string name="permgroupdesc_microphone" msgid="1047786732792487722">"rekhoda ividiyo"</string>
     <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"Umsebenzi womzimba"</string>
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"finyelela kumsebenzi wakho womzimba"</string>
-    <string name="permgrouplab_camera" msgid="9090413408963547706">"Ikhamera"</string>
+    <string name="permgrouplab_camera" msgid="9090413408963547706">"Ikhamela"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"thatha izithombe uphinde urekhode ividiyo"</string>
     <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"Amadivayisi aseduze"</string>
     <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"thola futhi uxhume kumadivayisi aseduze"</string>
@@ -709,8 +709,7 @@
     <string name="face_error_canceled" msgid="2164434737103802131">"Umsebenzi wobuso ukhanselwe."</string>
     <string name="face_error_user_canceled" msgid="5766472033202928373">"Ukuvula ngobuso kukhanselwe umsebenzisi."</string>
     <string name="face_error_lockout" msgid="7864408714994529437">"Imizamo eminingi kakhulu. Zama futhi emuva kwesikhathi."</string>
-    <!-- no translation found for face_error_lockout_permanent (8533257333130473422) -->
-    <skip />
+    <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Imizamo eminingi kakhulu. Ukuvula ngobuso kukhutshaziwe."</string>
     <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Imizamo eminingi kakhulu. Kunalokho faka ukukhiya isikrini."</string>
     <string name="face_error_unable_to_process" msgid="5723292697366130070">"Ayikwazi ukuqinisekisa ubuso. Zama futhi."</string>
     <string name="face_error_not_enrolled" msgid="1134739108536328412">"Awukakusethi Ukuvula ngobuso."</string>
@@ -2163,10 +2162,8 @@
     <string name="resolver_switch_on_work" msgid="463709043650610420">"Thepha ukuze uvule"</string>
     <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Awekho ama-app womsebenzi"</string>
     <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Awekho ama-app womuntu siqu"</string>
-    <!-- no translation found for miniresolver_open_in_personal (6499100403307136696) -->
-    <skip />
-    <!-- no translation found for miniresolver_open_in_work (7138659785478630639) -->
-    <skip />
+    <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Vula i-<xliff:g id="APP">%s</xliff:g> kwiphrofayela yakho siqu?"</string>
+    <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Vula i-<xliff:g id="APP">%s</xliff:g> kwiphrofayela yakho yomsebenzi?"</string>
     <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Sebenzisa isiphequluli somuntu siqu"</string>
     <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Sebenzisa isiphequluli somsebenzi"</string>
     <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"Iphinikhodi yokuvula inethiwekhi ye-SIM"</string>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 7de36a71..c7ab49d 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -9094,7 +9094,8 @@
         <attr name="dotColor" format="color|reference"/>
         <!-- Color of the dot when it's activated -->
         <attr name="dotActivatedColor" format="color|reference"/>
-
+        <!-- Keep dot in activated state until segment completion -->
+        <attr name="keepDotActivated" format="boolean"/>
     </declare-styleable>
 
     <!-- =============================== -->
@@ -9160,10 +9161,10 @@
              {@link android.os.Build.VERSION_CODES#N} and not used in previous versions. -->
         <attr name="supportsLocalInteraction" format="boolean" />
         <!-- The service that provides {@link android.service.voice.HotwordDetectionService}.
-             @hide @SystemApi -->
+             Expect a component name to be provided. @hide @SystemApi -->
         <attr name="hotwordDetectionService" format="string" />
         <!-- The service that provides {@link android.service.voice.VisualQueryDetectionService}.
-             @hide @SystemApi -->
+             Expect a component name to be provided. @hide @SystemApi -->
         <attr name="visualQueryDetectionService" format="string" />
 
     </declare-styleable>
@@ -10113,13 +10114,12 @@
     <declare-styleable name="CredentialProvider">
         <!-- A string that is displayed to the user in the Credential Manager settings
              screen that can be used to provide more information about a provider. For
-             longer strings (40 char) it will be truncated. If multiple services
-             show the subtitle then the string will be joined together. -->
+             longer strings it will be truncated. -->
         <attr name="settingsSubtitle" format="string" />
     </declare-styleable>
 
     <!-- A list of capabilities that indicates to the OS what kinds of credentials
-             this provider supports. This list is defined in CredentialProviderService. -->
+             this provider supports. -->
     <declare-styleable name="CredentialProvider_Capabilities" parent="CredentialProvider">
         <!-- An individual capability declared by the provider. -->
         <attr name="capability" format="string" />
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index c5f7ea6..abddb98 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -192,6 +192,10 @@
          available on some devices. -->
     <bool name="config_enableHapticTextHandle">false</bool>
 
+    <!-- Enables or disables proximity service that approximates proximity with aiai attention
+         service. Off by default, since the service may not be available on some devices. -->
+    <bool name="config_enableProximityService">false</bool>
+
     <!-- Whether dialogs should close automatically when the user touches outside
          of them.  This should not normally be modified. -->
     <bool name="config_closeDialogWhenTouchOutside">true</bool>
@@ -3373,7 +3377,7 @@
     <!-- default window ShowCircularMask property -->
     <bool name="config_windowShowCircularMask">false</bool>
 
-    <!-- default value for whether circular emulators (ro.emulator.circular)
+    <!-- default value for whether circular emulators (ro.boot.emulator.circular)
          should show a display overlay on the screen -->
     <bool name="config_windowEnableCircularEmulatorDisplayOverlay">false</bool>
 
@@ -5944,9 +5948,6 @@
     <!-- Whether changing sensor privacy SW setting requires device to be unlocked -->
     <bool name="config_sensorPrivacyRequiresAuthentication">true</bool>
 
-    <!-- List containing the allowed install sources for accessibility service. -->
-    <string-array name="config_accessibility_allowed_install_source" translatable="false"/>
-
     <!-- Default value for Settings.ASSIST_LONG_PRESS_HOME_ENABLED -->
     <bool name="config_assistLongPressHomeEnabledDefault">true</bool>
     <!-- Default value for Settings.ASSIST_TOUCH_GESTURE_ENABLED -->
diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml
index b1b1edf..ecf196a 100644
--- a/core/res/res/values/dimens.xml
+++ b/core/res/res/values/dimens.xml
@@ -685,6 +685,9 @@
     <!-- Parameters applied to line disappearing animation in LockPatternView in milliseconds. -->
     <integer name="lock_pattern_line_fade_out_duration">500</integer>
     <integer name="lock_pattern_line_fade_out_delay">150</integer>
+    <!-- Parameters applied to fade pattern animation in LockPatternView in milliseconds. -->
+    <integer name="lock_pattern_fade_pattern_duration">200</integer>
+    <integer name="lock_pattern_fade_pattern_delay">2300</integer>
 
     <dimen name="text_handle_min_size">40dp</dimen>
 
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index bf5e6dc..8438578 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -416,6 +416,7 @@
   <java-symbol type="bool" name="config_guestUserAllowEphemeralStateChange" />
   <java-symbol type="bool" name="config_localDisplaysMirrorContent" />
   <java-symbol type="bool" name="config_ignoreUdfpsVote" />
+  <java-symbol type="bool" name="config_enableProximityService" />
   <java-symbol type="array" name="config_localPrivateDisplayPorts" />
   <java-symbol type="integer" name="config_defaultDisplayDefaultColorMode" />
   <java-symbol type="bool" name="config_enableAppWidgetService" />
@@ -1282,6 +1283,8 @@
   <java-symbol type="dimen" name="lock_pattern_fade_away_gradient_width" />
   <java-symbol type="integer" name="lock_pattern_line_fade_out_duration" />
   <java-symbol type="integer" name="lock_pattern_line_fade_out_delay" />
+  <java-symbol type="integer" name="lock_pattern_fade_pattern_delay" />
+  <java-symbol type="integer" name="lock_pattern_fade_pattern_duration" />
   <java-symbol type="drawable" name="clock_dial" />
   <java-symbol type="drawable" name="clock_hand_hour" />
   <java-symbol type="drawable" name="clock_hand_minute" />
@@ -5003,8 +5006,7 @@
 
   <java-symbol type="bool" name="config_batteryStatsResetOnUnplugHighBatteryLevel" />
   <java-symbol type="bool" name="config_batteryStatsResetOnUnplugAfterSignificantCharge" />
-
-
+  
   <java-symbol name="materialColorOnSecondaryFixedVariant" type="attr"/>
   <java-symbol name="materialColorOnTertiaryFixedVariant" type="attr"/>
   <java-symbol name="materialColorSurfaceContainerLowest" type="attr"/>
diff --git a/core/res/res/values/themes_device_defaults.xml b/core/res/res/values/themes_device_defaults.xml
index a2d54b2..84f1d6e 100644
--- a/core/res/res/values/themes_device_defaults.xml
+++ b/core/res/res/values/themes_device_defaults.xml
@@ -4098,6 +4098,7 @@
         <item name="materialColorPrimaryContainer">@color/system_primary_container_light</item>
         <item name="materialColorOnBackground">@color/system_on_background_light</item>
         <item name="materialColorPrimaryFixed">@color/system_primary_fixed</item>
+
         <item name="materialColorOnSecondary">@color/system_on_secondary_light</item>
         <item name="materialColorOnTertiary">@color/system_on_tertiary_light</item>
         <item name="materialColorSurfaceDim">@color/system_surface_dim_light</item>
@@ -4178,6 +4179,7 @@
         <item name="materialColorPrimaryContainer">@color/system_primary_container_light</item>
         <item name="materialColorOnBackground">@color/system_on_background_light</item>
         <item name="materialColorPrimaryFixed">@color/system_primary_fixed</item>
+
         <item name="materialColorOnSecondary">@color/system_on_secondary_light</item>
         <item name="materialColorOnTertiary">@color/system_on_tertiary_light</item>
         <item name="materialColorSurfaceDim">@color/system_surface_dim_light</item>
@@ -4250,6 +4252,7 @@
         <item name="materialColorPrimaryContainer">@color/system_primary_container_light</item>
         <item name="materialColorOnBackground">@color/system_on_background_light</item>
         <item name="materialColorPrimaryFixed">@color/system_primary_fixed</item>
+
         <item name="materialColorOnSecondary">@color/system_on_secondary_light</item>
         <item name="materialColorOnTertiary">@color/system_on_tertiary_light</item>
         <item name="materialColorSurfaceDim">@color/system_surface_dim_light</item>
diff --git a/core/tests/coretests/Android.bp b/core/tests/coretests/Android.bp
index 34b4c51..75c23a9 100644
--- a/core/tests/coretests/Android.bp
+++ b/core/tests/coretests/Android.bp
@@ -52,7 +52,7 @@
         "junit-params",
         "kotlin-test",
         "mockito-target-minus-junit4",
-        "ub-uiautomator",
+        "androidx.test.uiautomator_uiautomator",
         "platform-test-annotations",
         "platform-compat-test-rules",
         "truth-prebuilt",
diff --git a/core/tests/coretests/src/android/accessibilityservice/TEST_MAPPING b/core/tests/coretests/src/android/accessibilityservice/TEST_MAPPING
new file mode 100644
index 0000000..1c67399
--- /dev/null
+++ b/core/tests/coretests/src/android/accessibilityservice/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "imports": [
+    {
+      "path": "frameworks/base/services/accessibility/TEST_MAPPING"
+    }
+  ]
+}
diff --git a/core/tests/coretests/src/android/app/DownloadManagerBaseTest.java b/core/tests/coretests/src/android/app/DownloadManagerBaseTest.java
index cb66fc8..c62c471 100644
--- a/core/tests/coretests/src/android/app/DownloadManagerBaseTest.java
+++ b/core/tests/coretests/src/android/app/DownloadManagerBaseTest.java
@@ -33,10 +33,11 @@
 import android.os.SystemClock;
 import android.os.UserHandle;
 import android.provider.Settings;
-import android.support.test.uiautomator.UiDevice;
 import android.test.InstrumentationTestCase;
 import android.util.Log;
 
+import androidx.test.uiautomator.UiDevice;
+
 import com.google.mockwebserver.MockResponse;
 import com.google.mockwebserver.MockWebServer;
 
diff --git a/core/tests/coretests/src/android/app/NotificationTest.java b/core/tests/coretests/src/android/app/NotificationTest.java
index c5b00c9..1b570da 100644
--- a/core/tests/coretests/src/android/app/NotificationTest.java
+++ b/core/tests/coretests/src/android/app/NotificationTest.java
@@ -931,6 +931,27 @@
         // no crash, good
     }
 
+    @Test
+    public void testToBundle_getMessageFromBundle_returnsSameData() {
+        Notification.MessagingStyle.Message message =
+                new Notification.MessagingStyle.Message(
+                        "a", 100, new Person.Builder().setName("hi").build());
+        message.setData("text", Uri.parse("http://test/uri"));
+
+        Notification.MessagingStyle.Message convertedMessage =
+                Notification.MessagingStyle.Message.getMessageFromBundle(message.toBundle());
+
+        assertThat(convertedMessage).isNotNull();
+        assertThat(message.getText()).isEqualTo(convertedMessage.getText());
+        assertThat(message.getTimestamp()).isEqualTo(convertedMessage.getTimestamp());
+        assertThat(message.getExtras().size()).isEqualTo(convertedMessage.getExtras().size());
+        assertThat(message.getSender()).isEqualTo(convertedMessage.getSender());
+        assertThat(message.getSenderPerson()).isEqualTo(convertedMessage.getSenderPerson());
+        assertThat(message.getDataMimeType()).isEqualTo(convertedMessage.getDataMimeType());
+        assertThat(message.getDataUri()).isEqualTo(convertedMessage.getDataUri());
+        assertThat(message.isRemoteInputHistory())
+                .isEqualTo(convertedMessage.isRemoteInputHistory());
+    }
 
     @Test
     public void testDoesNotStripsExtenders() {
diff --git a/core/tests/coretests/src/android/app/backup/BackupManagerTest.java b/core/tests/coretests/src/android/app/backup/BackupManagerTest.java
index 27ee82e..567ca01 100644
--- a/core/tests/coretests/src/android/app/backup/BackupManagerTest.java
+++ b/core/tests/coretests/src/android/app/backup/BackupManagerTest.java
@@ -19,11 +19,14 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.junit.Assert.assertThrows;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 import android.app.backup.BackupAnnotations.BackupDestination;
 import android.app.backup.BackupAnnotations.OperationType;
 import android.content.Context;
 import android.os.ParcelFileDescriptor;
+import android.os.RemoteException;
 import android.os.UserHandle;
 import android.platform.test.annotations.Presubmit;
 
@@ -31,7 +34,6 @@
 
 import org.junit.Before;
 import org.junit.Test;
-import org.junit.function.ThrowingRunnable;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
@@ -43,14 +45,28 @@
 public class BackupManagerTest {
     private BackupManager mBackupManager;
 
+    private static final int USER_ID = 12;
+
     @Mock
     Context mContext;
+    @Mock
+    IBackupManager mIBackupManager;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
 
         mBackupManager = new BackupManager(mContext);
+        BackupManager.sService = mIBackupManager;
+    }
+
+    @Test
+    public void testSetFrameworkSchedulingEnabled_delegatesToService() throws RemoteException {
+        when(mContext.getUserId()).thenReturn(USER_ID);
+        mBackupManager.setFrameworkSchedulingEnabled(true);
+
+        verify(mIBackupManager).setFrameworkSchedulingEnabledForUser(
+                USER_ID, /* isEnabled= */true);
     }
 
     @Test
diff --git a/core/tests/coretests/src/android/app/usage/UsageStatsTest.java b/core/tests/coretests/src/android/app/usage/UsageStatsTest.java
index 858bbd2..f728080 100644
--- a/core/tests/coretests/src/android/app/usage/UsageStatsTest.java
+++ b/core/tests/coretests/src/android/app/usage/UsageStatsTest.java
@@ -36,11 +36,11 @@
 import android.app.usage.UsageEvents.Event;
 import android.os.Parcel;
 import android.os.UserHandle;
-import android.support.test.uiautomator.UiDevice;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
+import androidx.test.uiautomator.UiDevice;
 
 import org.junit.Before;
 import org.junit.Test;
diff --git a/core/tests/coretests/src/android/database/DatabaseGeneralTest.java b/core/tests/coretests/src/android/database/DatabaseGeneralTest.java
index b8dbfd3..95b0e32 100644
--- a/core/tests/coretests/src/android/database/DatabaseGeneralTest.java
+++ b/core/tests/coretests/src/android/database/DatabaseGeneralTest.java
@@ -25,7 +25,6 @@
 import android.database.sqlite.SQLiteDebug;
 import android.database.sqlite.SQLiteException;
 import android.os.Parcel;
-import android.support.test.uiautomator.UiDevice;
 import android.test.AndroidTestCase;
 import android.test.PerformanceTestCase;
 import android.util.Log;
@@ -35,6 +34,7 @@
 import androidx.test.filters.LargeTest;
 import androidx.test.filters.MediumTest;
 import androidx.test.filters.SmallTest;
+import androidx.test.uiautomator.UiDevice;
 
 import junit.framework.Assert;
 
diff --git a/core/tests/coretests/src/android/os/BinderProxyCountingTest.java b/core/tests/coretests/src/android/os/BinderProxyCountingTest.java
index ce6ad87..2089c6c 100644
--- a/core/tests/coretests/src/android/os/BinderProxyCountingTest.java
+++ b/core/tests/coretests/src/android/os/BinderProxyCountingTest.java
@@ -24,12 +24,12 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.ServiceConnection;
-import android.support.test.uiautomator.UiDevice;
 import android.util.Log;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.LargeTest;
 import androidx.test.runner.AndroidJUnit4;
+import androidx.test.uiautomator.UiDevice;
 
 import com.android.frameworks.coretests.aidl.IBpcCallbackObserver;
 import com.android.frameworks.coretests.aidl.IBpcTestAppCmdService;
diff --git a/core/tests/coretests/src/android/os/PowerManagerTest.java b/core/tests/coretests/src/android/os/PowerManagerTest.java
index 0dfc371..aa06a3a 100644
--- a/core/tests/coretests/src/android/os/PowerManagerTest.java
+++ b/core/tests/coretests/src/android/os/PowerManagerTest.java
@@ -24,11 +24,11 @@
 import static org.mockito.Mockito.verify;
 
 import android.content.Context;
-import android.support.test.uiautomator.UiDevice;
 import android.test.AndroidTestCase;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.SmallTest;
+import androidx.test.uiautomator.UiDevice;
 
 import org.junit.After;
 import org.junit.Test;
diff --git a/core/tests/coretests/src/android/os/VibrationEffectTest.java b/core/tests/coretests/src/android/os/VibrationEffectTest.java
index 627feab..f1bd329 100644
--- a/core/tests/coretests/src/android/os/VibrationEffectTest.java
+++ b/core/tests/coretests/src/android/os/VibrationEffectTest.java
@@ -50,6 +50,7 @@
 
 import com.android.internal.R;
 
+import org.jetbrains.annotations.NotNull;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.junit.MockitoJUnitRunner;
@@ -758,6 +759,109 @@
         assertTrue(100 / 255f > ((StepSegment) scaledDown.getSegments().get(1)).getAmplitude());
     }
 
+    private void doTestApplyRepeatingWithNonRepeatingOriginal(@NotNull VibrationEffect original) {
+        assertTrue(original.getDuration() != Long.MAX_VALUE);
+        int loopDelayMs = 123;
+        assertEquals(original, original.applyRepeatingIndefinitely(false, loopDelayMs));
+
+        // Looping with no delay gets the raw repeated effect.
+        VibrationEffect loopingOriginal = VibrationEffect.startComposition()
+                .repeatEffectIndefinitely(original)
+                .compose();
+        assertEquals(Long.MAX_VALUE, loopingOriginal.getDuration());
+        assertEquals(loopingOriginal, original.applyRepeatingIndefinitely(true, 0));
+
+        VibrationEffect loopingPart = VibrationEffect.startComposition()
+                .addEffect(original)
+                .addOffDuration(Duration.ofMillis(loopDelayMs))
+                .compose();
+
+        VibrationEffect loopingWithDelay = VibrationEffect.startComposition()
+                .repeatEffectIndefinitely(loopingPart)
+                .compose();
+        assertEquals(Long.MAX_VALUE, loopingWithDelay.getDuration());
+        assertEquals(loopingWithDelay, original.applyRepeatingIndefinitely(true, loopDelayMs));
+    }
+
+    @Test
+    public void testApplyRepeatingIndefinitely_nonRepeatingOriginal() {
+        VibrationEffect oneshot = VibrationEffect.createOneShot(100, DEFAULT_AMPLITUDE);
+        doTestApplyRepeatingWithNonRepeatingOriginal(oneshot);
+
+        VibrationEffect predefined = VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK);
+        doTestApplyRepeatingWithNonRepeatingOriginal(predefined);
+
+        VibrationEffect primitives = VibrationEffect.startComposition()
+                .addPrimitive(VibrationEffect.Composition.PRIMITIVE_CLICK)
+                .addPrimitive(VibrationEffect.Composition.PRIMITIVE_TICK, 1, 100)
+                .compose();
+        doTestApplyRepeatingWithNonRepeatingOriginal(primitives);
+
+        VibrationEffect legacyWaveform = VibrationEffect.createWaveform(
+                new long[]{1, 2, 3}, new int[]{1, 2, 3}, -1);
+        doTestApplyRepeatingWithNonRepeatingOriginal(legacyWaveform);
+
+        // Test a mix of segments ending in a delay, for completeness.
+        doTestApplyRepeatingWithNonRepeatingOriginal(VibrationEffect.startComposition()
+                .addEffect(oneshot)
+                .addEffect(predefined)
+                .addEffect(primitives)
+                .addEffect(legacyWaveform)
+                .addOffDuration(Duration.ofMillis(1000))
+                .compose());
+    }
+
+    @Test
+    public void testApplyRepeatingIndefinitely_repeatingOriginalWaveform() {
+        // The delay parameter has no effect when the effect is already repeating.
+        int delayMs = 999;
+        VibrationEffect waveformNoRepeat = VibrationEffect.createWaveform(
+                new long[]{1, 2, 3}, new int[]{1, 2, 3}, -1);
+        VibrationEffect waveformFullRepeat = VibrationEffect.createWaveform(
+                new long[]{1, 2, 3}, new int[]{1, 2, 3}, 0);
+        assertEquals(waveformFullRepeat,
+                waveformFullRepeat.applyRepeatingIndefinitely(true, delayMs));
+        assertEquals(waveformNoRepeat,
+                waveformFullRepeat.applyRepeatingIndefinitely(false, delayMs));
+
+        VibrationEffect waveformOffsetRepeat = VibrationEffect.createWaveform(
+                new long[]{1, 2, 3}, new int[]{1, 2, 3}, 1);
+        assertEquals(waveformOffsetRepeat,
+                waveformOffsetRepeat.applyRepeatingIndefinitely(true, delayMs));
+        assertEquals(waveformNoRepeat,
+                waveformOffsetRepeat.applyRepeatingIndefinitely(false, delayMs));
+    }
+
+    @Test
+    public void testApplyRepeatingIndefinitely_repeatingOriginalComposition() {
+        // The delay parameter has no effect when the effect is already repeating.
+        int delayMs = 999;
+        VibrationEffect innerEffect = VibrationEffect.startComposition()
+                .addPrimitive(VibrationEffect.Composition.PRIMITIVE_CLICK)
+                .addPrimitive(VibrationEffect.Composition.PRIMITIVE_TICK)
+                .compose();
+
+        VibrationEffect repeatingOriginal = VibrationEffect.startComposition()
+                .repeatEffectIndefinitely(innerEffect)
+                .compose();
+        assertEquals(repeatingOriginal,
+                repeatingOriginal.applyRepeatingIndefinitely(true, delayMs));
+        assertEquals(innerEffect,
+                repeatingOriginal.applyRepeatingIndefinitely(false, delayMs));
+
+        VibrationEffect offsetOriginal = VibrationEffect.startComposition()
+                .addPrimitive(VibrationEffect.Composition.PRIMITIVE_THUD)
+                .repeatEffectIndefinitely(innerEffect)
+                .compose();
+        assertEquals(offsetOriginal,
+                offsetOriginal.applyRepeatingIndefinitely(true, delayMs));
+        assertEquals(VibrationEffect.startComposition()
+                .addPrimitive(VibrationEffect.Composition.PRIMITIVE_THUD)
+                .addPrimitive(VibrationEffect.Composition.PRIMITIVE_CLICK)
+                .addPrimitive(VibrationEffect.Composition.PRIMITIVE_TICK)
+                .compose(),
+                offsetOriginal.applyRepeatingIndefinitely(false, delayMs));
+    }
 
     @Test
     public void testDuration() {
diff --git a/core/tests/coretests/src/android/print/IPrintManagerParametersTest.java b/core/tests/coretests/src/android/print/IPrintManagerParametersTest.java
index 3766cd4..c25aa51 100644
--- a/core/tests/coretests/src/android/print/IPrintManagerParametersTest.java
+++ b/core/tests/coretests/src/android/print/IPrintManagerParametersTest.java
@@ -41,11 +41,11 @@
 import android.print.test.services.PrinterDiscoverySessionCallbacks;
 import android.print.test.services.StubbablePrinterDiscoverySession;
 import android.printservice.recommendation.IRecommendationsChangeListener;
-import android.support.test.uiautomator.UiDevice;
 
 import androidx.test.filters.LargeTest;
 import androidx.test.filters.MediumTest;
 import androidx.test.runner.AndroidJUnit4;
+import androidx.test.uiautomator.UiDevice;
 
 import org.junit.Before;
 import org.junit.Test;
diff --git a/core/tests/coretests/src/android/view/accessibility/TEST_MAPPING b/core/tests/coretests/src/android/view/accessibility/TEST_MAPPING
new file mode 100644
index 0000000..1c67399
--- /dev/null
+++ b/core/tests/coretests/src/android/view/accessibility/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "imports": [
+    {
+      "path": "frameworks/base/services/accessibility/TEST_MAPPING"
+    }
+  ]
+}
diff --git a/core/tests/coretests/src/android/widget/FloatingToolbarUtils.java b/core/tests/coretests/src/android/widget/FloatingToolbarUtils.java
index 2d3ed95..4ff1065 100644
--- a/core/tests/coretests/src/android/widget/FloatingToolbarUtils.java
+++ b/core/tests/coretests/src/android/widget/FloatingToolbarUtils.java
@@ -20,12 +20,12 @@
 import static com.google.common.truth.Truth.assertWithMessage;
 
 import android.content.res.Resources;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.BySelector;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.Until;
 
 import androidx.test.InstrumentationRegistry;
+import androidx.test.uiautomator.By;
+import androidx.test.uiautomator.BySelector;
+import androidx.test.uiautomator.UiDevice;
+import androidx.test.uiautomator.Until;
 
 import com.android.internal.R;
 
diff --git a/core/tests/coretests/src/android/widget/TextViewActivityTest.java b/core/tests/coretests/src/android/widget/TextViewActivityTest.java
index 659cd98..9cf2e42 100644
--- a/core/tests/coretests/src/android/widget/TextViewActivityTest.java
+++ b/core/tests/coretests/src/android/widget/TextViewActivityTest.java
@@ -67,9 +67,6 @@
 import android.content.Intent;
 import android.graphics.drawable.Icon;
 import android.os.Bundle;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.Until;
 import android.text.InputType;
 import android.text.Selection;
 import android.text.Spannable;
@@ -95,6 +92,9 @@
 import androidx.test.filters.Suppress;
 import androidx.test.rule.ActivityTestRule;
 import androidx.test.runner.AndroidJUnit4;
+import androidx.test.uiautomator.By;
+import androidx.test.uiautomator.UiDevice;
+import androidx.test.uiautomator.Until;
 
 import com.android.frameworks.coretests.R;
 
diff --git a/core/tests/coretests/src/android/window/BackNavigationTest.java b/core/tests/coretests/src/android/window/BackNavigationTest.java
index d6145eb..a66fe26 100644
--- a/core/tests/coretests/src/android/window/BackNavigationTest.java
+++ b/core/tests/coretests/src/android/window/BackNavigationTest.java
@@ -26,12 +26,12 @@
 import android.app.EmptyActivity;
 import android.app.Instrumentation;
 import android.os.RemoteException;
-import android.support.test.uiautomator.UiDevice;
 
 import androidx.lifecycle.Lifecycle;
 import androidx.test.core.app.ActivityScenario;
 import androidx.test.ext.junit.rules.ActivityScenarioRule;
 import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.uiautomator.UiDevice;
 
 import org.junit.Before;
 import org.junit.Rule;
diff --git a/core/tests/coretests/src/com/android/internal/accessibility/TEST_MAPPING b/core/tests/coretests/src/com/android/internal/accessibility/TEST_MAPPING
new file mode 100644
index 0000000..1c67399
--- /dev/null
+++ b/core/tests/coretests/src/com/android/internal/accessibility/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "imports": [
+    {
+      "path": "frameworks/base/services/accessibility/TEST_MAPPING"
+    }
+  ]
+}
diff --git a/core/tests/ddm/Android.bp b/core/tests/ddm/Android.bp
new file mode 100644
index 0000000..818ea8b
--- /dev/null
+++ b/core/tests/ddm/Android.bp
@@ -0,0 +1,41 @@
+//
+// Copyright (C) 2023 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 {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "frameworks_base_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["frameworks_base_license"],
+}
+
+java_test_host {
+    name: "frameworks-base-ddm-unittests",
+    srcs: [
+        "java/android/os/DdmSyncStateTest.java",
+        ":framework-android-os-unit-testable-src",
+    ],
+    static_libs: [
+        "junit",
+    ],
+    test_options: {
+        unit_test: true,
+    },
+    test_suites: [
+        "cts",
+    ],
+}
diff --git a/core/tests/ddm/java/android/os/DdmSyncStateTest.java b/core/tests/ddm/java/android/os/DdmSyncStateTest.java
new file mode 100644
index 0000000..8274ce4
--- /dev/null
+++ b/core/tests/ddm/java/android/os/DdmSyncStateTest.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2023 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.os.test;
+
+import android.os.DdmSyncState;
+import android.os.DdmSyncState.Stage;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Test DdmSyncState, the Android app stage boot sync system for DDM Client.
+ */
+
+public class DdmSyncStateTest {
+
+    @Test
+    public void testNoCycle() {
+        DdmSyncState.reset();
+        try {
+            DdmSyncState.next(Stage.Attach);
+            DdmSyncState.next(Stage.Bind);
+            DdmSyncState.next(Stage.Named);
+            DdmSyncState.next(Stage.Debugger);
+            DdmSyncState.next(Stage.Running);
+
+            // Cycling back here which is not allowed
+            DdmSyncState.next(Stage.Attach);
+            Assert.fail("Going back to attach should have failed");
+        } catch (IllegalStateException ignored) {
+
+        }
+    }
+
+    @Test
+    public void testDebuggerFlow() {
+        DdmSyncState.reset();
+        DdmSyncState.next(Stage.Attach);
+        DdmSyncState.next(Stage.Bind);
+        DdmSyncState.next(Stage.Named);
+        DdmSyncState.next(Stage.Debugger);
+        DdmSyncState.next(Stage.Running);
+        Assert.assertEquals(Stage.Running, DdmSyncState.getStage());
+
+    }
+
+    @Test
+    public void testNoDebugFlow() {
+        DdmSyncState.reset();
+        DdmSyncState.next(Stage.Attach);
+        DdmSyncState.next(Stage.Bind);
+        DdmSyncState.next(Stage.Named);
+        // Notice how Stage.Debugger stage is skipped
+        DdmSyncState.next(Stage.Running);
+        Assert.assertEquals(Stage.Running, DdmSyncState.getStage());
+    }
+}
diff --git a/core/tests/mockingcoretests/Android.bp b/core/tests/mockingcoretests/Android.bp
index 96811be..29d7902 100644
--- a/core/tests/mockingcoretests/Android.bp
+++ b/core/tests/mockingcoretests/Android.bp
@@ -40,7 +40,6 @@
         "platform-test-annotations",
         "truth-prebuilt",
         "testables",
-        "ub-uiautomator",
     ],
 
     libs: [
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index 40cb7f2..addd17b 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -528,6 +528,10 @@
         <permission name="android.permission.INTERACT_ACROSS_USERS"/>
     </privapp-permissions>
 
+    <privapp-permissions package="com.android.soundpicker">
+        <permission name="android.permission.INTERACT_ACROSS_USERS" />
+    </privapp-permissions>
+
     <privapp-permissions package="com.android.tv">
         <permission name="android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE"/>
         <permission name="android.permission.DVB_DEVICE"/>
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentAnimationRunner.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentAnimationRunner.java
index b917ac8..d9b73a8 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentAnimationRunner.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentAnimationRunner.java
@@ -83,10 +83,7 @@
     }
 
     @Override
-    public void onAnimationCancelled(boolean isKeyguardOccluded) {
-        if (TaskFragmentAnimationController.DEBUG) {
-            Log.v(TAG, "onAnimationCancelled: isKeyguardOccluded=" + isKeyguardOccluded);
-        }
+    public void onAnimationCancelled() {
         mHandler.post(this::cancelAnimation);
     }
 
diff --git a/libs/WindowManager/Shell/res/values-af/strings.xml b/libs/WindowManager/Shell/res/values-af/strings.xml
index de4a225..36619b7 100644
--- a/libs/WindowManager/Shell/res/values-af/strings.xml
+++ b/libs/WindowManager/Shell/res/values-af/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Beweeg na regs onder"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>-instellings"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Maak borrel toe"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Moenie borrels wys nie"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Moenie dat gesprek \'n borrel word nie"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Klets met borrels"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nuwe gesprekke verskyn as swerwende ikone, of borrels Tik op borrel om dit oop te maak. Sleep om dit te skuif."</string>
diff --git a/libs/WindowManager/Shell/res/values-am/strings.xml b/libs/WindowManager/Shell/res/values-am/strings.xml
index 21172e2..3d0ec32 100644
--- a/libs/WindowManager/Shell/res/values-am/strings.xml
+++ b/libs/WindowManager/Shell/res/values-am/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"á‰łá‰œáŠ›á‹áŠ• ቀኝ á‹«áŠ•á‰€áˆłá‰…áˆ±"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"ዹ<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> á‰…áŠ•á‰„áˆźá‰œ"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"አሹፋን አሰናቄቔ"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"ዓሹፋ አቔፍጠር"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"ውይይቶቜን በአሹፋ አታሳይ"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"አሚፋዎቜን በመጠቀም ይወያዩ"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"አá‹Čሔ ውይይቶቜ ኄንደ ተንሳፋፊ አዶዎቜ ወይም አሚፋዎቜ ሆነው á‹­á‰łá‹«áˆ‰áą አሹፋን ለመክፈቔ መታ á‹«á‹”áˆ­áŒ‰áą ለመውሰዔ á‹­áŒŽá‰”á‰±á‰”áą"</string>
diff --git a/libs/WindowManager/Shell/res/values-ar/strings.xml b/libs/WindowManager/Shell/res/values-ar/strings.xml
index a714b49..e311f66 100644
--- a/libs/WindowManager/Shell/res/values-ar/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ar/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"نقل Ű„Ù„Ù‰ ŰŁŰłÙÙ„ Ű§Ù„ÙŠŰłŰ§Ű±"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Ű„ŰčۯۧۯۧŰȘ <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Ű„ŰșÙ„Ű§Ù‚ ÙÙ‚Ű§ŰčŰ© Ű§Ù„Ù…Ű­Ű§ŰŻŰ«Ű©"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"ŰčŰŻÙ… Ű„ŰžÙ‡Ű§Ű± ÙÙ‚Ű§ŰčۧŰȘ Ű§Ù„Ù…Ű­Ű§ŰŻŰ«Ű§ŰȘ"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"ŰčŰŻÙ… Űč۱۶ Ű§Ù„Ù…Ű­Ű§ŰŻŰ«Ű© ÙƒÙÙ‚Ű§ŰčŰ© Ù…Ű­Ű§ŰŻŰ«Ű©"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Ű§Ù„ŰŻŰ±ŰŻŰŽŰ© ۚۧ۳ŰȘŰźŰŻŰ§Ù… ÙÙ‚Ű§ŰčۧŰȘ Ű§Ù„Ù…Ű­Ű§ŰŻŰ«Ű§ŰȘ"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"ŰȘŰžÙ‡Ű± Ű§Ù„Ù…Ű­Ű§ŰŻŰ«Ű§ŰȘ Ű§Ù„ŰŹŰŻÙŠŰŻŰ© ÙƒŰ±Ù…ÙˆŰČ ŰčŰ§ŰŠÙ…Ű© ŰŁÙˆ ÙƒÙÙ‚Ű§ŰčۧŰȘ. Ű§Ù†Ù‚Ű± لفŰȘŰ­ ÙÙ‚Ű§ŰčŰ© Ű§Ù„Ù…Ű­Ű§ŰŻŰ«Ű©ŰŒ ÙˆŰ§ŰłŰ­ŰšÙ‡Ű§ لŰȘŰ­Ű±ÙŠÙƒÙ‡Ű§."</string>
@@ -109,5 +110,6 @@
     <string name="screenshot_text" msgid="1477704010087786671">"Ù„Ù‚Ű·Ű© ێۧێ۩"</string>
     <string name="close_text" msgid="4986518933445178928">"Ű„ŰșÙ„Ű§Ù‚"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Ű„ŰșÙ„Ű§Ù‚ Ű§Ù„Ù‚Ű§ŰŠÙ…Ű©"</string>
-    <string name="expand_menu_text" msgid="3847736164494181168">"فŰȘŰ­ Ű§Ù„Ù‚Ű§ŰŠÙ…Ű©"</string>
+    <!-- no translation found for expand_menu_text (3847736164494181168) -->
+    <skip />
 </resources>
diff --git a/libs/WindowManager/Shell/res/values-as/strings.xml b/libs/WindowManager/Shell/res/values-as/strings.xml
index 6d86747..8991588 100644
--- a/libs/WindowManager/Shell/res/values-as/strings.xml
+++ b/libs/WindowManager/Shell/res/values-as/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"àŠ€àŠČà§° àŠžà§‹àŠàŠ«àŠŸàŠČে àŠšàŠżàŠŻàŠŒàŠ•"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> àŠ›à§‡àŠŸàŠżàŠ‚"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"àŠŹàŠŸàŠŹàŠČ àŠ…àŠ—à§à§°àŠŸàŠčà§àŠŻ àŠ•à§°àŠ•"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"àŠŹàŠŸàŠŹàŠČ àŠ•à§°àŠŸàŠŸà§‹ àŠŹàŠšà§àŠ§ àŠ•à§°àŠ•"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"àŠŹàŠŸà§°à§àŠ€àŠŸàŠČàŠŸàŠȘ àŠŹàŠŸàŠŹàŠČ àŠšàŠ•à§°àŠżàŠŹ"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Bubbles àŠŹà§àŠŻà§±àŠčàŠŸà§° àŠ•à§°àŠż àŠšàŠŸàŠŸ àŠ•à§°àŠ•"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"àŠšàŠ€à§àŠš àŠŹàŠŸà§°à§àŠ€àŠŸàŠČàŠŸàŠȘ àŠ‰àŠȘàŠ™àŠż àŠ„àŠ•àŠŸ àŠšàŠżàŠčà§àŠšàŠžàŠźà§‚àŠč àŠ…àŠ„àŠŹàŠŸ bubbles àŠčàŠżàŠšàŠŸàŠȘে àŠȘà§à§°àŠŠàŠ°à§àŠ¶àŠżàŠ€ àŠčàŠŻàŠŒà„€ Bubbles àŠ–à§àŠČàŠżàŠŹàŠČৈ àŠŸàŠżàŠȘàŠ•à„€ àŠàŠ‡àŠŸà§‹ àŠžà§àŠ„àŠŸàŠšàŠŸàŠšà§àŠ€à§° àŠ•à§°àŠżàŠŹàŠČৈ àŠŸàŠŸàŠšàŠż àŠšàŠżàŠŻàŠŒàŠ•à„€"</string>
diff --git a/libs/WindowManager/Shell/res/values-az/strings.xml b/libs/WindowManager/Shell/res/values-az/strings.xml
index 7c66282..0efa3b5 100644
--- a/libs/WindowManager/Shell/res/values-az/strings.xml
+++ b/libs/WindowManager/Shell/res/values-az/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Aßağıya sağa köçürün"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ayarları"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Yumrucuğu ləğv edin"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Yumrucuqları dayandırın"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Söhbəti yumrucuqda göstərmə"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Yumrucuqlardan istifadə edərək söhbət edin"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Yeni söhbətlər üzən nißanlar və ya yumrucuqlar kimi görünür. Yumrucuğu açmaq üçün toxunun. Hərəkət etdirmək üçün sürüßdürün."</string>
diff --git a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml
index 8de9d11..a010a98 100644
--- a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Premesti dole desno"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Podešavanja za <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Odbaci oblačić"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Bez oblačića"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ne koristi oblačiće za konverzaciju"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Ćaskajte u oblačićima"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nove konverzacije se prikazuju kao plutajuće ikone ili oblačići. Dodirnite da biste otvorili oblačić. Prevucite da biste ga premestili."</string>
diff --git a/libs/WindowManager/Shell/res/values-be/strings.xml b/libs/WindowManager/Shell/res/values-be/strings.xml
index 3d99514..e7d22e0 100644
--- a/libs/WindowManager/Shell/res/values-be/strings.xml
+++ b/libs/WindowManager/Shell/res/values-be/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"ĐŸĐ”Ń€Đ°ĐŒŃŃŃ†Ń–Ń†ŃŒ праĐČĐ”Đč і ĐœŃ–Đ¶ŃĐč"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"ĐĐ°Đ»Đ°ĐŽŃ‹ \"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>\""</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"ĐĐŽŃ…Ń–Đ»Ń–Ń†ŃŒ апаĐČŃŃˆŃ‡ŃĐœĐœĐ”"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"ВыĐșĐ»ŃŽŃ‡Ń‹Ń†ŃŒ ŃƒŃĐżĐ»Ń‹ĐČĐ°Đ»ŃŒĐœŃ‹Ń апаĐČŃŃˆŃ‡ŃĐœĐœŃ–"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"ĐĐ” паĐșазĐČаць Ń€Đ°Đ·ĐŒĐŸĐČу ў ĐČŃ‹ĐłĐ»ŃĐŽĐ·Đ” ўсплыĐČĐ°Đ»ŃŒĐœŃ‹Ń… апаĐČŃŃˆŃ‡ŃĐœĐœŃŃž"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"УсплыĐČĐ°Đ»ŃŒĐœŃ‹Ń апаĐČŃŃˆŃ‡ŃĐœĐœŃ–"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"ĐĐŸĐČыя Ń€Đ°Đ·ĐŒĐŸĐČы Đ±ŃƒĐŽŃƒŃ†ŃŒ паĐșазĐČацца яĐș Ń€ŃƒŃ…ĐŸĐŒŃ‹Ń Đ·ĐœĐ°Ń‡Đșі ці ўсплыĐČĐ°Đ»ŃŒĐœŃ‹Ń апаĐČŃŃˆŃ‡ŃĐœĐœŃ–. ĐĐ°Ń†Ń–ŃĐœŃ–Ń†Đ”, Đșаб аЎĐșрыць ŃƒŃĐżĐ»Ń‹ĐČĐ°Đ»ŃŒĐœĐ°Đ” апаĐČŃŃˆŃ‡ŃĐœĐœĐ”. ĐŸĐ”Ń€Đ°Ń†ŃĐłĐœŃ–Ń†Đ” ŃĐłĐŸ, Đșаб ĐżĐ”Ń€Đ°ĐŒŃŃŃ†Ń–Ń†ŃŒ."</string>
diff --git a/libs/WindowManager/Shell/res/values-bg/strings.xml b/libs/WindowManager/Shell/res/values-bg/strings.xml
index 0473f27..ad26350 100644
--- a/libs/WindowManager/Shell/res/values-bg/strings.xml
+++ b/libs/WindowManager/Shell/res/values-bg/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"ĐŸŃ€Đ”ĐŒĐ”ŃŃ‚ĐČĐ°ĐœĐ” ĐŽĐŸĐ»Ńƒ ĐČĐŽŃŃĐœĐŸ"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž за <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"ОтхĐČŃŠŃ€Đ»ŃĐœĐ” ĐœĐ° Đ±Đ°Đ»ĐŸĐœŃ‡Đ”Ń‚Đ°Ń‚Đ°"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"БДз Đ±Đ°Đ»ĐŸĐœŃ‡Đ”Ń‚Đ°"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"БДз Đ±Đ°Đ»ĐŸĐœŃ‡Đ”Ń‚Đ° за Ń€Đ°Đ·ĐłĐŸĐČĐŸŃ€Đ°"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Чат с Đ±Đ°Đ»ĐŸĐœŃ‡Đ”Ń‚Đ°"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"ĐĐŸĐČОтД Ń€Đ°Đ·ĐłĐŸĐČĐŸŃ€Đž сД ĐżĐŸĐșазĐČат ĐșĐ°Ń‚ĐŸ плаĐČащо ĐžĐșĐŸĐœĐž, ОлО Đ±Đ°Đ»ĐŸĐœŃ‡Đ”Ń‚Đ°. Đ”ĐŸĐșĐŸŃĐœĐ”Ń‚Đ” Đ±Đ°Đ»ĐŸĐœŃ‡Đ”, за Ўа ĐłĐŸ ĐŸŃ‚ĐČĐŸŃ€ĐžŃ‚Đ”, ОлО ĐłĐŸ ĐżĐ»ŃŠĐ·ĐœĐ”Ń‚Đ”, за Ўа ĐłĐŸ ĐżŃ€Đ”ĐŒĐ”ŃŃ‚ĐžŃ‚Đ”."</string>
diff --git a/libs/WindowManager/Shell/res/values-bn/strings.xml b/libs/WindowManager/Shell/res/values-bn/strings.xml
index 4fe1be0..eb23dcd 100644
--- a/libs/WindowManager/Shell/res/values-bn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-bn/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"àŠšàŠżàŠšà§‡ àŠĄàŠŸàŠš àŠŠàŠżàŠ•à§‡ àŠžàŠ°àŠŸàŠš"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> àŠžà§‡àŠŸàŠżàŠ‚àŠž"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"àŠŹàŠŸàŠŹàŠČ àŠ–àŠŸàŠ°àŠżàŠœ àŠ•àŠ°à§àŠš"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"àŠŹàŠŸàŠŹàŠČ àŠ•àŠ°àŠŸ àŠŹàŠšà§àŠ§ àŠ•àŠ°à§àŠš"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"àŠ•àŠ„à§‹àŠȘàŠ•àŠ„àŠš àŠŹàŠŸàŠŹàŠČ àŠčàŠżàŠžà§‡àŠŹà§‡ àŠŠà§‡àŠ–àŠŸàŠŹà§‡ àŠšàŠŸ"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"àŠŹàŠŸàŠŹàŠČ àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ° àŠ•àŠ°à§‡ àŠšà§àŠŻàŠŸàŠŸ àŠ•àŠ°à§àŠš"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"àŠšàŠ€à§àŠš àŠ•àŠ„à§‹àŠȘàŠ•àŠ„àŠš àŠ­à§‡àŠžà§‡ àŠ„àŠŸàŠ•àŠŸ àŠ†àŠ‡àŠ•àŠš àŠŹàŠŸ àŠŹàŠŸàŠŹàŠČ àŠčàŠżàŠžà§‡àŠŹà§‡ àŠŠà§‡àŠ–àŠŸàŠšà§‹ àŠčàŠŻàŠŒà„€ àŠŹàŠŸàŠŹàŠČ àŠ–à§àŠČàŠ€à§‡ àŠŸà§àŠŻàŠŸàŠȘ àŠ•àŠ°à§àŠšà„€ àŠžà§‡àŠŸàŠż àŠžàŠ°àŠŸàŠ€à§‡ àŠ§àŠ°à§‡ àŠŸà§‡àŠšà§‡ àŠ†àŠšà§àŠšà„€"</string>
diff --git a/libs/WindowManager/Shell/res/values-bs/strings.xml b/libs/WindowManager/Shell/res/values-bs/strings.xml
index b39b497..1fbfab4 100644
--- a/libs/WindowManager/Shell/res/values-bs/strings.xml
+++ b/libs/WindowManager/Shell/res/values-bs/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Pomjerite dolje desno"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Postavke aplikacije <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Odbaci oblačić"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Zaustavi oblačiće"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Nemoj prikazivati razgovor u oblačićima"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chatajte koristeći oblačiće"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Novi razgovori se prikazuju kao plutajuće ikone ili oblačići. Dodirnite da otvorite oblačić. Prevucite da ga premjestite."</string>
diff --git a/libs/WindowManager/Shell/res/values-ca/strings.xml b/libs/WindowManager/Shell/res/values-ca/strings.xml
index fe76e73..3f041f43 100644
--- a/libs/WindowManager/Shell/res/values-ca/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ca/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Mou a baix a la dreta"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Configuració de l\'aplicació <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Ignora la bombolla"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"No mostris com a bombolla"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"No mostris la conversa com a bombolla"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Xateja amb bombolles"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Les converses noves es mostren com a icones flotants o bombolles. Toca per obrir una bombolla. Arrossega-la per moure-la."</string>
diff --git a/libs/WindowManager/Shell/res/values-cs/strings.xml b/libs/WindowManager/Shell/res/values-cs/strings.xml
index 70e2970..c734ef8 100644
--- a/libs/WindowManager/Shell/res/values-cs/strings.xml
+++ b/libs/WindowManager/Shell/res/values-cs/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Pƙesunout vpravo dolƯ"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Nastavení <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Zavƙít bublinu"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Nezobrazovat bubliny"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Nezobrazovat konverzaci v bublinách"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chatujte pomocí bublin"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nové konverzace se zobrazují jako plovoucí ikony, neboli bubliny. Klepnutím bublinu otevƙete. PƙetaĆŸením ji posunete."</string>
diff --git a/libs/WindowManager/Shell/res/values-da/strings.xml b/libs/WindowManager/Shell/res/values-da/strings.xml
index c91cd7a..036bdc1 100644
--- a/libs/WindowManager/Shell/res/values-da/strings.xml
+++ b/libs/WindowManager/Shell/res/values-da/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Flyt ned til højre"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Indstillinger for <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Afvis boble"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Stop med at vise bobler"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Vis ikke samtaler i bobler"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chat ved hjælp af bobler"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nye samtaler vises som svævende ikoner eller bobler. Tryk for at åbne boblen. Træk for at flytte den."</string>
diff --git a/libs/WindowManager/Shell/res/values-de/strings.xml b/libs/WindowManager/Shell/res/values-de/strings.xml
index 6ce475a..ec1b9d3 100644
--- a/libs/WindowManager/Shell/res/values-de/strings.xml
+++ b/libs/WindowManager/Shell/res/values-de/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Nach unten rechts verschieben"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Einstellungen für <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Bubble schließen"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Keine Bubbles zulassen"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Unterhaltung nicht als Bubble anzeigen"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Bubbles zum Chatten verwenden"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Neue Unterhaltungen erscheinen als unverankerte Symbole, „Bubbles“ genannt. Wenn du eine Bubble öffnen möchtest, tippe sie an. Wenn du sie verschieben möchtest, zieh an ihr."</string>
diff --git a/libs/WindowManager/Shell/res/values-el/strings.xml b/libs/WindowManager/Shell/res/values-el/strings.xml
index ab5c44e..11f9dd1 100644
--- a/libs/WindowManager/Shell/res/values-el/strings.xml
+++ b/libs/WindowManager/Shell/res/values-el/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"ΜετακÎŻνηση κÎŹτω δεξιÎŹ"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"ΡυθμÎŻσεις <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"ΠαρÎŹβλ. για συννεφ."</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Να μην εμφανÎŻζει συννεφÎŹκια"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Να μην γÎŻνει προβολÎź της συζÎźτησης σε συννεφÎŹκια."</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"ΣυζητÎźστε χρησιμοποιώντας συννεφÎŹκια."</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Οι νέες συζητÎźσεις εμφανÎŻζονται ως κινούμενα εικονÎŻδια Îź συννεφÎŹκια. ΠατÎźστε για να ανοÎŻξετε το συννεφÎŹκι. Σύρετε για να το μετακινÎźσετε."</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml
index ea91014..216d0c1 100644
--- a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Move bottom right"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> settings"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Dismiss bubble"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Don’t bubble"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Don’t bubble conversation"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chat using bubbles"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"New conversations appear as floating icons, or bubbles. Tap to open bubble. Drag to move it."</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rCA/strings.xml b/libs/WindowManager/Shell/res/values-en-rCA/strings.xml
index 01bdf95..e3795cc 100644
--- a/libs/WindowManager/Shell/res/values-en-rCA/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rCA/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Move bottom right"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> settings"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Dismiss bubble"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Don’t bubble"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Don’t bubble conversation"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chat using bubbles"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"New conversations appear as floating icons, or bubbles. Tap to open bubble. Drag to move it."</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml
index ea91014..216d0c1 100644
--- a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Move bottom right"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> settings"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Dismiss bubble"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Don’t bubble"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Don’t bubble conversation"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chat using bubbles"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"New conversations appear as floating icons, or bubbles. Tap to open bubble. Drag to move it."</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml
index ea91014..216d0c1 100644
--- a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Move bottom right"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> settings"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Dismiss bubble"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Don’t bubble"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Don’t bubble conversation"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chat using bubbles"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"New conversations appear as floating icons, or bubbles. Tap to open bubble. Drag to move it."</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rXC/strings.xml b/libs/WindowManager/Shell/res/values-en-rXC/strings.xml
index f6dac79..b762b80 100644
--- a/libs/WindowManager/Shell/res/values-en-rXC/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rXC/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‎‎Move bottom right‎‏‎‎‏‎"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‎‎‏‏‎‎‏‎‏‏‏‏‎‏‏‎‏‏‏‎‏‎‏‎‏‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‎‎‏‏‏‎‏‎‎‎‎‎‎‏‎‎‏‏‎<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ settings‎‏‎‎‏‎"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‏‎‏‎‏‎‏‏‎‏‎‎‏‏‎‏‎‏‎‏‏‎‏‏‏‏‏‏‎‎‏‎‏‎‏‏‎‎‏‎‏‎‏‎‏‎‎‎‏‏‏‎‎Dismiss bubble‎‏‎‎‏‎"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‏‎‎‎‏‎‎‎‏‎‏‏‏‎‎‎‏‎‏‏‎‏‎‎‏‎‏‎‏‏‏‎‏‏‎‎‎‎‎‎‏‏‎‎‏‏‎‏‎‎‎‏‏‏‎Don’t bubble‎‏‎‎‏‎"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‎‏‎‎‏‏‎‏‎‏‎‏‎‏‏‏‏‎‏‎‎‏‎‏‏‎‎‎‏‎‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‎‎‏‎‎‏‏‎‏‎‏‎Don’t bubble conversation‎‏‎‎‏‎"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‎‏‎‏‎‎‎‎‎‏‏‏‎‏‏‎‏‏‏‏‏‏‎‎‏‏‏‎‎‎‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎Chat using bubbles‎‏‎‎‏‎"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‎‎‎‎‎‎‏‏‏‎‎‎‎‎‎‏‎‏‎‏‎‏‎‎‎‎‏‏‏‎‎‏‎‏‏‎‏‏‎‎‏‎‎‎‏‎‎‏‎‏‎‏‏‏‏‎New conversations appear as floating icons, or bubbles. Tap to open bubble. Drag to move it.‎‏‎‎‏‎"</string>
diff --git a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml
index 0190ea8..628cf7f 100644
--- a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml
+++ b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Ubicar abajo a la derecha"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Configuración de <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Descartar burbuja"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"No mostrar burbujas"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"No mostrar la conversación en burbuja"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chat con burbujas"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Las conversaciones nuevas aparecen como elementos flotantes o burbujas. Presiona para abrir la burbuja. Arrástrala para moverla."</string>
diff --git a/libs/WindowManager/Shell/res/values-es/strings.xml b/libs/WindowManager/Shell/res/values-es/strings.xml
index ea44bea..cfa7865 100644
--- a/libs/WindowManager/Shell/res/values-es/strings.xml
+++ b/libs/WindowManager/Shell/res/values-es/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Mover abajo a la derecha"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Ajustes de <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Cerrar burbuja"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"No mostrar burbujas"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"No mostrar conversación en burbuja"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chatea con burbujas"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Las conversaciones nuevas aparecen como iconos flotantes llamados \"burbujas\". Toca una burbuja para abrirla. Arrástrala para moverla."</string>
diff --git a/libs/WindowManager/Shell/res/values-et/strings.xml b/libs/WindowManager/Shell/res/values-et/strings.xml
index 90feff3..666aa46 100644
--- a/libs/WindowManager/Shell/res/values-et/strings.xml
+++ b/libs/WindowManager/Shell/res/values-et/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Teisalda alla paremale"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Rakenduse <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> seaded"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Sule mull"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Ära kuva mulle"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ära kuva vestlust mullina"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Vestelge mullide abil"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Uued vestlused kuvatakse hõljuvate ikoonidena ehk mullidena. Puudutage mulli avamiseks. Lohistage mulli, et seda liigutada."</string>
diff --git a/libs/WindowManager/Shell/res/values-eu/strings.xml b/libs/WindowManager/Shell/res/values-eu/strings.xml
index de27a80..d7397f3 100644
--- a/libs/WindowManager/Shell/res/values-eu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-eu/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Eraman behealdera, eskuinetara"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> aplikazioaren ezarpenak"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Baztertu burbuila"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Ez erakutsi burbuilarik"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ez erakutsi elkarrizketak burbuila gisa"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Txateatu burbuilen bidez"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Elkarrizketa berriak ikono gainerakor edo burbuila gisa agertzen dira. Sakatu burbuila irekitzeko. Arrasta ezazu mugitzeko."</string>
diff --git a/libs/WindowManager/Shell/res/values-fa/strings.xml b/libs/WindowManager/Shell/res/values-fa/strings.xml
index 13a2ea2..5e13c3e 100644
--- a/libs/WindowManager/Shell/res/values-fa/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fa/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Ű§Ù†ŰȘÙ‚Ű§Ù„ ŰšÙ‡ ÙŸŰ§ÛŒÛŒÙ† ŰłÙ…ŰȘ Ú†ÙŸ"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"۱ۯ Ú©Ű±ŰŻÙ† ۭۚۧۚک"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"ۭۚۧۚک Ù†ŰŽŰ§Ù† ŰŻŰ§ŰŻÙ‡ Ù†ŰŽÙˆŰŻ"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ù…Ú©Ű§Ù„Ù…Ù‡ ۯ۱ ۭۚۧۚ Ù†ŰŽŰ§Ù† ŰŻŰ§ŰŻÙ‡ Ù†ŰŽÙˆŰŻ"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"ÚŻÙŸ ۚۧۧ۳ŰȘÙŰ§ŰŻÙ‡ ۧŰČ Ű­ŰšŰ§ŰšÚ©‌Ù‡Ű§"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Ù…Ú©Ű§Ù„Ù…Ù‡‌Ù‡Ű§ÛŒ ŰŹŰŻÛŒŰŻ ŰšÙ‡‌Ű”ÙˆŰ±ŰȘ Ù†Ù…Ű§ŰŻÙ‡Ű§ÛŒ ŰŽÙ†Ű§ÙˆŰ± ÛŒŰ§ ۭۚۧۚک‌Ù‡Ű§ Ù†ŰŽŰ§Ù† ŰŻŰ§ŰŻÙ‡ می‌ŰŽÙˆÙ†ŰŻ. ŰšŰ±Ű§ÛŒ ۚۧŰČ Ú©Ű±ŰŻÙ† ۭۚۧۚک‌Ù‡Ű§ Ű¶Ű±ŰšÙ‡ ŰšŰČÙ†ÛŒŰŻ. ŰšŰ±Ű§ÛŒ ŰŹŰ§ŰšÙ‡‌ŰŹŰ§ÛŒÛŒŰŒ ŰąÙ† ۱ۧ ŰšÚ©ŰŽÛŒŰŻ."</string>
diff --git a/libs/WindowManager/Shell/res/values-fi/strings.xml b/libs/WindowManager/Shell/res/values-fi/strings.xml
index 92fa760..c047c65 100644
--- a/libs/WindowManager/Shell/res/values-fi/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fi/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Siirrä oikeaan alareunaan"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>: asetukset"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Ohita kupla"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Älä näytä puhekuplia"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Älä näytä kuplia keskusteluista"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chattaile kuplien avulla"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Uudet keskustelut näkyvät kelluvina kuvakkeina tai kuplina. Avaa kupla napauttamalla. Siirrä sitä vetämällä."</string>
diff --git a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml
index 7814b7d..6b60fdc 100644
--- a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Déplacer dans coin inf. droit"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Paramètres <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Ignorer la bulle"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Ne pas afficher de bulles"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ne pas afficher les conversations dans des bulles"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Clavarder en utilisant des bulles"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Les nouvelles conversations s\'affichent sous forme d\'icônes flottantes (de bulles). Touchez une bulle pour l\'ouvrir. Faites-la glisser pour la déplacer."</string>
@@ -109,5 +110,6 @@
     <string name="screenshot_text" msgid="1477704010087786671">"Capture d\'écran"</string>
     <string name="close_text" msgid="4986518933445178928">"Fermer"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Fermer le menu"</string>
-    <string name="expand_menu_text" msgid="3847736164494181168">"Ouvrir le menu"</string>
+    <!-- no translation found for expand_menu_text (3847736164494181168) -->
+    <skip />
 </resources>
diff --git a/libs/WindowManager/Shell/res/values-fr/strings.xml b/libs/WindowManager/Shell/res/values-fr/strings.xml
index da5b5c9..768936e 100644
--- a/libs/WindowManager/Shell/res/values-fr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fr/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Déplacer en bas à droite"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Paramètres <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Fermer la bulle"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Désactiver les info-bulles"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ne pas afficher la conversation dans une bulle"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chatter en utilisant des bulles"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Les nouvelles conversations s\'affichent sous forme d\'icônes flottantes ou de bulles. Appuyez sur la bulle pour l\'ouvrir. Faites-la glisser pour la déplacer."</string>
diff --git a/libs/WindowManager/Shell/res/values-gl/strings.xml b/libs/WindowManager/Shell/res/values-gl/strings.xml
index c08cff8..ad5629a 100644
--- a/libs/WindowManager/Shell/res/values-gl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-gl/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Mover á parte inferior dereita"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Configuración de <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Ignorar burbulla"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Non mostrar burbullas"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Non mostrar a conversa como burbulla"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chatear usando burbullas"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"As conversas novas aparecen como iconas flotantes ou burbullas. Toca para abrir a burbulla e arrastra para movela."</string>
@@ -109,5 +110,6 @@
     <string name="screenshot_text" msgid="1477704010087786671">"Captura de pantalla"</string>
     <string name="close_text" msgid="4986518933445178928">"Pechar"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"Pechar o menú"</string>
-    <string name="expand_menu_text" msgid="3847736164494181168">"Abrir menú"</string>
+    <!-- no translation found for expand_menu_text (3847736164494181168) -->
+    <skip />
 </resources>
diff --git a/libs/WindowManager/Shell/res/values-gu/strings.xml b/libs/WindowManager/Shell/res/values-gu/strings.xml
index 2a52199..29e044f 100644
--- a/libs/WindowManager/Shell/res/values-gu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-gu/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"àȘšà«€àȘšà«‡ àȘœàȘźàȘŁà«‡ àȘ–àȘžà«‡àȘĄà«‹"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> àȘžà«‡àȘŸàȘżàȘ‚àȘ—"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"àȘŹàȘŹàȘČàȘšà«‡ àȘ›à«‹àȘĄà«€ àȘŠà«‹"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"àȘŹàȘŹàȘČ àȘŹàȘ€àȘŸàȘ”àȘ¶à«‹ àȘšàȘčીàȘ‚"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"àȘ”àȘŸàȘ€àȘšà«€àȘ€àȘšà«‡ àȘŹàȘŹàȘČ àȘ•àȘ°àȘ¶à«‹ àȘšàȘčીàȘ‚"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"àȘŹàȘŹàȘČàȘšà«‹ àȘ‰àȘȘàȘŻà«‹àȘ— àȘ•àȘ°à«€àȘšà«‡ àȘšà«…àȘŸ àȘ•àȘ°à«‹"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"àȘšàȘ”ી àȘ”àȘŸàȘ€àȘšà«€àȘ€ àȘ«à«àȘČોàȘŸàȘżàȘ‚àȘ— àȘ†àȘ‡àȘ•àȘš àȘ…àȘ„àȘ”àȘŸ àȘŹàȘŹàȘČ àȘœà«‡àȘ”ી àȘŠà«‡àȘ–àȘŸàȘ¶à«‡. àȘŹàȘŹàȘČàȘšà«‡ àȘ–à«‹àȘČàȘ”àȘŸ àȘźàȘŸàȘŸà«‡ àȘŸà«…àȘȘ àȘ•àȘ°à«‹. àȘ€à«‡àȘšà«‡ àȘ–àȘžà«‡àȘĄàȘ”àȘŸ àȘźàȘŸàȘŸà«‡ àȘ–ેàȘ‚àȘšà«‹."</string>
diff --git a/libs/WindowManager/Shell/res/values-hi/strings.xml b/libs/WindowManager/Shell/res/values-hi/strings.xml
index fb5040b..1934aa5 100644
--- a/libs/WindowManager/Shell/res/values-hi/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hi/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"à€žà€Źà€žà„‡ à€šà„€à€šà„‡ à€Šà€Ÿà€ˆà€‚ à€“à€° à€Čà„‡ à€œà€Ÿà€à€‚"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> à€•à„€ à€žà„‡à€Ÿà€żà€‚à€—"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"à€Źà€Źà€Č à€–à€Ÿà€°à€żà€œ à€•à€°à„‡à€‚"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"à€Źà€Źà€Č à€čà„‹à€šà„‡ à€žà„‡ à€°à„‹à€•à„‡à€‚"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"à€Źà€Ÿà€€à€šà„€à€€ à€•à„‹ à€Źà€Źà€Č à€š à€•à€°à„‡à€‚"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"à€Źà€Źà€Čà„à€ž à€•à€Ÿ à€‡à€žà„à€€à„‡à€źà€Ÿà€Č à€•à€°à€•à„‡ à€šà„ˆà€Ÿ à€•à€°à„‡à€‚"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"à€šà€ˆ à€Źà€Ÿà€€à€šà„€à€€ à€«à€Œà„à€Čà„‹à€Ÿà€żà€‚à€— à€†à€‡à€•à„‰à€š à€Żà€Ÿ à€Źà€Źà€Čà„à€ž à€•à„€ à€€à€°à€č à€Šà€żà€–à„‡à€‚à€—à„€. à€Źà€Źà€Č à€•à„‹ à€–à„‹à€Čà€šà„‡ à€•à„‡ à€Čà€żà€ à€Ÿà„ˆà€Ș à€•à€°à„‡à€‚. à€‡à€žà„‡ à€à€• à€œà€—à€č à€žà„‡ à€Šà„‚à€žà€°à„€ à€œà€—à€č à€Čà„‡ à€œà€Ÿà€šà„‡ à€•à„‡ à€Čà€żà€ à€–à„€à€‚à€šà„‡à€‚ à€”à€° à€›à„‹à€Ąà€Œà„‡à€‚."</string>
diff --git a/libs/WindowManager/Shell/res/values-hr/strings.xml b/libs/WindowManager/Shell/res/values-hr/strings.xml
index 2535657..04a7073 100644
--- a/libs/WindowManager/Shell/res/values-hr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hr/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Premjestite u donji desni kut"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Postavke za <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Odbaci oblačić"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Ne prikazuj oblačiće"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Zaustavi razgovor u oblačićima"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Oblačići u chatu"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Novi razgovori pojavljuju se kao pomične ikone ili oblačići. Dodirnite za otvaranje oblačića. Povucite da biste ga premjestili."</string>
diff --git a/libs/WindowManager/Shell/res/values-hu/strings.xml b/libs/WindowManager/Shell/res/values-hu/strings.xml
index 7566439..045af2f 100644
--- a/libs/WindowManager/Shell/res/values-hu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hu/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Áthelyezés le és jobbra"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> beállításai"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Buborék elvetése"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Ne jelenjen meg buborékban"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ne jelenjen meg a beszélgetés buborékban"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Buborékokat használó csevegés"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Az új beszélgetések lebegƑ ikonként, vagyis buborékként jelennek meg. A buborék megnyitásához koppintson rá. Áthelyezéshez húzza a kívánt helyre."</string>
diff --git a/libs/WindowManager/Shell/res/values-hy/strings.xml b/libs/WindowManager/Shell/res/values-hy/strings.xml
index 2b20870..30499a4 100644
--- a/libs/WindowManager/Shell/res/values-hy/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hy/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"ŐŐ„ŐČեփ՞խՄՏ Ő¶Ő„Ö€Ö„Ö‡Ő ŐĄŐ»"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> – ŐŻŐĄÖ€ŐŁŐĄŐŸŐžÖ€ŐžÖ‚ŐŽŐ¶Ő„Ö€"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Ő“ŐĄŐŻŐ„ŐŹ ŐĄŐŽŐșŐ«ŐŻŐš"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Ց՞ւՔց ŐčŐżŐĄŐŹ ŐĄŐŽŐșŐ«ŐŻŐ¶Ő„Ö€Őš"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Զր՞ւՔց՚ Őčց՞ւցեՀրՄՏ ŐĄŐŽŐșŐ«ŐŻŐ« ŐżŐ„ŐœÖ„ŐžŐŸ"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Զր՞ւՔցի ŐĄŐŽŐșŐ«ŐŻŐ¶Ő„Ö€"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Նվր Պր՞ւՔցնՄր՚ ŐŻŐ°ŐĄŐ”ŐżŐ¶ŐŸŐ„Ő¶ ŐŹŐžŐČեց՞ŐČ ŐșŐĄŐżŐŻŐ„Ö€ŐĄŐŻŐ¶Ő„Ö€Ő« ŐŻŐĄŐŽ ŐĄŐŽŐșŐ«ŐŻŐ¶Ő„Ö€Ő« ŐżŐ„ŐœÖ„ŐžŐŸÖ‰ ՀŐșŐ„Ö„Ő ŐĄŐŽŐșŐ«ŐŻŐš չեցՄՏ՞ւ հածար։ Ő”ŐĄŐ·Ő„Ö„Ő ŐĄŐ”Ő¶ ŐżŐ„ŐČŐĄÖƒŐžŐ­Ő„ŐŹŐžÖ‚ հածար։"</string>
diff --git a/libs/WindowManager/Shell/res/values-in/strings.xml b/libs/WindowManager/Shell/res/values-in/strings.xml
index 5747deb..9c8b614 100644
--- a/libs/WindowManager/Shell/res/values-in/strings.xml
+++ b/libs/WindowManager/Shell/res/values-in/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Pindahkan ke kanan bawah"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Setelan <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Tutup balon"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Berhenti menampilkan balon"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Jangan gunakan percakapan balon"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chat dalam tampilan balon"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Percakapan baru muncul sebagai ikon mengambang, atau balon. Ketuk untuk membuka balon. Tarik untuk memindahkannya."</string>
diff --git a/libs/WindowManager/Shell/res/values-is/strings.xml b/libs/WindowManager/Shell/res/values-is/strings.xml
index 145d26d..1507fd6 100644
--- a/libs/WindowManager/Shell/res/values-is/strings.xml
+++ b/libs/WindowManager/Shell/res/values-is/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Færðu neðst til hægri"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Stillingar <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Loka blöðru"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Ekki sýna blöðrur"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ekki setja samtal í blöðru"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Spjalla með blöðrum"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Ný samtöl birtast sem fljótandi tákn eða blöðrur. Ýttu til að opna blöðru. Dragðu hana til að færa."</string>
diff --git a/libs/WindowManager/Shell/res/values-it/strings.xml b/libs/WindowManager/Shell/res/values-it/strings.xml
index 025646c..cd99724 100644
--- a/libs/WindowManager/Shell/res/values-it/strings.xml
+++ b/libs/WindowManager/Shell/res/values-it/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Sposta in basso a destra"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Impostazioni <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Ignora bolla"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Non mostrare i fumetti"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Non mettere la conversazione nella bolla"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chatta utilizzando le bolle"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Le nuove conversazioni vengono mostrate come icone mobili o bolle. Tocca per aprire la bolla. Trascinala per spostarla."</string>
diff --git a/libs/WindowManager/Shell/res/values-iw/strings.xml b/libs/WindowManager/Shell/res/values-iw/strings.xml
index bb3845b..21bee9f 100644
--- a/libs/WindowManager/Shell/res/values-iw/strings.xml
+++ b/libs/WindowManager/Shell/res/values-iw/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Ś”ŚąŚ‘ŚšŚ” ŚœŚ€Ś™Ś Ś” Ś”Ś™ŚžŚ Ś™ŚȘ Ś”ŚȘŚ—ŚȘڕڠڔ"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Ś”Ś’Ś“ŚšŚ•ŚȘ <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"ŚĄŚ’Ś™ŚšŚȘ Ś‘Ś•ŚąŚ”"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"ڜڜڐ Ś‘Ś•ŚąŚ•ŚȘ"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"ŚŚ™ŚŸ ŚœŚ”ŚŠŚ™Ś’ Ś‘Ś•ŚąŚ•ŚȘ ŚœŚ©Ś™Ś—Ś”"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"ŚœŚ“Ś‘Śš Ś‘Ś‘Ś•ŚąŚ•ŚȘ"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"کڙڗڕŚȘ ڗړکڕŚȘ ŚžŚ•Ś€Ś™ŚąŚ•ŚȘ Ś›ŚĄŚžŚœŚ™Ś ŚŠŚ€Ś™Ś, ڐڕ Ś‘Ś•ŚąŚ•ŚȘ. ڙک ŚœŚ”Ś§Ś™Ś© ڛړڙ ڜڀŚȘڕڗ Ś‘Ś•ŚąŚ”. ڙک ŚœŚ’ŚšŚ•Śš ڛړڙ ŚœŚ”Ś–Ś™Ś– ڐڕŚȘŚ”."</string>
@@ -92,7 +93,7 @@
     <string name="letterbox_restart_dialog_description" msgid="6096946078246557848">"ŚŚ€Ś©Śš ŚœŚ”Ś€ŚąŚ™Śœ ŚžŚ—Ś“Ś© ڐŚȘ Ś”ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś” ڛړڙ کڔڙڐ ŚȘŚ•ŚŠŚ’ Ś‘ŚŚ•Ś€ŚŸ Ś˜Ś•Ś‘ ڙڕŚȘŚš Ś‘ŚžŚĄŚš, ŚŚ‘Śœ ڙڙŚȘŚ›ŚŸ کڔڔŚȘŚ§Ś“ŚžŚ•ŚȘ کڜښ ڐڕ Ś›Śœ کڙڠڕڙ کڜڐ Ś Ś©ŚžŚš ڙڐڑړڕ"</string>
     <string name="letterbox_restart_cancel" msgid="1342209132692537805">"Ś‘Ś™Ś˜Ś•Śœ"</string>
     <string name="letterbox_restart_restart" msgid="8529976234412442973">"Ś”Ś€ŚąŚœŚ” ŚžŚ—Ś“Ś©"</string>
-    <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"ŚŚ™ŚŸ ŚœŚ”ŚŠŚ™Ś’ کڕڑ"</string>
+    <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"ŚŚ™ŚŸ ŚŠŚ•ŚšŚš ŚœŚ”ŚŠŚ™Ś’ ڐŚȘ Ś–Ś” کڕڑ"</string>
     <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ŚŚ€Ś©Śš ŚœŚ”Ś§Ś™Ś© ڔڧکڔ Ś›Ś€Ś•ŚœŚ” ڛړڙ\nŚœŚ”ŚąŚ‘Ś™Śš ڐŚȘ Ś”ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś” ŚœŚžŚ§Ś•Ś ŚŚ—Śš"</string>
     <string name="maximize_button_text" msgid="1650859196290301963">"Ś”Ś’Ś“ŚœŚ”"</string>
     <string name="minimize_button_text" msgid="271592547935841753">"ŚžŚ–ŚąŚ•Śš"</string>
diff --git a/libs/WindowManager/Shell/res/values-ja/strings.xml b/libs/WindowManager/Shell/res/values-ja/strings.xml
index 6c1bafe..9451dbb 100644
--- a/libs/WindowManager/Shell/res/values-ja/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ja/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"ćłäž‹ă«ç§»ć‹•"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ăźèš­ćźš"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"ăƒăƒ–ăƒ«ă‚’é–‰ă˜ă‚‹"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"ăƒăƒ–ăƒ«ă§èĄšç€șしăȘい"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"äŒšè©±ă‚’ăƒăƒ–ăƒ«ă§èĄšç€șしăȘい"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"ăƒăƒŁăƒƒăƒˆă§ăƒăƒ–ăƒ«ă‚’äœżă†"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"æ–°ă—ă„äŒšè©±ăŻăƒ•ăƒ­ăƒŒăƒ†ă‚Łăƒłă‚° ă‚ąă‚€ă‚łăƒłïŒˆăƒăƒ–ăƒ«ïŒ‰ăšă—ăŠèĄšç€șă•ă‚ŒăŸă™ă€‚ă‚żăƒƒăƒ—ă™ă‚‹ăšăƒăƒ–ăƒ«ăŒé–‹ăăŸă™ă€‚ăƒ‰ăƒ©ăƒƒă‚°ă—ăŠăƒăƒ–ăƒ«ă‚’ç§»ć‹•ă§ăăŸă™ă€‚"</string>
diff --git a/libs/WindowManager/Shell/res/values-ka/strings.xml b/libs/WindowManager/Shell/res/values-ka/strings.xml
index e58e67a..ab5c839 100644
--- a/libs/WindowManager/Shell/res/values-ka/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ka/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"გადაანაáƒȘვ. Ⴤვემოთ და მარჯვნივ"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>-ის პარამეჱრები"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"ბუჹჱის დაჼურვა"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"ბუჹჱის გამორთვა"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"áƒáƒ˜áƒ™áƒ áƒ«áƒáƒšáƒáƒĄ საუბრის ბუჹჱები"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"ჩეთი ბუჹჱების გამოყენებით"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"აჼალი საუბრები გამოჩნდება როგორáƒȘ მოჱივჱივე ჼაჱულები ან ბუჹჱები. ჹეეჼეთ ბუჹჱის გასაჼსნელად. გადაიჱანეთ ჩავლებით."</string>
diff --git a/libs/WindowManager/Shell/res/values-kk/strings.xml b/libs/WindowManager/Shell/res/values-kk/strings.xml
index 7c9120e..eb37b55 100644
--- a/libs/WindowManager/Shell/res/values-kk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-kk/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"ĐąÓ©ĐŒĐ”ĐœĐłŃ– ĐŸÒŁ Đ¶Đ°Ò›Ò›Đ° Đ¶Ń‹Đ»Đ¶Ń‹Ń‚Ńƒ"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ»Đ”Ń€Ń–"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"ÒšĐ°Đ»Ò›Ń‹ĐŒĐ°Đ»Ń‹ хабарЎы жабу"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"ÒšĐ°Đ»Ò›Ń‹ĐŒĐ° хабарлар ĐșÓ©Ń€ŃĐ”Ń‚ĐżĐ”Ńƒ"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ó˜ÒŁĐłŃ–ĐŒĐ”ĐœŃ–ÒŁ Ò›Đ°Đ»Ò›Ń‹ĐŒĐ° хабары ĐșÓ©Ń€ŃĐ”Ń‚Ń–Đ»ĐŒĐ”ŃŃ–Đœ"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"ÒšĐ°Đ»Ò›Ń‹ĐŒĐ° хабарлар Đ°Ń€Ò›Ń‹Đ»Ń‹ сөĐčлДсу"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Đ–Đ°ÒŁĐ° Ó™ÒŁĐłŃ–ĐŒĐ”Đ»Đ”Ń€ Ò›Đ°Đ»Ò›Ń‹ĐŒĐ° Đ±Đ”Đ»ĐłŃ–ŃˆĐ”Đ»Đ”Ń€ ĐœĐ”ĐŒĐ”ŃĐ” хабарлар Ń‚ÒŻŃ€Ń–ĐœĐŽĐ” ĐșөрсДтілДЎі. ÒšĐ°Đ»Ò›Ń‹ĐŒĐ° хабарЎы ашу ÒŻŃˆŃ–Đœ Ń‚ÒŻŃ€Ń‚Ń–ÒŁŃ–Đ·. Đ–Ń‹Đ»Đ¶Ń‹Ń‚Ńƒ ÒŻŃˆŃ–Đœ ŃÒŻĐčŃ€Đ”ÒŁŃ–Đ·."</string>
diff --git a/libs/WindowManager/Shell/res/values-km/strings.xml b/libs/WindowManager/Shell/res/values-km/strings.xml
index 4530267..b8e7ba1 100644
--- a/libs/WindowManager/Shell/res/values-km/strings.xml
+++ b/libs/WindowManager/Shell/res/values-km/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"ផ្លាស់ទឞទៅផ្នែកខាងក្រោម​ខាងស្ដាំ"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"ការកំណត់ <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"ច្រានចោល​ពពុះ"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"កុំបង្ហាញពពុះ"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"កុំបង្ហាញ​ការសន្ទនា​ជាពពុះ"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"ជជែក​ដោយប្រស​ពពុះ"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"ការសន្ទនាថ្មឞៗ​បង្ហាញជា​​ពពុះ ážŹážšážŒáž”ážąážŽáŸ’ážŠáŸ‚ážáŸ” ចុច ដសម្បឞបសក​ពពុះ។ ážąážŒážŸ ដសម្បឞ​ផ្លាស់ទឞ​ពពុះនេះ។"</string>
diff --git a/libs/WindowManager/Shell/res/values-kn/strings.xml b/libs/WindowManager/Shell/res/values-kn/strings.xml
index 2dfbad4..af8dd9b 100644
--- a/libs/WindowManager/Shell/res/values-kn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-kn/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"àČ•àł†àČłàȗàČżàČš àČŹàČČàČ­àČŸàȗàČ•àłàČ•àł† àČžàȰàČżàČžàČż"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> àČžàł†àČŸàłàȟàČżàȂàČ—àł‌àȗàČłàł"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"àČŹàČŹàČČàł àČ”àȜàČŸàČ—àłŠàČłàČżàČžàČż"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"àČŹàČŹàČČàł àČ€àł‹àȰàČżàČžàČŹàł‡àČĄàČż"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"àČžàȂàČ­àČŸàČ·àČŁàł†àČŻàČšàłàČšàł àČŹàČŹàČČàł àČźàČŸàČĄàČŹàł‡àČĄàČż"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"àČŹàČŹàČČàłàČžàł àČŹàČłàČžàČż àȚàČŸàČŸàł àČźàČŸàČĄàČż"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"àČčàłŠàČž àČžàȂàČ­àČŸàČ·àČŁàł†àȗàČłàł àČ€àł‡àČČàłàČ” àȐàȕàČŸàČšàł‌àȗàČłàł àȅàČ„àČ”àČŸ àČŹàČŹàČČàłàČžàł àȆàȗàČż àČ—àł‹àȚàȰàČżàČžàłàČ€àłàČ€àČ”àł†. àČŹàČŹàČČàł àČ€àł†àČ°àł†àČŻàČČàł àČŸàłàČŻàČŸàČȘàł àČźàČŸàČĄàČż. àȅàČŠàČšàłàČšàł àČĄàłàČ°àłàČŻàČŸàČ—àł àČźàČŸàČĄàČČàł àȎàČłàł†àČŻàČżàȰàČż."</string>
diff --git a/libs/WindowManager/Shell/res/values-ko/strings.xml b/libs/WindowManager/Shell/res/values-ko/strings.xml
index 39d717d..d9fd59d 100644
--- a/libs/WindowManager/Shell/res/values-ko/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ko/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"였넞ìȘœ í•˜ë‹šìœŒëĄœ 읎동"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> 섀정"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"대화찜 ë‹«êž°"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"도움말 풍선 쀑지"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"대화넌 ëŒ€í™”ì°œìœŒëĄœ 표시하지 않Ʞ"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"ëŒ€í™”ì°œìœŒëĄœ 채팅하Ʞ"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"ìƒˆëĄœìšŽ 대화가 플로팅 아읎윘읞 ëŒ€í™”ì°œìœŒëĄœ 표시됩니닀. 대화찜을 엎렀멎 탭하섞요. ë“œëž˜ê·ží•˜ì—Ź 읎동할 수 있슔니닀."</string>
diff --git a/libs/WindowManager/Shell/res/values-ky/strings.xml b/libs/WindowManager/Shell/res/values-ky/strings.xml
index f210ea2..5439486 100644
--- a/libs/WindowManager/Shell/res/values-ky/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ky/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"ĐąÓ©ĐŒÓ©ĐœĐșÒŻ ĐŸÒŁ жаĐșĐșа Đ¶Ń‹Đ»ĐŽŃ‹Ń€ŃƒŃƒ"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ»Đ”Ń€Đž"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"КалĐșып чыĐșĐŒĐ° Đ±ĐžĐ»ĐŽĐžŃ€ĐŒĐ”ĐœĐž жабуу"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"КалĐșып чыĐșĐŒĐ° Đ±ĐžĐ»ĐŽĐžŃ€ĐŒĐ”Đ»Đ”Ń€ ĐșÓ©Ń€ŃÓ©Ń‚ÒŻĐ»Đ±Ó©ŃÒŻĐœ"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Đ–Đ°Đ·Ń‹ŃˆŃƒŃƒĐŽĐ° ĐșалĐșып чыĐșĐŒĐ° Đ±ĐžĐ»ĐŽĐžŃ€ĐŒĐ”Đ»Đ”Ń€ ĐșÓ©Ń€ÒŻĐœĐ±Ó©ŃÒŻĐœ"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"КалĐșып чыĐșĐŒĐ° Đ±ĐžĐ»ĐŽĐžŃ€ĐŒĐ”Đ»Đ”Ń€ арĐșŃ‹Đ»ŃƒŃƒ ĐŒĐ°Đ”ĐșŃ‚Đ”ŃˆÒŻÒŻ"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Đ–Đ°ÒŁŃ‹ Đ¶Đ°Đ·Ń‹ŃˆŃƒŃƒĐ»Đ°Ń€ ĐșалĐșŃ‹ĐŒĐ° ŃÒŻŃ€Ó©Ń‚Ń‡Ó©Đ»Ó©Ń€ жД ĐșалĐșып чыĐșĐŒĐ° Đ±ĐžĐ»ĐŽĐžŃ€ĐŒĐ”Đ»Đ”Ń€ Ń‚ÒŻŃ€ÒŻĐœĐŽÓ© ĐșÓ©Ń€ÒŻĐœÓ©Ń‚. КалĐșып чыĐșĐŒĐ° Đ±ĐžĐ»ĐŽĐžŃ€ĐŒĐ”Đ»Đ”Ń€ĐŽĐž ачуу ÒŻŃ‡ÒŻĐœ таптап ĐșĐŸŃŽÒŁŃƒĐ·. Đ–Ń‹Đ»ĐŽŃ‹Ń€ŃƒŃƒ ÒŻŃ‡ÒŻĐœ ŃÒŻĐčŃ€Ó©ÒŁÒŻĐ·."</string>
diff --git a/libs/WindowManager/Shell/res/values-lo/strings.xml b/libs/WindowManager/Shell/res/values-lo/strings.xml
index a25699f..fe73717 100644
--- a/libs/WindowManager/Shell/res/values-lo/strings.xml
+++ b/libs/WindowManager/Shell/res/values-lo/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"àșà»‰àșČàșàș‚àș§àșČàș„àșžà»ˆàșĄ"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"àșàșČàș™àș•àș±à»‰àș‡àș„່àșČ <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"àș›àșŽàș”àșŸàș­àș‡à»„àș§à»‰"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"àșšà»à»ˆàș•້àș­àș‡àșȘàș°à»àș”àș‡ bubble"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"àșąà»ˆàșČໃàșŠà»‰àșŸàș­àș‡à»ƒàș™àșàșČàș™àșȘàș»àș™àș—àș°àș™àșČ"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"àșȘàș»àș™àș—àș°àș™àșČໂàș”àșà»ƒàșŠà»‰àșŸàș­àș‡"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"àșàșČàș™àșȘàș»àș™àș—àș°àș™àșČໃໝ່àșˆàș°àș›àșČàșàș»àș”ເàș›àș±àș™à»„àș­àș„àș­àș™ àș«àșŒàș· àșŸàș­àș‡à»àșšàșšàș„àș­àș. ແàș•àș°à»€àșžàș·à»ˆàș­à»€àș›àș”àș”àșŸàș­àș‡. àș„àșČàșà»€àșžàș·à»ˆàș­àșà»‰àșČàșàșĄàș±àș™."</string>
diff --git a/libs/WindowManager/Shell/res/values-lt/strings.xml b/libs/WindowManager/Shell/res/values-lt/strings.xml
index d893fcf..37e61a0 100644
--- a/libs/WindowManager/Shell/res/values-lt/strings.xml
+++ b/libs/WindowManager/Shell/res/values-lt/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Perkelti ÄŻ apačią dešinėje"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"„<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>“ nustatymai"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Atsisakyti burbulo"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Nerodyti debesėliƳ"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Nerodyti pokalbio burbule"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Pokalbis naudojant burbulus"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nauji pokalbiai rodomi kaip slankiosios piktogramos arba burbulai. Palieskite, kad atidarytumėte burbulą. Vilkite, kad perkeltumėte."</string>
diff --git a/libs/WindowManager/Shell/res/values-lv/strings.xml b/libs/WindowManager/Shell/res/values-lv/strings.xml
index a1fbcdd..58737b2 100644
--- a/libs/WindowManager/Shell/res/values-lv/strings.xml
+++ b/libs/WindowManager/Shell/res/values-lv/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Pārvietot apakšpusē pa labi"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Lietotnes <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> iestatījumi"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Nerādīt burbuli"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Pārtraukt burbuÄŒu rādÄ«šanu"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Nerādīt sarunu burbuČos"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Tērzēšana, izmantojot burbuÄŒus"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Jaunas sarunas tiek rādÄ«tas kā peldošas ikonas vai burbuÄŒi. Pieskarieties, lai atvērtu burbuli. Velciet, lai to pārvietotu."</string>
diff --git a/libs/WindowManager/Shell/res/values-mk/strings.xml b/libs/WindowManager/Shell/res/values-mk/strings.xml
index 427433c..f7bcde9 100644
--- a/libs/WindowManager/Shell/res/values-mk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-mk/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"ĐŸŃ€Đ”ĐŒĐ”ŃŃ‚Đž ĐŽĐŸĐ»Ńƒ ĐŽĐ”ŃĐœĐŸ"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"ĐŸĐŸŃŃ‚Đ°ĐČĐșĐž за <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"ОтфрлО Đ±Đ°Đ»ĐŸĐœŃ‡Đ”"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"ĐĐ” проĐșажуĐČај Đ±Đ°Đ»ĐŸĐœŃ‡Đ”"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"ĐĐ” проĐșажуĐČај ĐłĐŸ Ń€Đ°Đ·ĐłĐŸĐČĐŸŃ€ĐŸŃ‚ ĐČĐŸ Đ±Đ°Đ»ĐŸĐœŃ‡ĐžŃšĐ°"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Đ Đ°Đ·ĐłĐŸĐČĐŸŃ€ ĐČĐŸ Đ±Đ°Đ»ĐŸĐœŃ‡ĐžŃšĐ°"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"ĐĐŸĐČОтД Ń€Đ°Đ·ĐłĐŸĐČĐŸŃ€Đž ŃœĐ” сД ĐżĐŸŃ˜Đ°ĐČуĐČаат ĐșаĐșĐŸ лДбЎДчĐșĐž ĐžĐșĐŸĐœĐž ОлО Đ±Đ°Đ»ĐŸĐœŃ‡ĐžŃšĐ°. Đ”ĐŸĐżŃ€Đ”Ń‚Đ” за ĐŸŃ‚ĐČĐŸŃ€Đ°ŃšĐ” ĐœĐ° Đ±Đ°Đ»ĐŸĐœŃ‡Đ”Ń‚ĐŸ. ĐŸĐŸĐČлДчДтД за Ўа ĐłĐŸ ĐżŃ€Đ”ĐŒĐ”ŃŃ‚ĐžŃ‚Đ”."</string>
diff --git a/libs/WindowManager/Shell/res/values-ml/strings.xml b/libs/WindowManager/Shell/res/values-ml/strings.xml
index 5cca248..1ae95e2 100644
--- a/libs/WindowManager/Shell/res/values-ml/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ml/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"àŽšà”àŽ”àŽŸà”† àŽ”àŽČàŽ€à”àŽ­àŽŸàŽ—àŽ€à”àŽ€à”‡àŽ•à”àŽ•à” àŽšà”€àŽ•à”àŽ•à”àŽ•"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> àŽ•à”àŽ°àŽźà”€àŽ•àŽ°àŽŁàŽ‚"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"àŽŹàŽŹàŽżà”Ÿ àŽĄàŽżàŽžà”àŽźàŽżàŽžà” àŽšà”†àŽŻà”àŽŻà”‚"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"àŽŹàŽŹàŽżà”Ÿ àŽšà”†àŽŻà”àŽŻàŽ°à”àŽ€à”"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"àŽžàŽ‚àŽ­àŽŸàŽ·àŽŁàŽ‚ àŽŹàŽŹàŽżà”Ÿ àŽšà”†àŽŻà”àŽŻàŽ°à”àŽ€à”"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"àŽŹàŽŹàŽżàŽłà”àŽ•à”Ÿ àŽ‰àŽȘàŽŻà”‹àŽ—àŽżàŽšà”àŽšà” àŽšàŽŸàŽ±à”àŽ±à” àŽšà”†àŽŻà”àŽŻà”àŽ•"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"àŽȘà”àŽ€àŽżàŽŻ àŽžàŽ‚àŽ­àŽŸàŽ·àŽŁàŽ™à”àŽ™à”Ÿ àŽ«à”àŽČà”‹àŽŸà”àŽŸàŽżàŽ‚àŽ—à” àŽàŽ•à”àŽ•àŽŁà”àŽ•àŽłà”‹ àŽŹàŽŹàŽżàŽłà”àŽ•àŽłà”‹ àŽ†àŽŻàŽż àŽŠà”ƒàŽ¶à”àŽŻàŽźàŽŸàŽ”à”àŽšà”àŽšà”. àŽŹàŽŹàŽżà”Ÿ àŽ€à”àŽ±àŽ•à”àŽ•àŽŸà”» àŽŸàŽŸàŽȘà”àŽȘà” àŽšà”†àŽŻà”àŽŻà”‚. àŽ‡àŽ€à” àŽšà”€àŽ•à”àŽ•àŽŸà”» àŽ”àŽČàŽżàŽšà”àŽšàŽżàŽŸà”àŽ•."</string>
diff --git a/libs/WindowManager/Shell/res/values-mn/strings.xml b/libs/WindowManager/Shell/res/values-mn/strings.xml
index 72e54fc..312a5e4 100644
--- a/libs/WindowManager/Shell/res/values-mn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-mn/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Đ‘Đ°Ń€ŃƒŃƒĐœ ĐŽĐŸĐŸŃˆ Đ·Ó©Ó©Ń…"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>-Đœ Ń‚ĐŸŃ…ĐžŃ€ĐłĐŸĐŸ"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Đ‘Ó©ĐŒĐ±Ó©Đ»ĐłĐžĐčĐł хаах"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Đ‘Ó©ĐŒĐ±Ó©Đ»Ó©Đł Đ±ÒŻÒŻ Ń…Đ°Ń€ŃƒŃƒĐ»"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Đ„Đ°Ń€ĐžĐ»Ń†Đ°Đœ яроаг Đ±ÒŻÒŻ Đ±Ó©ĐŒĐ±Ó©Đ»Ó©Đł Đ±ĐŸĐ»ĐłĐŸ"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Đ‘Ó©ĐŒĐ±Ó©Đ»Ó©Đł Đ°ŃˆĐžĐłĐ»Đ°Đœ чатлаараĐč"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"ĐšĐžĐœŃ Ń…Đ°Ń€ĐžĐ»Ń†Đ°Đœ яроа ĐœŃŒ Ń…Ó©ĐČөгч ĐŽÒŻŃ€Ń Ń‚ŃĐŒĐŽŃĐł эсĐČŃĐ» Đ±Ó©ĐŒĐ±Ó©Đ»Ó©Đł Ń…ŃĐ»Đ±ŃŃ€ŃŃŃ€ харагЮЮаг. Đ‘Ó©ĐŒĐ±Ó©Đ»ĐłĐžĐčĐł ĐœŃŃŃ…ĐžĐčĐœ Ń‚ŃƒĐ»ĐŽ Ń‚ĐŸĐČŃˆĐžĐœĐŸ уу. ĐąÒŻÒŻĐœĐžĐčĐł Đ·Ó©Ó©Ń…ĐžĐčĐœ Ń‚ŃƒĐ»ĐŽ Ń‡ĐžŃ€ĐœŃ ÒŻÒŻ."</string>
diff --git a/libs/WindowManager/Shell/res/values-mr/strings.xml b/libs/WindowManager/Shell/res/values-mr/strings.xml
index a9e6319a..e2da77f 100644
--- a/libs/WindowManager/Shell/res/values-mr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-mr/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"à€€à€łà€Ÿà€¶à„€ à€‰à€œà€”à„€à€•à€Ąà„‡ à€čà€Čà€”à€Ÿ"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> à€žà„‡à€Ÿà€żà€‚à€—à„à€œ"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"à€Źà€Źà€Č à€Ąà€żà€žà€źà€żà€ž à€•à€°à€Ÿ"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"à€Źà€Źà€Č à€Šà€Ÿà€–à€”à„‚ à€šà€•à€Ÿ"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"à€žà€‚à€­à€Ÿà€·à€Łà€Ÿà€Čà€Ÿ à€Źà€Źà€Č à€•à€°à„‚ à€šà€•à€Ÿ"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"à€Źà€Źà€Č à€”à€Ÿà€Șà€°à„‚à€š à€šà„…à€Ÿ à€•à€°à€Ÿ"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"à€šà€”à„€à€š à€žà€‚à€­à€Ÿà€·à€Łà„‡ à€«à„à€Čà„‹à€Ÿà€żà€‚à€— à€†à€Żà€•à€š à€•à€żà€‚à€”à€Ÿ à€Źà€Źà€Č à€źà„à€čà€Łà„‚à€š à€Šà€żà€žà€€à€Ÿà€€. à€Źà€Źà€Č à€‰à€˜à€Ąà€Łà„à€Żà€Ÿà€žà€Ÿà€ à„€ à€Ÿà„…à€Ș à€•à€°à€Ÿ. à€čà„‡ à€čà€Čà€”à€Łà„à€Żà€Ÿà€žà€Ÿà€ à„€ à€Ąà„à€°à„…à€— à€•à€°à€Ÿ."</string>
diff --git a/libs/WindowManager/Shell/res/values-ms/strings.xml b/libs/WindowManager/Shell/res/values-ms/strings.xml
index b475317..9965226 100644
--- a/libs/WindowManager/Shell/res/values-ms/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ms/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Alihkan ke bawah sebelah kanan"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Tetapan <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Ketepikan gelembung"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Hentikan gelembung"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Jangan jadikan perbualan dalam bentuk gelembung"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Bersembang menggunakan gelembung"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Perbualan baharu muncul sebagai ikon terapung atau gelembung. Ketik untuk membuka gelembung. Seret untuk mengalihkan gelembung tersebut."</string>
diff --git a/libs/WindowManager/Shell/res/values-my/strings.xml b/libs/WindowManager/Shell/res/values-my/strings.xml
index cb6a1df..f44d976 100644
--- a/libs/WindowManager/Shell/res/values-my/strings.xml
+++ b/libs/WindowManager/Shell/res/values-my/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"ညဏဥေဏကá€șá€á€Œá€±á€žá€­á€Żá€· ရလဟေ့ပါ"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ဆကá€șတငá€șမျဏသ"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"ပူဖေဏငá€șသကလကá€ș ပယá€șရနá€ș"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"ပူဖေဏငá€șသကလကá€ș မပဌပါနဟင့á€ș"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"စကာှဝိုငá€șှကို ပူဖေဏငá€șသကလကá€ș á€™á€•á€Œá€Żá€œá€Żá€•á€șပါနဟင့á€ș"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"ပူဖေဏငá€șသကလကá€ș á€žá€Żá€¶á€žá ချတá€șလုပá€șခဌငá€șှ"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"စကာှဝိုငá€șှအသစá€șမျဏသကို မျေဏနေသည့á€ș သငá€șá€čကေတမျဏသ á€žá€­á€Żá€·á€™á€Ÿá€Żá€á€ș ပူဖေဏငá€șသကလကá€șá€™á€»á€Źá€žá€Ąá€–á€Œá€…á€ș မဌငá€șရပါမညá€ș။ ပူဖေဏငá€șသကလကá€șá€€á€­á€Żá€–á€œá€„á€·á€șရနá€ș တို့ပါ။ ရလဟေ့ရနá€ș ၎ငá€șှကို ဖိဆလá€Čပါ။"</string>
diff --git a/libs/WindowManager/Shell/res/values-nb/strings.xml b/libs/WindowManager/Shell/res/values-nb/strings.xml
index 6c80144..9cb9873 100644
--- a/libs/WindowManager/Shell/res/values-nb/strings.xml
+++ b/libs/WindowManager/Shell/res/values-nb/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Flytt til nederst til høyre"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>-innstillinger"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Lukk boblen"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Ikke vis bobler"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ikke vis samtaler i bobler"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chat med bobler"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nye samtaler vises som flytende ikoner eller bobler. Trykk for å åpne en boble. Dra for å flytte den."</string>
diff --git a/libs/WindowManager/Shell/res/values-ne/strings.xml b/libs/WindowManager/Shell/res/values-ne/strings.xml
index f9f5805..3d4d2bc 100644
--- a/libs/WindowManager/Shell/res/values-ne/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ne/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"à€Șà„à€›à€Ÿà€°à€źà€Ÿ à€Šà€Ÿà€Żà€Ÿà€à€€à€żà€° à€žà€Ÿà€°à„à€šà„à€čà„‹à€žà„"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> à€•à€Ÿ à€žà„‡à€Ÿà€żà€™à€čà€°à„‚"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"à€Źà€Źà€Č à€–à€Ÿà€°à„‡à€œ à€—à€°à„à€šà„à€čà„‹à€žà„"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"à€Źà€Źà€Č à€šà€Šà„‡à€–à€Ÿà€‡à€Żà„‹à€žà„"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"à€”à€Ÿà€°à„à€€à€Ÿà€Čà€Ÿà€Ș à€Źà€Źà€Čà€•à„‹ à€°à„‚à€Șà€źà€Ÿ à€šà€Šà„‡à€–à€Ÿà€‡à€Żà„‹à€žà„"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"à€Źà€Źà€Čà€čà€°à„‚ à€Șà„à€°à€Żà„‹à€— à€—à€°à„€ à€•à„à€°à€Ÿà€•à€Ÿà€šà„€ à€—à€°à„à€šà„à€čà„‹à€žà„"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"à€šà€Żà€Ÿà€ à€”à€Ÿà€°à„à€€à€Ÿà€Čà€Ÿà€Șà€čà€°à„‚ à€€à„ˆà€°à€šà„‡ à€†à€‡à€•à€š à€”à€Ÿ à€Źà€Źà€Čà€•à€Ÿ à€°à„‚à€Șà€źà€Ÿ à€Šà„‡à€–à€żà€šà„à€›à€šà„à„€ à€Źà€Źà€Č à€–à„‹à€Čà„à€š à€Ÿà„à€Żà€Ÿà€Ș à€—à€°à„à€šà„à€čà„‹à€žà„à„€ à€Źà€Źà€Č à€žà€Ÿà€°à„à€š à€žà„‹ à€Źà€Źà€Čà€Čà€Ÿà€ˆ à€Ąà„à€°à„à€Żà€Ÿà€— à€—à€°à„à€šà„à€čà„‹à€žà„à„€"</string>
diff --git a/libs/WindowManager/Shell/res/values-nl/strings.xml b/libs/WindowManager/Shell/res/values-nl/strings.xml
index 3064ccc..796cb05 100644
--- a/libs/WindowManager/Shell/res/values-nl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-nl/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Naar rechtsonder verplaatsen"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Instellingen voor <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Bubbel sluiten"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Niet als bubbel tonen"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Gesprekken niet in bubbels tonen"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chatten met bubbels"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nieuwe gesprekken worden als zwevende iconen of bubbels getoond. Tik om een bubbel te openen. Sleep om een bubbel te verplaatsen."</string>
diff --git a/libs/WindowManager/Shell/res/values-or/strings.xml b/libs/WindowManager/Shell/res/values-or/strings.xml
index e4c7053..185ece6 100644
--- a/libs/WindowManager/Shell/res/values-or/strings.xml
+++ b/libs/WindowManager/Shell/res/values-or/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"àŹ€àŹł àŹĄàŹŸàŹčàŹŸàŹŁàŹ•à­ àŹšàŹżàŹ…àŹšà­àŹ€à­"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> àŹžà­‡àŹŸàŹżàŹ‚àŹžà­"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"àŹŹàŹŹàŹČ୍ àŹ–àŹŸàŹ°àŹœ àŹ•àŹ°àŹšà­àŹ€à­"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"àŹŹàŹŹàŹČ àŹ•àŹ°àŹšà­àŹ€à­ àŹšàŹŸàŹčàŹżàŹ"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"àŹŹàŹŸàŹ°à­àŹ€à­àŹ€àŹŸàŹłàŹŸàŹȘàŹ•à­ àŹŹàŹŹàŹČ୍ àŹ•àŹ°àŹšà­àŹ€à­ àŹšàŹŸàŹčàŹżàŹ"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"àŹŹàŹŹàŹČàŹ—à­àŹĄàŹŒàŹżàŹ•à­ àŹŹà­à­ŸàŹŹàŹčàŹŸàŹ° àŹ•àŹ°àŹż àŹšàŹŸàŹŸà­ àŹ•àŹ°àŹšà­àŹ€à­"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"àŹšà­‚àŹ† àŹŹàŹŸàŹ°à­àŹ€à­àŹ€àŹŸàŹłàŹŸàŹȘàŹ—à­àŹĄàŹŒàŹżàŹ• àŹ«à­àŹČà­‹àŹŸàŹżàŹ‚ àŹ†àŹ‡àŹ•àŹšà­ àŹ•àŹżàŹźà­àŹŹàŹŸ àŹŹàŹŹàŹČ୍ àŹ­àŹŸàŹŹà­‡ àŹŠà­‡àŹ–àŹŸàŹŻàŹżàŹŹà„€ àŹŹàŹŹàŹČ୍ àŹ–à­‹àŹČàŹżàŹŹàŹŸàŹ•à­ àŹŸàŹŸàŹȘ୍ àŹ•àŹ°àŹšà­àŹ€à­à„€ àŹàŹčàŹŸàŹ•à­ àŹźà­àŹ­à­ àŹ•àŹ°àŹżàŹŹàŹŸàŹ•à­ àŹŸàŹŸàŹŁàŹšà­àŹ€à­à„€"</string>
diff --git a/libs/WindowManager/Shell/res/values-pa/strings.xml b/libs/WindowManager/Shell/res/values-pa/strings.xml
index d9f7f34..12a9f71 100644
--- a/libs/WindowManager/Shell/res/values-pa/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pa/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"àščà©‡àš àšŸàš‚ àš”à©±àšČ àšžà©±àšœà©‡ àšČàšżàšœàšŸàš“"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> àšžà©ˆàšŸàšżà©°àš—àšŸàš‚"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"àšŹàšŹàšČ àššà©‚à©° àš–àšŸàš°àšœ àš•àš°à©‹"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"àšŹàšŹàšČ àššàšŸ àš•àš°à©‹"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"àš—à©±àšČàšŹàšŸàš€ \'àš€à©‡ àšŹàšŹàšČ àššàšŸ àšČàšŸàš“"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"àšŹàšŹàšČ àš”àš°àš€àšŠà©‡ àščà©‹àš àššà©ˆàšŸ àš•àš°à©‹"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"àššàš”à©€àš†àš‚ àš—à©±àšČàšŸàš‚àšŹàšŸàš€àšŸàš‚ àš«àšČà©‹àšŸàšżà©°àš— àšȘà©àš°àš€à©€àš•àšŸàš‚ àšœàšŸàš‚ àšŹàšŹàšČ àšŠà©‡ àš°à©‚àšȘ àš”àšżà©±àšš àšŠàšżàšžàšŠà©€àš†àš‚ àščàššà„€ àšŹàšŹàšČ àššà©‚à©° àš–à©‹àšČ੍àščàšŁ àšČàšˆ àšŸà©ˆàšȘ àš•àš°à©‹à„€ àš‡àšžàššà©‚à©° àšČàšżàšœàšŸàšŁ àšČàšˆ àš˜àšžà©€àšŸà©‹à„€"</string>
diff --git a/libs/WindowManager/Shell/res/values-pl/strings.xml b/libs/WindowManager/Shell/res/values-pl/strings.xml
index 0699f5d..ce37cda 100644
--- a/libs/WindowManager/Shell/res/values-pl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pl/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Przenieƛ w prawy dolny róg"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> – ustawienia"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Zamknij dymek"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Nie twórz dymków"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Nie wyƛwietlaj rozmowy jako dymka"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Czatuj, korzystając z dymków"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nowe rozmowy będą wyƛwietlane jako pƂywające ikony lub dymki. Kliknij, by otworzyć dymek. Przeciągnij, by go przenieƛć."</string>
diff --git a/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml b/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml
index eea9be2..317ebf2 100644
--- a/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Mover para canto inferior direito"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Configurações de <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Dispensar balão"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Parar de mostrar balões"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Não criar balões de conversa"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Converse usando balões"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Novas conversas aparecerão como ícones flutuantes, ou balões. Toque para abrir o balão. Arraste para movê-lo."</string>
diff --git a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml
index ed0cdb6..708d3d9 100644
--- a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Mover parte inferior direita"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Definições de <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Ignorar balão"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Não apresentar balões"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Não apresentar a conversa em balões"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Converse no chat através de balões"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"As novas conversas aparecem como ícones flutuantes ou balões. Toque para abrir o balão. Arraste para o mover."</string>
diff --git a/libs/WindowManager/Shell/res/values-pt/strings.xml b/libs/WindowManager/Shell/res/values-pt/strings.xml
index eea9be2..317ebf2 100644
--- a/libs/WindowManager/Shell/res/values-pt/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pt/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Mover para canto inferior direito"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Configurações de <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Dispensar balão"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Parar de mostrar balões"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Não criar balões de conversa"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Converse usando balões"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Novas conversas aparecerão como ícones flutuantes, ou balões. Toque para abrir o balão. Arraste para movê-lo."</string>
diff --git a/libs/WindowManager/Shell/res/values-ro/strings.xml b/libs/WindowManager/Shell/res/values-ro/strings.xml
index 8a64b16..dbd9ac3 100644
--- a/libs/WindowManager/Shell/res/values-ro/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ro/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Mută în dreapta jos"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Setări <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Închide balonul"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Nu afișa bule"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Nu afișa conversația în balon"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chat cu baloane"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Conversațiile noi apar ca pictograme flotante sau baloane. Atinge pentru a deschide balonul. Trage pentru a-l muta."</string>
diff --git a/libs/WindowManager/Shell/res/values-ru/strings.xml b/libs/WindowManager/Shell/res/values-ru/strings.xml
index a7db44d..a773b37 100644
--- a/libs/WindowManager/Shell/res/values-ru/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ru/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"ĐŸĐ”Ń€Đ”ĐœĐ”ŃŃ‚Đž ĐČ ĐżŃ€Đ°ĐČыĐč ĐœĐžĐ¶ĐœĐžĐč ŃƒĐłĐŸĐ»"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>: ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"ĐĄĐșрыть ĐČсплыĐČающоĐč чат"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"ОтĐșĐ»ŃŽŃ‡ĐžŃ‚ŃŒ ĐČсплыĐČающОД ĐżĐŸĐŽŃĐșазĐșĐž"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"ĐĐ” ĐżĐŸĐșазыĐČать ĐČсплыĐČающоĐč чат ĐŽĐ»Ń Ń€Đ°Đ·ĐłĐŸĐČĐŸŃ€Đ°"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"ВсплыĐČающОД чаты"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"ĐĐŸĐČыД Ń€Đ°Đ·ĐłĐŸĐČĐŸŃ€Ń‹ Đ±ŃƒĐŽŃƒŃ‚ ĐżĐŸŃĐČĐ»ŃŃ‚ŃŒŃŃ ĐČ ĐČОЎД плаĐČающох Đ·ĐœĐ°Ń‡ĐșĐŸĐČ, ОлО ĐČсплыĐČающох Ń‡Đ°Ń‚ĐŸĐČ. Đ§Ń‚ĐŸĐ±Ń‹ ĐŸŃ‚Đșрыть чат, ĐœĐ°Đ¶ĐŒĐžŃ‚Đ” ĐœĐ° ĐœĐ”ĐłĐŸ, а Ń‡Ń‚ĐŸĐ±Ń‹ ĐżĐ”Ń€Đ”ĐŒĐ”ŃŃ‚ĐžŃ‚ŃŒ – пДрДтащОтД."</string>
diff --git a/libs/WindowManager/Shell/res/values-si/strings.xml b/libs/WindowManager/Shell/res/values-si/strings.xml
index 4153ce2..624d771 100644
--- a/libs/WindowManager/Shell/res/values-si/strings.xml
+++ b/libs/WindowManager/Shell/res/values-si/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"à¶Žà·„à·… à¶Żà¶šà·”à¶«à¶§ ගෙන à¶șන්න"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> සැකසීඞ්"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"බුබුගු ඉවත ගන්න"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"බුබුළු නොකරන්න"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"à·ƒà¶‚à·€à·à¶Żà¶ș බුබුගු à¶±à·œà¶Żà¶žà¶±à·Šà¶±"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"බුබුගු භාවිතà¶șෙන් කතාබහ කරන්න"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"නව à·ƒà¶‚à·€à·à¶Ż ඎාවෙන අà¶șිකන හෝ බුබුගු ගෙස à¶Żà·’à·ƒà·Š වේ. බුබුග විවෘත කිරීඞට තට්ටු කරන්න. එà¶ș ගෙන à¶șාඞට à¶…à¶Żà·’à¶±à·Šà¶±."</string>
diff --git a/libs/WindowManager/Shell/res/values-sk/strings.xml b/libs/WindowManager/Shell/res/values-sk/strings.xml
index 4e38943..5c7d173 100644
--- a/libs/WindowManager/Shell/res/values-sk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sk/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"PresunúĆ„ doprava nadol"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Nastavenia aplikácie <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"ZavrieƄ bublinu"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"NezobrazovaƄ bubliny"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"NezobrazovaĆ„ konverzáciu ako bublinu"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Čet pomocou bublín"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nové konverzácie sa zobrazujú ako plávajúce ikony či bubliny. Bublinu otvoríte klepnutím. Premiestnite ju presunutím."</string>
diff --git a/libs/WindowManager/Shell/res/values-sl/strings.xml b/libs/WindowManager/Shell/res/values-sl/strings.xml
index b0e67a7..03c68ff 100644
--- a/libs/WindowManager/Shell/res/values-sl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sl/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Premakni spodaj desno"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Nastavitve za <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Opusti oblaček"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Ne prikazuj oblačkov aplikacij"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Pogovora ne prikaĆŸi v oblačku"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Klepet z oblački"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Novi pogovori so prikazani kot lebdeče ikone ali oblački. Če ĆŸelite odpreti oblaček, se ga dotaknite. Če ga ĆŸelite premakniti, ga povlecite."</string>
diff --git a/libs/WindowManager/Shell/res/values-sq/strings.xml b/libs/WindowManager/Shell/res/values-sq/strings.xml
index 29bfb92..3878c47 100644
--- a/libs/WindowManager/Shell/res/values-sq/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sq/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Lëvize poshtë djathtas"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Cilësimet e <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Hiqe flluskën"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Mos shfaq flluska"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Mos e vendos bisedën në flluskë"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Bisedo duke përdorur flluskat"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Bisedat e reja shfaqen si ikona pluskuese ose flluska. Trokit për të hapur flluskën. Zvarrit për ta zhvendosur."</string>
diff --git a/libs/WindowManager/Shell/res/values-sr/strings.xml b/libs/WindowManager/Shell/res/values-sr/strings.xml
index 307efc9..20ccbd7 100644
--- a/libs/WindowManager/Shell/res/values-sr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sr/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"ĐŸŃ€Đ”ĐŒĐ”ŃŃ‚Đž ĐŽĐŸĐ»Đ” ĐŽĐ”ŃĐœĐŸ"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"ĐŸĐŸĐŽĐ”ŃˆĐ°ĐČања за <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"ОЎбацО ĐŸĐ±Đ»Đ°Ń‡ĐžŃ›"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"БДз ĐŸĐ±Đ»Đ°Ń‡ĐžŃ›Đ°"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"ĐĐ” ĐșĐŸŃ€ĐžŃŃ‚Đž ĐŸĐ±Đ»Đ°Ń‡ĐžŃ›Đ” за ĐșĐŸĐœĐČĐ”Ń€Đ·Đ°Ń†ĐžŃ˜Ńƒ"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"ЋасĐșĐ°Ń˜Ń‚Đ” у ĐŸĐ±Đ»Đ°Ń‡ĐžŃ›ĐžĐŒĐ°"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"ĐĐŸĐČĐ” ĐșĐŸĐœĐČĐ”Ń€Đ·Đ°Ń†ĐžŃ˜Đ” сД проĐșазују ĐșĐ°ĐŸ ĐżĐ»ŃƒŃ‚Đ°Ń˜ŃƒŃ›Đ” ĐžĐșĐŸĐœĐ” ОлО ĐŸĐ±Đ»Đ°Ń‡ĐžŃ›Đž. Đ”ĐŸĐŽĐžŃ€ĐœĐžŃ‚Đ” Ўа бОстД ĐŸŃ‚ĐČĐŸŃ€ĐžĐ»Đž ĐŸĐ±Đ»Đ°Ń‡ĐžŃ›. ĐŸŃ€Đ”ĐČŃƒŃ†ĐžŃ‚Đ” Ўа бОстД га ĐżŃ€Đ”ĐŒĐ”ŃŃ‚ĐžĐ»Đž."</string>
diff --git a/libs/WindowManager/Shell/res/values-sv/strings.xml b/libs/WindowManager/Shell/res/values-sv/strings.xml
index 33652cd..b7035c1 100644
--- a/libs/WindowManager/Shell/res/values-sv/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sv/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Flytta längst ned till höger"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Inställningar för <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Stäng bubbla"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Visa inte bubblor"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Visa inte konversationen i bubblor"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chatta med bubblor"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nya konversationer visas som flytande ikoner, så kallade bubblor. Tryck på bubblan om du vill öppna den. Dra den om du vill flytta den."</string>
diff --git a/libs/WindowManager/Shell/res/values-sw/strings.xml b/libs/WindowManager/Shell/res/values-sw/strings.xml
index fe2ad1f..cac1deb 100644
--- a/libs/WindowManager/Shell/res/values-sw/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sw/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Sogeza chini kulia"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Mipangilio ya <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Ondoa kiputo"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Isifanye viputo"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Usiweke viputo kwenye mazungumzo"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Piga gumzo ukitumia viputo"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Mazungumzo mapya huonekena kama aikoni au viputo vinavyoelea. Gusa ili ufungue kiputo. Buruta ili ukisogeze."</string>
diff --git a/libs/WindowManager/Shell/res/values-ta/strings.xml b/libs/WindowManager/Shell/res/values-ta/strings.xml
index fd5f0e6..23a2cdc 100644
--- a/libs/WindowManager/Shell/res/values-ta/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ta/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"àź•àŻ€àźŽàŻ‡ àź”àźČàź€àŻàźȘàŻàź±àźźàźŸàź• àźšàź•àź°àŻàź€àŻàź€àŻ"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> àź…àźźàŻˆàźȘàŻàźȘàŻàź•àźłàŻ"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"àź•àŻàźźàźżàźŽàŻˆ àź…àź•àź±àŻàź±àŻ"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"àź•àŻàźźàźżàźŽàŻàź•àźłàŻˆàź•àŻ àź•àźŸàźŸàŻàźŸ àź”àŻ‡àźŁàŻàźŸàźŸàźźàŻ"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"àź‰àź°àŻˆàźŻàźŸàźŸàźČàŻˆàź•àŻ àź•àŻàźźàźżàźŽàźŸàź•àŻàź•àźŸàź€àŻ‡"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"àź•àŻàźźàźżàźŽàŻàź•àźłàŻˆàźȘàŻ àźȘàźŻàź©àŻàźȘàźŸàŻàź€àŻàź€àźż àź…àź°àźŸàŻàźŸàŻˆàźŻàźŸàźżàźŻàŻàź™àŻàź•àźłàŻ"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"àźȘàŻàź€àźżàźŻ àź‰àź°àŻˆàźŻàźŸàźŸàźČàŻàź•àźłàŻ àźźàźżàź€àź•àŻàź•àŻàźźàŻ àźàź•àźŸàź©àŻàź•àźłàźŸàź•àź”àŻ‹ àź•àŻàźźàźżàźŽàŻàź•àźłàźŸàź•àź”àŻ‹ àź€àŻ‹àź©àŻàź±àŻàźźàŻ. àź•àŻàźźàźżàźŽàŻˆàź€àŻ àź€àźżàź±àź•àŻàź• àź€àźŸàŻàźŸàź”àŻàźźàŻ. àźšàź•àź°àŻàź€àŻàź€ àź‡àźŽàŻàź•àŻàź•àź”àŻàźźàŻ."</string>
@@ -109,5 +110,6 @@
     <string name="screenshot_text" msgid="1477704010087786671">"àźžàŻàź•àźżàź°àŻ€àź©àŻàź·àźŸàźŸàŻ"</string>
     <string name="close_text" msgid="4986518933445178928">"àźźàŻ‚àźŸàŻàźźàŻ"</string>
     <string name="collapse_menu_text" msgid="7515008122450342029">"àźźàŻ†àź©àŻàź”àŻˆ àźźàŻ‚àźŸàŻàźźàŻ"</string>
-    <string name="expand_menu_text" msgid="3847736164494181168">"àźźàŻ†àź©àŻàź”àŻˆàź€àŻ àź€àźżàź±"</string>
+    <!-- no translation found for expand_menu_text (3847736164494181168) -->
+    <skip />
 </resources>
diff --git a/libs/WindowManager/Shell/res/values-te/strings.xml b/libs/WindowManager/Shell/res/values-te/strings.xml
index 6f95aa9..6b415900 100644
--- a/libs/WindowManager/Shell/res/values-te/strings.xml
+++ b/libs/WindowManager/Shell/res/values-te/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"à°Šà°żà°—à°”à± à°•à±à°Ąà°żà°”à±ˆà°Șుచకు జరుà°Șు"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> à°žà±†à°Ÿà±à°Ÿà°żà°‚à°—à±‌à°Čు"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"à°Źà°Źà±à°Č్‌చు à°”à°żà°žà±à°źà°°à°żà°‚à°šà±"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"à°Źà°Źà±à°Č్‌చు చూà°Șà°Ąà°‚ ఆà°Șà°‚à°Ąà°ż"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"à°žà°‚à°­à°Ÿà°·à°Łà°šà± à°Źà°Źà±à°Č్ à°šà±‡à°Żà°”à°Šà±à°Šà±"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"à°Źà°Źà±à°Č్ఞ్‌చు ఉà°Șà°Żà±‹à°—à°żà°‚à°šà°ż చటట్ à°šà±‡à°Żà°‚à°Ąà°ż"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"కొఀ్ఀ à°žà°‚à°­à°Ÿà°·à°Łà°Čు ఀేà°Čà°żà°Żà°Ÿà°Ąà±‡ à°šà°żà°č్చటà°Čుగట à°Čేఊట à°Źà°Źà±à°Č్ఞ్ à°Čà°Ÿà°—à°Ÿ à°•à°šà°żà°Șà°żà°žà±à°€à°Ÿà°Żà°ż. à°Źà°Źà±à°Č్‌à°šà°ż à°€à±†à°°à°”à°Ąà°Ÿà°šà°żà°•à°ż à°šà±Šà°•à±à°•à°‚à°Ąà°ż. ఀరà°Čà°żà°‚à°šà°Ąà°Ÿà°šà°żà°•à°ż à°Čà°Ÿà°—à°‚à°Ąà°ż."</string>
diff --git a/libs/WindowManager/Shell/res/values-th/strings.xml b/libs/WindowManager/Shell/res/values-th/strings.xml
index 6733940..e61904e 100644
--- a/libs/WindowManager/Shell/res/values-th/strings.xml
+++ b/libs/WindowManager/Shell/res/values-th/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"àžąàč‰àžČàžąàč„àž›àž”àč‰àžČàž™àž‚àžČàž§àž„àčˆàžČàž‡"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"àžàžČàžŁàž•àž±àč‰àž‡àž„àčˆàžČ <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"àž›àžŽàž”àžšàž±àžšàč€àžšàžŽàž„"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"àč„àžĄàčˆàž•àč‰àž­àž‡àčàžȘàž”àž‡àžšàž±àžšàč€àžšàžŽàž„"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"àč„àžĄàčˆàž•àč‰àž­àž‡àčàžȘàž”àž‡àžàžČàžŁàžȘàž™àž—àž™àžČàč€àž›àč‡àž™àžšàž±àžšàč€àžšàžŽàž„"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"àčàžŠàž—àč‚àž”àžąàčƒàžŠàč‰àžšàž±àžšàč€àžšàžŽàž„"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"àžàžČàžŁàžȘàž™àž—àž™àžČàčƒàž«àžĄàčˆàč† àžˆàž°àž›àžŁàžČàžàžàč€àž›àč‡àž™àč„àž­àž„àž­àž™àčàžšàžšàž„àž­àžąàž«àžŁàž·àž­àžšàž±àžšàč€àžšàžŽàž„ àčàž•àž°àč€àžžàž·àčˆàž­àč€àž›àžŽàž”àžšàž±àžšàč€àžšàžŽàž„ àž„àžČàžàč€àžžàž·àčˆàž­àžąàč‰àžČàžąàž—àž”àčˆ"</string>
diff --git a/libs/WindowManager/Shell/res/values-tl/strings.xml b/libs/WindowManager/Shell/res/values-tl/strings.xml
index 8cf4eb484..822f7eb 100644
--- a/libs/WindowManager/Shell/res/values-tl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-tl/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Ilipat sa kanan sa ibaba"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Mga setting ng <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"I-dismiss ang bubble"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Huwag i-bubble"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Huwag ipakita sa bubble ang mga pag-uusap"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Mag-chat gamit ang bubbles"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Lumalabas bilang mga nakalutang na icon o bubble ang mga bagong pag-uusap. I-tap para buksan ang bubble. I-drag para ilipat ito."</string>
diff --git a/libs/WindowManager/Shell/res/values-tr/strings.xml b/libs/WindowManager/Shell/res/values-tr/strings.xml
index 1454435..26081e1 100644
--- a/libs/WindowManager/Shell/res/values-tr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-tr/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Sağ alta taßı"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ayarları"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Baloncuğu kapat"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Bildirim baloncuğu gösterme"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Görüßmeyi baloncuk olarak görüntüleme"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Baloncukları kullanarak sohbet edin"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Yeni görüßmeler kayan simgeler veya baloncuk olarak görünür. Açmak için baloncuğa dokunun. Baloncuğu taßımak için sürükleyin."</string>
diff --git a/libs/WindowManager/Shell/res/values-uk/strings.xml b/libs/WindowManager/Shell/res/values-uk/strings.xml
index 78df129..aacf1ff 100644
--- a/libs/WindowManager/Shell/res/values-uk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-uk/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"ĐŸĐ”Ń€Đ”ĐŒŃ–ŃŃ‚ĐžŃ‚Đž праĐČĐŸŃ€ŃƒŃ‡ ŃƒĐœĐžĐ·"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"ĐĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ° \"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>\""</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"ЗаĐșрото піЮĐșазĐșу"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"ĐĐ” ĐżĐŸĐșазуĐČато сплОĐČаючі чато"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"ĐĐ” ĐżĐŸĐșазуĐČато сплОĐČаючі чато ĐŽĐ»Ń Ń€ĐŸĐ·ĐŒĐŸĐČ"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"ХплОĐČаючоĐč чат"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"ĐĐŸĐČі ĐżĐŸĐČŃ–ĐŽĐŸĐŒĐ»Đ”ĐœĐœŃ чату Đ·\'яĐČĐ»ŃŃŽŃ‚ŃŒŃŃ у ĐČĐžĐłĐ»ŃĐŽŃ– сплОĐČаючох Đ·ĐœĐ°Ń‡ĐșіĐČ. Đ©ĐŸĐ± ĐČіЮĐșрото чат, ĐœĐ°Ń‚ĐžŃĐœŃ–Ń‚ŃŒ ĐčĐŸĐłĐŸ, а Ń‰ĐŸĐ± ĐżĐ”Ń€Đ”ĐŒŃ–ŃŃ‚ĐžŃ‚Đž – ĐżĐ”Ń€Đ”Ń‚ŃĐłĐœŃ–Ń‚ŃŒ."</string>
diff --git a/libs/WindowManager/Shell/res/values-ur/strings.xml b/libs/WindowManager/Shell/res/values-ur/strings.xml
index ca16424..f494e08 100644
--- a/libs/WindowManager/Shell/res/values-ur/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ur/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"نیچے ŰŻŰ§ŰŠÛŒÚș ŰŹŰ§Ù†Űš لے ŰŹŰ§ŰŠÛŒÚș"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ŰȘ۱ŰȘÛŒŰšŰ§ŰȘ"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"ŰšÙ„ŰšÙ„Û ۚ۱۟ۧ۳ŰȘ Ú©Ű±ÛŒÚș"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"ŰšÙ„ŰšÙ„Û ŰŻÚ©ÚŸŰ§Ù†Ű§ ŰšÙ†ŰŻ Ú©Ű±ÛŒÚș"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"ÚŻÙŰȘÚŻÙˆ ŰšÙ„ŰšÙ„Û نہ Ú©Ű±ÛŒÚș"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"ŰšÙ„ŰšÙ„Û’ کے Ű°Ű±ÛŒŰčے چیÙč Ú©Ű±ÛŒÚș"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Ù†ŰŠÛŒ ÚŻÙŰȘÚŻÙˆŰŠÛŒÚș فلوÙčÙ†ÚŻ ŰąŰŠÛŒÚ©Ù† ÛŒŰ§ ŰšÙ„ŰšÙ„Û’ کے Ű·ÙˆŰ± ÙŸŰ± ŰžŰ§ÛŰ± ہوÚș ÚŻÛŒÛ” ŰšÙ„ŰšÙ„Û کڟولنے کے لیے ŰȘÚŸÙŸŰȘÚŸÙŸŰ§ŰŠÛŒÚș۔ Ű§ŰłÛ’ منŰȘقل Ú©Ű±Ù†Û’ کے لیے ÚŻÚŸŰłÛŒÙčیÚș۔"</string>
diff --git a/libs/WindowManager/Shell/res/values-uz/strings.xml b/libs/WindowManager/Shell/res/values-uz/strings.xml
index c0dc033..9b5aa6f 100644
--- a/libs/WindowManager/Shell/res/values-uz/strings.xml
+++ b/libs/WindowManager/Shell/res/values-uz/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Quyi oʻngga surish"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> sozlamalari"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Bulutchani yopish"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Qalqib chiqmasin"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Suhbatlar bulutchalar shaklida chiqmasin"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Bulutchalar yordamida subhatlashish"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Yangi xabarlar qalqib chiquvchi belgilar yoki bulutchalar kabi chiqadi. Xabarni ochish uchun bildirishnoma ustiga bosing. Xabarni qayta joylash uchun bildirishnomani suring."</string>
diff --git a/libs/WindowManager/Shell/res/values-vi/strings.xml b/libs/WindowManager/Shell/res/values-vi/strings.xml
index 7d97400..fe5461e 100644
--- a/libs/WindowManager/Shell/res/values-vi/strings.xml
+++ b/libs/WindowManager/Shell/res/values-vi/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Chuyển tới dưới cùng bên pháșŁi"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"Cài đáș·t <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Đóng bong bóng"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Không hiện bong bóng trò chuyện"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Dừng sá»­ dỄng bong bóng cho cuộc trò chuyện"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Trò chuyện báș±ng bong bóng trò chuyện"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Các cuộc trò chuyện mới sáșœ xuáș„t hiện dưới dáșĄng biểu tÆ°á»Łng nổi hoáș·c bong bóng trò chuyện. Nháș„n để mở bong bóng trò chuyện. Kéo để di chuyển bong bóng trò chuyện."</string>
diff --git a/libs/WindowManager/Shell/res/values-watch/colors.xml b/libs/WindowManager/Shell/res/values-watch/colors.xml
new file mode 100644
index 0000000..82492bf
--- /dev/null
+++ b/libs/WindowManager/Shell/res/values-watch/colors.xml
@@ -0,0 +1,22 @@
+<?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.
+ */
+-->
+<resources>
+    <color name="splash_window_background_default">@color/splash_screen_bg_dark</color>
+</resources>
+
diff --git a/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml b/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml
index d1f50db..040aff8 100644
--- a/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"ç§»è‡łćłäž‹è§’"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>èźŸçœź"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"慳闭ćŻčèŻæłĄ"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"䞍星ç€șćŻčèŻæłĄ"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"䞍仄ćŻčèŻæłĄćœąćŒæ˜Ÿç€șćŻčèŻ"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"äœżç”šćŻčèŻæłĄèŠć€©"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"新ćŻčèŻäŒšä»„æ”źćŠšć›Ÿæ ‡æˆ–ćŻčèŻæłĄćœąćŒæ˜Ÿç€ș。ç‚čæŒ‰ćłćŻæ‰“ćŒ€ćŻčèŻæłĄă€‚æ‹–ćŠšćłćŻç§»ćŠšćŻčèŻæłĄă€‚"</string>
diff --git a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml
index 6f399e5..5fac19b 100644
--- a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"ç§»ćŽ»ćłäž‹è§’"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"「<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>ă€èš­ćźš"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"é—œé–‰ć°èŠ–çȘ—æ°ŁæłĄ"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"äžèŠéĄŻç€șć°è©±æ°ŁæłĄ"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"äžèŠé€éŽć°èŠ–çȘ—饯ç€șć°è©±"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"äœżç”šć°èŠ–çȘ—é€ČèĄŒćłæ™‚é€šèšŠ"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"æ–°ć°è©±æœƒä»„æ”źć‹•ćœ–ç€ș (ć°èŠ–çȘ—) 饯ç€șă€‚èŒ•æŒ‰ćłćŻé–‹ć•Ÿć°èŠ–çȘ—ă€‚æ‹–æ›łćłćŻç§»ć‹•ć°èŠ–çȘ—。"</string>
diff --git a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml
index 4ca49e1..0a25335 100644
--- a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"ç§»è‡łćłäž‹æ–č"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"「<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>ă€èš­ćźš"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"é—œé–‰ć°è©±æĄ†"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"äžèŠéĄŻç€șć°è©±æĄ†"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"äžèŠä»„ć°è©±æĄ†ćœąćŒéĄŻç€șć°è©±"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"é€éŽć°è©±æĄ†äŸ†èŠć€©"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"æ–°çš„ć°è©±æœƒä»„æ”źć‹•ćœ–ç€șæˆ–ć°è©±æĄ†ćœąćŒéĄŻç€șă€‚èŒ•è§žćłćŻé–‹ć•Ÿć°è©±æĄ†ïŒŒæ‹–æ›łć‰‡ćŻç§»ć‹•ć°è©±æĄ†ă€‚"</string>
diff --git a/libs/WindowManager/Shell/res/values-zu/strings.xml b/libs/WindowManager/Shell/res/values-zu/strings.xml
index 478b5a6..5b85be2 100644
--- a/libs/WindowManager/Shell/res/values-zu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zu/strings.xml
@@ -68,6 +68,7 @@
     <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Hambisa inkinobho ngakwesokudla"</string>
     <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> izilungiselelo"</string>
     <string name="bubble_dismiss_text" msgid="8816558050659478158">"Cashisa ibhamuza"</string>
+    <string name="bubbles_dont_bubble" msgid="3216183855437329223">"Ungabhamuzi"</string>
     <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ungayibhamuzi ingxoxo"</string>
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Xoxa usebenzisa amabhamuza"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Izingxoxo ezintsha zivela njengezithonjana ezintantayo, noma amabhamuza. Thepha ukuze uvule ibhamuza. Hudula ukuze ulihambise."</string>
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossActivityAnimation.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossActivityAnimation.java
index 22c9015..edefe9e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossActivityAnimation.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossActivityAnimation.java
@@ -404,7 +404,7 @@
         }
 
         @Override
-        public void onAnimationCancelled(boolean isKeyguardOccluded) {
+        public void onAnimationCancelled() {
             finishAnimation();
         }
     }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CustomizeActivityAnimation.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CustomizeActivityAnimation.java
index f0c5d8b2..2d6ec75 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CustomizeActivityAnimation.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CustomizeActivityAnimation.java
@@ -323,7 +323,7 @@
         }
 
         @Override
-        public void onAnimationCancelled(boolean isKeyguardOccluded) {
+        public void onAnimationCancelled() {
             finishAnimation();
         }
     }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipResizeGestureHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipResizeGestureHandler.java
index 956af70..68952c0 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipResizeGestureHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipResizeGestureHandler.java
@@ -32,6 +32,7 @@
 import android.hardware.input.InputManager;
 import android.os.Looper;
 import android.provider.DeviceConfig;
+import android.util.Log;
 import android.view.BatchedInputEventReceiver;
 import android.view.Choreographer;
 import android.view.InputChannel;
@@ -243,6 +244,8 @@
 
     @VisibleForTesting
     void onInputEvent(InputEvent ev) {
+        // TODO: remove logging once b/269505548 is resolved
+        Log.d(TAG, "onInputEvent: " + ev);
         if (!mEnableDragCornerResize && !mEnablePinchResize) {
             // No need to handle anything if neither form of resizing is enabled.
             return;
@@ -393,6 +396,7 @@
 
     @VisibleForTesting
     void onPinchResize(MotionEvent ev) {
+        Log.d(TAG, "onPinchResize: " + ev);
         int action = ev.getActionMasked();
 
         if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
@@ -436,6 +440,10 @@
             mLastPoint.set(x0, y0);
             mLastSecondPoint.set(x1, y1);
 
+            // TODO: remove logging once b/269505548 is resolved
+            Log.d(TAG, "at onPinchResize (" + x0 + ", " + y0 + ")");
+            Log.d(TAG, "at onPinchResize (" + x1 + ", " + y1 + ")");
+
             // Capture inputs
             if (!mThresholdCrossed
                     && (distanceBetween(mDownSecondPoint, mLastSecondPoint) > mTouchSlop
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
index 498f95c..2ac0548 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
@@ -457,7 +457,7 @@
                 }
             }
             @Override
-            public void onAnimationCancelled(boolean isKeyguardOccluded) {
+            public void onAnimationCancelled() {
                 final WindowContainerTransaction evictWct = new WindowContainerTransaction();
                 mStageCoordinator.prepareEvictInvisibleChildTasks(evictWct);
                 mSyncQueue.queue(evictWct);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
index ceef373..4d53f5b 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
@@ -482,7 +482,7 @@
                 }
             }
             @Override
-            public void onAnimationCancelled(boolean isKeyguardOccluded) {
+            public void onAnimationCancelled() {
                 if (isEnteringSplit) {
                     mMainExecutor.execute(() -> exitSplitScreen(
                             mSideStage.getChildCount() == 0 ? mMainStage : mSideStage,
@@ -868,7 +868,7 @@
                         onRemoteAnimationFinished(apps);
                         t.apply();
                         try {
-                            adapter.getRunner().onAnimationCancelled(mKeyguardShowing);
+                            adapter.getRunner().onAnimationCancelled();
                         } catch (RemoteException e) {
                             Slog.e(TAG, "Error starting remote animation", e);
                         }
@@ -1012,11 +1012,11 @@
             }
 
             @Override
-            public void onAnimationCancelled(boolean isKeyguardOccluded) {
+            public void onAnimationCancelled() {
                 onRemoteAnimationFinishedOrCancelled(evictWct);
                 setDividerVisibility(true, null);
                 try {
-                    adapter.getRunner().onAnimationCancelled(isKeyguardOccluded);
+                    adapter.getRunner().onAnimationCancelled();
                 } catch (RemoteException e) {
                     Slog.e(TAG, "Error starting remote animation", e);
                 }
@@ -1037,7 +1037,7 @@
                         onRemoteAnimationFinished(apps);
                         t.apply();
                         try {
-                            adapter.getRunner().onAnimationCancelled(mKeyguardShowing);
+                            adapter.getRunner().onAnimationCancelled();
                         } catch (RemoteException e) {
                             Slog.e(TAG, "Error starting remote animation", e);
                         }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/LegacyTransitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/LegacyTransitions.java
index 61e92f3..61e11e8 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/LegacyTransitions.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/LegacyTransitions.java
@@ -107,7 +107,7 @@
             }
 
             @Override
-            public void onAnimationCancelled(boolean isKeyguardOccluded) throws RemoteException {
+            public void onAnimationCancelled() throws RemoteException {
                 mCancelled = true;
                 mApps = mWallpapers = mNonApps = null;
                 checkApply();
diff --git a/libs/androidfw/ApkAssets.cpp b/libs/androidfw/ApkAssets.cpp
index 15aaae2..f0c6395 100644
--- a/libs/androidfw/ApkAssets.cpp
+++ b/libs/androidfw/ApkAssets.cpp
@@ -27,39 +27,34 @@
 
 constexpr const char* kResourcesArsc = "resources.arsc";
 
-ApkAssets::ApkAssets(std::unique_ptr<Asset> resources_asset,
+ApkAssets::ApkAssets(PrivateConstructorUtil, std::unique_ptr<Asset> resources_asset,
                      std::unique_ptr<LoadedArsc> loaded_arsc,
-                     std::unique_ptr<AssetsProvider> assets,
-                     package_property_t property_flags,
-                     std::unique_ptr<Asset> idmap_asset,
-                     std::unique_ptr<LoadedIdmap> loaded_idmap)
+                     std::unique_ptr<AssetsProvider> assets, package_property_t property_flags,
+                     std::unique_ptr<Asset> idmap_asset, std::unique_ptr<LoadedIdmap> loaded_idmap)
     : resources_asset_(std::move(resources_asset)),
       loaded_arsc_(std::move(loaded_arsc)),
       assets_provider_(std::move(assets)),
       property_flags_(property_flags),
       idmap_asset_(std::move(idmap_asset)),
-      loaded_idmap_(std::move(loaded_idmap)) {}
+      loaded_idmap_(std::move(loaded_idmap)) {
+}
 
-std::unique_ptr<ApkAssets> ApkAssets::Load(const std::string& path, package_property_t flags) {
+ApkAssetsPtr ApkAssets::Load(const std::string& path, package_property_t flags) {
   return Load(ZipAssetsProvider::Create(path, flags), flags);
 }
 
-std::unique_ptr<ApkAssets> ApkAssets::LoadFromFd(base::unique_fd fd,
-                                                 const std::string& debug_name,
-                                                 package_property_t flags,
-                                                 off64_t offset,
-                                                 off64_t len) {
+ApkAssetsPtr ApkAssets::LoadFromFd(base::unique_fd fd, const std::string& debug_name,
+                                   package_property_t flags, off64_t offset, off64_t len) {
   return Load(ZipAssetsProvider::Create(std::move(fd), debug_name, offset, len), flags);
 }
 
-std::unique_ptr<ApkAssets> ApkAssets::Load(std::unique_ptr<AssetsProvider> assets,
-                                           package_property_t flags) {
+ApkAssetsPtr ApkAssets::Load(std::unique_ptr<AssetsProvider> assets, package_property_t flags) {
   return LoadImpl(std::move(assets), flags, nullptr /* idmap_asset */, nullptr /* loaded_idmap */);
 }
 
-std::unique_ptr<ApkAssets> ApkAssets::LoadTable(std::unique_ptr<Asset> resources_asset,
-                                                std::unique_ptr<AssetsProvider> assets,
-                                                package_property_t flags) {
+ApkAssetsPtr ApkAssets::LoadTable(std::unique_ptr<Asset> resources_asset,
+                                  std::unique_ptr<AssetsProvider> assets,
+                                  package_property_t flags) {
   if (resources_asset == nullptr) {
     return {};
   }
@@ -67,8 +62,7 @@
                   nullptr /* loaded_idmap */);
 }
 
-std::unique_ptr<ApkAssets> ApkAssets::LoadOverlay(const std::string& idmap_path,
-                                                  package_property_t flags) {
+ApkAssetsPtr ApkAssets::LoadOverlay(const std::string& idmap_path, package_property_t flags) {
   CHECK((flags & PROPERTY_LOADER) == 0U) << "Cannot load RROs through loaders";
   auto idmap_asset = AssetsProvider::CreateAssetFromFile(idmap_path);
   if (idmap_asset == nullptr) {
@@ -103,10 +97,10 @@
                   std::move(loaded_idmap));
 }
 
-std::unique_ptr<ApkAssets> ApkAssets::LoadImpl(std::unique_ptr<AssetsProvider> assets,
-                                               package_property_t property_flags,
-                                               std::unique_ptr<Asset> idmap_asset,
-                                               std::unique_ptr<LoadedIdmap> loaded_idmap) {
+ApkAssetsPtr ApkAssets::LoadImpl(std::unique_ptr<AssetsProvider> assets,
+                                 package_property_t property_flags,
+                                 std::unique_ptr<Asset> idmap_asset,
+                                 std::unique_ptr<LoadedIdmap> loaded_idmap) {
   if (assets == nullptr) {
     return {};
   }
@@ -125,11 +119,11 @@
                   std::move(idmap_asset), std::move(loaded_idmap));
 }
 
-std::unique_ptr<ApkAssets> ApkAssets::LoadImpl(std::unique_ptr<Asset> resources_asset,
-                                               std::unique_ptr<AssetsProvider> assets,
-                                               package_property_t property_flags,
-                                               std::unique_ptr<Asset> idmap_asset,
-                                               std::unique_ptr<LoadedIdmap> loaded_idmap) {
+ApkAssetsPtr ApkAssets::LoadImpl(std::unique_ptr<Asset> resources_asset,
+                                 std::unique_ptr<AssetsProvider> assets,
+                                 package_property_t property_flags,
+                                 std::unique_ptr<Asset> idmap_asset,
+                                 std::unique_ptr<LoadedIdmap> loaded_idmap) {
   if (assets == nullptr ) {
     return {};
   }
@@ -155,10 +149,9 @@
     return {};
   }
 
-  return std::unique_ptr<ApkAssets>(new ApkAssets(std::move(resources_asset),
-                                                  std::move(loaded_arsc), std::move(assets),
-                                                  property_flags, std::move(idmap_asset),
-                                                  std::move(loaded_idmap)));
+  return ApkAssetsPtr::make(PrivateConstructorUtil{}, std::move(resources_asset),
+                            std::move(loaded_arsc), std::move(assets), property_flags,
+                            std::move(idmap_asset), std::move(loaded_idmap));
 }
 
 std::optional<std::string_view> ApkAssets::GetPath() const {
@@ -174,4 +167,5 @@
   return IsLoader() || ((!loaded_idmap_ || loaded_idmap_->IsUpToDate())
                         && assets_provider_->IsUpToDate());
 }
+
 }  // namespace android
diff --git a/libs/androidfw/ApkParsing.cpp b/libs/androidfw/ApkParsing.cpp
index 32d2c5b..7eedfdb 100644
--- a/libs/androidfw/ApkParsing.cpp
+++ b/libs/androidfw/ApkParsing.cpp
@@ -56,6 +56,11 @@
         return nullptr;
     }
 
+    // Make sure file starts with 'lib/' prefix.
+    if (strncmp(fileName, APK_LIB.data(), APK_LIB_LEN) != 0) {
+        return nullptr;
+    }
+
     // Make sure there aren't subdirectories by checking if the next / after lib/ is the last slash
     if (memchr(fileName + APK_LIB_LEN, '/', fileNameLen - APK_LIB_LEN) != lastSlash) {
         return nullptr;
diff --git a/libs/androidfw/AssetManager2.cpp b/libs/androidfw/AssetManager2.cpp
index 68f5e4a..d604df3 100644
--- a/libs/androidfw/AssetManager2.cpp
+++ b/libs/androidfw/AssetManager2.cpp
@@ -91,13 +91,14 @@
   StringPoolRef entry_string_ref;
 };
 
-AssetManager2::AssetManager2() {
-  memset(&configuration_, 0, sizeof(configuration_));
+AssetManager2::AssetManager2(ApkAssetsList apk_assets, const ResTable_config& configuration)
+    : configuration_(configuration) {
+  // Don't invalidate caches here as there's nothing cached yet.
+  SetApkAssets(apk_assets, false);
 }
 
-bool AssetManager2::SetApkAssets(std::vector<const ApkAssets*> apk_assets, bool invalidate_caches) {
-  apk_assets_ = std::move(apk_assets);
-  BuildDynamicRefTable();
+bool AssetManager2::SetApkAssets(ApkAssetsList apk_assets, bool invalidate_caches) {
+  BuildDynamicRefTable(apk_assets);
   RebuildFilterList();
   if (invalidate_caches) {
     InvalidateCaches(static_cast<uint32_t>(-1));
@@ -105,7 +106,13 @@
   return true;
 }
 
-void AssetManager2::BuildDynamicRefTable() {
+bool AssetManager2::SetApkAssets(std::initializer_list<ApkAssetsPtr> apk_assets,
+                                 bool invalidate_caches) {
+  return SetApkAssets(ApkAssetsList(apk_assets.begin(), apk_assets.size()), invalidate_caches);
+}
+
+void AssetManager2::BuildDynamicRefTable(ApkAssetsList apk_assets) {
+  apk_assets_.assign(apk_assets.begin(), apk_assets.end());
   package_groups_.clear();
   package_ids_.fill(0xff);
 
@@ -116,16 +123,19 @@
 
   // Overlay resources are not directly referenced by an application so their resource ids
   // can change throughout the application's lifetime. Assign overlay package ids last.
-  std::vector<const ApkAssets*> sorted_apk_assets(apk_assets_);
-  std::stable_partition(sorted_apk_assets.begin(), sorted_apk_assets.end(), [](const ApkAssets* a) {
-    return !a->IsOverlay();
-  });
+  std::vector<const ApkAssets*> sorted_apk_assets;
+  sorted_apk_assets.reserve(apk_assets_.size());
+  for (auto& asset : apk_assets) {
+    sorted_apk_assets.push_back(asset.get());
+  }
+  std::stable_partition(sorted_apk_assets.begin(), sorted_apk_assets.end(),
+                        [](auto a) { return !a->IsOverlay(); });
 
   // The assets cookie must map to the position of the apk assets in the unsorted apk assets list.
   std::unordered_map<const ApkAssets*, ApkAssetsCookie> apk_assets_cookies;
-  apk_assets_cookies.reserve(apk_assets_.size());
-  for (size_t i = 0, n = apk_assets_.size(); i < n; i++) {
-    apk_assets_cookies[apk_assets_[i]] = static_cast<ApkAssetsCookie>(i);
+  apk_assets_cookies.reserve(apk_assets.size());
+  for (size_t i = 0, n = apk_assets.size(); i < n; i++) {
+    apk_assets_cookies[apk_assets[i].get()] = static_cast<ApkAssetsCookie>(i);
   }
 
   // 0x01 is reserved for the android package.
@@ -242,7 +252,8 @@
 
   std::string list;
   for (const auto& apk_assets : apk_assets_) {
-    base::StringAppendF(&list, "%s,", apk_assets->GetDebugName().c_str());
+    auto assets = apk_assets.promote();
+    base::StringAppendF(&list, "%s,", assets ? assets->GetDebugName().c_str() : "nullptr");
   }
   LOG(INFO) << "ApkAssets: " << list;
 
@@ -279,7 +290,8 @@
   if (cookie < 0 || static_cast<size_t>(cookie) >= apk_assets_.size()) {
     return nullptr;
   }
-  return apk_assets_[cookie]->GetLoadedArsc()->GetStringPool();
+  auto assets = apk_assets_[cookie].promote();
+  return assets ? assets->GetLoadedArsc()->GetStringPool() : nullptr;
 }
 
 const DynamicRefTable* AssetManager2::GetDynamicRefTableForPackage(uint32_t package_id) const {
@@ -331,7 +343,11 @@
                                             std::string* out) const {
   uint8_t package_id = 0U;
   for (const auto& apk_assets : apk_assets_) {
-    const LoadedArsc* loaded_arsc = apk_assets->GetLoadedArsc();
+    auto assets = apk_assets.promote();
+    if (!assets) {
+      continue;
+    }
+    const LoadedArsc* loaded_arsc = assets->GetLoadedArsc();
     if (loaded_arsc == nullptr) {
       continue;
     }
@@ -384,8 +400,10 @@
 }
 
 bool AssetManager2::ContainsAllocatedTable() const {
-  return std::find_if(apk_assets_.begin(), apk_assets_.end(),
-                      std::mem_fn(&ApkAssets::IsTableAllocated)) != apk_assets_.end();
+  return std::find_if(apk_assets_.begin(), apk_assets_.end(), [](auto&& assets_weak) {
+           auto assets = assets_weak.promote();
+           return assets && assets->IsTableAllocated();
+         }) != apk_assets_.end();
 }
 
 void AssetManager2::SetConfiguration(const ResTable_config& configuration) {
@@ -398,8 +416,8 @@
   }
 }
 
-std::set<const ApkAssets*> AssetManager2::GetNonSystemOverlays() const {
-  std::set<const ApkAssets*> non_system_overlays;
+std::set<AssetManager2::ApkAssetsPtr> AssetManager2::GetNonSystemOverlays() const {
+  std::set<ApkAssetsPtr> non_system_overlays;
   for (const PackageGroup& package_group : package_groups_) {
     bool found_system_package = false;
     for (const ConfiguredPackage& package : package_group.packages_) {
@@ -411,7 +429,9 @@
 
     if (!found_system_package) {
       for (const ConfiguredOverlay& overlay : package_group.overlays_) {
-        non_system_overlays.insert(apk_assets_[overlay.cookie]);
+        if (auto asset = apk_assets_[overlay.cookie].promote()) {
+          non_system_overlays.insert(std::move(asset));
+        }
       }
     }
   }
@@ -423,21 +443,24 @@
     bool exclude_system, bool exclude_mipmap) const {
   ATRACE_NAME("AssetManager::GetResourceConfigurations");
   const auto non_system_overlays =
-      (exclude_system) ? GetNonSystemOverlays() : std::set<const ApkAssets*>();
+      exclude_system ? GetNonSystemOverlays() : std::set<ApkAssetsPtr>();
 
   std::set<ResTable_config> configurations;
   for (const PackageGroup& package_group : package_groups_) {
     for (size_t i = 0; i < package_group.packages_.size(); i++) {
       const ConfiguredPackage& package = package_group.packages_[i];
-      if (exclude_system && package.loaded_package_->IsSystem()) {
-        continue;
-      }
-
-      auto apk_assets = apk_assets_[package_group.cookies_[i]];
-      if (exclude_system && apk_assets->IsOverlay() &&
-          non_system_overlays.find(apk_assets) == non_system_overlays.end()) {
-        // Exclude overlays that target system resources.
-        continue;
+      if (exclude_system) {
+        if (package.loaded_package_->IsSystem()) {
+          continue;
+        }
+        if (!non_system_overlays.empty()) {
+          // Exclude overlays that target only system resources.
+          auto apk_assets = apk_assets_[package_group.cookies_[i]].promote();
+          if (apk_assets && apk_assets->IsOverlay() &&
+              non_system_overlays.find(apk_assets) == non_system_overlays.end()) {
+            continue;
+          }
+        }
       }
 
       auto result = package.loaded_package_->CollectConfigurations(exclude_mipmap, &configurations);
@@ -454,20 +477,23 @@
   ATRACE_NAME("AssetManager::GetResourceLocales");
   std::set<std::string> locales;
   const auto non_system_overlays =
-      (exclude_system) ? GetNonSystemOverlays() : std::set<const ApkAssets*>();
+      exclude_system ? GetNonSystemOverlays() : std::set<ApkAssetsPtr>();
 
   for (const PackageGroup& package_group : package_groups_) {
     for (size_t i = 0; i < package_group.packages_.size(); i++) {
       const ConfiguredPackage& package = package_group.packages_[i];
-      if (exclude_system && package.loaded_package_->IsSystem()) {
-        continue;
-      }
-
-      auto apk_assets = apk_assets_[package_group.cookies_[i]];
-      if (exclude_system && apk_assets->IsOverlay() &&
-          non_system_overlays.find(apk_assets) == non_system_overlays.end()) {
-        // Exclude overlays that target system resources.
-        continue;
+      if (exclude_system) {
+        if (package.loaded_package_->IsSystem()) {
+          continue;
+        }
+        if (!non_system_overlays.empty()) {
+          // Exclude overlays that target only system resources.
+          auto apk_assets = apk_assets_[package_group.cookies_[i]].promote();
+          if (apk_assets && apk_assets->IsOverlay() &&
+              non_system_overlays.find(apk_assets) == non_system_overlays.end()) {
+            continue;
+          }
+        }
       }
 
       package.loaded_package_->CollectLocales(merge_equivalent_languages, &locales);
@@ -492,13 +518,12 @@
   ATRACE_NAME("AssetManager::OpenDir");
 
   std::string full_path = "assets/" + dirname;
-  std::unique_ptr<SortedVector<AssetDir::FileInfo>> files =
-      util::make_unique<SortedVector<AssetDir::FileInfo>>();
+  auto files = util::make_unique<SortedVector<AssetDir::FileInfo>>();
 
   // Start from the back.
   for (auto iter = apk_assets_.rbegin(); iter != apk_assets_.rend(); ++iter) {
-    const ApkAssets* apk_assets = *iter;
-    if (apk_assets->IsOverlay()) {
+    auto apk_assets = iter->promote();
+    if (!apk_assets || apk_assets->IsOverlay()) {
       continue;
     }
 
@@ -527,14 +552,15 @@
                                                    Asset::AccessMode mode,
                                                    ApkAssetsCookie* out_cookie) const {
   for (int32_t i = apk_assets_.size() - 1; i >= 0; i--) {
+    const auto assets = apk_assets_[i].promote();
     // Prevent RRO from modifying assets and other entries accessed by file
     // path. Explicitly asking for a path in a given package (denoted by a
     // cookie) is still OK.
-    if (apk_assets_[i]->IsOverlay()) {
+    if (!assets || assets->IsOverlay()) {
       continue;
     }
 
-    std::unique_ptr<Asset> asset = apk_assets_[i]->GetAssetsProvider()->Open(filename, mode);
+    std::unique_ptr<Asset> asset = assets->GetAssetsProvider()->Open(filename, mode);
     if (asset) {
       if (out_cookie != nullptr) {
         *out_cookie = i;
@@ -555,7 +581,8 @@
   if (cookie < 0 || static_cast<size_t>(cookie) >= apk_assets_.size()) {
     return {};
   }
-  return apk_assets_[cookie]->GetAssetsProvider()->Open(filename, mode);
+  auto assets = apk_assets_[cookie].promote();
+  return assets ? assets->GetAssetsProvider()->Open(filename, mode) : nullptr;
 }
 
 base::expected<FindEntryResult, NullOrIOError> AssetManager2::FindEntry(
@@ -603,7 +630,12 @@
   }
 
   bool overlaid = false;
-  if (!stop_at_first_match && !ignore_configuration && !apk_assets_[result->cookie]->IsLoader()) {
+  auto assets = apk_assets_[result->cookie].promote();
+  if (!assets) {
+    ALOGE("Found expired ApkAssets #%d for resource ID 0x%08x.", result->cookie, resid);
+    return base::unexpected(std::nullopt);
+  }
+  if (!stop_at_first_match && !ignore_configuration && !assets->IsLoader()) {
     for (const auto& id_map : package_group.overlays_) {
       auto overlay_entry = id_map.overlay_res_maps_.Lookup(resid);
       if (!overlay_entry) {
@@ -632,8 +664,8 @@
 
         if (UNLIKELY(logging_enabled)) {
           last_resolution_.steps.push_back(
-              Resolution::Step{Resolution::Step::Type::OVERLAID_INLINE, String8(), result->cookie});
-          if (auto path = apk_assets_[result->cookie]->GetPath()) {
+              Resolution::Step{Resolution::Step::Type::OVERLAID_INLINE, result->cookie, String8()});
+          if (auto path = assets->GetPath()) {
             const std::string overlay_path = path->data();
             if (IsFabricatedOverlay(overlay_path)) {
               // FRRO don't have package name so we use the creating package here.
@@ -682,8 +714,8 @@
 
       if (UNLIKELY(logging_enabled)) {
         last_resolution_.steps.push_back(
-            Resolution::Step{Resolution::Step::Type::OVERLAID, overlay_result->config.toString(),
-                             overlay_result->cookie});
+            Resolution::Step{Resolution::Step::Type::OVERLAID, overlay_result->cookie,
+                             overlay_result->config.toString()});
         last_resolution_.best_package_name =
             overlay_result->package_name->c_str();
         overlaid = true;
@@ -769,8 +801,7 @@
       } else {
         if (UNLIKELY(logging_enabled)) {
           last_resolution_.steps.push_back(Resolution::Step{Resolution::Step::Type::SKIPPED,
-                                                      this_config.toString(),
-                                                      cookie});
+                                                            cookie, this_config.toString()});
         }
         continue;
       }
@@ -786,8 +817,7 @@
       if (!offset.has_value()) {
         if (UNLIKELY(logging_enabled)) {
           last_resolution_.steps.push_back(Resolution::Step{Resolution::Step::Type::NO_ENTRY,
-                                                      this_config.toString(),
-                                                      cookie});
+                                                            cookie, this_config.toString()});
         }
         continue;
       }
@@ -800,8 +830,7 @@
 
       if (UNLIKELY(logging_enabled)) {
         last_resolution_.steps.push_back(Resolution::Step{resolution_type,
-                                                          this_config.toString(),
-                                                          cookie});
+                                                          cookie, this_config.toString()});
       }
 
       // Any configuration will suffice, so break.
@@ -839,13 +868,7 @@
 }
 
 void AssetManager2::ResetResourceResolution() const {
-  last_resolution_.cookie = kInvalidCookie;
-  last_resolution_.resid = 0;
-  last_resolution_.steps.clear();
-  last_resolution_.type_string_ref = StringPoolRef();
-  last_resolution_.entry_string_ref = StringPoolRef();
-  last_resolution_.best_config_name.clear();
-  last_resolution_.best_package_name.clear();
+  last_resolution_ = Resolution{};
 }
 
 void AssetManager2::SetResourceResolutionLoggingEnabled(bool enabled) {
@@ -868,7 +891,9 @@
   }
 
   const uint32_t resid = last_resolution_.resid;
-  const auto package = apk_assets_[cookie]->GetLoadedArsc()->GetPackageById(get_package_id(resid));
+  auto assets = apk_assets_[cookie].promote();
+  const auto package =
+      assets ? assets->GetLoadedArsc()->GetPackageById(get_package_id(resid)) : nullptr;
 
   std::string resource_name_string;
   if (package != nullptr) {
@@ -885,21 +910,23 @@
                                    configuration_.toString().c_str());
 
   for (const Resolution::Step& step : last_resolution_.steps) {
-    const static std::unordered_map<Resolution::Step::Type, const char*> kStepStrings = {
-        {Resolution::Step::Type::INITIAL,         "Found initial"},
-        {Resolution::Step::Type::BETTER_MATCH,    "Found better"},
-        {Resolution::Step::Type::OVERLAID,        "Overlaid"},
-        {Resolution::Step::Type::OVERLAID_INLINE, "Overlaid inline"},
-        {Resolution::Step::Type::SKIPPED,         "Skipped"},
-        {Resolution::Step::Type::NO_ENTRY,        "No entry"}
+    constexpr static std::array kStepStrings = {
+        "Found initial",
+        "Found better",
+        "Overlaid",
+        "Overlaid inline",
+        "Skipped",
+        "No entry"
     };
 
-    const auto prefix = kStepStrings.find(step.type);
-    if (prefix == kStepStrings.end()) {
+    if (step.type < Resolution::Step::Type::INITIAL
+        || step.type > Resolution::Step::Type::NO_ENTRY) {
       continue;
     }
-
-    log_stream << "\n\t" << prefix->second << ": " << apk_assets_[step.cookie]->GetDebugName();
+    const auto prefix = kStepStrings[int(step.type) - int(Resolution::Step::Type::INITIAL)];
+    auto assets = apk_assets_[step.cookie].promote();
+    log_stream << "\n\t" << prefix << ": " << (assets ? assets->GetDebugName() : "<null>")
+               << " #" << step.cookie;
     if (!step.config_name.isEmpty()) {
       log_stream << " - " << step.config_name;
     }
@@ -1564,11 +1591,14 @@
     // Determine which ApkAssets are loaded in both theme AssetManagers.
     const auto& src_assets = source.asset_manager_->GetApkAssets();
     for (size_t i = 0; i < src_assets.size(); i++) {
-      const ApkAssets* src_asset = src_assets[i];
+      auto src_asset = src_assets[i].promote();
+      if (!src_asset) {
+        continue;
+      }
 
       const auto& dest_assets = asset_manager_->GetApkAssets();
       for (size_t j = 0; j < dest_assets.size(); j++) {
-        const ApkAssets* dest_asset = dest_assets[j];
+        auto dest_asset = dest_assets[j].promote();
         if (src_asset != dest_asset) {
           // ResourcesManager caches and reuses ApkAssets when the same apk must be present in
           // multiple AssetManagers. Two ApkAssets point to the same version of the same resources
diff --git a/libs/androidfw/Idmap.cpp b/libs/androidfw/Idmap.cpp
index 8983574..5f98b8f 100644
--- a/libs/androidfw/Idmap.cpp
+++ b/libs/androidfw/Idmap.cpp
@@ -294,14 +294,14 @@
                                dtohl(header->version), kIdmapCurrentVersion);
     return {};
   }
+  std::optional<std::string_view> target_path = ReadString(&data_ptr, &data_size, "target path");
+    if (!target_path) {
+      return {};
+    }
   std::optional<std::string_view> overlay_path = ReadString(&data_ptr, &data_size, "overlay path");
   if (!overlay_path) {
     return {};
   }
-  std::optional<std::string_view> target_path = ReadString(&data_ptr, &data_size, "target path");
-  if (!target_path) {
-    return {};
-  }
   if (!ReadString(&data_ptr, &data_size, "target name") ||
       !ReadString(&data_ptr, &data_size, "debug info")) {
     return {};
@@ -364,7 +364,7 @@
   return std::unique_ptr<LoadedIdmap>(
       new LoadedIdmap(std::string(idmap_path), header, data_header, target_entries,
                       target_inline_entries, target_inline_entry_values, configurations,
-                      overlay_entries, std::move(idmap_string_pool), *target_path, *overlay_path));
+                      overlay_entries, std::move(idmap_string_pool), *overlay_path, *target_path));
 }
 
 bool LoadedIdmap::IsUpToDate() const {
diff --git a/libs/androidfw/include/androidfw/ApkAssets.h b/libs/androidfw/include/androidfw/ApkAssets.h
index 6f88f41..1fa6752 100644
--- a/libs/androidfw/include/androidfw/ApkAssets.h
+++ b/libs/androidfw/include/androidfw/ApkAssets.h
@@ -17,12 +17,13 @@
 #ifndef APKASSETS_H_
 #define APKASSETS_H_
 
+#include <utils/RefBase.h>
+
 #include <memory>
 #include <string>
 
 #include "android-base/macros.h"
 #include "android-base/unique_fd.h"
-
 #include "androidfw/Asset.h"
 #include "androidfw/AssetsProvider.h"
 #include "androidfw/Idmap.h"
@@ -31,34 +32,33 @@
 
 namespace android {
 
+class ApkAssets;
+
+using ApkAssetsPtr = sp<ApkAssets>;
+
 // Holds an APK.
-class ApkAssets {
+class ApkAssets : public RefBase {
  public:
   // Creates an ApkAssets from a path on device.
-  static std::unique_ptr<ApkAssets> Load(const std::string& path,
-                                         package_property_t flags = 0U);
+  static ApkAssetsPtr Load(const std::string& path, package_property_t flags = 0U);
 
   // Creates an ApkAssets from an open file descriptor.
-  static std::unique_ptr<ApkAssets> LoadFromFd(base::unique_fd fd,
-                                               const std::string& debug_name,
-                                               package_property_t flags = 0U,
-                                               off64_t offset = 0,
-                                               off64_t len = AssetsProvider::kUnknownLength);
+  static ApkAssetsPtr LoadFromFd(base::unique_fd fd, const std::string& debug_name,
+                                 package_property_t flags = 0U, off64_t offset = 0,
+                                 off64_t len = AssetsProvider::kUnknownLength);
 
   // Creates an ApkAssets from an AssetProvider.
   // The ApkAssets will take care of destroying the AssetsProvider when it is destroyed.
-  static std::unique_ptr<ApkAssets> Load(std::unique_ptr<AssetsProvider> assets,
-                                         package_property_t flags = 0U);
+  static ApkAssetsPtr Load(std::unique_ptr<AssetsProvider> assets, package_property_t flags = 0U);
 
   // Creates an ApkAssets from the given asset file representing a resources.arsc.
-  static std::unique_ptr<ApkAssets> LoadTable(std::unique_ptr<Asset> resources_asset,
-                                              std::unique_ptr<AssetsProvider> assets,
-                                              package_property_t flags = 0U);
+  static ApkAssetsPtr LoadTable(std::unique_ptr<Asset> resources_asset,
+                                std::unique_ptr<AssetsProvider> assets,
+                                package_property_t flags = 0U);
 
   // Creates an ApkAssets from an IDMAP, which contains the original APK path, and the overlay
   // data.
-  static std::unique_ptr<ApkAssets> LoadOverlay(const std::string& idmap_path,
-                                                package_property_t flags = 0U);
+  static ApkAssetsPtr LoadOverlay(const std::string& idmap_path, package_property_t flags = 0U);
 
   // Path to the contents of the ApkAssets on disk. The path could represent an APk, a directory,
   // or some other file type.
@@ -95,22 +95,27 @@
   bool IsUpToDate() const;
 
  private:
-  static std::unique_ptr<ApkAssets> LoadImpl(std::unique_ptr<AssetsProvider> assets,
-                                             package_property_t property_flags,
-                                             std::unique_ptr<Asset> idmap_asset,
-                                             std::unique_ptr<LoadedIdmap> loaded_idmap);
+  static ApkAssetsPtr LoadImpl(std::unique_ptr<AssetsProvider> assets,
+                               package_property_t property_flags,
+                               std::unique_ptr<Asset> idmap_asset,
+                               std::unique_ptr<LoadedIdmap> loaded_idmap);
 
-  static std::unique_ptr<ApkAssets> LoadImpl(std::unique_ptr<Asset> resources_asset,
-                                             std::unique_ptr<AssetsProvider> assets,
-                                             package_property_t property_flags,
-                                             std::unique_ptr<Asset> idmap_asset,
-                                             std::unique_ptr<LoadedIdmap> loaded_idmap);
+  static ApkAssetsPtr LoadImpl(std::unique_ptr<Asset> resources_asset,
+                               std::unique_ptr<AssetsProvider> assets,
+                               package_property_t property_flags,
+                               std::unique_ptr<Asset> idmap_asset,
+                               std::unique_ptr<LoadedIdmap> loaded_idmap);
 
-  ApkAssets(std::unique_ptr<Asset> resources_asset,
-            std::unique_ptr<LoadedArsc> loaded_arsc,
-            std::unique_ptr<AssetsProvider> assets,
-            package_property_t property_flags,
-            std::unique_ptr<Asset> idmap_asset,
+  // Allows us to make it possible to call make_shared from inside the class but still keeps the
+  // ctor 'private' for all means and purposes.
+  struct PrivateConstructorUtil {
+    explicit PrivateConstructorUtil() = default;
+  };
+
+ public:
+  ApkAssets(PrivateConstructorUtil, std::unique_ptr<Asset> resources_asset,
+            std::unique_ptr<LoadedArsc> loaded_arsc, std::unique_ptr<AssetsProvider> assets,
+            package_property_t property_flags, std::unique_ptr<Asset> idmap_asset,
             std::unique_ptr<LoadedIdmap> loaded_idmap);
 
   std::unique_ptr<Asset> resources_asset_;
diff --git a/libs/androidfw/include/androidfw/AssetManager2.h b/libs/androidfw/include/androidfw/AssetManager2.h
index f10cb9b..1f97995 100644
--- a/libs/androidfw/include/androidfw/AssetManager2.h
+++ b/libs/androidfw/include/androidfw/AssetManager2.h
@@ -17,14 +17,16 @@
 #ifndef ANDROIDFW_ASSETMANAGER2_H_
 #define ANDROIDFW_ASSETMANAGER2_H_
 
-#include "android-base/function_ref.h"
-#include "android-base/macros.h"
+#include <utils/RefBase.h>
 
 #include <array>
 #include <limits>
 #include <set>
+#include <span>
 #include <unordered_map>
 
+#include "android-base/function_ref.h"
+#include "android-base/macros.h"
 #include "androidfw/ApkAssets.h"
 #include "androidfw/Asset.h"
 #include "androidfw/AssetManager.h"
@@ -94,18 +96,25 @@
     size_t entry_len = 0u;
   };
 
-  AssetManager2();
+  using ApkAssetsPtr = sp<const ApkAssets>;
+  using ApkAssetsWPtr = wp<const ApkAssets>;
+  using ApkAssetsList = std::span<const ApkAssetsPtr>;
+
+  AssetManager2() = default;
   explicit AssetManager2(AssetManager2&& other) = default;
 
+  AssetManager2(ApkAssetsList apk_assets, const ResTable_config& configuration);
+
   // Sets/resets the underlying ApkAssets for this AssetManager. The ApkAssets
   // are not owned by the AssetManager, and must have a longer lifetime.
   //
   // Only pass invalidate_caches=false when it is known that the structure
   // change in ApkAssets is due to a safe addition of resources with completely
   // new resource IDs.
-  bool SetApkAssets(std::vector<const ApkAssets*> apk_assets, bool invalidate_caches = true);
+  bool SetApkAssets(ApkAssetsList apk_assets, bool invalidate_caches = true);
+  bool SetApkAssets(std::initializer_list<ApkAssetsPtr> apk_assets, bool invalidate_caches = true);
 
-  inline const std::vector<const ApkAssets*>& GetApkAssets() const {
+  inline const std::vector<ApkAssetsWPtr>& GetApkAssets() const {
     return apk_assets_;
   }
 
@@ -399,7 +408,7 @@
 
   // Assigns package IDs to all shared library ApkAssets.
   // Should be called whenever the ApkAssets are changed.
-  void BuildDynamicRefTable();
+  void BuildDynamicRefTable(ApkAssetsList assets);
 
   // Purge all resources that are cached and vary by the configuration axis denoted by the
   // bitmask `diff`.
@@ -410,7 +419,7 @@
   void RebuildFilterList();
 
   // Retrieves the APK paths of overlays that overlay non-system packages.
-  std::set<const ApkAssets*> GetNonSystemOverlays() const;
+  std::set<ApkAssetsPtr> GetNonSystemOverlays() const;
 
   // AssetManager2::GetBag(resid) wraps this function to track which resource ids have already
   // been seen while traversing bag parents.
@@ -419,7 +428,7 @@
 
   // The ordered list of ApkAssets to search. These are not owned by the AssetManager, and must
   // have a longer lifetime.
-  std::vector<const ApkAssets*> apk_assets_;
+  std::vector<ApkAssetsWPtr> apk_assets_;
 
   // DynamicRefTables for shared library package resolution.
   // These are ordered according to apk_assets_. The mappings may change depending on what is
@@ -433,7 +442,7 @@
 
   // The current configuration set for this AssetManager. When this changes, cached resources
   // may need to be purged.
-  ResTable_config configuration_;
+  ResTable_config configuration_ = {};
 
   // Cached set of bags. These are cached because they can inherit keys from parent bags,
   // which involves some calculation.
@@ -463,10 +472,10 @@
       // Marks what kind of override this step was.
       Type type;
 
+      ApkAssetsCookie cookie = kInvalidCookie;
+
       // Built name of configuration for this step.
       String8 config_name;
-
-      ApkAssetsCookie cookie = kInvalidCookie;
     };
 
     // Last resolved resource ID.
diff --git a/libs/androidfw/include/androidfw/Errors.h b/libs/androidfw/include/androidfw/Errors.h
index 948162d..6667747 100644
--- a/libs/androidfw/include/androidfw/Errors.h
+++ b/libs/androidfw/include/androidfw/Errors.h
@@ -34,7 +34,7 @@
 
 // Checks whether the result holds an unexpected I/O error.
 template <typename T>
-static inline bool IsIOError(const base::expected<T, NullOrIOError> result) {
+static inline bool IsIOError(const base::expected<T, NullOrIOError>& result) {
   return !result.has_value() && std::holds_alternative<IOError>(result.error());
 }
 
diff --git a/libs/androidfw/include/androidfw/MutexGuard.h b/libs/androidfw/include/androidfw/MutexGuard.h
index 6fc6d64..b6093db 100644
--- a/libs/androidfw/include/androidfw/MutexGuard.h
+++ b/libs/androidfw/include/androidfw/MutexGuard.h
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-#ifndef ANDROIDFW_MUTEXGUARD_H
-#define ANDROIDFW_MUTEXGUARD_H
+#pragma once
 
 #include <mutex>
 #include <optional>
 #include <type_traits>
+#include <utility>
 
 #include "android-base/macros.h"
 
@@ -45,20 +45,25 @@
 //
 template <typename T>
 class Guarded {
-  static_assert(!std::is_pointer<T>::value, "T must not be a raw pointer");
+  static_assert(!std::is_pointer_v<T>, "T must not be a raw pointer");
 
  public:
-  Guarded() : guarded_(std::in_place, T()) {
+  Guarded() : guarded_(std::in_place) {
   }
 
   explicit Guarded(const T& guarded) : guarded_(std::in_place, guarded) {
   }
 
-  explicit Guarded(T&& guarded) : guarded_(std::in_place, std::forward<T>(guarded)) {
+  explicit Guarded(T&& guarded) : guarded_(std::in_place, std::move(guarded)) {
   }
 
-  ~Guarded() {
-    std::lock_guard<std::mutex> scoped_lock(lock_);
+  // Unfortunately, some legacy designs make even class deletion race-prone, where some other
+  // thread may have not finished working with the same object. For those cases one may destroy the
+  // object under a lock (but please fix your code, at least eventually!).
+  template <class Func>
+  void safeDelete(Func f) {
+    std::lock_guard scoped_lock(lock_);
+    f(guarded_ ? &guarded_.value() : nullptr);
     guarded_.reset();
   }
 
@@ -96,5 +101,3 @@
 };
 
 }  // namespace android
-
-#endif  // ANDROIDFW_MUTEXGUARD_H
diff --git a/libs/androidfw/tests/ApkAssets_test.cpp b/libs/androidfw/tests/ApkAssets_test.cpp
index 19db25c..70326b7 100644
--- a/libs/androidfw/tests/ApkAssets_test.cpp
+++ b/libs/androidfw/tests/ApkAssets_test.cpp
@@ -35,8 +35,7 @@
 namespace android {
 
 TEST(ApkAssetsTest, LoadApk) {
-  std::unique_ptr<const ApkAssets> loaded_apk =
-      ApkAssets::Load(GetTestDataPath() + "/basic/basic.apk");
+  auto loaded_apk = ApkAssets::Load(GetTestDataPath() + "/basic/basic.apk");
   ASSERT_THAT(loaded_apk, NotNull());
 
   const LoadedArsc* loaded_arsc = loaded_apk->GetLoadedArsc();
@@ -50,7 +49,7 @@
   unique_fd fd(::open(path.c_str(), O_RDONLY | O_BINARY));
   ASSERT_THAT(fd.get(), Ge(0));
 
-  std::unique_ptr<const ApkAssets> loaded_apk = ApkAssets::LoadFromFd(std::move(fd), path);
+  auto loaded_apk = ApkAssets::LoadFromFd(std::move(fd), path);
   ASSERT_THAT(loaded_apk, NotNull());
 
   const LoadedArsc* loaded_arsc = loaded_apk->GetLoadedArsc();
@@ -60,8 +59,7 @@
 }
 
 TEST(ApkAssetsTest, LoadApkAsSharedLibrary) {
-  std::unique_ptr<const ApkAssets> loaded_apk =
-      ApkAssets::Load(GetTestDataPath() + "/appaslib/appaslib.apk");
+  auto loaded_apk = ApkAssets::Load(GetTestDataPath() + "/appaslib/appaslib.apk");
   ASSERT_THAT(loaded_apk, NotNull());
 
   const LoadedArsc* loaded_arsc = loaded_apk->GetLoadedArsc();
@@ -79,8 +77,7 @@
 }
 
 TEST(ApkAssetsTest, CreateAndDestroyAssetKeepsApkAssetsOpen) {
-  std::unique_ptr<const ApkAssets> loaded_apk =
-      ApkAssets::Load(GetTestDataPath() + "/basic/basic.apk");
+  auto loaded_apk = ApkAssets::Load(GetTestDataPath() + "/basic/basic.apk");
   ASSERT_THAT(loaded_apk, NotNull());
 
   { ASSERT_THAT(loaded_apk->GetAssetsProvider()->Open("res/layout/main.xml",
@@ -91,8 +88,7 @@
 }
 
 TEST(ApkAssetsTest, OpenUncompressedAssetFd) {
-  std::unique_ptr<const ApkAssets> loaded_apk =
-      ApkAssets::Load(GetTestDataPath() + "/basic/basic.apk");
+  auto loaded_apk = ApkAssets::Load(GetTestDataPath() + "/basic/basic.apk");
   ASSERT_THAT(loaded_apk, NotNull());
 
   auto asset = loaded_apk->GetAssetsProvider()->Open("assets/uncompressed.txt",
diff --git a/libs/androidfw/tests/ApkParsing_test.cpp b/libs/androidfw/tests/ApkParsing_test.cpp
index 62e88c6..ac1dc9b 100644
--- a/libs/androidfw/tests/ApkParsing_test.cpp
+++ b/libs/androidfw/tests/ApkParsing_test.cpp
@@ -74,4 +74,10 @@
   auto lastSlash = util::ValidLibraryPathLastSlash(path, false, false);
   ASSERT_THAT(lastSlash, IsNull());
 }
+
+TEST(ApkParsingTest, InvalidPrefix) {
+  const char* path = "assets/libhello.so";
+  auto lastSlash = util::ValidLibraryPathLastSlash(path, false, false);
+  ASSERT_THAT(lastSlash, IsNull());
+}
 }
\ No newline at end of file
diff --git a/libs/androidfw/tests/AssetManager2_bench.cpp b/libs/androidfw/tests/AssetManager2_bench.cpp
index c7ae618..6fae72a 100644
--- a/libs/androidfw/tests/AssetManager2_bench.cpp
+++ b/libs/androidfw/tests/AssetManager2_bench.cpp
@@ -38,9 +38,9 @@
 static void BM_AssetManagerLoadAssets(benchmark::State& state) {
   std::string path = GetTestDataPath() + "/basic/basic.apk";
   while (state.KeepRunning()) {
-    std::unique_ptr<const ApkAssets> apk = ApkAssets::Load(path);
+    auto apk = ApkAssets::Load(path);
     AssetManager2 assets;
-    assets.SetApkAssets({apk.get()});
+    assets.SetApkAssets({apk});
   }
 }
 BENCHMARK(BM_AssetManagerLoadAssets);
@@ -61,9 +61,9 @@
 static void BM_AssetManagerLoadFrameworkAssets(benchmark::State& state) {
   std::string path = kFrameworkPath;
   while (state.KeepRunning()) {
-    std::unique_ptr<const ApkAssets> apk = ApkAssets::Load(path);
+    auto apk = ApkAssets::Load(path);
     AssetManager2 assets;
-    assets.SetApkAssets({apk.get()});
+    assets.SetApkAssets({apk});
   }
 }
 BENCHMARK(BM_AssetManagerLoadFrameworkAssets);
@@ -129,14 +129,14 @@
 BENCHMARK(BM_AssetManagerGetResourceFrameworkLocaleOld);
 
 static void BM_AssetManagerGetBag(benchmark::State& state) {
-  std::unique_ptr<const ApkAssets> apk = ApkAssets::Load(GetTestDataPath() + "/styles/styles.apk");
+  auto apk = ApkAssets::Load(GetTestDataPath() + "/styles/styles.apk");
   if (apk == nullptr) {
     state.SkipWithError("Failed to load assets");
     return;
   }
 
   AssetManager2 assets;
-  assets.SetApkAssets({apk.get()});
+  assets.SetApkAssets({apk});
 
   while (state.KeepRunning()) {
     auto bag = assets.GetBag(app::R::style::StyleTwo);
@@ -181,14 +181,14 @@
 BENCHMARK(BM_AssetManagerGetBagOld);
 
 static void BM_AssetManagerGetResourceLocales(benchmark::State& state) {
-  std::unique_ptr<const ApkAssets> apk = ApkAssets::Load(kFrameworkPath);
+  auto apk = ApkAssets::Load(kFrameworkPath);
   if (apk == nullptr) {
     state.SkipWithError("Failed to load assets");
     return;
   }
 
   AssetManager2 assets;
-  assets.SetApkAssets({apk.get()});
+  assets.SetApkAssets({apk});
 
   while (state.KeepRunning()) {
     std::set<std::string> locales =
@@ -217,14 +217,14 @@
 BENCHMARK(BM_AssetManagerGetResourceLocalesOld);
 
 static void BM_AssetManagerSetConfigurationFramework(benchmark::State& state) {
-  std::unique_ptr<const ApkAssets> apk = ApkAssets::Load(kFrameworkPath);
+  auto apk = ApkAssets::Load(kFrameworkPath);
   if (apk == nullptr) {
     state.SkipWithError("Failed to load assets");
     return;
   }
 
   AssetManager2 assets;
-  assets.SetApkAssets({apk.get()});
+  assets.SetApkAssets({apk});
 
   ResTable_config config;
   memset(&config, 0, sizeof(config));
diff --git a/libs/androidfw/tests/AssetManager2_test.cpp b/libs/androidfw/tests/AssetManager2_test.cpp
index 4394740..5a5bafdf 100644
--- a/libs/androidfw/tests/AssetManager2_test.cpp
+++ b/libs/androidfw/tests/AssetManager2_test.cpp
@@ -91,19 +91,19 @@
   }
 
  protected:
-  std::unique_ptr<const ApkAssets> basic_assets_;
-  std::unique_ptr<const ApkAssets> basic_de_fr_assets_;
-  std::unique_ptr<const ApkAssets> basic_xhdpi_assets_;
-  std::unique_ptr<const ApkAssets> basic_xxhdpi_assets_;
-  std::unique_ptr<const ApkAssets> style_assets_;
-  std::unique_ptr<const ApkAssets> lib_one_assets_;
-  std::unique_ptr<const ApkAssets> lib_two_assets_;
-  std::unique_ptr<const ApkAssets> libclient_assets_;
-  std::unique_ptr<const ApkAssets> appaslib_assets_;
-  std::unique_ptr<const ApkAssets> system_assets_;
-  std::unique_ptr<const ApkAssets> app_assets_;
-  std::unique_ptr<const ApkAssets> overlay_assets_;
-  std::unique_ptr<const ApkAssets> overlayable_assets_;
+  AssetManager2::ApkAssetsPtr basic_assets_;
+  AssetManager2::ApkAssetsPtr basic_de_fr_assets_;
+  AssetManager2::ApkAssetsPtr basic_xhdpi_assets_;
+  AssetManager2::ApkAssetsPtr basic_xxhdpi_assets_;
+  AssetManager2::ApkAssetsPtr style_assets_;
+  AssetManager2::ApkAssetsPtr lib_one_assets_;
+  AssetManager2::ApkAssetsPtr lib_two_assets_;
+  AssetManager2::ApkAssetsPtr libclient_assets_;
+  AssetManager2::ApkAssetsPtr appaslib_assets_;
+  AssetManager2::ApkAssetsPtr system_assets_;
+  AssetManager2::ApkAssetsPtr app_assets_;
+  AssetManager2::ApkAssetsPtr overlay_assets_;
+  AssetManager2::ApkAssetsPtr overlayable_assets_;
 };
 
 TEST_F(AssetManager2Test, FindsResourceFromSingleApkAssets) {
@@ -114,7 +114,7 @@
 
   AssetManager2 assetmanager;
   assetmanager.SetConfiguration(desired_config);
-  assetmanager.SetApkAssets({basic_assets_.get()});
+  assetmanager.SetApkAssets({basic_assets_});
 
   auto value = assetmanager.GetResource(basic::R::string::test1);
   ASSERT_TRUE(value.has_value());
@@ -138,7 +138,7 @@
 
   AssetManager2 assetmanager;
   assetmanager.SetConfiguration(desired_config);
-  assetmanager.SetApkAssets({basic_assets_.get(), basic_de_fr_assets_.get()});
+  assetmanager.SetApkAssets({basic_assets_, basic_de_fr_assets_});
 
   auto value = assetmanager.GetResource(basic::R::string::test1);
   ASSERT_TRUE(value.has_value());
@@ -159,8 +159,7 @@
 
   // libclient is built with lib_one and then lib_two in order.
   // Reverse the order to test that proper package ID re-assignment is happening.
-  assetmanager.SetApkAssets(
-      {lib_two_assets_.get(), lib_one_assets_.get(), libclient_assets_.get()});
+  assetmanager.SetApkAssets({lib_two_assets_, lib_one_assets_, libclient_assets_});
 
   auto value = assetmanager.GetResource(libclient::R::string::foo_one);
   ASSERT_TRUE(value.has_value());
@@ -195,7 +194,7 @@
 
 TEST_F(AssetManager2Test, FindsResourceFromAppLoadedAsSharedLibrary) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({appaslib_assets_.get()});
+  assetmanager.SetApkAssets({appaslib_assets_});
 
   // The appaslib package will have been assigned the package ID 0x02.
   auto value = assetmanager.GetResource(fix_package_id(appaslib::R::integer::number1, 0x02));
@@ -206,27 +205,26 @@
 
 TEST_F(AssetManager2Test, AssignsOverlayPackageIdLast) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets(
-      {overlayable_assets_.get(), overlay_assets_.get(), lib_one_assets_.get()});
+  assetmanager.SetApkAssets({overlayable_assets_, overlay_assets_, lib_one_assets_});
 
   auto apk_assets = assetmanager.GetApkAssets();
   ASSERT_EQ(3, apk_assets.size());
-  ASSERT_EQ(overlayable_assets_.get(), apk_assets[0]);
-  ASSERT_EQ(overlay_assets_.get(), apk_assets[1]);
-  ASSERT_EQ(lib_one_assets_.get(), apk_assets[2]);
+  ASSERT_EQ(overlayable_assets_, apk_assets[0].promote());
+  ASSERT_EQ(overlay_assets_, apk_assets[1].promote());
+  ASSERT_EQ(lib_one_assets_, apk_assets[2].promote());
 
-  auto get_first_package_id = [&assetmanager](const ApkAssets* apkAssets) -> uint8_t {
+  auto get_first_package_id = [&assetmanager](auto apkAssets) -> uint8_t {
     return assetmanager.GetAssignedPackageId(apkAssets->GetLoadedArsc()->GetPackages()[0].get());
   };
 
-  ASSERT_EQ(0x7f, get_first_package_id(overlayable_assets_.get()));
-  ASSERT_EQ(0x03, get_first_package_id(overlay_assets_.get()));
-  ASSERT_EQ(0x02, get_first_package_id(lib_one_assets_.get()));
+  ASSERT_EQ(0x7f, get_first_package_id(overlayable_assets_));
+  ASSERT_EQ(0x03, get_first_package_id(overlay_assets_));
+  ASSERT_EQ(0x02, get_first_package_id(lib_one_assets_));
 }
 
 TEST_F(AssetManager2Test, GetSharedLibraryResourceName) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({lib_one_assets_.get()});
+  assetmanager.SetApkAssets({lib_one_assets_});
 
   auto name = assetmanager.GetResourceName(lib_one::R::string::foo);
   ASSERT_TRUE(name.has_value());
@@ -235,7 +233,7 @@
 
 TEST_F(AssetManager2Test, GetResourceNameNonMatchingConfig) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({basic_de_fr_assets_.get()});
+  assetmanager.SetApkAssets({basic_de_fr_assets_});
 
   auto value = assetmanager.GetResourceName(basic::R::string::test1);
   ASSERT_TRUE(value.has_value());
@@ -244,7 +242,7 @@
 
 TEST_F(AssetManager2Test, GetResourceTypeSpecFlags) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({basic_de_fr_assets_.get()});
+  assetmanager.SetApkAssets({basic_de_fr_assets_});
 
   auto value = assetmanager.GetResourceTypeSpecFlags(basic::R::string::test1);
   ASSERT_TRUE(value.has_value());
@@ -253,7 +251,7 @@
 
 TEST_F(AssetManager2Test, FindsBagResourceFromSingleApkAssets) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({basic_assets_.get()});
+  assetmanager.SetApkAssets({basic_assets_});
 
   auto bag = assetmanager.GetBag(basic::R::array::integerArray1);
   ASSERT_TRUE(bag.has_value());
@@ -280,8 +278,7 @@
 
   // libclient is built with lib_one and then lib_two in order.
   // Reverse the order to test that proper package ID re-assignment is happening.
-  assetmanager.SetApkAssets(
-      {lib_two_assets_.get(), lib_one_assets_.get(), libclient_assets_.get()});
+  assetmanager.SetApkAssets({lib_two_assets_, lib_one_assets_, libclient_assets_});
 
   auto bag = assetmanager.GetBag(fix_package_id(lib_one::R::style::Theme, 0x03));
   ASSERT_TRUE(bag.has_value());
@@ -300,8 +297,7 @@
 
   // libclient is built with lib_one and then lib_two in order.
   // Reverse the order to test that proper package ID re-assignment is happening.
-  assetmanager.SetApkAssets(
-      {lib_two_assets_.get(), lib_one_assets_.get(), libclient_assets_.get()});
+  assetmanager.SetApkAssets({lib_two_assets_, lib_one_assets_, libclient_assets_});
 
   auto bag = assetmanager.GetBag(libclient::R::style::ThemeMultiLib);
   ASSERT_TRUE(bag.has_value());
@@ -321,8 +317,7 @@
 
   // libclient is built with lib_one and then lib_two in order.
   // Reverse the order to test that proper package ID re-assignment is happening.
-  assetmanager.SetApkAssets(
-      {lib_two_assets_.get(), lib_one_assets_.get(), libclient_assets_.get()});
+  assetmanager.SetApkAssets({lib_two_assets_, lib_one_assets_, libclient_assets_});
 
   auto bag = assetmanager.GetBag(libclient::R::style::Theme);
   ASSERT_TRUE(bag.has_value());
@@ -337,7 +332,7 @@
 
 TEST_F(AssetManager2Test, MergesStylesWithParentFromSingleApkAssets) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({style_assets_.get()});
+  assetmanager.SetApkAssets({style_assets_});
 
   auto bag_one = assetmanager.GetBag(app::R::style::StyleOne);
   ASSERT_TRUE(bag_one.has_value());
@@ -401,7 +396,7 @@
 
 TEST_F(AssetManager2Test, MergeStylesCircularDependency) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({style_assets_.get()});
+  assetmanager.SetApkAssets({style_assets_});
 
   // GetBag should stop traversing the parents of styles when a circular
   // dependency is detected
@@ -412,7 +407,7 @@
 
 TEST_F(AssetManager2Test, ResolveReferenceToResource) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({basic_assets_.get()});
+  assetmanager.SetApkAssets({basic_assets_});
 
   auto value = assetmanager.GetResource(basic::R::integer::ref1);
   ASSERT_TRUE(value.has_value());
@@ -428,7 +423,7 @@
 
 TEST_F(AssetManager2Test, ResolveReferenceToBag) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({basic_assets_.get()});
+  assetmanager.SetApkAssets({basic_assets_});
 
   auto value = assetmanager.GetResource(basic::R::integer::number2, true /*may_be_bag*/);
   ASSERT_TRUE(value.has_value());
@@ -444,7 +439,7 @@
 
 TEST_F(AssetManager2Test, ResolveDeepIdReference) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({basic_assets_.get()});
+  assetmanager.SetApkAssets({basic_assets_});
 
   // Set up the resource ids
   auto high_ref = assetmanager.GetResourceId("@id/high_ref", "values", "com.android.basic");
@@ -470,8 +465,7 @@
 
 TEST_F(AssetManager2Test, DensityOverride) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({basic_assets_.get(), basic_xhdpi_assets_.get(),
-                             basic_xxhdpi_assets_.get()});
+  assetmanager.SetApkAssets({basic_assets_, basic_xhdpi_assets_, basic_xxhdpi_assets_});
   assetmanager.SetConfiguration({
     .density = ResTable_config::DENSITY_XHIGH,
     .sdkVersion = 21,
@@ -493,7 +487,7 @@
 
 TEST_F(AssetManager2Test, KeepLastReferenceIdUnmodifiedIfNoReferenceIsResolved) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({basic_assets_.get()});
+  assetmanager.SetApkAssets({basic_assets_});
 
   // Create some kind of value that is NOT a reference.
   AssetManager2::SelectedValue value{};
@@ -509,7 +503,7 @@
 
 TEST_F(AssetManager2Test, ResolveReferenceMissingResourceDoNotCacheFlags) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({basic_assets_.get()});
+  assetmanager.SetApkAssets({basic_assets_});
   {
     AssetManager2::SelectedValue value{};
     value.data = basic::R::string::test1;
@@ -540,7 +534,7 @@
 
 TEST_F(AssetManager2Test, ResolveReferenceMissingResource) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({basic_assets_.get()});
+  assetmanager.SetApkAssets({basic_assets_});
 
   const uint32_t kMissingResId = 0x8001ffff;
   AssetManager2::SelectedValue value{};
@@ -558,7 +552,7 @@
 
 TEST_F(AssetManager2Test, ResolveReferenceMissingResourceLib) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({libclient_assets_.get()});
+  assetmanager.SetApkAssets({libclient_assets_});
 
   AssetManager2::SelectedValue value{};
   value.type = Res_value::TYPE_REFERENCE;
@@ -580,7 +574,7 @@
 
 TEST_F(AssetManager2Test, GetResourceConfigurations) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({system_assets_.get(), basic_de_fr_assets_.get()});
+  assetmanager.SetApkAssets({system_assets_, basic_de_fr_assets_});
 
   auto configurations = assetmanager.GetResourceConfigurations();
   ASSERT_TRUE(configurations.has_value());
@@ -625,7 +619,7 @@
 
 TEST_F(AssetManager2Test, GetResourceLocales) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({system_assets_.get(), basic_de_fr_assets_.get()});
+  assetmanager.SetApkAssets({system_assets_, basic_de_fr_assets_});
 
   std::set<std::string> locales = assetmanager.GetResourceLocales();
 
@@ -644,7 +638,7 @@
 
 TEST_F(AssetManager2Test, GetResourceId) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({basic_assets_.get()});
+  assetmanager.SetApkAssets({basic_assets_});
 
   auto resid = assetmanager.GetResourceId("com.android.basic:layout/main", "", "");
   ASSERT_TRUE(resid.has_value());
@@ -661,7 +655,7 @@
 
 TEST_F(AssetManager2Test, OpensFileFromSingleApkAssets) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({system_assets_.get()});
+  assetmanager.SetApkAssets({system_assets_});
 
   std::unique_ptr<Asset> asset = assetmanager.Open("file.txt", Asset::ACCESS_BUFFER);
   ASSERT_THAT(asset, NotNull());
@@ -673,7 +667,7 @@
 
 TEST_F(AssetManager2Test, OpensFileFromMultipleApkAssets) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({system_assets_.get(), app_assets_.get()});
+  assetmanager.SetApkAssets({system_assets_, app_assets_});
 
   std::unique_ptr<Asset> asset = assetmanager.Open("file.txt", Asset::ACCESS_BUFFER);
   ASSERT_THAT(asset, NotNull());
@@ -685,7 +679,7 @@
 
 TEST_F(AssetManager2Test, OpenDir) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({system_assets_.get()});
+  assetmanager.SetApkAssets({system_assets_});
 
   std::unique_ptr<AssetDir> asset_dir = assetmanager.OpenDir("");
   ASSERT_THAT(asset_dir, NotNull());
@@ -707,7 +701,7 @@
 
 TEST_F(AssetManager2Test, OpenDirFromManyApks) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({system_assets_.get(), app_assets_.get()});
+  assetmanager.SetApkAssets({system_assets_, app_assets_});
 
   std::unique_ptr<AssetDir> asset_dir = assetmanager.OpenDir("");
   ASSERT_THAT(asset_dir, NotNull());
@@ -728,7 +722,7 @@
 
   AssetManager2 assetmanager;
   assetmanager.SetConfiguration(desired_config);
-  assetmanager.SetApkAssets({basic_assets_.get()});
+  assetmanager.SetApkAssets({basic_assets_});
   assetmanager.SetResourceResolutionLoggingEnabled(false);
 
   auto value = assetmanager.GetResource(basic::R::string::test1);
@@ -743,7 +737,7 @@
 
   AssetManager2 assetmanager;
   assetmanager.SetConfiguration(desired_config);
-  assetmanager.SetApkAssets({basic_assets_.get()});
+  assetmanager.SetApkAssets({basic_assets_});
 
   auto result = assetmanager.GetLastResourceResolution();
   EXPECT_EQ("", result);
@@ -758,17 +752,18 @@
   AssetManager2 assetmanager;
   assetmanager.SetResourceResolutionLoggingEnabled(true);
   assetmanager.SetConfiguration(desired_config);
-  assetmanager.SetApkAssets({basic_assets_.get()});
+  assetmanager.SetApkAssets({basic_assets_});
 
   auto value = assetmanager.GetResource(basic::R::string::test1);
   ASSERT_TRUE(value.has_value());
 
   auto result = assetmanager.GetLastResourceResolution();
-  EXPECT_EQ("Resolution for 0x7f030000 com.android.basic:string/test1\n"
-            "\tFor config - de\n"
-            "\tFound initial: basic/basic.apk\n"
-            "Best matching is from default configuration of com.android.basic",
-            result);
+  EXPECT_EQ(
+      "Resolution for 0x7f030000 com.android.basic:string/test1\n"
+      "\tFor config - de\n"
+      "\tFound initial: basic/basic.apk #0\n"
+      "Best matching is from default configuration of com.android.basic",
+      result);
 }
 
 TEST_F(AssetManager2Test, GetLastPathWithMultipleApkAssets) {
@@ -780,18 +775,19 @@
   AssetManager2 assetmanager;
   assetmanager.SetResourceResolutionLoggingEnabled(true);
   assetmanager.SetConfiguration(desired_config);
-  assetmanager.SetApkAssets({basic_assets_.get(), basic_de_fr_assets_.get()});
+  assetmanager.SetApkAssets({basic_assets_, basic_de_fr_assets_});
 
   auto value = assetmanager.GetResource(basic::R::string::test1);
   ASSERT_TRUE(value.has_value());
 
   auto result = assetmanager.GetLastResourceResolution();
-  EXPECT_EQ("Resolution for 0x7f030000 com.android.basic:string/test1\n"
-            "\tFor config - de\n"
-            "\tFound initial: basic/basic.apk\n"
-            "\tFound better: basic/basic_de_fr.apk - de\n"
-            "Best matching is from de configuration of com.android.basic",
-            result);
+  EXPECT_EQ(
+      "Resolution for 0x7f030000 com.android.basic:string/test1\n"
+      "\tFor config - de\n"
+      "\tFound initial: basic/basic.apk #0\n"
+      "\tFound better: basic/basic_de_fr.apk #1 - de\n"
+      "Best matching is from de configuration of com.android.basic",
+      result);
 }
 
 TEST_F(AssetManager2Test, GetLastPathAfterDisablingReturnsEmpty) {
@@ -801,7 +797,7 @@
   AssetManager2 assetmanager;
   assetmanager.SetResourceResolutionLoggingEnabled(true);
   assetmanager.SetConfiguration(desired_config);
-  assetmanager.SetApkAssets({basic_assets_.get()});
+  assetmanager.SetApkAssets({basic_assets_});
 
   auto value = assetmanager.GetResource(basic::R::string::test1);
   ASSERT_TRUE(value.has_value());
@@ -822,7 +818,7 @@
   AssetManager2 assetmanager;
   assetmanager.SetResourceResolutionLoggingEnabled(true);
   assetmanager.SetConfiguration(desired_config);
-  assetmanager.SetApkAssets({overlayable_assets_.get()});
+  assetmanager.SetApkAssets({overlayable_assets_});
 
   const auto map = assetmanager.GetOverlayableMapForPackage(0x7f);
   ASSERT_NE(nullptr, map);
diff --git a/libs/androidfw/tests/AttributeResolution_bench.cpp b/libs/androidfw/tests/AttributeResolution_bench.cpp
index 1c89c61..384f4a7 100644
--- a/libs/androidfw/tests/AttributeResolution_bench.cpp
+++ b/libs/androidfw/tests/AttributeResolution_bench.cpp
@@ -36,15 +36,14 @@
 constexpr const static uint32_t Theme_Material_Light = 0x01030237u;
 
 static void BM_ApplyStyle(benchmark::State& state) {
-  std::unique_ptr<const ApkAssets> styles_apk =
-      ApkAssets::Load(GetTestDataPath() + "/styles/styles.apk");
+  auto styles_apk = ApkAssets::Load(GetTestDataPath() + "/styles/styles.apk");
   if (styles_apk == nullptr) {
     state.SkipWithError("failed to load assets");
     return;
   }
 
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({styles_apk.get()});
+  assetmanager.SetApkAssets({styles_apk});
 
   std::unique_ptr<Asset> asset =
       assetmanager.OpenNonAsset("res/layout/layout.xml", Asset::ACCESS_BUFFER);
@@ -80,21 +79,20 @@
 BENCHMARK(BM_ApplyStyle);
 
 static void BM_ApplyStyleFramework(benchmark::State& state) {
-  std::unique_ptr<const ApkAssets> framework_apk = ApkAssets::Load(kFrameworkPath);
+  auto framework_apk = ApkAssets::Load(kFrameworkPath);
   if (framework_apk == nullptr) {
     state.SkipWithError("failed to load framework assets");
     return;
   }
 
-  std::unique_ptr<const ApkAssets> basic_apk =
-      ApkAssets::Load(GetTestDataPath() + "/basic/basic.apk");
+  auto basic_apk = ApkAssets::Load(GetTestDataPath() + "/basic/basic.apk");
   if (basic_apk == nullptr) {
     state.SkipWithError("failed to load assets");
     return;
   }
 
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({framework_apk.get(), basic_apk.get()});
+  assetmanager.SetApkAssets({framework_apk, basic_apk});
 
   ResTable_config device_config;
   memset(&device_config, 0, sizeof(device_config));
diff --git a/libs/androidfw/tests/AttributeResolution_test.cpp b/libs/androidfw/tests/AttributeResolution_test.cpp
index bb9129a..329830f 100644
--- a/libs/androidfw/tests/AttributeResolution_test.cpp
+++ b/libs/androidfw/tests/AttributeResolution_test.cpp
@@ -36,11 +36,11 @@
   virtual void SetUp() override {
     styles_assets_ = ApkAssets::Load(GetTestDataPath() + "/styles/styles.apk");
     ASSERT_NE(nullptr, styles_assets_);
-    assetmanager_.SetApkAssets({styles_assets_.get()});
+    assetmanager_.SetApkAssets({styles_assets_});
   }
 
  protected:
-  std::unique_ptr<const ApkAssets> styles_assets_;
+  AssetManager2::ApkAssetsPtr styles_assets_;
   AssetManager2 assetmanager_;
 };
 
@@ -69,7 +69,7 @@
   AssetManager2 assetmanager;
   auto apk_assets = ApkAssets::Load(GetTestDataPath() + "/styles/styles.apk", PROPERTY_DYNAMIC);
   ASSERT_NE(nullptr, apk_assets);
-  assetmanager.SetApkAssets({apk_assets.get()});
+  assetmanager.SetApkAssets({apk_assets});
 
   std::unique_ptr<Theme> theme = assetmanager.NewTheme();
 
diff --git a/libs/androidfw/tests/BenchmarkHelpers.cpp b/libs/androidfw/tests/BenchmarkHelpers.cpp
index 0fa0573..b97dd96 100644
--- a/libs/androidfw/tests/BenchmarkHelpers.cpp
+++ b/libs/androidfw/tests/BenchmarkHelpers.cpp
@@ -53,20 +53,18 @@
 
 void GetResourceBenchmark(const std::vector<std::string>& paths, const ResTable_config* config,
                           uint32_t resid, benchmark::State& state) {
-  std::vector<std::unique_ptr<const ApkAssets>> apk_assets;
-  std::vector<const ApkAssets*> apk_assets_ptrs;
+  std::vector<AssetManager2::ApkAssetsPtr> apk_assets;
   for (const std::string& path : paths) {
-    std::unique_ptr<const ApkAssets> apk = ApkAssets::Load(path);
+    auto apk = ApkAssets::Load(path);
     if (apk == nullptr) {
       state.SkipWithError(base::StringPrintf("Failed to load assets %s", path.c_str()).c_str());
       return;
     }
-    apk_assets_ptrs.push_back(apk.get());
     apk_assets.push_back(std::move(apk));
   }
 
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets(apk_assets_ptrs);
+  assetmanager.SetApkAssets(apk_assets);
   if (config != nullptr) {
     assetmanager.SetConfiguration(*config);
   }
diff --git a/libs/androidfw/tests/Idmap_test.cpp b/libs/androidfw/tests/Idmap_test.cpp
index b434915..568e041 100644
--- a/libs/androidfw/tests/Idmap_test.cpp
+++ b/libs/androidfw/tests/Idmap_test.cpp
@@ -59,15 +59,16 @@
 
  protected:
   std::string original_path;
-  std::unique_ptr<const ApkAssets> system_assets_;
-  std::unique_ptr<const ApkAssets> overlay_assets_;
-  std::unique_ptr<const ApkAssets> overlayable_assets_;
+  AssetManager2::ApkAssetsPtr system_assets_;
+  AssetManager2::ApkAssetsPtr overlay_assets_;
+  AssetManager2::ApkAssetsPtr overlayable_assets_;
 };
 
 std::string GetStringFromApkAssets(const AssetManager2& asset_manager,
                                    const AssetManager2::SelectedValue& value) {
   auto assets = asset_manager.GetApkAssets();
-  const ResStringPool* string_pool = assets[value.cookie]->GetLoadedArsc()->GetStringPool();
+  const ResStringPool* string_pool =
+      assets[value.cookie].promote()->GetLoadedArsc()->GetStringPool();
   return GetStringFromPool(string_pool, value.data);
 }
 
@@ -75,8 +76,7 @@
 
 TEST_F(IdmapTest, OverlayOverridesResourceValue) {
   AssetManager2 asset_manager;
-  asset_manager.SetApkAssets({system_assets_.get(), overlayable_assets_.get(),
-                              overlay_assets_.get()});
+  asset_manager.SetApkAssets({system_assets_, overlayable_assets_, overlay_assets_});
 
   auto value = asset_manager.GetResource(overlayable::R::string::overlayable5);
   ASSERT_TRUE(value.has_value());
@@ -87,8 +87,7 @@
 
 TEST_F(IdmapTest, OverlayOverridesResourceValueUsingDifferentPackage) {
   AssetManager2 asset_manager;
-  asset_manager.SetApkAssets({system_assets_.get(), overlayable_assets_.get(),
-                              overlay_assets_.get()});
+  asset_manager.SetApkAssets({system_assets_, overlayable_assets_, overlay_assets_});
 
   auto value = asset_manager.GetResource(overlayable::R::string::overlayable10);
   ASSERT_TRUE(value.has_value());
@@ -99,8 +98,7 @@
 
 TEST_F(IdmapTest, OverlayOverridesResourceValueUsingInternalResource) {
   AssetManager2 asset_manager;
-  asset_manager.SetApkAssets({system_assets_.get(), overlayable_assets_.get(),
-                              overlay_assets_.get()});
+  asset_manager.SetApkAssets({system_assets_, overlayable_assets_, overlay_assets_});
 
   auto value = asset_manager.GetResource(overlayable::R::string::overlayable8);
   ASSERT_TRUE(value.has_value());
@@ -111,8 +109,7 @@
 
 TEST_F(IdmapTest, OverlayOverridesResourceValueUsingInlineInteger) {
   AssetManager2 asset_manager;
-  asset_manager.SetApkAssets({system_assets_.get(), overlayable_assets_.get(),
-                              overlay_assets_.get()});
+  asset_manager.SetApkAssets({system_assets_, overlayable_assets_, overlay_assets_});
 
   auto value = asset_manager.GetResource(overlayable::R::integer::config_integer);
   ASSERT_TRUE(value.has_value());
@@ -123,8 +120,7 @@
 
 TEST_F(IdmapTest, OverlayOverridesResourceValueUsingInlineString) {
   AssetManager2 asset_manager;
-  asset_manager.SetApkAssets({system_assets_.get(), overlayable_assets_.get(),
-                              overlay_assets_.get()});
+  asset_manager.SetApkAssets({system_assets_, overlayable_assets_, overlay_assets_});
 
   auto value = asset_manager.GetResource(overlayable::R::string::overlayable11);
   ASSERT_TRUE(value.has_value());
@@ -135,8 +131,7 @@
 
 TEST_F(IdmapTest, OverlayOverridesResourceValueUsingOverlayingResource) {
   AssetManager2 asset_manager;
-  asset_manager.SetApkAssets({system_assets_.get(), overlayable_assets_.get(),
-                              overlay_assets_.get()});
+  asset_manager.SetApkAssets({system_assets_, overlayable_assets_, overlay_assets_});
 
   auto value = asset_manager.GetResource(overlayable::R::string::overlayable9);
   ASSERT_TRUE(value.has_value());
@@ -147,8 +142,7 @@
 
 TEST_F(IdmapTest, OverlayOverridesXmlParser) {
   AssetManager2 asset_manager;
-  asset_manager.SetApkAssets({system_assets_.get(), overlayable_assets_.get(),
-                              overlay_assets_.get()});
+  asset_manager.SetApkAssets({system_assets_, overlayable_assets_, overlay_assets_});
 
   auto value = asset_manager.GetResource(overlayable::R::layout::hello_view);
   ASSERT_TRUE(value.has_value());
@@ -186,8 +180,7 @@
 
 TEST_F(IdmapTest, OverlaidResourceHasSameName) {
   AssetManager2 asset_manager;
-  asset_manager.SetApkAssets({system_assets_.get(), overlayable_assets_.get(),
-                              overlay_assets_.get()});
+  asset_manager.SetApkAssets({system_assets_, overlayable_assets_, overlay_assets_});
 
   auto name = asset_manager.GetResourceName(overlayable::R::string::overlayable9);
   ASSERT_TRUE(name.has_value());
@@ -203,8 +196,7 @@
   auto loader_assets = ApkAssets::LoadTable(std::move(asset), EmptyAssetsProvider::Create(),
       PROPERTY_LOADER);
   AssetManager2 asset_manager;
-  asset_manager.SetApkAssets({overlayable_assets_.get(), loader_assets.get(),
-                              overlay_assets_.get()});
+  asset_manager.SetApkAssets({overlayable_assets_, loader_assets, overlay_assets_});
 
   auto value = asset_manager.GetResource(overlayable::R::string::overlayable11);
   ASSERT_TRUE(value.has_value());
diff --git a/libs/androidfw/tests/Theme_bench.cpp b/libs/androidfw/tests/Theme_bench.cpp
index f3d60bb..dfbb5a7 100644
--- a/libs/androidfw/tests/Theme_bench.cpp
+++ b/libs/androidfw/tests/Theme_bench.cpp
@@ -28,14 +28,14 @@
 constexpr const static uint32_t kAttrId = 0x01010030u;   // android:attr/colorForeground
 
 static void BM_ThemeApplyStyleFramework(benchmark::State& state) {
-  std::unique_ptr<const ApkAssets> apk = ApkAssets::Load(kFrameworkPath);
+  auto apk = ApkAssets::Load(kFrameworkPath);
   if (apk == nullptr) {
     state.SkipWithError("Failed to load assets");
     return;
   }
 
   AssetManager2 assets;
-  assets.SetApkAssets({apk.get()});
+  assets.SetApkAssets({apk});
 
   while (state.KeepRunning()) {
     auto theme = assets.NewTheme();
@@ -62,10 +62,10 @@
 BENCHMARK(BM_ThemeApplyStyleFrameworkOld);
 
 static void BM_ThemeGetAttribute(benchmark::State& state) {
-  std::unique_ptr<const ApkAssets> apk = ApkAssets::Load(kFrameworkPath);
+  auto apk = ApkAssets::Load(kFrameworkPath);
 
   AssetManager2 assets;
-  assets.SetApkAssets({apk.get()});
+  assets.SetApkAssets({apk});
 
   auto theme = assets.NewTheme();
   theme->ApplyStyle(kStyleId, false /* force */);
diff --git a/libs/androidfw/tests/Theme_test.cpp b/libs/androidfw/tests/Theme_test.cpp
index 77114f2..e08a6a7 100644
--- a/libs/androidfw/tests/Theme_test.cpp
+++ b/libs/androidfw/tests/Theme_test.cpp
@@ -53,16 +53,16 @@
   }
 
  protected:
-  std::unique_ptr<const ApkAssets> system_assets_;
-  std::unique_ptr<const ApkAssets> style_assets_;
-  std::unique_ptr<const ApkAssets> libclient_assets_;
-  std::unique_ptr<const ApkAssets> lib_one_assets_;
-  std::unique_ptr<const ApkAssets> lib_two_assets_;
+  AssetManager2::ApkAssetsPtr system_assets_;
+  AssetManager2::ApkAssetsPtr style_assets_;
+  AssetManager2::ApkAssetsPtr libclient_assets_;
+  AssetManager2::ApkAssetsPtr lib_one_assets_;
+  AssetManager2::ApkAssetsPtr lib_two_assets_;
 };
 
 TEST_F(ThemeTest, EmptyTheme) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({style_assets_.get()});
+  assetmanager.SetApkAssets({style_assets_});
 
   std::unique_ptr<Theme> theme = assetmanager.NewTheme();
   EXPECT_EQ(0u, theme->GetChangingConfigurations());
@@ -72,7 +72,7 @@
 
 TEST_F(ThemeTest, SingleThemeNoParent) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({style_assets_.get()});
+  assetmanager.SetApkAssets({style_assets_});
 
   std::unique_ptr<Theme> theme = assetmanager.NewTheme();
   ASSERT_TRUE(theme->ApplyStyle(app::R::style::StyleOne).has_value());
@@ -92,7 +92,7 @@
 
 TEST_F(ThemeTest, SingleThemeWithParent) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({style_assets_.get()});
+  assetmanager.SetApkAssets({style_assets_});
 
   std::unique_ptr<Theme> theme = assetmanager.NewTheme();
   ASSERT_TRUE(theme->ApplyStyle(app::R::style::StyleTwo).has_value());
@@ -121,7 +121,7 @@
 
 TEST_F(ThemeTest, TryToUseBadResourceId) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({style_assets_.get()});
+  assetmanager.SetApkAssets({style_assets_});
 
   std::unique_ptr<Theme> theme = assetmanager.NewTheme();
   ASSERT_TRUE(theme->ApplyStyle(app::R::style::StyleTwo).has_value());
@@ -130,7 +130,7 @@
 
 TEST_F(ThemeTest, MultipleThemesOverlaidNotForce) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({style_assets_.get()});
+  assetmanager.SetApkAssets({style_assets_});
 
   std::unique_ptr<Theme> theme = assetmanager.NewTheme();
   ASSERT_TRUE(theme->ApplyStyle(app::R::style::StyleTwo).has_value());
@@ -160,7 +160,7 @@
 
 TEST_F(ThemeTest, MultipleThemesOverlaidForced) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({style_assets_.get()});
+  assetmanager.SetApkAssets({style_assets_});
 
   std::unique_ptr<Theme> theme = assetmanager.NewTheme();
   ASSERT_TRUE(theme->ApplyStyle(app::R::style::StyleTwo).has_value());
@@ -190,8 +190,7 @@
 
 TEST_F(ThemeTest, ResolveDynamicAttributesAndReferencesToSharedLibrary) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets(
-      {lib_two_assets_.get(), lib_one_assets_.get(), libclient_assets_.get()});
+  assetmanager.SetApkAssets({lib_two_assets_, lib_one_assets_, libclient_assets_});
 
   std::unique_ptr<Theme> theme = assetmanager.NewTheme();
   ASSERT_TRUE(theme->ApplyStyle(libclient::R::style::Theme, false /*force*/).has_value());
@@ -216,7 +215,7 @@
 
 TEST_F(ThemeTest, CopyThemeSameAssetManager) {
   AssetManager2 assetmanager;
-  assetmanager.SetApkAssets({style_assets_.get()});
+  assetmanager.SetApkAssets({style_assets_});
 
   std::unique_ptr<Theme> theme_one = assetmanager.NewTheme();
   ASSERT_TRUE(theme_one->ApplyStyle(app::R::style::StyleOne).has_value());
@@ -253,10 +252,10 @@
 
 TEST_F(ThemeTest, ThemeRebase) {
   AssetManager2 am;
-  am.SetApkAssets({style_assets_.get()});
+  am.SetApkAssets({style_assets_});
 
   AssetManager2 am_night;
-  am_night.SetApkAssets({style_assets_.get()});
+  am_night.SetApkAssets({style_assets_});
 
   ResTable_config night{};
   night.uiMode = ResTable_config::UI_MODE_NIGHT_YES;
@@ -327,12 +326,11 @@
 
 TEST_F(ThemeTest, OnlyCopySameAssetsThemeWhenAssetManagersDiffer) {
   AssetManager2 assetmanager_dst;
-  assetmanager_dst.SetApkAssets({system_assets_.get(), lib_one_assets_.get(), style_assets_.get(),
-                                 libclient_assets_.get()});
+  assetmanager_dst.SetApkAssets(
+      {system_assets_, lib_one_assets_, style_assets_, libclient_assets_});
 
   AssetManager2 assetmanager_src;
-  assetmanager_src.SetApkAssets({system_assets_.get(), lib_two_assets_.get(), lib_one_assets_.get(),
-                                 style_assets_.get()});
+  assetmanager_src.SetApkAssets({system_assets_, lib_two_assets_, lib_one_assets_, style_assets_});
 
   auto theme_dst = assetmanager_dst.NewTheme();
   ASSERT_TRUE(theme_dst->ApplyStyle(app::R::style::StyleOne).has_value());
@@ -376,10 +374,10 @@
 
 TEST_F(ThemeTest, CopyNonReferencesWhenPackagesDiffer) {
   AssetManager2 assetmanager_dst;
-  assetmanager_dst.SetApkAssets({system_assets_.get()});
+  assetmanager_dst.SetApkAssets({system_assets_});
 
   AssetManager2 assetmanager_src;
-  assetmanager_src.SetApkAssets({system_assets_.get(), style_assets_.get()});
+  assetmanager_src.SetApkAssets({system_assets_, style_assets_});
 
   auto theme_dst = assetmanager_dst.NewTheme();
   auto theme_src = assetmanager_src.NewTheme();
diff --git a/libs/hwui/AutoBackendTextureRelease.cpp b/libs/hwui/AutoBackendTextureRelease.cpp
index b656b6a..ab85995 100644
--- a/libs/hwui/AutoBackendTextureRelease.cpp
+++ b/libs/hwui/AutoBackendTextureRelease.cpp
@@ -16,6 +16,8 @@
 
 #include "AutoBackendTextureRelease.h"
 
+#include <SkImage.h>
+#include <include/gpu/ganesh/SkImageGanesh.h>
 #include "renderthread/RenderThread.h"
 #include "utils/Color.h"
 #include "utils/PaintUtils.h"
@@ -83,10 +85,10 @@
     AHardwareBuffer_describe(buffer, &desc);
     SkColorType colorType = GrAHardwareBufferUtils::GetSkColorTypeFromBufferFormat(desc.format);
     // The following ref will be counteracted by Skia calling releaseProc, either during
-    // MakeFromTexture if there is a failure, or later when SkImage is discarded. It must
-    // be called before MakeFromTexture, otherwise Skia may remove HWUI's ref on failure.
+    // BorrowTextureFrom if there is a failure, or later when SkImage is discarded. It must
+    // be called before BorrowTextureFrom, otherwise Skia may remove HWUI's ref on failure.
     ref();
-    mImage = SkImage::MakeFromTexture(
+    mImage = SkImages::BorrowTextureFrom(
             context, mBackendTexture, kTopLeft_GrSurfaceOrigin, colorType, kPremul_SkAlphaType,
             uirenderer::DataSpaceToColorSpace(dataspace), releaseProc, this);
 }
diff --git a/libs/hwui/HardwareBitmapUploader.cpp b/libs/hwui/HardwareBitmapUploader.cpp
index b7e9999..19a1dfa 100644
--- a/libs/hwui/HardwareBitmapUploader.cpp
+++ b/libs/hwui/HardwareBitmapUploader.cpp
@@ -25,6 +25,7 @@
 #include <SkBitmap.h>
 #include <SkCanvas.h>
 #include <SkImage.h>
+#include <SkImageAndroid.h>
 #include <SkImageInfo.h>
 #include <SkRefCnt.h>
 #include <gui/TraceUtils.h>
@@ -262,7 +263,8 @@
           }
 
           sk_sp<SkImage> image =
-              SkImage::MakeFromAHardwareBufferWithData(mGrContext.get(), bitmap.pixmap(), ahb);
+              SkImages::TextureFromAHardwareBufferWithData(mGrContext.get(), bitmap.pixmap(),
+                                                           ahb);
           mGrContext->submit(true);
 
           uploadSucceeded = (image.get() != nullptr);
diff --git a/libs/hwui/Properties.cpp b/libs/hwui/Properties.cpp
index 7af6efb..b08ab32 100644
--- a/libs/hwui/Properties.cpp
+++ b/libs/hwui/Properties.cpp
@@ -21,7 +21,7 @@
 #ifdef __ANDROID__
 #include "HWUIProperties.sysprop.h"
 #endif
-#include "SkTraceEventCommon.h"
+#include "src/core/SkTraceEventCommon.h"
 
 #include <algorithm>
 #include <cstdlib>
diff --git a/libs/hwui/Readback.cpp b/libs/hwui/Readback.cpp
index 045de35..377b5bb 100644
--- a/libs/hwui/Readback.cpp
+++ b/libs/hwui/Readback.cpp
@@ -21,6 +21,7 @@
 #include <SkCanvas.h>
 #include <SkColorSpace.h>
 #include <SkImage.h>
+#include <SkImageAndroid.h>
 #include <SkImageInfo.h>
 #include <SkMatrix.h>
 #include <SkPaint.h>
@@ -108,7 +109,8 @@
     sk_sp<SkColorSpace> colorSpace =
             DataSpaceToColorSpace(static_cast<android_dataspace>(dataspace));
     sk_sp<SkImage> image =
-            SkImage::MakeFromAHardwareBuffer(sourceBuffer.get(), kPremul_SkAlphaType, colorSpace);
+            SkImages::DeferredFromAHardwareBuffer(sourceBuffer.get(), kPremul_SkAlphaType, 
+                                                  colorSpace);
 
     if (!image.get()) {
         return request->onCopyFinished(CopyResult::UnknownError);
diff --git a/libs/hwui/SkiaInterpolator.cpp b/libs/hwui/SkiaInterpolator.cpp
index b58f517..c67b135 100644
--- a/libs/hwui/SkiaInterpolator.cpp
+++ b/libs/hwui/SkiaInterpolator.cpp
@@ -18,9 +18,8 @@
 
 #include "include/core/SkScalar.h"
 #include "include/core/SkTypes.h"
-#include "include/private/SkFixed.h"
-#include "src/core/SkTSearch.h"
 
+#include <cstdlib>
 #include <log/log.h>
 
 typedef int Dot14;
@@ -41,18 +40,18 @@
     if (x <= 0) {
         return 0;
     }
-    if (x >= SK_Scalar1) {
+    if (x >= 1.0f) {
         return Dot14_ONE;
     }
-    return SkScalarToFixed(x) >> 2;
+    return static_cast<Dot14>(x * Dot14_ONE);
 }
 
 static float SkUnitCubicInterp(float value, float bx, float by, float cx, float cy) {
     // pin to the unit-square, and convert to 2.14
     Dot14 x = pin_and_convert(value);
 
-    if (x == 0) return 0;
-    if (x == Dot14_ONE) return SK_Scalar1;
+    if (x == 0) return 0.0f;
+    if (x == Dot14_ONE) return 1.0f;
 
     Dot14 b = pin_and_convert(bx);
     Dot14 c = pin_and_convert(cx);
@@ -84,7 +83,7 @@
     A = 3 * b;
     B = 3 * (c - 2 * b);
     C = 3 * (b - c) + Dot14_ONE;
-    return SkFixedToScalar(eval_cubic(t, A, B, C) << 2);
+    return Dot14ToFloat(eval_cubic(t, A, B, C));
 }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -104,7 +103,7 @@
     fFlags = 0;
     fElemCount = static_cast<uint8_t>(elemCount);
     fFrameCount = static_cast<int16_t>(frameCount);
-    fRepeat = SK_Scalar1;
+    fRepeat = 1.0f;
     if (fStorage) {
         free(fStorage);
         fStorage = nullptr;
@@ -136,17 +135,46 @@
 
 float SkiaInterpolatorBase::ComputeRelativeT(SkMSec time, SkMSec prevTime, SkMSec nextTime,
                                              const float blend[4]) {
-    SkASSERT(time > prevTime && time < nextTime);
+    LOG_FATAL_IF(time < prevTime || time > nextTime);
 
     float t = (float)(time - prevTime) / (float)(nextTime - prevTime);
     return blend ? SkUnitCubicInterp(t, blend[0], blend[1], blend[2], blend[3]) : t;
 }
 
+// Returns the index of where the item is or the bit not of the index
+// where the item should go in order to keep arr sorted in ascending order.
+int SkiaInterpolatorBase::binarySearch(const SkTimeCode* arr, int count, SkMSec target) {
+    if (count <= 0) {
+        return ~0;
+    }
+
+    int lo = 0;
+    int hi = count - 1;
+
+    while (lo < hi) {
+        int mid = (hi + lo) / 2;
+        SkMSec elem = arr[mid].fTime;
+        if (elem == target) {
+            return mid;
+        } else if (elem < target) {
+            lo = mid + 1;
+        } else {
+            hi = mid;
+        }
+    }
+    // Check to see if target is greater or less than where we stopped
+    if (target < arr[lo].fTime) {
+        return ~lo;
+    }
+    // e.g. it should go at the end.
+    return ~(lo + 1);
+}
+
 SkiaInterpolatorBase::Result SkiaInterpolatorBase::timeToT(SkMSec time, float* T, int* indexPtr,
                                                            bool* exactPtr) const {
-    SkASSERT(fFrameCount > 0);
+    LOG_FATAL_IF(fFrameCount <= 0);
     Result result = kNormal_Result;
-    if (fRepeat != SK_Scalar1) {
+    if (fRepeat != 1.0f) {
         SkMSec startTime = 0, endTime = 0;  // initialize to avoid warning
         this->getDuration(&startTime, &endTime);
         SkMSec totalTime = endTime - startTime;
@@ -168,10 +196,8 @@
         time = offsetTime + startTime;
     }
 
-    int index = SkTSearch<SkMSec>(&fTimes[0].fTime, fFrameCount, time, sizeof(SkTimeCode));
-
+    int index = SkiaInterpolatorBase::binarySearch(fTimes, fFrameCount, time);
     bool exact = true;
-
     if (index < 0) {
         index = ~index;
         if (index == 0) {
@@ -184,10 +210,11 @@
             }
             result = kFreezeEnd_Result;
         } else {
+            // Need to interpolate between two frames.
             exact = false;
         }
     }
-    SkASSERT(index < fFrameCount);
+    LOG_FATAL_IF(index >= fFrameCount);
     const SkTimeCode* nextTime = &fTimes[index];
     SkMSec nextT = nextTime[0].fTime;
     if (exact) {
@@ -207,7 +234,7 @@
 }
 
 SkiaInterpolator::SkiaInterpolator(int elemCount, int frameCount) {
-    SkASSERT(elemCount > 0);
+    LOG_FATAL_IF(elemCount <= 0);
     this->reset(elemCount, frameCount);
 }
 
@@ -221,21 +248,19 @@
     fValues = (float*)((char*)fStorage + sizeof(SkTimeCode) * frameCount);
 }
 
-#define SK_Fixed1Third (SK_Fixed1 / 3)
-#define SK_Fixed2Third (SK_Fixed1 * 2 / 3)
-
 static const float gIdentityBlend[4] = {0.33333333f, 0.33333333f, 0.66666667f, 0.66666667f};
 
 bool SkiaInterpolator::setKeyFrame(int index, SkMSec time, const float values[],
                                    const float blend[4]) {
-    SkASSERT(values != nullptr);
+    LOG_FATAL_IF(values == nullptr);
 
     if (blend == nullptr) {
         blend = gIdentityBlend;
     }
 
-    bool success = ~index == SkTSearch<SkMSec>(&fTimes->fTime, index, time, sizeof(SkTimeCode));
-    SkASSERT(success);
+    // Verify the time should go after all the frames before index
+    bool success = ~index == SkiaInterpolatorBase::binarySearch(fTimes, index, time);
+    LOG_FATAL_IF(!success);
     if (success) {
         SkTimeCode* timeCode = &fTimes[index];
         timeCode->fTime = time;
@@ -257,7 +282,7 @@
         if (exact) {
             memcpy(values, nextSrc, fElemCount * sizeof(float));
         } else {
-            SkASSERT(index > 0);
+            LOG_FATAL_IF(index <= 0);
 
             const float* prevSrc = nextSrc - fElemCount;
 
diff --git a/libs/hwui/SkiaInterpolator.h b/libs/hwui/SkiaInterpolator.h
index 9422cb5..62e6c1e 100644
--- a/libs/hwui/SkiaInterpolator.h
+++ b/libs/hwui/SkiaInterpolator.h
@@ -68,14 +68,16 @@
     enum Flags { kMirror = 1, kReset = 2, kHasBlend = 4 };
     static float ComputeRelativeT(uint32_t time, uint32_t prevTime, uint32_t nextTime,
                                   const float blend[4] = nullptr);
-    int16_t fFrameCount;
-    uint8_t fElemCount;
-    uint8_t fFlags;
-    float fRepeat;
     struct SkTimeCode {
         uint32_t fTime;
         float fBlend[4];
     };
+    static int binarySearch(const SkTimeCode* arr, int count, uint32_t target);
+
+    int16_t fFrameCount;
+    uint8_t fElemCount;
+    uint8_t fFlags;
+    float fRepeat;
     SkTimeCode* fTimes;  // pointer into fStorage
     void* fStorage;
 };
diff --git a/libs/hwui/hwui/Bitmap.cpp b/libs/hwui/hwui/Bitmap.cpp
index b3eaa0c..96e21cf1 100644
--- a/libs/hwui/hwui/Bitmap.cpp
+++ b/libs/hwui/hwui/Bitmap.cpp
@@ -39,12 +39,15 @@
 #include <SkColor.h>
 #include <SkEncodedImageFormat.h>
 #include <SkHighContrastFilter.h>
-#include <SkImageEncoder.h>
+#include <SkImage.h>
+#include <SkImageAndroid.h>
 #include <SkImagePriv.h>
 #include <SkJpegGainmapEncoder.h>
 #include <SkPixmap.h>
 #include <SkRect.h>
 #include <SkStream.h>
+#include <SkJpegEncoder.h>
+#include <SkPngEncoder.h>
 #include <SkWebpEncoder.h>
 
 #include <limits>
@@ -263,7 +266,8 @@
     mPixelStorage.hardware.buffer = buffer;
     AHardwareBuffer_acquire(buffer);
     setImmutable();  // HW bitmaps are always immutable
-    mImage = SkImage::MakeFromAHardwareBuffer(buffer, mInfo.alphaType(), mInfo.refColorSpace());
+    mImage = SkImages::DeferredFromAHardwareBuffer(buffer, mInfo.alphaType(),
+                                                   mInfo.refColorSpace());
 }
 #endif
 
@@ -370,7 +374,12 @@
         // Note we don't cache in this case, because the raster image holds a pointer to this Bitmap
         // internally and ~Bitmap won't be invoked.
         // TODO: refactor Bitmap to not derive from SkPixelRef, which would allow caching here.
+#ifdef __ANDROID__
+        // pinnable images are only supported with the Ganesh GPU backend compiled in.
+        image = SkImages::PinnableRasterFromBitmap(skiaBitmap);
+#else
         image = SkMakeImageFromRasterBitmap(skiaBitmap, kNever_SkCopyPixelsMode);
+#endif
     }
     return image;
 }
@@ -491,17 +500,25 @@
         return false;
     }
 
-    SkEncodedImageFormat fm;
     switch (format) {
-        case JavaCompressFormat::Jpeg:
-            fm = SkEncodedImageFormat::kJPEG;
-            break;
+        case JavaCompressFormat::Jpeg: {
+            SkJpegEncoder::Options options;
+            options.fQuality = quality;
+            return SkJpegEncoder::Encode(stream, bitmap.pixmap(), options);
+        }
         case JavaCompressFormat::Png:
-            fm = SkEncodedImageFormat::kPNG;
-            break;
-        case JavaCompressFormat::Webp:
-            fm = SkEncodedImageFormat::kWEBP;
-            break;
+            return SkPngEncoder::Encode(stream, bitmap.pixmap(), {});
+        case JavaCompressFormat::Webp: {
+            SkWebpEncoder::Options options;
+            if (quality >= 100) {
+                options.fCompression = SkWebpEncoder::Compression::kLossless;
+                options.fQuality = 75; // This is effort to compress
+            } else {
+                options.fCompression = SkWebpEncoder::Compression::kLossy;
+                options.fQuality = quality;
+            }
+            return SkWebpEncoder::Encode(stream, bitmap.pixmap(), options);
+        }
         case JavaCompressFormat::WebpLossy:
         case JavaCompressFormat::WebpLossless: {
             SkWebpEncoder::Options options;
@@ -511,8 +528,6 @@
             return SkWebpEncoder::Encode(stream, bitmap.pixmap(), options);
         }
     }
-
-    return SkEncodeImage(stream, bitmap, fm, quality);
 }
 
 sp<uirenderer::Gainmap> Bitmap::gainmap() const {
diff --git a/libs/hwui/jni/CreateJavaOutputStreamAdaptor.cpp b/libs/hwui/jni/CreateJavaOutputStreamAdaptor.cpp
index 15e529e..a66d3b8 100644
--- a/libs/hwui/jni/CreateJavaOutputStreamAdaptor.cpp
+++ b/libs/hwui/jni/CreateJavaOutputStreamAdaptor.cpp
@@ -1,11 +1,11 @@
 #include "CreateJavaOutputStreamAdaptor.h"
 #include "SkData.h"
-#include "SkMalloc.h"
 #include "SkRefCnt.h"
 #include "SkStream.h"
 #include "SkTypes.h"
 #include "Utils.h"
 
+#include <cstdlib>
 #include <nativehelper/JNIHelp.h>
 #include <log/log.h>
 #include <memory>
@@ -177,6 +177,10 @@
     return JavaInputStreamAdaptor::Create(env, stream, storage, swallowExceptions);
 }
 
+static void free_pointer_skproc(const void* ptr, void*) {
+    free((void*)ptr);
+}
+
 sk_sp<SkData> CopyJavaInputStream(JNIEnv* env, jobject inputStream, jbyteArray storage) {
     std::unique_ptr<SkStream> stream(CreateJavaInputStreamAdaptor(env, inputStream, storage));
     if (!stream) {
@@ -186,19 +190,31 @@
     size_t bufferSize = 4096;
     size_t streamLen = 0;
     size_t len;
-    char* data = (char*)sk_malloc_throw(bufferSize);
+    char* data = (char*)malloc(bufferSize);
+    LOG_ALWAYS_FATAL_IF(!data);
 
     while ((len = stream->read(data + streamLen,
                                bufferSize - streamLen)) != 0) {
         streamLen += len;
         if (streamLen == bufferSize) {
             bufferSize *= 2;
-            data = (char*)sk_realloc_throw(data, bufferSize);
+            data = (char*)realloc(data, bufferSize);
+            LOG_ALWAYS_FATAL_IF(!data);
         }
     }
-    data = (char*)sk_realloc_throw(data, streamLen);
-
-    return SkData::MakeFromMalloc(data, streamLen);
+    if (streamLen == 0) {
+        // realloc with size 0 is unspecified behavior in C++11
+        free(data);
+        data = nullptr;
+    } else {
+        // Trim down the buffer to the actual size of the data.
+        LOG_FATAL_IF(streamLen > bufferSize);
+        data = (char*)realloc(data, streamLen);
+        LOG_ALWAYS_FATAL_IF(!data);
+    }
+    // Just in case sk_free differs from free, we ask Skia to use
+    // free to cleanup the buffer that SkData wraps.
+    return SkData::MakeWithProc(data, streamLen, free_pointer_skproc, nullptr);
 }
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/libs/hwui/jni/MaskFilter.cpp b/libs/hwui/jni/MaskFilter.cpp
index 048ce02..cbd4520 100644
--- a/libs/hwui/jni/MaskFilter.cpp
+++ b/libs/hwui/jni/MaskFilter.cpp
@@ -1,6 +1,5 @@
 #include "GraphicsJNI.h"
 #include "SkMaskFilter.h"
-#include "SkBlurMask.h"
 #include "SkBlurMaskFilter.h"
 #include "SkBlurTypes.h"
 #include "SkTableMaskFilter.h"
@@ -11,6 +10,13 @@
     }
 }
 
+// From https://skia.googlesource.com/skia/+/d74c99a3cd5eef5f16b2eb226e6b45fe523c8552/src/core/SkBlurMask.cpp#28
+static constexpr float kBLUR_SIGMA_SCALE = 0.57735f;
+
+static float convertRadiusToSigma(float radius) {
+    return radius > 0 ? kBLUR_SIGMA_SCALE * radius + 0.5f : 0.0f;
+}
+
 class SkMaskFilterGlue {
 public:
     static void destructor(JNIEnv* env, jobject, jlong filterHandle) {
@@ -19,7 +25,7 @@
     }
 
     static jlong createBlur(JNIEnv* env, jobject, jfloat radius, jint blurStyle) {
-        SkScalar sigma = SkBlurMask::ConvertRadiusToSigma(radius);
+        SkScalar sigma = convertRadiusToSigma(radius);
         SkMaskFilter* filter = SkMaskFilter::MakeBlur((SkBlurStyle)blurStyle, sigma).release();
         ThrowIAE_IfNull(env, filter);
         return reinterpret_cast<jlong>(filter);
@@ -34,7 +40,7 @@
             direction[i] = values[i];
         }
 
-        SkScalar sigma = SkBlurMask::ConvertRadiusToSigma(radius);
+        SkScalar sigma = convertRadiusToSigma(radius);
         SkMaskFilter* filter =  SkBlurMaskFilter::MakeEmboss(sigma,
                 direction, ambient, specular).release();
         ThrowIAE_IfNull(env, filter);
diff --git a/libs/hwui/jni/android_graphics_HardwareRenderer.cpp b/libs/hwui/jni/android_graphics_HardwareRenderer.cpp
index 6a7411f..5a537e7 100644
--- a/libs/hwui/jni/android_graphics_HardwareRenderer.cpp
+++ b/libs/hwui/jni/android_graphics_HardwareRenderer.cpp
@@ -27,7 +27,7 @@
 #include <SkColorSpace.h>
 #include <SkData.h>
 #include <SkImage.h>
-#include <SkImagePriv.h>
+#include <SkImageAndroid.h>
 #include <SkPicture.h>
 #include <SkPixmap.h>
 #include <SkSerialProcs.h>
@@ -35,6 +35,7 @@
 #include <SkTypeface.h>
 #include <dlfcn.h>
 #include <gui/TraceUtils.h>
+#include <include/encode/SkPngEncoder.h>
 #include <inttypes.h>
 #include <media/NdkImage.h>
 #include <media/NdkImageReader.h>
@@ -54,6 +55,7 @@
 
 #include <algorithm>
 #include <atomic>
+#include <log/log.h>
 #include <vector>
 
 #include "JvmErrorReporter.h"
@@ -473,7 +475,7 @@
         // actually cross thread boundaries here, make a copy so it's immutable proper
         if (bitmap && !bitmap->isImmutable()) {
             ATRACE_NAME("Copying mutable bitmap");
-            return SkImage::MakeFromBitmap(*bitmap);
+            return SkImages::RasterFromBitmap(*bitmap);
         }
         if (img->isTextureBacked()) {
             ATRACE_NAME("Readback of texture image");
@@ -493,7 +495,7 @@
                 return sk_ref_sp(img);
             }
             bm.setImmutable();
-            return SkMakeImageFromRasterBitmap(bm, kNever_SkCopyPixelsMode);
+            return SkImages::PinnableRasterFromBitmap(bm);
         }
         return sk_ref_sp(img);
     }
@@ -520,7 +522,16 @@
         if (iter != context->mTextureMap.end()) {
             img = iter->second.get();
         }
-        return img->encodeToData();
+        if (!img) {
+            return nullptr;
+        }
+        // The following encode (specifically the pixel readback) will fail on a
+        // texture-backed image. They should already be raster images, but on
+        // the off-chance they aren't, we will just serialize it as nothing.
+        if (img->isTextureBacked()) {
+            return SkData::MakeEmpty();
+        }
+        return SkPngEncoder::Encode(nullptr, img, {});
     }
 
     void serialize(SkWStream* stream) const override {
diff --git a/libs/hwui/pipeline/skia/ShaderCache.h b/libs/hwui/pipeline/skia/ShaderCache.h
index f5506d6..0492d70 100644
--- a/libs/hwui/pipeline/skia/ShaderCache.h
+++ b/libs/hwui/pipeline/skia/ShaderCache.h
@@ -24,6 +24,7 @@
 #include <string>
 #include <vector>
 
+class GrDirectContext;
 class SkData;
 
 namespace android {
diff --git a/libs/hwui/pipeline/skia/SkiaPipeline.cpp b/libs/hwui/pipeline/skia/SkiaPipeline.cpp
index b020e96..10737e9 100644
--- a/libs/hwui/pipeline/skia/SkiaPipeline.cpp
+++ b/libs/hwui/pipeline/skia/SkiaPipeline.cpp
@@ -21,9 +21,9 @@
 #include <SkColorSpace.h>
 #include <SkData.h>
 #include <SkImage.h>
+#include <SkImageAndroid.h>
 #include <SkImageEncoder.h>
 #include <SkImageInfo.h>
-#include <SkImagePriv.h>
 #include <SkMatrix.h>
 #include <SkMultiPictureDocument.h>
 #include <SkOverdrawCanvas.h>
@@ -75,7 +75,7 @@
         return false;
     }
     for (SkImage* image : mutableImages) {
-        if (SkImage_pinAsTexture(image, mRenderThread.getGrContext())) {
+        if (skgpu::ganesh::PinAsTexture(mRenderThread.getGrContext(), image)) {
             mPinnedImages.emplace_back(sk_ref_sp(image));
         } else {
             return false;
@@ -86,7 +86,7 @@
 
 void SkiaPipeline::unpinImages() {
     for (auto& image : mPinnedImages) {
-        SkImage_unpinAsTexture(image.get(), mRenderThread.getGrContext());
+        skgpu::ganesh::UnpinTexture(mRenderThread.getGrContext(), image.get());
     }
     mPinnedImages.clear();
 }
@@ -222,8 +222,8 @@
         ATRACE_FORMAT("Bitmap#prepareToDraw %dx%d", bitmap->width(), bitmap->height());
         auto image = bitmap->makeImage();
         if (image.get()) {
-            SkImage_pinAsTexture(image.get(), context);
-            SkImage_unpinAsTexture(image.get(), context);
+            skgpu::ganesh::PinAsTexture(context, image.get());
+            skgpu::ganesh::UnpinTexture(context, image.get());
             // A submit is necessary as there may not be a frame coming soon, so without a call
             // to submit these texture uploads can just sit in the queue building up until
             // we run out of RAM
diff --git a/libs/hwui/pipeline/skia/VkInteropFunctorDrawable.cpp b/libs/hwui/pipeline/skia/VkInteropFunctorDrawable.cpp
index e168a7b..12c14e4 100644
--- a/libs/hwui/pipeline/skia/VkInteropFunctorDrawable.cpp
+++ b/libs/hwui/pipeline/skia/VkInteropFunctorDrawable.cpp
@@ -34,6 +34,8 @@
 #include "utils/TimeUtils.h"
 
 #include <SkBlendMode.h>
+#include <SkImage.h>
+#include <SkImageAndroid.h>
 
 namespace android {
 namespace uirenderer {
@@ -181,9 +183,9 @@
     // drawing into the offscreen surface, so we need to reset it here.
     canvas->resetMatrix();
 
-    auto functorImage = SkImage::MakeFromAHardwareBuffer(mFrameBuffer.get(), kPremul_SkAlphaType,
-                                                         canvas->imageInfo().refColorSpace(),
-                                                         kBottomLeft_GrSurfaceOrigin);
+    auto functorImage = SkImages::DeferredFromAHardwareBuffer(
+        mFrameBuffer.get(), kPremul_SkAlphaType, canvas->imageInfo().refColorSpace(),
+        kBottomLeft_GrSurfaceOrigin);
     canvas->drawImage(functorImage, 0, 0, SkSamplingOptions(), &paint);
     canvas->restore();
 }
diff --git a/libs/hwui/tests/unit/AutoBackendTextureReleaseTests.cpp b/libs/hwui/tests/unit/AutoBackendTextureReleaseTests.cpp
index 138b3efd..b8b3f0a 100644
--- a/libs/hwui/tests/unit/AutoBackendTextureReleaseTests.cpp
+++ b/libs/hwui/tests/unit/AutoBackendTextureReleaseTests.cpp
@@ -46,7 +46,7 @@
 
     EXPECT_EQ(1, TestUtils::getUsageCount(textureRelease));
 
-    // SkImage::MakeFromTexture should fail if given null GrDirectContext.
+    // SkImages::BorrowTextureFrom should fail if given null GrDirectContext.
     textureRelease->makeImage(buffer, HAL_DATASPACE_UNKNOWN, /*context = */ nullptr);
 
     EXPECT_EQ(1, TestUtils::getUsageCount(textureRelease));
diff --git a/libs/hwui/tests/unit/CacheManagerTests.cpp b/libs/hwui/tests/unit/CacheManagerTests.cpp
index 2b90bda..03a955c 100644
--- a/libs/hwui/tests/unit/CacheManagerTests.cpp
+++ b/libs/hwui/tests/unit/CacheManagerTests.cpp
@@ -20,7 +20,7 @@
 #include "renderthread/EglManager.h"
 #include "tests/common/TestUtils.h"
 
-#include <SkImagePriv.h>
+#include <SkImageAndroid.h>
 #include "include/gpu/GpuTypes.h" // from Skia
 
 using namespace android;
@@ -57,9 +57,8 @@
 
     // create an image and pin it so that we have something with a unique key in the cache
     sk_sp<Bitmap> bitmap = Bitmap::allocateHeapBitmap(SkImageInfo::MakeA8(width, height));
-    sk_sp<SkImage> image = bitmap->makeImage();
-    ASSERT_TRUE(SkImage_pinAsTexture(image.get(), grContext));
-
+    sk_sp<SkImage> image = bitmap->makeImage(); // calls skgpu::ganesh::PinAsTexture under the hood.
+    ASSERT_TRUE(skgpu::ganesh::PinAsTexture(grContext, image.get()));
     // attempt to trim all memory while we still hold strong refs
     renderThread.cacheManager().trimMemory(TrimLevel::COMPLETE);
     ASSERT_TRUE(0 == grContext->getResourceCachePurgeableBytes());
@@ -71,7 +70,7 @@
     }
 
     // unpin the image which should add a unique purgeable key to the cache
-    SkImage_unpinAsTexture(image.get(), grContext);
+    skgpu::ganesh::UnpinTexture(grContext, image.get());
 
     // verify that we have enough purgeable bytes
     const size_t purgeableBytes = grContext->getResourceCachePurgeableBytes();
diff --git a/libs/hwui/tests/unit/DeferredLayerUpdaterTests.cpp b/libs/hwui/tests/unit/DeferredLayerUpdaterTests.cpp
index 0c389bfe8..cfa18ae 100644
--- a/libs/hwui/tests/unit/DeferredLayerUpdaterTests.cpp
+++ b/libs/hwui/tests/unit/DeferredLayerUpdaterTests.cpp
@@ -40,7 +40,7 @@
     // push the deferred updates to the layer
     SkBitmap bitmap;
     bitmap.allocN32Pixels(16, 16);
-    sk_sp<SkImage> layerImage = SkImage::MakeFromBitmap(bitmap);
+    sk_sp<SkImage> layerImage = SkImages::RasterFromBitmap(bitmap);
     layerUpdater->updateLayer(true, layerImage, 0, SkRect::MakeEmpty());
 
     // the backing layer should now have all the properties applied.
diff --git a/location/java/android/location/GnssMeasurementRequest.java b/location/java/android/location/GnssMeasurementRequest.java
index 3813e97..3f3ad75 100644
--- a/location/java/android/location/GnssMeasurementRequest.java
+++ b/location/java/android/location/GnssMeasurementRequest.java
@@ -135,8 +135,12 @@
     public String toString() {
         StringBuilder s = new StringBuilder();
         s.append("GnssMeasurementRequest[");
-        s.append("@");
-        TimeUtils.formatDuration(mIntervalMillis, s);
+        if (mIntervalMillis == PASSIVE_INTERVAL) {
+            s.append("passive");
+        } else {
+            s.append("@");
+            TimeUtils.formatDuration(mIntervalMillis, s);
+        }
         if (mFullTracking) {
             s.append(", FullTracking");
         }
diff --git a/location/java/android/location/ILocationManager.aidl b/location/java/android/location/ILocationManager.aidl
index 42b72d4..72761ef 100644
--- a/location/java/android/location/ILocationManager.aidl
+++ b/location/java/android/location/ILocationManager.aidl
@@ -98,12 +98,16 @@
     void addGnssAntennaInfoListener(in IGnssAntennaInfoListener listener, String packageName, @nullable String attributionTag, String listenerId);
     void removeGnssAntennaInfoListener(in IGnssAntennaInfoListener listener);
 
+    @EnforcePermission("INTERACT_ACROSS_USERS")
     void addProviderRequestListener(in IProviderRequestListener listener);
     void removeProviderRequestListener(in IProviderRequestListener listener);
 
     int getGnssBatchSize();
+    @EnforcePermission("LOCATION_HARDWARE")
     void startGnssBatch(long periodNanos, in ILocationListener listener, String packageName, @nullable String attributionTag, String listenerId);
+    @EnforcePermission("LOCATION_HARDWARE")
     void flushGnssBatch();
+    @EnforcePermission("LOCATION_HARDWARE")
     void stopGnssBatch();
 
     boolean hasProvider(String provider);
@@ -111,7 +115,9 @@
     List<String> getProviders(in Criteria criteria, boolean enabledOnly);
     String getBestProvider(in Criteria criteria, boolean enabledOnly);
     ProviderProperties getProviderProperties(String provider);
+    @EnforcePermission("READ_DEVICE_CONFIG")
     boolean isProviderPackage(@nullable String provider, String packageName, @nullable String attributionTag);
+    @EnforcePermission("READ_DEVICE_CONFIG")
     List<String> getProviderPackages(String provider);
 
     @EnforcePermission("LOCATION_HARDWARE")
diff --git a/location/java/android/location/altitude/AltitudeConverter.java b/location/java/android/location/altitude/AltitudeConverter.java
index eb73b69..3dc024ef 100644
--- a/location/java/android/location/altitude/AltitudeConverter.java
+++ b/location/java/android/location/altitude/AltitudeConverter.java
@@ -31,6 +31,14 @@
 /**
  * Converts altitudes reported above the World Geodetic System 1984 (WGS84) reference ellipsoid
  * into ones above Mean Sea Level.
+ *
+ * <p>Reference:
+ *
+ * <pre>
+ * Brian Julian and Michael Angermann.
+ * "Resource efficient and accurate altitude conversion to Mean Sea Level."
+ * To appear in 2023 IEEE/ION Position, Location and Navigation Symposium (PLANS).
+ * </pre>
  */
 public final class AltitudeConverter {
 
@@ -81,27 +89,47 @@
         long s2CellId = S2CellIdUtils.fromLatLngDegrees(location.getLatitude(),
                 location.getLongitude());
 
-        // (0,0) cell.
+        // Cell-space properties and coordinates.
+        int sizeIj = 1 << (S2CellIdUtils.MAX_LEVEL - params.mapS2Level);
+        int maxIj = 1 << S2CellIdUtils.MAX_LEVEL;
         long s0 = S2CellIdUtils.getParent(s2CellId, params.mapS2Level);
+        int f0 = S2CellIdUtils.getFace(s2CellId);
+        int i0 = S2CellIdUtils.getI(s2CellId);
+        int j0 = S2CellIdUtils.getJ(s2CellId);
+        int i1 = i0 + sizeIj;
+        int j1 = j0 + sizeIj;
+
+        // Non-boundary region calculation - simplest and most common case.
+        if (i1 < maxIj && j1 < maxIj) {
+            return new long[]{
+                    s0,
+                    S2CellIdUtils.getParent(S2CellIdUtils.fromFij(f0, i1, j0), params.mapS2Level),
+                    S2CellIdUtils.getParent(S2CellIdUtils.fromFij(f0, i0, j1), params.mapS2Level),
+                    S2CellIdUtils.getParent(S2CellIdUtils.fromFij(f0, i1, j1), params.mapS2Level)
+            };
+        }
+
+        // Boundary region calculation.
         long[] edgeNeighbors = new long[4];
         S2CellIdUtils.getEdgeNeighbors(s0, edgeNeighbors);
-
-        // (1,0) cell.
-        int i1 = S2CellIdUtils.getI(s2CellId) > S2CellIdUtils.getI(s0) ? -1 : 1;
-        long s1 = edgeNeighbors[i1 + 2];
-
-        // (0,1) cell.
-        int i2 = S2CellIdUtils.getJ(s2CellId) > S2CellIdUtils.getJ(s0) ? 1 : -1;
-        long s2 = edgeNeighbors[i2 + 1];
-
-        // (1,1) cell.
-        S2CellIdUtils.getEdgeNeighbors(s1, edgeNeighbors);
-        long s3 = 0;
-        for (int i = 0; i < edgeNeighbors.length; i++) {
-            if (edgeNeighbors[i] == s0) {
-                int i3 = (i + i1 * i2 + edgeNeighbors.length) % edgeNeighbors.length;
-                s3 = edgeNeighbors[i3] == s2 ? 0 : edgeNeighbors[i3];
-                break;
+        long s1 = edgeNeighbors[1];
+        long s2 = edgeNeighbors[2];
+        long s3;
+        if (f0 % 2 == 1) {
+            S2CellIdUtils.getEdgeNeighbors(s1, edgeNeighbors);
+            if (i1 < maxIj) {
+                s3 = edgeNeighbors[2];
+            } else {
+                s3 = s1;
+                s1 = edgeNeighbors[1];
+            }
+        } else {
+            S2CellIdUtils.getEdgeNeighbors(s2, edgeNeighbors);
+            if (j1 < maxIj) {
+                s3 = edgeNeighbors[1];
+            } else {
+                s3 = s2;
+                s2 = edgeNeighbors[3];
             }
         }
 
@@ -118,13 +146,12 @@
      * Mean Sea Level altitude accuracy is added if the {@code location} has a valid vertical
      * accuracy; otherwise, does not add a corresponding accuracy.
      */
-    private static void addMslAltitude(@NonNull MapParamsProto params, @NonNull long[] s2CellIds,
+    private static void addMslAltitude(@NonNull MapParamsProto params,
             @NonNull double[] geoidHeightsMeters, @NonNull Location location) {
-        long s0 = s2CellIds[0];
         double h0 = geoidHeightsMeters[0];
         double h1 = geoidHeightsMeters[1];
         double h2 = geoidHeightsMeters[2];
-        double h3 = s2CellIds[3] == 0 ? h0 : geoidHeightsMeters[3];
+        double h3 = geoidHeightsMeters[3];
 
         // Bilinear interpolation on an S2 square of size equal to that of a map cell. wi and wj
         // are the normalized [0,1] weights in the i and j directions, respectively, allowing us to
@@ -132,8 +159,8 @@
         long s2CellId = S2CellIdUtils.fromLatLngDegrees(location.getLatitude(),
                 location.getLongitude());
         double sizeIj = 1 << (S2CellIdUtils.MAX_LEVEL - params.mapS2Level);
-        double wi = Math.abs(S2CellIdUtils.getI(s2CellId) - S2CellIdUtils.getI(s0)) / sizeIj;
-        double wj = Math.abs(S2CellIdUtils.getJ(s2CellId) - S2CellIdUtils.getJ(s0)) / sizeIj;
+        double wi = (S2CellIdUtils.getI(s2CellId) % sizeIj) / sizeIj;
+        double wj = (S2CellIdUtils.getJ(s2CellId) % sizeIj) / sizeIj;
         double offsetMeters = h0 + (h1 - h0) * wi + (h2 - h0) * wj + (h3 - h1 - h2 + h0) * wi * wj;
 
         location.setMslAltitudeMeters(location.getAltitude() - offsetMeters);
@@ -167,7 +194,7 @@
         MapParamsProto params = GeoidHeightMap.getParams(context);
         long[] s2CellIds = findMapSquare(params, location);
         double[] geoidHeightsMeters = mGeoidHeightMap.readGeoidHeights(params, context, s2CellIds);
-        addMslAltitude(params, s2CellIds, geoidHeightsMeters, location);
+        addMslAltitude(params, geoidHeightsMeters, location);
     }
 
     /**
@@ -190,7 +217,7 @@
             return false;
         }
 
-        addMslAltitude(params, s2CellIds, geoidHeightsMeters, location);
+        addMslAltitude(params, geoidHeightsMeters, location);
         return true;
     }
 }
diff --git a/location/java/com/android/internal/location/altitude/GeoidHeightMap.java b/location/java/com/android/internal/location/altitude/GeoidHeightMap.java
index 73b6ab5..8067050 100644
--- a/location/java/com/android/internal/location/altitude/GeoidHeightMap.java
+++ b/location/java/com/android/internal/location/altitude/GeoidHeightMap.java
@@ -99,8 +99,8 @@
 
     /**
      * Adds to {@code values} values in the unit interval [0, 1] for the map cells identified by
-     * {@code s2CellIds}. Returns true if values are present for all non-zero IDs; otherwise,
-     * returns false and adds NaNs for absent values.
+     * {@code s2CellIds}. Returns true if values are present for all IDs; otherwise, returns false
+     * and adds NaNs for absent values.
      */
     private static boolean getUnitIntervalValues(@NonNull MapParamsProto params,
             @NonNull TileFunction tileFunction,
@@ -109,10 +109,8 @@
 
         S2TileProto[] tiles = new S2TileProto[len];
         for (int i = 0; i < len; i++) {
-            if (s2CellIds[i] != 0) {
-                long cacheKey = getCacheKey(params, s2CellIds[i]);
-                tiles[i] = tileFunction.getTile(cacheKey);
-            }
+            long cacheKey = getCacheKey(params, s2CellIds[i]);
+            tiles[i] = tileFunction.getTile(cacheKey);
             values[i] = Double.NaN;
         }
 
@@ -128,9 +126,6 @@
 
         boolean allFound = true;
         for (int i = 0; i < len; i++) {
-            if (s2CellIds[i] == 0) {
-                continue;
-            }
             if (Double.isNaN(values[i])) {
                 allFound = false;
             } else {
@@ -195,7 +190,7 @@
         }
 
         for (int i = tileIndex; i < tiles.length; i++) {
-            if (s2CellIds[i] == 0 || tiles[i] != tiles[tileIndex]) {
+            if (tiles[i] != tiles[tileIndex]) {
                 continue;
             }
 
@@ -226,15 +221,14 @@
     private static void validate(@NonNull MapParamsProto params, @NonNull long[] s2CellIds) {
         Preconditions.checkArgument(s2CellIds.length == 4);
         for (long s2CellId : s2CellIds) {
-            Preconditions.checkArgument(
-                    s2CellId == 0 || S2CellIdUtils.getLevel(s2CellId) == params.mapS2Level);
+            Preconditions.checkArgument(S2CellIdUtils.getLevel(s2CellId) == params.mapS2Level);
         }
     }
 
     /**
      * Returns the geoid heights in meters associated with the map cells identified by
-     * {@code s2CellIds}. Throws an {@link IOException} if a geoid height cannot be calculated for a
-     * non-zero ID.
+     * {@code s2CellIds}. Throws an {@link IOException} if a geoid height cannot be calculated for
+     * an ID.
      */
     @NonNull
     public double[] readGeoidHeights(@NonNull MapParamsProto params, @NonNull Context context,
@@ -254,8 +248,8 @@
 
     /**
      * Same as {@link #readGeoidHeights(MapParamsProto, Context, long[])} except that data will not
-     * be loaded from raw assets. Returns the heights if present for all non-zero IDs; otherwise,
-     * returns null.
+     * be loaded from raw assets. Returns the heights if present for all IDs; otherwise, returns
+     * null.
      */
     @Nullable
     public double[] readGeoidHeights(@NonNull MapParamsProto params, @NonNull long[] s2CellIds) {
@@ -269,8 +263,8 @@
 
     /**
      * Adds to {@code heightsMeters} the geoid heights in meters associated with the map cells
-     * identified by {@code s2CellIds}. Returns true if heights are present for all non-zero IDs;
-     * otherwise, returns false and adds NaNs for absent heights.
+     * identified by {@code s2CellIds}. Returns true if heights are present for all IDs; otherwise,
+     * returns false and adds NaNs for absent heights.
      */
     private boolean getGeoidHeights(@NonNull MapParamsProto params,
             @NonNull TileFunction tileFunction, @NonNull long[] s2CellIds,
@@ -292,9 +286,6 @@
         // Enable batch loading by finding all cache keys upfront.
         long[] cacheKeys = new long[len];
         for (int i = 0; i < len; i++) {
-            if (s2CellIds[i] == 0) {
-                continue;
-            }
             cacheKeys[i] = getCacheKey(params, s2CellIds[i]);
         }
 
@@ -302,7 +293,7 @@
         S2TileProto[] loadedTiles = new S2TileProto[len];
         String[] diskTokens = new String[len];
         for (int i = 0; i < len; i++) {
-            if (s2CellIds[i] == 0 || diskTokens[i] != null) {
+            if (diskTokens[i] != null) {
                 continue;
             }
             loadedTiles[i] = mCacheTiles.get(cacheKeys[i]);
@@ -319,7 +310,7 @@
 
         // Attempt to load tiles from disk.
         for (int i = 0; i < len; i++) {
-            if (s2CellIds[i] == 0 || loadedTiles[i] != null) {
+            if (loadedTiles[i] != null) {
                 continue;
             }
 
diff --git a/location/java/com/android/internal/location/altitude/S2CellIdUtils.java b/location/java/com/android/internal/location/altitude/S2CellIdUtils.java
index 5f11387..08bcda4 100644
--- a/location/java/com/android/internal/location/altitude/S2CellIdUtils.java
+++ b/location/java/com/android/internal/location/altitude/S2CellIdUtils.java
@@ -70,6 +70,34 @@
         return fromLatLngRadians(Math.toRadians(latDegrees), Math.toRadians(lngDegrees));
     }
 
+    /** Returns the leaf S2 cell ID of the specified (face, i, j) coordinate. */
+    public static long fromFij(int face, int i, int j) {
+        int bits = (face & SWAP_MASK);
+        // Update most significant bits.
+        long msb = ((long) face) << (POS_BITS - 33);
+        for (int k = 7; k >= 4; --k) {
+            bits = lookupBits(i, j, k, bits);
+            msb = updateBits(msb, k, bits);
+            bits = maskBits(bits);
+        }
+        // Update least significant bits.
+        long lsb = 0;
+        for (int k = 3; k >= 0; --k) {
+            bits = lookupBits(i, j, k, bits);
+            lsb = updateBits(lsb, k, bits);
+            bits = maskBits(bits);
+        }
+        return (((msb << 32) + lsb) << 1) + 1;
+    }
+
+    /**
+     * Returns the face of the specified S2 cell. The returned face is in [0, 5] for valid S2 cell
+     * IDs. Behavior is undefined for invalid S2 cell IDs.
+     */
+    public static int getFace(long s2CellId) {
+        return (int) (s2CellId >>> POS_BITS);
+    }
+
     /**
      * Returns the ID of the parent of the specified S2 cell at the specified parent level.
      * Behavior is undefined for invalid S2 cell IDs or parent levels not in
@@ -219,26 +247,6 @@
         return fromFij(face, i, j);
     }
 
-    /** Returns the leaf S2 cell ID of the specified (face, i, j) coordinate. */
-    private static long fromFij(int face, int i, int j) {
-        int bits = (face & SWAP_MASK);
-        // Update most significant bits.
-        long msb = ((long) face) << (POS_BITS - 33);
-        for (int k = 7; k >= 4; --k) {
-            bits = lookupBits(i, j, k, bits);
-            msb = updateBits(msb, k, bits);
-            bits = maskBits(bits);
-        }
-        // Update least significant bits.
-        long lsb = 0;
-        for (int k = 3; k >= 0; --k) {
-            bits = lookupBits(i, j, k, bits);
-            lsb = updateBits(lsb, k, bits);
-            bits = maskBits(bits);
-        }
-        return (((msb << 32) + lsb) << 1) + 1;
-    }
-
     private static long fromFijWrap(int face, int i, int j) {
         double u = iToU(i);
         double v = jToV(j);
@@ -314,10 +322,6 @@
         return bits & (SWAP_MASK | INVERT_MASK);
     }
 
-    private static int getFace(long s2CellId) {
-        return (int) (s2CellId >>> POS_BITS);
-    }
-
     private static boolean isLeaf(long s2CellId) {
         return ((int) s2CellId & LEAF_MASK) != 0;
     }
diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl
index 7ce189b..02f765a 100644
--- a/media/java/android/media/IAudioService.aidl
+++ b/media/java/android/media/IAudioService.aidl
@@ -221,6 +221,7 @@
 
     boolean isSurroundFormatEnabled(int audioFormat);
 
+    @EnforcePermission("WRITE_SETTINGS")
     boolean setEncodedSurroundMode(int mode);
 
     int getEncodedSurroundMode(int targetSdkVersion);
@@ -260,6 +261,7 @@
 
     void forceVolumeControlStream(int streamType, IBinder cb);
 
+    @EnforcePermission("REMOTE_AUDIO_PLAYBACK")
     void setRingtonePlayer(IRingtonePlayer player);
     IRingtonePlayer getRingtonePlayer();
     int getUiSoundsStreamType();
@@ -364,6 +366,7 @@
 
     oneway void playerHasOpPlayAudio(in int piid, in boolean hasOpPlayAudio);
 
+    @EnforcePermission("BLUETOOTH_STACK")
     void handleBluetoothActiveDeviceChanged(in BluetoothDevice newDevice,
             in BluetoothDevice previousDevice, in BluetoothProfileConnectionInfo info);
 
diff --git a/media/java/android/media/IRingtonePlayer.aidl b/media/java/android/media/IRingtonePlayer.aidl
index 5a7ff7f..97cc1a8 100644
--- a/media/java/android/media/IRingtonePlayer.aidl
+++ b/media/java/android/media/IRingtonePlayer.aidl
@@ -30,11 +30,13 @@
     @UnsupportedAppUsage
     oneway void play(IBinder token, in Uri uri, in AudioAttributes aa, float volume, boolean looping);
     oneway void playWithVolumeShaping(IBinder token, in Uri uri, in AudioAttributes aa,
-        float volume, boolean looping, in @nullable VolumeShaper.Configuration volumeShaperConfig);
+        float volume, boolean looping, boolean hapticGeneratorEnabled,
+        in @nullable VolumeShaper.Configuration volumeShaperConfig);
     oneway void stop(IBinder token);
     boolean isPlaying(IBinder token);
-    oneway void setPlaybackProperties(IBinder token, float volume, boolean looping,
-        boolean hapticGeneratorEnabled);
+    oneway void setLooping(IBinder token, boolean looping);
+    oneway void setVolume(IBinder token, float volume);
+    oneway void setHapticGeneratorEnabled(IBinder token, boolean hapticGeneratorEnabled);
 
     /** Used for Notification sound playback. */
     oneway void playAsync(in Uri uri, in UserHandle user, boolean looping, in AudioAttributes aa);
diff --git a/media/java/android/media/LocalRingtonePlayer.java b/media/java/android/media/LocalRingtonePlayer.java
new file mode 100644
index 0000000..4aa24af
--- /dev/null
+++ b/media/java/android/media/LocalRingtonePlayer.java
@@ -0,0 +1,250 @@
+/*
+ * Copyright (C) 2023 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.media;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.Context;
+import android.content.res.AssetFileDescriptor;
+import android.media.audiofx.HapticGenerator;
+import android.net.Uri;
+import android.os.Trace;
+import android.util.Log;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Objects;
+
+/**
+ * Plays a ringtone on the local process.
+ * @hide
+ */
+public class LocalRingtonePlayer
+        implements Ringtone.RingtonePlayer, MediaPlayer.OnCompletionListener {
+    private static final String TAG = "LocalRingtonePlayer";
+
+    // keep references on active Ringtones until stopped or completion listener called.
+    private static final ArrayList<LocalRingtonePlayer> sActiveRingtones = new ArrayList<>();
+
+    private final MediaPlayer mMediaPlayer;
+    private final AudioAttributes mAudioAttributes;
+    private final Ringtone.Injectables mInjectables;
+    private final AudioManager mAudioManager;
+    private final VolumeShaper mVolumeShaper;
+    private HapticGenerator mHapticGenerator;
+
+    private LocalRingtonePlayer(@NonNull MediaPlayer mediaPlayer,
+            @NonNull AudioAttributes audioAttributes, @NonNull Ringtone.Injectables injectables,
+            @NonNull AudioManager audioManager, @Nullable HapticGenerator hapticGenerator,
+            @Nullable VolumeShaper volumeShaper) {
+        Objects.requireNonNull(mediaPlayer);
+        Objects.requireNonNull(audioAttributes);
+        Objects.requireNonNull(injectables);
+        Objects.requireNonNull(audioManager);
+        mMediaPlayer = mediaPlayer;
+        mAudioAttributes = audioAttributes;
+        mInjectables = injectables;
+        mAudioManager = audioManager;
+        mVolumeShaper = volumeShaper;
+        mHapticGenerator = hapticGenerator;
+    }
+
+    /**
+     * Creates a {@link LocalRingtonePlayer} for a Uri, returning null if the Uri can't be
+     * loaded in the local player.
+     */
+    @Nullable
+    static LocalRingtonePlayer create(@NonNull Context context,
+            @NonNull AudioManager audioManager, @NonNull Uri soundUri,
+            @NonNull AudioAttributes audioAttributes,
+            @NonNull Ringtone.Injectables injectables,
+            @Nullable VolumeShaper.Configuration volumeShaperConfig,
+            @Nullable AudioDeviceInfo preferredDevice, boolean initialHapticGeneratorEnabled,
+            boolean initialLooping, float initialVolume) {
+        Objects.requireNonNull(context);
+        Objects.requireNonNull(soundUri);
+        Objects.requireNonNull(audioAttributes);
+        Trace.beginSection("createLocalMediaPlayer");
+        MediaPlayer mediaPlayer = injectables.newMediaPlayer();
+        HapticGenerator hapticGenerator = null;
+        try {
+            mediaPlayer.setDataSource(context, soundUri);
+            mediaPlayer.setAudioAttributes(audioAttributes);
+            mediaPlayer.setPreferredDevice(preferredDevice);
+            mediaPlayer.setLooping(initialLooping);
+            mediaPlayer.setVolume(initialVolume);
+            if (initialHapticGeneratorEnabled) {
+                hapticGenerator = injectables.createHapticGenerator(mediaPlayer);
+                hapticGenerator.setEnabled(true);
+            }
+            VolumeShaper volumeShaper = null;
+            if (volumeShaperConfig != null) {
+                volumeShaper = mediaPlayer.createVolumeShaper(volumeShaperConfig);
+            }
+            mediaPlayer.prepare();
+            return new LocalRingtonePlayer(mediaPlayer, audioAttributes, injectables, audioManager,
+                    hapticGenerator, volumeShaper);
+        } catch (SecurityException | IOException e) {
+            if (hapticGenerator != null) {
+                hapticGenerator.release();
+            }
+            // volume shaper closes with media player
+            mediaPlayer.release();
+            return null;
+        } finally {
+            Trace.endSection();
+        }
+    }
+
+    /**
+     * Creates a {@link LocalRingtonePlayer} for an externally referenced file descriptor. This is
+     * intended for loading a fallback from an internal resource, rather than via a Uri.
+     */
+    @Nullable
+    static LocalRingtonePlayer createForFallback(
+            @NonNull AudioManager audioManager, @NonNull AssetFileDescriptor afd,
+            @NonNull AudioAttributes audioAttributes,
+            @NonNull Ringtone.Injectables injectables,
+            @Nullable VolumeShaper.Configuration volumeShaperConfig,
+            @Nullable AudioDeviceInfo preferredDevice,
+            boolean initialLooping, float initialVolume) {
+        // Haptic generator not supported for fallback.
+        Objects.requireNonNull(audioManager);
+        Objects.requireNonNull(afd);
+        Objects.requireNonNull(audioAttributes);
+        Trace.beginSection("createFallbackLocalMediaPlayer");
+
+        MediaPlayer mediaPlayer = injectables.newMediaPlayer();
+        try {
+            if (afd.getDeclaredLength() < 0) {
+                mediaPlayer.setDataSource(afd.getFileDescriptor());
+            } else {
+                mediaPlayer.setDataSource(afd.getFileDescriptor(),
+                        afd.getStartOffset(),
+                        afd.getDeclaredLength());
+            }
+            mediaPlayer.setAudioAttributes(audioAttributes);
+            mediaPlayer.setPreferredDevice(preferredDevice);
+            mediaPlayer.setLooping(initialLooping);
+            mediaPlayer.setVolume(initialVolume);
+            VolumeShaper volumeShaper = null;
+            if (volumeShaperConfig != null) {
+                volumeShaper = mediaPlayer.createVolumeShaper(volumeShaperConfig);
+            }
+            mediaPlayer.prepare();
+            return new LocalRingtonePlayer(mediaPlayer, audioAttributes, injectables, audioManager,
+                    /* hapticGenerator= */ null, volumeShaper);
+        } catch (SecurityException | IOException e) {
+            Log.e(TAG, "Failed to open fallback ringtone");
+            mediaPlayer.release();
+            return null;
+        } finally {
+            Trace.endSection();
+        }
+    }
+
+    @Override
+    public boolean play() {
+        // Play ringtones if stream volume is over 0 or if it is a haptic-only ringtone
+        // (typically because ringer mode is vibrate).
+        if (mAudioManager.getStreamVolume(AudioAttributes.toLegacyStreamType(mAudioAttributes))
+                == 0 && (mAudioAttributes.areHapticChannelsMuted() || !hasHapticChannels())) {
+            return true;  // Successfully played while muted.
+        }
+        synchronized (sActiveRingtones) {
+            sActiveRingtones.add(this);
+        }
+
+        mMediaPlayer.setOnCompletionListener(this);
+        mMediaPlayer.start();
+        if (mVolumeShaper != null) {
+            mVolumeShaper.apply(VolumeShaper.Operation.PLAY);
+        }
+        return true;
+    }
+
+    @Override
+    public boolean isPlaying() {
+        return mMediaPlayer.isPlaying();
+    }
+
+    @Override
+    public void stopAndRelease() {
+        synchronized (sActiveRingtones) {
+            sActiveRingtones.remove(this);
+        }
+        if (mHapticGenerator != null) {
+            mHapticGenerator.release();
+        }
+        mMediaPlayer.setOnCompletionListener(null);
+        mMediaPlayer.reset();
+        mMediaPlayer.release();
+    }
+
+    @Override
+    public void setPreferredDevice(@Nullable AudioDeviceInfo audioDeviceInfo) {
+        mMediaPlayer.setPreferredDevice(audioDeviceInfo);
+    }
+
+    @Override
+    public void setLooping(boolean looping) {
+        mMediaPlayer.setLooping(looping);
+    }
+
+    @Override
+    public void setHapticGeneratorEnabled(boolean enabled) {
+        if (enabled && mHapticGenerator == null) {
+            mHapticGenerator = mInjectables.createHapticGenerator(mMediaPlayer);
+        }
+        if (mHapticGenerator != null) {
+            mHapticGenerator.setEnabled(enabled);
+        }
+    }
+
+    @Override
+    public void setVolume(float volume) {
+        mMediaPlayer.setVolume(volume);
+    }
+
+    /**
+     * Same as AudioManager.hasHapticChannels except it assumes an already created ringtone.
+     * @hide
+     */
+    @Override
+    public boolean hasHapticChannels() {
+        // FIXME: support remote player, or internalize haptic channels support and remove entirely.
+        try {
+            Trace.beginSection("LocalRingtonePlayer.hasHapticChannels");
+            for (MediaPlayer.TrackInfo trackInfo : mMediaPlayer.getTrackInfo()) {
+                if (trackInfo.hasHapticChannels()) {
+                    return true;
+                }
+            }
+        } finally {
+            Trace.endSection();
+        }
+        return false;
+    }
+
+    @Override
+    public void onCompletion(MediaPlayer mp) {
+        synchronized (sActiveRingtones) {
+            sActiveRingtones.remove(this);
+        }
+        mp.setOnCompletionListener(null); // Help the Java GC: break the refcount cycle.
+    }
+}
diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java
index c620229..355eb83 100644
--- a/media/java/android/media/MediaRouter2.java
+++ b/media/java/android/media/MediaRouter2.java
@@ -77,14 +77,13 @@
     @GuardedBy("sSystemRouterLock")
     private static Map<String, MediaRouter2> sSystemMediaRouter2Map = new ArrayMap<>();
 
-    private static MediaRouter2Manager sManager;
-
     @GuardedBy("sRouterLock")
     private static MediaRouter2 sInstance;
 
     private final Context mContext;
     private final IMediaRouterService mMediaRouterService;
     private final Object mLock = new Object();
+    private final MediaRouter2Impl mImpl;
 
     private final CopyOnWriteArrayList<RouteCallbackRecord> mRouteCallbackRecords =
             new CopyOnWriteArrayList<>();
@@ -96,12 +95,6 @@
     private final CopyOnWriteArrayList<ControllerCreationRequest> mControllerCreationRequests =
             new CopyOnWriteArrayList<>();
 
-    // TODO: Specify the fields that are only used (or not used) by system media router.
-    private final String mClientPackageName;
-    final ManagerCallback mManagerCallback;
-
-    private final String mPackageName;
-
     /**
      * Stores the latest copy of all routes received from the system server, without any filtering,
      * sorting, or deduplication.
@@ -178,7 +171,7 @@
      *
      * <ul>
      *   <li>{@link #getControllers()}
-     *   <li>{@link #getController(String)}}
+     *   <li>{@link #getController(String)}
      *   <li>{@link TransferCallback#onTransfer(RoutingController, RoutingController)}
      *   <li>{@link TransferCallback#onStop(RoutingController)}
      *   <li>{@link ControllerCallback#onControllerUpdated(RoutingController)}
@@ -191,7 +184,8 @@
      * <p>Finally, it will have no effect to call {@link #setOnGetControllerHintsListener}.
      *
      * @param clientPackageName the package name of the app to control
-     * @throws SecurityException if the caller doesn't have MODIFY_AUDIO_ROUTING permission.
+     * @throws SecurityException if the caller doesn't have {@link
+     *     Manifest.permission#MEDIA_CONTENT_CONTROL MEDIA_CONTENT_CONTROL} permission.
      * @hide
      */
     @SystemApi
@@ -221,14 +215,8 @@
         synchronized (sSystemRouterLock) {
             MediaRouter2 instance = sSystemMediaRouter2Map.get(clientPackageName);
             if (instance == null) {
-                if (sManager == null) {
-                    sManager = MediaRouter2Manager.getInstance(context.getApplicationContext());
-                }
                 instance = new MediaRouter2(context, clientPackageName);
                 sSystemMediaRouter2Map.put(clientPackageName, instance);
-                // Using direct executor here, since MediaRouter2Manager also posts
-                // to the main handler.
-                sManager.registerCallback(Runnable::run, instance.mManagerCallback);
             }
             return instance;
         }
@@ -255,11 +243,7 @@
     @SystemApi
     @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL)
     public void startScan() {
-        if (isSystemRouter()) {
-            if (!mIsScanning.getAndSet(true)) {
-                sManager.registerScanRequest();
-            }
-        }
+        mImpl.startScan();
     }
 
     /**
@@ -283,11 +267,7 @@
     @SystemApi
     @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL)
     public void stopScan() {
-        if (isSystemRouter()) {
-            if (mIsScanning.getAndSet(false)) {
-                sManager.unregisterScanRequest();
-            }
-        }
+        mImpl.stopScan();
     }
 
     private MediaRouter2(Context appContext) {
@@ -295,14 +275,12 @@
         mMediaRouterService =
                 IMediaRouterService.Stub.asInterface(
                         ServiceManager.getService(Context.MEDIA_ROUTER_SERVICE));
-        mPackageName = mContext.getPackageName();
+        mImpl = new LocalMediaRouter2Impl(mContext.getPackageName());
         mHandler = new Handler(Looper.getMainLooper());
 
         List<MediaRoute2Info> currentSystemRoutes = null;
-        RoutingSessionInfo currentSystemSessionInfo = null;
         try {
             currentSystemRoutes = mMediaRouterService.getSystemRoutes();
-            currentSystemSessionInfo = mMediaRouterService.getSystemSessionInfo();
         } catch (RemoteException ex) {
             ex.rethrowFromSystemServer();
         }
@@ -311,6 +289,7 @@
             throw new RuntimeException("Null or empty currentSystemRoutes. Something is wrong.");
         }
 
+        RoutingSessionInfo currentSystemSessionInfo = mImpl.getSystemSessionInfo();
         if (currentSystemSessionInfo == null) {
             throw new RuntimeException("Null currentSystemSessionInfo. Something is wrong.");
         }
@@ -319,27 +298,18 @@
             mRoutes.put(route.getId(), route);
         }
         mSystemController = new SystemRoutingController(currentSystemSessionInfo);
-
-        // Only used by system MediaRouter2.
-        mClientPackageName = null;
-        mManagerCallback = null;
     }
 
     private MediaRouter2(Context context, String clientPackageName) {
         mContext = context;
-        mClientPackageName = clientPackageName;
-        mManagerCallback = new ManagerCallback();
         mHandler = new Handler(Looper.getMainLooper());
-        mSystemController =
-                new SystemRoutingController(
-                        ensureClientPackageNameForSystemSession(
-                                sManager.getSystemRoutingSession(clientPackageName)));
-        mDiscoveryPreference = sManager.getDiscoveryPreference(clientPackageName);
-        updateAllRoutesFromManager();
+        mImpl = new ProxyMediaRouter2Impl(context, clientPackageName);
+        mSystemController = new SystemRoutingController(mImpl.getSystemSessionInfo());
+        ProxyMediaRouter2Impl proxyImpl = (ProxyMediaRouter2Impl) mImpl;
+        proxyImpl.updateAllRoutesFromManager();
 
         // Only used by non-system MediaRouter2.
         mMediaRouterService = null;
-        mPackageName = null;
     }
 
     /**
@@ -368,7 +338,7 @@
     @SystemApi
     @Nullable
     public String getClientPackageName() {
-        return mClientPackageName;
+        return mImpl.getClientPackageName();
     }
 
     /**
@@ -384,39 +354,16 @@
         Objects.requireNonNull(executor, "executor must not be null");
         Objects.requireNonNull(routeCallback, "callback must not be null");
         Objects.requireNonNull(preference, "preference must not be null");
-        if (isSystemRouter()) {
-            preference = RouteDiscoveryPreference.EMPTY;
-        }
 
-        RouteCallbackRecord record = new RouteCallbackRecord(executor, routeCallback, preference);
+        RouteCallbackRecord record =
+                mImpl.createRouteCallbackRecord(executor, routeCallback, preference);
 
         mRouteCallbackRecords.remove(record);
         // It can fail to add the callback record if another registration with the same callback
         // is happening but it's okay because either this or the other registration should be done.
         mRouteCallbackRecords.addIfAbsent(record);
 
-        if (isSystemRouter()) {
-            return;
-        }
-
-        synchronized (mLock) {
-            if (mStub == null) {
-                MediaRouter2Stub stub = new MediaRouter2Stub();
-                try {
-                    mMediaRouterService.registerRouter2(stub, mPackageName);
-                    mStub = stub;
-                } catch (RemoteException ex) {
-                    ex.rethrowFromSystemServer();
-                }
-            }
-            if (mStub != null && updateDiscoveryPreferenceIfNeededLocked()) {
-                try {
-                    mMediaRouterService.setDiscoveryRequestWithRouter2(mStub, mDiscoveryPreference);
-                } catch (RemoteException ex) {
-                    ex.rethrowFromSystemServer();
-                }
-            }
-        }
+        mImpl.registerRouteCallback();
     }
 
     /**
@@ -434,30 +381,7 @@
             return;
         }
 
-        if (isSystemRouter()) {
-            return;
-        }
-
-        synchronized (mLock) {
-            if (mStub == null) {
-                return;
-            }
-            if (updateDiscoveryPreferenceIfNeededLocked()) {
-                try {
-                    mMediaRouterService.setDiscoveryRequestWithRouter2(mStub, mDiscoveryPreference);
-                } catch (RemoteException ex) {
-                    Log.e(TAG, "unregisterRouteCallback: Unable to set discovery request.", ex);
-                }
-            }
-            if (mRouteCallbackRecords.isEmpty() && mNonSystemRoutingControllers.isEmpty()) {
-                try {
-                    mMediaRouterService.unregisterRouter2(mStub);
-                } catch (RemoteException ex) {
-                    ex.rethrowFromSystemServer();
-                }
-                mStub = null;
-            }
-        }
+        mImpl.unregisterRouteCallback();
     }
 
     /**
@@ -479,7 +403,7 @@
     public boolean showSystemOutputSwitcher() {
         synchronized (mLock) {
             try {
-                return mMediaRouterService.showMediaOutputSwitcher(mPackageName);
+                return mMediaRouterService.showMediaOutputSwitcher(mImpl.getPackageName());
             } catch (RemoteException ex) {
                 ex.rethrowFromSystemServer();
             }
@@ -523,7 +447,7 @@
             try {
                 if (mStub == null) {
                     MediaRouter2Stub stub = new MediaRouter2Stub();
-                    mMediaRouterService.registerRouter2(stub, mPackageName);
+                    mMediaRouterService.registerRouter2(stub, mImpl.getPackageName());
                     mStub = stub;
                 }
                 mMediaRouterService.setRouteListingPreference(mStub, mRouteListingPreference);
@@ -558,10 +482,7 @@
     @SystemApi
     @NonNull
     public List<MediaRoute2Info> getAllRoutes() {
-        if (isSystemRouter()) {
-            return sManager.getAllRoutes();
-        }
-        return Collections.emptyList();
+        return mImpl.getAllRoutes();
     }
 
     /**
@@ -658,10 +579,7 @@
      *     {@code null} for unset.
      */
     public void setOnGetControllerHintsListener(@Nullable OnGetControllerHintsListener listener) {
-        if (isSystemRouter()) {
-            return;
-        }
-        mOnGetControllerHintsListener = listener;
+        mImpl.setOnGetControllerHintsListener(listener);
     }
 
     /**
@@ -674,30 +592,7 @@
      * @see TransferCallback#onTransferFailure
      */
     public void transferTo(@NonNull MediaRoute2Info route) {
-        if (isSystemRouter()) {
-            sManager.transfer(mClientPackageName, route);
-            return;
-        }
-
-        Log.v(TAG, "Transferring to route: " + route);
-
-        boolean routeFound;
-        synchronized (mLock) {
-            // TODO: Check thread-safety
-            routeFound = mRoutes.containsKey(route.getId());
-        }
-        if (!routeFound) {
-            notifyTransferFailure(route);
-            return;
-        }
-
-        RoutingController controller = getCurrentController();
-        if (controller.getRoutingSessionInfo().getTransferableRoutes().contains(route.getId())) {
-            controller.transferToRoute(route);
-            return;
-        }
-
-        requestCreateController(controller, route, MANAGER_REQUEST_ID_NONE);
+        mImpl.transferTo(route);
     }
 
     /**
@@ -705,13 +600,7 @@
      * controls the media routing, this method is a no-op.
      */
     public void stop() {
-        if (isSystemRouter()) {
-            List<RoutingSessionInfo> sessionInfos = sManager.getRoutingSessions(mClientPackageName);
-            RoutingSessionInfo sessionToRelease = sessionInfos.get(sessionInfos.size() - 1);
-            sManager.releaseSession(sessionToRelease);
-            return;
-        }
-        getCurrentController().release();
+        mImpl.stop();
     }
 
     /**
@@ -726,10 +615,7 @@
     @SystemApi
     @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL)
     public void transfer(@NonNull RoutingController controller, @NonNull MediaRoute2Info route) {
-        if (isSystemRouter()) {
-            sManager.transfer(controller.getRoutingSessionInfo(), route);
-            return;
-        }
+        mImpl.transfer(controller, route);
     }
 
     void requestCreateController(
@@ -820,31 +706,7 @@
      */
     @NonNull
     public List<RoutingController> getControllers() {
-        List<RoutingController> result = new ArrayList<>();
-
-        if (isSystemRouter()) {
-            // Unlike non-system MediaRouter2, controller instances cannot be kept,
-            // since the transfer events initiated from other apps will not come through manager.
-            List<RoutingSessionInfo> sessions = sManager.getRoutingSessions(mClientPackageName);
-            for (RoutingSessionInfo session : sessions) {
-                RoutingController controller;
-                if (session.isSystemSession()) {
-                    mSystemController.setRoutingSessionInfo(
-                            ensureClientPackageNameForSystemSession(session));
-                    controller = mSystemController;
-                } else {
-                    controller = new RoutingController(session);
-                }
-                result.add(controller);
-            }
-            return result;
-        }
-
-        result.add(0, mSystemController);
-        synchronized (mLock) {
-            result.addAll(mNonSystemRoutingControllers.values());
-        }
-        return result;
+        return mImpl.getControllers();
     }
 
     /**
@@ -862,11 +724,7 @@
     public void setRouteVolume(@NonNull MediaRoute2Info route, int volume) {
         Objects.requireNonNull(route, "route must not be null");
 
-        if (isSystemRouter()) {
-            sManager.setRouteVolume(route, volume);
-            return;
-        }
-        // If this API needs to be public, use IMediaRouterService#setRouteVolumeWithRouter2()
+        mImpl.setRouteVolume(route, volume);
     }
 
     void syncRoutesOnHandler(
@@ -1130,31 +988,6 @@
         requestCreateController(controller, route, managerRequestId);
     }
 
-    /**
-     * Returns whether this router is created with {@link #getInstance(Context, String)}. This kind
-     * of router can control the target app's media routing.
-     */
-    private boolean isSystemRouter() {
-        return mClientPackageName != null;
-    }
-
-    /**
-     * Returns a {@link RoutingSessionInfo} which has the client package name. The client package
-     * name is set only when the given sessionInfo doesn't have it. Should only used for system
-     * media routers.
-     */
-    private RoutingSessionInfo ensureClientPackageNameForSystemSession(
-            @NonNull RoutingSessionInfo sessionInfo) {
-        if (!sessionInfo.isSystemSession()
-                || !TextUtils.isEmpty(sessionInfo.getClientPackageName())) {
-            return sessionInfo;
-        }
-
-        return new RoutingSessionInfo.Builder(sessionInfo)
-                .setClientPackageName(mClientPackageName)
-                .build();
-    }
-
     private List<MediaRoute2Info> getSortedRoutes(
             List<MediaRoute2Info> routes, List<String> packageOrder) {
         if (packageOrder.isEmpty()) {
@@ -1203,47 +1036,10 @@
         return filteredRoutes;
     }
 
-    private List<MediaRoute2Info> filterRoutesWithIndividualPreference(
-            List<MediaRoute2Info> routes, RouteDiscoveryPreference discoveryPreference) {
-        List<MediaRoute2Info> filteredRoutes = new ArrayList<>();
-        if (isSystemRouter()) {
-            // Individual discovery preferences do not apply for the system router.
-            filteredRoutes.addAll(routes);
-            return filteredRoutes;
-        }
-        for (MediaRoute2Info route : routes) {
-            if (!route.hasAnyFeatures(discoveryPreference.getPreferredFeatures())) {
-                continue;
-            }
-            if (!discoveryPreference.getAllowedPackages().isEmpty()
-                    && (route.getPackageName() == null
-                            || !discoveryPreference
-                                    .getAllowedPackages()
-                                    .contains(route.getPackageName()))) {
-                continue;
-            }
-            filteredRoutes.add(route);
-        }
-        return filteredRoutes;
-    }
-
-    private void updateAllRoutesFromManager() {
-        if (!isSystemRouter()) {
-            return;
-        }
-        synchronized (mLock) {
-            mRoutes.clear();
-            for (MediaRoute2Info route : sManager.getAllRoutes()) {
-                mRoutes.put(route.getId(), route);
-            }
-            updateFilteredRoutesLocked();
-        }
-    }
-
     private void notifyRoutesAdded(List<MediaRoute2Info> routes) {
         for (RouteCallbackRecord record : mRouteCallbackRecords) {
             List<MediaRoute2Info> filteredRoutes =
-                    filterRoutesWithIndividualPreference(routes, record.mPreference);
+                    mImpl.filterRoutesWithIndividualPreference(routes, record.mPreference);
             if (!filteredRoutes.isEmpty()) {
                 record.mExecutor.execute(() -> record.mRouteCallback.onRoutesAdded(filteredRoutes));
             }
@@ -1253,7 +1049,7 @@
     private void notifyRoutesRemoved(List<MediaRoute2Info> routes) {
         for (RouteCallbackRecord record : mRouteCallbackRecords) {
             List<MediaRoute2Info> filteredRoutes =
-                    filterRoutesWithIndividualPreference(routes, record.mPreference);
+                    mImpl.filterRoutesWithIndividualPreference(routes, record.mPreference);
             if (!filteredRoutes.isEmpty()) {
                 record.mExecutor.execute(
                         () -> record.mRouteCallback.onRoutesRemoved(filteredRoutes));
@@ -1264,7 +1060,7 @@
     private void notifyRoutesChanged(List<MediaRoute2Info> routes) {
         for (RouteCallbackRecord record : mRouteCallbackRecords) {
             List<MediaRoute2Info> filteredRoutes =
-                    filterRoutesWithIndividualPreference(routes, record.mPreference);
+                    mImpl.filterRoutesWithIndividualPreference(routes, record.mPreference);
             if (!filteredRoutes.isEmpty()) {
                 record.mExecutor.execute(
                         () -> record.mRouteCallback.onRoutesChanged(filteredRoutes));
@@ -1275,7 +1071,7 @@
     private void notifyRoutesUpdated(List<MediaRoute2Info> routes) {
         for (RouteCallbackRecord record : mRouteCallbackRecords) {
             List<MediaRoute2Info> filteredRoutes =
-                    filterRoutesWithIndividualPreference(routes, record.mPreference);
+                    mImpl.filterRoutesWithIndividualPreference(routes, record.mPreference);
             record.mExecutor.execute(() -> record.mRouteCallback.onRoutesUpdated(filteredRoutes));
         }
     }
@@ -1514,7 +1310,7 @@
             synchronized (mControllerLock) {
                 selectedRouteIds = mSessionInfo.getSelectedRoutes();
             }
-            return getRoutesWithIds(selectedRouteIds);
+            return mImpl.getRoutesWithIds(selectedRouteIds);
         }
 
         /**
@@ -1526,7 +1322,7 @@
             synchronized (mControllerLock) {
                 selectableRouteIds = mSessionInfo.getSelectableRoutes();
             }
-            return getRoutesWithIds(selectableRouteIds);
+            return mImpl.getRoutesWithIds(selectableRouteIds);
         }
 
         /**
@@ -1538,7 +1334,7 @@
             synchronized (mControllerLock) {
                 deselectableRouteIds = mSessionInfo.getDeselectableRoutes();
             }
-            return getRoutesWithIds(deselectableRouteIds);
+            return mImpl.getRoutesWithIds(deselectableRouteIds);
         }
 
         /**
@@ -1640,22 +1436,7 @@
                 return;
             }
 
-            if (isSystemRouter()) {
-                sManager.selectRoute(getRoutingSessionInfo(), route);
-                return;
-            }
-
-            MediaRouter2Stub stub;
-            synchronized (mLock) {
-                stub = mStub;
-            }
-            if (stub != null) {
-                try {
-                    mMediaRouterService.selectRouteWithRouter2(stub, getId(), route);
-                } catch (RemoteException ex) {
-                    Log.e(TAG, "Unable to select route for session.", ex);
-                }
-            }
+            mImpl.selectRoute(route, getRoutingSessionInfo());
         }
 
         /**
@@ -1694,22 +1475,7 @@
                 return;
             }
 
-            if (isSystemRouter()) {
-                sManager.deselectRoute(getRoutingSessionInfo(), route);
-                return;
-            }
-
-            MediaRouter2Stub stub;
-            synchronized (mLock) {
-                stub = mStub;
-            }
-            if (stub != null) {
-                try {
-                    mMediaRouterService.deselectRouteWithRouter2(stub, getId(), route);
-                } catch (RemoteException ex) {
-                    Log.e(TAG, "Unable to deselect route from session.", ex);
-                }
-            }
+            mImpl.deselectRoute(route, getRoutingSessionInfo());
         }
 
         /**
@@ -1769,22 +1535,7 @@
                 return;
             }
 
-            if (isSystemRouter()) {
-                sManager.setSessionVolume(getRoutingSessionInfo(), volume);
-                return;
-            }
-
-            MediaRouter2Stub stub;
-            synchronized (mLock) {
-                stub = mStub;
-            }
-            if (stub != null) {
-                try {
-                    mMediaRouterService.setSessionVolumeWithRouter2(stub, getId(), volume);
-                } catch (RemoteException ex) {
-                    Log.e(TAG, "setVolume: Failed to deliver request.", ex);
-                }
-            }
+            mImpl.setSessionVolume(volume, getRoutingSessionInfo());
         }
 
         /**
@@ -1839,41 +1590,7 @@
                 mState = CONTROLLER_STATE_RELEASED;
             }
 
-            if (isSystemRouter()) {
-                sManager.releaseSession(getRoutingSessionInfo());
-                return;
-            }
-
-            synchronized (mLock) {
-                mNonSystemRoutingControllers.remove(getId(), this);
-
-                if (shouldReleaseSession && mStub != null) {
-                    try {
-                        mMediaRouterService.releaseSessionWithRouter2(mStub, getId());
-                    } catch (RemoteException ex) {
-                        ex.rethrowFromSystemServer();
-                    }
-                }
-
-                if (shouldNotifyStop) {
-                    mHandler.sendMessage(
-                            obtainMessage(
-                                    MediaRouter2::notifyStop,
-                                    MediaRouter2.this,
-                                    RoutingController.this));
-                }
-
-                if (mRouteCallbackRecords.isEmpty()
-                        && mNonSystemRoutingControllers.isEmpty()
-                        && mStub != null) {
-                    try {
-                        mMediaRouterService.unregisterRouter2(mStub);
-                    } catch (RemoteException ex) {
-                        ex.rethrowFromSystemServer();
-                    }
-                    mStub = null;
-                }
-            }
+            mImpl.releaseSession(shouldReleaseSession, shouldNotifyStop, this);
         }
 
         @Override
@@ -1916,20 +1633,6 @@
             }
         }
 
-        private List<MediaRoute2Info> getRoutesWithIds(List<String> routeIds) {
-            if (isSystemRouter()) {
-                return getRoutes().stream()
-                        .filter(r -> routeIds.contains(r.getId()))
-                        .collect(Collectors.toList());
-            }
-
-            synchronized (mLock) {
-                return routeIds.stream()
-                        .map(mRoutes::get)
-                        .filter(Objects::nonNull)
-                        .collect(Collectors.toList());
-            }
-        }
     }
 
     class SystemRoutingController extends RoutingController {
@@ -2118,8 +1821,276 @@
         }
     }
 
-    // Note: All methods are run on main thread.
-    class ManagerCallback implements MediaRouter2Manager.Callback {
+    /**
+     * Provides a common interface for separating {@link LocalMediaRouter2Impl local} and {@link
+     * ProxyMediaRouter2Impl proxy} {@link MediaRouter2} instances.
+     */
+    private interface MediaRouter2Impl {
+        void startScan();
+
+        void stopScan();
+
+        String getClientPackageName();
+
+        String getPackageName();
+
+        RoutingSessionInfo getSystemSessionInfo();
+
+        RouteCallbackRecord createRouteCallbackRecord(
+                @NonNull @CallbackExecutor Executor executor,
+                @NonNull RouteCallback routeCallback,
+                @NonNull RouteDiscoveryPreference preference);
+
+        void registerRouteCallback();
+
+        void unregisterRouteCallback();
+
+        List<MediaRoute2Info> getAllRoutes();
+
+        void setOnGetControllerHintsListener(OnGetControllerHintsListener listener);
+
+        void transferTo(MediaRoute2Info route);
+
+        void stop();
+
+        void transfer(RoutingController controller, MediaRoute2Info route);
+
+        List<RoutingController> getControllers();
+
+        void setRouteVolume(MediaRoute2Info route, int volume);
+
+        List<MediaRoute2Info> filterRoutesWithIndividualPreference(
+                List<MediaRoute2Info> routes, RouteDiscoveryPreference discoveryPreference);
+
+        // RoutingController methods.
+        void setSessionVolume(int volume, RoutingSessionInfo sessionInfo);
+
+        void selectRoute(MediaRoute2Info route, RoutingSessionInfo sessionInfo);
+
+        void deselectRoute(MediaRoute2Info route, RoutingSessionInfo sessionInfo);
+
+        void releaseSession(
+                boolean shouldReleaseSession,
+                boolean shouldNotifyStop,
+                RoutingController controller);
+
+        List<MediaRoute2Info> getRoutesWithIds(List<String> routeIds);
+    }
+
+    /**
+     * Implements logic specific to proxy {@link MediaRouter2} instances.
+     *
+     * <p>A proxy {@link MediaRouter2} instance controls the routing of a different package and can
+     * be obtained by calling {@link #getInstance(Context, String)}. This requires {@link
+     * Manifest.permission#MEDIA_CONTENT_CONTROL MEDIA_CONTENT_CONTROL} permission.
+     *
+     * <p>Proxy routers behave differently than local routers. See {@link #getInstance(Context,
+     * String)} for more details.
+     */
+    private class ProxyMediaRouter2Impl implements MediaRouter2Impl, MediaRouter2Manager.Callback {
+
+        private final MediaRouter2Manager mManager;
+        private final String mClientPackageName;
+
+        ProxyMediaRouter2Impl(@NonNull Context context, @NonNull String clientPackageName) {
+            mManager = MediaRouter2Manager.getInstance(context.getApplicationContext());
+
+            mClientPackageName = clientPackageName;
+            mDiscoveryPreference = mManager.getDiscoveryPreference(clientPackageName);
+
+            // Using direct executor here, since MediaRouter2Manager also posts
+            // to the main handler.
+            // Proxy implements MediaRouter2Manager.Callback
+            mManager.registerCallback(/* executor */ Runnable::run, /* callback */ this);
+        }
+
+        @Override
+        public void startScan() {
+            if (!mIsScanning.getAndSet(true)) {
+                mManager.registerScanRequest();
+            }
+        }
+
+        @Override
+        public void stopScan() {
+            if (mIsScanning.getAndSet(false)) {
+                mManager.unregisterScanRequest();
+            }
+        }
+
+        @Override
+        public String getClientPackageName() {
+            return mClientPackageName;
+        }
+
+        /**
+         * Returns {@code null}. This refers to the package name of the caller app, which is only
+         * relevant for local routers.
+         */
+        @Override
+        public String getPackageName() {
+            return null;
+        }
+
+        @Override
+        public RoutingSessionInfo getSystemSessionInfo() {
+            return ensureClientPackageNameForSystemSession(
+                    mManager.getSystemRoutingSession(mClientPackageName));
+        }
+
+        /**
+         * {@link RouteDiscoveryPreference Discovery preferences} are ignored for proxy routers, as
+         * their callbacks should receive events related to the media app's preferences. This is
+         * equivalent to setting {@link RouteDiscoveryPreference#EMPTY empty preferences}.
+         */
+        @Override
+        public RouteCallbackRecord createRouteCallbackRecord(
+                Executor executor,
+                RouteCallback routeCallback,
+                RouteDiscoveryPreference preference) {
+            return new RouteCallbackRecord(executor, routeCallback, RouteDiscoveryPreference.EMPTY);
+        }
+
+        /**
+         * No-op. Only local routers communicate directly with {@link
+         * com.android.server.media.MediaRouter2ServiceImpl MediaRouter2ServiceImpl} and modify
+         * {@link RouteDiscoveryPreference}. Proxy routers receive callbacks from {@link
+         * MediaRouter2Manager}.
+         */
+        @Override
+        public void registerRouteCallback() {
+            // Do nothing.
+        }
+
+        /** No-op. See {@link ProxyMediaRouter2Impl#registerRouteCallback()}. */
+        @Override
+        public void unregisterRouteCallback() {
+            // Do nothing.
+        }
+
+        @Override
+        public List<MediaRoute2Info> getAllRoutes() {
+            return mManager.getAllRoutes();
+        }
+
+        /** No-op. Controller hints can only be provided by the media app through a local router. */
+        @Override
+        public void setOnGetControllerHintsListener(OnGetControllerHintsListener listener) {
+            // Do nothing.
+        }
+
+        @Override
+        public void transferTo(MediaRoute2Info route) {
+            mManager.transfer(mClientPackageName, route);
+        }
+
+        @Override
+        public void stop() {
+            List<RoutingSessionInfo> sessionInfos = mManager.getRoutingSessions(mClientPackageName);
+            RoutingSessionInfo sessionToRelease = sessionInfos.get(sessionInfos.size() - 1);
+            mManager.releaseSession(sessionToRelease);
+        }
+
+        @Override
+        public void transfer(RoutingController controller, MediaRoute2Info route) {
+            mManager.transfer(controller.getRoutingSessionInfo(), route);
+        }
+
+        @Override
+        public List<RoutingController> getControllers() {
+            List<RoutingController> result = new ArrayList<>();
+
+            // Unlike non-system MediaRouter2, controller instances cannot be kept,
+            // since the transfer events initiated from other apps will not come through manager.
+            List<RoutingSessionInfo> sessions = mManager.getRoutingSessions(mClientPackageName);
+            for (RoutingSessionInfo session : sessions) {
+                RoutingController controller;
+                if (session.isSystemSession()) {
+                    mSystemController.setRoutingSessionInfo(
+                            ensureClientPackageNameForSystemSession(session));
+                    controller = mSystemController;
+                } else {
+                    controller = new RoutingController(session);
+                }
+                result.add(controller);
+            }
+            return result;
+        }
+
+        @Override
+        public void setRouteVolume(MediaRoute2Info route, int volume) {
+            mManager.setRouteVolume(route, volume);
+        }
+
+        @Override
+        public void setSessionVolume(int volume, RoutingSessionInfo sessionInfo) {
+            mManager.setSessionVolume(sessionInfo, volume);
+        }
+
+        /**
+         * Returns an exact copy of the routes. Individual {@link RouteDiscoveryPreference
+         * preferences} do not apply to proxy routers.
+         */
+        @Override
+        public List<MediaRoute2Info> filterRoutesWithIndividualPreference(
+                List<MediaRoute2Info> routes, RouteDiscoveryPreference discoveryPreference) {
+            // Individual discovery preferences do not apply for the system router.
+            return new ArrayList<>(routes);
+        }
+
+        private void updateAllRoutesFromManager() {
+            synchronized (mLock) {
+                mRoutes.clear();
+                for (MediaRoute2Info route : mManager.getAllRoutes()) {
+                    mRoutes.put(route.getId(), route);
+                }
+                updateFilteredRoutesLocked();
+            }
+        }
+
+        /**
+         * Returns a {@link RoutingSessionInfo} which has the client package name. The client
+         * package name is set only when the given sessionInfo doesn't have it. Should only used for
+         * system media routers.
+         */
+        private RoutingSessionInfo ensureClientPackageNameForSystemSession(
+                RoutingSessionInfo sessionInfo) {
+            if (!TextUtils.isEmpty(sessionInfo.getClientPackageName())) {
+                return sessionInfo;
+            }
+
+            return new RoutingSessionInfo.Builder(sessionInfo)
+                    .setClientPackageName(mClientPackageName)
+                    .build();
+        }
+
+        @Override
+        public void selectRoute(MediaRoute2Info route, RoutingSessionInfo sessionInfo) {
+            mManager.selectRoute(sessionInfo, route);
+        }
+
+        @Override
+        public void deselectRoute(MediaRoute2Info route, RoutingSessionInfo sessionInfo) {
+            mManager.deselectRoute(sessionInfo, route);
+        }
+
+        @Override
+        public void releaseSession(
+                boolean shouldReleaseSession,
+                boolean shouldNotifyStop,
+                RoutingController controller) {
+            mManager.releaseSession(controller.getRoutingSessionInfo());
+        }
+
+        @Override
+        public List<MediaRoute2Info> getRoutesWithIds(List<String> routeIds) {
+            return getRoutes().stream()
+                    .filter(r -> routeIds.contains(r.getId()))
+                    .collect(Collectors.toList());
+        }
+
+        // MediaRouter2Manager.Callback implementation.
+        // Note: All methods are run on main thread.
 
         @Override
         public void onRoutesUpdated() {
@@ -2130,12 +2101,14 @@
         public void onTransferred(
                 @NonNull RoutingSessionInfo oldSession, @NonNull RoutingSessionInfo newSession) {
             if (!oldSession.isSystemSession()
-                    && !TextUtils.equals(mClientPackageName, oldSession.getClientPackageName())) {
+                    && !TextUtils.equals(
+                            getClientPackageName(), oldSession.getClientPackageName())) {
                 return;
             }
 
             if (!newSession.isSystemSession()
-                    && !TextUtils.equals(mClientPackageName, newSession.getClientPackageName())) {
+                    && !TextUtils.equals(
+                            getClientPackageName(), newSession.getClientPackageName())) {
                 return;
             }
 
@@ -2169,7 +2142,7 @@
         public void onTransferFailed(
                 @NonNull RoutingSessionInfo session, @NonNull MediaRoute2Info route) {
             if (!session.isSystemSession()
-                    && !TextUtils.equals(mClientPackageName, session.getClientPackageName())) {
+                    && !TextUtils.equals(getClientPackageName(), session.getClientPackageName())) {
                 return;
             }
             notifyTransferFailure(route);
@@ -2178,7 +2151,7 @@
         @Override
         public void onSessionUpdated(@NonNull RoutingSessionInfo session) {
             if (!session.isSystemSession()
-                    && !TextUtils.equals(mClientPackageName, session.getClientPackageName())) {
+                    && !TextUtils.equals(getClientPackageName(), session.getClientPackageName())) {
                 return;
             }
 
@@ -2200,7 +2173,7 @@
                 return;
             }
 
-            if (!TextUtils.equals(mClientPackageName, session.getClientPackageName())) {
+            if (!TextUtils.equals(getClientPackageName(), session.getClientPackageName())) {
                 return;
             }
 
@@ -2210,7 +2183,7 @@
         @Override
         public void onDiscoveryPreferenceChanged(
                 @NonNull String packageName, @NonNull RouteDiscoveryPreference preference) {
-            if (!TextUtils.equals(mClientPackageName, packageName)) {
+            if (!TextUtils.equals(getClientPackageName(), packageName)) {
                 return;
             }
 
@@ -2226,4 +2199,301 @@
             // Does nothing.
         }
     }
+
+    /**
+     * Implements logic specific to local {@link MediaRouter2} instances.
+     *
+     * <p>Local routers allow an app to control its own routing without any special permissions.
+     * Apps can obtain an instance by calling {@link #getInstance(Context)}.
+     */
+    private class LocalMediaRouter2Impl implements MediaRouter2Impl {
+        private final String mPackageName;
+
+        LocalMediaRouter2Impl(@NonNull String packageName) {
+            mPackageName = packageName;
+        }
+
+        /**
+         * No-op. Local routers cannot explicitly control route scanning.
+         *
+         * <p>Local routers can control scanning indirectly through {@link
+         * #registerRouteCallback(Executor, RouteCallback, RouteDiscoveryPreference)}.
+         */
+        @Override
+        public void startScan() {
+            // Do nothing.
+        }
+
+        /**
+         * No-op. Local routers cannot explicitly control route scanning.
+         *
+         * <p>Local routers can control scanning indirectly through {@link
+         * #registerRouteCallback(Executor, RouteCallback, RouteDiscoveryPreference)}.
+         */
+        @Override
+        public void stopScan() {
+            // Do nothing.
+        }
+
+        /**
+         * Returns {@code null}. The client package name is only associated to proxy {@link
+         * MediaRouter2} instances.
+         */
+        @Override
+        public String getClientPackageName() {
+            return null;
+        }
+
+        @Override
+        public String getPackageName() {
+            return mPackageName;
+        }
+
+        @Override
+        public RoutingSessionInfo getSystemSessionInfo() {
+            RoutingSessionInfo currentSystemSessionInfo = null;
+            try {
+                currentSystemSessionInfo = mMediaRouterService.getSystemSessionInfo();
+            } catch (RemoteException ex) {
+                ex.rethrowFromSystemServer();
+            }
+            return currentSystemSessionInfo;
+        }
+
+        @Override
+        public RouteCallbackRecord createRouteCallbackRecord(
+                Executor executor,
+                RouteCallback routeCallback,
+                RouteDiscoveryPreference preference) {
+            return new RouteCallbackRecord(executor, routeCallback, preference);
+        }
+
+        @Override
+        public void registerRouteCallback() {
+            synchronized (mLock) {
+                try {
+                    if (mStub == null) {
+                        MediaRouter2Stub stub = new MediaRouter2Stub();
+                        mMediaRouterService.registerRouter2(stub, mPackageName);
+                        mStub = stub;
+                    }
+
+                    if (updateDiscoveryPreferenceIfNeededLocked()) {
+                        mMediaRouterService.setDiscoveryRequestWithRouter2(
+                                mStub, mDiscoveryPreference);
+                    }
+                } catch (RemoteException ex) {
+                    ex.rethrowFromSystemServer();
+                }
+            }
+        }
+
+        @Override
+        public void unregisterRouteCallback() {
+            synchronized (mLock) {
+                if (mStub == null) {
+                    return;
+                }
+
+                try {
+                    if (updateDiscoveryPreferenceIfNeededLocked()) {
+                        mMediaRouterService.setDiscoveryRequestWithRouter2(
+                                mStub, mDiscoveryPreference);
+                    }
+
+                    if (mRouteCallbackRecords.isEmpty() && mNonSystemRoutingControllers.isEmpty()) {
+                        mMediaRouterService.unregisterRouter2(mStub);
+                        mStub = null;
+                    }
+                } catch (RemoteException ex) {
+                    Log.e(TAG, "unregisterRouteCallback: Unable to set discovery request.", ex);
+                }
+            }
+        }
+
+        /**
+         * Returns {@link Collections#emptyList()}. Local routes can only access routes related to
+         * their {@link RouteDiscoveryPreference} through {@link #getRoutes()}.
+         */
+        @Override
+        public List<MediaRoute2Info> getAllRoutes() {
+            return Collections.emptyList();
+        }
+
+        @Override
+        public void setOnGetControllerHintsListener(OnGetControllerHintsListener listener) {
+            mOnGetControllerHintsListener = listener;
+        }
+
+        @Override
+        public void transferTo(MediaRoute2Info route) {
+            Log.v(TAG, "Transferring to route: " + route);
+
+            boolean routeFound;
+            synchronized (mLock) {
+                // TODO: Check thread-safety
+                routeFound = mRoutes.containsKey(route.getId());
+            }
+            if (!routeFound) {
+                notifyTransferFailure(route);
+                return;
+            }
+
+            RoutingController controller = getCurrentController();
+            if (controller
+                    .getRoutingSessionInfo()
+                    .getTransferableRoutes()
+                    .contains(route.getId())) {
+                controller.transferToRoute(route);
+                return;
+            }
+
+            requestCreateController(controller, route, MANAGER_REQUEST_ID_NONE);
+        }
+
+        @Override
+        public void stop() {
+            getCurrentController().release();
+        }
+
+        /**
+         * No-op. Local routers cannot request transfers of specific {@link RoutingController
+         * controllers}. This operation is only available to proxy routers.
+         *
+         * <p>Local routers can only transfer the current {@link RoutingController controller} using
+         * {@link #transferTo(MediaRoute2Info)}.
+         */
+        @Override
+        public void transfer(RoutingController controller, MediaRoute2Info route) {
+            // Do nothing.
+        }
+
+        @Override
+        public List<RoutingController> getControllers() {
+            List<RoutingController> result = new ArrayList<>();
+
+            result.add(0, mSystemController);
+            synchronized (mLock) {
+                result.addAll(mNonSystemRoutingControllers.values());
+            }
+            return result;
+        }
+
+        /** No-op. Local routers cannot modify the volume of specific routes. */
+        @Override
+        public void setRouteVolume(MediaRoute2Info route, int volume) {
+            // Do nothing.
+            // If this API needs to be public, use IMediaRouterService#setRouteVolumeWithRouter2()
+        }
+
+        @Override
+        public void setSessionVolume(int volume, RoutingSessionInfo sessionInfo) {
+            MediaRouter2Stub stub;
+            synchronized (mLock) {
+                stub = mStub;
+            }
+            if (stub != null) {
+                try {
+                    mMediaRouterService.setSessionVolumeWithRouter2(
+                            stub, sessionInfo.getId(), volume);
+                } catch (RemoteException ex) {
+                    Log.e(TAG, "setVolume: Failed to deliver request.", ex);
+                }
+            }
+        }
+
+        @Override
+        public List<MediaRoute2Info> filterRoutesWithIndividualPreference(
+                List<MediaRoute2Info> routes, RouteDiscoveryPreference discoveryPreference) {
+            List<MediaRoute2Info> filteredRoutes = new ArrayList<>();
+            for (MediaRoute2Info route : routes) {
+                if (!route.hasAnyFeatures(discoveryPreference.getPreferredFeatures())) {
+                    continue;
+                }
+                if (!discoveryPreference.getAllowedPackages().isEmpty()
+                        && (route.getPackageName() == null
+                                || !discoveryPreference
+                                        .getAllowedPackages()
+                                        .contains(route.getPackageName()))) {
+                    continue;
+                }
+                filteredRoutes.add(route);
+            }
+            return filteredRoutes;
+        }
+
+        @Override
+        public void selectRoute(MediaRoute2Info route, RoutingSessionInfo sessionInfo) {
+            MediaRouter2Stub stub;
+            synchronized (mLock) {
+                stub = mStub;
+            }
+            if (stub != null) {
+                try {
+                    mMediaRouterService.selectRouteWithRouter2(stub, sessionInfo.getId(), route);
+                } catch (RemoteException ex) {
+                    Log.e(TAG, "Unable to select route for session.", ex);
+                }
+            }
+        }
+
+        @Override
+        public void deselectRoute(MediaRoute2Info route, RoutingSessionInfo sessionInfo) {
+            MediaRouter2Stub stub;
+            synchronized (mLock) {
+                stub = mStub;
+            }
+            if (stub != null) {
+                try {
+                    mMediaRouterService.deselectRouteWithRouter2(stub, sessionInfo.getId(), route);
+                } catch (RemoteException ex) {
+                    Log.e(TAG, "Unable to deselect route from session.", ex);
+                }
+            }
+        }
+
+        @Override
+        public void releaseSession(
+                boolean shouldReleaseSession,
+                boolean shouldNotifyStop,
+                RoutingController controller) {
+            synchronized (mLock) {
+                mNonSystemRoutingControllers.remove(controller.getId(), controller);
+
+                if (shouldReleaseSession && mStub != null) {
+                    try {
+                        mMediaRouterService.releaseSessionWithRouter2(mStub, controller.getId());
+                    } catch (RemoteException ex) {
+                        ex.rethrowFromSystemServer();
+                    }
+                }
+
+                if (shouldNotifyStop) {
+                    mHandler.sendMessage(
+                            obtainMessage(MediaRouter2::notifyStop, MediaRouter2.this, controller));
+                }
+
+                if (mRouteCallbackRecords.isEmpty()
+                        && mNonSystemRoutingControllers.isEmpty()
+                        && mStub != null) {
+                    try {
+                        mMediaRouterService.unregisterRouter2(mStub);
+                    } catch (RemoteException ex) {
+                        ex.rethrowFromSystemServer();
+                    }
+                    mStub = null;
+                }
+            }
+        }
+
+        @Override
+        public List<MediaRoute2Info> getRoutesWithIds(List<String> routeIds) {
+            synchronized (mLock) {
+                return routeIds.stream()
+                        .map(mRoutes::get)
+                        .filter(Objects::nonNull)
+                        .collect(Collectors.toList());
+            }
+        }
+    }
 }
diff --git a/media/java/android/media/OWNERS b/media/java/android/media/OWNERS
index 1f9a51d..6d6a9f8 100644
--- a/media/java/android/media/OWNERS
+++ b/media/java/android/media/OWNERS
@@ -8,4 +8,7 @@
 # go/android-fwk-media-solutions for info on areas of ownership.
 include platform/frameworks/av:/media/janitors/media_solutions_OWNERS
 
-per-file *Image* = file:/graphics/java/android/graphics/OWNERS
\ No newline at end of file
+per-file *Image* = file:/graphics/java/android/graphics/OWNERS
+
+# Haptics team also works on Ringtone
+per-file *Ringtone* = file:/services/core/java/com/android/server/vibrator/OWNERS
diff --git a/media/java/android/media/Ringtone.java b/media/java/android/media/Ringtone.java
index e78dc31..4be88fb 100644
--- a/media/java/android/media/Ringtone.java
+++ b/media/java/android/media/Ringtone.java
@@ -16,6 +16,8 @@
 
 package android.media;
 
+import android.annotation.IntDef;
+import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.ContentProvider;
@@ -27,16 +29,19 @@
 import android.media.audiofx.HapticGenerator;
 import android.net.Uri;
 import android.os.Binder;
-import android.os.Build;
+import android.os.IBinder;
 import android.os.RemoteException;
 import android.os.Trace;
 import android.provider.MediaStore;
 import android.provider.MediaStore.MediaColumns;
 import android.provider.Settings;
 import android.util.Log;
+
 import com.android.internal.annotations.VisibleForTesting;
+
 import java.io.IOException;
-import java.util.ArrayList;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 
 /**
  * Ringtone provides a quick method for playing a ringtone, notification, or
@@ -49,7 +54,38 @@
  */
 public class Ringtone {
     private static final String TAG = "Ringtone";
-    private static final boolean LOGD = true;
+
+    /**
+     * The ringtone should only play sound. Any vibration is managed externally.
+     * @hide
+     */
+    public static final int MEDIA_SOUND = 1;
+    /**
+     * The ringtone should only play vibration. Any sound is managed externally.
+     * @hide
+     */
+    public static final int MEDIA_VIBRATION = 1 << 1;
+    /**
+     * The ringtone should play sound and vibration.
+     * @hide
+     */
+    public static final int MEDIA_SOUND_AND_VIBRATION = MEDIA_SOUND | MEDIA_VIBRATION;
+
+    // This is not a public value, because apps shouldn't enable "all" media - that wouldn't be
+    // safe if new media types were added.
+    static final int MEDIA_ALL = MEDIA_SOUND | MEDIA_VIBRATION;
+
+    /**
+     * Declares the types of media that this Ringtone is allowed to play.
+     * @hide
+     */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = "MEDIA_", value = {
+            MEDIA_SOUND,
+            MEDIA_VIBRATION,
+            MEDIA_SOUND_AND_VIBRATION,
+    })
+    public @interface RingtoneMedia {}
 
     private static final String[] MEDIA_COLUMNS = new String[] {
         MediaStore.Audio.Media._ID,
@@ -59,51 +95,52 @@
     private static final String MEDIA_SELECTION = MediaColumns.MIME_TYPE + " LIKE 'audio/%' OR "
             + MediaColumns.MIME_TYPE + " IN ('application/ogg', 'application/x-flac')";
 
-    // keep references on active Ringtones until stopped or completion listener called.
-    private static final ArrayList<Ringtone> sActiveRingtones = new ArrayList<Ringtone>();
-
     private final Context mContext;
     private final AudioManager mAudioManager;
     private VolumeShaper.Configuration mVolumeShaperConfig;
-    private VolumeShaper mVolumeShaper;
 
     /**
      * Flag indicating if we're allowed to fall back to remote playback using
-     * {@link #mRemotePlayer}. Typically this is false when we're the remote
+     * {@link #mRemoteRingtoneService}. Typically this is false when we're the remote
      * player and there is nobody else to delegate to.
      */
     private final boolean mAllowRemote;
-    private final IRingtonePlayer mRemotePlayer;
-    private final Binder mRemoteToken;
+    private final IRingtonePlayer mRemoteRingtoneService;
+    private final Injectables mInjectables;
 
-    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
-    private MediaPlayer mLocalPlayer;
-    private final MyOnCompletionListener mCompletionListener = new MyOnCompletionListener();
-    private HapticGenerator mHapticGenerator;
+    private final int mEnabledMedia;
 
-    @UnsupportedAppUsage
-    private Uri mUri;
+    private final Uri mUri;
     private String mTitle;
 
-    private AudioAttributes mAudioAttributes = new AudioAttributes.Builder()
-            .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
-            .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
-            .build();
+    private AudioAttributes mAudioAttributes;
     private boolean mPreferBuiltinDevice;
+    private RingtonePlayer mActivePlayer;
     // playback properties, use synchronized with mPlaybackSettingsLock
     private boolean mIsLooping = false;
-    private float mVolume = 1.0f;
+    private float mVolume;
     private boolean mHapticGeneratorEnabled = false;
     private final Object mPlaybackSettingsLock = new Object();
 
-    /** {@hide} */
-    @UnsupportedAppUsage
-    public Ringtone(Context context, boolean allowRemote) {
-        mContext = context;
+    private Ringtone(Builder builder) {
+        mContext = builder.mContext;
+        mEnabledMedia = builder.mEnabledMedia;
+        mUri = builder.mUri;
+        mAudioAttributes = builder.mAudioAttributes;
+        mInjectables = builder.mInjectables;
+        mPreferBuiltinDevice = builder.mPreferBuiltinDevice;
+        mVolumeShaperConfig = builder.mVolumeShaperConfig;
+        mVolume = builder.mInitialSoundVolume;
+        mIsLooping = builder.mLooping;
         mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
-        mAllowRemote = allowRemote;
-        mRemotePlayer = allowRemote ? mAudioManager.getRingtonePlayer() : null;
-        mRemoteToken = allowRemote ? new Binder() : null;
+        mRemoteRingtoneService = builder.mAllowRemote ? mAudioManager.getRingtonePlayer() : null;
+        mAllowRemote = (mRemoteRingtoneService != null);
+    }
+
+    /** @hide */
+    @RingtoneMedia
+    public int getEnabledMedia() {
+        return mEnabledMedia;
     }
 
     /**
@@ -114,10 +151,15 @@
      */
     @Deprecated
     public void setStreamType(int streamType) {
-        PlayerBase.deprecateStreamTypeForPlayback(streamType, "Ringtone", "setStreamType()");
-        setAudioAttributes(new AudioAttributes.Builder()
+        setAudioAttributes(
+                getAudioAttributesForLegacyStreamType(streamType, "setStreamType()"));
+    }
+
+    private AudioAttributes getAudioAttributesForLegacyStreamType(int streamType, String originOp) {
+        PlayerBase.deprecateStreamTypeForPlayback(streamType, "Ringtone", originOp);
+        return new AudioAttributes.Builder()
                 .setInternalLegacyStreamType(streamType)
-                .build());
+                .build();
     }
 
     /**
@@ -138,23 +180,45 @@
      */
     public void setAudioAttributes(AudioAttributes attributes)
             throws IllegalArgumentException {
-        setAudioAttributesField(attributes);
-        // The audio attributes have to be set before the media player is prepared.
-        // Re-initialize it.
-        setUri(mUri, mVolumeShaperConfig);
-        createLocalMediaPlayer();
-    }
-
-    /**
-     * Same as {@link #setAudioAttributes(AudioAttributes)} except this one does not create
-     * the media player.
-     * @hide
-     */
-    public void setAudioAttributesField(@Nullable AudioAttributes attributes) {
+        // TODO: deprecate this method - it will be done with a builder.
         if (attributes == null) {
             throw new IllegalArgumentException("Invalid null AudioAttributes for Ringtone");
         }
         mAudioAttributes = attributes;
+        // Setting the audio attributes requires re-initializing the player.
+        if (mActivePlayer != null) {
+            // The audio attributes have to be set before the media player is prepared.
+            // Re-initialize it.
+            reinitializeActivePlayer();
+        }
+    }
+
+    /** @hide */
+    @VisibleForTesting
+    public boolean getPreferBuiltinDevice() {
+        return mPreferBuiltinDevice;
+    }
+
+    /** @hide */
+    @VisibleForTesting
+    public VolumeShaper.Configuration getVolumeShaperConfig() {
+        return mVolumeShaperConfig;
+    }
+
+    /**
+     * Returns whether this player is local only, or can defer to the remote player. The
+     * result may differ from the builder if there is no remote player available at all.
+     * @hide
+     */
+    @VisibleForTesting
+    public boolean isLocalOnly() {
+        return !mAllowRemote;
+    }
+
+    /** @hide */
+    @VisibleForTesting
+    public boolean isUsingRemotePlayer() {
+        return mActivePlayer instanceof RemoteRingtonePlayer;
     }
 
     /**
@@ -176,94 +240,82 @@
     }
 
     /**
-     * Sets the preferred device of the ringtong playback to the built-in device.
-     *
-     * @hide
-     */
-    public boolean preferBuiltinDevice(boolean enable) {
-        mPreferBuiltinDevice = enable;
-        if (mLocalPlayer == null) {
-            return true;
-        }
-        return mLocalPlayer.setPreferredDevice(getBuiltinDevice(mAudioManager));
-    }
-
-    /**
      * Creates a local media player for the ringtone using currently set attributes.
      * @return true if media player creation succeeded or is deferred,
      * false if it did not succeed and can't be tried remotely.
      * @hide
      */
-    public boolean createLocalMediaPlayer() {
-        Trace.beginSection("createLocalMediaPlayer");
-        if (mUri == null) {
-            Log.e(TAG, "Could not create media player as no URI was provided.");
-            return mAllowRemote && mRemotePlayer != null;
-        }
-        destroyLocalPlayer();
-        // try opening uri locally before delegating to remote player
-        mLocalPlayer = new MediaPlayer();
+    public boolean reinitializeActivePlayer() {
+        // Try creating a local media player, or fallback to creating a remote one.
+        Trace.beginSection("reinitializeActivePlayer");
         try {
-            mLocalPlayer.setDataSource(mContext, mUri);
-            mLocalPlayer.setAudioAttributes(mAudioAttributes);
-            mLocalPlayer.setPreferredDevice(
-                    mPreferBuiltinDevice ? getBuiltinDevice(mAudioManager) : null);
-            synchronized (mPlaybackSettingsLock) {
-                applyPlaybackProperties_sync();
+            if (mActivePlayer != null) {
+                // This would only happen if calling the deprecated setAudioAttributes after
+                // building the Ringtone.
+                stopAndReleaseActivePlayer();
             }
-            if (mVolumeShaperConfig != null) {
-                mVolumeShaper = mLocalPlayer.createVolumeShaper(mVolumeShaperConfig);
-            }
-            mLocalPlayer.prepare();
 
-        } catch (SecurityException | IOException e) {
-            destroyLocalPlayer();
-            if (!mAllowRemote) {
-                Log.w(TAG, "Remote playback not allowed: " + e);
-            }
-        }
-
-        if (LOGD) {
-            if (mLocalPlayer != null) {
-                Log.d(TAG, "Successfully created local player");
+            AudioDeviceInfo preferredDevice =
+                    mPreferBuiltinDevice ? getBuiltinDevice(mAudioManager) : null;
+            if (mUri != null) {
+                mActivePlayer = LocalRingtonePlayer.create(mContext, mAudioManager, mUri,
+                        mAudioAttributes, mInjectables, mVolumeShaperConfig, preferredDevice,
+                        mHapticGeneratorEnabled, mIsLooping, mVolume);
             } else {
-                Log.d(TAG, "Problem opening; delegating to remote player");
+                // Using the remote player won't help play a null Uri. Revert straight to fallback.
+                mActivePlayer = createFallbackRingtonePlayer();
+                // Fall through to attempting remote fallback play if null.
             }
+
+            if (mActivePlayer == null && mAllowRemote) {
+                mActivePlayer = new RemoteRingtonePlayer(mRemoteRingtoneService, mUri,
+                        mAudioAttributes,
+                        mVolumeShaperConfig, mHapticGeneratorEnabled, mIsLooping, mVolume);
+            }
+            return mActivePlayer != null;
+        } finally {
+            Trace.endSection();
         }
-        Trace.endSection();
-        return mLocalPlayer != null || (mAllowRemote && mRemotePlayer != null);
+    }
+
+    @Nullable
+    private LocalRingtonePlayer createFallbackRingtonePlayer() {
+        int ringtoneType = RingtoneManager.getDefaultType(mUri);
+        if (ringtoneType != -1
+                && RingtoneManager.getActualDefaultRingtoneUri(mContext, ringtoneType) == null) {
+            Log.w(TAG, "not playing fallback for " + mUri);
+            return null;
+        }
+        // Default ringtone, try fallback ringtone.
+        try (AssetFileDescriptor afd = mContext.getResources().openRawResourceFd(
+                    com.android.internal.R.raw.fallbackring)) {
+            if (afd == null) {
+                Log.e(TAG, "Could not load fallback ringtone");
+                return null;
+            }
+
+            AudioDeviceInfo preferredDevice =
+                    mPreferBuiltinDevice ? getBuiltinDevice(mAudioManager) : null;
+            return LocalRingtonePlayer.createForFallback(mAudioManager, afd,
+                    mAudioAttributes, mInjectables, mVolumeShaperConfig, preferredDevice,
+                    mIsLooping, mVolume);
+        } catch (NotFoundException nfe) {
+            Log.e(TAG, "Fallback ringtone does not exist");
+            return null;
+        } catch (IOException e) {
+            // As with the above messages, not including much information about the
+            // failure so as not to expose details of the fallback ringtone resource.
+            Log.e(TAG, "Exception reading fallback ringtone");
+            return null;
+        }
     }
 
     /**
      * Same as AudioManager.hasHapticChannels except it assumes an already created ringtone.
-     * If the ringtone has not been created, it will load based on URI provided at {@link #setUri}
-     * and if not URI has been set, it will assume no haptic channels are present.
      * @hide
      */
     public boolean hasHapticChannels() {
-        // FIXME: support remote player, or internalize haptic channels support and remove entirely.
-        try {
-            android.os.Trace.beginSection("Ringtone.hasHapticChannels");
-            if (mLocalPlayer != null) {
-                for(MediaPlayer.TrackInfo trackInfo : mLocalPlayer.getTrackInfo()) {
-                    if (trackInfo.hasHapticChannels()) {
-                        return true;
-                    }
-                }
-            }
-        } finally {
-            android.os.Trace.endSection();
-        }
-        return false;
-    }
-
-    /**
-     * Returns whether a local player has been created for this ringtone.
-     * @hide
-     */
-    @VisibleForTesting
-    public boolean hasLocalPlayer() {
-        return mLocalPlayer != null;
+        return (mActivePlayer == null) ? false : mActivePlayer.hasHapticChannels();
     }
 
     /**
@@ -282,7 +334,9 @@
     public void setLooping(boolean looping) {
         synchronized (mPlaybackSettingsLock) {
             mIsLooping = looping;
-            applyPlaybackProperties_sync();
+            if (mActivePlayer != null) {
+                mActivePlayer.setLooping(looping);
+            }
         }
     }
 
@@ -302,11 +356,17 @@
      *   corresponds to no attenuation being applied.
      */
     public void setVolume(float volume) {
+        if (volume < 0.0f) {
+            volume = 0.0f;
+        } else if (volume > 1.0f) {
+            volume = 1.0f;
+        }
+
         synchronized (mPlaybackSettingsLock) {
-            if (volume < 0.0f) { volume = 0.0f; }
-            if (volume > 1.0f) { volume = 1.0f; }
             mVolume = volume;
-            applyPlaybackProperties_sync();
+            if (mActivePlayer != null) {
+                mActivePlayer.setVolume(volume);
+            }
         }
     }
 
@@ -328,12 +388,14 @@
      * @see android.media.audiofx.HapticGenerator#isAvailable()
      */
     public boolean setHapticGeneratorEnabled(boolean enabled) {
-        if (!HapticGenerator.isAvailable()) {
+        if (!mInjectables.isHapticGeneratorAvailable()) {
             return false;
         }
         synchronized (mPlaybackSettingsLock) {
             mHapticGeneratorEnabled = enabled;
-            applyPlaybackProperties_sync();
+            if (mActivePlayer != null) {
+                mActivePlayer.setHapticGeneratorEnabled(enabled);
+            }
         }
         return true;
     }
@@ -349,32 +411,6 @@
     }
 
     /**
-     * Must be called synchronized on mPlaybackSettingsLock
-     */
-    private void applyPlaybackProperties_sync() {
-        if (mLocalPlayer != null) {
-            mLocalPlayer.setVolume(mVolume);
-            mLocalPlayer.setLooping(mIsLooping);
-            if (mHapticGenerator == null && mHapticGeneratorEnabled) {
-                mHapticGenerator = HapticGenerator.create(mLocalPlayer.getAudioSessionId());
-            }
-            if (mHapticGenerator != null) {
-                mHapticGenerator.setEnabled(mHapticGeneratorEnabled);
-            }
-        } else if (mAllowRemote && (mRemotePlayer != null)) {
-            try {
-                mRemotePlayer.setPlaybackProperties(
-                        mRemoteToken, mVolume, mIsLooping, mHapticGeneratorEnabled);
-            } catch (RemoteException e) {
-                Log.w(TAG, "Problem setting playback properties: ", e);
-            }
-        } else {
-            Log.w(TAG,
-                    "Neither local nor remote player available when applying playback properties");
-        }
-    }
-
-    /**
      * Returns a human-presentable title for ringtone. Looks in media
      * content provider. If not in either, uses the filename
      *
@@ -456,39 +492,6 @@
         return title;
     }
 
-    /**
-     * Set {@link Uri} to be used for ringtone playback.
-     * {@link IRingtonePlayer}.
-     *
-     * @hide
-     */
-    @UnsupportedAppUsage
-    public void setUri(Uri uri) {
-        setUri(uri, null);
-    }
-
-    /**
-     * @hide
-     */
-    public void setVolumeShaperConfig(@Nullable VolumeShaper.Configuration volumeShaperConfig) {
-        mVolumeShaperConfig = volumeShaperConfig;
-    }
-
-    /**
-     * Set {@link Uri} to be used for ringtone playback. Attempts to open
-     * locally, otherwise will delegate playback to remote
-     * {@link IRingtonePlayer}. Add {@link VolumeShaper} if required.
-     *
-     * @hide
-     */
-    public void setUri(Uri uri, @Nullable VolumeShaper.Configuration volumeShaperConfig) {
-        mVolumeShaperConfig = volumeShaperConfig;
-        mUri = uri;
-        if (mUri == null) {
-            destroyLocalPlayer();
-        }
-    }
-
     /** {@hide} */
     @UnsupportedAppUsage
     public Uri getUri() {
@@ -499,36 +502,16 @@
      * Plays the ringtone.
      */
     public void play() {
-        if (mLocalPlayer != null) {
-            // Play ringtones if stream volume is over 0 or if it is a haptic-only ringtone
-            // (typically because ringer mode is vibrate).
-            if (mAudioManager.getStreamVolume(AudioAttributes.toLegacyStreamType(mAudioAttributes))
-                    != 0) {
-                startLocalPlayer();
-            } else if (!mAudioAttributes.areHapticChannelsMuted() && hasHapticChannels()) {
-                // is haptic only ringtone
-                startLocalPlayer();
+        if (mActivePlayer != null) {
+            if (mActivePlayer.play()) {
+                return;
+            } else {
+                // Discard active player: play() is only meant to be called once.
+                stopAndReleaseActivePlayer();
             }
-        } else if (mAllowRemote && (mRemotePlayer != null) && (mUri != null)) {
-            final Uri canonicalUri = mUri.getCanonicalUri();
-            final boolean looping;
-            final float volume;
-            synchronized (mPlaybackSettingsLock) {
-                looping = mIsLooping;
-                volume = mVolume;
-            }
-            try {
-                mRemotePlayer.playWithVolumeShaping(mRemoteToken, canonicalUri, mAudioAttributes,
-                        volume, looping, mVolumeShaperConfig);
-            } catch (RemoteException e) {
-                if (!playFallbackRingtone()) {
-                    Log.w(TAG, "Problem playing ringtone: " + e);
-                }
-            }
-        } else {
-            if (!playFallbackRingtone()) {
-                Log.w(TAG, "Neither local nor remote playback available");
-            }
+        }
+        if (!playFallbackRingtone()) {
+            Log.w(TAG, "Neither local nor remote playback available");
         }
     }
 
@@ -536,45 +519,13 @@
      * Stops a playing ringtone.
      */
     public void stop() {
-        if (mLocalPlayer != null) {
-            destroyLocalPlayer();
-        } else if (mAllowRemote && (mRemotePlayer != null)) {
-            try {
-                mRemotePlayer.stop(mRemoteToken);
-            } catch (RemoteException e) {
-                Log.w(TAG, "Problem stopping ringtone: " + e);
-            }
-        }
+        stopAndReleaseActivePlayer();
     }
 
-    private void destroyLocalPlayer() {
-        if (mLocalPlayer != null) {
-            if (mHapticGenerator != null) {
-                mHapticGenerator.release();
-                mHapticGenerator = null;
-            }
-            mLocalPlayer.setOnCompletionListener(null);
-            mLocalPlayer.reset();
-            mLocalPlayer.release();
-            mLocalPlayer = null;
-            mVolumeShaper = null;
-            synchronized (sActiveRingtones) {
-                sActiveRingtones.remove(this);
-            }
-        }
-    }
-
-    private void startLocalPlayer() {
-        if (mLocalPlayer == null) {
-            return;
-        }
-        synchronized (sActiveRingtones) {
-            sActiveRingtones.add(this);
-        }
-        mLocalPlayer.setOnCompletionListener(mCompletionListener);
-        mLocalPlayer.start();
-        if (mVolumeShaper != null) {
-            mVolumeShaper.apply(VolumeShaper.Operation.PLAY);
+    private void stopAndReleaseActivePlayer() {
+        if (mActivePlayer != null) {
+            mActivePlayer.stopAndRelease();
+            mActivePlayer = null;
         }
     }
 
@@ -584,87 +535,333 @@
      * @return True if playing, false otherwise.
      */
     public boolean isPlaying() {
-        if (mLocalPlayer != null) {
-            return mLocalPlayer.isPlaying();
-        } else if (mAllowRemote && (mRemotePlayer != null)) {
-            try {
-                return mRemotePlayer.isPlaying(mRemoteToken);
-            } catch (RemoteException e) {
-                Log.w(TAG, "Problem checking ringtone: " + e);
-                return false;
-            }
+        if (mActivePlayer != null) {
+            return mActivePlayer.isPlaying();
         } else {
-            Log.w(TAG, "Neither local nor remote playback available");
+            Log.w(TAG, "No active ringtone player");
             return false;
         }
     }
 
+    /**
+     * Fallback during the play stage rather than initialization, typically due to an issue
+     * communicating with the remote player.
+     */
     private boolean playFallbackRingtone() {
+        if (mActivePlayer != null) {
+            Log.wtf(TAG, "Playing fallback ringtone with another active player");
+            stopAndReleaseActivePlayer();
+        }
         int streamType = AudioAttributes.toLegacyStreamType(mAudioAttributes);
         if (mAudioManager.getStreamVolume(streamType) == 0) {
+            // TODO: Return true? If volume is off, this is a successful play.
             return false;
         }
-        int ringtoneType = RingtoneManager.getDefaultType(mUri);
-        if (ringtoneType != -1 &&
-                RingtoneManager.getActualDefaultRingtoneUri(mContext, ringtoneType) == null) {
-            Log.w(TAG, "not playing fallback for " + mUri);
+        mActivePlayer = createFallbackRingtonePlayer();
+        if (mActivePlayer == null) {
+            return false;  // the create method logs if it returns null.
+        } else if (mActivePlayer.play()) {
+            return true;
+        } else {
+            stopAndReleaseActivePlayer();
             return false;
         }
-        // Default ringtone, try fallback ringtone.
-        try {
-            AssetFileDescriptor afd = mContext.getResources().openRawResourceFd(
-                    com.android.internal.R.raw.fallbackring);
-            if (afd == null) {
-                Log.e(TAG, "Could not load fallback ringtone");
-                return false;
-            }
-            mLocalPlayer = new MediaPlayer();
-            if (afd.getDeclaredLength() < 0) {
-                mLocalPlayer.setDataSource(afd.getFileDescriptor());
-            } else {
-                mLocalPlayer.setDataSource(afd.getFileDescriptor(),
-                        afd.getStartOffset(),
-                        afd.getDeclaredLength());
-            }
-            mLocalPlayer.setAudioAttributes(mAudioAttributes);
-            synchronized (mPlaybackSettingsLock) {
-                applyPlaybackProperties_sync();
-            }
-            if (mVolumeShaperConfig != null) {
-                mVolumeShaper = mLocalPlayer.createVolumeShaper(mVolumeShaperConfig);
-            }
-            mLocalPlayer.prepare();
-            startLocalPlayer();
-            afd.close();
-        } catch (IOException ioe) {
-            destroyLocalPlayer();
-            Log.e(TAG, "Failed to open fallback ringtone");
-            return false;
-        } catch (NotFoundException nfe) {
-            Log.e(TAG, "Fallback ringtone does not exist");
-            return false;
-        }
-        return true;
     }
 
     void setTitle(String title) {
         mTitle = title;
     }
 
-    @Override
-    protected void finalize() {
-        if (mLocalPlayer != null) {
-            mLocalPlayer.release();
+    /**
+     * Build a {@link Ringtone} to easily play sounds for ringtones, alarms and notifications.
+     *
+     * TODO: when un-hide, deprecate Ringtone: setAudioAttributes.
+     * @hide
+     */
+    public static final class Builder {
+        private final Context mContext;
+        private final int mEnabledMedia;
+        private Uri mUri;
+        private final AudioAttributes mAudioAttributes;
+        // Not a static default since it doesn't really need to be in memory forever.
+        private Injectables mInjectables = new Injectables();
+        private VolumeShaper.Configuration mVolumeShaperConfig;
+        private boolean mPreferBuiltinDevice = false;
+        private boolean mAllowRemote = true;
+        private float mInitialSoundVolume = 1.0f;
+        private boolean mLooping = false;
+
+        /**
+         * Constructs a builder to play the given media types from the mediaUri. If the mediaUri
+         * is null (for example, an unset-setting), then fallback logic will dictate what plays.
+         *
+         * <p>When built, if the ringtone is already known to be a no-op, such as explicitly
+         * silent, then the {@link #build} may return null.
+         *
+         * @param context The context for playing the ringtone.
+         * @param enabledMedia Which media to play. Media not included is implicitly muted.
+        * @param audioAttributes The attributes to use for playback, which affects the volumes and
+         *                        settings that are applied.
+         */
+        public Builder(@NonNull Context context, @RingtoneMedia int enabledMedia,
+                @NonNull AudioAttributes audioAttributes) {
+            if (enabledMedia != MEDIA_SOUND) {
+                throw new UnsupportedOperationException("Other media types not supported yet");
+            }
+            mContext = context;
+            mEnabledMedia = enabledMedia;
+            mAudioAttributes = audioAttributes;
+        }
+
+        /**
+         * Inject test intercepters for static methods.
+         * @hide
+         */
+        @NonNull
+        public Builder setInjectables(Injectables injectables) {
+            mInjectables = injectables;
+            return this;
+        }
+
+        /**
+         * The uri for the ringtone media to play. This is typically a user's preference for the
+         * sound. If null, then it is treated as though the user's preference is unset and
+         * fallback behavior, such as using the default ringtone setting, are used instead.
+         *
+         * When sound media is enabled, this is assumed to be a sound URI.
+         */
+        @NonNull
+        public Builder setUri(@Nullable Uri uri) {
+            mUri = uri;
+            return this;
+        }
+
+        /**
+         * Sets whether the resulting ringtone should loop until {@link Ringtone#stop()} is called,
+         * or just play once.
+         */
+        @NonNull
+        public Builder setLooping(boolean looping) {
+            mLooping = looping;
+            return this;
+        }
+
+        /**
+         * Sets the VolumeShaper.Configuration to apply to the ringtone.
+         * @hide
+         */
+        @NonNull
+        public Builder setVolumeShaperConfig(
+                @Nullable VolumeShaper.Configuration volumeShaperConfig) {
+            mVolumeShaperConfig = volumeShaperConfig;
+            return this;
+        }
+
+        /**
+         * Sets the initial sound volume for the ringtone.
+         */
+        @NonNull
+        public Builder setInitialSoundVolume(float initialSoundVolume) {
+            mInitialSoundVolume = initialSoundVolume;
+            return this;
+        }
+
+        /**
+         * Sets the preferred device of the ringtone playback to the built-in device.
+         * @hide
+         */
+        @NonNull
+        public Builder setPreferBuiltinDevice() {
+            mPreferBuiltinDevice = true;
+            return this;
+        }
+
+        /**
+         * Prevent fallback to the remote service. This is primarily intended for use within the
+         * remote IRingtonePlayer service itself, to avoid loops.
+         * @hide
+         */
+        @NonNull
+        public Builder setLocalOnly() {
+            mAllowRemote = false;
+            return this;
+        }
+
+        /**
+         * Returns the built Ringtone, or null if there was a problem loading the Uri and there
+         * are no fallback options available.
+         */
+        @Nullable
+        public Ringtone build() {
+            try {
+                Ringtone ringtone = new Ringtone(this);
+                if (ringtone.reinitializeActivePlayer()) {
+                    return ringtone;
+                } else {
+                    Log.e(TAG, "Failed to open ringtone " + mUri);
+                    return null;
+                }
+            } catch (Exception ex) {
+                // Catching Exception isn't great, but was done in the old
+                // RingtoneManager.getRingtone and hides errors like DocumentsProvider throwing
+                // IllegalArgumentException instead of FileNotFoundException, and also robolectric
+                // failures when ShadowMediaPlayer wasn't pre-informed of the ringtone.
+                Log.e(TAG, "Failed to open ringtone " + mUri + ": " + ex);
+                return null;
+            }
         }
     }
 
-    class MyOnCompletionListener implements MediaPlayer.OnCompletionListener {
+    /**
+     * Play a specific ringtone. This interface is implemented by either local (this process) or
+     * proxied-remote playback via AudioManager.getRingtonePlayer, so that the caller
+     * (Ringtone class) can just use a single player after the initial creation.
+     * @hide
+     */
+    interface RingtonePlayer {
+        /**
+         * Start playing the ringtone, returning false if there was a problem that
+         * requires falling back to the fallback ringtone resource.
+         */
+        boolean play();
+        boolean isPlaying();
+        void stopAndRelease();
+
+        // Mutating playback methods.
+        void setPreferredDevice(@Nullable AudioDeviceInfo audioDeviceInfo);
+        void setLooping(boolean looping);
+        void setHapticGeneratorEnabled(boolean enabled);
+        void setVolume(float volume);
+
+        boolean hasHapticChannels();
+    }
+
+    /**
+     * Remote RingtonePlayer. All operations are delegated via the IRingtonePlayer interface, which
+     * should ultimately be backed by a RingtoneLocalPlayer within the system services.
+     */
+    static class RemoteRingtonePlayer implements RingtonePlayer {
+        private final IBinder mRemoteToken = new Binder();
+        private final IRingtonePlayer mRemoteRingtoneService;
+        private final Uri mCanonicalUri;
+        private final VolumeShaper.Configuration mVolumeShaperConfig;
+        private final AudioAttributes mAudioAttributes;
+        private boolean mIsLooping;
+        private float mVolume;
+        private boolean mIsHapticGeneratorEnabled;
+
+        RemoteRingtonePlayer(@NonNull IRingtonePlayer remoteRingtoneService,
+                @NonNull Uri uri, @NonNull AudioAttributes audioAttributes,
+                @Nullable VolumeShaper.Configuration volumeShaperConfig,
+                boolean isHapticGeneratorEnabled, boolean initialIsLooping, float initialVolume) {
+            mRemoteRingtoneService = remoteRingtoneService;
+            mCanonicalUri = (uri == null) ? null : uri.getCanonicalUri();
+            mAudioAttributes = audioAttributes;
+            mVolumeShaperConfig = volumeShaperConfig;
+            mIsHapticGeneratorEnabled = isHapticGeneratorEnabled;
+            mIsLooping = initialIsLooping;
+            mVolume = initialVolume;
+        }
+
         @Override
-        public void onCompletion(MediaPlayer mp) {
-            synchronized (sActiveRingtones) {
-                sActiveRingtones.remove(Ringtone.this);
+        public boolean play() {
+            try {
+                mRemoteRingtoneService.playWithVolumeShaping(mRemoteToken, mCanonicalUri,
+                        mAudioAttributes, mVolume, mIsLooping, mIsHapticGeneratorEnabled,
+                        mVolumeShaperConfig);
+                return true;
+            } catch (RemoteException e) {
+                Log.w(TAG, "Problem playing ringtone: " + e);
+                return false;
             }
-            mp.setOnCompletionListener(null); // Help the Java GC: break the refcount cycle.
+        }
+
+        @Override
+        public boolean isPlaying() {
+            try {
+                return mRemoteRingtoneService.isPlaying(mRemoteToken);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Problem checking ringtone isPlaying: " + e);
+                return false;
+            }
+        }
+
+        @Override
+        public void stopAndRelease() {
+            try {
+                mRemoteRingtoneService.stop(mRemoteToken);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Problem stopping ringtone: " + e);
+            }
+        }
+
+        @Override
+        public void setPreferredDevice(@Nullable AudioDeviceInfo audioDeviceInfo) {
+            // un-implemented for remote (but not used outside system).
+        }
+
+        @Override
+        public void setLooping(boolean looping) {
+            mIsLooping = looping;
+            try {
+                mRemoteRingtoneService.setLooping(mRemoteToken, looping);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Problem setting looping: " + e);
+            }
+        }
+
+        @Override
+        public void setHapticGeneratorEnabled(boolean enabled) {
+            mIsHapticGeneratorEnabled = enabled;
+            try {
+                mRemoteRingtoneService.setHapticGeneratorEnabled(mRemoteToken, enabled);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Problem setting hapticGeneratorEnabled: " + e);
+            }
+        }
+
+        @Override
+        public void setVolume(float volume) {
+            mVolume = volume;
+            try {
+                mRemoteRingtoneService.setVolume(mRemoteToken, volume);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Problem setting volume: " + e);
+            }
+        }
+
+        @Override
+        public boolean hasHapticChannels() {
+            // FIXME: support remote player, or internalize haptic channels support and remove
+            // entirely.
+            return false;
+        }
+    }
+
+    /**
+     * Interface for intercepting static methods and constructors, for unit testing only.
+     * @hide
+     */
+    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
+    public static class Injectables {
+        /** Intercept {@code new MediaPlayer()}. */
+        @NonNull
+        public MediaPlayer newMediaPlayer() {
+            return new MediaPlayer();
+        }
+
+        /** Intercept {@link HapticGenerator#isAvailable}. */
+        public boolean isHapticGeneratorAvailable() {
+            return HapticGenerator.isAvailable();
+        }
+
+        /**
+         * Intercept {@link HapticGenerator#create} using
+         * {@link MediaPlayer#getAudioSessionId()} from the given media player.
+         */
+        @Nullable
+        public HapticGenerator createHapticGenerator(@NonNull MediaPlayer mediaPlayer) {
+            return HapticGenerator.create(mediaPlayer.getAudioSessionId());
         }
     }
 }
diff --git a/media/java/android/media/RingtoneManager.java b/media/java/android/media/RingtoneManager.java
index d2b21ae..ebf02a2 100644
--- a/media/java/android/media/RingtoneManager.java
+++ b/media/java/android/media/RingtoneManager.java
@@ -16,7 +16,6 @@
 
 package android.media;
 
-import android.Manifest;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
@@ -39,10 +38,7 @@
 import android.os.Build;
 import android.os.Environment;
 import android.os.FileUtils;
-import android.os.IBinder;
 import android.os.ParcelFileDescriptor;
-import android.os.RemoteException;
-import android.os.ServiceManager;
 import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.os.UserManager;
@@ -357,6 +353,25 @@
         }
     }
 
+    /** @hide */
+    @NonNull
+    public static AudioAttributes getDefaultAudioAttributes(int ringtoneType) {
+        AudioAttributes.Builder builder = new AudioAttributes.Builder();
+        switch (ringtoneType) {
+            case TYPE_ALARM:
+                builder.setUsage(AudioAttributes.USAGE_ALARM);
+                break;
+            case TYPE_NOTIFICATION:
+                builder.setUsage(AudioAttributes.USAGE_NOTIFICATION);
+                break;
+            default:  // ringtone or all
+                builder.setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE);
+                break;
+        }
+        builder.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION);
+        return builder.build();
+    }
+
     /**
      * Whether retrieving another {@link Ringtone} will stop playing the
      * previously retrieved {@link Ringtone}.
@@ -481,8 +496,10 @@
             mPreviousRingtone.stop();
         }
 
-        mPreviousRingtone =
-                getRingtone(mContext, getRingtoneUri(position), inferStreamType(), true);
+        mPreviousRingtone = new Ringtone.Builder(
+                mContext, Ringtone.MEDIA_SOUND, getDefaultAudioAttributes(mType))
+                .setUri(getRingtoneUri(position))
+                .build();
         return mPreviousRingtone;
     }
 
@@ -677,40 +694,9 @@
      * @return A {@link Ringtone} for the given URI, or null.
      */
     public static Ringtone getRingtone(final Context context, Uri ringtoneUri) {
-        // Don't set the stream type
-        return getRingtone(context, ringtoneUri, -1, true);
-    }
-
-    /**
-     * Returns a {@link Ringtone} with {@link VolumeShaper} if required for a given sound URI.
-     * <p>
-     * If the given URI cannot be opened for any reason, this method will
-     * attempt to fallback on another sound. If it cannot find any, it will
-     * return null.
-     *
-     * @param context A context used to query.
-     * @param ringtoneUri The {@link Uri} of a sound or ringtone.
-     * @param volumeShaperConfig config for volume shaper of the ringtone if applied.
-     * @return A {@link Ringtone} for the given URI, or null.
-     *
-     * @hide
-     */
-    public static Ringtone getRingtone(
-            final Context context, Uri ringtoneUri,
-            @Nullable VolumeShaper.Configuration volumeShaperConfig) {
-        // Don't set the stream type
-        return getRingtone(context, ringtoneUri, -1 /* streamType */, volumeShaperConfig, true);
-    }
-
-    /**
-     * @hide
-     */
-    public static Ringtone getRingtone(final Context context, Uri ringtoneUri,
-            @Nullable VolumeShaper.Configuration volumeShaperConfig,
-            boolean createLocalMediaPlayer) {
-        // Don't set the stream type
-        return getRingtone(context, ringtoneUri, -1 /* streamType */, volumeShaperConfig,
-                createLocalMediaPlayer);
+        return new Ringtone.Builder(context, Ringtone.MEDIA_SOUND, getDefaultAudioAttributes(-1))
+                .setUri(ringtoneUri)
+                .build();
     }
 
     /**
@@ -719,64 +705,11 @@
     public static Ringtone getRingtone(final Context context, Uri ringtoneUri,
             @Nullable VolumeShaper.Configuration volumeShaperConfig,
             AudioAttributes audioAttributes) {
-        // Don't set the stream type
-        Ringtone ringtone = getRingtone(context, ringtoneUri, -1 /* streamType */,
-                volumeShaperConfig, false);
-        if (ringtone != null) {
-            ringtone.setAudioAttributesField(audioAttributes);
-            if (!ringtone.createLocalMediaPlayer()) {
-                Log.e(TAG, "Failed to open ringtone " + ringtoneUri);
-                return null;
-            }
-        }
-        return ringtone;
-    }
-
-    //FIXME bypass the notion of stream types within the class
-    /**
-     * Returns a {@link Ringtone} for a given sound URI on the given stream
-     * type. Normally, if you change the stream type on the returned
-     * {@link Ringtone}, it will re-create the {@link MediaPlayer}. This is just
-     * an optimized route to avoid that.
-     *
-     * @param streamType The stream type for the ringtone, or -1 if it should
-     *            not be set (and the default used instead).
-     * @param createLocalMediaPlayer when true, the ringtone returned will be fully
-     *      created otherwise, it will require the caller to create the media player manually
-     *      {@link Ringtone#createLocalMediaPlayer()} in order to play the Ringtone.
-     * @see #getRingtone(Context, Uri)
-     */
-    @UnsupportedAppUsage
-    private static Ringtone getRingtone(final Context context, Uri ringtoneUri, int streamType,
-            boolean createLocalMediaPlayer) {
-        return getRingtone(context, ringtoneUri, streamType, null /* volumeShaperConfig */,
-                createLocalMediaPlayer);
-    }
-
-    private static Ringtone getRingtone(final Context context, Uri ringtoneUri, int streamType,
-            @Nullable VolumeShaper.Configuration volumeShaperConfig,
-            boolean createLocalMediaPlayer) {
-        try {
-            final Ringtone r = new Ringtone(context, true);
-            if (streamType >= 0) {
-                //FIXME deprecated call
-                r.setStreamType(streamType);
-            }
-
-            r.setVolumeShaperConfig(volumeShaperConfig);
-            r.setUri(ringtoneUri, volumeShaperConfig);
-            if (createLocalMediaPlayer) {
-                if (!r.createLocalMediaPlayer()) {
-                    Log.e(TAG, "Failed to open ringtone " + ringtoneUri);
-                    return null;
-                }
-            }
-            return r;
-        } catch (Exception ex) {
-            Log.e(TAG, "Failed to open ringtone " + ringtoneUri + ": " + ex);
-        }
-
-        return null;
+        // TODO: move caller(s) away from this method: inline the builder call.
+        return new Ringtone.Builder(context, Ringtone.MEDIA_SOUND, audioAttributes)
+                .setUri(ringtoneUri)
+                .setVolumeShaperConfig(volumeShaperConfig)
+                .build();
     }
 
     /**
diff --git a/media/java/android/media/projection/TEST_MAPPING b/media/java/android/media/projection/TEST_MAPPING
index 4324930..a792498 100644
--- a/media/java/android/media/projection/TEST_MAPPING
+++ b/media/java/android/media/projection/TEST_MAPPING
@@ -13,20 +13,6 @@
           "exclude-annotation": "org.junit.Ignore"
         }
       ]
-    },
-    {
-      "name": "CtsMediaProjectionTestCases",
-      "options": [
-        {
-          "exclude-annotation": "android.platform.test.annotations.FlakyTest"
-        },
-        {
-          "exclude-annotation": "androidx.test.filters.FlakyTest"
-        },
-        {
-          "exclude-annotation": "org.junit.Ignore"
-        }
-      ]
     }
   ]
 }
diff --git a/media/tests/MediaFrameworkTest/Android.bp b/media/tests/MediaFrameworkTest/Android.bp
index 06ec949e..ca20225e 100644
--- a/media/tests/MediaFrameworkTest/Android.bp
+++ b/media/tests/MediaFrameworkTest/Android.bp
@@ -20,7 +20,9 @@
         "androidx.test.ext.junit",
         "androidx.test.rules",
         "android-ex-camera2",
+        "testables",
         "testng",
+        "truth-prebuilt",
     ],
     jni_libs: [
         "libdexmakerjvmtiagent",
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/OWNERS b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/OWNERS
new file mode 100644
index 0000000..6d5f82c
--- /dev/null
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/OWNERS
@@ -0,0 +1,2 @@
+# Haptics team also works on Ringtone
+per-file *Ringtone* = file:/services/core/java/com/android/server/vibrator/OWNERS
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/RingtoneTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/RingtoneTest.java
new file mode 100644
index 0000000..d8e3f8d
--- /dev/null
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/RingtoneTest.java
@@ -0,0 +1,410 @@
+/*
+ * Copyright (C) 2023 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.mediaframeworktest.unit;
+
+import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyObject;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.isNull;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.res.AssetFileDescriptor;
+import android.media.AudioAttributes;
+import android.media.AudioManager;
+import android.media.IRingtonePlayer;
+import android.media.MediaPlayer;
+import android.media.Ringtone;
+import android.media.audiofx.HapticGenerator;
+import android.net.Uri;
+import android.os.IBinder;
+import android.testing.TestableContext;
+import android.util.ArrayMap;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.mediaframeworktest.R;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runner.RunWith;
+import org.junit.runners.model.Statement;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+
+import java.io.FileNotFoundException;
+import java.util.ArrayDeque;
+import java.util.Map;
+import java.util.Queue;
+
+@RunWith(AndroidJUnit4.class)
+public class RingtoneTest {
+
+    private static final Uri SOUND_URI = Uri.parse("content://fake-sound-uri");
+
+    private static final AudioAttributes RINGTONE_ATTRIBUTES =
+            audioAttributes(AudioAttributes.USAGE_NOTIFICATION_RINGTONE);
+
+    @Rule
+    public final RingtoneInjectablesTrackingTestRule
+            mMediaPlayerRule = new RingtoneInjectablesTrackingTestRule();
+
+    @Captor ArgumentCaptor<IBinder> mIBinderCaptor;
+    @Mock IRingtonePlayer mMockRemotePlayer;
+    private TestableContext mContext;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        TestableContext testContext =
+                new TestableContext(InstrumentationRegistry.getTargetContext(), null);
+
+        AudioManager realAudioManager = testContext.getSystemService(AudioManager.class);
+        AudioManager spyAudioManager = spy(realAudioManager);
+        when(spyAudioManager.getRingtonePlayer()).thenReturn(mMockRemotePlayer);
+        testContext.addMockSystemService(Context.AUDIO_SERVICE, spyAudioManager);
+
+        mContext = spy(testContext);
+    }
+
+    @Test
+    public void testRingtone_fullLifecycleUsingLocalMediaPlayer() throws Exception {
+        MediaPlayer mockMediaPlayer = mMediaPlayerRule.expectLocalMediaPlayer();
+        Ringtone ringtone =
+                newBuilder(Ringtone.MEDIA_SOUND, RINGTONE_ATTRIBUTES).setUri(SOUND_URI).build();
+        assertThat(ringtone).isNotNull();
+        assertThat(ringtone.isUsingRemotePlayer()).isFalse();
+
+        // Verify all the properties.
+        assertThat(ringtone.getEnabledMedia()).isEqualTo(Ringtone.MEDIA_SOUND);
+        assertThat(ringtone.getUri()).isEqualTo(SOUND_URI);
+        assertThat(ringtone.getAudioAttributes()).isEqualTo(RINGTONE_ATTRIBUTES);
+        assertThat(ringtone.getVolume()).isEqualTo(1.0f);
+        assertThat(ringtone.isLooping()).isEqualTo(false);
+        assertThat(ringtone.isHapticGeneratorEnabled()).isEqualTo(false);
+        assertThat(ringtone.getPreferBuiltinDevice()).isFalse();
+        assertThat(ringtone.getVolumeShaperConfig()).isNull();
+        assertThat(ringtone.isLocalOnly()).isFalse();
+
+        // Prepare
+        verifyLocalPlayerSetup(mockMediaPlayer, SOUND_URI,
+                audioAttributes(AudioAttributes.USAGE_NOTIFICATION_RINGTONE));
+        verify(mockMediaPlayer).setVolume(1.0f);
+        verify(mockMediaPlayer).setLooping(false);
+        verify(mockMediaPlayer).prepare();
+
+        // Play
+        ringtone.play();
+        verifyLocalPlay(mockMediaPlayer);
+
+        // Verify dynamic controls.
+        ringtone.setVolume(0.8f);
+        verify(mockMediaPlayer).setVolume(0.8f);
+        ringtone.setLooping(true);
+        verify(mockMediaPlayer).setLooping(true);
+        HapticGenerator mockHapticGenerator =
+                mMediaPlayerRule.expectHapticGenerator(mockMediaPlayer);
+        ringtone.setHapticGeneratorEnabled(true);
+        verify(mockHapticGenerator).setEnabled(true);
+
+        // Release
+        ringtone.stop();
+        verifyLocalStop(mockMediaPlayer);
+        verifyNoMoreInteractions(mockMediaPlayer);
+        verify(mockHapticGenerator).release();
+        verifyNoMoreInteractions(mockHapticGenerator);
+        verifyZeroInteractions(mMockRemotePlayer);
+    }
+
+    @Test
+    public void testRingtone_fullLifecycleUsingRemoteMediaPlayer() throws Exception {
+        MediaPlayer mockMediaPlayer = mMediaPlayerRule.expectLocalMediaPlayer();
+        setupFileNotFound(mockMediaPlayer, SOUND_URI);
+        Ringtone ringtone =
+                newBuilder(Ringtone.MEDIA_SOUND, RINGTONE_ATTRIBUTES)
+                .setUri(SOUND_URI)
+                .build();
+        assertThat(ringtone).isNotNull();
+        assertThat(ringtone.isUsingRemotePlayer()).isTrue();
+
+        // Verify all the properties.
+        assertThat(ringtone.getEnabledMedia()).isEqualTo(Ringtone.MEDIA_SOUND);
+        assertThat(ringtone.getUri()).isEqualTo(SOUND_URI);
+        assertThat(ringtone.getAudioAttributes()).isEqualTo(RINGTONE_ATTRIBUTES);
+        assertThat(ringtone.getVolume()).isEqualTo(1.0f);
+        assertThat(ringtone.isLooping()).isEqualTo(false);
+        assertThat(ringtone.isHapticGeneratorEnabled()).isEqualTo(false);
+        assertThat(ringtone.getPreferBuiltinDevice()).isFalse();
+        assertThat(ringtone.getVolumeShaperConfig()).isNull();
+        assertThat(ringtone.isLocalOnly()).isFalse();
+
+        // Initialization did try to create a local media player.
+        verify(mockMediaPlayer).setDataSource(mContext, SOUND_URI);
+        // setDataSource throws file not found, so nothing else will happen on the local player.
+        verify(mockMediaPlayer).release();
+
+        // Delegates to remote media player.
+        ringtone.play();
+        verify(mMockRemotePlayer).playWithVolumeShaping(mIBinderCaptor.capture(), eq(SOUND_URI),
+                eq(audioAttributes(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)),
+                eq(1.0f), eq(false), eq(false), isNull());
+        IBinder remoteToken = mIBinderCaptor.getValue();
+
+        // Verify dynamic controls.
+        ringtone.setVolume(0.8f);
+        verify(mMockRemotePlayer).setVolume(remoteToken, 0.8f);
+        ringtone.setLooping(true);
+        verify(mMockRemotePlayer).setLooping(remoteToken, true);
+        ringtone.setHapticGeneratorEnabled(true);
+        verify(mMockRemotePlayer).setHapticGeneratorEnabled(remoteToken, true);
+
+        ringtone.stop();
+        verify(mMockRemotePlayer).stop(remoteToken);
+        verifyNoMoreInteractions(mMockRemotePlayer);
+        verifyNoMoreInteractions(mockMediaPlayer);
+    }
+
+    @Test
+    public void testRingtone_nullMediaOnBuilderUsesFallback() throws Exception {
+        AssetFileDescriptor testResourceFd =
+                mContext.getResources().openRawResourceFd(R.raw.shortmp3);
+        // Ensure it will flow as expected.
+        assertThat(testResourceFd).isNotNull();
+        assertThat(testResourceFd.getDeclaredLength()).isAtLeast(0);
+        mContext.getOrCreateTestableResources()
+                .addOverride(com.android.internal.R.raw.fallbackring, testResourceFd);
+
+        MediaPlayer mockMediaPlayer = mMediaPlayerRule.expectLocalMediaPlayer();
+        Ringtone ringtone = newBuilder(Ringtone.MEDIA_SOUND, RINGTONE_ATTRIBUTES)
+                .setUri(null)
+                .build();
+        assertThat(ringtone).isNotNull();
+        assertThat(ringtone.isUsingRemotePlayer()).isFalse();
+
+        // Delegates straight to fallback in local player.
+        // Prepare
+        verifyLocalPlayerFallbackSetup(mockMediaPlayer, testResourceFd, RINGTONE_ATTRIBUTES);
+        verify(mockMediaPlayer).setVolume(1.0f);
+        verify(mockMediaPlayer).setLooping(false);
+        verify(mockMediaPlayer).prepare();
+
+        // Play
+        ringtone.play();
+        verifyLocalPlay(mockMediaPlayer);
+
+        // Release
+        ringtone.stop();
+        verifyLocalStop(mockMediaPlayer);
+
+        verifyNoMoreInteractions(mockMediaPlayer);
+        verifyNoMoreInteractions(mMockRemotePlayer);
+    }
+
+    @Test
+    public void testRingtone_nullMediaOnBuilderUsesFallbackViaRemote() throws Exception {
+        mContext.getOrCreateTestableResources()
+                .addOverride(com.android.internal.R.raw.fallbackring, null);
+        Ringtone ringtone = newBuilder(Ringtone.MEDIA_SOUND, RINGTONE_ATTRIBUTES)
+                .setUri(null)
+                .setLooping(true) // distinct from haptic generator, to match plumbing
+                .build();
+        assertThat(ringtone).isNotNull();
+        // Local player fallback fails as the resource isn't found (no media player creation is
+        // attempted), and then goes on to create the remote player.
+        assertThat(ringtone.isUsingRemotePlayer()).isTrue();
+
+        ringtone.play();
+        verify(mMockRemotePlayer).playWithVolumeShaping(mIBinderCaptor.capture(), isNull(),
+                eq(audioAttributes(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)),
+                eq(1.0f), eq(true), eq(false), isNull());
+        ringtone.stop();
+        verify(mMockRemotePlayer).stop(mIBinderCaptor.getValue());
+        verifyNoMoreInteractions(mMockRemotePlayer);
+    }
+
+    @Test
+    public void testRingtone_noMediaSetOnBuilderFallbackFailsAndNoRemote() throws Exception {
+        mContext.getOrCreateTestableResources()
+                .addOverride(com.android.internal.R.raw.fallbackring, null);
+        Ringtone ringtone = newBuilder(Ringtone.MEDIA_SOUND, RINGTONE_ATTRIBUTES)
+                .setUri(null)
+                .setLocalOnly()
+                .build();
+        // Local player fallback fails as the resource isn't found (no media player creation is
+        // attempted), and since there is no local player, the ringtone ends up having nothing to
+        // do.
+        assertThat(ringtone).isNull();
+    }
+
+    private Ringtone.Builder newBuilder(@Ringtone.RingtoneMedia int ringtoneMedia,
+            AudioAttributes audioAttributes) {
+        return new Ringtone.Builder(mContext, ringtoneMedia, audioAttributes)
+                .setInjectables(mMediaPlayerRule.injectables);
+    }
+
+    private static AudioAttributes audioAttributes(int audioUsage) {
+        return new AudioAttributes.Builder()
+                .setUsage(audioUsage)
+                .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
+                .build();
+    }
+
+    /** Makes the mock get some sort of file access problem. */
+    private void setupFileNotFound(MediaPlayer mockMediaPlayer, Uri uri) throws Exception {
+        doThrow(new FileNotFoundException("Fake file not found"))
+                .when(mockMediaPlayer).setDataSource(any(Context.class), eq(uri));
+    }
+
+    private void verifyLocalPlayerSetup(MediaPlayer mockPlayer, Uri expectedUri,
+            AudioAttributes expectedAudioAttributes) throws Exception {
+        verify(mockPlayer).setDataSource(mContext, expectedUri);
+        verify(mockPlayer).setAudioAttributes(expectedAudioAttributes);
+        verify(mockPlayer).setPreferredDevice(null);
+        verify(mockPlayer).prepare();
+    }
+
+    private void verifyLocalPlayerFallbackSetup(MediaPlayer mockPlayer, AssetFileDescriptor afd,
+            AudioAttributes expectedAudioAttributes) throws Exception {
+        // This is very specific but it's a simple way to test that the test resource matches.
+        if (afd.getDeclaredLength() < 0) {
+            verify(mockPlayer).setDataSource(afd.getFileDescriptor());
+        } else {
+            verify(mockPlayer).setDataSource(afd.getFileDescriptor(),
+                    afd.getStartOffset(),
+                    afd.getDeclaredLength());
+        }
+        verify(mockPlayer).setAudioAttributes(expectedAudioAttributes);
+        verify(mockPlayer).setPreferredDevice(null);
+        verify(mockPlayer).prepare();
+    }
+
+    private void verifyLocalPlay(MediaPlayer mockMediaPlayer) {
+        verify(mockMediaPlayer).setOnCompletionListener(anyObject());
+        verify(mockMediaPlayer).start();
+    }
+
+    private void verifyLocalStop(MediaPlayer mockMediaPlayer) {
+        verify(mockMediaPlayer).setOnCompletionListener(isNull());
+        verify(mockMediaPlayer).reset();
+        verify(mockMediaPlayer).release();
+    }
+
+    /**
+     * This rule ensures that all expected media player creations from the factory do actually
+     * occur. The reason for this level of control is that creating a media player is fairly
+     * expensive and blocking, so we do want unit tests of this class to "declare" interactions
+     * of all created media players.
+     *
+     * This needs to be a TestRule so that the teardown assertions can be skipped if the test has
+     * failed (and media player assertions may just be a distracting side effect). Otherwise, the
+     * teardown failures hide the real test ones.
+     */
+    public static class RingtoneInjectablesTrackingTestRule implements TestRule {
+        public Ringtone.Injectables injectables = new TestInjectables();
+        public boolean hapticGeneratorAvailable = true;
+
+        // Queue of (local) media players, in order of expected creation. Enqueue using
+        // expectNewMediaPlayer(), dequeued by the media player factory passed to Ringtone.
+        // This queue is asserted to be empty at the end of the test.
+        private Queue<MediaPlayer> mMockMediaPlayerQueue = new ArrayDeque<>();
+
+        // Similar to media players, but for haptic generator, which also needs releasing.
+        private Map<MediaPlayer, HapticGenerator> mMockHapticGeneratorMap = new ArrayMap<>();
+
+        @Override
+        public Statement apply(Statement base, Description description) {
+            return new Statement() {
+                @Override
+                public void evaluate() throws Throwable {
+                    base.evaluate();
+                    // Only assert if the test didn't fail (base.evaluate() would throw).
+                    assertWithMessage("Test setup an expectLocalMediaPlayer but it wasn't consumed")
+                            .that(mMockMediaPlayerQueue).isEmpty();
+                    // Only assert if the test didn't fail (base.evaluate() would throw).
+                    assertWithMessage(
+                            "Test setup an expectLocalHapticGenerator but it wasn't consumed")
+                            .that(mMockHapticGeneratorMap).isEmpty();
+                }
+            };
+        }
+
+        private MediaPlayer expectLocalMediaPlayer() {
+            MediaPlayer mockMediaPlayer = Mockito.mock(MediaPlayerMockableNatives.class);
+            mMockMediaPlayerQueue.add(mockMediaPlayer);
+            return mockMediaPlayer;
+        }
+
+        private HapticGenerator expectHapticGenerator(MediaPlayer mockMediaPlayer) {
+            HapticGenerator mockHapticGenerator = Mockito.mock(HapticGenerator.class);
+            // A test should never want this.
+            assertWithMessage("Can't expect a second haptic generator created "
+                    + "for one media player")
+                    .that(mMockHapticGeneratorMap.put(mockMediaPlayer, mockHapticGenerator))
+                    .isNull();
+            return mockHapticGenerator;
+        }
+
+        private class TestInjectables extends Ringtone.Injectables {
+            @Override
+            public MediaPlayer newMediaPlayer() {
+                assertWithMessage(
+                        "Unexpected MediaPlayer creation. Bug or need expectNewMediaPlayer")
+                        .that(mMockMediaPlayerQueue)
+                        .isNotEmpty();
+                return mMockMediaPlayerQueue.remove();
+            }
+
+            @Override
+            public boolean isHapticGeneratorAvailable() {
+                return hapticGeneratorAvailable;
+            }
+
+            @Override
+            public HapticGenerator createHapticGenerator(MediaPlayer mediaPlayer) {
+                HapticGenerator mockHapticGenerator = mMockHapticGeneratorMap.remove(mediaPlayer);
+                assertWithMessage("Unexpected HapticGenerator creation. "
+                        + "Bug or need expectHapticGenerator")
+                        .that(mockHapticGenerator)
+                        .isNotNull();
+                return mockHapticGenerator;
+            }
+        }
+    }
+
+    /** Mocks don't work directly on native calls, but if they're overridden then it does work. */
+    private static class MediaPlayerMockableNatives extends MediaPlayer {
+        @Override
+        public void setLooping(boolean value) {
+            throw new IllegalStateException("Expected mock to intercept");
+        }
+    }
+}
diff --git a/native/android/performance_hint.cpp b/native/android/performance_hint.cpp
index 27666caa..b3628fa 100644
--- a/native/android/performance_hint.cpp
+++ b/native/android/performance_hint.cpp
@@ -69,7 +69,7 @@
 
     int updateTargetWorkDuration(int64_t targetDurationNanos);
     int reportActualWorkDuration(int64_t actualDurationNanos);
-    int sendHint(int32_t hint);
+    int sendHint(SessionHint hint);
     int setThreads(const int32_t* threadIds, size_t size);
     int getThreadIds(int32_t* const threadIds, size_t* size);
 
@@ -243,7 +243,7 @@
     return 0;
 }
 
-int APerformanceHintSession::sendHint(int32_t hint) {
+int APerformanceHintSession::sendHint(SessionHint hint) {
     if (hint < 0 || hint >= static_cast<int32_t>(mLastHintSentTimestamp.size())) {
         ALOGE("%s: invalid session hint %d", __FUNCTION__, hint);
         return EINVAL;
@@ -335,7 +335,7 @@
     delete session;
 }
 
-int APerformanceHint_sendHint(void* session, int32_t hint) {
+int APerformanceHint_sendHint(void* session, SessionHint hint) {
     return reinterpret_cast<APerformanceHintSession*>(session)->sendHint(hint);
 }
 
diff --git a/native/android/tests/performance_hint/PerformanceHintNativeTest.cpp b/native/android/tests/performance_hint/PerformanceHintNativeTest.cpp
index 321a7dd..791adfd 100644
--- a/native/android/tests/performance_hint/PerformanceHintNativeTest.cpp
+++ b/native/android/tests/performance_hint/PerformanceHintNativeTest.cpp
@@ -127,7 +127,7 @@
     result = APerformanceHint_reportActualWorkDuration(session, -1L);
     EXPECT_EQ(EINVAL, result);
 
-    int hintId = 2;
+    SessionHint hintId = SessionHint::CPU_LOAD_RESET;
     EXPECT_CALL(*iSession, sendHint(Eq(hintId))).Times(Exactly(1));
     result = APerformanceHint_sendHint(session, hintId);
     EXPECT_EQ(0, result);
@@ -140,7 +140,7 @@
     result = APerformanceHint_sendHint(session, hintId);
     EXPECT_EQ(0, result);
 
-    result = APerformanceHint_sendHint(session, -1);
+    result = APerformanceHint_sendHint(session, static_cast<SessionHint>(-1));
     EXPECT_EQ(EINVAL, result);
 
     EXPECT_CALL(*iSession, close()).Times(Exactly(1));
diff --git a/packages/CompanionDeviceManager/res/values-af/strings.xml b/packages/CompanionDeviceManager/res/values-af/strings.xml
index 7a5b564..181e8ee 100644
--- a/packages/CompanionDeviceManager/res/values-af/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-af/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"horlosie"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Kies \'n <xliff:g id="PROFILE_NAME">%1$s</xliff:g> om deur &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; bestuur te word"</string>
     <string name="summary_watch" msgid="898569637110705523">"Hierdie app is nodig om jou <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te bestuur. <xliff:g id="APP_NAME">%2$s</xliff:g> sal toegelaat word om inligting te sinkroniseer, soos die naam van iemand wat bel, interaksie met jou kennisgewings te hê, en sal toegang tot jou Foon-, SMS-, Kontakte-, Kalender-, Oproeprekords-, en Toestelle in die Omtrek-toestemmings hê."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Hierdie app sal toegelaat word om inligting te sinkroniseer, soos die naam van iemand wat bel, en sal toegang tot hierdie toestemmings op jou <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> hê"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Laat &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; toe om &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; te bestuur?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"bril"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Hierdie app is nodig om <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te bestuur. <xliff:g id="APP_NAME">%2$s</xliff:g> sal toegelaat word om interaksie met jou kennisgewings te hê en sal toegang tot jou Foon-, SMS-, Kontakte-, Mikrofoon-, en Toestelle in die Omtrek-toestemmings hê."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Hierdie app sal toegang tot hierdie toestemmings op jou <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> hê"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Gee &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; toegang tot hierdie inligting op jou foon"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Oorkruistoestel-dienste"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> versoek tans namens jou <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> toestemming om apps tussen jou toestelle te stroom"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Gee &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; toegang tot hierdie inligting op jou foon"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play Dienste"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> versoek tans namens jou <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> toegang tot jou foon se foto’s, media en kennisgewings"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Laat &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; toe om hierdie handeling uit te voer?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> versoek tans namens jou <xliff:g id="DEVICE_NAME">%2$s</xliff:g> toestemming om apps en ander stelselkenmerke na toestelle in die omtrek te stroom"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"toestel"</string>
diff --git a/packages/CompanionDeviceManager/res/values-am/strings.xml b/packages/CompanionDeviceManager/res/values-am/strings.xml
index 09a4de1..9b66027 100644
--- a/packages/CompanionDeviceManager/res/values-am/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-am/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"ሰዓቔ"</string>
     <string name="chooser_title" msgid="2262294130493605839">"በ&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; ዹሚተዳደር <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ይምሹጡ"</string>
     <string name="summary_watch" msgid="898569637110705523">"ዚኄርሔዎን <xliff:g id="DEVICE_NAME">%1$s</xliff:g> áˆˆáˆ›áˆ”á‰°á‹łá‹°áˆ­ ይህ መተግበáˆȘያ á‹«áˆ”áˆáˆáŒ‹áˆáą <xliff:g id="APP_NAME">%2$s</xliff:g> ኄንደ ዹሚደውል ሰው áˆ”áˆáŁ áŠšáˆ›áˆłá‹ˆá‰‚á‹«á‹Žá‰œá‹Ž ጋር መሔተጋቄር ኄንá‹Čፈጄር ኄና ዚኄርሔዎን áˆ”áˆáŠ­áŁ áŠ€áˆ”áŠ€áˆáŠ€áˆ”áŁ á‹•á‹á‰…á‹«á‹Žá‰œáŁ ዹቀን መቁጠáˆȘá‹«áŁ ዚጄáˆȘ ምዝግቄ áˆ›áˆ”á‰łá‹ˆáˆ»á‹Žá‰œ ኄና á‰ áŠ á‰…áˆ«á‰ąá‹« ያሉ መሣáˆȘያዎቜን መዔሚሔ ያሉ መሚጃዎቜን ኄንá‹Čያሰምር á‹­áˆá‰€á‹”áˆˆá‰łáˆáą"</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"ይህ መተግበáˆȘያ ኄንደ ዹሚደውል ሰው ሔም ያለ መሹጃን ኄንá‹Čያሰምር ኄና ኄነዚህን ፈቃዶቜ በኄርሔዎ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> ላይ ኄንá‹Čደርሔ á‹­áˆá‰€á‹”áˆˆá‰łáˆ"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;ን ኄንá‹Čá‹«áˆ”á‰°á‹łá‹”áˆ­ ይፈቅዳሉ?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"áˆ˜áŠáŒœáˆźá‰œ"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"ይህ መተግበáˆȘያ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ን áˆˆáˆ›áˆ”á‰°á‹łá‹°áˆ­ á‹«áˆ”áˆáˆáŒ‹áˆáą <xliff:g id="APP_NAME">%2$s</xliff:g> áŠšáˆ›áˆłá‹ˆá‰‚á‹«á‹Žá‰œá‹Ž ጋር መሔተጋቄር ኄንá‹Čፈጄር ኄና ዚኄርሔዎን áˆ”áˆáŠ­áŁ áŠ€áˆ”áŠ€áˆáŠ€áˆ”áŁ á‹•á‹á‰‚á‹«á‹Žá‰œáŁ ማይክሼፎን ኄና á‰ áŠ á‰…áˆ«á‰ąá‹« ያሉ መሣáˆȘያዎቜ ፈቃዶቜን ኄንá‹Čደርሔ á‹­áˆá‰€á‹”áˆˆá‰łáˆáą"</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"ይህ መተግበáˆȘያ በኄርሔዎ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> ላይ ኄነዚህን ፈቃዶቜ ኄንá‹Čደርሔ á‹­áˆá‰€á‹”áˆˆá‰łáˆ"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ይህን መሹጃ ኚሔልክዎ ኄንá‹Čደርሔበቔ ይፍቀዱለቔ"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"መሣáˆȘያ ተሻጋáˆȘ አገልግሎቶቜ"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> በኄርሔዎ መሣáˆȘያዎቜ መካኚል መተግበáˆȘያዎቜን በዄሚቔ ለመልቀቅ ዚኄርሔዎን <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ወክሎ ፈቃዔ ኄዚጠዚቀ ነው"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ይህን መሹጃ ኚሔልክዎ ላይ ኄንá‹Čደርሔ ይፍቀዱለቔ"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"ዹGoogle Play አገልግሎቶቜ"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> ዚሔልክዎን áŽá‰¶á‹Žá‰œáŁ ሚá‹Čያ ኄና áˆ›áˆłá‹ˆá‰‚á‹«á‹Žá‰œ ለመዔሚሔ ዚኄርሔዎን <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ወክሎ ፈቃዔ ኄዚጠዚቀ ነው"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ይህን ኄርምጃ ኄንá‹Čወሔዔ ፈቃዔ ይሰጠው?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> ዚኄርሔዎን <xliff:g id="DEVICE_NAME">%2$s</xliff:g> በመወኹል á‰ áŠ á‰…áˆ«á‰ąá‹« ላሉ መሣáˆȘያዎቜ መተግበáˆȘያዎቜ ኄና ሌሎቜ ዚሔርዓቔ ባህáˆȘያቔን በዄሚቔ ለመልቀቅ ፈቃዔ ኄዚጠዚቀ ነው"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"መሣáˆȘያ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ar/strings.xml b/packages/CompanionDeviceManager/res/values-ar/strings.xml
index 5a854e2..4c46af0 100644
--- a/packages/CompanionDeviceManager/res/values-ar/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ar/strings.xml
@@ -20,26 +20,33 @@
     <string name="confirmation_title" msgid="4593465730772390351">"‏هل ŰȘŰ±ÙŠŰŻ Ű§Ù„ŰłÙ…Ű§Ű­ لŰȘŰ·ŰšÙŠÙ‚ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ŰšŰ§Ù„ÙˆŰ”ÙˆÙ„ Ű„Ù„Ù‰ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;۟"</string>
     <string name="profile_name_watch" msgid="576290739483672360">"Ű§Ù„ŰłŰ§ŰčŰ©"</string>
     <string name="chooser_title" msgid="2262294130493605839">"‏ۧ۟ŰȘÙŽŰ± <xliff:g id="PROFILE_NAME">%1$s</xliff:g> Ù„ÙŠŰŻÙŠŰ±Ù‡Ű§ ŰȘŰ·ŰšÙŠÙ‚ &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
-    <string name="summary_watch" msgid="898569637110705523">"Ù‡Ű°Ű§ Ű§Ù„ŰȘŰ·ŰšÙŠÙ‚ Ù…Ű·Ù„ÙˆŰš Ù„Ű„ŰŻŰ§Ű±Ű© \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". ŰłÙŠŰȘم Ű§Ù„ŰłÙ…Ű§Ű­ لŰȘŰ·ŰšÙŠÙ‚ \"<xliff:g id="APP_NAME">%2$s</xliff:g>\" ŰšÙ…ŰČŰ§Ù…Ù†Ű© Ű§Ù„Ù…ŰčÙ„ÙˆÙ…Ű§ŰȘی Ù…Ű«Ù„Ű§Ù‹ Ű§ŰłÙ… Ű§Ù„Ù…ŰȘŰ”Ù„ŰŒ ÙˆŰ§Ù„ŰȘÙŰ§Űčل مŰč Ű§Ù„Ű„ŰŽŰčۧ۱ۧŰȘ ÙˆŰ§Ù„ÙˆŰ”ÙˆÙ„ Ű„Ù„Ù‰ Ù‡Ű§ŰȘÙÙƒŰŒ ÙˆŰ§Ù„Ű±ŰłŰ§ŰŠÙ„ Ű§Ù„Ù‚Ű”ÙŠŰ±Ű©ŰŒ ÙˆŰŹÙ‡Ű§ŰȘ Ű§Ù„Ű§ŰȘŰ”Ű§Ù„ŰŒ ÙˆŰ§Ù„ŰȘÙ‚ÙˆÙŠÙ…ŰŒ ÙˆŰłŰŹÙ„Ű§ŰȘ Ű§Ù„Ù…ÙƒŰ§Ù„Ù…Ű§ŰȘ ÙˆŰŁŰ°ÙˆÙ†Ű§ŰȘ Ű§Ù„ŰŁŰŹÙ‡ŰČŰ© Ű§Ù„Ù…ŰŹŰ§ÙˆŰ±Ű©."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"ŰłÙŠŰȘم Ű§Ù„ŰłÙ…Ű§Ű­ Ù„Ù‡Ű°Ű§ Ű§Ù„ŰȘŰ·ŰšÙŠÙ‚ ŰšÙ…ŰČŰ§Ù…Ù†Ű© Ű§Ù„Ù…ŰčÙ„ÙˆÙ…Ű§ŰȘی Ù…Ű«Ù„Ű§Ù‹ Ű§ŰłÙ… Ű§Ù„Ù…ŰȘŰ”Ù„ŰŒ ÙˆŰ§Ù„ÙˆŰ”ÙˆÙ„ Ű„Ù„Ù‰ Ű§Ù„ŰŁŰ°ÙˆÙ†Ű§ŰȘ Ű§Ù„ŰȘŰ§Ù„ÙŠŰ© Űčلى <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>."</string>
+    <!-- no translation found for summary_watch (898569637110705523) -->
+    <skip />
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"‏Ű§Ù„ŰłÙ…Ű§Ű­ لŰȘŰ·ŰšÙŠÙ‚ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ۚۄۯۧ۱۩ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"Ű§Ù„Ù†ŰžŰ§Ű±Ű©"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"ÙŠŰŹŰš ŰȘÙˆÙÙ‘Ű± Ù‡Ű°Ű§ Ű§Ù„ŰȘŰ·ŰšÙŠÙ‚ Ù„Ű„ŰŻŰ§Ű±Ű© \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". ŰłÙŠŰȘم Ű§Ù„ŰłÙ…Ű§Ű­ لŰȘŰ·ŰšÙŠÙ‚ \"<xliff:g id="APP_NAME">%2$s</xliff:g>\" ŰšŰ§Ù„ŰȘÙŰ§Űčل مŰč Ű§Ù„Ű„ŰŽŰčۧ۱ۧŰȘ ÙˆŰ§Ù„ÙˆŰ”ÙˆÙ„ Ű„Ù„Ù‰ ŰŁŰ°ÙˆÙ†Ű§ŰȘ Ű§Ù„Ù‡Ű§ŰȘف ÙˆŰ§Ù„Ű±ŰłŰ§ŰŠÙ„ Ű§Ù„Ù‚Ű”ÙŠŰ±Ű© ÙˆŰŹÙ‡Ű§ŰȘ Ű§Ù„Ű§ŰȘŰ”Ű§Ù„ ÙˆŰ§Ù„Ù…ÙŠÙƒŰ±ÙˆÙÙˆÙ† ÙˆŰ§Ù„ŰŁŰŹÙ‡ŰČŰ© Ű§Ù„Ù…ŰŹŰ§ÙˆŰ±Ű©."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"ŰłÙŠŰȘم Ű§Ù„ŰłÙ…Ű§Ű­ Ù„Ù‡Ű°Ű§ Ű§Ù„ŰȘŰ·ŰšÙŠÙ‚ ŰšŰ§Ù„ÙˆŰ”ÙˆÙ„ Ű„Ù„Ù‰ Ű§Ù„ŰŁŰ°ÙˆÙ†Ű§ŰȘ Ű§Ù„ŰȘŰ§Ù„ÙŠŰ© Űčلى <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>."</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"‏Ű§Ù„ŰłÙ…Ű§Ű­ لŰȘŰ·ŰšÙŠÙ‚ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ŰšŰ§Ù„ÙˆŰ”ÙˆÙ„ Ű„Ù„Ù‰ Ù‡Ű°Ù‡ Ű§Ù„Ù…ŰčÙ„ÙˆÙ…Ű§ŰȘ من Ù‡Ű§ŰȘفك"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Ű§Ù„ŰźŰŻÙ…Ű§ŰȘ Ű§Ù„ŰȘي ŰȘŰčمل ŰšÙŠÙ† Ű§Ù„ŰŁŰŹÙ‡ŰČŰ©"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"ÙŠŰ·Ù„Űš ŰȘŰ·ŰšÙŠÙ‚ \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" Ű§Ù„Ű­Ű”ÙˆÙ„ Űčلى Ű„Ű°Ù† Ù†ÙŠŰ§ŰšŰ©Ù‹ Űčن \"<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>\" Ù„ŰšŰ«Ù‘ Ù…Ű­ŰȘوى Ű§Ù„ŰȘŰ·ŰšÙŠÙ‚Ű§ŰȘ ŰšÙŠÙ† ŰŁŰŹÙ‡ŰČŰȘك."</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"‏Ű§Ù„ŰłÙ…Ű§Ű­ لŰȘŰ·ŰšÙŠÙ‚ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ŰšŰ§Ù„ÙˆŰ”ÙˆÙ„ Ű„Ù„Ù‰ Ù‡Ű°Ù‡ Ű§Ù„Ù…ŰčÙ„ÙˆÙ…Ű§ŰȘ من Ù‡Ű§ŰȘفك"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"‏ŰźŰŻÙ…Ű§ŰȘ Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"ÙŠŰ·Ù„Űš ŰȘŰ·ŰšÙŠÙ‚ \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" Ű§Ù„Ű­Ű”ÙˆÙ„ Űčلى Ű„Ű°Ù† Ù†ÙŠŰ§ŰšŰ©Ù‹ Űčن \"<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>\" Ù„Ù„ÙˆŰ”ÙˆÙ„ Ű„Ù„Ù‰ Ű§Ù„Ű”ÙˆŰ± ÙˆŰ§Ù„ÙˆŰłŰ§ŰŠŰ· ÙˆŰ§Ù„Ű„ŰŽŰčۧ۱ۧŰȘ في Ù‡Ű§ŰȘفك."</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"‏هل ŰȘŰ±ÙŠŰŻ Ű§Ù„ŰłÙ…Ű§Ű­ للŰȘŰ·ŰšÙŠÙ‚ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ۚۧŰȘÙ‘ŰźŰ§Ű° Ù‡Ű°Ű§ Ű§Ù„Ű„ŰŹŰ±Ű§ŰĄŰŸ"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"ÙŠŰ·Ù„Űš \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" Ű§Ù„Ű­Ű”ÙˆÙ„ Űčلى Ű„Ű°Ù† Ù†ÙŠŰ§ŰšŰ©Ù‹ Űčن \"<xliff:g id="DEVICE_NAME">%2$s</xliff:g>\" Ù„ŰšŰ«Ù‘ Ű§Ù„ŰȘŰ·ŰšÙŠÙ‚Ű§ŰȘ وميŰČۧŰȘ Ű§Ù„Ù†ŰžŰ§Ù… Ű§Ù„ŰŁŰźŰ±Ù‰ Ű„Ù„Ù‰ ŰŁŰŹÙ‡ŰČŰȘك Ű§Ù„Ù…ŰŹŰ§ÙˆŰ±Ű©."</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"ŰŹÙ‡Ű§ŰČ"</string>
-    <string name="summary_generic_single_device" msgid="4181180669689590417">"ŰłÙŠŰȘمكّن Ù‡Ű°Ű§ Ű§Ù„ŰȘŰ·ŰšÙŠÙ‚ من مŰČŰ§Ù…Ù†Ű© Ű§Ù„Ù…ŰčÙ„ÙˆÙ…Ű§ŰȘی Ù…Ű«Ù„ Ű§ŰłÙ… Ű§Ù„Ù…ŰȘŰ”Ù„ŰŒ ŰšÙŠÙ† Ù‡Ű§ŰȘفك و\"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string>
-    <string name="summary_generic" msgid="1761976003668044801">"ŰłÙŠŰȘمكّن Ù‡Ű°Ű§ Ű§Ù„ŰȘŰ·ŰšÙŠÙ‚ من مŰČŰ§Ù…Ù†Ű© Ű§Ù„Ù…ŰčÙ„ÙˆÙ…Ű§ŰȘی Ù…Ű«Ù„ Ű§ŰłÙ… Ű§Ù„Ù…ŰȘŰ”Ù„ŰŒ ŰšÙŠÙ† Ù‡Ű§ŰȘفك ÙˆŰ§Ù„ŰŹÙ‡Ű§ŰČ Ű§Ù„Ù…Ű­ŰŻÙ‘ŰŻ."</string>
+    <!-- no translation found for summary_generic_single_device (4181180669689590417) -->
+    <skip />
+    <!-- no translation found for summary_generic (1761976003668044801) -->
+    <skip />
     <string name="consent_yes" msgid="8344487259618762872">"Ű§Ù„ŰłÙ…Ű§Ű­"</string>
     <string name="consent_no" msgid="2640796915611404382">"ŰčŰŻÙ… Ű§Ù„ŰłÙ…Ű§Ű­"</string>
     <string name="consent_back" msgid="2560683030046918882">"Ű±ŰŹÙˆŰč"</string>
diff --git a/packages/CompanionDeviceManager/res/values-as/strings.xml b/packages/CompanionDeviceManager/res/values-as/strings.xml
index 4c08891..091864e 100644
--- a/packages/CompanionDeviceManager/res/values-as/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-as/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"àŠ˜àŠĄàŠŒà§€"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;àŠ àŠȘà§°àŠżàŠšàŠŸàŠČàŠšàŠŸ àŠ•à§°àŠżàŠŹ àŠČàŠ—àŠŸ àŠàŠŸàŠŸ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> àŠŹàŠŸàŠ›àŠšàŠż àŠ•à§°àŠ•"</string>
     <string name="summary_watch" msgid="898569637110705523">"àŠ†àŠȘà§‹àŠšàŠŸà§° <xliff:g id="DEVICE_NAME">%1$s</xliff:g> àŠȘà§°àŠżàŠšàŠŸàŠČàŠšàŠŸ àŠ•à§°àŠżàŠŹàŠČৈ àŠàŠ‡ àŠàŠȘ্‌àŠŸà§‹à§° àŠ†à§±àŠ¶à§àŠŻàŠ•à„€ <xliff:g id="APP_NAME">%2$s</xliff:g>àŠ• àŠ•àŠČ àŠ•à§°à§‹àŠàŠ€àŠŸà§° àŠšàŠŸàŠźà§° àŠŠà§°à§‡ àŠ€àŠ„à§àŠŻ àŠ›àŠżàŠ‚àŠ• àŠ•à§°àŠżàŠŹàŠČৈ, àŠ†àŠȘà§‹àŠšàŠŸà§° àŠœàŠŸàŠšàŠšà§€à§° àŠžà§ˆàŠ€à§‡ àŠ­àŠŸàŠŹ-àŠŹàŠżàŠšàŠżàŠźàŠŻàŠŒ àŠ•à§°àŠżàŠŹàŠČৈ àŠ†à§°à§ àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ«’àŠš, àŠàŠ›àŠàŠźàŠàŠ›, àŠžàŠźà§àŠȘà§°à§àŠ•, àŠ•à§‡àŠČà§‡àŠŁà§àŠĄàŠŸà§°, àŠ•àŠČ àŠČàŠ— àŠ†à§°à§ àŠšàŠżàŠ•àŠŸà§±à§°à§àŠ€à§€ àŠĄàŠżàŠ­àŠŸàŠ‡àŠšà§° àŠ…àŠšà§àŠźàŠ€àŠż àŠàŠ•à§àŠžà§‡àŠ› àŠ•à§°àŠżàŠŹàŠČৈ àŠŠàŠżàŠŻàŠŒàŠŸ àŠč’àŠŹà„€"</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"àŠàŠ‡ àŠàŠȘ্‌àŠŸà§‹àŠ• àŠ«’àŠš àŠ•à§°àŠŸ àŠČà§‹àŠ•à§° àŠšàŠŸàŠźà§° àŠŠà§°à§‡ àŠ€àŠ„à§àŠŻ àŠ›àŠżàŠ‚àŠ• àŠ•à§°àŠżàŠŹàŠČৈ àŠ†à§°à§ àŠ†àŠȘà§‹àŠšàŠŸà§° <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>àŠ€ àŠàŠ‡ àŠ…àŠšà§àŠźàŠ€àŠżàŠžàŠźà§‚àŠč àŠàŠ•à§àŠžà§‡àŠ› àŠ•à§°àŠżàŠŹàŠČৈ àŠ…àŠšà§àŠźàŠ€àŠż àŠŠàŠżàŠŻàŠŒàŠŸ àŠč’àŠŹ"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;àŠ• &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; àŠȘà§°àŠżàŠšàŠŸàŠČàŠšàŠŸ àŠ•à§°àŠżàŠŹàŠČৈ àŠŠàŠżàŠŹàŠšà§‡?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"àŠšàŠ›à§‌àŠźàŠŸ"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> àŠȘà§°àŠżàŠšàŠŸàŠČàŠšàŠŸ àŠ•à§°àŠżàŠŹàŠČৈ àŠàŠ‡ àŠàŠȘ্‌àŠŸà§‹à§° àŠ†à§±àŠ¶à§àŠŻàŠ•à„€ <xliff:g id="APP_NAME">%2$s</xliff:g>àŠ• àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ…àŠšà§àŠźàŠ€àŠżàŠžàŠźà§‚àŠčà§° àŠžà§ˆàŠ€à§‡ àŠ­àŠŸàŠŹ-àŠŹàŠżàŠšàŠżàŠźàŠŻàŠŒ àŠ•à§°àŠżàŠŹàŠČৈ àŠ†à§°à§ àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ«’àŠš, àŠàŠ›àŠàŠźàŠàŠ›, àŠžàŠźà§àŠȘà§°à§àŠ•, àŠźàŠŸàŠ‡àŠ•à§à§°’àŠ«’àŠš àŠ†à§°à§ àŠšàŠżàŠ•àŠŸà§±à§°à§àŠ€à§€ àŠĄàŠżàŠ­àŠŸàŠ‡àŠšà§° àŠ…àŠšà§àŠźàŠ€àŠżàŠžàŠźà§‚àŠč àŠàŠ•à§àŠžà§‡àŠ› àŠ•à§°àŠżàŠŹàŠČৈ àŠŠàŠżàŠŻàŠŒàŠŸ àŠč’àŠŹà„€"</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"àŠàŠ‡ àŠàŠȘ্‌àŠŸà§‹àŠ• àŠ†àŠȘà§‹àŠšàŠŸà§° <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>àŠ€ àŠàŠ‡ àŠ…àŠšà§àŠźàŠ€àŠżàŠžàŠźà§‚àŠč àŠàŠ•à§àŠžà§‡àŠ› àŠ•à§°àŠżàŠŹàŠČৈ àŠ…àŠšà§àŠźàŠ€àŠż àŠŠàŠżàŠŻàŠŒàŠŸ àŠč’àŠŹ"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;àŠ• àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ«’àŠšà§° àŠȘà§°àŠŸ àŠàŠ‡ àŠ€àŠ„à§àŠŻàŠ–àŠżàŠšàŠż àŠàŠ•à§àŠžà§‡àŠ› àŠ•à§°àŠŸà§° àŠ…àŠšà§àŠźàŠ€àŠż àŠŠàŠżàŠŻàŠŒàŠ•"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"àŠ•à§à§°àŠ›-àŠĄàŠżàŠ­àŠŸàŠ‡àŠš àŠžà§‡à§±àŠŸàŠžàŠźà§‚àŠč"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g>àŠ àŠ†àŠȘà§‹àŠšàŠŸà§° <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>à§° àŠčৈ àŠ†àŠȘà§‹àŠšàŠŸà§° àŠĄàŠżàŠ­àŠŸàŠ‡àŠšàŠžàŠźà§‚àŠčà§° àŠźàŠŸàŠœàŠ€ àŠàŠȘ্‌ àŠ·à§àŠŸà§à§°à§€àŠź àŠ•à§°àŠŸà§° àŠŹàŠŸàŠŹà§‡ àŠ…àŠšà§à§°à§‹àŠ§ àŠœàŠšàŠŸàŠ‡àŠ›à§‡"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;àŠ• àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ«’àŠšà§° àŠȘà§°àŠŸ àŠàŠ‡ àŠ€àŠ„à§àŠŻàŠ–àŠżàŠšàŠż àŠàŠ•à§àŠžà§‡àŠ› àŠ•à§°àŠŸà§° àŠ…àŠšà§àŠźàŠ€àŠż àŠŠàŠżàŠŻàŠŒàŠ•"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play àŠžà§‡à§±àŠŸ"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g>àŠ àŠ†àŠȘà§‹àŠšàŠŸà§° <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>à§° àŠčৈ àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ«’àŠšà§° àŠ«àŠŸ’, àŠźàŠżàŠĄàŠżàŠŻàŠŒàŠŸ àŠ†à§°à§ àŠœàŠŸàŠšàŠšà§€ àŠàŠ•à§àŠžà§‡àŠ› àŠ•à§°àŠŸà§° àŠŹàŠŸàŠŹà§‡ àŠ…àŠšà§à§°à§‹àŠ§ àŠœàŠšàŠŸàŠ‡àŠ›à§‡"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt;àŠ• àŠàŠ‡ àŠ•àŠŸà§°à§àŠŻàŠŸà§‹ àŠžàŠźà§àŠȘàŠŸàŠŠàŠš àŠ•à§°àŠżàŠŹàŠČৈ àŠŠàŠżàŠŹàŠšà§‡?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g>àŠ àŠ†àŠȘà§‹àŠšàŠŸà§° <xliff:g id="DEVICE_NAME">%2$s</xliff:g>à§° àŠčৈ àŠšàŠżàŠ•àŠŸà§±à§°à§àŠ€à§€ àŠĄàŠżàŠ­àŠŸàŠ‡àŠšàŠ€ àŠàŠȘ্‌ àŠ†à§°à§ àŠ›àŠżàŠ·à§àŠŸà§‡àŠźà§° àŠ…àŠšà§àŠŻ àŠžà§àŠŹàŠżàŠ§àŠŸàŠžàŠźà§‚àŠč àŠ·à§àŠŸà§à§°à§€àŠź àŠ•à§°àŠŸà§° àŠ…àŠšà§àŠźàŠ€àŠż àŠŠàŠżàŠŹàŠČৈ àŠ…àŠšà§à§°à§‹àŠ§ àŠœàŠšàŠŸàŠ‡àŠ›à§‡"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"àŠĄàŠżàŠ­àŠŸàŠ‡àŠš"</string>
diff --git a/packages/CompanionDeviceManager/res/values-az/strings.xml b/packages/CompanionDeviceManager/res/values-az/strings.xml
index 56fad60..9f28a5a 100644
--- a/packages/CompanionDeviceManager/res/values-az/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-az/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"izləyin"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; tərəfindən idarə ediləcək <xliff:g id="PROFILE_NAME">%1$s</xliff:g> seçin"</string>
     <string name="summary_watch" msgid="898569637110705523">"Tətbiq <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazını idarə etmək üçün lazımdır. <xliff:g id="APP_NAME">%2$s</xliff:g> zəng edənin adı kimi məlumatları sinxronlaßdıracaq, bildirißlərə giriß edəcək, habelə Telefon, SMS, Kontaktlar, Təqvim, Zəng qeydləri və Yaxınlıqdakı cihazlar üzrə icazələrə daxil olacaq."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Bu tətbiq zəng edənin adı kimi məlumatları sinxronlaßdıra, <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> bu icazələrə daxil ola biləcək"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; tətbiqinə &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; cihazını idarə etmək icazəsi verilsin?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"eynək"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Bu tətbiq <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazını idarə etmək üçün lazımdır. <xliff:g id="APP_NAME">%2$s</xliff:g> bildirißlərə, Telefon, SMS, Kontaktlar, Mikrofon və Yaxınlıqdakı cihazlar icazələrinə giriß əldə edəcək."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Bu tətbiq <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> bu icazələrə daxil ola biləcək"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; tətbiqinə telefonunuzdan bu məlumata giriƟ icazəsi verin"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Cihazlararası xidmətlər"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> adından cihazlar arasında tətbiqləri yayımlamaq icazəsi istəyir"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; tətbiqinə telefonunuzdan bu məlumata giriƟ icazəsi verin"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play xidmətləri"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> adından telefonun foto, media və bildirißlərinə giriß icazəsi istəyir"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; cihazına bu əməliyyatı yerinə yetirmək icazəsi verilsin?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="DEVICE_NAME">%2$s</xliff:g> adından tətbiq və digər sistem funksiyalarını yaxınlıqdakı cihazlara yayımlamaq icazəsi sitəyir"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"cihaz"</string>
diff --git a/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml b/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml
index 457abf9..c612a1b 100644
--- a/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"sat"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Odaberite <xliff:g id="PROFILE_NAME">%1$s</xliff:g> kojim će upravljati aplikacija &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Ova aplikacija je potrebna za upravljanje uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> će dobiti dozvolu za sinhronizovanje informacija, poput osobe koja upućuje poziv, za interakciju sa obaveštenjima i pristup dozvolama za telefon, SMS, kontakte, kalendar, evidencije poziva i uređaje u blizini."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Ovoj aplikaciji će biti dozvoljeno da sinhronizuje podatke, poput imena osobe koja upućuje poziv, i pristupa tim dozvolama na vašem uređaju (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>)"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Ćœelite li da dozvolite da &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; upravlja uređajem &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"naočare"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Ova aplikacija je potrebna za upravljanje uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> će dobiti dozvolu za interakciju sa obaveštenjima i pristup dozvolama za telefon, SMS, kontakte, mikrofon i uređaje u blizini."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Ovoj aplikaciji će biti dozvoljeno da pristupa ovim dozvolama na vašem uređaju (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>)"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Dozvolite da &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; pristupa ovim informacijama sa telefona"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Usluge na više uređaja"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> zahteva dozvolu u ime uređaja <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> za strimovanje aplikacija između uređaja"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Dozvolite da &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; pristupa ovim informacijama sa telefona"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play usluge"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> zahteva dozvolu u ime uređaja <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> za pristup slikama, medijskom sadrĆŸaju i obaveštenjima sa telefona"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Ćœelite li da dozvolite da &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; obavi ovu radnju?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> zahteva dozvolu u ime uređaja <xliff:g id="DEVICE_NAME">%2$s</xliff:g> da strimuje aplikacije i druge sistemske funkcije na uređaje u blizini"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"uređaj"</string>
diff --git a/packages/CompanionDeviceManager/res/values-be/strings.xml b/packages/CompanionDeviceManager/res/values-be/strings.xml
index 335ec44..ea62cd5 100644
--- a/packages/CompanionDeviceManager/res/values-be/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-be/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"ĐłĐ°ĐŽĐ·Ń–ĐœĐœŃ–Đș"</string>
     <string name="chooser_title" msgid="2262294130493605839">"ВыбДрыцД ĐżŃ€Ń‹Đ»Đ°ĐŽŃƒ (<xliff:g id="PROFILE_NAME">%1$s</xliff:g>), яĐșĐŸĐč буЎзД ĐșіраĐČаць ĐżŃ€Đ°ĐłŃ€Đ°ĐŒĐ° &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Гэта ĐżŃ€Đ°ĐłŃ€Đ°ĐŒĐ° ĐœĐ”Đ°Đ±Ń…ĐŸĐŽĐœĐ°Ń ĐŽĐ»Ń ĐșіраĐČĐ°ĐœĐœŃ прылаЎаĐč \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". <xliff:g id="APP_NAME">%2$s</xliff:g> Đ·ĐŒĐŸĐ¶Đ° ŃŃ–ĐœŃ…Ń€Đ°ĐœŃ–Đ·Đ°ĐČаць Ń–ĐœŃ„Đ°Ń€ĐŒĐ°Ń†Ń‹ŃŽ (ĐœĐ°ĐżŃ€Ń‹ĐșлаЎ, Ń–ĐŒŃ Ń‚Đ°ĐłĐŸ, Ń…Ń‚ĐŸ Đ·ĐČĐŸĐœŃ–Ń†ŃŒ), ŃƒĐ·Đ°Đ”ĐŒĐ°ĐŽĐ·Đ”ĐčĐœŃ–Ń‡Đ°Ń†ŃŒ Đ· ĐČĐ°ŃˆŃ‹ĐŒŃ– апаĐČŃŃˆŃ‡ŃĐœĐœŃĐŒŃ–, а таĐșŃĐ°ĐŒĐ° Đ°Ń‚Ń€Ń‹ĐŒĐ°Đ” ĐŽĐŸŃŃ‚ŃƒĐż Ўа Ń‚ŃĐ»Đ”Ń„ĐŸĐœĐ°, SMS, ĐșĐ°ĐœŃ‚Đ°Đșтаў, ĐșĐ°Đ»Đ”ĐœĐŽĐ°Ń€Đ°, Đ¶ŃƒŃ€ĐœĐ°Đ»Đ°Ńž ĐČыĐșліĐșаў і прылаЎ ĐżĐ°Đ±Đ»Ń–Đ·Ńƒ."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Гэта ĐżŃ€Đ°ĐłŃ€Đ°ĐŒĐ° Đ·ĐŒĐŸĐ¶Đ° ŃŃ–ĐœŃ…Ń€Đ°ĐœŃ–Đ·Đ°ĐČаць Ń–ĐœŃ„Đ°Ń€ĐŒĐ°Ń†Ń‹ŃŽ (ĐœĐ°ĐżŃ€Ń‹ĐșлаЎ, Ń–ĐŒŃ Ń‚Đ°ĐłĐŸ, Ń…Ń‚ĐŸ Đ·ĐČĐŸĐœŃ–Ń†ŃŒ) ĐœĐ° ĐČашаĐč прылаЎзД \"<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>\" і Đ°Ń‚Ń€Ń‹ĐŒĐ°Đ” ĐœĐ°ŃŃ‚ŃƒĐżĐœŃ‹Ń ЎазĐČĐŸĐ»Ń‹"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"ДазĐČĐŸĐ»Ń–Ń†ŃŒ ĐżŃ€Đ°ĐłŃ€Đ°ĐŒĐ” &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ĐșіраĐČаць прылаЎаĐč &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"аĐșŃƒĐ»ŃŃ€Ń‹"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Гэта ĐżŃ€Đ°ĐłŃ€Đ°ĐŒĐ° ĐœĐ”Đ°Đ±Ń…ĐŸĐŽĐœĐ°Ń ĐŽĐ»Ń ĐșіраĐČĐ°ĐœĐœŃ прылаЎаĐč \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". <xliff:g id="APP_NAME">%2$s</xliff:g> Đ·ĐŒĐŸĐ¶Đ° ŃžĐ·Đ°Đ”ĐŒĐ°ĐŽĐ·Đ”ĐčĐœŃ–Ń‡Đ°Ń†ŃŒ Đ· ĐČĐ°ŃˆŃ‹ĐŒŃ– апаĐČŃŃˆŃ‡ŃĐœĐœŃĐŒŃ– і Đ°Ń‚Ń€Ń‹ĐŒĐ°Đ” ĐŽĐŸŃŃ‚ŃƒĐż Ўа Ń‚ŃĐ»Đ”Ń„ĐŸĐœĐ°, SMS, ĐșĐ°ĐœŃ‚Đ°Đșтаў, ĐŒŃ–ĐșŃ€Đ°Ń„ĐŸĐœĐ° і прылаЎ ĐżĐ°Đ±Đ»Ń–Đ·Ńƒ."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Гэта ĐżŃ€Đ°ĐłŃ€Đ°ĐŒĐ° буЎзД ĐŒĐ”Ń†ŃŒ ĐœĐ° ĐČашаĐč прылаЎзД \"<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>\" ĐœĐ°ŃŃ‚ŃƒĐżĐœŃ‹Ń ЎазĐČĐŸĐ»Ń‹"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"ДазĐČĐŸĐ»ŃŒŃ†Đ” ĐżŃ€Đ°ĐłŃ€Đ°ĐŒĐ” &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ĐŒĐ”Ń†ŃŒ ĐŽĐŸŃŃ‚ŃƒĐż Ўа гэтаĐč Ń–ĐœŃ„Đ°Ń€ĐŒĐ°Ń†Ń‹Ń– Đ· ĐČашага Ń‚ŃĐ»Đ”Ń„ĐŸĐœĐ°"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"СэрĐČісы ĐŽĐ»Ń ĐœĐ”ĐșĐ°Đ»ŃŒĐșіх прылаЎ"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"ĐŸŃ€Đ°ĐłŃ€Đ°ĐŒĐ° \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" запытĐČаД ЎазĐČĐŸĐ» аЎ Ń–ĐŒŃ ĐČашаĐč прылаЎы \"<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>\" ĐœĐ° Ń‚Ń€Đ°ĐœŃĐ»ŃŃ†Ń‹ŃŽ ĐżŃ€Đ°ĐłŃ€Đ°ĐŒ ĐżĐ°ĐŒŃ–Đ¶ ĐČĐ°ŃˆŃ‹ĐŒŃ– ĐżŃ€Ń‹Đ»Đ°ĐŽĐ°ĐŒŃ–"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"ДазĐČĐŸĐ»ŃŒŃ†Đ” ĐżŃ€Đ°ĐłŃ€Đ°ĐŒĐ” &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ĐŒĐ”Ń†ŃŒ ĐŽĐŸŃŃ‚ŃƒĐż Ўа гэтаĐč Ń–ĐœŃ„Đ°Ń€ĐŒĐ°Ń†Ń‹Ń– Đ· ĐČашага Ń‚ŃĐ»Đ”Ń„ĐŸĐœĐ°"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"СэрĐČісы Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"ĐŸŃ€Đ°ĐłŃ€Đ°ĐŒĐ° \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" запытĐČаД ЎазĐČĐŸĐ» аЎ Ń–ĐŒŃ ĐČашаĐč прылаЎы \"<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>\" ĐœĐ° ĐŽĐŸŃŃ‚ŃƒĐż Ўа Ń„ĐŸŃ‚Đ°, ĐŒĐ”ĐŽŃ‹ŃŃ„Đ°Đčлаў і апаĐČŃŃˆŃ‡ŃĐœĐœŃŃž ĐœĐ° ĐČĐ°ŃˆŃ‹ĐŒ Ń‚ŃĐ»Đ”Ń„ĐŸĐœĐ”"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"ДазĐČĐŸĐ»Ń–Ń†ŃŒ прылаЎзД &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ĐČыĐșĐ°ĐœĐ°Ń†ŃŒ гэта ĐŽĐ·Đ”ŃĐœĐœĐ”?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"ĐŸŃ€Đ°ĐłŃ€Đ°ĐŒĐ° \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" запытĐČаД ЎазĐČĐŸĐ» аЎ Ń–ĐŒŃ ĐČашаĐč прылаЎы \"<xliff:g id="DEVICE_NAME">%2$s</xliff:g>\" ĐœĐ° ĐżĐ”Ń€Đ°ĐŽĐ°Ń‡Ńƒ ĐżĐ»Ń‹ĐœĐœŃŽ Đ·ĐŒĐ”ŃŃ†Ń–ĐČа ĐżŃ€Đ°ĐłŃ€Đ°ĐŒ і Ń–ĐœŃˆŃ‹Ń… Ń„ŃƒĐœĐșцыĐč ŃŃ–ŃŃ‚ŃĐŒŃ‹ ĐœĐ° прылаЎы ĐżĐ°Đ±Đ»Ń–Đ·Ńƒ"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"прылаЎа"</string>
diff --git a/packages/CompanionDeviceManager/res/values-bg/strings.xml b/packages/CompanionDeviceManager/res/values-bg/strings.xml
index ae26942..0dbfb77 100644
--- a/packages/CompanionDeviceManager/res/values-bg/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-bg/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"Ń‡Đ°ŃĐŸĐČĐœĐžĐș"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Đ˜Đ·Đ±Đ”Ń€Đ”Ń‚Đ” ŃƒŃŃ‚Ń€ĐŸĐčстĐČĐŸ (<xliff:g id="PROFILE_NAME">%1$s</xliff:g>), ĐșĐŸĐ”Ń‚ĐŸ Ўа сД упраĐČĐ»ŃĐČа ĐŸŃ‚ &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"ĐąĐŸĐČа ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” Đ” ĐœĐ”ĐŸĐ±Ń…ĐŸĐŽĐžĐŒĐŸ за упраĐČĐ»Đ”ĐœĐžĐ” ĐœĐ° <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> щД ĐżĐŸĐ»ŃƒŃ‡Đž праĐČĐŸ Ўа ŃĐžĐœŃ…Ń€ĐŸĐœĐžĐ·ĐžŃ€Đ° Ń€Đ°Đ·Đ»ĐžŃ‡ĐœĐ° ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ, ĐșĐ°Ń‚ĐŸ ĐœĐ°ĐżŃ€ĐžĐŒĐ”Ń€ ĐžĐŒĐ”Ń‚ĐŸ ĐœĐ° ĐŸĐ±Đ°Đ¶ĐŽĐ°Ń‰ĐžŃ сД, Ўа ĐČĐ·Đ°ĐžĐŒĐŸĐŽĐ”ĐčстĐČа с ОзĐČĐ”ŃŃ‚ĐžŃŃ‚Đ° ĐČĐž Đž ĐŽĐŸŃŃ‚ŃŠĐż ĐŽĐŸ Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžŃŃ‚Đ° за Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐ°, SMS ŃŃŠĐŸĐ±Ń‰Đ”ĐœĐžŃŃ‚Đ°, ĐșĐŸĐœŃ‚Đ°ĐșтОтД, ĐșĐ°Đ»Đ”ĐœĐŽĐ°Ń€Đ°, спОсъцОтД с ĐŸĐ±Đ°Đ¶ĐŽĐ°ĐœĐžŃŃ‚Đ° Đž ŃƒŃŃ‚Ń€ĐŸĐčстĐČата ĐČ Đ±Đ»ĐžĐ·ĐŸŃŃ‚."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"ĐąĐŸĐČа ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” щД ĐżĐŸĐ»ŃƒŃ‡Đž праĐČĐŸ Ўа ŃĐžĐœŃ…Ń€ĐŸĐœĐžĐ·ĐžŃ€Đ° Ń€Đ°Đ·Đ»ĐžŃ‡ĐœĐ° ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ, ĐșĐ°Ń‚ĐŸ ĐœĐ°ĐżŃ€ĐžĐŒĐ”Ń€ ĐžĐŒĐ”Ń‚ĐŸ ĐœĐ° ĐŸĐ±Đ°Đ¶ĐŽĐ°Ń‰ĐžŃ сД, Đž ĐŽĐŸŃŃ‚ŃŠĐż ĐŽĐŸ ŃĐ»Đ”ĐŽĐœĐžŃ‚Đ” Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžŃ за ĐČашоя <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Đ Đ°Đ·Ń€Đ”ŃˆĐ°ĐČатД лО ĐœĐ° &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; Ўа упраĐČĐ»ŃĐČа ŃƒŃŃ‚Ń€ĐŸĐčстĐČĐŸŃ‚ĐŸ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"ĐŸŃ‡ĐžĐ»Đ°Ń‚Đ°"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"ĐąĐŸĐČа ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” Đ” ĐœĐ”ĐŸĐ±Ń…ĐŸĐŽĐžĐŒĐŸ за упраĐČĐ»Đ”ĐœĐžĐ” ĐœĐ° <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. ĐŸŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ”Ń‚ĐŸ <xliff:g id="APP_NAME">%2$s</xliff:g> щД ĐżĐŸĐ»ŃƒŃ‡Đž праĐČĐŸ Ўа ĐČĐ·Đ°ĐžĐŒĐŸĐŽĐ”ĐčстĐČа с ОзĐČĐ”ŃŃ‚ĐžŃŃ‚Đ° ĐČĐž, ĐșаĐșŃ‚ĐŸ Đž ĐŽĐŸŃŃ‚ŃŠĐż ĐŽĐŸ Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžŃŃ‚Đ° за Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐ°, SMS ŃŃŠĐŸĐ±Ń‰Đ”ĐœĐžŃŃ‚Đ°, ĐșĐŸĐœŃ‚Đ°ĐșтОтД, ĐŒĐžĐșŃ€ĐŸŃ„ĐŸĐœĐ° Đž ŃƒŃŃ‚Ń€ĐŸĐčстĐČата ĐČ Đ±Đ»ĐžĐ·ĐŸŃŃ‚."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"ĐąĐŸĐČа ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” щД ĐžĐŒĐ° ĐŽĐŸŃŃ‚ŃŠĐż ĐŽĐŸ ŃĐ»Đ”ĐŽĐœĐžŃ‚Đ” Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžŃ за ĐČашоя <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>:"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Đ Đ°Đ·Ń€Đ”ŃˆĐ”Ń‚Đ” ĐœĐ° &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; Ўа ĐŸŃŃŠŃ‰Đ”ŃŃ‚ĐČяĐČа ĐŽĐŸŃŃ‚ŃŠĐż ĐŽĐŸ тазО ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ ĐŸŃ‚ Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐ° ĐČĐž"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"УслугО за Ń€Đ°Đ·Đ»ĐžŃ‡ĐœĐž ŃƒŃŃ‚Ń€ĐŸĐčстĐČа"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> ОсĐșа Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžĐ” ĐŸŃ‚ ĐžĐŒĐ”Ń‚ĐŸ ĐœĐ° <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> Ўа прДЎаĐČа ĐżĐŸŃ‚ĐŸŃ‡ĐœĐŸ ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃ ĐŒĐ”Đ¶ĐŽŃƒ ŃƒŃŃ‚Ń€ĐŸĐčстĐČата ĐČĐž"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Đ Đ°Đ·Ń€Đ”ŃˆĐ”Ń‚Đ” ĐœĐ° &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; Ўа ĐŸŃŃŠŃ‰Đ”ŃŃ‚ĐČяĐČа ĐŽĐŸŃŃ‚ŃŠĐż ĐŽĐŸ тазО ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ ĐŸŃ‚ Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐ° ĐČĐž"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"УслугО за Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> ОсĐșа Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžĐ” ĐŸŃ‚ ĐžĐŒĐ”Ń‚ĐŸ ĐœĐ° <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> за ĐŽĐŸŃŃ‚ŃŠĐż ĐŽĐŸ ŃĐœĐžĐŒĐșОтД, ĐŒŃƒĐ»Ń‚ĐžĐŒĐ”ĐŽĐžŃŃ‚Đ° Đž ОзĐČĐ”ŃŃ‚ĐžŃŃ‚Đ° ĐœĐ° Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐ° ĐČĐž"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Đ Đ°Đ·Ń€Đ”ŃˆĐ°ĐČатД лО ĐœĐ° &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; Ўа ĐżŃ€Đ”ĐŽĐżŃ€ĐžĐ”ĐŒĐ° Ń‚ĐŸĐČа ĐŽĐ”ĐčстĐČОД?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> ОсĐșа Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžĐ” ĐŸŃ‚ ĐžĐŒĐ”Ń‚ĐŸ ĐœĐ° <xliff:g id="DEVICE_NAME">%2$s</xliff:g> Ўа прДЎаĐČа ĐżĐŸŃ‚ĐŸŃ‡ĐœĐŸ ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃ Đž Юруго ŃĐžŃŃ‚Đ”ĐŒĐœĐž Ń„ŃƒĐœĐșцоо ĐșŃŠĐŒ ŃƒŃŃ‚Ń€ĐŸĐčстĐČа ĐČ Đ±Đ»ĐžĐ·ĐŸŃŃ‚"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"ŃƒŃŃ‚Ń€ĐŸĐčстĐČĐŸ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-bn/strings.xml b/packages/CompanionDeviceManager/res/values-bn/strings.xml
index 259a860..a4e5a3a6a 100644
--- a/packages/CompanionDeviceManager/res/values-bn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-bn/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"àŠ˜àŠĄàŠŒàŠż"</string>
     <string name="chooser_title" msgid="2262294130493605839">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> àŠŹà§‡àŠ›à§‡ àŠšàŠżàŠš àŠŻà§‡àŠŸàŠż &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; àŠźà§àŠŻàŠŸàŠšà§‡àŠœ àŠ•àŠ°àŠŹà§‡"</string>
     <string name="summary_watch" msgid="898569637110705523">"àŠ†àŠȘàŠšàŠŸàŠ° <xliff:g id="DEVICE_NAME">%1$s</xliff:g> àŠźà§àŠŻàŠŸàŠšà§‡àŠœ àŠ•àŠ°àŠ€à§‡ àŠàŠ‡ àŠ…à§àŠŻàŠŸàŠȘàŠŸàŠż àŠȘà§àŠ°àŠŻàŠŒà§‹àŠœàŠšà„€ <xliff:g id="APP_NAME">%2$s</xliff:g> àŠ…à§àŠŻàŠŸàŠȘàŠ•à§‡ àŠ•àŠČàŠŸàŠ°à§‡àŠ° àŠšàŠŸàŠź àŠ“ àŠ†àŠȘàŠšàŠŸàŠ° àŠŹàŠżàŠœà§àŠžàŠȘà§àŠ€àŠżàŠ° àŠžàŠŸàŠ„à§‡ àŠ‡àŠšà§àŠŸàŠŸàŠ°‌à§àŠŻàŠŸàŠ•à§àŠŸ àŠ•àŠ°àŠŸ àŠžàŠ‚àŠ•à§àŠ°àŠŸàŠšà§àŠ€ àŠ€àŠ„à§àŠŻ àŠžàŠżàŠ™à§àŠ•à§‡àŠ° àŠ…àŠšà§àŠźàŠ€àŠż àŠŠà§‡àŠ“àŠŻàŠŒàŠŸ àŠčàŠŹà§‡ àŠàŠŹàŠ‚ àŠ†àŠȘàŠšàŠŸàŠ° àŠ«à§‹àŠš, àŠàŠžàŠàŠźàŠàŠž, àŠȘàŠ°àŠżàŠšàŠżàŠ€àŠż, àŠ•à§àŠŻàŠŸàŠČà§‡àŠšà§àŠĄàŠŸàŠ°, àŠ•àŠČ àŠČàŠ— àŠàŠŹàŠ‚ àŠ†àŠ¶à§‡àŠȘàŠŸàŠ¶à§‡àŠ° àŠĄàŠżàŠ­àŠŸàŠ‡àŠž àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ° àŠ•àŠ°àŠŸàŠ° àŠ…àŠšà§àŠźàŠ€àŠżàŠ° àŠźàŠ€à§‹ àŠ€àŠ„à§àŠŻà§‡ àŠ…à§àŠŻàŠŸàŠ•à§àŠžà§‡àŠž àŠŠà§‡àŠ“àŠŻàŠŒàŠŸ àŠčàŠŹà§‡à„€"</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"àŠàŠ‡ àŠ…à§àŠŻàŠŸàŠȘàŠ•à§‡, àŠ•àŠČ àŠ•àŠ°àŠ›à§‡àŠš àŠàŠźàŠš àŠ•à§‹àŠšàŠ“ àŠŹà§àŠŻàŠ•à§àŠ€àŠżàŠ° àŠšàŠŸàŠźà§‡àŠ° àŠźàŠ€à§‹ àŠ€àŠ„à§àŠŻ àŠžàŠżàŠ™à§àŠ• àŠàŠŹàŠ‚ àŠ†àŠȘàŠšàŠŸàŠ° <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>-àŠ àŠàŠ‡àŠžàŠŹ àŠ…àŠšà§àŠźàŠ€àŠż àŠ…à§àŠŻàŠŸàŠ•à§àŠžà§‡àŠž àŠ•àŠ°àŠ€à§‡ àŠŠà§‡àŠ“àŠŻàŠŒàŠŸ àŠčàŠŹà§‡"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"àŠ†àŠȘàŠšàŠż àŠ•àŠż &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àŠźà§àŠŻàŠŸàŠšà§‡àŠœ àŠ•àŠ°àŠŸàŠ° àŠœàŠšà§àŠŻ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;-àŠ•à§‡ àŠ…àŠšà§àŠźàŠ€àŠż àŠŠà§‡àŠŹà§‡àŠš?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"àŠšàŠ¶àŠźàŠŸ"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> àŠźà§àŠŻàŠŸàŠšà§‡àŠœ àŠ•àŠ°àŠ€à§‡ àŠàŠ‡ àŠ…à§àŠŻàŠŸàŠȘ àŠŠàŠ°àŠ•àŠŸàŠ°à„€ <xliff:g id="APP_NAME">%2$s</xliff:g>-àŠ•à§‡ àŠ†àŠȘàŠšàŠŸàŠ° àŠŹàŠżàŠœà§àŠžàŠȘà§àŠ€àŠżàŠ° àŠžàŠŸàŠ„à§‡ àŠ‡àŠšà§àŠŸàŠŸàŠ°‌à§àŠŻàŠŸàŠ•à§àŠŸ àŠ•àŠ°àŠŸàŠ° àŠàŠŹàŠ‚ àŠ«à§‹àŠš, àŠàŠžàŠàŠźàŠàŠž, àŠȘàŠ°àŠżàŠšàŠżàŠ€àŠż, àŠźàŠŸàŠ‡àŠ•à§àŠ°à§‹àŠ«à§‹àŠš àŠ“ àŠ†àŠ¶à§‡àŠȘàŠŸàŠ¶à§‡àŠ° àŠĄàŠżàŠ­àŠŸàŠ‡àŠžà§‡àŠ° àŠ…àŠšà§àŠźàŠ€àŠż àŠ…à§àŠŻàŠŸàŠ•à§àŠžà§‡àŠž àŠ•àŠ°àŠ€à§‡ àŠŠà§‡àŠ“àŠŻàŠŒàŠŸ àŠčàŠŹà§‡à„€"</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"àŠàŠ‡ àŠ…à§àŠŻàŠŸàŠȘ àŠ†àŠȘàŠšàŠŸàŠ° <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>-àŠ àŠàŠ‡àŠžàŠŹ àŠ…àŠšà§àŠźàŠ€àŠż àŠ…à§àŠŻàŠŸàŠ•à§àŠžà§‡àŠž àŠ•àŠ°àŠ€à§‡ àŠȘàŠŸàŠ°àŠŹà§‡"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"àŠ†àŠȘàŠšàŠŸàŠ° àŠ«à§‹àŠš àŠ„à§‡àŠ•à§‡ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àŠ…à§àŠŻàŠŸàŠȘàŠ•à§‡ àŠàŠ‡ àŠ€àŠ„à§àŠŻ àŠ…à§àŠŻàŠŸàŠ•à§àŠžà§‡àŠž àŠ•àŠ°àŠŸàŠ° àŠ…àŠšà§àŠźàŠ€àŠż àŠŠàŠżàŠš"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"àŠ•à§àŠ°àŠž-àŠĄàŠżàŠ­àŠŸàŠ‡àŠž àŠȘàŠ°àŠżàŠ·à§‡àŠŹàŠŸ"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"àŠ†àŠȘàŠšàŠŸàŠ° àŠĄàŠżàŠ­àŠŸàŠ‡àŠžàŠ—à§àŠČàŠżàŠ° àŠźàŠ§à§àŠŻà§‡ àŠ…à§àŠŻàŠŸàŠȘ àŠžà§àŠŸà§àŠ°àŠżàŠź àŠ•àŠ°àŠŸàŠ° àŠœàŠšà§àŠŻ <xliff:g id="APP_NAME">%1$s</xliff:g>, <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>-àŠàŠ° àŠčàŠŻàŠŒà§‡ àŠ…àŠšà§àŠźàŠ€àŠż àŠšàŠŸàŠ‡àŠ›à§‡"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"àŠ†àŠȘàŠšàŠŸàŠ° àŠ«à§‹àŠš àŠ„à§‡àŠ•à§‡ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;-àŠ•à§‡ àŠàŠ‡ àŠ€àŠ„à§àŠŻ àŠ…à§àŠŻàŠŸàŠ•à§àŠžà§‡àŠž àŠ•àŠ°àŠŸàŠ° àŠ…àŠšà§àŠźàŠ€àŠż àŠŠàŠżàŠš"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play àŠȘàŠ°àŠżàŠ·à§‡àŠŹàŠŸ"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"àŠ†àŠȘàŠšàŠŸàŠ° àŠ«à§‹àŠšà§‡àŠ° àŠ«àŠŸà§‹, àŠźàŠżàŠĄàŠżàŠŻàŠŒàŠŸ àŠàŠŹàŠ‚ àŠ€àŠ„à§àŠŻ àŠ…à§àŠŻàŠŸàŠ•à§àŠžà§‡àŠž àŠ•àŠ°àŠŸàŠ° àŠœàŠšà§àŠŻ <xliff:g id="APP_NAME">%1$s</xliff:g>, <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>-àŠàŠ° àŠčàŠŻàŠŒà§‡ àŠ…àŠšà§àŠźàŠ€àŠż àŠšàŠŸàŠ‡àŠ›à§‡"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt;àŠ•à§‡ àŠàŠ‡ àŠ…à§àŠŻàŠŸàŠ•àŠ¶àŠš àŠ•àŠ°àŠ€à§‡ àŠŠà§‡àŠŹà§‡àŠš?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"àŠ†àŠ¶à§‡àŠȘàŠŸàŠ¶à§‡àŠ° àŠĄàŠżàŠ­àŠŸàŠ‡àŠžà§‡ àŠ…à§àŠŻàŠŸàŠȘ àŠ“ àŠ…àŠšà§àŠŻàŠŸàŠšà§àŠŻ àŠžàŠżàŠžà§àŠŸà§‡àŠź àŠ«àŠżàŠšàŠŸàŠ° àŠžà§àŠŸà§àŠ°àŠżàŠź àŠ•àŠ°àŠŸàŠ° àŠœàŠšà§àŠŻ àŠ†àŠȘàŠšàŠŸàŠ° <xliff:g id="DEVICE_NAME">%2$s</xliff:g>-àŠàŠ° àŠčàŠŻàŠŒà§‡ <xliff:g id="APP_NAME">%1$s</xliff:g> àŠ…àŠšà§àŠźàŠ€àŠż àŠšà§‡àŠŻàŠŒà§‡ àŠ…àŠšà§àŠ°à§‹àŠ§ àŠ•àŠ°àŠ›à§‡"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"àŠĄàŠżàŠ­àŠŸàŠ‡àŠž"</string>
diff --git a/packages/CompanionDeviceManager/res/values-bs/strings.xml b/packages/CompanionDeviceManager/res/values-bs/strings.xml
index 1b6970d..d49778b 100644
--- a/packages/CompanionDeviceManager/res/values-bs/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-bs/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"sat"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Odaberite uređaj \"<xliff:g id="PROFILE_NAME">%1$s</xliff:g>\" kojim će upravljati aplikacija &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Ova aplikacija je potrebna za upravljanje uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikaciji <xliff:g id="APP_NAME">%2$s</xliff:g> će biti dozvoljeni sinhroniziranje informacija, kao što je ime osobe koja upućuje poziv, interakcija s obavještenjima i pristup odobrenjima za Telefon, SMS, Kontakte, Kalendar, Zapisnike poziva i Uređaje u blizini."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Aplikaciji će biti dozvoljeni sinhroniziranje informacija, kao što je ime osobe koja upućuje poziv i pristup ovim odobrenjima na uređaju <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Dozvoliti aplikaciji &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; da upravlja uređajem &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"naočale"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Ova aplikacija je potrebna za upravljanje uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikaciji <xliff:g id="APP_NAME">%2$s</xliff:g> će biti dozvoljena interakcija s obavještenjima i pristup odobrenjima za Telefon, SMS, Kontakte, Mikrofon i Uređaje u blizini."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Aplikaciji će biti dozvoljen pristup ovim odobrenjima na uređaju <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Dozvolite da aplikacija &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; pristupa ovim informacijama s telefona"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Usluga na više uređaja"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> u ime uređaja <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> zahtijeva odobrenje da prenosi aplikacije između vaših uređaja"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Dozvolite aplikaciji &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; da pristupa ovim informacijama s vašeg telefona"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play usluge"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> u ime uređaja <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> zahtijeva odobrenje da pristupi fotografijama, medijima i obavještenjima na telefonu"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Dozvoliti uređaju &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; da poduzme ovu radnju?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> u ime uređaja <xliff:g id="DEVICE_NAME">%2$s</xliff:g> traĆŸi odobrenje da prenosi aplikacije i druge funkcije sistema na uređajima u blizini"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"uređaj"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ca/strings.xml b/packages/CompanionDeviceManager/res/values-ca/strings.xml
index 6b9238f..7ca608f 100644
--- a/packages/CompanionDeviceManager/res/values-ca/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ca/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"rellotge"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Tria un <xliff:g id="PROFILE_NAME">%1$s</xliff:g> perquè el gestioni &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Aquesta aplicació es necessita per gestionar el dispositiu (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>). <xliff:g id="APP_NAME">%2$s</xliff:g> tindrà permís per sincronitzar informació, com ara el nom d\'algú que truca, per interaccionar amb les teves notificacions i accedir al telèfon, als SMS, als contactes, al calendari, als registres de trucades i als dispositius propers."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Aquesta aplicació podrà sincronitzar informació, com ara el nom d\'algú que truca, i accedir a aquests permisos al dispositiu (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>)"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Permet que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; gestioni &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"ulleres"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Aquesta aplicació es necessita per gestionar el dispositiu (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>). <xliff:g id="APP_NAME">%2$s</xliff:g> tindrà permís per interaccionar amb les teves notificacions i accedir al telèfon, als SMS, als contactes, al micròfon i als dispositius propers."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Aquesta aplicació podrà accedir a aquests permisos del dispositiu (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>)"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Permet que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; accedeixi a aquesta informació del telèfon"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Serveis multidispositiu"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> demana permís en nom del teu dispositiu (<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>) per reproduir en continu aplicacions entre els dispositius"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Permet que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; accedeixi a aquesta informació del telèfon"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Serveis de Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> demana permís en nom del teu dispositiu (<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>) per accedir a les fotos, el contingut multimèdia i les notificacions del telèfon"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Vols permetre que &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; dugui a terme aquesta acció?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> sol·licita permís en nom del teu dispositiu (<xliff:g id="DEVICE_NAME">%2$s</xliff:g>) per reproduir en continu aplicacions i altres funcions del sistema en dispositius propers"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"dispositiu"</string>
diff --git a/packages/CompanionDeviceManager/res/values-cs/strings.xml b/packages/CompanionDeviceManager/res/values-cs/strings.xml
index beb6060..13e71dd 100644
--- a/packages/CompanionDeviceManager/res/values-cs/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-cs/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"hodinky"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Vyberte zaƙízení <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, které chcete spravovat pomocí aplikace &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Tato aplikace je nutná ke správě zaƙízení <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> bude moci synchronizovat údaje, jako je jméno volajícího, interagovat s vašimi oznámeními a získat pƙístup k vašim oprávněním k telefonu, SMS, kontaktĆŻm, kalendáƙi, seznamĆŻm hovorĆŻ a zaƙízením v okolí."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Tato aplikace bude moci synchronizovat údaje, jako je jméno volajícího, a získat pƙístup k těmto oprávněním v <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Povolit aplikaci &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; spravovat zaƙízení &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"brýle"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Tato aplikace je nutná ke správě zaƙízení <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> bude moci interagovat s vašimi oznámeními a získat pƙístup k vašim oprávněním k telefonu, SMS, kontaktĆŻm, mikrofonu a zaƙízením v okolí."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Tato aplikace bude mít ve vašem <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> povolený pƙístup k těmto oprávněním:"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Povolte aplikaci &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; pƙístup k těmto informacím z vašeho telefonu"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"SluĆŸby pro více zaƙízení"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> poĆŸaduje za vaše zaƙízení <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> oprávnění ke streamování aplikací mezi zaƙízeními"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Povolte aplikaci &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; pƙístup k těmto informacím z vašeho telefonu"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"SluĆŸby Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> poĆŸaduje za vaše zaƙízení <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> oprávnění k pƙístupu k fotkám, médiím a oznámením v telefonu"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Povolit zaƙízení &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; podniknout tuto akci?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> ĆŸádá jménem vašeho zaƙízení <xliff:g id="DEVICE_NAME">%2$s</xliff:g> o oprávnění streamovat aplikace a další systémové funkce do zaƙízení v okolí"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"zaƙízení"</string>
diff --git a/packages/CompanionDeviceManager/res/values-da/strings.xml b/packages/CompanionDeviceManager/res/values-da/strings.xml
index 40c93bd..de8ee48 100644
--- a/packages/CompanionDeviceManager/res/values-da/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-da/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"ur"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Vælg det <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, som skal administreres af &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Du skal bruge denne app for at administrere <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får tilladelse til at interagere med dine notifikationer og synkronisere oplysninger som f.eks. navnet på en person, der ringer, og appen får adgang til dine tilladelser for Opkald, Sms, Kalender, Opkaldshistorik og Enheder i nærheden."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Denne app får tilladelse til at synkronisere oplysninger, f.eks. navne på dem, der ringer, og adgang til disse tilladelser på din <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Vil du tillade, at &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; administrerer &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"briller"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Du skal bruge denne app for at administrere <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får tilladelse til at interagere med dine notifikationer og tilgå tilladelserne Telefon, Sms, Kontakter, Mikrofon og Enheder i nærheden."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Denne app får adgang til disse tilladelser på din <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Giv &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; adgang til disse oplysninger fra din telefon"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Tjenester, som kan tilsluttes en anden enhed"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> anmoder om tilladelse på vegne af din <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> til at streame apps mellem dine enheder"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Tillad, at &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; får adgang til disse oplysninger fra din telefon"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play-tjenester"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> anmoder om tilladelse på vegne af din <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> til at få adgang til din telefons billeder, medier og notifikationer"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Vil du tillade, at &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; foretager denne handling?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> anmoder om tilladelse på vegne af din <xliff:g id="DEVICE_NAME">%2$s</xliff:g> til at streame apps og andre systemfunktioner til enheder i nærheden"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"enhed"</string>
diff --git a/packages/CompanionDeviceManager/res/values-de/strings.xml b/packages/CompanionDeviceManager/res/values-de/strings.xml
index 99cf792..736ef5f 100644
--- a/packages/CompanionDeviceManager/res/values-de/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-de/strings.xml
@@ -22,20 +22,24 @@
     <string name="chooser_title" msgid="2262294130493605839">"Gerät „<xliff:g id="PROFILE_NAME">%1$s</xliff:g>“ auswählen, das von &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; verwaltet werden soll"</string>
     <!-- no translation found for summary_watch (898569637110705523) -->
     <skip />
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Diese App darf dann Daten wie den Namen eines Anrufers synchronisieren und auf folgende Berechtigungen auf deinem <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> zugreifen"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Zulassen, dass &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; das Gerät &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; verwalten darf"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"Glass-Geräte"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Diese App wird zur Verwaltung deines Geräts (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) benötigt. <xliff:g id="APP_NAME">%2$s</xliff:g> darf mit deinen Benachrichtigungen interagieren und auf die Berechtigungen „Telefon“, „SMS“, „Kontakte“, „Mikrofon“ und „Geräte in der Nähe“ zugreifen."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Diese App darf dann auf die folgenden Berechtigungen auf deinem <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> zugreifen:"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; Zugriff auf diese Informationen von deinem Smartphone gewähren"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Geräteübergreifende Dienste"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> bittet für dein <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> um die Berechtigung zum Streamen von Apps zwischen deinen Geräten"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; Zugriff auf diese Informationen von deinem Smartphone gewähren"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play-Dienste"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> bittet im Namen deines <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> um die Berechtigung zum Zugriff auf die Fotos, Medien und Benachrichtigungen deines Smartphones"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Darf das Gerät &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; diese Aktion ausführen?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> bittet für dein Gerät (<xliff:g id="DEVICE_NAME">%2$s</xliff:g>) um die Berechtigung, Apps und andere Systemfunktionen auf Geräte in der Nähe zu streamen"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"Gerät"</string>
diff --git a/packages/CompanionDeviceManager/res/values-el/strings.xml b/packages/CompanionDeviceManager/res/values-el/strings.xml
index 137ea73..f0d9d8c 100644
--- a/packages/CompanionDeviceManager/res/values-el/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-el/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"ρολόι"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Επιλέξτε ένα προφÎŻλ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> για διαχεÎŻριση από την εφαρμογÎź &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"ΑυτÎź η εφαρμογÎź εÎŻναι απαραÎŻτητη για τη διαχεÎŻριση της συσκευÎźς <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Η εφαρμογÎź <xliff:g id="APP_NAME">%2$s</xliff:g> θα μπορεÎŻ να συγχρονÎŻζει πληροφορÎŻες, όπως το όνομα ενός ατόμου που σας καλεÎŻ, να αλληλεπιδρÎŹ με τις ειδοποιÎźσεις σας και να αποκτÎŹ πρόσβαση στις ÎŹδειες Τηλέφωνο, SMS, Επαφές, Ημερολόγιο, ΑρχεÎŻα καταγρ. κλÎźσ. και Συσκευές σε κοντινÎź απόσταση."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"ΑυτÎź η εφαρμογÎź θα μπορεÎŻ να συγχρονÎŻζει πληροφορÎŻες, όπως το όνομα ενός ατόμου που σας καλεÎŻ, και να αποκτÎŹ πρόσβαση σε αυτές τις ÎŹδειες στη συσκευÎź <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Να επιτρέπεται στην εφαρμογÎź &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; να διαχειρÎŻζεται τη συσκευÎź &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; ;"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"γυαλιÎŹ"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"ΑυτÎź η εφαρμογÎź εÎŻναι απαραÎŻτητη για τη διαχεÎŻριση της συσκευÎźς <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Θα επιτρέπεται στην εφαρμογÎź <xliff:g id="APP_NAME">%2$s</xliff:g> να αλληλεπιδρÎŹ με τις ειδοποιÎźσεις σας και να αποκτÎŹ πρόσβαση στις ÎŹδειες για το Τηλέφωνο, τα SMS, τις Επαφές, το Μικρόφωνο και τις Συσκευές σε κοντινÎź απόσταση."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"ΑυτÎź η εφαρμογÎź θα μπορεÎŻ να έχει πρόσβαση σε αυτές τις ÎŹδειες στη συσκευÎź <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Να επιτρέπεται στο &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; η πρόσβαση σε αυτές τις πληροφορÎŻες από το τηλέφωνό σας."</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"ΥπηρεσÎŻες πολλών συσκευών"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"Η εφαρμογÎź <xliff:g id="APP_NAME">%1$s</xliff:g> ζητÎŹ εκ μέρους της συσκευÎźς σας <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ÎŹδεια για ροÎź εφαρμογών μεταξύ των συσκευών σας"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Επιτρέψτε στην εφαρμογÎź &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; να έχει πρόσβαση σε αυτές τις πληροφορÎŻες από το τηλέφωνό σας"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"ΥπηρεσÎŻες Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"Η εφαρμογÎź <xliff:g id="APP_NAME">%1$s</xliff:g> ζητÎŹ εκ μέρους της συσκευÎźς σας <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ÎŹδεια για πρόσβαση στις φωτογραφÎŻες, τα αρχεÎŻα μέσων και τις ειδοποιÎźσεις του τηλεφώνου σας"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Να επιτρέπεται στη συσκευÎź &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; να εκτελεÎŻ αυτÎźν την ενέργεια;"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Η εφαρμογÎź <xliff:g id="APP_NAME">%1$s</xliff:g> ζητÎŹ ÎŹδεια εκ μέρους της συσκευÎźς σας <xliff:g id="DEVICE_NAME">%2$s</xliff:g> για ροÎź εφαρμογών και ÎŹλλων λειτουργιών του συστÎźματος σε συσκευές σε κοντινÎź απόσταση"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"συσκευÎź"</string>
diff --git a/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml b/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml
index 3a3ef18..2e3bddc 100644
--- a/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"watch"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Choose a <xliff:g id="PROFILE_NAME">%1$s</xliff:g> to be managed by &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"This app is needed to manage your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to sync info, like the name of someone calling, interact with your notifications and access your Phone, SMS, Contacts, Calendar, Call logs and Nearby devices permissions."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"This app will be allowed to sync info, like the name of someone calling, and access these permissions on your <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Allow &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; to manage &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"glasses"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"This app is needed to manage <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to interact with your notifications and access your phone, SMS, contacts, microphone and Nearby devices permissions."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"This app will be allowed to access these permissions on your <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Allow &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; to access this information from your phone"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Cross-device services"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> to stream apps between your devices"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Allow &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; to access this information from your phone"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play services"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> to access your phone’s photos, media and notifications"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Allow &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; to take this action?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DEVICE_NAME">%2$s</xliff:g> to stream apps and other system features to nearby devices"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"device"</string>
diff --git a/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml b/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml
index 3a3ef18..2e3bddc 100644
--- a/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"watch"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Choose a <xliff:g id="PROFILE_NAME">%1$s</xliff:g> to be managed by &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"This app is needed to manage your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to sync info, like the name of someone calling, interact with your notifications and access your Phone, SMS, Contacts, Calendar, Call logs and Nearby devices permissions."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"This app will be allowed to sync info, like the name of someone calling, and access these permissions on your <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Allow &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; to manage &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"glasses"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"This app is needed to manage <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to interact with your notifications and access your phone, SMS, contacts, microphone and Nearby devices permissions."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"This app will be allowed to access these permissions on your <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Allow &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; to access this information from your phone"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Cross-device services"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> to stream apps between your devices"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Allow &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; to access this information from your phone"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play services"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> to access your phone’s photos, media and notifications"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Allow &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; to take this action?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DEVICE_NAME">%2$s</xliff:g> to stream apps and other system features to nearby devices"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"device"</string>
diff --git a/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml b/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml
index 3a3ef18..2e3bddc 100644
--- a/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"watch"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Choose a <xliff:g id="PROFILE_NAME">%1$s</xliff:g> to be managed by &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"This app is needed to manage your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to sync info, like the name of someone calling, interact with your notifications and access your Phone, SMS, Contacts, Calendar, Call logs and Nearby devices permissions."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"This app will be allowed to sync info, like the name of someone calling, and access these permissions on your <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Allow &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; to manage &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"glasses"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"This app is needed to manage <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to interact with your notifications and access your phone, SMS, contacts, microphone and Nearby devices permissions."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"This app will be allowed to access these permissions on your <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Allow &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; to access this information from your phone"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Cross-device services"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> to stream apps between your devices"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Allow &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; to access this information from your phone"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play services"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> to access your phone’s photos, media and notifications"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Allow &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; to take this action?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DEVICE_NAME">%2$s</xliff:g> to stream apps and other system features to nearby devices"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"device"</string>
diff --git a/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml b/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml
index f4d8d08..7a6524f 100644
--- a/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"reloj"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Elige un <xliff:g id="PROFILE_NAME">%1$s</xliff:g> para que la app &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; lo administre"</string>
     <string name="summary_watch" msgid="898569637110705523">"Esta app es necesaria para administrar tu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> podrá sincronizar información, como el nombre de la persona que llama, interactuar con tus notificaciones y acceder a los permisos de Teléfono, SMS, Contactos, Calendario, Llamadas y Dispositivos cercanos."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Esta app podrá sincronizar información, como el nombre de alguien cuando te llame, y acceder a los siguientes permisos en tu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Permite que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; administre &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"Gafas"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Esta app es necesaria para administrar <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> podrá interactuar con tus notificaciones y acceder a los permisos de Teléfono, SMS, Contactos, Micrófono y Dispositivos cercanos."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Esta app podrá acceder a los siguientes permisos en tu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Permite que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acceda a esta información de tu teléfono"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Servicios multidispositivo"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> solicita tu permiso en nombre de <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para transmitir apps entre dispositivos"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Permite que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acceda a esta información de tu teléfono"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Servicios de Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> solicita tu permiso en nombre de <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para acceder a las fotos, el contenido multimedia y las notificaciones de tu teléfono"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"¿Permites que &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; realice esta acción?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> está solicitando permiso en nombre de tu <xliff:g id="DEVICE_NAME">%2$s</xliff:g> para transmitir apps y otras funciones del sistema a dispositivos cercanos"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"dispositivo"</string>
diff --git a/packages/CompanionDeviceManager/res/values-es/strings.xml b/packages/CompanionDeviceManager/res/values-es/strings.xml
index 11e64f3..e416999 100644
--- a/packages/CompanionDeviceManager/res/values-es/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-es/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"reloj"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Elige un <xliff:g id="PROFILE_NAME">%1$s</xliff:g> para gestionarlo con &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Se necesita esta aplicación para gestionar tu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> podrá sincronizar información (por ejemplo, el nombre de la persona que te llama), interactuar con tus notificaciones y acceder a tus permisos de teléfono, SMS, contactos, calendario, registros de llamadas y dispositivos cercanos."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Esta aplicación podrá sincronizar información, como el nombre de la persona que llama, y acceder a estos permisos de tu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"¿Permitir que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; gestione &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"gafas"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Se necesita esta aplicación para gestionar <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> podrá interactuar con tus notificaciones y acceder a tus permisos de teléfono, SMS, contactos, micrófono y dispositivos cercanos."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Esta aplicación podrá acceder a estos permisos de tu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Permitir que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acceda a esta información de tu teléfono"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Servicios multidispositivo"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> está pidiendo permiso en nombre de tu <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para emitir aplicaciones en otros dispositivos tuyos"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Permitir que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acceda a esta información de tu teléfono"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Servicios de Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> está pidiendo permiso en nombre de tu <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para acceder a las fotos, los archivos multimedia y las notificaciones de tu teléfono"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"¿Permitir que &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; realice esta acción?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> está pidiendo permiso en nombre de tu <xliff:g id="DEVICE_NAME">%2$s</xliff:g> para emitir aplicaciones y otras funciones del sistema en dispositivos cercanos"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"dispositivo"</string>
diff --git a/packages/CompanionDeviceManager/res/values-et/strings.xml b/packages/CompanionDeviceManager/res/values-et/strings.xml
index 696b83f..9ddd441 100644
--- a/packages/CompanionDeviceManager/res/values-et/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-et/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"käekell"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Valige <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, mida haldab rakendus &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Seda rakendust on vaja teie seadme <xliff:g id="DEVICE_NAME">%1$s</xliff:g> haldamiseks. Rakendusel <xliff:g id="APP_NAME">%2$s</xliff:g> lubatakse sünkroonida teavet, näiteks helistaja nime, kasutada teie märguandeid ning pääseda juurde teie telefoni, SMS-ide, kontaktide, kalendri, kõnelogide ja läheduses olevate seadmete lubadele."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Sellel rakendusel lubatakse sünkroonida teavet (nt helistaja nime) ja antakse need load teie seadmes <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Lubage rakendusel &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; hallata seadet &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"prillid"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Seda rakendust on vaja seadme <xliff:g id="DEVICE_NAME">%1$s</xliff:g> haldamiseks. Rakendusel <xliff:g id="APP_NAME">%2$s</xliff:g> lubatakse kasutada teie märguandeid ning pääseda juurde teie telefoni, SMS-ide, kontaktide, mikrofoni ja läheduses olevate seadmete lubadele."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Sellele rakendusele antakse need load teie seadmes <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Lubage rakendusel &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; pääseda teie telefonis juurde sellele teabele"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Seadmeülesed teenused"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> taotleb teie seadme <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> nimel luba teie seadmete vahel rakendusi voogesitada"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Lubage rakendusel &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; pääseda teie telefonis juurde sellele teabele"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play teenused"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> taotleb teie seadme <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> nimel luba pääseda juurde telefoni fotodele, meediale ja märguannetele"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Kas lubada seadmel &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; teha seda toimingut?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> taotleb teie seadme <xliff:g id="DEVICE_NAME">%2$s</xliff:g> nimel luba voogesitada rakendusi ja muid süsteemi funktsioone läheduses olevatesse seadmetesse"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"seade"</string>
diff --git a/packages/CompanionDeviceManager/res/values-eu/strings.xml b/packages/CompanionDeviceManager/res/values-eu/strings.xml
index 6ce4654..7b4e4f9 100644
--- a/packages/CompanionDeviceManager/res/values-eu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-eu/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"erlojua"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Aukeratu &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; aplikazioak kudeatu beharreko <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string>
     <string name="summary_watch" msgid="898569637110705523">"Aplikazioa <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kudeatzeko behar da. Informazioa sinkronizatzeko (esate baterako, deitzaileen izenak), jakinarazpenekin interakzioan aritzeko, eta telefonoa, SMSak, kontaktuak, egutegia, deien erregistroak eta inguruko gailuak erabiltzeko baimena izango du <xliff:g id="APP_NAME">%2$s</xliff:g> aplikazioak."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>n informazioa sinkronizatu (esate baterako, deitzaileen izenak) eta baimen hauek erabili ahalko ditu aplikazioak"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; kudeatzeko baimena eman nahi diozu &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; aplikazioari?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"betaurrekoak"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailua kudeatzeko behar da aplikazioa. Jakinarazpenekin interakzioan aritzeko, eta telefonoa, SMSak, kontaktuak, mikrofonoa eta inguruko gailuak erabiltzeko baimena izango du <xliff:g id="APP_NAME">%2$s</xliff:g> aplikazioak."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>n baimen hauek erabili ahalko ditu aplikazioak:"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Eman informazioa telefonotik hartzeko baimena &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; aplikazioari"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Gailu baterako baino gehiagotarako zerbitzuak"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"Gailu batetik bestera aplikazioak igortzeko baimena eskatzen ari da <xliff:g id="APP_NAME">%1$s</xliff:g>, <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> gailuaren izenean"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Eman telefonoko informazio hau erabiltzeko baimena &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; aplikazioari"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play Services"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"Telefonoko argazkiak, multimedia-edukia eta jakinarazpenak erabiltzeko baimena eskatzen ari da <xliff:g id="APP_NAME">%1$s</xliff:g>, <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> gailuaren izenean"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Ekintza hau gauzatzeko baimena eman nahi diozu &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; aplikazioari?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Aplikazioak eta sistemaren beste eginbide batzuk inguruko gailuetara igortzeko baimena eskatzen ari da <xliff:g id="APP_NAME">%1$s</xliff:g>, <xliff:g id="DEVICE_NAME">%2$s</xliff:g> gailuaren izenean"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"gailua"</string>
diff --git a/packages/CompanionDeviceManager/res/values-fa/strings.xml b/packages/CompanionDeviceManager/res/values-fa/strings.xml
index 6a19bd6..bafeabc 100644
--- a/packages/CompanionDeviceManager/res/values-fa/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fa/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"۳ۧŰčŰȘ"</string>
     <string name="chooser_title" msgid="2262294130493605839">"‏Ű§Ù†ŰȘ۟ۧۚ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ŰšŰ±Ű§ÛŒ Ù…ŰŻÛŒŰ±ÛŒŰȘ Ú©Ű±ŰŻÙ† ۚۧ &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>‏&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Ű§ÛŒÙ† ŰšŰ±Ù†Ű§Ù…Ù‡ ŰšŰ±Ű§ÛŒ Ù…ŰŻÛŒŰ±ÛŒŰȘ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ŰŽÙ…Ű§ Ù„Ű§ŰČم ۧ۳ŰȘ. ŰšÙ‡ <xliff:g id="APP_NAME">%2$s</xliff:g> ۧۏۧŰČه ŰŻŰ§ŰŻÙ‡ می‌ŰŽÙˆŰŻ Ű§Ű·Ù„Ű§ŰčۧŰȘی Ù…Ű«Ù„ Ù†Ű§Ù… ŰŽŰźŰ”ÛŒ ۱ۧ که ŰȘÙ…Ű§Űł می‌ÚŻÛŒŰ±ŰŻ Ù‡Ù…ÚŻŰ§Ù…‌۳ۧŰČی Ú©Ù†ŰŻŰŒ ۚۧ ۧŰčÙ„Ű§Ù†‌Ù‡Ű§ÛŒ ŰŽÙ…Ű§ ŰȘŰčŰ§Ù…Ù„ ۯۧێŰȘه ۹ۧۮۯی و ŰšÙ‡ ۧۏۧŰČه‌Ù‡Ű§ÛŒ «ŰȘلفن»ŰŒ «ÙŸÛŒŰ§Ù…Ú©»ŰŒ «Ù…ŰźŰ§Ű·ŰšÛŒÙ†»ŰŒ «ŰȘقویم»ŰŒ «ÚŻŰČۧ۱ێ‌Ù‡Ű§ÛŒ ŰȘÙ…Ű§Űł»ŰŒ و «ŰŻŰłŰȘÚŻŰ§Ù‡‌Ù‡Ű§ÛŒ Ű§Ű·Ű±Ű§Ù» ŰŻŰłŰȘŰ±ŰłÛŒ ۯۧێŰȘه ۚۧێۯ."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"ŰšÙ‡ Ű§ÛŒÙ† ŰšŰ±Ù†Ű§Ù…Ù‡ ۧۏۧŰČه ŰŻŰ§ŰŻÙ‡ می‌ŰŽÙˆŰŻ Ű§Ű·Ù„Ű§ŰčۧŰȘی Ù…Ű«Ù„ Ù†Ű§Ù… ŰȘÙ…Ű§Űł‌ÚŻÛŒŰ±Ù†ŰŻÙ‡ ۱ۧ Ù‡Ù…ÚŻŰ§Ù…‌۳ۧŰČی Ú©Ù†ŰŻ و ŰšÙ‡ Ű§ÛŒÙ† ۧۏۧŰČه‌Ù‡Ű§ ۯ۱ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> ŰŽÙ…Ű§ ŰŻŰłŰȘŰ±ŰłÛŒ ۯۧێŰȘه ۚۧێۯ"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"‏ŰšÙ‡ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ۧۏۧŰČه ŰŻŰ§ŰŻÙ‡ ŰŽÙˆŰŻ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; ۱ۧ Ù…ŰŻÛŒŰ±ÛŒŰȘ Ú©Ù†ŰŻŰŸ"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"Űčینک"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Ű§ÛŒÙ† ŰšŰ±Ù†Ű§Ù…Ù‡ ŰšŰ±Ű§ÛŒ Ù…ŰŻÛŒŰ±ÛŒŰȘ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> Ù„Ű§ŰČم ۧ۳ŰȘ. ŰšÙ‡ <xliff:g id="APP_NAME">%2$s</xliff:g> ۧۏۧŰČه ŰŻŰ§ŰŻÙ‡ می‌ŰŽÙˆŰŻ ۚۧ ۧŰčÙ„Ű§Ù†‌Ù‡Ű§ÛŒ ŰŽÙ…Ű§ ŰȘŰčŰ§Ù…Ù„ ۯۧێŰȘه ۚۧێۯ و ŰšÙ‡ ۧۏۧŰČه‌Ù‡Ű§ÛŒ «ŰȘلفن»ŰŒ «ÙŸÛŒŰ§Ù…Ú©»ŰŒ «Ù…ŰźŰ§Ű·ŰšÛŒÙ†»ŰŒ «Ù…ÛŒÚ©Ű±ÙˆÙÙˆÙ†»ŰŒ و «ŰŻŰłŰȘÚŻŰ§Ù‡‌Ù‡Ű§ÛŒ Ű§Ű·Ű±Ű§Ù» ŰŻŰłŰȘŰ±ŰłÛŒ ۯۧێŰȘه ۚۧێۯ."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Ű§ÛŒÙ† ŰšŰ±Ù†Ű§Ù…Ù‡ Ù…ŰŹŰ§ŰČ Ù…ÛŒ‌ŰŽÙˆŰŻ ŰšÙ‡ Ű§ÛŒÙ† ۧۏۧŰČه‌Ù‡Ű§ ۯ۱ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> ŰŽÙ…Ű§ ŰŻŰłŰȘŰ±ŰłÛŒ ÙŸÛŒŰŻŰ§ Ú©Ù†ŰŻ"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"‏ۧۏۧŰČه ŰŻŰ§ŰŻÙ† ŰšÙ‡ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ŰšŰ±Ű§ÛŒ ŰŻŰłŰȘŰ±ŰłÛŒ ŰšÙ‡ Ű§Ű·Ù„Ű§ŰčۧŰȘ ŰȘلفن"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"ŰłŰ±ÙˆÛŒŰł‌Ù‡Ű§ÛŒ ŰšÛŒÙ†‌ŰŻŰłŰȘÚŻŰ§Ù‡ÛŒ"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> ۧŰČŰ·Ű±Ù <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ۧۏۧŰČه می‌ŰźÙˆŰ§Ù‡ŰŻ ŰšŰ±Ù†Ű§Ù…Ù‡‌Ù‡Ű§ ۱ۧ ŰšÛŒÙ† ŰŻŰłŰȘÚŻŰ§Ù‡‌Ù‡Ű§ÛŒ ŰŽÙ…Ű§ ŰŹŰ§Ű±ÛŒ‌۳ۧŰČی Ú©Ù†ŰŻ"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"‏ŰšÙ‡ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ۧۏۧŰČه ŰŻŰłŰȘŰ±ŰłÛŒ ŰšÙ‡ Ű§ÛŒÙ† Ű§Ű·Ù„Ű§ŰčۧŰȘ ۯ۱ ŰŻŰłŰȘÚŻŰ§Ù‡ŰȘŰ§Ù† ŰŻŰ§ŰŻÙ‡ ŰŽÙˆŰŻ"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"‏ŰźŰŻÙ…Ű§ŰȘ Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> ۧŰČŰ·Ű±Ù <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ۧۏۧŰČه می‌ŰźÙˆŰ§Ù‡ŰŻ ŰšÙ‡ ŰčÚ©Űł‌Ù‡Ű§ŰŒ Ű±ŰłŰ§Ù†Ù‡‌Ù‡Ű§ŰŒ و ۧŰčÙ„Ű§Ù†‌Ù‡Ű§ÛŒ ŰȘلفن ŰŽÙ…Ű§ ŰŻŰłŰȘŰ±ŰłÛŒ ÙŸÛŒŰŻŰ§ Ú©Ù†ŰŻ"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"‏ŰšÙ‡ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ۧۏۧŰČه ŰŻŰ§ŰŻÙ‡ ŰŽÙˆŰŻ Ű§ÛŒÙ† Ű§Ù‚ŰŻŰ§Ù… ۱ۧ Ű§Ù†ŰŹŰ§Ù… ŰŻÙ‡ŰŻŰŸ"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> ۧŰČŰ·Ű±Ù <xliff:g id="DEVICE_NAME">%2$s</xliff:g> ۧۏۧŰČه می‌ŰźÙˆŰ§Ù‡ŰŻ ŰȘۧ ŰšŰ±Ù†Ű§Ù…Ù‡‌Ù‡Ű§ و ŰŻÛŒÚŻŰ± ÙˆÛŒÚ˜ÚŻÛŒ‌Ù‡Ű§ÛŒ ŰłÛŒŰłŰȘم ۱ۧ ۯ۱ ŰŻŰłŰȘÚŻŰ§Ù‡‌Ù‡Ű§ÛŒ Ű§Ű·Ű±Ű§Ù ŰŹŰ§Ű±ÛŒ‌۳ۧŰČی Ú©Ù†ŰŻ."</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"ŰŻŰłŰȘÚŻŰ§Ù‡"</string>
diff --git a/packages/CompanionDeviceManager/res/values-fi/strings.xml b/packages/CompanionDeviceManager/res/values-fi/strings.xml
index b8186bb..ff8d7a7 100644
--- a/packages/CompanionDeviceManager/res/values-fi/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fi/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"kello"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Valitse <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, jota &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; hallinnoi"</string>
     <string name="summary_watch" msgid="898569637110705523">"Ylläpitoon (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) tarvitaan tätä sovellusta. <xliff:g id="APP_NAME">%2$s</xliff:g> saa luvan synkronoida tietoja (esimerkiksi soittajan nimen), hallinnoida ilmoituksiasi sekä pääsyn puhelimeen, tekstiviesteihin, yhteystietoihin, kalenteriin, puhelulokeihin ja lähellä olevat laitteet ‑lupiin."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Sovellus saa luvan synkronoida tietoja (esimerkiksi soittajan nimen) ja pääsyn näihin lupiin laitteella (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>)"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Salli, että &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; saa ylläpitää laitetta: &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"lasit"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> edellyttää ylläpitoon tätä sovellusta. <xliff:g id="APP_NAME">%2$s</xliff:g> saa luvan hallinnoida ilmoituksiasi sekä pääsyn puhelimeen, tekstiviesteihin, yhteystietoihin, mikrofoniin ja lähellä olevat laitteet ‑lupiin."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Tämä sovellus saa käyttää näitä lupia laitteella (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>)"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Salli, että &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; saa pääsyn näihin puhelimesi tietoihin"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Laitteidenväliset palvelut"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> pyytää laitteesi (<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>) puolesta lupaa striimata sovelluksia laitteidesi välillä"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Salli pääsy tähän tietoon puhelimellasi: &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play Palvelut"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> pyytää laitteesi (<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>) puolesta lupaa päästä puhelimesi kuviin, mediaan ja ilmoituksiin"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Sallitko, että &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; voi suorittaa tämän toiminnon?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> pyytää laitteesi (<xliff:g id="DEVICE_NAME">%2$s</xliff:g>) puolesta lupaa striimata sovelluksia ja muita järjestelmän ominaisuuksia lähellä oleviin laitteisiin."</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"laite"</string>
diff --git a/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml b/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml
index d0cee6f..a58cd82 100644
--- a/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml
@@ -20,26 +20,33 @@
     <string name="confirmation_title" msgid="4593465730772390351">"Autoriser &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à accéder à &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_watch" msgid="576290739483672360">"montre"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Choisissez un(e) <xliff:g id="PROFILE_NAME">%1$s</xliff:g> qui sera géré(e) par &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
-    <string name="summary_watch" msgid="898569637110705523">"Cette application est nécessaire pour gérer votre <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> aura l\'autorisation de synchroniser des informations, comme le nom de l\'appelant, d\'interagir avec vos notifications et d\'accéder à vos autorisations pour le téléphone, les messages texte, les contacts, l\'agenda, les journaux d\'appels et les appareils à proximité."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Cette application sera autorisée à synchroniser des informations, comme le nom de l\'appelant, et à accéder à ces autorisations sur votre <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch (898569637110705523) -->
+    <skip />
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Autoriser &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à gérer &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"lunettes"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Cette application est nécessaire pour gérer <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> sera autorisée à interagir avec vos notifications et à accéder à vos autorisations pour le téléphone, les messages texte, les contacts, le microphone et les appareils à proximité."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Cette application pourra accéder à ces autorisations sur votre <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Autorisez &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à accéder à ces informations à partir de votre téléphone"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Services multiappareils"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> demande l\'autorisation au nom de votre <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> pour diffuser des applications entre vos appareils"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Autorisez &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à accéder à ces informations à partir de votre téléphone"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Services Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> demande l\'autorisation au nom de votre <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> pour accéder aux photos, aux fichiers multimédias et aux notifications de votre téléphone"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Autoriser &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; à effectuer cette action?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> demande l\'autorisation, au nom de votre <xliff:g id="DEVICE_NAME">%2$s</xliff:g>, de diffuser des applications et d\'autres fonctionnalités du système sur des appareils à proximité"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"appareil"</string>
-    <string name="summary_generic_single_device" msgid="4181180669689590417">"Cette application pourra synchroniser des informations, comme le nom de l\'appelant, entre votre téléphone et <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
-    <string name="summary_generic" msgid="1761976003668044801">"Cette application pourra synchroniser des informations, comme le nom de l\'appelant, entre votre téléphone et l\'appareil sélectionné"</string>
+    <!-- no translation found for summary_generic_single_device (4181180669689590417) -->
+    <skip />
+    <!-- no translation found for summary_generic (1761976003668044801) -->
+    <skip />
     <string name="consent_yes" msgid="8344487259618762872">"Autoriser"</string>
     <string name="consent_no" msgid="2640796915611404382">"Ne pas autoriser"</string>
     <string name="consent_back" msgid="2560683030046918882">"Retour"</string>
diff --git a/packages/CompanionDeviceManager/res/values-fr/strings.xml b/packages/CompanionDeviceManager/res/values-fr/strings.xml
index b51188e..35f95be 100644
--- a/packages/CompanionDeviceManager/res/values-fr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fr/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"montre"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Sélectionnez le/la <xliff:g id="PROFILE_NAME">%1$s</xliff:g> qui sera géré(e) par &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Cette appli est nécessaire pour gérer <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> aura l\'autorisation de synchroniser des infos (comme le nom de l\'appelant), d\'interagir avec vos notifications et d\'accéder à votre téléphone, à votre agenda, ainsi qu\'à vos SMS, contacts, journaux d\'appels et appareils à proximité."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Cette appli sera autorisée à synchroniser des infos (comme le nom de l\'appelant) et disposera de ces autorisations sur votre <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Autoriser &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à gérer &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; ?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"lunettes"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Cette appli est nécessaire pour gérer <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> aura l\'autorisation d\'interagir avec vos notifications et d\'accéder aux autorisations du téléphone, des SMS, des contacts, du micro et des appareils à proximité."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Cette appli sera autorisée à accéder à ces autorisations sur votre <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Autoriser &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à accéder à ces informations depuis votre téléphone"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Services inter-appareils"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> demande l\'autorisation au nom de votre <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> pour caster des applis d\'un appareil à l\'autre"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Autoriser &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à accéder à ces informations depuis votre téléphone"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Services Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> demande l\'autorisation au nom de votre <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> pour accéder aux photos, contenus multimédias et notifications de votre téléphone"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Autoriser &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; à effectuer cette action ?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> demande l\'autorisation au nom de votre <xliff:g id="DEVICE_NAME">%2$s</xliff:g> de diffuser des applis et d\'autres fonctionnalités système en streaming sur des appareils à proximité"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"appareil"</string>
@@ -69,6 +73,6 @@
     <string name="permission_app_streaming_summary" msgid="606923325679670624">"Diffuser en streaming les applis de votre téléphone"</string>
     <string name="permission_storage_summary" msgid="3918240895519506417"></string>
     <string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Diffusez des applis et d\'autres fonctionnalités système en streaming depuis votre téléphone"</string>
-    <string name="device_type" product="default" msgid="8268703872070046263">"Téléphone"</string>
-    <string name="device_type" product="tablet" msgid="5038791954983067774">"Tablette"</string>
+    <string name="device_type" product="default" msgid="8268703872070046263">"téléphone"</string>
+    <string name="device_type" product="tablet" msgid="5038791954983067774">"tablette"</string>
 </resources>
diff --git a/packages/CompanionDeviceManager/res/values-gl/strings.xml b/packages/CompanionDeviceManager/res/values-gl/strings.xml
index f5017d1..7e6aa92 100644
--- a/packages/CompanionDeviceManager/res/values-gl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-gl/strings.xml
@@ -20,26 +20,33 @@
     <string name="confirmation_title" msgid="4593465730772390351">"Queres permitir que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acceda ao dispositivo (&lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;)?"</string>
     <string name="profile_name_watch" msgid="576290739483672360">"reloxo"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Escolle un dispositivo (<xliff:g id="PROFILE_NAME">%1$s</xliff:g>) para que o xestione a aplicación &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
-    <string name="summary_watch" msgid="898569637110705523">"Esta aplicación é necesaria para xestionar o teu dispositivo (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>). <xliff:g id="APP_NAME">%2$s</xliff:g> poderá sincronizar información (por exemplo, o nome de quen chama), interactuar coas túas notificacións e acceder aos permisos do teu teléfono, das SMS, dos contactos, do calendario, dos rexistros de chamadas e dos dispositivos próximos."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Esta aplicación poderá sincronizar información (por exemplo, o nome de quen chama) e acceder a estes permisos do dispositivo (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>)"</string>
+    <!-- no translation found for summary_watch (898569637110705523) -->
+    <skip />
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Queres permitir que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; xestione o dispositivo (&lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;)?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"lentes"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Esta aplicación é necesaria para xestionar o dispositivo (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>). <xliff:g id="APP_NAME">%2$s</xliff:g> poderá interactuar coas túas notificacións e acceder aos permisos do teu teléfono, das SMS, dos contactos, do micrófono e dos dispositivos próximos."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Esta aplicación poderá acceder a estes permisos do dispositivo (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>)"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Permitir que a aplicación &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acceda a esta información desde o teu teléfono"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Servizos multidispositivo"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> está solicitando permiso en nome do teu dispositivo (<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>) para emitir contido de aplicacións entre os teus aparellos"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Permitir que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acceda a esta información do teu teléfono"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Servizos de Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> está solicitando permiso en nome do teu dispositivo (<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>) para acceder ás fotos, ao contido multimedia e ás notificacións do teléfono"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Queres permitir que &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; leve a cabo esta acción?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> está solicitando permiso en nome do teu dispositivo (<xliff:g id="DEVICE_NAME">%2$s</xliff:g>) para emitir o contido das aplicacións e doutras funcións do sistema en dispositivos próximos"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"dispositivo"</string>
-    <string name="summary_generic_single_device" msgid="4181180669689590417">"Esta aplicación poderá sincronizar información (por exemplo, o nome de quen chama) entre o teléfono e o dispositivo (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>)"</string>
-    <string name="summary_generic" msgid="1761976003668044801">"Esta aplicación poderá sincronizar información (por exemplo, o nome de quen chama) entre o teléfono e o dispositivo escollido"</string>
+    <!-- no translation found for summary_generic_single_device (4181180669689590417) -->
+    <skip />
+    <!-- no translation found for summary_generic (1761976003668044801) -->
+    <skip />
     <string name="consent_yes" msgid="8344487259618762872">"Permitir"</string>
     <string name="consent_no" msgid="2640796915611404382">"Non permitir"</string>
     <string name="consent_back" msgid="2560683030046918882">"Atrás"</string>
diff --git a/packages/CompanionDeviceManager/res/values-gu/strings.xml b/packages/CompanionDeviceManager/res/values-gu/strings.xml
index e717c51..5d1d0e3 100644
--- a/packages/CompanionDeviceManager/res/values-gu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-gu/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"àȘžà«àȘźàȘŸàȘ°à«àȘŸàȘ”ૉàȘš"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; àȘŠà«àȘ”àȘŸàȘ°àȘŸ àȘźà«‡àȘšà«‡àȘœ àȘ•àȘ°àȘ”àȘŸ àȘźàȘŸàȘŸà«‡ àȘ•à«‹àȘˆ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> àȘȘàȘžàȘ‚àȘŠ àȘ•àȘ°à«‹"</string>
     <string name="summary_watch" msgid="898569637110705523">"àȘ€àȘźàȘŸàȘ°àȘŸ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>àȘšà«‡ àȘźà«‡àȘšà«‡àȘœ àȘ•àȘ°àȘ”àȘŸ àȘźàȘŸàȘŸà«‡ àȘ† àȘàȘȘ àȘœàȘ°à«‚àȘ°à«€ àȘ›à«‡. <xliff:g id="APP_NAME">%2$s</xliff:g>àȘšà«‡ àȘ•ૉàȘČ àȘ•àȘ°àȘšàȘŸàȘ° àȘ”્àȘŻàȘ•્àȘ€àȘżàȘšà«àȘ‚ àȘšàȘŸàȘź àȘœà«‡àȘ”ી àȘźàȘŸàȘčàȘżàȘ€à«€ àȘžàȘżàȘ‚àȘ• àȘ•àȘ°àȘ”àȘŸàȘšà«€, àȘ€àȘźàȘŸàȘ°àȘŸ àȘšà«‹àȘŸàȘżàȘ«àȘżàȘ•ેàȘ¶àȘš àȘžàȘŸàȘ„ે àȘ•્àȘ°àȘżàȘŻàȘŸàȘȘ્àȘ°àȘ€àȘżàȘ•્àȘ°àȘżàȘŻàȘŸ àȘ•àȘ°àȘ”àȘŸàȘšà«€ àȘ…àȘšà«‡ àȘ€àȘźàȘŸàȘ°à«‹ àȘ«à«‹àȘš, SMS, àȘžàȘ‚àȘȘàȘ°à«àȘ•à«‹, Calendar, àȘ•ૉàȘČ àȘČૉàȘ— àȘ€àȘ„àȘŸ àȘšàȘœà«€àȘ•àȘšàȘŸ àȘĄàȘżàȘ”àȘŸàȘ‡àȘžàȘšà«€ àȘȘàȘ°àȘ”àȘŸàȘšàȘ—à«€àȘ“ àȘàȘ•્àȘžà«‡àȘž àȘ•àȘ°àȘ”àȘŸàȘšà«€ àȘźàȘ‚àȘœà«‚àȘ°à«€ àȘ†àȘȘàȘ”àȘŸàȘźàȘŸàȘ‚ àȘ†àȘ”àȘ¶à«‡."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"àȘ† àȘàȘȘàȘšà«‡, àȘ•ૉàȘČ àȘ•àȘ°àȘšàȘŸàȘ° àȘ”્àȘŻàȘ•્àȘ€àȘżàȘšà«àȘ‚ àȘšàȘŸàȘź àȘœà«‡àȘ”ી àȘźàȘŸàȘčàȘżàȘ€à«€ àȘžàȘżàȘ‚àȘ• àȘ•àȘ°àȘ”àȘŸàȘšà«€ àȘ…àȘšà«‡ àȘ€àȘźàȘŸàȘ°àȘŸ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> àȘȘàȘ° àȘ† àȘȘàȘ°àȘ”àȘŸàȘšàȘ—à«€àȘ“ àȘàȘ•્àȘžà«‡àȘž àȘ•àȘ°àȘ”àȘŸàȘšà«€ àȘźàȘ‚àȘœà«‚àȘ°à«€ àȘ†àȘȘàȘ”àȘŸàȘźàȘŸàȘ‚ àȘ†àȘ”àȘ¶à«‡"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;àȘšà«‡ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; àȘźà«‡àȘšà«‡àȘœ àȘ•àȘ°àȘ”àȘŸ àȘźàȘŸàȘŸà«‡ àȘźàȘ‚àȘœà«‚àȘ°à«€ àȘ†àȘȘીàȘ?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"àȘšàȘ¶à«àȘźàȘŸàȘ‚"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>àȘšà«‡ àȘźà«‡àȘšà«‡àȘœ àȘ•àȘ°àȘ”àȘŸ àȘźàȘŸàȘŸà«‡ àȘ† àȘàȘȘ àȘœàȘ°à«‚àȘ°à«€ àȘ›à«‡. <xliff:g id="APP_NAME">%2$s</xliff:g>àȘšà«‡ àȘ€àȘźàȘŸàȘ°àȘŸ àȘšà«‹àȘŸàȘżàȘ«àȘżàȘ•ેàȘ¶àȘš àȘžàȘŸàȘ„ે àȘ•્àȘ°àȘżàȘŻàȘŸàȘȘ્àȘ°àȘ€àȘżàȘ•્àȘ°àȘżàȘŻàȘŸ àȘ•àȘ°àȘ”àȘŸàȘšà«€ àȘ…àȘšà«‡ àȘ€àȘźàȘŸàȘ°à«‹ àȘ«à«‹àȘš, SMS, àȘžàȘ‚àȘȘàȘ°à«àȘ•à«‹, àȘźàȘŸàȘ‡àȘ•્àȘ°à«‹àȘ«à«‹àȘš àȘ€àȘ„àȘŸ àȘšàȘœà«€àȘ•àȘšàȘŸ àȘĄàȘżàȘ”àȘŸàȘ‡àȘžàȘšà«€ àȘȘàȘ°àȘ”àȘŸàȘšàȘ—à«€àȘ“ àȘàȘ•્àȘžà«‡àȘž àȘ•àȘ°àȘ”àȘŸàȘšà«€ àȘźàȘ‚àȘœà«‚àȘ°à«€ àȘ†àȘȘàȘ”àȘŸàȘźàȘŸàȘ‚ àȘ†àȘ”àȘ¶à«‡."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"àȘ† àȘàȘȘàȘšà«‡ àȘ€àȘźàȘŸàȘ°àȘŸ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> àȘȘàȘ° àȘ† àȘȘàȘ°àȘ”àȘŸàȘšàȘ—à«€àȘ“ àȘàȘ•્àȘžà«‡àȘž àȘ•àȘ°àȘ”àȘŸàȘšà«€ àȘźàȘ‚àȘœà«‚àȘ°à«€ àȘźàȘłàȘ¶à«‡"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"àȘ€àȘźàȘŸàȘ°àȘŸ àȘ«à«‹àȘšàȘźàȘŸàȘ‚àȘ„ી àȘ† àȘźàȘŸàȘčàȘżàȘ€à«€ àȘàȘ•્àȘžà«‡àȘž àȘ•àȘ°àȘ”àȘŸ àȘźàȘŸàȘŸà«‡, &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;àȘšà«‡ àȘźàȘ‚àȘœà«‚àȘ°à«€ àȘ†àȘȘો"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"àȘ•્àȘ°à«‹àȘž-àȘĄàȘżàȘ”àȘŸàȘ‡àȘž àȘžà«‡àȘ”àȘŸàȘ“"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> àȘ€àȘźàȘŸàȘ°àȘŸ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> àȘ”àȘ€à«€ àȘ€àȘźàȘŸàȘ°àȘŸ àȘĄàȘżàȘ”àȘŸàȘ‡àȘž àȘ”àȘšà«àȘšà«‡ àȘàȘȘ àȘžà«àȘŸà«àȘ°à«€àȘź àȘ•àȘ°àȘ”àȘŸàȘšà«€ àȘȘàȘ°àȘ”àȘŸàȘšàȘ—à«€àȘšà«€ àȘ”àȘżàȘšàȘ‚àȘ€à«€ àȘ•àȘ°à«€ àȘ°àȘčી àȘ›à«‡"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"àȘ€àȘźàȘŸàȘ°àȘŸ àȘ«à«‹àȘšàȘźàȘŸàȘ‚àȘ„ી àȘ† àȘźàȘŸàȘčàȘżàȘ€à«€ àȘàȘ•્àȘžà«‡àȘž àȘ•àȘ°àȘ”àȘŸ àȘźàȘŸàȘŸà«‡, &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;àȘšà«‡ àȘźàȘ‚àȘœà«‚àȘ°à«€ àȘ†àȘȘો"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play àȘžà«‡àȘ”àȘŸàȘ“"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> àȘ€àȘźàȘŸàȘ°àȘŸ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> àȘ”àȘ€à«€ àȘ€àȘźàȘŸàȘ°àȘŸ àȘ«à«‹àȘšàȘšàȘŸ àȘ«à«‹àȘŸàȘŸ, àȘźà«€àȘĄàȘżàȘŻàȘŸ àȘ…àȘšà«‡ àȘšà«‹àȘŸàȘżàȘ«àȘżàȘ•ેàȘ¶àȘš àȘàȘ•્àȘžà«‡àȘž àȘ•àȘ°àȘ”àȘŸàȘšà«€ àȘȘàȘ°àȘ”àȘŸàȘšàȘ—à«€àȘšà«€ àȘ”àȘżàȘšàȘ‚àȘ€à«€ àȘ•àȘ°à«€ àȘ°àȘčી àȘ›à«‡"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt;àȘšà«‡ àȘ† àȘȘàȘ—àȘČુàȘ‚ àȘ­àȘ°àȘ”àȘŸàȘšà«€ àȘźàȘ‚àȘœà«‚àȘ°à«€ àȘ†àȘȘીàȘ?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> àȘšàȘœà«€àȘ•àȘšàȘŸ àȘĄàȘżàȘ”àȘŸàȘ‡àȘž àȘȘàȘ° àȘàȘȘ àȘ…àȘšà«‡ àȘžàȘżàȘžà«àȘŸàȘźàȘšà«€ àȘ…àȘšà«àȘŻ àȘžà«àȘ”àȘżàȘ§àȘŸàȘ“ àȘžà«àȘŸà«àȘ°à«€àȘź àȘ•àȘ°àȘ”àȘŸ àȘ€àȘźàȘŸàȘ°àȘŸ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> àȘ”àȘ€à«€ àȘȘàȘ°àȘ”àȘŸàȘšàȘ—à«€àȘšà«€ àȘ”àȘżàȘšàȘ‚àȘ€à«€ àȘ•àȘ°à«€ àȘ°àȘčી àȘ›à«‡"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"àȘĄàȘżàȘ”àȘŸàȘ‡àȘž"</string>
diff --git a/packages/CompanionDeviceManager/res/values-hi/strings.xml b/packages/CompanionDeviceManager/res/values-hi/strings.xml
index 4f1f711..f0887ac 100644
--- a/packages/CompanionDeviceManager/res/values-hi/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hi/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"à€žà„à€źà€Ÿà€°à„à€Ÿà€”à„‰à€š"</string>
     <string name="chooser_title" msgid="2262294130493605839">"à€•à„‹à€ˆ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> à€šà„à€šà„‡à€‚, à€€à€Ÿà€•à€ż à€‰à€žà„‡ &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; à€•à„€ à€źà€Šà€Š à€žà„‡ à€źà„ˆà€šà„‡à€œ à€•à€żà€Żà€Ÿ à€œà€Ÿ à€žà€•à„‡"</string>
     <string name="summary_watch" msgid="898569637110705523">"à€Żà€č à€à€Șà„à€Čà€żà€•à„‡à€¶à€š, <xliff:g id="DEVICE_NAME">%1$s</xliff:g> à€•à„‹ à€źà„ˆà€šà„‡à€œ à€•à€°à€šà„‡ à€•à„‡ à€Čà€żà€ à€œà€Œà€°à„‚à€°à„€ à€čà„ˆ. <xliff:g id="APP_NAME">%2$s</xliff:g> à€•à„‹ à€Ąà€żà€”à€Ÿà€‡à€ž à€•à„€ à€œà€Ÿà€šà€•à€Ÿà€°à„€ à€žà€żà€‚à€• à€•à€°à€šà„‡ à€•à„€ à€…à€šà„à€źà€€à€ż à€čà„‹à€—à„€. à€œà„ˆà€žà„‡, à€•à„‰à€Č à€•à€°à€šà„‡ à€”à€Ÿà€Čà„‡ à€”à„à€Żà€•à„à€€à€ż à€•à€Ÿ à€šà€Ÿà€ź. à€‡à€žà„‡ à€†à€Șà€•à„€ à€žà„‚à€šà€šà€Ÿà€“à€‚ à€Șà€° à€•à€Ÿà€°à„à€°à€”à€Ÿà€ˆ à€•à€°à€šà„‡ à€•à„‡ à€žà€Ÿà€„-à€žà€Ÿà€„ à€†à€Șà€•à„‡ à€«à€Œà„‹à€š, à€à€žà€à€źà€à€ž, à€žà€‚à€Șà€°à„à€•à„‹à€‚, à€•à„ˆà€Čà„‡à€‚à€Ąà€°, à€•à„‰à€Č à€Čà„‰à€—, à€”à€° à€†à€ž-à€Șà€Ÿà€ž à€źà„Œà€œà„‚à€Š à€Ąà€żà€”à€Ÿà€‡à€žà„‹à€‚ à€•à„‹ à€à€•à„à€žà„‡à€ž à€•à€°à€šà„‡ à€•à„€ à€…à€šà„à€źà€€à€ż à€­à„€ à€čà„‹à€—à„€."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"à€Żà€č à€à€Șà„à€Čà€żà€•à„‡à€¶à€š, à€†à€Șà€•à„‡ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> à€Șà€° à€‡à€š à€…à€šà„à€źà€€à€żà€Żà„‹à€‚ à€•à„‹ à€à€•à„à€žà„‡à€ž à€•à€°à€šà„‡ à€•à„‡ à€žà€Ÿà€„-à€žà€Ÿà€„ à€•à„‰à€Č à€•à€°à€šà„‡ à€”à€Ÿà€Čà„‡ à€”à„à€Żà€•à„à€€à€ż à€•à„‡ à€šà€Ÿà€ź à€œà„ˆà€žà„€ à€œà€Ÿà€šà€•à€Ÿà€°à„€ à€žà€żà€‚à€• à€•à€° à€Șà€Ÿà€à€—à€Ÿ"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"à€•à„à€Żà€Ÿ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à€•à„‹ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; à€źà„ˆà€šà„‡à€œ à€•à€°à€šà„‡ à€•à„€ à€…à€šà„à€źà€€à€ż à€Šà„‡à€šà„€ à€čà„ˆ?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"à€šà€¶à„à€źà€Ÿ"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"à€Żà€č à€à€Șà„à€Čà€żà€•à„‡à€¶à€š, <xliff:g id="DEVICE_NAME">%1$s</xliff:g> à€•à„‹ à€źà„ˆà€šà„‡à€œ à€•à€°à€šà„‡ à€•à„‡ à€Čà€żà€ à€œà€Œà€°à„‚à€°à„€ à€čà„ˆ. <xliff:g id="APP_NAME">%2$s</xliff:g> à€•à„‹ à€Ąà€żà€”à€Ÿà€‡à€ž à€•à„€ à€žà„‚à€šà€šà€Ÿà€“à€‚ à€Șà€° à€•à€Ÿà€°à„à€°à€”à€Ÿà€ˆ à€•à€°à€šà„‡ à€•à„€ à€…à€šà„à€źà€€à€ż à€čà„‹à€—à„€. à€‡à€žà„‡ à€†à€Șà€•à„‡ à€«à€Œà„‹à€š, à€źà„ˆà€žà„‡à€œ, à€žà€‚à€Șà€°à„à€•à„‹à€‚, à€źà€Ÿà€‡à€•à„à€°à„‹à€«à€Œà„‹à€š, à€”à€° à€†à€ž-à€Șà€Ÿà€ž à€źà„Œà€œà„‚à€Š à€Ąà€żà€”à€Ÿà€‡à€žà„‹à€‚ à€•à„‹ à€à€•à„à€žà„‡à€ž à€•à€°à€šà„‡ à€•à„€ à€…à€šà„à€źà€€à€ż à€­à„€ à€čà„‹à€—à„€."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"à€Żà€č à€à€Șà„à€Čà€żà€•à„‡à€¶à€š, à€†à€Șà€•à„‡ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> à€Șà€° à€‡à€š à€…à€šà„à€źà€€à€żà€Żà„‹à€‚ à€•à„‹ à€à€•à„à€žà„‡à€ž à€•à€° à€Șà€Ÿà€à€—à€Ÿ"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à€•à„‹ à€…à€Șà€šà„‡ à€«à€Œà„‹à€š à€žà„‡ à€Żà€č à€œà€Ÿà€šà€•à€Ÿà€°à„€ à€à€•à„à€žà„‡à€ž à€•à€°à€šà„‡ à€•à„€ à€…à€šà„à€źà€€à€ż à€Šà„‡à€‚"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"à€•à„à€°à„‰à€ž-à€Ąà€żà€”à€Ÿà€‡à€ž à€žà„‡ à€œà„à€Ąà€Œà„€ à€žà„‡à€”à€Ÿà€à€‚"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> à€†à€Șà€•à„‡ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> à€•à„€ à€“à€° à€žà„‡, à€†à€Șà€•à„‡ à€Ąà€żà€”à€Ÿà€‡à€žà„‹à€‚ à€•à„‡ à€Źà„€à€š à€à€Șà„à€Čà€żà€•à„‡à€¶à€š à€žà„à€Ÿà„à€°à„€à€ź à€•à€°à€šà„‡ à€•à„€ à€…à€šà„à€źà€€à€ż à€źà€Ÿà€‚à€— à€°à€čà€Ÿ à€čà„ˆ"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à€•à„‹ à€…à€Șà€šà„‡ à€«à€Œà„‹à€š à€žà„‡ à€Żà€č à€œà€Ÿà€šà€•à€Ÿà€°à„€ à€à€•à„à€žà„‡à€ž à€•à€°à€šà„‡ à€•à„€ à€…à€šà„à€źà€€à€ż à€Šà„‡à€‚"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play services"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> à€†à€Șà€•à„‡ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> à€•à„€ à€“à€° à€žà„‡, à€†à€Șà€šà„‡ à€«à€Œà„‹à€š à€źà„‡à€‚ à€źà„Œà€œà„‚à€Š à€«à€Œà„‹à€Ÿà„‹, à€źà„€à€Ąà€żà€Żà€Ÿ, à€”à€° à€žà„‚à€šà€šà€Ÿà€“à€‚ à€•à„‹ à€à€•à„à€žà„‡à€ž à€•à€°à€šà„‡ à€•à„€ à€…à€šà„à€źà€€à€ż à€źà€Ÿà€‚à€— à€°à€čà€Ÿ à€čà„ˆ"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"à€•à„à€Żà€Ÿ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; à€•à„‹ à€Żà€č à€•à€Ÿà€°à„à€°à€”à€Ÿà€ˆ à€•à€°à€šà„‡ à€•à„€ à€…à€šà„à€źà€€à€ż à€Šà„‡à€šà„€ à€čà„ˆ?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> à€†à€Șà€•à„‡ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> à€•à„€ à€“à€° à€žà„‡, à€à€Șà„à€Čà€żà€•à„‡à€¶à€š à€”à€° à€Šà„‚à€žà€°à„‡ à€žà€żà€žà„à€Ÿà€ź à€•à„€ à€žà„à€”à€żà€§à€Ÿà€“à€‚ à€•à„‹ à€†à€ž-à€Șà€Ÿà€ž à€źà„Œà€œà„‚à€Š à€Ąà€żà€”à€Ÿà€‡à€žà„‹à€‚ à€Șà€° à€žà„à€Ÿà„à€°à„€à€ź à€•à€°à€šà„‡ à€•à„€ à€…à€šà„à€źà€€à€ż à€źà€Ÿà€‚à€— à€°à€čà€Ÿ à€čà„ˆ"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"à€Ąà€żà€”à€Ÿà€‡à€ž"</string>
diff --git a/packages/CompanionDeviceManager/res/values-hr/strings.xml b/packages/CompanionDeviceManager/res/values-hr/strings.xml
index 84e8b63..3c399b5 100644
--- a/packages/CompanionDeviceManager/res/values-hr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hr/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"satom"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Odaberite <xliff:g id="PROFILE_NAME">%1$s</xliff:g> kojim će upravljati aplikacija &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Ta je aplikacija potrebna za upravljanje vašim uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikacija <xliff:g id="APP_NAME">%2$s</xliff:g> moći će sinkronizirati podatke, primjerice ime pozivatelja, stupati u interakciju s vašim obavijestima i pristupati vašim dopuštenjima za telefon, SMS-ove, kontakte, kalendar, zapisnike poziva i uređaje u blizini."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Aplikacija će moći sinkronizirati podatke kao što je ime pozivatelja i pristupiti tim dopuštenjima na vašem <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Dopustiti aplikaciji &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; da upravlja uređajem &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"naočale"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Ta je aplikacija potrebna za upravljanje uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikacija <xliff:g id="APP_NAME">%2$s</xliff:g> moći će stupati u interakciju s vašim obavijestima i pristupati vašim dopuštenjima za telefon, SMS-ove, kontakte, mikrofon i uređaje u blizini."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Aplikacija će moći pristupati ovim dopuštenjima na vašem <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Omogućite aplikaciji &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; da pristupa informacijama s vašeg telefona"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Usluge na različitim uređajima"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> zahtijeva dopuštenje u ime vašeg uređaja <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> za stream aplikacija s jednog uređaja na drugi"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Omogućite aplikaciji &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; da pristupa informacijama s vašeg telefona"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Usluge za Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> zahtijeva dopuštenje u ime vašeg uređaja <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> za pristup fotografijama, medijskim sadrĆŸajima i obavijestima na telefonu"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Dopustiti &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; da izvede tu radnju?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> zahtijeva dopuštenje u ime vašeg uređaja <xliff:g id="DEVICE_NAME">%2$s</xliff:g> za emitiranje aplikacija i drugih značajki sustava na uređajima u blizini"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"uređaj"</string>
diff --git a/packages/CompanionDeviceManager/res/values-hu/strings.xml b/packages/CompanionDeviceManager/res/values-hu/strings.xml
index 6057171..0fad7f1 100644
--- a/packages/CompanionDeviceManager/res/values-hu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hu/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"óra"</string>
     <string name="chooser_title" msgid="2262294130493605839">"A(z) &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; alkalmazással kezelni kívánt <xliff:g id="PROFILE_NAME">%1$s</xliff:g> kiválasztása"</string>
     <string name="summary_watch" msgid="898569637110705523">"Szükség van erre az alkalmazásra a következƑ kezeléséhez: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. A(z) <xliff:g id="APP_NAME">%2$s</xliff:g> képes lesz szinkronizálni információkat (például a hívó fél nevét), mƱveleteket végezhet majd az értesítésekkel, és hozzáférhet majd a Telefon, az SMS, a Névjegyek, a Naptár, a Hívásnaplók és a Közeli eszközök engedélyekhez."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Ez az alkalmazás képes lesz szinkronizálni információkat (például a hívó fél nevét), és hozzáférhet majd ezekhez az engedélyekhez az Ön <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> eszközén"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Engedélyezi, hogy a(z) &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; kezelje a következƑ eszközt: &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"szemüveg"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Erre az alkalmazásra szükség van a következƑ eszköz kezeléséhez: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. A(z) <xliff:g id="APP_NAME">%2$s</xliff:g> mƱveleteket végezhet majd az értesítésekkel, és hozzáférhet majd a Telefon, az SMS, a Névjegyek, a Mikrofon és a Közeli eszközök engedélyekhez."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Az alkalmazás hozzáférhet majd ezekhez az engedélyekhez az Ön <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> eszközén"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Engedélyezi a(z) „<xliff:g id="APP_NAME">%1$s</xliff:g>” alkalmazás számára az információhoz való hozzáférést a telefonról"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Többeszközös szolgáltatások"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> engedélyt kér a(z) <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> nevében az alkalmazások eszközök közötti streameléséhez"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Engedélyezi a(z) „<xliff:g id="APP_NAME">%1$s</xliff:g>” alkalmazás számára az információhoz való hozzáférést a telefonról"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play-szolgáltatások"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> engedélyt kér a(z) <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> nevében a telefonon tárolt fotókhoz, médiatartalmakhoz és értesítésekhez való hozzáféréshez"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Engedélyezi a(z) &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; számára ennek a mƱveletnek a végrehajtását?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> engedélyt kér a(z) <xliff:g id="DEVICE_NAME">%2$s</xliff:g> nevében az alkalmazások és más rendszerfunkciók közeli eszközökre történƑ streamelésére"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"eszköz"</string>
diff --git a/packages/CompanionDeviceManager/res/values-hy/strings.xml b/packages/CompanionDeviceManager/res/values-hy/strings.xml
index 7975361..7cc3f07 100644
--- a/packages/CompanionDeviceManager/res/values-hy/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hy/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"ŐȘեՎեց՞ւՔց"</string>
     <string name="chooser_title" msgid="2262294130493605839">"ÔžŐ¶ŐżÖ€Ő„Ö„ <xliff:g id="PROFILE_NAME">%1$s</xliff:g>Őš, վրչ ŐșŐ„ŐżÖ„ Ő§ ŐŻŐĄŐŒŐĄŐŸŐĄÖ€ŐŸŐ« &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ« ŐŻŐžŐČՎից"</string>
     <string name="summary_watch" msgid="898569637110705523">"Ô±Ő”Őœ Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ¶ ŐĄŐ¶Ő°Ö€ŐĄŐȘŐ„Ő·Őż Ő§ Ő±Ő„Ö€ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ŐșÖ€ŐžÖ†Ő«ŐŹŐš ŐŻŐĄŐŒŐĄŐŸŐĄÖ€Ő„ŐŹŐžÖ‚ հածար։ <xliff:g id="APP_NAME">%2$s</xliff:g> Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐš կկարվŐČŐĄŐ¶ŐĄ Ő°ŐĄŐŽŐĄŐȘեՎեցնՄՏ ŐżŐŸŐ”ŐĄŐŹŐ¶Ő„Ö€Őš, Ö…Ö€â€€Ő ŐŠŐĄŐ¶ŐŁŐžŐČŐ« ŐĄŐ¶ŐžÖ‚Ő¶Őš, փ՞խեՊՀՄՏ Ő±Ő„Ö€ ՟են՞ւց՞ւՎնՄրի Ő°Ő„Őż և ŐŻŐœŐżŐĄŐ¶ŐĄ «Ő€Ő„ŐŒŐĄŐ­ŐžŐœ», «SMS», «ÔżŐžŐ¶ŐżŐĄŐŻŐżŐ¶Ő„ր», «Ő•րեց՞ւՔց», «ÔżŐĄŐ¶ŐčŐ„Ö€Ő« ցվւցակ» և «Ő„ŐžŐżŐĄŐŻŐĄ ŐœŐĄÖ€Ö„Ő„Ö€» Ő©ŐžÖ‚Ő”ŐŹŐżŐŸŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€ŐšÖ‰"</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Ô±Ő”Őœ Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐš կկարվŐČŐĄŐ¶ŐĄ Ő°ŐĄŐŽŐĄŐȘեՎեցնՄՏ ŐżŐŸŐ”ŐĄŐŹŐ¶Ő„Ö€Őš, Ö…Ö€â€€Ő ŐŠŐĄŐ¶ŐŁŐžŐČŐ« ŐĄŐ¶ŐžÖ‚Ő¶Őš, և ŐŻŐœŐżŐĄŐ¶ŐĄ Ő°Ő„ŐżÖ‡Ő”ŐĄŐŹ Ő©ŐžÖ‚Ő”ŐŹŐżŐŸŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€Őš Ő±Ő„Ö€ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>վւծ"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"ÔčŐžÖ‚Ő”ŐŹŐĄŐżÖ€Ő„ŐžŐŹ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ«Ő¶ ŐŻŐĄŐŒŐĄŐŸŐĄÖ€Ő„ŐŹ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; ŐœŐĄÖ€Ö„Őš"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"եկն՞ց"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Ô±Ő”Őœ Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ¶ ŐĄŐ¶Ő°Ö€ŐĄŐȘŐ„Ő·Őż Ő§ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ŐœŐĄÖ€Ö„Őš ŐŻŐĄŐŒŐĄŐŸŐĄÖ€Ő„ŐŹŐžÖ‚ հածար։ <xliff:g id="APP_NAME">%2$s</xliff:g> Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐš կկարվŐČŐĄŐ¶ŐĄ փ՞խեՊՀՄՏ Ő±Ő„Ö€ ՟են՞ւց՞ւՎնՄրի Ő°Ő„Őż և ŐŻŐœŐżŐĄŐ¶ŐĄ «Ő€Ő„ŐŒŐĄŐ­ŐžŐœ», «SMS», «ÔżŐžŐ¶ŐżŐĄŐŻŐżŐ¶Ő„ր», «ÔœŐžŐœŐĄÖƒŐžŐČ» և «Ő„ŐžŐżŐĄŐŻŐĄ ŐœŐĄÖ€Ö„Ő„Ö€» Ő©ŐžÖ‚Ő”ŐŹŐżŐŸŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€ŐšÖ‰"</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Ô±Ő”Őœ Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐš ŐŻŐœŐżŐĄŐ¶ŐĄ Ő°Ő„ŐżÖ‡Ő”ŐĄŐŹ Ő©ŐžÖ‚Ő”ŐŹŐżŐŸŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€Őš Ő±Ő„Ö€ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>վւծ"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"ÔčŐžÖ‚Ő”ŐŹŐĄŐżÖ€Ő„Ö„ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ«Ő¶ Ö…ŐŁŐżŐĄŐŁŐžÖ€ŐźŐ„ŐŹ ŐĄŐ”Őœ ŐżŐ„ŐČŐ„ŐŻŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€Őš Ő±Ő„Ö€ Ő°Ő„ŐŒŐĄŐ­ŐžŐœŐ«Ö"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Ő„Ő«Ő»ŐœŐĄÖ€Ö„ŐĄŐ”Ő«Ő¶ ŐźŐĄŐŒŐĄŐ”ŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐš Ő±Ő„Ö€ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ŐœŐĄÖ€Ö„Ő« են՞ւնից Ő©ŐžÖ‚Ő”ŐŹŐżŐŸŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶ Ő§ Ő­Ő¶Ő€Ö€ŐžÖ‚ŐŽŐ Ő±Ő„Ö€ ŐœŐĄÖ€Ö„Ő„Ö€Ő« ŐŽŐ«Ő»Ö‡ Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ¶Ő„Ö€ Ő°Ő„ŐŒŐĄÖ€Ő±ŐĄŐŻŐ„ŐŹŐžÖ‚ հածար"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"ÔčŐžÖ‚Ő”ŐŹŐĄŐżÖ€Ő„Ö„ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ«Ő¶ Ö…ŐŁŐżŐĄŐŁŐžÖ€ŐźŐ„ŐŹ ŐĄŐ”Őœ ŐżŐ„ŐČŐ„ŐŻŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€Őš Ő±Ő„Ö€ Ő°Ő„ŐŒŐĄŐ­ŐžŐœŐ«Ö"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play ŐźŐĄŐŒŐĄŐ”ŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐš Ő±Ő„Ö€ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ŐœŐĄÖ€Ö„Ő« են՞ւնից Ő©ŐžÖ‚Ő”ŐŹŐżŐŸŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶ Ő§ Ő­Ő¶Ő€Ö€ŐžÖ‚ŐŽŐ Ő±Ő„Ö€ Ő°Ő„ŐŒŐĄŐ­ŐžŐœŐ« ŐŹŐžÖ‚ŐœŐĄŐ¶ŐŻŐĄÖ€Ő¶Ő„Ö€Őš, ŐŽŐ„Ő€Ő«ŐĄÖ†ŐĄŐ”ŐŹŐ„Ö€Ő¶ վւ ՟են՞ւց՞ւՎնՄր՚ ŐżŐ„ŐœŐ¶Ő„ŐŹŐžÖ‚ հածար"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"ÔčŐžÖ‚Ő”ŐŹŐĄŐżÖ€Ő„ŐžŐŹ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ«Ő¶ ŐŻŐĄŐżŐĄÖ€Ő„ŐŹ ŐĄŐ”Őœ գվրռվŐČŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Őš"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐš Ő±Ő„Ö€ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> ŐœŐĄÖ€Ö„Ő« են՞ւնից Ő©ŐžÖ‚Ő”ŐŹŐżŐŸŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶ Ő§ Ő­Ő¶Ő€Ö€ŐžÖ‚ŐŽŐ ŐŽŐžŐżŐĄŐŻŐĄ ŐœŐĄÖ€Ö„Ő„Ö€Ő«Ő¶ Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ¶Ő„Ö€ և Ő°ŐĄŐŽŐĄŐŻŐĄÖ€ŐŁŐ« ŐĄŐ”ŐŹ ŐŁŐžÖ€ŐźŐĄŐŒŐžÖ‚Ő”Ő©Ő¶Ő„Ö€ Ő°Ő„ŐŒŐĄÖ€Ő±ŐĄŐŻŐ„ŐŹŐžÖ‚ հածար"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"ŐœŐĄÖ€Ö„"</string>
diff --git a/packages/CompanionDeviceManager/res/values-in/strings.xml b/packages/CompanionDeviceManager/res/values-in/strings.xml
index 2876967..16906810 100644
--- a/packages/CompanionDeviceManager/res/values-in/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-in/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"smartwatch"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Pilih <xliff:g id="PROFILE_NAME">%1$s</xliff:g> untuk dikelola oleh &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Aplikasi ini diperlukan untuk mengelola <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> akan diizinkan menyinkronkan info, seperti nama penelepon, berinteraksi dengan notifikasi, dan mengakses izin Telepon, SMS, Kontak, Kalender, Log panggilan, dan Perangkat di sekitar."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Aplikasi ini akan diizinkan menyinkronkan info, seperti nama penelepon, dan mengakses izin ini di <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> Anda"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Izinkan &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; mengelola &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"glasses"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Aplikasi ini diperlukan untuk mengelola <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> akan diizinkan berinteraksi dengan notifikasi dan mengakses izin Ponsel, SMS, Kontak, Mikrofon, dan Perangkat di sekitar."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Aplikasi ini akan diizinkan mengakses izin ini di <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> Anda"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Izinkan &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; untuk mengakses informasi ini dari ponsel Anda"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Layanan lintas perangkat"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> meminta izin atas nama <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> untuk menstreaming aplikasi di antara perangkat Anda"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Izinkan &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; mengakses informasi ini dari ponsel Anda"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Layanan Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> meminta izin atas nama <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> untuk mengakses foto, media, dan notifikasi ponsel Anda"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Izinkan &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; melakukan tindakan ini?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> meminta izin atas nama <xliff:g id="DEVICE_NAME">%2$s</xliff:g> untuk menstreaming aplikasi dan fitur sistem lainnya ke perangkat di sekitar"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"perangkat"</string>
diff --git a/packages/CompanionDeviceManager/res/values-is/strings.xml b/packages/CompanionDeviceManager/res/values-is/strings.xml
index bca9921..fabfe2e 100644
--- a/packages/CompanionDeviceManager/res/values-is/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-is/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"úr"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Velja <xliff:g id="PROFILE_NAME">%1$s</xliff:g> sem &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; á að stjórna"</string>
     <string name="summary_watch" msgid="898569637110705523">"Þetta forrit er nauðsynlegt til að stjórna <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> fær heimild til að samstilla upplýsingar, t.d. nafn þess sem hringir, og bregðast við tilkynningum og fær aðgang að heimildum fyrir síma, SMS, tengiliði, dagatal, símtalaskrár og nálæg tæki."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Þetta forrit fær heimild til að samstilla upplýsingar, t.d. nafn þess sem hringir, og fær aðgang að eftirfarandi heimildum í <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Leyfa &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; að stjórna &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"gleraugu"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Þetta forrit er nauðsynlegt til að stjórna <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> fær heimild til að bregðast við tilkynningum og fær aðgang að heimildum fyrir síma, SMS, tengiliði, hljóðnema og nálæg tæki."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Þetta forrit fær aðgang að eftirfarandi heimildum í <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Veita &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; aðgang að þessum upplýsingum úr símanum þínum"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Þjónustur á milli tækja"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> biður um heimild fyrir <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> til að streyma forritum á milli tækjanna þinna"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Veita &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; aðgang að þessum upplýsingum úr símanum þínum"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Þjónusta Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> sendir beiðni um aðgang að myndum, margmiðlunarefni og tilkynningum símans þíns fyrir hönd <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Leyfa &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; að framkvæma þessa aðgerð?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> biður um heimild fyrir <xliff:g id="DEVICE_NAME">%2$s</xliff:g> til að streyma forritum og öðrum kerfiseiginleikum í nálægum tækjum"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"tæki"</string>
diff --git a/packages/CompanionDeviceManager/res/values-it/strings.xml b/packages/CompanionDeviceManager/res/values-it/strings.xml
index 5f5497ab5..a0cdce6 100644
--- a/packages/CompanionDeviceManager/res/values-it/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-it/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"orologio"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Scegli un <xliff:g id="PROFILE_NAME">%1$s</xliff:g> da gestire con &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Questa app è necessaria per gestire <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> potrà sincronizzare informazioni, ad esempio il nome di un chiamante, interagire con le tue notifiche e accedere alle autorizzazioni Telefono, SMS, Contatti, Calendario, Registri chiamate e Dispositivi nelle vicinanze."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Questa app potrà sincronizzare informazioni, ad esempio il nome di un chiamante, e accedere alle seguenti autorizzazioni su <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>:"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Vuoi consentire all\'app &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; di gestire &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"occhiali"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Questa app è necessaria per gestire <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> potrà interagire con le tue notifiche e accedere alle autorizzazioni Telefono, SMS, Contatti, Microfono e Dispositivi nelle vicinanze."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Questa app potrà accedere alle seguenti autorizzazioni su <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>:"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Consenti a &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; di accedere a queste informazioni dal tuo telefono"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Servizi cross-device"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> richiede per conto del tuo <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> l\'autorizzazione a trasmettere app in streaming tra i dispositivi"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Consenti a &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; di accedere a questa informazione dal tuo telefono"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play Services"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> richiede per conto del tuo <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> l\'autorizzazione ad accedere a foto, contenuti multimediali e notifiche del telefono"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Vuoi consentire a &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; di compiere questa azione?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> richiede per conto di <xliff:g id="DEVICE_NAME">%2$s</xliff:g> l\'autorizzazione a trasmettere in streaming app e altre funzionalità di sistema ai dispositivi nelle vicinanze"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"dispositivo"</string>
diff --git a/packages/CompanionDeviceManager/res/values-iw/strings.xml b/packages/CompanionDeviceManager/res/values-iw/strings.xml
index 7dde216..33bfcfd 100644
--- a/packages/CompanionDeviceManager/res/values-iw/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-iw/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"Ś©ŚąŚ•ŚŸ"</string>
     <string name="chooser_title" msgid="2262294130493605839">"‏Ś‘Ś—Ś™ŚšŚȘ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ŚœŚ Ś™Ś”Ś•Śœ Ś‘ŚŚžŚŠŚąŚ•ŚȘ &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"‏Ś”ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś” ڔږڕ Ś Ś—Ś•ŚŠŚ” ڛړڙ ŚœŚ Ś”Śœ ڐŚȘ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Ś”ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś” <xliff:g id="APP_NAME">%2$s</xliff:g> ŚȘŚ•Ś›Śœ ŚœŚĄŚ Ś›ŚšŚŸ ŚžŚ™Ś“Śą, Ś›ŚžŚ• Ś”Ś©Ś کڜ ŚžŚ™Ś©Ś”Ś• Ś©ŚžŚȘŚ§Ś©Śš, ŚœŚ‘ŚŠŚą Ś€ŚąŚ•ŚœŚ•ŚȘ ڑڔŚȘŚšŚŚ•ŚȘ Ś•ŚœŚ§Ś‘Śœ Ś”ŚšŚ©ŚŚ•ŚȘ ڒڙکڔ ŚœŚ˜ŚœŚ€Ś•ŚŸ, ڜ-SMS, ŚœŚŚ Ś©Ś™ Ś”Ś§Ś©Śš, ŚœŚ™Ś•ŚžŚŸ, ŚœŚ™Ś•ŚžŚ Ś™ ڔکڙڗڕŚȘ Ś•ŚœŚžŚ›Ś©Ś™ŚšŚ™Ś Ś‘Ś§ŚšŚ‘ŚȘ ŚžŚ§Ś•Ś."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Ś”ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś” ڔږڕ ŚȘŚ•Ś›Śœ ŚœŚĄŚ Ś›ŚšŚŸ ŚžŚ™Ś“Śą, Ś›ŚžŚ• Ś”Ś©Ś کڜ ŚžŚ™Ś©Ś”Ś• Ś©ŚžŚȘŚ§Ś©Śš, Ś•ŚœŚ’Ś©ŚȘ ŚœŚ”ŚšŚ©ŚŚ•ŚȘ Ś”ŚŚœŚ” Ś‘<xliff:g id="DEVICE_TYPE">%1$s</xliff:g> کڜښ"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"‏ŚžŚȘڟ Ś”ŚšŚ©ŚŚ” ŚœŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś” ‎&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&amp;g;‎‏ ŚœŚ Ś”Śœ ڐŚȘ ‎&lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;‎‏"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"ŚžŚ©Ś§Ś€Ś™Ś™Ś"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"‏Ś”ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś” ڔږڕ Ś Ś—Ś•ŚŠŚ” ڛړڙ ŚœŚ Ś”Śœ ڐŚȘ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Ś”ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś” <xliff:g id="APP_NAME">%2$s</xliff:g> ŚȘŚ•Ś›Śœ ŚœŚ‘ŚŠŚą Ś€ŚąŚ•ŚœŚ•ŚȘ ڑڔŚȘŚšŚŚ•ŚȘ Ś•ŚȘŚ§Ś‘Śœ Ś”ŚšŚ©ŚŚ•ŚȘ ڒڙکڔ ŚœŚ˜ŚœŚ€Ś•ŚŸ, ڜ-SMS ŚœŚŚ Ś©Ś™ Ś”Ś§Ś©Śš, ŚœŚžŚ™Ś§ŚšŚ•Ś€Ś•ŚŸ Ś•ŚœŚžŚ›Ś©Ś™ŚšŚ™Ś Ś‘Ś§ŚšŚ‘ŚȘ ŚžŚ§Ś•Ś."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Ś”ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś” ڔږڕ ŚȘŚ•Ś›Śœ ŚœŚ’Ś©ŚȘ ŚœŚ”ŚšŚ©ŚŚ•ŚȘ Ś”ŚŚœŚ” Ś‘<xliff:g id="DEVICE_TYPE">%1$s</xliff:g> کڜښ"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"‏ŚžŚȘڟ ŚŚ™Ś©Ś•Śš ŚœŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś” &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ŚœŚ’Ś©ŚȘ ŚœŚžŚ™Ś“Śą ڔږڔ ŚžŚ”Ś˜ŚœŚ€Ś•ŚŸ کڜښ"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Ś©Ś™ŚšŚ•ŚȘŚ™Ś ŚœŚžŚĄŚ€Śš ŚžŚ›Ś©Ś™ŚšŚ™Ś"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"Ś”ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś” <xliff:g id="APP_NAME">%1$s</xliff:g> ŚžŚ‘Ś§Ś©ŚȘ Ś”ŚšŚ©ŚŚ” ŚąŚ‘Ś•Śš Ś”ŚžŚ›Ś©Ś™Śš <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ڛړڙ ŚœŚ©Ś“Śš ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś•ŚȘ Ś‘Ś™ŚŸ Ś”ŚžŚ›Ś©Ś™ŚšŚ™Ś کڜښ"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"‏ŚžŚȘڟ ŚŚ™Ś©Ś•Śš ŚœŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś” &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ŚœŚ’Ś©ŚȘ ŚœŚžŚ™Ś“Śą ڔږڔ ŚžŚ”Ś˜ŚœŚ€Ś•ŚŸ کڜښ"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play Services"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"Ś”ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś” <xliff:g id="APP_NAME">%1$s</xliff:g> ŚžŚ‘Ś§Ś©ŚȘ Ś”ŚšŚ©ŚŚ” ŚąŚ‘Ś•Śš Ś”ŚžŚ›Ś©Ś™Śš <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ڛړڙ ŚœŚ’Ś©ŚȘ ڜŚȘŚžŚ•Ś Ś•ŚȘ, ŚœŚžŚ“Ś™Ś” Ś•ŚœŚ”ŚȘŚšŚŚ•ŚȘ Ś‘Ś˜ŚœŚ€Ś•ŚŸ کڜښ"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"‏ڜŚȘŚȘ Ś”ŚšŚ©ŚŚ” ŚœŚžŚ›Ś©Ś™Śš &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ŚœŚ‘ŚŠŚą ڐŚȘ Ś”Ś€ŚąŚ•ŚœŚ” ڔږڕ?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Ś”ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś” <xliff:g id="APP_NAME">%1$s</xliff:g> ŚžŚ‘Ś§Ś©ŚȘ Ś”ŚšŚ©ŚŚ” ŚąŚ‘Ś•Śš <xliff:g id="DEVICE_NAME">%2$s</xliff:g> ڛړڙ ŚœŚ”ŚąŚ‘Ś™Śš ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś•ŚȘ Ś•ŚȘڛڕڠڕŚȘ ŚžŚąŚšŚ›ŚȘ ŚŚ—ŚšŚ•ŚȘ Ś‘ŚĄŚ˜ŚšŚ™ŚžŚ™Ś Ś’ ŚœŚžŚ›Ś©Ś™ŚšŚ™Ś Ś‘Ś§ŚšŚ‘ŚȘ ŚžŚ§Ś•Ś"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"ŚžŚ›Ś©Ś™Śš"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ja/strings.xml b/packages/CompanionDeviceManager/res/values-ja/strings.xml
index 8301654..3420eb7 100644
--- a/packages/CompanionDeviceManager/res/values-ja/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ja/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"ă‚Šă‚©ăƒƒăƒ"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; ăźçźĄç†ćŻŸè±ĄăšăȘる<xliff:g id="PROFILE_NAME">%1$s</xliff:g>ăźéžæŠž"</string>
     <string name="summary_watch" msgid="898569637110705523">"こぼケプăƒȘは<xliff:g id="DEVICE_NAME">%1$s</xliff:g>ăźçźĄç†ă«ćż…èŠă§ă™ă€‚<xliff:g id="APP_NAME">%2$s</xliff:g> ăŻé€šè©±ç›žæ‰‹ăźćć‰ăȘă©ăźæƒ…ć ±ă‚’ćŒæœŸă—ăŸă‚Šă€ăƒ‡ăƒă‚€ă‚čăźé€šçŸ„ă‚’äœżç”šă—ăŸă‚Šă€é›»è©±ă€SMSă€é€Łç”Ąć…ˆă€ă‚«ăƒŹăƒłăƒ€ăƒŒă€é€šè©±ć±„æ­Žă€ä»˜èż‘ăźăƒ‡ăƒă‚€ă‚čăźæš©é™ă«ă‚ąă‚Żă‚»ă‚čă—ăŸă‚Šă§ăă‚‹ă‚ˆă†ă«ăȘă‚ŠăŸă™ă€‚"</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"こぼケプăƒȘăŻă€é€šè©±ç›žæ‰‹ăźćć‰ăȘă©ăźæƒ…ć ±ă‚’ćŒæœŸă—ăŸă‚Šă€<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>ăźä»„äž‹ăźæš©é™ă«ă‚ąă‚Żă‚»ă‚čă—ăŸă‚Šă§ăă‚‹ă‚ˆă†ă«ăȘă‚ŠăŸă™"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; に &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; ăźçźĄç†ă‚’èš±ćŻă—ăŸă™ă‹ïŒŸ"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"çœŒéĄ"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"こぼケプăƒȘは <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ăźçźĄç†ă«ćż…èŠă§ă™ă€‚<xliff:g id="APP_NAME">%2$s</xliff:g> ăŻăƒ‡ăƒă‚€ă‚čăźé€šçŸ„ă‚’äœżç”šă—ăŸă‚Šă€é›»è©±ă€SMSă€é€Łç”Ąć…ˆă€ăƒžă‚€ă‚Żă€ä»˜èż‘ăźăƒ‡ăƒă‚€ă‚čăźæš©é™ă«ă‚ąă‚Żă‚»ă‚čă—ăŸă‚Šă§ăă‚‹ă‚ˆă†ă«ăȘă‚ŠăŸă™ă€‚"</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"こぼケプăƒȘは、<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>ăźä»„äž‹ăźæš©é™ă«ă‚ąă‚Żă‚»ă‚čă§ăă‚‹ă‚ˆă†ă«ăȘă‚ŠăŸă™"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"ă‚čăƒžăƒŒăƒˆăƒ•ă‚©ăƒłăźă“ăźæƒ…ć ±ăžăźă‚ąă‚Żă‚»ă‚čを &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ă«èš±ćŻ"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"クロă‚čăƒ‡ăƒă‚€ă‚č ă‚”ăƒŒăƒ“ă‚č"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> が <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ă«ä»Łă‚ăŁăŠăƒ‡ăƒă‚€ă‚č間でケプăƒȘをă‚čトăƒȘăƒŒăƒŸăƒłă‚°ă™ă‚‹æš©é™ă‚’ăƒȘクスă‚čăƒˆă—ăŠă„ăŸă™"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"ă‚čăƒžăƒŒăƒˆăƒ•ă‚©ăƒłăźă“ăźæƒ…ć ±ăžăźă‚ąă‚Żă‚»ă‚čを &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ă«èš±ćŻ"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play 開ç™șè€…ă‚”ăƒŒăƒ“ă‚č"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> が <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ă«ä»Łă‚ăŁăŠă‚čăƒžăƒŒăƒˆăƒ•ă‚©ăƒłăźć†™çœŸă€ăƒĄăƒ‡ă‚Łă‚ąă€é€šçŸ„ă«ă‚ąă‚Żă‚»ă‚čă™ă‚‹æš©é™ă‚’ăƒȘクスă‚čăƒˆă—ăŠă„ăŸă™"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ă«ă“ăźæ“äœœăźćźŸèĄŒă‚’èš±ćŻă—ăŸă™ă‹ïŒŸ"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> が <xliff:g id="DEVICE_NAME">%2$s</xliff:g> ă«ä»Łă‚ăŁăŠă€ă‚ąăƒ—ăƒȘă‚„ăăźä»–ăźă‚·ă‚čăƒ†ăƒ æ©Ÿèƒœă‚’ä»˜èż‘ăźăƒ‡ăƒă‚€ă‚čにă‚čトăƒȘăƒŒăƒŸăƒłă‚°ă™ă‚‹æš©é™ă‚’ăƒȘクスă‚čăƒˆă—ăŠă„ăŸă™"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"ăƒ‡ăƒă‚€ă‚č"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ka/strings.xml b/packages/CompanionDeviceManager/res/values-ka/strings.xml
index 88c03c6..870f7ef 100644
--- a/packages/CompanionDeviceManager/res/values-ka/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ka/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"საათი"</string>
     <string name="chooser_title" msgid="2262294130493605839">"აირჩიეთ <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, რომელიáƒȘ უნდა მართოს &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;-მა"</string>
     <string name="summary_watch" msgid="898569637110705523">"ეს აპი საჭიროა თჄვენი <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ქ სამართავად. <xliff:g id="APP_NAME">%2$s</xliff:g>-ქ ეჄნება ისეთი ინჀორმაáƒȘიიქ áƒĄáƒ˜áƒœáƒ„áƒ áƒáƒœáƒ˜áƒ–áƒáƒȘიიქ áƒŁáƒ€áƒšáƒ”áƒ‘áƒ, როგორიáƒȘ იმ ადამიანის საჼელია, რომელიáƒȘ გირეკავთ; ასევე, áƒ—áƒ„áƒ•áƒ”áƒœáƒĄ ჹეჱყობინებებთან áƒ˜áƒœáƒąáƒ”áƒ áƒáƒ„áƒȘიიქა და áƒ—áƒ„áƒ•áƒ”áƒœáƒĄ áƒąáƒ”áƒšáƒ”áƒ€áƒáƒœáƒ–áƒ”, SMS-ებზე, áƒ™áƒáƒœáƒąáƒáƒ„áƒąáƒ”áƒ‘áƒ–áƒ”, კალენდარზე, ზარების ჟურნალებსა და აჼლომაჼლო მოწყობილობების ნებართვებზე წვდომის áƒŁáƒ€áƒšáƒ”áƒ‘áƒ."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"ეს აპი áƒšáƒ”áƒ«áƒšáƒ”áƒ‘áƒĄ ინჀორმაáƒȘიიქ áƒĄáƒ˜áƒœáƒ„áƒ áƒáƒœáƒ˜áƒ–áƒ”áƒ‘áƒáƒĄ (მაგალითად, იმ ადამიანის საჼელი, რომელიáƒȘ გირეკავთ) და ამ წვდომებზე áƒŁáƒ€áƒšáƒ”áƒ‘áƒ˜áƒĄ მოპოვებას áƒ—áƒ„áƒ•áƒ”áƒœáƒĄ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>-ლი"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"ნება დართეთ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ს&lt;/strong&gt; მართოს &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"სათვალე"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"ეს აპი საჭიროა თჄვენი <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-იქ სამართავად. <xliff:g id="APP_NAME">%2$s</xliff:g> áƒšáƒ”áƒ«áƒšáƒ”áƒ‘áƒĄ áƒ—áƒ„áƒ•áƒ”áƒœáƒĄ ჹეჱყობინებებთან áƒ˜áƒœáƒąáƒ”áƒ áƒáƒ„áƒȘიაქ და áƒ—áƒ„áƒ•áƒ”áƒœáƒĄ áƒąáƒ”áƒšáƒ”áƒ€áƒáƒœáƒ–áƒ”, SMS-ებზე, áƒ™áƒáƒœáƒąáƒáƒ„áƒąáƒ”áƒ‘áƒ–áƒ”, áƒ›áƒ˜áƒ™áƒ áƒáƒ€áƒáƒœáƒĄáƒ და აჼლომაჼლო მოწყობილობების ნებართვებზე წვდომას."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"ეს აპი áƒšáƒ”áƒ«áƒšáƒ”áƒ‘áƒĄ ამ ნებართვებზე წვდომას áƒ—áƒ„áƒ•áƒ”áƒœáƒĄ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>-ლი"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"ნება დართეთ, რომ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; აპს áƒ°áƒ„áƒáƒœáƒ“áƒ”áƒĄ ამ ინჀორმაáƒȘიაზე წვდომა თჄვენი áƒąáƒ”áƒšáƒ”áƒ€áƒáƒœáƒ˜áƒ“áƒáƒœ"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"მოწყობილობათჹორისი სერვისები"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> ითჼოვს áƒŁáƒ€áƒšáƒ”áƒ‘áƒáƒĄ თჄვენი <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>-იქ საჼელით, რომ მოწყობილობებს ჹორის სჱრიმინგი áƒšáƒ”áƒ«áƒšáƒáƒĄ"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"ნება დართეთ, რომ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; აპს áƒ°áƒ„áƒáƒœáƒ“áƒ”áƒĄ ამ ინჀორმაáƒȘიაზე წვდომა თჄვენი áƒąáƒ”áƒšáƒ”áƒ€áƒáƒœáƒ˜áƒ“áƒáƒœ"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play services"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> ითჼოვს áƒŁáƒ€áƒšáƒ”áƒ‘áƒáƒĄ თჄვენი <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>-იქ საჼელით, რომ წვდომა áƒ°áƒ„áƒáƒœáƒ“áƒ”áƒĄ თჄვენი áƒąáƒ”áƒšáƒ”áƒ€áƒáƒœáƒ˜áƒĄ áƒ€áƒáƒąáƒáƒ”áƒ‘áƒ–áƒ”, მედიასა და ჹეჱყობინებებზე"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"გსურთ ნება მისáƒȘეთ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ქ&lt;/strong&gt; ამ áƒ›áƒáƒ„áƒ›áƒ”áƒ“áƒ”áƒ‘áƒ˜áƒĄ ჹესასრულებლად?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> ითჼოვს თჄვენი <xliff:g id="DEVICE_NAME">%2$s</xliff:g>-იქ საჼელით აპების და სისჱემის სჼვა áƒ€áƒŁáƒœáƒ„áƒȘიების აჼლომაჼლო მოწყობილობებზე სჱრიმინგის ნებართვას"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"მოწყობილობა"</string>
diff --git a/packages/CompanionDeviceManager/res/values-kk/strings.xml b/packages/CompanionDeviceManager/res/values-kk/strings.xml
index fe3afa1..9e5ea72 100644
--- a/packages/CompanionDeviceManager/res/values-kk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-kk/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"ŃĐ°Ò“Đ°Ń‚"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; Đ°Ń€Ò›Ń‹Đ»Ń‹ Đ±Đ°ŃÒ›Đ°Ń€Ń‹Đ»Đ°Ń‚Ń‹Đœ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ŃŃ‹Đœ Ń‚Đ°ÒŁĐŽĐ°ÒŁŃ‹Đ·"</string>
     <string name="summary_watch" msgid="898569637110705523">"Đ‘Ò±Đ» Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ° <xliff:g id="DEVICE_NAME">%1$s</xliff:g> Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ŃŃ‹Đœ Đ±Đ°ŃÒ›Đ°Ń€Ńƒ ÒŻŃˆŃ–Đœ Ò›Đ°Đ¶Đ”Ń‚. <xliff:g id="APP_NAME">%2$s</xliff:g> Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°ŃŃ‹ Ò›ĐŸÒŁŃ‹Ń€Đ°Ńƒ ŃˆĐ°Đ»ŃƒŃˆŃ‹ĐœŃ‹ÒŁ аты ŃĐžŃÒ›Ń‚Ń‹ ЎДрДĐșті ŃĐžĐœŃ…Ń€ĐŸĐœĐŽĐ°Ńƒ, Ń…Đ°Đ±Đ°Ń€Đ»Đ°ĐœĐŽŃ‹Ń€ŃƒĐ»Đ°Ń€ĐŽŃ‹ ĐŸÒ›Ńƒ Đ¶Ó™ĐœĐ” Ń‚Đ”Đ»Đ”Ń„ĐŸĐœ, SMS, ĐșĐŸĐœŃ‚Đ°ĐșтілДр, ĐșÒŻĐœŃ‚Ń–Đ·Đ±Đ”, Ò›ĐŸÒŁŃ‹Ń€Đ°Ńƒ Đ¶ŃƒŃ€ĐœĐ°Đ»ĐŽĐ°Ń€Ń‹ ĐŒĐ”Đœ ĐŒĐ°ÒŁĐ°ĐčĐŽĐ°Ò“Ń‹ Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹Đ»Đ°Ń€ Ń€Ò±Ò›ŃĐ°Ń‚Ń‚Đ°Ń€Ń‹Đœ паĐčĐŽĐ°Đ»Đ°ĐœĐ° алаЎы."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Đ‘Ò±Đ» Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ° Ò›ĐŸÒŁŃ‹Ń€Đ°Ńƒ ŃˆĐ°Đ»ŃƒŃˆŃ‹ĐœŃ‹ÒŁ аты ŃĐžŃÒ›Ń‚Ń‹ ЎДрДĐșті ŃĐžĐœŃ…Ń€ĐŸĐœĐŽĐ°Đč алаЎы Đ¶Ó™ĐœĐ” <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ŃŃ‹ĐœĐŽĐ°Ò“Ń‹ ĐŒŃ‹ĐœĐ° Ń€Ò±Ò›ŃĐ°Ń‚Ń‚Đ°Ń€ĐŽŃ‹ паĐčĐŽĐ°Đ»Đ°ĐœĐ° алаЎы."</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°ŃŃ‹ĐœĐ° &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ŃŃ‹Đœ Đ±Đ°ŃÒ›Đ°Ń€ŃƒÒ“Đ° Ń€Ò±Ò›ŃĐ°Ń‚ Đ±Đ”Ń€Ńƒ ĐșДрДĐș пД?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"ĐșөзілЎіріĐș"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Đ‘Ò±Đ» Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ° <xliff:g id="DEVICE_NAME">%1$s</xliff:g> Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ŃŃ‹Đœ Đ±Đ°ŃÒ›Đ°Ń€Ńƒ ÒŻŃˆŃ–Đœ Ò›Đ°Đ¶Đ”Ń‚. <xliff:g id="APP_NAME">%2$s</xliff:g> Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°ŃŃ‹ĐœĐ° Ń…Đ°Đ±Đ°Ń€Đ»Đ°ĐœĐŽŃ‹Ń€ŃƒĐ»Đ°Ń€ĐŽŃ‹ ĐŸÒ›ŃƒÒ“Đ°, Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐŽŃ‹, хабарларЎы, ĐșĐŸĐœŃ‚Đ°ĐșтілДрЎі, ĐŒĐžĐșŃ€ĐŸŃ„ĐŸĐœ ĐŒĐ”Đœ ĐŒĐ°ÒŁĐ°ĐčĐŽĐ°Ò“Ń‹ Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹Đ»Đ°Ń€ĐŽŃ‹ паĐčĐŽĐ°Đ»Đ°ĐœŃƒÒ“Đ° Ń€Ò±Ò›ŃĐ°Ń‚ бДрілДЎі."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Đ‘Ò±Đ» Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ° <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ŃŃ‹ĐœĐŽĐ° ĐŸŃŃ‹ Ń€Ò±Ò›ŃĐ°Ń‚Ń‚Đ°Ń€ĐŽŃ‹ паĐčĐŽĐ°Đ»Đ°ĐœĐ° алаЎы."</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°ŃŃ‹ĐœĐ° Ń‚Đ”Đ»Đ”Ń„ĐŸĐœŃ‹ÒŁŃ‹Đ·ĐŽĐ°Ò“Ń‹ ĐŸŃŃ‹ Đ°Ò›ĐżĐ°Ń€Đ°Ń‚Ń‚Ń‹ паĐčĐŽĐ°Đ»Đ°ĐœŃƒÒ“Đ° Ń€Ò±Ò›ŃĐ°Ń‚ Đ±Đ”Ń€Ń–ÒŁŃ–Đ·."</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"ĐŃ€Đ°Đ»Ń‹Ò› Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ Ò›Ń‹Đ·ĐŒĐ”Ń‚Ń‚Đ”Ń€Ń–"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°ŃŃ‹ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> Đ°Ń‚Ń‹ĐœĐ°Đœ Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹Đ»Đ°Ń€ Đ°Ń€Đ°ŃŃ‹ĐœĐŽĐ° Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°Đ»Đ°Ń€ Ń‚Ń€Đ°ĐœŃĐ»ŃŃ†ĐžŃĐ»Đ°Ńƒ ÒŻŃˆŃ–Đœ Ń€Ò±Ò›ŃĐ°Ń‚ ŃÒ±Ń€Đ°ĐčЮы."</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°ŃŃ‹ĐœĐ° Ń‚Đ”Đ»Đ”Ń„ĐŸĐœŃ‹ÒŁŃ‹Đ·ĐŽĐ°Ò“Ń‹ ĐŸŃŃ‹ Đ°Ò›ĐżĐ°Ń€Đ°Ń‚Ń‚Ń‹ паĐčĐŽĐ°Đ»Đ°ĐœŃƒÒ“Đ° Ń€Ò±Ò›ŃĐ°Ń‚ Đ±Đ”Ń€Ń–ÒŁŃ–Đ·."</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play Ò›Ń‹Đ·ĐŒĐ”Ń‚Ń‚Đ”Ń€Ń–"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°ŃŃ‹ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> Đ°Ń‚Ń‹ĐœĐ°Đœ Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐŽĐ°Ò“Ń‹ Ń„ĐŸŃ‚ĐŸŃŃƒŃ€Đ”Ń‚Ń‚Đ”Ń€ĐŽŃ–, ĐŒĐ”ĐŽĐžĐ°Ń„Đ°ĐčлЎар ĐŒĐ”Đœ Ń…Đ°Đ±Đ°Ń€Đ»Đ°ĐœĐŽŃ‹Ń€ŃƒĐ»Đ°Ń€ĐŽŃ‹ паĐčĐŽĐ°Đ»Đ°ĐœŃƒ ÒŻŃˆŃ–Đœ Ń€Ò±Ò›ŃĐ°Ń‚ ŃÒ±Ń€Đ°ĐčЮы."</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ŃŃ‹ĐœĐ° Đ±Ò±Đ» әрДĐșДтті ĐŸŃ€Ń‹ĐœĐŽĐ°ŃƒÒ“Đ° Ń€Ò±Ò›ŃĐ°Ń‚ Đ±Đ”Ń€Ńƒ ĐșДрДĐș пД?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°ŃŃ‹ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> Đ°Ń‚Ń‹ĐœĐ°Đœ Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°Đ»Đ°Ń€ ĐŒĐ”Đœ Đ±Đ°ŃÒ›Đ° Ўа Đ¶ÒŻĐčĐ” Ń„ŃƒĐœĐșŃ†ĐžŃĐ»Đ°Ń€Ń‹Đœ ĐŒĐ°ÒŁĐ°ĐčĐŽĐ°Ò“Ń‹ Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹Đ»Đ°Ń€Ò“Đ° Ń‚Ń€Đ°ĐœŃĐ»ŃŃ†ĐžŃĐ»Đ°Ńƒ Ń€Ò±Ò›ŃĐ°Ń‚Ń‹Đœ ŃÒ±Ń€Đ°Đż Ń‚Ò±Ń€."</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹"</string>
diff --git a/packages/CompanionDeviceManager/res/values-km/strings.xml b/packages/CompanionDeviceManager/res/values-km/strings.xml
index 62ad055..445c89c 100644
--- a/packages/CompanionDeviceManager/res/values-km/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-km/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"នាឥិកា"</string>
     <string name="chooser_title" msgid="2262294130493605839">"ជ្រសសរសស <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ដសម្បឞឱ្យស្ថិតក្រោម​ការគ្រប់គ្រងរបស់ &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"ត្រឌវការកម្មវិធឞនេះ ដសម្បឞគ្រប់គ្រង <xliff:g id="DEVICE_NAME">%1$s</xliff:g> របស់ឱ្នក។ <xliff:g id="APP_NAME">%2$s</xliff:g> នážčáž„ážáŸ’ážšážŒážœáž”áž¶áž“ážąáž“áž»áž‰áŸ’áž‰áž¶ážáž±áŸ’áž™â€‹áž’áŸ’ážœážŸážŸáž˜áž€áž¶áž›áž€áž˜áŸ’áž˜áž–áŸážáŸŒáž˜áž¶áž“ ដឌចជាឈ្មោះមនុស្សដែលហៅទឌរសព្ទជាដសម áž’áŸ’ážœážŸážąáž“áŸ’ážážšáž€áž˜áŸ’áž˜áž‡áž¶áž˜ážœáž™áž€áž¶ážšáž‡ážŒáž“ážŠáŸ†ážŽážčងរបស់ឱ្នក áž“áž·áž„áž…ážŒáž›áž”áŸ’ážšážŸáž€áž¶ážšážąáž“áž»áž‰áŸ’áž‰áž¶ážáž‘ážŒážšážŸáž–áŸ’áž‘, SMS, ទំនាក់ទំនង, ប្រតិទិន, កំណត់ហេតុហៅទឌរសព្ទ áž“áž·áž„áž§áž”áž€ážšážŽáŸáž“áŸ…áž‡áž·ážážšáž”ážŸáŸ‹ážąáŸ’áž“áž€áŸ”"</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"កម្មវិធឞនេះនážčáž„ážáŸ’ážšážŒážœáž”áž¶áž“ážąáž“áž»áž‰áŸ’áž‰áž¶ážáž±áŸ’áž™áž’áŸ’ážœážŸážŸáž˜áž€áž¶áž›áž€áž˜áŸ’áž˜áž–áŸážáŸŒáž˜áž¶áž“ ដឌចជាឈ្មោះមនុស្សដែលហៅទឌរសព្ទជាដសម áž“áž·áž„áž…ážŒáž›áž”áŸ’ážšážŸáž€áž¶ážšážąáž“áž»áž‰áŸ’áž‰áž¶ážáž‘áž¶áŸ†áž„áž“áŸáŸ‡áž“áŸ…áž›ážŸ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> របស់ឱ្នក"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"ážąáž“áž»áž‰áŸ’áž‰áž¶ážáž±áŸ’áž™ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; គ្រប់គ្រង &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; ឬ?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"វ៉ែនតា"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"ត្រឌវការកម្មវិធឞនេះ ដសម្បឞគ្រប់គ្រង <xliff:g id="DEVICE_NAME">%1$s</xliff:g>។ <xliff:g id="APP_NAME">%2$s</xliff:g> នážčáž„ážáŸ’ážšážŒážœáž”áž¶áž“ážąáž“áž»áž‰áŸ’áž‰áž¶ážáž±áŸ’áž™â€‹áž’áŸ’ážœážŸážąáž“áŸ’ážážšáž€áž˜áŸ’áž˜áž‡áž¶áž˜ážœáž™â€‹áž€áž¶ážšáž‡ážŒáž“ážŠáŸ†ážŽážčងរបស់ឱ្នក áž“áž·áž„áž…ážŒáž›áž”áŸ’ážšážŸáž€áž¶ážšážąáž“áž»áž‰áŸ’áž‰áž¶ážâ€‹ážšáž”ážŸáŸ‹áž‘ážŒážšážŸáž–áŸ’áž‘, SMS, ទំនាក់ទំនង, មឞក្រឌហ្វឌន áž“áž·áž„áž§áž”áž€ážšážŽáŸáž“áŸ…áž‡áž·ážâ€‹ážšáž”ážŸáŸ‹ážąáŸ’áž“áž€áŸ”"</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"កម្មវិធឞនេះ​នážčáž„ážáŸ’ážšážŒážœáž”áž¶áž“ážąáž“áž»áž‰áŸ’áž‰áž¶ážáž±áŸ’áž™â€‹áž…ážŒáž›áž”áŸ’ážšážŸáž€áž¶ážšážąáž“áž»áž‰áŸ’áž‰áž¶ážáž‘áž¶áŸ†áž„áž“áŸáŸ‡â€‹áž“áŸ…áž›ážŸ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> របស់ឱ្នក"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"ážąáž“áž»áž‰áŸ’áž‰áž¶ážáž±áŸ’áž™ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; áž…ážŒáž›áž”áŸ’ážšážŸáž–áŸážáŸŒáž˜áž¶áž“áž“áŸáŸ‡áž–ážžáž‘ážŒážšážŸáž–áŸ’áž‘ážšáž”ážŸáŸ‹ážąáŸ’áž“áž€"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"សេវាកម្មឆ្លងកាត់ឧបករណ៍"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> áž€áŸ†áž–áž»áž„ážŸáŸ’áž“ážŸážŸáž»áŸ†áž€áž¶ážšážąáž“áž»áž‰áŸ’áž‰áž¶ážáž‡áŸ†áž“ážœážŸáž±áŸ’áž™ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> របស់ឱ្នក ážŠážŸáž˜áŸ’áž”ážžáž”áž‰áŸ’áž…áž¶áŸ†áž„áž€áž˜áŸ’áž˜ážœáž·áž’ážžážšážœáž¶áž„áž§áž”áž€ážšážŽáŸážšáž”ážŸáŸ‹ážąáŸ’áž“áž€"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"ážąáž“áž»áž‰áŸ’áž‰áž¶ážáž±áŸ’áž™ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; áž…ážŒáž›áž˜ážŸáž›áž–áŸážáŸŒáž˜áž¶áž“áž“áŸáŸ‡áž–ážžáž‘ážŒážšážŸáž–áŸ’áž‘ážšáž”ážŸáŸ‹ážąáŸ’áž“áž€"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"សេវាកម្ម Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> áž€áŸ†áž–áž»áž„ážŸáŸ’áž“ážŸážŸáž»áŸ†áž€áž¶ážšážąáž“áž»áž‰áŸ’áž‰áž¶ážáž‡áŸ†áž“ážœážŸáž±áŸ’áž™ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> របស់ឱ្នក ដសម្បឞចឌលប្រសរឌបថត មេឌៀ និងការជឌនដំណážčáž„ážšáž”ážŸáŸ‹áž‘ážŒážšážŸáž–áŸ’áž‘ážąáŸ’áž“áž€"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"ážąáž“áž»áž‰áŸ’áž‰áž¶ážáž±áŸ’áž™ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; áž’áŸ’ážœážŸážŸáž€áž˜áŸ’áž˜áž—áž¶áž–áž“áŸáŸ‡ážŹ?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> áž€áŸ†áž–áž»áž„ážŸáŸ’áž“ážŸážŸáž»áŸ†â€‹áž€áž¶ážšážąáž“áž»áž‰áŸ’áž‰áž¶ážáž‡áŸ†áž“ážœážŸáž±áŸ’áž™ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> របស់ឱ្នក ដសម្បឞចាក់ផ្សាយកម្មវិធឞ និងមុខងារប្រព័ន្ធផ្សេងទៀត​ទៅកាន់​ឧបករណ៍នៅជិត"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"ឧបករណ៍"</string>
diff --git a/packages/CompanionDeviceManager/res/values-kn/strings.xml b/packages/CompanionDeviceManager/res/values-kn/strings.xml
index 940c8f9..21b4cc0 100644
--- a/packages/CompanionDeviceManager/res/values-kn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-kn/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"àČ”àł€àČ•àłàČ·àČżàČžàČż"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; àČźàł‚àČČàȕ àČšàČżàČ°àłàČ”àČčàČżàČžàČŹàł‡àȕàČŸàČŠ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> àȅàČšàłàČšàł àȆàČŻàłàČ•àł†àČźàČŸàČĄàČż"</string>
     <string name="summary_watch" msgid="898569637110705523">"àČšàČżàČźàłàČź <xliff:g id="DEVICE_NAME">%1$s</xliff:g> àȅàČšàłàČšàł àČšàČżàČ°àłàČ”àČčàČżàČžàČČàł àȈ àČ†àłàČŻàČȘàł‌àČš àȅàȗàČ€àłàČŻàČ”àČżàČŠàł†. àȕàČ°àł† àČźàČŸàČĄàłàČ”àČ”àȰ àČčàł†àČžàČ°àł, àČšàČżàČźàłàČź àȅàȧàČżàČžàł‚àȚàČšàł†àȗàČłàłŠàȂàČŠàČżàČ—àł† àČžàȂàČ”àČčàČš àČšàČĄàł†àČžàČČàł àČźàČ€àłàČ€àł àČ«àł‹àČšàł, SMS, àČžàȂàČȘàČ°àłàȕàȗàČłàł, àČ•àłàČŻàČŸàČČàł†àȂàČĄàČ°àł, àȕàČ°àł†àČŻ àČČàČŸàČ—àł‌àȗàČłàł àČźàČ€àłàČ€àł àČžàČźàł€àČȘàČŠàČČàłàČČàČżàČ°àłàČ” àČžàČŸàȧàČšàȗàČł àČŠàłƒàČąàł€àȕàȰàČŁàȗàČłàȂàČ€àČč àČźàČŸàČčàČżàČ€àČżàČŻàČšàłàČšàł àČžàČżàȂàČ•àł àČźàČŸàČĄàČČàł <xliff:g id="APP_NAME">%2$s</xliff:g> àČ—àł† àČžàČŸàČ§àłàČŻàČ”àČŸàČ—àłàČ€àłàČ€àČŠàł†."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"àȕàČ°àł† àČźàČŸàČĄàłàČ”àČ”àȰ àČčàł†àČžàȰàČżàČšàȂàČ€àČč àČźàČŸàČčàČżàČ€àČżàČŻàČšàłàČšàł àČžàČżàȂàČ•àł àČźàČŸàČĄàČČàł àČźàČ€àłàČ€àł àȈ àȅàČšàłàČźàČ€àČżàȗàČłàČšàłàČšàł àČšàČżàČźàłàČź <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> àČšàČČàłàČČàČż àČ†àłàČŻàČ•àłàČžàł†àČžàł àČźàČŸàČĄàČČàł àȈ àČ†àłàČŻàČȘàł‌àČ—àł† àȅàČšàłàČźàČ€àČżàČžàČČàČŸàČ—àłàČ€àłàČ€àČŠàł†"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;? àČšàČżàČ°àłàČ”àČčàČżàČžàČČàł &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àČ—àł† àȅàČšàłàČźàČ€àČżàČžàČŹàł‡àČ•àł‡?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"àČ—àłàČČàČŸàČžàł‌àȗàČłàł"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> àȅàČšàłàČšàł àČšàČżàČ°àłàČ”àČčàČżàČžàČČàł àȈ àČ†àłàČŻàČȘàł‌àČš àȅàȗàČ€àłàČŻàČ”àČżàČŠàł†. <xliff:g id="APP_NAME">%2$s</xliff:g> àČšàČżàČźàłàČź àȅàȧàČżàČžàł‚àȚàČšàł†àȗàČłàłŠàȂàČŠàČżàČ—àł† àČžàȂàČ”àČčàČš àČšàČĄàł†àČžàČČàł àČźàČ€àłàČ€àł àČšàČżàČźàłàČź àČ«àł‹àČšàł, SMS, àČžàȂàČȘàČ°àłàȕàȗàČłàł, àČźàłˆàČ•àłàČ°àłŠàČ«àł‹àČšàł àČźàČ€àłàČ€àł àČžàČźàł€àČȘàČŠàČČàłàČČàČżàČ°àłàČ” àČžàČŸàȧàČšàȗàČł àȅàČšàłàČźàČ€àČżàȗàČłàČšàłàČšàł àČ†àłàČŻàČ•àłàČžàł†àČžàł àČźàČŸàČĄàČČàł àȅàČšàłàČźàČ€àČżàČžàČČàČŸàČ—àłàČ€àłàČ€àČŠàł†."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"àČšàČżàČźàłàČź <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> àČšàČČàłàČČàČż àȈ àȅàČšàłàČźàČ€àČżàȗàČłàČšàłàČšàł àČ†àłàČŻàČ•àłàČžàł†àČžàł àČźàČŸàČĄàČČàł àȈ àČ†àłàČŻàČȘàł‌àČ—àł† àȅàČšàłàČźàČ€àČżàČžàČČàČŸàČ—àłàČ€àłàČ€àČŠàł†"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"àČšàČżàČźàłàČź àČ«àł‹àČšàł àČźàł‚àČČàȕ àȈ àČźàČŸàČčàČżàČ€àČżàČŻàČšàłàČšàł àČ†àłàČŻàČ•àłàČžàł†àČžàł àČźàČŸàČĄàČČàł &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àČ—àł† àȅàČšàłàČźàČ€àČżàČžàČż"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"àČ•àłàȰàČŸàČžàł-àČĄàČżàČ”àłˆàČžàł àČžàł‡àČ”àł†àȗàČłàł"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"àČšàČżàČźàłàČź àČžàČŸàȧàČšàȗàČł àČšàČĄàłàČ”àł† àČ†àłàČŻàČȘàł‌àȗàČłàČšàłàČšàł àČžàłàČŸàłàČ°àł€àČźàł àČźàČŸàČĄàČČàł àČšàČżàČźàłàČź <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> àČš àČȘàȰàČ”àČŸàȗàČż <xliff:g id="APP_NAME">%1$s</xliff:g> àȅàČšàłàČźàČ€àČżàČŻàČšàłàČšàł àČ”àČżàČšàȂàČ€àČżàČžàČżàČ•àłŠàČłàłàČłàłàČ€àłàČ€àČżàČŠàł†"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"àČšàČżàČźàłàČź àČ«àł‹àČšàł àČźàł‚àČČàȕ àȈ àČźàČŸàČčàČżàČ€àČżàČŻàČšàłàČšàł àČȘàłàȰàČ”àł‡àȶàČżàČžàČČàł &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àČ—àł† àȅàČšàłàČźàČ€àČżàČžàČż"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play àČžàł‡àČ”àł†àȗàČłàł"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"àČšàČżàČźàłàČź àČ«àł‹àČšàł‌àČš àČ«àł‹àČŸàł‹àȗàČłàł, àČźàł€àČĄàČżàČŻàČŸ àČźàČ€àłàČ€àł àȅàȧàČżàČžàł‚àȚàČšàł†àȗàČłàČšàłàČšàł àČ†àłàČŻàČ•àłàČžàł†àČžàł àČźàČŸàČĄàČČàł àČšàČżàČźàłàČź <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> àČš àČȘàȰàČ”àČŸàȗàČż <xliff:g id="APP_NAME">%1$s</xliff:g> àȅàČšàłàČźàČ€àČżàČŻàČšàłàČšàł àČ”àČżàČšàȂàČ€àČżàČžàČżàČ•àłŠàČłàłàČłàłàČ€àłàČ€àČżàČŠàł†"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"àȈ àČ†àłàČŻàČ•àłàČ·àČšàł àȅàČšàłàČšàł àČ€àł†àČ—àł†àČŠàłàČ•àłŠàČłàłàČłàČČàł &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; àȅàČšàłàČźàČ€àČżàČžàČŹàł‡àČ•àł‡?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"àČžàČźàł€àČȘàČŠàČČàłàČČàČżàČ°àłàČ” àČžàČŸàȧàČšàȗàČłàČżàČ—àł† àČ†àłàČŻàČȘàł‌àȗàČłàł àČźàČ€àłàČ€àł àȇàČ€àȰ àČžàČżàČžàłàȟàȂ àČ«àł€àȚàČ°àł‌àȗàČłàČšàłàČšàł àČžàłàČŸàłàČ°àł€àČźàł àČźàČŸàČĄàČČàł àČšàČżàČźàłàČź <xliff:g id="DEVICE_NAME">%2$s</xliff:g> àȰ àČȘàȰàČ”àČŸàȗàČż <xliff:g id="APP_NAME">%1$s</xliff:g> àȅàČšàłàČźàČ€àČżàČŻàČšàłàČšàł àČ”àČżàČšàȂàČ€àČżàČžàłàČ€àłàČ€àČżàČŠàł†"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"àČžàČŸàȧàČš"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ko/strings.xml b/packages/CompanionDeviceManager/res/values-ko/strings.xml
index 5c225c2..be2c70d 100644
--- a/packages/CompanionDeviceManager/res/values-ko/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ko/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"ì‹œêł„"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;에서 êŽ€ëŠŹí•  <xliff:g id="PROFILE_NAME">%1$s</xliff:g>을(넌) 선택"</string>
     <string name="summary_watch" msgid="898569637110705523">"읎 앱은 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ꞰꞰ넌 êŽ€ëŠŹí•˜ëŠ” 데 필요합니닀. <xliff:g id="APP_NAME">%2$s</xliff:g>에서 ì •ëłŽ(예: 발신자 읎늄)넌 ë™êž°í™”í•˜êł , ì•ŒëŠŒêłŒ ìƒí˜žìž‘ìš©í•˜êł , 전화, SMS, 연띜ìȘ, ìș˜ëŠ°ë”, 톔화 êž°ëĄ 및 ê·ŒìȘ ꞰꞰ에 ì•Ąì„žìŠ€í•  수 있êȌ 됩니닀."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"읎 앱읎 ì •ëłŽ(예: 발신자 읎늄)넌 ë™êž°í™”í•˜êł  <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>에서 ìŽëŸŹí•œ 권한에 ì•Ąì„žìŠ€í•  수 있êȌ 됩니닀."</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;에서 &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;? ꞰꞰ넌 êŽ€ëŠŹí•˜ë„ëĄ 허용"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"안êČœ"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"읎 앱은 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ꞰꞰ넌 êŽ€ëŠŹí•˜ëŠ” 데 필요합니닀. <xliff:g id="APP_NAME">%2$s</xliff:g>에서 ì•ŒëŠŒêłŒ ìƒí˜žìž‘ìš©í•˜êł  낮 전화, SMS, 연띜ìȘ, ë§ˆìŽíŹ, ê·ŒìȘ ꞰꞰ에 대한 권한을 갖êȌ 됩니닀."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"앱읎 <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>에서 ìŽëŸŹí•œ 권한에 ì•Ąì„žìŠ€í•  수 있êȌ 됩니닀."</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;읎 휎대전화의 읎 ì •ëłŽì— ì•Ąì„žìŠ€í•˜ë„ëĄ 허용합니닀."</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"ꔐ찚 êž°êž° 서ëč„슀"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g>에서 <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> 대신 êž°êž° 간에 앱을 ìŠ€íŠžëŠŹë°í•  수 있는 권한을 요ìČ­í•˜êł  있슔니닀."</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; 앱읎 휎대전화에서 읎 ì •ëłŽì— ì•Ąì„žìŠ€í•˜ë„ëĄ 허용"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play 서ëč„슀"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g>에서 <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> 대신 휎대전화의 ì‚Źì§„, ëŻžë””ì–Ž, 알늌에 ì•Ąì„žìŠ€í•  수 있는 권한을 요ìČ­í•˜êł  있슔니닀."</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; êž°êž°ê°€ 읎 작업을 ìˆ˜í–‰í•˜ë„ëĄ 허용하시êČ ìŠ”ë‹ˆêčŒ?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g>에서 <xliff:g id="DEVICE_NAME">%2$s</xliff:g> 대신 ê·ŒìȘ êž°êž°ëĄœ 앱 및 Ʞ타 시슀템 Ʞ늄을 ìŠ€íŠžëŠŹë°í•  권한을 요ìČ­í•˜êł  있슔니닀."</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"êž°êž°"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ky/strings.xml b/packages/CompanionDeviceManager/res/values-ky/strings.xml
index ed750a8..47a1da5 100644
--- a/packages/CompanionDeviceManager/res/values-ky/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ky/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"саат"</string>
     <string name="chooser_title" msgid="2262294130493605839">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; Ń‚Đ°Ń€Đ°Đ±Ń‹ĐœĐ°Đœ башĐșĐ°Ń€Ń‹Đ»ŃŃ‹Đœ"</string>
     <string name="summary_watch" msgid="898569637110705523">"Đ‘ŃƒĐ» ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> Ń‚ÒŻĐ·ĐŒÓ©ĐłÒŻÒŁÒŻĐ·ĐŽÒŻ башĐșаруу ÒŻŃ‡ÒŻĐœ ĐșДрДĐș. <xliff:g id="APP_NAME">%2$s</xliff:g> ĐŒĐ°Đ°Đ»Ń‹ĐŒĐ°Ń‚Ń‚Ń‹ шаĐčĐșĐ”ŃˆŃ‚ĐžŃ€ĐžĐż, ĐŒĐžŃĐ°Đ»Ń‹, Đ±ĐžĐ»ĐŽĐžŃ€ĐŒĐ”Đ»Đ”Ń€ĐžÒŁĐžĐ·ĐŽĐž ĐșÓ©Ń€ÒŻĐż, Ń‚Đ”Đ»Đ”Ń„ĐŸĐœŃƒÒŁŃƒĐ·, SMS Đ±ĐžĐ»ĐŽĐžŃ€ÒŻÒŻĐ»Ó©Ń€, баĐčĐ»Đ°ĐœŃ‹ŃˆŃ‚Đ°Ń€, Đ¶Ń‹Đ»ĐœĐ°Đ°ĐŒĐ°, Ń‡Đ°Đ»ŃƒŃƒĐ»Đ°Ń€ Ń‚ĐžĐ·ĐŒĐ”ŃĐž Đ¶Đ°ĐœĐ° жаĐșŃ‹Đœ жДрЎДгО Ń‚ÒŻĐ·ĐŒÓ©Đșтөргө Đ±ĐŸĐ»ĐłĐŸĐœ уруĐșсаттарЮы паĐčĐŽĐ°Đ»Đ°ĐœĐ° алат."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Đ‘ŃƒĐ» ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸĐłĐŸ ĐŒĐ°Đ°Đ»Ń‹ĐŒĐ°Ń‚Ń‚Ń‹, ĐŒĐžŃĐ°Đ»Ń‹, чалып жатĐșĐ°Đœ Đ°ĐŽĐ°ĐŒĐŽŃ‹Đœ аты-Đ¶Ó©ĐœÒŻĐœ шаĐčĐșĐ”ŃˆŃ‚ĐžŃ€ÒŻÒŻĐłÓ© Đ¶Đ°ĐœĐ° <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> Ń‚ÒŻĐ·ĐŒÓ©ĐłÒŻÒŁÒŻĐ·ĐŽÓ© Ń‚Ó©ĐŒÓ©ĐœĐșÒŻĐ»Ó©Ń€ĐŽÒŻ атĐșарууга уруĐșсат бДрОлДт"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸŃŃƒĐœĐ° &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; Ń‚ÒŻĐ·ĐŒÓ©ĐłÒŻĐœ тДсĐșÓ©Ó©ĐłÓ© уруĐșсат бДрДсОзбО?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"ĐșÓ©Đ· аĐčĐœĐ”ĐșтДр"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Đ‘ŃƒĐ» ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> Ń‚ÒŻĐ·ĐŒÓ©ĐłÒŻĐœ башĐșаруу ÒŻŃ‡ÒŻĐœ ĐșДрДĐș. <xliff:g id="APP_NAME">%2$s</xliff:g> Đ±ĐžĐ»ĐŽĐžŃ€ĐŒĐ”Đ»Đ”Ń€ĐžÒŁĐžĐ·ĐŽĐž ĐșÓ©Ń€ÒŻĐż, Ń‚Đ”Đ»Đ”Ń„ĐŸĐœŃƒÒŁŃƒĐ·, SMS Đ±ĐžĐ»ĐŽĐžŃ€ÒŻÒŻĐ»Ó©Ń€, БаĐčĐ»Đ°ĐœŃ‹ŃˆŃ‚Đ°Ń€, МоĐșŃ€ĐŸŃ„ĐŸĐœ Đ¶Đ°ĐœĐ° ЖаĐșŃ‹Đœ жДрЎДгО Ń‚ÒŻĐ·ĐŒÓ©Đșтөргө Đ±ĐŸĐ»ĐłĐŸĐœ уруĐșсаттарЮы паĐčĐŽĐ°Đ»Đ°ĐœĐ° алат."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Đ‘ŃƒĐ» ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸĐłĐŸ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> Ń‚ÒŻĐ·ĐŒÓ©ĐłÒŻÒŁÒŻĐ·ĐŽÓ© Ń‚Ó©ĐŒÓ©ĐœĐșÒŻĐ»Ó©Ń€ĐŽÒŻ атĐșарууга уруĐșсат бДрОлДт"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸŃŃƒĐœĐ° Ń‚Đ”Đ»Đ”Ń„ĐŸĐœŃƒÒŁŃƒĐ·ĐŽĐ°ĐłŃ‹ ушул ĐŒĐ°Đ°Đ»Ń‹ĐŒĐ°Ń‚Ń‚Ń‹ ĐșÓ©Ń€ÒŻÒŻĐłÓ© уруĐșсат Đ±Đ”Ń€ĐžÒŁĐžĐ·"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"ĐąÒŻĐ·ĐŒÓ©Đșтөр аралыĐș ĐșŃ‹Đ·ĐŒĐ°Ń‚Ń‚Đ°Ń€"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> Ń‚ÒŻĐ·ĐŒÓ©ĐłÒŻÒŁÒŻĐ·ĐŽÒŻĐœ Đ°Ń‚Ń‹ĐœĐ°Đœ Ń‚ÒŻĐ·ĐŒÓ©ĐșŃ‚Ó©Ń€ÒŻÒŁÒŻĐ·ĐŽÒŻĐœ ĐŸŃ€Ń‚ĐŸŃŃƒĐœĐŽĐ° ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸĐ»ĐŸŃ€ĐŽŃƒ алып ĐŸĐčĐœĐŸŃ‚ŃƒŃƒĐłĐ° уруĐșсат сурап жатат"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸŃŃƒĐœĐ° Ń‚Đ”Đ»Đ”Ń„ĐŸĐœŃƒÒŁŃƒĐ·ĐŽĐ°ĐłŃ‹ ушул ĐŒĐ°Đ°Đ»Ń‹ĐŒĐ°Ń‚Ń‚Ń‹ ĐșÓ©Ń€ÒŻÒŻĐłÓ© уруĐșсат Đ±Đ”Ń€ĐžÒŁĐžĐ·"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play ĐșŃ‹Đ·ĐŒĐ°Ń‚Ń‚Đ°Ń€Ń‹"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸŃŃƒ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> Ń‚ÒŻĐ·ĐŒÓ©ĐłÒŻÒŁÒŻĐ·ĐŽÒŻĐœ Đ°Ń‚Ń‹ĐœĐ°Đœ Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐŽĐŸĐłŃƒ ŃÒŻŃ€Ó©Ń‚Ń‚Ó©Ń€ĐŽÒŻ, ĐŒĐ”ĐŽĐžĐ° фаĐčлЎарЎы Đ¶Đ°ĐœĐ° Đ±ĐžĐ»ĐŽĐžŃ€ĐŒĐ”Đ»Đ”Ń€ĐŽĐž ĐșĐŸĐ»ĐŽĐŸĐœŃƒŃƒĐłĐ° уруĐșсат сурап жатат"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; Ń‚ÒŻĐ·ĐŒÓ©ĐłÒŻĐœÓ© бул араĐșДттО атĐșарууга уруĐșсат бДрДсОзбО?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="DEVICE_NAME">%2$s</xliff:g> Ń‚ÒŻĐ·ĐŒÓ©ĐłÒŻÒŁÒŻĐ·ĐŽÒŻĐœ Đ°Ń‚Ń‹ĐœĐ°Đœ жаĐșŃ‹Đœ жДрЎДгО Ń‚ÒŻĐ·ĐŒÓ©ĐșтөрЎө ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸĐ»ĐŸŃ€ĐŽŃƒ Đ¶Đ°ĐœĐ° Ń‚ŃƒŃ‚ŃƒĐŒĐŽŃƒĐœ башĐșа Ń„ŃƒĐœĐșŃ†ĐžŃĐ»Đ°Ń€Ń‹Đœ алып ĐŸĐčĐœĐŸŃ‚ŃƒŃƒĐłĐ° уруĐșсат сурап жатат"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"Ń‚ÒŻĐ·ĐŒÓ©Đș"</string>
diff --git a/packages/CompanionDeviceManager/res/values-lo/strings.xml b/packages/CompanionDeviceManager/res/values-lo/strings.xml
index 9058820..3782d25 100644
--- a/packages/CompanionDeviceManager/res/values-lo/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-lo/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"ໂàșĄàș‡"</string>
     <string name="chooser_title" msgid="2262294130493605839">"ເàș„àș·àș­àș <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ເàșžàș·à»ˆàș­à»ƒàș«à»‰àș–àș·àșàșˆàș±àș”àșàșČàș™à»‚àș”àș &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"àș•້àș­àș‡à»ƒàșŠà»‰à»àș­àș±àșšàș™àș”້ເàșžàș·à»ˆàș­àșˆàș±àș”àșàșČàș™ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> àș‚àș­àș‡àș—່àșČàș™. <xliff:g id="APP_NAME">%2$s</xliff:g> àșˆàș°à»„àș”້àșźàș±àșšàș­àș°àș™àșžàșàșČàș”ໃàș«à»‰àșŠàșŽà»‰àș‡àș‚ໍ້àșĄàșčàș™ ເàșŠàș±à»ˆàș™: àșŠàș·à»ˆàș‚àș­àș‡àș„àș»àș™àș—àș”່ໂàș—ເàș‚àș»à»‰àșČ, àșàșČàș™à»‚àș•້àș•àș­àșšàșàș±àșšàșàșČàș™à»àșˆà»‰àș‡à»€àș•àș·àș­àș™àș‚àș­àș‡àș—່àșČàș™ ແàș„àș° àșȘàșŽàș”ເàș‚àș»à»‰àșČເàș–àșŽàș‡à»‚àș—àș„àș°àșȘàș±àșš, SMS, àș„àșČàșàșŠàș·à»ˆàșœàșč້àș•àșŽàș”àș•ໍ່, àș›àș°àș•àșŽàș—àșŽàș™, àșšàș±àș™àș—àș¶àșàșàșČàș™à»‚àș— ແàș„àș° àș­àșžàș›àș°àșàș­àș™àș—àș”່àșąàșč່ໃàșà»‰àș„àșœàș‡àș‚àș­àș‡àș—່àșČàș™."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"ແàș­àș±àșšàș™àș”້àșˆàș°à»„àș”້àșźàș±àșšàș­àș°àș™àșžàșàșČàș”ໃàș«à»‰àșŠàșŽà»‰àș‡àș‚ໍ້àșĄàșčàș™, ເàșŠàș±à»ˆàș™: àșŠàș·à»ˆàș‚àș­àș‡àș„àș»àș™àș—àș”່ໂàș—ເàș‚àș»à»‰àșČ à»àș„àș° àșȘàșŽàș”ເàș‚àș»à»‰àșČເàș–àșŽàș‡àșàșČàș™àș­àș°àș™àșžàșàșČàș”ເàș«àșŒàș»à»ˆàșČàș™àș”້àșąàșč່ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> àș‚àș­àș‡àș—່àșČàș™"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"àș­àș°àș™àșžàșàșČàș” &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àșˆàș±àș”àșàșČàș™ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; àșšà»?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"ແàș§à»ˆàș™àș•àșČ"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"àș•້àș­àș‡à»ƒàșŠà»‰à»àș­àș±àșšàș™àș”້ເàșžàș·à»ˆàș­àșˆàș±àș”àșàșČàș™ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> àșˆàș°à»„àș”້àșźàș±àșšàș­àș°àș™àșžàșàșČàș”ໃàș«à»‰à»‚àș•້àș•àș­àșšàșàș±àșšàșàșČàș™à»àșˆà»‰àș‡à»€àș•àș·àș­àș™àș‚àș­àș‡àș—່àșČàș™ ແàș„àș° àșàșČàș™àș­àș°àș™àșžàșàșČàș”àșȘàșŽàș”ເàș‚àș»à»‰àșČເàș–àșŽàș‡à»‚àș—àș„àș°àșȘàș±àșš, SMS, àș„àșČàșàșŠàș·à»ˆàșœàșč້àș•àșŽàș”àș•ໍ່, ໄàșĄà»‚àș„àșŁà»‚àșŸàș™ ແàș„àș° àș­àșžàș›àș°àșàș­àș™àș—àș”່àșąàșč່ໃàșà»‰àș„àșœàș‡àș‚àș­àș‡àș—່àșČàș™."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"ແàș­àș±àșšàș™àș”້àșˆàș°à»„àș”້àșźàș±àșšàșȘàșŽàș”ເàș‚àș»à»‰àșČເàș–àșŽàș‡àșàșČàș™àș­àș°àș™àșžàșàșČàș”ເàș«àșŒàș»à»ˆàșČàș™àș”້àșąàșč່ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> àș‚àș­àș‡àș—່àșČàș™"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"àș­àș°àș™àșžàșàșČàș” &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ໃàș«à»‰à»€àș‚àș»à»‰àșČເàș–àșŽàș‡àș‚ໍ້àșĄàșčàș™àș™àș”້àșˆàșČàșà»‚àș—àș„àș°àșȘàș±àșšàș‚àș­àș‡àș—່àșČàș™à»„àș”້"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"àșšà»àș„àșŽàșàșČàș™àș‚້àșČàșĄàș­àșžàș›àș°àșàș­àș™"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> àșàșłàș„àș±àș‡àșźà»‰àș­àș‡àș‚ໍàșàșČàș™àș­àș°àș™àșžàșàșČàș”ໃàș™àș™àșČàșĄàș‚àș­àș‡ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ເàșžàș·à»ˆàș­àșȘàș°àș•àșŁàș”àșĄà»àș­àș±àșšàș„àș°àș«àș§à»ˆàșČàș‡àș­àșžàș›àș°àșàș­àș™àș•່àșČàș‡à»†àș‚àș­àș‡àș—່àșČàș™"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"àș­àș°àș™àșžàșàșČàș” &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ໃàș«à»‰à»€àș‚àș»à»‰àșČເàș–àșŽàș‡àș‚ໍ້àșĄàșčàș™àș™àș”້àșˆàșČàșà»‚àș—àș„àș°àșȘàș±àșšàș‚àș­àș‡àș—່àșČàș™à»„àș”້"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"àșšà»àș„àșŽàșàșČàș™ Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> àșàșłàș„àș±àș‡àșźà»‰àș­àș‡àș‚ໍàșàșČàș™àș­àș°àș™àșžàșàșČàș”ໃàș™àș™àșČàșĄàș‚àș­àș‡ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ເàșžàș·à»ˆàș­à»€àș‚àș»à»‰àșČເàș–àșŽàș‡àșźàșčàșšàșžàșČàșš, àșȘàș·à»ˆ ແàș„àș° àșàșČàș™à»àșˆà»‰àș‡à»€àș•àș·àș­àș™à»ƒàș™à»‚àș—àș„àș°àșȘàș±àșšàș‚àș­àș‡àș—່àșČàș™"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"àș­àș°àș™àșžàșàșČàș” &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ເàșžàș·à»ˆàș­àș”àșłà»€àș™àș”àș™àș„àșłàșȘàș±à»ˆàș‡àș™àș”້àșšà»?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> àșà»àșČàș„àș±àș‡àșźà»‰àș­àș‡àș‚ໍàșàșČàș™àș­àș°àș™àșžàșàșČàș”ໃàș™àș™àșČàșĄ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> àș‚àș­àș‡àș—່àșČàș™à»€àșžàș·à»ˆàș­àșȘàș°àș•àșŁàș”àșĄà»àș­àș±àșš ແàș„àș° àș„àșžàș™àșȘàș»àșĄàșšàș±àș”àș„àș°àșšàș»àșšàș­àș·à»ˆàș™à»†à»„àș›àș«àșČàș­àșžàș›àș°àșàș­àș™àș—àș”່àșąàșč່ໃàșà»‰àș„àșœàș‡"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"àș­àșžàș›àș°àșàș­àș™"</string>
diff --git a/packages/CompanionDeviceManager/res/values-lt/strings.xml b/packages/CompanionDeviceManager/res/values-lt/strings.xml
index 7af2476..8f8572b 100644
--- a/packages/CompanionDeviceManager/res/values-lt/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-lt/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"laikrodÄŻ"</string>
     <string name="chooser_title" msgid="2262294130493605839">"JƫsƳ <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, kurį valdys &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; (pasirinkite)"</string>
     <string name="summary_watch" msgid="898569637110705523">"Ši programa reikalinga norint tvarkyti jĆ«sĆł ÄŻrenginÄŻ „<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“. Programai „<xliff:g id="APP_NAME">%2$s</xliff:g>“ bus leidĆŸiama sinchronizuoti tam tikrą informaciją, pvz., skambinančio asmens vardą, sąveikauti su jĆ«sĆł pranešimais ir pasiekti jĆ«sĆł leidimus „Telefonas“, „SMS“, „Kontaktai“, „Kalendorius“, „SkambučiĆł ĆŸurnalai“ ir „Äźrenginiai netoliese."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Šiai programai bus leidĆŸiama sinchronizuoti tam tikrą informaciją, pvz., skambinančio asmens vardą, ir pasiekti toliau nurodytus leidimus jĆ«sĆł <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Leisti &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; valdyti &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"akiniai"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Ši programa reikalinga norint tvarkyti ÄŻrenginÄŻ „<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“. Programai „<xliff:g id="APP_NAME">%2$s</xliff:g>“ bus leidĆŸiama sąveikauti su jĆ«sĆł pranešimais ir pasiekti jĆ«sĆł leidimus „Telefonas“, „SMS“, „Kontaktai“, „Mikrofonas“ ir „Äźrenginiai netoliese“."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Šiai programai bus leidĆŸiama pasiekti toliau nurodytus leidimus jĆ«sĆł <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>."</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Leisti &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; pasiekti šią informaciją iš jĆ«sĆł telefono"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Pasl. keliuose ÄŻrenginiuose"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"Programa „<xliff:g id="APP_NAME">%1$s</xliff:g>“ prašo leidimo jĆ«sĆł „<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>“ vardu, kad galėtĆł srautu perduoti programas iš vieno ÄŻrenginio ÄŻ kitą"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Leisti &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; pasiekti šią informaciją iš jĆ«sĆł telefono"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"„Google Play“ paslaugos"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"Programa „<xliff:g id="APP_NAME">%1$s</xliff:g>“ prašo leidimo jĆ«sĆł „<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>“ vardu, kad galėtĆł pasiekti telefono nuotraukas, mediją ir pranešimus"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Leisti &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; atlikti šÄŻ veiksmą?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ prašo leidimo jĆ«sĆł „<xliff:g id="DEVICE_NAME">%2$s</xliff:g>“ vardu, kad galėtĆł srautu perduoti programas ir kitas sistemos funkcijas ÄŻrenginiams netoliese"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"ÄŻrenginys"</string>
diff --git a/packages/CompanionDeviceManager/res/values-lv/strings.xml b/packages/CompanionDeviceManager/res/values-lv/strings.xml
index b74834b..905df48 100644
--- a/packages/CompanionDeviceManager/res/values-lv/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-lv/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"pulkstenis"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Profila (<xliff:g id="PROFILE_NAME">%1$s</xliff:g>) izvēle, ko pārvaldīt lietotnē &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"ŠÄ« lietotne ir nepieciešama jĆ«su ierÄ«ces (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) pārvaldÄ«bai. <xliff:g id="APP_NAME">%2$s</xliff:g> drÄ«kstēs sinhronizēt informāciju (piemēram, zvanÄ«tāja vārdu), mijiedarboties ar jĆ«su paziƆojumiem un piekÄŒĆ«t atÄŒaujām Tālrunis, ÄȘsziƆas, Kontaktpersonas, Kalendārs, Zvanu ĆŸurnāli un Tuvumā esošas ierÄ«ces."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"ŠÄ« lietotne drÄ«kstēs sinhronizēt informāciju, piemēram, zvanÄ«tāja vārdu, un piekÄŒĆ«t norādÄ«tajām atÄŒaujām jĆ«su <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>."</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Vai atÄŒaut lietotnei &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; piekÄŒĆ«t ierÄ«cei &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"brilles"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"ŠÄ« lietotne ir nepieciešama šÄdas ierÄ«ces pārvaldÄ«bai: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> drÄ«kstēs mijiedarboties ar jĆ«su paziƆojumiem un piekÄŒĆ«t atÄŒaujām Tālrunis, ÄȘsziƆas, Kontaktpersonas, Mikrofons un Tuvumā esošas ierÄ«ces."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Šai lietotnei tiks sniegta piekÄŒuve norādÄ«tajām atÄŒaujām jĆ«su <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>."</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"AtÄŒaut lietotnei &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; piekÄŒĆ«t šai informācijai no jĆ«su tālruƆa"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Vairāku ierīču pakalpojumi"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"Lietotne <xliff:g id="APP_NAME">%1$s</xliff:g> pieprasa atÄŒauju straumēt lietotnes starp jĆ«su ierÄ«cēm šÄ«s ierÄ«ces vārdā: <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>."</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"AtÄŒaut lietotnei &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; piekÄŒĆ«t šai informācijai no jĆ«su tālruƆa"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play pakalpojumi"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"Lietotne <xliff:g id="APP_NAME">%1$s</xliff:g> pieprasa atÄŒauju piekÄŒĆ«t jĆ«su tālruƆa fotoattēliem, multivides saturam un paziƆojumiem šÄ«s ierÄ«ces vārdā: <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>."</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Vai atÄŒaut ierÄ«cei &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; veikt šo darbÄ«bu?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> pieprasa atÄŒauju tuvumā esošÄs ierÄ«cēs straumēt lietotnes un citas sistēmas funkcijas šÄ«s ierÄ«ces vārdā: <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"ierīce"</string>
diff --git a/packages/CompanionDeviceManager/res/values-mk/strings.xml b/packages/CompanionDeviceManager/res/values-mk/strings.xml
index f420766..414ecee 100644
--- a/packages/CompanionDeviceManager/res/values-mk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-mk/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"Ń‡Đ°ŃĐŸĐČĐœĐžĐș"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Đ˜Đ·Đ±Đ”Ń€Đ”Ń‚Đ” <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ŃĐŸ ĐșĐŸŃ˜ŃˆŃ‚ĐŸ ŃœĐ” упраĐČуĐČа &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"АплОĐșацојаĐČа Đ” ĐżĐŸŃ‚Ń€Đ”Đ±ĐœĐ° за упраĐČуĐČањД ŃĐŸ ĐČĐ°ŃˆĐžĐŸŃ‚ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> ŃœĐ” ĐŒĐŸĐ¶Đ” Ўа гО ŃĐžĐœŃ…Ń€ĐŸĐœĐžĐ·ĐžŃ€Đ° ĐżĐŸĐŽĐ°Ń‚ĐŸŃ†ĐžŃ‚Đ” ĐșаĐșĐŸ ŃˆŃ‚ĐŸ сД ĐžĐŒĐžŃšĐ°Ń‚Đ° ĐœĐ° јаĐČуĐČачОтД, Ўа ĐŸŃŃ‚ĐČаруĐČа ĐžĐœŃ‚Đ”Ń€Đ°Đșцоја ŃĐŸ ОзĐČĐ”ŃŃ‚ŃƒĐČањата Đž Ўа простапуĐČа ĐŽĐŸ ĐŽĐŸĐ·ĐČĐŸĐ»ĐžŃ‚Đ” за „ĐąĐ”Đ»Đ”Ń„ĐŸĐœ“, SMS, „ĐšĐŸĐœŃ‚Đ°Đșто“, „ĐšĐ°Đ»Đ”ĐœĐŽĐ°Ń€“, „ЕĐČĐžĐŽĐ”ĐœŃ†ĐžŃ˜Đ° ĐœĐ° ĐżĐŸĐČоцо“ Đž „УрДЎО ĐČĐŸ Đ±Đ»ĐžĐ·ĐžĐœĐ°“."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"ОĐČаа аплОĐșацоја ŃœĐ” ĐžĐŒĐ° ĐŽĐŸĐ·ĐČĐŸĐ»Đ° Ўа гО ŃĐžĐœŃ…Ń€ĐŸĐœĐžĐ·ĐžŃ€Đ° ĐżĐŸĐŽĐ°Ń‚ĐŸŃ†ĐžŃ‚Đ” ĐșаĐșĐŸ ŃˆŃ‚ĐŸ сД ĐžĐŒĐžŃšĐ°Ń‚Đ° ĐœĐ° јаĐČуĐČачОтД Đž Ўа простапуĐČа ĐŽĐŸ ŃĐ»Đ”ĐŽĐœĐžĐČĐ” ĐŽĐŸĐ·ĐČĐŸĐ»Đž ĐœĐ° ĐČĐ°ŃˆĐžĐŸŃ‚ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"ĐŒĐ” ĐŽĐŸĐ·ĐČĐŸĐ»ĐžŃ‚Đ” &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; Ўа упраĐČуĐČа ŃĐŸ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"ĐŸŃ‡ĐžĐ»Đ°"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"АплОĐșацојаĐČа Đ” ĐżĐŸŃ‚Ń€Đ”Đ±ĐœĐ° за упраĐČуĐČањД ŃĐŸ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> ŃœĐ” ĐŒĐŸĐ¶Đ” Ўа ĐŸŃŃ‚ĐČаруĐČа ĐžĐœŃ‚Đ”Ń€Đ°Đșцоја ŃĐŸ ОзĐČĐ”ŃŃ‚ŃƒĐČањата Đž Ўа простапуĐČа ĐŽĐŸ ĐŽĐŸĐ·ĐČĐŸĐ»ĐžŃ‚Đ” за „ĐąĐ”Đ»Đ”Ń„ĐŸĐœ“, SMS, „ĐšĐŸĐœŃ‚Đ°Đșто“, „МоĐșŃ€ĐŸŃ„ĐŸĐœ“ Đž „УрДЎО ĐČĐŸ Đ±Đ»ĐžĐ·ĐžĐœĐ°“."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"АплОĐșацојаĐČа ŃœĐ” ĐŒĐŸĐ¶Đ” Ўа простапуĐČа ĐŽĐŸ ĐŸĐČОД ĐŽĐŸĐ·ĐČĐŸĐ»Đž ĐœĐ° <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"ОĐČĐŸĐ·ĐŒĐŸĐ¶Đ”Ń‚Đ” &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; Ўа простапуĐČа ĐŽĐŸ ĐŸĐČОД ĐżĐŸĐŽĐ°Ń‚ĐŸŃ†Đž ĐœĐ° Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐŸŃ‚"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"ĐŸĐŸĐČĐ”ŃœĐ”ĐœĐ°ĐŒĐ”ĐœŃĐșĐž услугО"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> бара ĐŽĐŸĐ·ĐČĐŸĐ»Đ° ĐČĐŸ ĐžĐŒĐ” ĐœĐ° ĐČĐ°ŃˆĐžĐŸŃ‚ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> за Ўа ŃŃ‚Ń€ĐžĐŒŃƒĐČа аплОĐșацоо ĐżĐŸĐŒĐ”Ń“Ńƒ ĐČĐ°ŃˆĐžŃ‚Đ” ŃƒŃ€Đ”ĐŽĐž"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Đ”ĐŸĐ·ĐČĐŸĐ»Đ”Ń‚Đ” &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; Ўа простапуĐČа ĐŽĐŸ ĐŸĐČОД ĐżĐŸĐŽĐ°Ń‚ĐŸŃ†Đž ĐœĐ° Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐŸŃ‚"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"УслугО ĐœĐ° Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> бара ĐŽĐŸĐ·ĐČĐŸĐ»Đ° ĐČĐŸ ĐžĐŒĐ” ĐœĐ° ĐČĐ°ŃˆĐžĐŸŃ‚ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> за Ўа простапуĐČа ĐŽĐŸ Ń„ĐŸŃ‚ĐŸĐłŃ€Đ°Ń„ĐžĐžŃ‚Đ”, Đ°ŃƒĐŽĐžĐŸĐČĐžĐ·ŃƒĐ”Đ»ĐœĐžŃ‚Đ” ŃĐŸĐŽŃ€Đ¶ĐžĐœĐž Đž ОзĐČĐ”ŃŃ‚ŃƒĐČањата ĐœĐ° Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐŸŃ‚"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"ĐŒĐ” ĐŽĐŸĐ·ĐČĐŸĐ»ĐžŃ‚Đ” &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; Ўа ĐłĐŸ ĐżŃ€Đ”Đ·Đ”ĐŒĐ” ĐŸĐČа ĐŽĐ”Ń˜ŃŃ‚ĐČĐŸ?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> бара ĐŽĐŸĐ·ĐČĐŸĐ»Đ° ĐČĐŸ ĐžĐŒĐ” ĐœĐ° ĐČĐ°ŃˆĐžĐŸŃ‚ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> за Ўа ŃŃ‚Ń€ĐžĐŒŃƒĐČа аплОĐșацоо Đž Юруго ŃĐžŃŃ‚Đ”ĐŒŃĐșĐž ĐșараĐșтДрОстОĐșĐž ĐœĐ° ŃƒŃ€Đ”ĐŽĐžŃ‚Đ” ĐČĐŸ Đ±Đ»ĐžĐ·ĐžĐœĐ°"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"ŃƒŃ€Đ”ĐŽ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ml/strings.xml b/packages/CompanionDeviceManager/res/values-ml/strings.xml
index 0a9adb6..9aab050 100644
--- a/packages/CompanionDeviceManager/res/values-ml/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ml/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"àŽ”àŽŸàŽšà”àŽšà”"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; àŽ‰àŽȘàŽŻà”‹àŽ—àŽżàŽšà”àŽšà” àŽźàŽŸàŽšà”‡àŽœà” àŽšà”†àŽŻà”àŽŻà”àŽšà”àŽšàŽ€àŽżàŽšà” àŽ’àŽ°à” <xliff:g id="PROFILE_NAME">%1$s</xliff:g> àŽ€àŽżàŽ°àŽžà”àŽžà”†àŽŸà”àŽ•à”àŽ•à”àŽ•"</string>
     <string name="summary_watch" msgid="898569637110705523">"àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† <xliff:g id="DEVICE_NAME">%1$s</xliff:g> àŽźàŽŸàŽšà”‡àŽœà” àŽšà”†àŽŻà”àŽŻàŽŸà”» àŽˆ àŽ†àŽȘà”àŽȘà” àŽ†àŽ”àŽ¶à”àŽŻàŽźàŽŸàŽŁà”. àŽ”àŽżàŽłàŽżàŽ•à”àŽ•à”àŽšà”àŽšàŽŻàŽŸàŽłà”àŽŸà”† àŽȘà”‡àŽ°à” àŽȘà”‹àŽČà”àŽłà”àŽł àŽ”àŽżàŽ”àŽ°àŽ™à”àŽ™à”Ÿ àŽžàŽźàŽšà”àŽ”àŽŻàŽżàŽȘà”àŽȘàŽżàŽ•à”àŽ•à”àŽšà”àŽšàŽ€àŽżàŽšà”àŽ‚ àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† àŽ…àŽ±àŽżàŽŻàŽżàŽȘà”àŽȘà”àŽ•àŽłà”àŽźàŽŸàŽŻàŽż àŽžàŽ‚àŽ”àŽŠàŽżàŽ•à”àŽ•àŽŸàŽšà”àŽ‚ àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† àŽ«à”‹à”ș, SMS, Contacts, Calendar, àŽ•à”‹à”Ÿ àŽšàŽ°àŽżàŽ€à”àŽ°àŽ‚, àŽžàŽźà”€àŽȘàŽźà”àŽłà”àŽł àŽ‰àŽȘàŽ•àŽ°àŽŁàŽ™à”àŽ™àŽłà”àŽŸà”† àŽ…àŽšà”àŽźàŽ€àŽżàŽ•à”Ÿ àŽŽàŽšà”àŽšàŽżàŽ” àŽ†àŽ•à”‌àŽžàŽžà” àŽšà”†àŽŻà”àŽŻàŽŸàŽšà”àŽ‚ <xliff:g id="APP_NAME">%2$s</xliff:g> àŽ†àŽȘà”àŽȘàŽżàŽšà”† àŽ…àŽšà”àŽ”àŽŠàŽżàŽ•à”àŽ•à”àŽ‚."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"àŽ”àŽżàŽłàŽżàŽ•à”àŽ•à”àŽšà”àŽšàŽŻàŽŸàŽłà”àŽŸà”† àŽȘà”‡àŽ°à” àŽȘà”‹àŽČà”àŽłà”àŽł àŽ”àŽżàŽ”àŽ°àŽ™à”àŽ™à”Ÿ àŽžàŽźàŽšà”àŽ”àŽŻàŽżàŽȘà”àŽȘàŽżàŽ•à”àŽ•àŽŸàŽšà”àŽ‚ àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> àŽŽàŽšà”àŽšàŽ€àŽżà”œ àŽˆ àŽ…àŽšà”àŽźàŽ€àŽżàŽ•à”Ÿ àŽ†àŽ•à”àŽžàŽžà” àŽšà”†àŽŻà”àŽŻàŽŸàŽšà”àŽ‚ àŽˆ àŽ†àŽȘà”àŽȘàŽżàŽšà”† àŽ…àŽšà”àŽ”àŽŠàŽżàŽ•à”àŽ•à”àŽ‚"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;? àŽźàŽŸàŽšà”‡àŽœà” àŽšà”†àŽŻà”àŽŻàŽŸà”», &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àŽŽàŽšà”àŽšàŽ€àŽżàŽšà”† àŽ…àŽšà”àŽ”àŽŠàŽżàŽ•à”àŽ•à”àŽ•"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"àŽ—à”àŽČàŽŸàŽžà”àŽ•à”Ÿ"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> àŽźàŽŸàŽšà”‡àŽœà” àŽšà”†àŽŻà”àŽŻàŽŸà”» àŽˆ àŽ†àŽȘà”àŽȘà” àŽ†àŽ”àŽ¶à”àŽŻàŽźàŽŸàŽŁà”. àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† àŽ…àŽ±àŽżàŽŻàŽżàŽȘà”àŽȘà”àŽ•àŽłà”àŽźàŽŸàŽŻàŽż àŽ‡àŽŸàŽȘàŽŽàŽ•àŽŸàŽšà”àŽ‚ àŽ«à”‹à”ș, SMS, àŽ•à”‹à”șàŽŸàŽŸàŽ•à”àŽ±à”àŽ±à”àŽ•à”Ÿ, àŽźà”ˆàŽ•à”àŽ°à”‹àŽ«à”‹à”ș, àŽžàŽźà”€àŽȘàŽźà”àŽłà”àŽł àŽ‰àŽȘàŽ•àŽ°àŽŁàŽ™à”àŽ™àŽłà”àŽŸà”† àŽ…àŽšà”àŽźàŽ€àŽżàŽ•à”Ÿ àŽŽàŽšà”àŽšàŽżàŽ” àŽ†àŽ•à”‌àŽžàŽžà” àŽšà”†àŽŻà”àŽŻàŽŸàŽšà”àŽ‚ <xliff:g id="APP_NAME">%2$s</xliff:g> àŽŽàŽšà”àŽšàŽ€àŽżàŽšà”† àŽ…àŽšà”àŽ”àŽŠàŽżàŽ•à”àŽ•à”àŽ‚."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> àŽŽàŽšà”àŽšàŽ€àŽżà”œ àŽ‡àŽšàŽżàŽȘà”àŽȘàŽ±àŽŻà”àŽšà”àŽš àŽ…àŽšà”àŽźàŽ€àŽżàŽ•à”Ÿ àŽ†àŽ•à”‌àŽžàŽžà” àŽšà”†àŽŻà”àŽŻàŽŸà”» àŽˆ àŽ†àŽȘà”àŽȘàŽżàŽšà”† àŽ…àŽšà”àŽ”àŽŠàŽżàŽ•à”àŽ•à”àŽ‚"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† àŽ«à”‹àŽŁàŽżà”œ àŽšàŽżàŽšà”àŽšà” àŽˆ àŽ”àŽżàŽ”àŽ°àŽ™à”àŽ™à”Ÿ àŽ†àŽ•à”‌àŽžàŽžà” àŽšà”†àŽŻà”àŽŻàŽŸà”» &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àŽ†àŽȘà”àŽȘàŽżàŽšà”† àŽ…àŽšà”àŽ”àŽŠàŽżàŽ•à”àŽ•à”àŽ•"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"àŽ•à”àŽ°à”‹àŽžà”-àŽ‰àŽȘàŽ•àŽ°àŽŁ àŽžà”‡àŽ”àŽšàŽ™à”àŽ™à”Ÿ"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† àŽ‰àŽȘàŽ•àŽ°àŽŁàŽ™à”àŽ™àŽłàŽżà”œ àŽ’àŽšà”àŽšàŽżà”œ àŽšàŽżàŽšà”àŽšà” àŽ…àŽŸà”àŽ€à”àŽ€àŽ€àŽżàŽČà”‡àŽ•à”àŽ•à” àŽ†àŽȘà”àŽȘà”àŽ•à”Ÿ àŽžà”àŽŸà”àŽ°à”€àŽ‚ àŽšà”†àŽŻà”àŽŻàŽŸà”» <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> àŽŽàŽšà”àŽš àŽ‰àŽȘàŽ•àŽ°àŽŁàŽ€à”àŽ€àŽżàŽšà” àŽ”à”‡àŽŁà”àŽŸàŽż <xliff:g id="APP_NAME">%1$s</xliff:g> àŽŽàŽšà”àŽšàŽ€à” àŽ…àŽšà”àŽźàŽ€àŽż àŽ…àŽ­à”àŽŻà”ŒàŽ€à”àŽ„àŽżàŽ•à”àŽ•à”àŽšà”àŽšà”"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† àŽ«à”‹àŽŁàŽżà”œ àŽšàŽżàŽšà”àŽšà” àŽˆ àŽ”àŽżàŽ”àŽ°àŽ™à”àŽ™à”Ÿ àŽ†àŽ•à”‌àŽžàŽžà” àŽšà”†àŽŻà”àŽŻàŽŸà”» &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àŽ†àŽȘà”àŽȘàŽżàŽšà”† àŽ…àŽšà”àŽ”àŽŠàŽżàŽ•à”àŽ•à”àŽ•"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play àŽžà”‡àŽ”àŽšàŽ™à”àŽ™à”Ÿ"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† àŽ«à”‹àŽŁàŽżàŽČà”† àŽ«à”‹àŽŸà”àŽŸà”‹àŽ•à”Ÿ, àŽźà”€àŽĄàŽżàŽŻ, àŽ…àŽ±àŽżàŽŻàŽżàŽȘà”àŽȘà”àŽ•à”Ÿ àŽŽàŽšà”àŽšàŽżàŽ” àŽ†àŽ•à”àŽžàŽžà” àŽšà”†àŽŻà”àŽŻàŽŸà”» <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> àŽŽàŽšà”àŽš àŽ‰àŽȘàŽ•àŽ°àŽŁàŽ€à”àŽ€àŽżàŽšà” àŽ”à”‡àŽŁà”àŽŸàŽż <xliff:g id="APP_NAME">%1$s</xliff:g> àŽ…àŽšà”àŽźàŽ€àŽż àŽ…àŽ­à”àŽŻà”ŒàŽ€à”àŽ„àŽżàŽ•à”àŽ•à”àŽšà”àŽšà”"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"àŽˆ àŽȘà”àŽ°àŽ”à”ŒàŽ€à”àŽ€àŽšàŽ‚ àŽšàŽŸàŽ€à”àŽ€àŽŸà”» &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; àŽŽàŽšà”àŽšàŽ€àŽżàŽšà”† àŽ…àŽšà”àŽ”àŽŠàŽżàŽ•à”àŽ•àŽŁà”‹?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"àŽžàŽźà”€àŽȘàŽźà”àŽłà”àŽł àŽ‰àŽȘàŽ•àŽ°àŽŁàŽ™à”àŽ™àŽłàŽżà”œ àŽ†àŽȘà”àŽȘà”àŽ•àŽłà”àŽ‚ àŽźàŽ±à”àŽ±à” àŽžàŽżàŽžà”àŽ±à”àŽ±àŽ‚ àŽ«à”€àŽšà”àŽšàŽ±à”àŽ•àŽłà”àŽ‚ àŽžà”àŽŸà”àŽ°à”€àŽ‚ àŽšà”†àŽŻà”àŽŻàŽŸà”» àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† <xliff:g id="DEVICE_NAME">%2$s</xliff:g> àŽŽàŽšà”àŽšàŽ€àŽżàŽšà” àŽ”à”‡àŽŁà”àŽŸàŽż <xliff:g id="APP_NAME">%1$s</xliff:g> àŽ…àŽšà”àŽźàŽ€àŽż àŽ…àŽ­à”àŽŻà”ŒàŽ€à”àŽ„àŽżàŽ•à”àŽ•à”àŽšà”àŽšà”"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"àŽ‰àŽȘàŽ•àŽ°àŽŁàŽ‚"</string>
diff --git a/packages/CompanionDeviceManager/res/values-mn/strings.xml b/packages/CompanionDeviceManager/res/values-mn/strings.xml
index 7eb2e8d..6be7212 100644
--- a/packages/CompanionDeviceManager/res/values-mn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-mn/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"цаг"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;-Đœ уЮорЮах<xliff:g id="PROFILE_NAME">%1$s</xliff:g>-Đł ŃĐŸĐœĐłĐŸĐœĐŸ уу"</string>
     <string name="summary_watch" msgid="898569637110705523">"Đ­ĐœŃ апп Ń‚Đ°ĐœŃ‹ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-Đł уЮорЮахаЮ ŃˆĐ°Đ°Ń€ĐŽĐ»Đ°ĐłĐ°Ń‚Đ°Đč. <xliff:g id="APP_NAME">%2$s</xliff:g>-ĐŽ залгаж буĐč Ń…ÒŻĐœĐžĐč ĐœŃŃ€ Đ·ŃŃ€ŃĐł ĐŒŃĐŽŃŃĐ»Đ»ĐžĐčĐł ŃĐžĐœĐș хоĐčх, Ń‚Đ°ĐœŃ‹ ĐŒŃĐŽŃĐłĐŽŃĐ»Ń‚ŃĐč Ń…Đ°Ń€ĐžĐ»Ń†Đ°Đœ ÒŻĐčĐ»ĐŽŃĐ» хоĐčх, Утас, SMS, ЄарОлцагчОЎ, ĐšĐ°Đ»Đ”ĐœĐŽĐ°Ń€ŃŒ, Đ”ŃƒŃƒĐŽĐ»Đ°ĐłŃ‹Đœ жагсаалт Đ±ĐŸĐ»ĐŸĐœ ОĐčŃ€ĐŸĐ»Ń†ĐŸĐŸŃ… Ń‚Ó©Ń…Ó©Ó©Ń€Ó©ĐŒĐ¶ÒŻÒŻĐŽĐžĐčĐœ Đ·Ó©ĐČŃˆÓ©Ó©Ń€Ó©Đ»ĐŽ Ń…Đ°ĐœĐŽĐ°Ń…Ń‹Đł Đ·Ó©ĐČŃˆÓ©Ó©Ń€ĐœÓ©."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Đ­ĐœŃ аппаЎ залгаж буĐč Ń…ÒŻĐœĐžĐč ĐœŃŃ€ Đ·ŃŃ€ŃĐł ĐŒŃĐŽŃŃĐ»Đ»ĐžĐčĐł ŃĐžĐœĐș хоĐčх Đ±ĐŸĐ»ĐŸĐœ Ń‚Đ°ĐœŃ‹ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>-Đœ эЮгээр Đ·Ó©ĐČŃˆÓ©Ó©Ń€Ó©Đ»ĐŽ Ń…Đ°ĐœĐŽĐ°Ń…Ń‹Đł Đ·Ó©ĐČŃˆÓ©Ó©Ń€ĐœÓ©"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;-ĐŽ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;-Đł уЮорЮахыг Đ·Ó©ĐČŃˆÓ©Ó©Ń€Ó©Ń… ÒŻÒŻ?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"ĐœÒŻĐŽĐœĐžĐč шОл"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Đ­ĐœŃ апп <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-Đł уЮорЮахаЮ ŃˆĐ°Đ°Ń€ĐŽĐ»Đ°ĐłĐ°Ń‚Đ°Đč. <xliff:g id="APP_NAME">%2$s</xliff:g>-ĐŽ Ń‚Đ°ĐœŃ‹ ĐŒŃĐŽŃĐłĐŽŃĐ»Ń‚ŃĐč Ń…Đ°Ń€ĐžĐ»Ń†Đ°Đœ ÒŻĐčĐ»ĐŽŃĐ» хоĐčх, Утас, SMS, ЄарОлцагчОЎ, МоĐșŃ€ĐŸŃ„ĐŸĐœ Đ±ĐŸĐ»ĐŸĐœ ОĐčŃ€ĐŸĐ»Ń†ĐŸĐŸŃ… Ń‚Ó©Ń…Ó©Ó©Ń€Ó©ĐŒĐ¶ÒŻÒŻĐŽĐžĐčĐœ Đ·Ó©ĐČŃˆÓ©Ó©Ń€Ó©Đ»ĐŽ Ń…Đ°ĐœĐŽĐ°Ń…Ń‹Đł Đ·Ó©ĐČŃˆÓ©Ó©Ń€ĐœÓ©."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Đ­ĐœŃ апп Ń‚Đ°ĐœŃ‹ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>-Đœ эЮгээр Đ·Ó©ĐČŃˆÓ©Ó©Ń€Ó©Đ»ĐŽ Ń…Đ°ĐœĐŽĐ°Ń… эрхтэĐč баĐčх Đ±ĐŸĐ»ĐœĐŸ"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;-ĐŽ Ń‚Đ°ĐœŃ‹ ŃƒŃ‚Đ°ŃĐœĐ°Đ°Ń ŃĐœŃ ĐŒŃĐŽŃŃĐ»ŃĐ»ĐŽ Ń…Đ°ĐœĐŽĐ°Ń…Ń‹Đł Đ·Ó©ĐČŃˆÓ©Ó©Ń€ĐœÓ© ÒŻÒŻ"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"ĐąÓ©Ń…Ó©Ó©Ń€Ó©ĐŒĐ¶ Ń…ĐŸĐŸŃ€ĐŸĐœĐŽŃ‹Đœ ÒŻĐčĐ»Ń‡ĐžĐ»ĐłŃŃ"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"ĐąĐ°ĐœŃ‹ Ń‚Ó©Ń…Ó©Ó©Ń€Ó©ĐŒĐ¶ÒŻÒŻĐŽ Ń…ĐŸĐŸŃ€ĐŸĐœĐŽ апп ĐŽĐ°ĐŒĐ¶ŃƒŃƒĐ»Đ°Ń…Ń‹Đœ Ń‚ŃƒĐ»ĐŽ <xliff:g id="APP_NAME">%1$s</xliff:g> Ń‚Đ°ĐœŃ‹ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>-Đœ Ó©ĐŒĐœÓ©Ó©Ń Đ·Ó©ĐČŃˆÓ©Ó©Ń€Ó©Đ» Ń…ÒŻŃŃĐ¶ баĐčĐœĐ°"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;-ĐŽ Ń‚Đ°ĐœŃ‹ ŃƒŃ‚Đ°ŃĐœĐ°Đ°Ń ŃĐœŃ ĐŒŃĐŽŃŃĐ»ŃĐ»ĐŽ Ń…Đ°ĐœĐŽĐ°Ń…Ń‹Đł Đ·Ó©ĐČŃˆÓ©Ó©Ń€ĐœÓ© ÒŻÒŻ"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play ÒŻĐčĐ»Ń‡ĐžĐ»ĐłŃŃ"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"ĐąĐ°ĐœŃ‹ ŃƒŃ‚Đ°ŃĐœŃ‹ Đ·ŃƒŃ€Đ°Đł, ĐŒĐ”ĐŽĐžĐ° Đ±ĐŸĐ»ĐŸĐœ ĐŒŃĐŽŃĐłĐŽŃĐ»ĐŽ Ń…Đ°ĐœĐŽĐ°Ń…Ń‹Đœ Ń‚ŃƒĐ»ĐŽ <xliff:g id="APP_NAME">%1$s</xliff:g> Ń‚Đ°ĐœŃ‹ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>-Đœ Ó©ĐŒĐœÓ©Ó©Ń Đ·Ó©ĐČŃˆÓ©Ó©Ń€Ó©Đ» Ń…ÒŻŃŃĐ¶ баĐčĐœĐ°"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt;-ĐŽ ŃĐœŃ ÒŻĐčлЎлОĐčĐł хоĐčхоĐčĐł Đ·Ó©ĐČŃˆÓ©Ó©Ń€Ó©Ń… ÒŻÒŻ?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> Ń‚Đ°ĐœŃ‹ <xliff:g id="DEVICE_NAME">%2$s</xliff:g>-Đœ Ó©ĐŒĐœÓ©Ó©Ń аппууЎ Đ±ĐŸĐ»ĐŸĐœ ŃĐžŃŃ‚Đ”ĐŒĐžĐčĐœ бусаЎ ĐŸĐœŃ†Đ»ĐŸĐłĐžĐčĐł ĐŸĐčŃ€ĐŸĐ»Ń†ĐŸĐŸŃ… Ń‚Ó©Ń…Ó©Ó©Ń€Ó©ĐŒĐ¶ÒŻÒŻĐŽ Ń€ÒŻÒŻ ĐŽĐ°ĐŒĐ¶ŃƒŃƒĐ»Đ°Ń… Đ·Ó©ĐČŃˆÓ©Ó©Ń€Ó©Đ» Ń…ÒŻŃŃĐ¶ баĐčĐœĐ°"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"Ń‚Ó©Ń…Ó©Ó©Ń€Ó©ĐŒĐ¶"</string>
diff --git a/packages/CompanionDeviceManager/res/values-mr/strings.xml b/packages/CompanionDeviceManager/res/values-mr/strings.xml
index b999641..c66d6ff 100644
--- a/packages/CompanionDeviceManager/res/values-mr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-mr/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"à€”à„‰à€š"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; à€Šà„à€”à€Ÿà€°à„‡ à€”à„à€Żà€”à€žà„à€„à€Ÿà€Șà€żà€€ à€•à€°à€Łà„à€Żà€Ÿà€žà€Ÿà€ à„€ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> à€šà€żà€”à€Ąà€Ÿ"</string>
     <string name="summary_watch" msgid="898569637110705523">"à€€à„à€źà€šà„‡ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> à€”à„à€Żà€”à€žà„à€„à€Ÿà€Șà€żà€€ à€•à€°à€Łà„à€Żà€Ÿà€žà€Ÿà€ à„€ à€čà„‡ à„Čà€Ș à€†à€”à€¶à„à€Żà€• à€†à€čà„‡. <xliff:g id="APP_NAME">%2$s</xliff:g> à€Čà€Ÿ à€•à„‰à€Č à€•à€°à€€ à€…à€žà€Čà„‡à€Čà„à€Żà€Ÿ à€à€–à€Ÿà€Šà„à€Żà€Ÿ à€”à„à€Żà€•à„à€€à„€à€šà„‡ à€šà€Ÿà€” à€Żà€Ÿà€žà€Ÿà€°à€–à„€ à€źà€Ÿà€čà€żà€€à„€ à€žà€żà€‚à€• à€•à€°à€Łà„à€Żà€Ÿà€šà„€, à€€à„à€źà€šà„à€Żà€Ÿ à€žà„‚à€šà€šà€Ÿà€‚à€žà„‹à€Źà€€ à€žà€‚à€”à€Ÿà€Š à€žà€Ÿà€§à€Łà„à€Żà€Ÿà€šà„€ à€†à€Łà€ż à€€à„à€źà€šà€Ÿ à€«à„‹à€š, à€à€žà€à€źà€à€ž, à€žà€‚à€Șà€°à„à€•, à€•à„…à€Čà„‡à€‚à€Ąà€°, à€•à„‰à€Č à€Čà„‰à€— à€” à€œà€”à€łà€Șà€Ÿà€žà€šà„à€Żà€Ÿ à€Ąà€żà€”à„à€čà€Ÿà€‡à€žà€šà„à€Żà€Ÿ à€Șà€°à€”à€Ÿà€šà€—à„à€Żà€Ÿ à€…‍à„…à€•à„à€žà„‡à€ž à€•à€°à€Łà„à€Żà€Ÿà€šà„€ à€…à€šà„à€źà€€à„€ à€źà€żà€łà„‡à€Č."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"à€Żà€Ÿ à€…‍à„…à€Șà€Čà€Ÿ à€•à„‰à€Č à€•à€°à€€ à€…à€žà€Čà„‡à€Čà„à€Żà€Ÿ à€à€–à€Ÿà€Šà„à€Żà€Ÿ à€”à„à€Żà€•à„à€€à„€à€šà„‡ à€šà€Ÿà€” à€Żà€Ÿà€žà€Ÿà€°à€–à„€ à€źà€Ÿà€čà€żà€€à„€ à€žà€żà€‚à€• à€•à€°à€Łà„à€Żà€Ÿà€šà„€ à€†à€Łà€ż à€€à„à€źà€šà„à€Żà€Ÿ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> à€”à€° à€Șà„à€ąà„€à€Č à€Șà€°à€”à€Ÿà€šà€—à„à€Żà€Ÿ à€…‍à„…à€•à„à€žà„‡à€ž à€•à€°à€Łà„à€Żà€Ÿà€šà„€ à€…à€šà„à€źà€€à„€ à€Šà€żà€Čà„€ à€œà€Ÿà€ˆà€Č"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à€Čà€Ÿ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; à€”à„à€Żà€”à€žà„à€„à€Ÿà€Șà€żà€€ à€•à€°à€Łà„à€Żà€Ÿà€šà„€ à€…à€šà„à€źà€€à„€ à€Šà„à€Żà€Ÿà€Żà€šà„€ à€†à€čà„‡?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"Glasses"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> à€”à„à€Żà€”à€žà„à€„à€Ÿà€Șà€żà€€ à€•à€°à€Łà„à€Żà€Ÿà€žà€Ÿà€ à„€ à€čà„‡ à„Čà€Ș à€†à€”à€¶à„à€Żà€• à€†à€čà„‡. <xliff:g id="APP_NAME">%2$s</xliff:g> à€Čà€Ÿ à€€à„à€źà€šà„à€Żà€Ÿ à€žà„‚à€šà€šà€Ÿà€‚à€žà„‹à€Źà€€ à€žà€‚à€”à€Ÿà€Š à€žà€Ÿà€§à€Łà„à€Żà€Ÿà€šà„€ à€†à€Łà€ż à€€à„à€źà€šà€Ÿ à€«à„‹à€š, à€à€žà€à€źà€à€ž, à€žà€‚à€Șà€°à„à€•, à€źà€Ÿà€Żà€•à„à€°à„‹à€«à„‹à€š à€” à€œà€”à€łà€Șà€Ÿà€žà€šà„à€Żà€Ÿ à€Ąà€żà€”à„à€čà€Ÿà€‡à€žà€šà„à€Żà€Ÿ à€Șà€°à€”à€Ÿà€šà€—à„à€Żà€Ÿ à€…‍à„…à€•à„à€žà„‡à€ž à€•à€°à€Łà„à€Żà€Ÿà€šà„€ à€…à€šà„à€źà€€à„€ à€źà€żà€łà„‡à€Č."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"à€Żà€Ÿ à€…‍à„…à€Șà€Čà€Ÿ à€€à„à€źà€šà„à€Żà€Ÿ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> à€”à€° à€Żà€Ÿ à€Șà€°à€”à€Ÿà€šà€—à„à€Żà€Ÿ à€…‍à„…à€•à„à€žà„‡à€ž à€•à€°à€Łà„à€Żà€Ÿà€šà„€ à€…à€šà„à€źà€€à„€ à€Šà€żà€Čà„€ à€œà€Ÿà€ˆà€Č"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à€Čà€Ÿ à€čà„€ à€źà€Ÿà€čà€żà€€à„€ à€€à„à€źà€šà„à€Żà€Ÿ à€«à„‹à€šà€”à€°à„‚à€š à€…‍à„…à€•à„à€žà„‡à€ž à€•à€°à€Łà„à€Żà€Ÿà€žà€Ÿà€ à„€ à€…à€šà„à€źà€€à„€ à€Šà„à€Żà€Ÿ"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"à€•à„à€°à„‰à€ž-à€Ąà€żà€”à„à€čà€Ÿà€‡à€ž à€žà„‡à€”à€Ÿ"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"à€€à„à€źà€šà„à€Żà€Ÿ à€Ąà€żà€”à„à€čà€Ÿà€‡à€žà€Šà€°à€źà„à€Żà€Ÿà€š à„Čà€Șà„à€ž à€žà„à€Ÿà„à€°à„€à€ź à€•à€°à€Łà„à€Żà€Ÿà€žà€Ÿà€ à„€ <xliff:g id="APP_NAME">%1$s</xliff:g> à€čà„‡ à€€à„à€źà€šà„à€Żà€Ÿ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> à€šà„à€Żà€Ÿ à€”à€€à„€à€šà„‡ à€Șà€°à€”à€Ÿà€šà€—à„€à€šà„€ à€”à€żà€šà€‚à€€à„€ à€•à€°à€€ à€†à€čà„‡"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à€Čà€Ÿ à€čà„€ à€źà€Ÿà€čà€żà€€à„€ à€€à„à€źà€šà„à€Żà€Ÿ à€«à„‹à€šà€”à€°à„‚à€š à€…‍à„…à€•à„à€žà„‡à€ž à€•à€°à€Łà„à€Żà€Ÿà€žà€Ÿà€ à„€ à€…à€šà„à€źà€€à„€ à€Šà„à€Żà€Ÿ"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play à€žà„‡à€”à€Ÿ"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"à€€à„à€źà€šà„à€Żà€Ÿ à€«à„‹à€šà€źà€§à„€à€Č à€«à„‹à€Ÿà„‹, à€źà„€à€Ąà€żà€Żà€Ÿ à€†à€Łà€ż à€žà„‚à€šà€šà€Ÿ à„Čà€•à„à€žà„‡à€ž à€•à€°à€Łà„à€Żà€Ÿà€žà€Ÿà€ à„€ <xliff:g id="APP_NAME">%1$s</xliff:g> à€čà„‡ à€€à„à€źà€šà„à€Żà€Ÿ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> à€šà„à€Żà€Ÿ à€”à€€à„€à€šà„‡ à€Șà€°à€”à€Ÿà€šà€—à„€à€šà„€ à€”à€żà€šà€‚à€€à„€ à€•à€°à€€ à€†à€čà„‡"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; à€Čà€Ÿ à€čà„€ à€•à„ƒà€€à„€ à€•à€°à€Łà„à€Żà€Ÿà€šà„€ à€…à€šà„à€źà€€à„€ à€Šà„à€Żà€Ÿà€Żà€šà„€ à€†à€čà„‡ à€•à€Ÿ?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> à€čà„‡ à€œà€”à€łà€Șà€Ÿà€žà€šà„à€Żà€Ÿ à€Ąà€żà€”à„à€čà€Ÿà€‡à€žà€”à€° à€…‍à„…à€Șà„à€ž à€†à€Łà€ż à€‡à€€à€° à€žà€żà€žà„à€Ÿà„€à€ź à€”à„ˆà€¶à€żà€·à„‍à€Ÿà„à€Żà„‡ à€žà„à€Ÿà„à€°à„€à€ź à€•à€°à€Łà„à€Żà€Ÿà€žà€Ÿà€ à„€ à€€à„à€źà€šà„à€Żà€Ÿ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> à€šà„à€Żà€Ÿ à€”à€€à„€à€šà„‡ à€Șà€°à€”à€Ÿà€šà€—à„€à€šà„€ à€”à€żà€šà€‚à€€à„€ à€•à€°à€Ÿ"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"à€Ąà€żà€”à„à€čà€Ÿà€‡à€ž"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ms/strings.xml b/packages/CompanionDeviceManager/res/values-ms/strings.xml
index 626b3cf..b554f5a 100644
--- a/packages/CompanionDeviceManager/res/values-ms/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ms/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"jam tangan"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Pilih <xliff:g id="PROFILE_NAME">%1$s</xliff:g> untuk diurus oleh &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Apl ini diperlukan untuk mengurus <xliff:g id="DEVICE_NAME">%1$s</xliff:g> anda. <xliff:g id="APP_NAME">%2$s</xliff:g> akan dibenarkan untuk menyegerakkan maklumat seperti nama individu yang memanggil, berinteraksi dengan pemberitahuan anda dan mengakses kebenaran Telefon, SMS, Kenalan, Kalendar, Log panggilan dan Peranti berdekatan anda."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Apl ini akan dibenarkan untuk menyegerakkan maklumat seperti nama seseorang yang membuat panggilan dan mengakses kebenaran ini pada <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> anda"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Benarkan &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; mengurus &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"cermin mata"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Apl ini diperlukan untuk mengurus <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> akan dibenarkan untuk berinteraksi dengan pemberitahuan anda dan mengakses kebenaran Telefon, SMS, Kenalan, Mikrofon dan Peranti berdekatan anda."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Apl ini akan dibenarkan untuk mengakses kebenaran yang berikut pada <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> anda"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Benarkan &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; mengakses maklumat ini daripada telefon anda"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Perkhidmatan silang peranti"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> sedang meminta kebenaran bagi pihak <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> anda untuk menstrim apl antara peranti anda"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Benarkan &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; untuk mengakses maklumat ini daripada telefon anda"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Perkhidmatan Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> sedang meminta kebenaran bagi pihak <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> anda untuk mengakses foto, media dan pemberitahuan telefon anda"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Benarkan &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; mengambil tindakan ini?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> sedang meminta kebenaran bagi pihak <xliff:g id="DEVICE_NAME">%2$s</xliff:g> anda untuk menstrim apl dan ciri sistem yang lain pada peranti berdekatan"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"peranti"</string>
diff --git a/packages/CompanionDeviceManager/res/values-my/strings.xml b/packages/CompanionDeviceManager/res/values-my/strings.xml
index bf9b422..32230ff 100644
--- a/packages/CompanionDeviceManager/res/values-my/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-my/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"နာရြ"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; က စဟမံခန့á€șခလá€Čရနá€ș <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ကို ရလေသချယá€șပါ"</string>
     <string name="summary_watch" msgid="898569637110705523">"သငá€ș၏ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ကို စဟမံခန့á€șခလá€Čရနá€ș ကဥကá€șပá€șလိုအပá€șသညá€ș။ ခေါá€șဆိုသူ၏အမညá€șကá€Č့သို့ ဥချကá€șအလကá€șကို စင့á€șခá€șလုပá€șရနá€ș၊ သငá€ș၏ဖုနá€șှ၊ SMS စာတိုစနစá€ș၊ အဆကá€șá€Ąá€žá€œá€šá€șမျဏသ၊ ပဌကá€čခဒိနá€ș၊ ခေါá€șá€†á€­á€Żá€™á€Ÿá€á€șတမá€șသနဟင့á€ș အနြှတစá€șဝိုကá€șရဟိ စကá€șမျဏသဆိုငá€șရာ ခလင့á€șá€•á€Œá€Żá€á€»á€€á€șမျဏသသုံသရနá€ș၊ á€Ąá€€á€Œá€±á€Źá€„á€șá€žá€€á€Œá€Źá€žá€á€»á€€á€șá€™á€»á€Źá€žá€”á€Ÿá€„á€·á€ș ပဌနá€șလဟနá€șá€á€Żá€¶á€·á€•á€Œá€”á€șရနá€ș <xliff:g id="APP_NAME">%2$s</xliff:g> ကို ခလင့á€șá€•á€Œá€Żá€™á€Šá€ș။"</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"ခေါá€șဆိုသူ၏အမညá€șကá€Č့သို့ ဥချကá€șအလကá€șကို စင့á€șခá€șလုပá€șရနá€șနဟင့á€ș သင့á€ș <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> တလငá€ș ၎ငá€șသခလင့á€șá€•á€Œá€Żá€á€»á€€á€șမျဏသရယူရနá€ș ကဥကá€șပá€șá€€á€­á€Żá€á€œá€„á€·á€șá€•á€Œá€Żá€™á€Šá€ș"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; ကို &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; အာှ á€…á€źá€™á€¶á€á€œá€„á€·á€șá€•á€Œá€Żá€™á€œá€Źá€žá‹"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"မျကá€șမဟနá€ș"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ကို စဟမံခန့á€șခလá€Čရနá€ș ကဥကá€șပá€șလိုအပá€șသညá€ș။ သငá€ș၏ဖုနá€șှ၊ SMS စာတိုစနစá€ș၊ အဆကá€șá€Ąá€žá€œá€šá€șမျဏသ၊ မိုကá€șခရိုဖုနá€șသနဟင့á€ș အနြှတစá€șဝိုကá€șရဟိ စကá€șမျဏသဆိုငá€șရာ ခလင့á€șá€•á€Œá€Żá€á€»á€€á€șမျဏသသုံသရနá€ș၊ á€Ąá€€á€Œá€±á€Źá€„á€șá€žá€€á€Œá€Źá€žá€á€»á€€á€șá€™á€»á€Źá€žá€”á€Ÿá€„á€·á€ș ပဌနá€șလဟနá€șá€á€Żá€¶á€·á€•á€Œá€”á€șရနá€ș <xliff:g id="APP_NAME">%2$s</xliff:g> ကို ခလင့á€șá€•á€Œá€Żá€™á€Šá€ș။"</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"သင့á€ș <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> တလငá€ș ၎ငá€șသခလင့á€șá€•á€Œá€Żá€á€»á€€á€șမျဏသရယူရနá€ș ကဥကá€șပá€șá€€á€­á€Żá€á€œá€„á€·á€șá€•á€Œá€Żá€™á€Šá€ș"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ကို သင့á€șဖုနá€șသမဟ ကဥချကá€șအလကá€ș á€žá€Żá€¶á€žá€á€œá€„á€·á€șá€•á€Œá€Żá€™á€Šá€ș"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"စကá€șá€™á€»á€Źá€žá€€á€Œá€Źá€žá€žá€Żá€¶á€ž ဝနá€șဆေဏငá€șá€™á€Ÿá€Żá€™á€»á€Źá€ž"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> သညá€ș သငá€ș၏စကá€șá€™á€»á€Źá€žá€Ąá€€á€Œá€Źá€ž အကá€șပá€șမျဏသတိုကá€șရိုကá€șလလဟင့á€șရနá€ș <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ကိုယá€șစာှ ခလင့á€șá€•á€Œá€Żá€á€»á€€á€șတေဏငá€șသနေသညá€ș"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; အာှ သင့á€șဖုနá€șသမဟ ကဥချကá€șအလကá€ș á€žá€Żá€¶á€žá€á€œá€„á€·á€șá€•á€Œá€Żá€á€Œá€„á€șှ"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play ဝနá€șဆေဏငá€șá€™á€Ÿá€Żá€™á€»á€Źá€ž"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> သညá€ș သင့á€șဖုနá€șှ၏ ဓာတá€șပုံ၊ á€™á€źá€’á€źá€šá€Źá€”á€Ÿá€„á€·á€ș á€Ąá€€á€Œá€±á€Źá€„á€șá€žá€€á€Œá€Źá€žá€á€»á€€á€șမျဏသသုံသရနá€ș <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ကိုယá€șစာှ ခလင့á€șá€•á€Œá€Żá€á€»á€€á€șတေဏငá€șသနေသညá€ș"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ကို á€€á€žá€­á€Żá€·á€œá€Żá€•á€șဆေဏငá€șခလင့á€șá€•á€Œá€Żá€™á€œá€Źá€žá‹"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> သညá€ș အနြှတစá€șဝိုကá€șရဟိ အကá€șပá€șá€™á€»á€Źá€žá€”á€Ÿá€„á€·á€ș á€Ąá€á€Œá€Źá€žá€…á€”á€…á€șအငá€șá€čဂါရပá€șမျဏသကို တိုကá€șရိုကá€șဖလင့á€șရနá€ș သင့á€ș <xliff:g id="DEVICE_NAME">%2$s</xliff:g> ကိုယá€șစာှ ခလင့á€șá€•á€Œá€Żá€á€»á€€á€șတေဏငá€șသနေသညá€ș"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"စကá€ș"</string>
diff --git a/packages/CompanionDeviceManager/res/values-nb/strings.xml b/packages/CompanionDeviceManager/res/values-nb/strings.xml
index 3863d1d..5cffcbd 100644
--- a/packages/CompanionDeviceManager/res/values-nb/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-nb/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"klokke"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Velg <xliff:g id="PROFILE_NAME">%1$s</xliff:g> som skal administreres av &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Denne appen kreves for å administrere <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får tillatelse til å synkronisere informasjon som navnet til noen som ringer, og samhandle med varslene dine, og får tilgang til tillatelsene for telefon, SMS, kontakter, kalender, samtalelogger og enheter i nærheten."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Denne appen får tillatelse til å synkronisere informasjon som navnet til noen som ringer, og har disse tillatelsene på din/ditt <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Vil du la &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; administrere &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"briller"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Denne appen kreves for å administrere <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får tilgang til varslene dine og får tillatelsene for telefon, SMS, kontakter, mikrofon og enheter i nærheten."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Denne appen får disse tillatelsene på din/ditt <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Gi &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; tilgang til denne informasjonen fra telefonen din"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Tjenester på flere enheter"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> ber om tillatelse til å strømme apper mellom enhetene dine, på vegne av <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Gi &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; tilgang til denne informasjonen fra telefonen din"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play-tjenester"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> ber om tillatelse til å få tilgang til bilder, medier og varsler på telefonen din, på vegne av <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Vil du la &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; gjøre dette?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> ber om tillatelse på vegne av <xliff:g id="DEVICE_NAME">%2$s</xliff:g> til å strømme apper og andre systemfunksjoner til enheter i nærheten"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"enhet"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ne/strings.xml b/packages/CompanionDeviceManager/res/values-ne/strings.xml
index 60888e5..b17503a 100644
--- a/packages/CompanionDeviceManager/res/values-ne/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ne/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"à€˜à€Ąà„€"</string>
     <string name="chooser_title" msgid="2262294130493605839">"à€†à€«à„‚à€Čà„‡ &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; à€Șà„à€°à€Żà„‹à€— à€—à€°à„€ à€”à„à€Żà€”à€žà„à€„à€Ÿà€Șà€š à€—à€°à„à€š à€šà€Ÿà€čà„‡à€•à„‹ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> à€šà€Żà€š à€—à€°à„à€šà„à€čà„‹à€žà„"</string>
     <string name="summary_watch" msgid="898569637110705523">"à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> à€”à„à€Żà€”à€žà„à€„à€Ÿà€Șà€š à€—à€°à„à€š à€Żà„‹ à€à€Ș à€šà€Ÿà€čà€żà€šà„à€›à„€ <xliff:g id="APP_NAME">%2$s</xliff:g> à€Čà€Ÿà€ˆ à€•à€Č à€—à€°à„à€šà„‡ à€”à„à€Żà€•à„à€€à€żà€•à„‹ à€šà€Ÿà€ź à€œà€žà„à€€à€Ÿ à€œà€Ÿà€šà€•à€Ÿà€°à„€ à€žà€żà€‚à€• à€—à€°à„à€šà„‡, à€€à€Șà€Ÿà€ˆà€‚à€•à€Ÿ à€žà„‚à€šà€šà€Ÿ à€čà„‡à€°à„à€šà„‡ à€° à€«à„‹à€š, SMS, à€•à€šà„à€Ÿà„à€Żà€Ÿà€•à„à€Ÿ, à€Șà€Ÿà€€à„à€°à„‹, à€•à€Č à€Čà€— à€€à€„à€Ÿ à€šà€œà€żà€•à„ˆà€•à€Ÿ à€Ąà€żà€­à€Ÿà€‡à€žà€žà€źà„à€Źà€šà„à€§à„€ à€…à€šà„à€źà€€à€żà€čà€°à„‚ à€čà„‡à€°à„à€šà„‡ à€€à€„à€Ÿ à€Șà„à€°à€Żà„‹à€— à€—à€°à„à€šà„‡ à€…à€šà„à€źà€€à€ż à€Šà€żà€‡à€šà„‡ à€›à„€"</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> à€źà€Ÿ à€Żà„‹ à€à€Șà€Čà€Ÿà€ˆ à€•à€Č à€—à€°à„à€šà„‡ à€”à„à€Żà€•à„à€€à€żà€•à„‹ à€šà€Ÿà€ź à€œà€žà„à€€à€Ÿ à€œà€Ÿà€šà€•à€Ÿà€°à„€ à€žà€żà€‚à€• à€—à€°à„à€šà„‡ à€° à€Żà„€ à€•à„à€°à€Ÿà€čà€°à„‚ à€—à€°à„à€šà„‡ à€…à€šà„à€źà€€à€ż à€Šà€żà€‡à€šà„‡ à€›"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à€Čà€Ÿà€ˆ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; à€”à„à€Żà€”à€žà„à€„à€Ÿà€Șà€š à€—à€°à„à€šà„‡ à€…à€šà„à€źà€€à€ż à€Šà€żà€šà„‡ à€čà„‹?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"à€šà€žà„à€źà€Ÿ"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> à€”à„à€Żà€”à€žà„à€„à€Ÿà€Șà€š à€—à€°à„à€š à€Żà„‹ à€à€Ș à€šà€Ÿà€čà€żà€šà„à€›à„€ <xliff:g id="APP_NAME">%2$s</xliff:g> à€Čà€Ÿà€ˆ à€€à€Șà€Ÿà€ˆà€‚à€•à€Ÿ à€žà„‚à€šà€šà€Ÿ à€čà„‡à€°à„à€šà„‡ à€° à€«à„‹à€š, SMS, à€•à€šà„à€Ÿà„à€Żà€Ÿà€•à„à€Ÿ, à€źà€Ÿà€‡à€•à„à€°à„‹à€«à„‹à€š à€€à€„à€Ÿ à€šà€œà€żà€•à„ˆà€•à€Ÿ à€Ąà€żà€­à€Ÿà€‡à€žà€žà€źà„à€Źà€šà„à€§à„€ à€…à€šà„à€źà€€à€żà€čà€°à„‚ à€čà„‡à€°à„à€šà„‡ à€€à€„à€Ÿ à€Șà„à€°à€Żà„‹à€— à€—à€°à„à€šà„‡ à€…à€šà„à€źà€€à€ż à€Šà€żà€‡à€šà„‡ à€›à„€"</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> à€źà€Ÿ à€Żà„‹ à€à€Șà€Čà€Ÿà€ˆ à€šà€żà€źà„à€š à€…à€šà„à€źà€€à€ż à€Šà€żà€‡à€šà„‡ à€›:"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à€Čà€Ÿà€ˆ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€«à„‹à€šà€źà€Ÿ à€­à€à€•à„‹ à€Żà„‹ à€œà€Ÿà€šà€•à€Ÿà€°à„€ à€čà„‡à€°à„à€šà„‡ à€€à€„à€Ÿ à€Șà„à€°à€Żà„‹à€— à€—à€°à„à€šà„‡ à€…à€šà„à€źà€€à€ż à€Šà€żà€šà„à€čà„‹à€žà„"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"à€•à„à€°à€ž-à€Ąà€żà€­à€Ÿà€‡à€ž à€žà„‡à€”à€Ÿà€čà€°à„‚"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€Ąà€żà€­à€Ÿà€‡à€ž <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> à€•à„‹ à€€à€°à„à€«à€Źà€Ÿà€Ÿ à€€à€Șà€Ÿà€ˆà€‚à€•à€Ÿ à€•à„à€šà„ˆ à€à€‰à€Ÿà€Ÿ à€Ąà€żà€­à€Ÿà€‡à€žà€Źà€Ÿà€Ÿ à€…à€°à„à€•à„‹ à€Ąà€żà€­à€Ÿà€‡à€žà€źà€Ÿ à€à€Ș à€žà„à€Ÿà„à€°à€żà€ź à€—à€°à„à€šà„‡ à€…à€šà„à€źà€€à€ż à€źà€Ÿà€—à„à€Šà„ˆ à€›"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à€Čà€Ÿà€ˆ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€«à„‹à€šà€źà€Ÿ à€­à€à€•à„‹ à€Żà„‹ à€œà€Ÿà€šà€•à€Ÿà€°à„€ à€čà„‡à€°à„à€šà„‡ à€€à€„à€Ÿ à€Șà„à€°à€Żà„‹à€— à€—à€°à„à€šà„‡ à€…à€šà„à€źà€€à€ż à€Šà€żà€šà„à€čà„‹à€žà„"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play services"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€Ąà€żà€­à€Ÿà€‡à€ž <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> à€•à„‹ à€€à€°à„à€«à€Źà€Ÿà€Ÿ à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€«à„‹à€šà€źà€Ÿ à€­à€à€•à€Ÿ à€«à„‹à€Ÿà„‹, à€źà€żà€Ąà€żà€Żà€Ÿ à€° à€žà„‚à€šà€šà€Ÿà€čà€°à„‚ à€čà„‡à€°à„à€šà„‡ à€€à€„à€Ÿ à€Șà„à€°à€Żà„‹à€— à€—à€°à„à€šà„‡ à€…à€šà„à€źà€€à€ż à€źà€Ÿà€—à„à€Šà„ˆ à€›"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; à€Čà€Ÿà€ˆ à€Żà„‹ à€•à€Ÿà€°à„à€Ż à€—à€°à„à€šà„‡ à€…à€šà„à€źà€€à€ż à€Šà€żà€šà„‡ à€čà„‹?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€Ąà€żà€­à€Ÿà€‡à€ž <xliff:g id="DEVICE_NAME">%2$s</xliff:g> à€•à„‹ à€€à€°à„à€«à€Źà€Ÿà€Ÿ à€šà€œà€żà€•à„ˆà€•à€Ÿ à€Ąà€żà€­à€Ÿà€‡à€žà€čà€°à„‚à€źà€Ÿ à€à€Ș à€° à€žà€żà€žà„à€Ÿà€źà€•à€Ÿ à€…à€šà„à€Ż à€žà„à€”à€żà€§à€Ÿà€čà€°à„‚ à€žà„à€Ÿà„à€°à€żà€ź à€—à€°à„à€šà„‡ à€…à€šà„à€źà€€à€ż à€źà€Ÿà€—à„à€Šà„ˆ à€›"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"à€Żà€šà„à€€à„à€°"</string>
diff --git a/packages/CompanionDeviceManager/res/values-nl/strings.xml b/packages/CompanionDeviceManager/res/values-nl/strings.xml
index 2b78bb1..add0684 100644
--- a/packages/CompanionDeviceManager/res/values-nl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-nl/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"smartwatch"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Een <xliff:g id="PROFILE_NAME">%1$s</xliff:g> kiezen om te beheren met &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Deze app is vereist om je <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te beheren. <xliff:g id="APP_NAME">%2$s</xliff:g> mag informatie (zoals de naam van iemand die belt) synchroniseren, mag interactie hebben met je meldingen en krijgt toegang tot de rechten Telefoon, Sms, Contacten, Agenda, Gesprekslijsten en Apparaten in de buurt."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Deze app kan informatie synchroniseren (zoals de naam van iemand die belt) en krijgt toegang tot deze rechten op je <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; toestaan &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; te beheren?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"brillen"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Deze app is nodig om <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te beheren. <xliff:g id="APP_NAME">%2$s</xliff:g> mag interactie hebben met je meldingen en krijgt toegang tot de rechten Telefoon, Sms, Contacten, Microfoon en Apparaten in de buurt."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Deze app krijgt toegang tot deze rechten op je <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; toegang geven tot deze informatie op je telefoon"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Cross-device-services"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> vraagt namens jouw <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> toestemming om apps te streamen tussen je apparaten"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; toegang geven tot deze informatie op je telefoon"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play-services"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> vraagt namens jouw <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> toegang tot de foto\'s, media en meldingen van je telefoon"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Toestaan dat &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; deze actie uitvoert?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> vraagt namens je <xliff:g id="DEVICE_NAME">%2$s</xliff:g> toestemming om apps en andere systeemfuncties naar apparaten in de buurt te streamen"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"apparaat"</string>
diff --git a/packages/CompanionDeviceManager/res/values-or/strings.xml b/packages/CompanionDeviceManager/res/values-or/strings.xml
index 9b5116dc..12c8e6c 100644
--- a/packages/CompanionDeviceManager/res/values-or/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-or/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"à­±àŹŸàŹšà­"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; àŹŠà­à­±àŹŸàŹ°àŹŸ àŹȘàŹ°àŹżàŹšàŹŸàŹłàŹżàŹ€ àŹčà­‡àŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ àŹàŹ• <xliff:g id="PROFILE_NAME">%1$s</xliff:g>àŹ•à­ àŹŹàŹŸàŹ›àŹšà­àŹ€à­"</string>
     <string name="summary_watch" msgid="898569637110705523">"àŹ†àŹȘàŹŁàŹ™à­àŹ• <xliff:g id="DEVICE_NAME">%1$s</xliff:g>àŹ•à­ àŹȘàŹ°àŹżàŹšàŹŸàŹłàŹšàŹŸ àŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ àŹàŹčàŹż àŹ†àŹȘ àŹ†àŹŹàŹ¶à­à­ŸàŹ•à„€ àŹ•àŹČ àŹ•àŹ°à­àŹ„àŹżàŹŹàŹŸ àŹŻà­‡ àŹ•à­ŒàŹŁàŹžàŹż àŹŹà­à­ŸàŹ•à­àŹ€àŹżàŹ™à­àŹ• àŹšàŹŸàŹź àŹȘàŹ°àŹż àŹžà­‚àŹšàŹšàŹŸ àŹžàŹżàŹ™à­àŹ• àŹ•àŹ°àŹżàŹŹàŹŸ, àŹ†àŹȘàŹŁàŹ™à­àŹ• àŹŹàŹżàŹœà­àŹžàŹȘà­àŹ€àŹżàŹ—à­àŹĄàŹŒàŹżàŹ• àŹžàŹč àŹ‡àŹŁà­àŹŸàŹ°àŹŸàŹ•à­àŹŸ àŹ•àŹ°àŹżàŹŹàŹŸ àŹàŹŹàŹ‚ àŹ†àŹȘàŹŁàŹ™à­àŹ•àŹ° àŹ«à­‹àŹš, SMS, àŹ•àŹŁà­àŹŸàŹŸàŹ•à­àŹŸ, àŹ•à­‡àŹČà­‡àŹŁà­àŹĄàŹ°, àŹ•àŹČ àŹČàŹ— àŹ“ àŹ†àŹ–àŹȘàŹŸàŹ–àŹ° àŹĄàŹżàŹ­àŹŸàŹ‡àŹž àŹ…àŹšà­àŹźàŹ€àŹżàŹ—à­àŹĄàŹŒàŹżàŹ•à­ àŹ†àŹ•à­àŹžà­‡àŹž àŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ <xliff:g id="APP_NAME">%2$s</xliff:g>àŹ•à­ àŹ…àŹšà­àŹźàŹ€àŹż àŹŠàŹżàŹ†àŹŻàŹżàŹŹà„€"</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"àŹ•àŹČ àŹ•àŹ°à­àŹ„àŹżàŹŹàŹŸ àŹŻà­‡ àŹ•à­ŒàŹŁàŹžàŹż àŹŹà­à­ŸàŹ•à­àŹ€àŹżàŹ™à­àŹ• àŹšàŹŸàŹź àŹȘàŹ°àŹż àŹžà­‚àŹšàŹšàŹŸ àŹžàŹżàŹ™à­àŹ• àŹ•àŹ°àŹżàŹŹàŹŸàŹ•à­ àŹàŹŹàŹ‚ àŹ†àŹȘàŹŁàŹ™à­àŹ• <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>àŹ°à­‡ àŹàŹčàŹż àŹ…àŹšà­àŹźàŹ€àŹżàŹ—à­àŹĄàŹŒàŹżàŹ•à­ àŹ†àŹ•à­àŹžà­‡àŹž àŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ àŹàŹčàŹż àŹ†àŹȘàŹ•à­ àŹ…àŹšà­àŹźàŹ€àŹż àŹŠàŹżàŹ†àŹŻàŹżàŹŹ"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;àŹ•à­ àŹȘàŹ°àŹżàŹšàŹŸàŹłàŹšàŹŸ àŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;àŹ•à­ àŹ…àŹšà­àŹźàŹ€àŹż àŹŠà­‡àŹŹà­‡?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"àŹšàŹ·àŹźàŹŸ"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>àŹ•à­ àŹȘàŹ°àŹżàŹšàŹŸàŹłàŹšàŹŸ àŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ àŹàŹčàŹż àŹ†àŹȘ àŹ†àŹŹàŹ¶à­à­ŸàŹ•à„€ àŹ†àŹȘàŹŁàŹ™à­àŹ• àŹŹàŹżàŹœà­àŹžàŹȘà­àŹ€àŹżàŹ—à­àŹĄàŹŒàŹżàŹ• àŹžàŹč àŹ‡àŹŁà­àŹŸàŹ°àŹŸàŹ•à­àŹŸ àŹ•àŹ°àŹżàŹŹàŹŸ àŹàŹŹàŹ‚ àŹ†àŹȘàŹŁàŹ™à­àŹ•àŹ° àŹ«à­‹àŹš, SMS, àŹ•àŹŁà­àŹŸàŹŸàŹ•à­àŹŸ, àŹźàŹŸàŹ‡àŹ•à­àŹ°à­‹àŹ«à­‹àŹš àŹ“ àŹ†àŹ–àŹȘàŹŸàŹ–àŹ° àŹĄàŹżàŹ­àŹŸàŹ‡àŹž àŹ…àŹšà­àŹźàŹ€àŹżàŹ—à­àŹĄàŹŒàŹżàŹ•à­ àŹ†àŹ•à­àŹžà­‡àŹž àŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ <xliff:g id="APP_NAME">%2$s</xliff:g>àŹ•à­ àŹ…àŹšà­àŹźàŹ€àŹż àŹŠàŹżàŹ†àŹŻàŹżàŹŹà„€"</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"àŹ†àŹȘàŹŁàŹ™à­àŹ• <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>àŹ°à­‡ àŹàŹčàŹż àŹ…àŹšà­àŹźàŹ€àŹżàŹ—à­àŹĄàŹŒàŹżàŹ•à­ àŹ†àŹ•à­àŹžà­‡àŹž àŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ àŹàŹčàŹż àŹ†àŹȘàŹ•à­ àŹ…àŹšà­àŹźàŹ€àŹż àŹŠàŹżàŹ†àŹŻàŹżàŹŹ"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"àŹ†àŹȘàŹŁàŹ™à­àŹ• àŹ«à­‹àŹšàŹ°à­ àŹàŹčàŹż àŹžà­‚àŹšàŹšàŹŸàŹ•à­ àŹ†àŹ•à­àŹžà­‡àŹž àŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;àŹ•à­ àŹ…àŹšà­àŹźàŹ€àŹż àŹŠàŹżàŹ…àŹšà­àŹ€à­"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"àŹ•à­àŹ°àŹž-àŹĄàŹżàŹ­àŹŸàŹ‡àŹž àŹžà­‡àŹŹàŹŸàŹ—à­àŹĄàŹŒàŹżàŹ•"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"àŹ†àŹȘàŹŁàŹ™à­àŹ• àŹĄàŹżàŹ­àŹŸàŹ‡àŹžàŹ—à­àŹĄàŹŒàŹżàŹ• àŹźàŹ§à­à­ŸàŹ°à­‡ àŹ†àŹȘà­àŹžàŹ•à­ àŹ·à­àŹŸà­àŹ°àŹżàŹź àŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ <xliff:g id="APP_NAME">%1$s</xliff:g> àŹ†àŹȘàŹŁàŹ™à­àŹ•àŹ° <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> àŹ€àŹ°àŹ«àŹ°à­ àŹ…àŹšà­àŹźàŹ€àŹż àŹȘàŹŸàŹ‡àŹ àŹ…àŹšà­àŹ°à­‹àŹ§ àŹ•àŹ°à­àŹ›àŹż"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"àŹ†àŹȘàŹŁàŹ™à­àŹ• àŹ«à­‹àŹšàŹ°à­ àŹàŹčàŹż àŹžà­‚àŹšàŹšàŹŸàŹ•à­ àŹ†àŹ•à­àŹžà­‡àŹž àŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;àŹ•à­ àŹ…àŹšà­àŹźàŹ€àŹż àŹŠàŹżàŹ…àŹšà­àŹ€à­"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play àŹžà­‡àŹŹàŹŸàŹ—à­àŹĄàŹŒàŹżàŹ•"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"àŹ†àŹȘàŹŁàŹ™à­àŹ• àŹ«à­‹àŹšàŹ° àŹ«àŹŸà­‹, àŹźàŹżàŹĄàŹżàŹ† àŹàŹŹàŹ‚ àŹŹàŹżàŹœà­àŹžàŹȘà­àŹ€àŹżàŹ—à­àŹĄàŹŒàŹżàŹ•à­ àŹ†àŹ•à­àŹžà­‡àŹž àŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ <xliff:g id="APP_NAME">%1$s</xliff:g> àŹ†àŹȘàŹŁàŹ™à­àŹ•àŹ° <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> àŹ€àŹ°àŹ«àŹ°à­ àŹ…àŹšà­àŹźàŹ€àŹż àŹȘàŹŸàŹ‡àŹ àŹ…àŹšà­àŹ°à­‹àŹ§ àŹ•àŹ°à­àŹ›àŹż"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"àŹàŹčàŹż àŹȘàŹŠàŹ•à­àŹ·à­‡àŹȘ àŹšà­‡àŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt;àŹ•à­ àŹ…àŹšà­àŹźàŹ€àŹż àŹŠà­‡àŹŹà­‡?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"àŹ†àŹ–àŹȘàŹŸàŹ–àŹ° àŹĄàŹżàŹ­àŹŸàŹ‡àŹžàŹ—à­àŹĄàŹŒàŹżàŹ•àŹ°à­‡ àŹ†àŹȘà­àŹž àŹàŹŹàŹ‚ àŹ…àŹšà­à­Ÿ àŹžàŹżàŹ·à­àŹŸàŹź àŹ«àŹżàŹšàŹ°àŹ—à­àŹĄàŹŒàŹżàŹ•à­ àŹ·à­àŹŸà­àŹ°àŹżàŹź àŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ <xliff:g id="APP_NAME">%1$s</xliff:g> àŹ†àŹȘàŹŁàŹ™à­àŹ• <xliff:g id="DEVICE_NAME">%2$s</xliff:g> àŹ€àŹ°àŹ«àŹ°à­ àŹ…àŹšà­àŹźàŹ€àŹż àŹȘàŹŸàŹ‡àŹ àŹ…àŹšà­àŹ°à­‹àŹ§ àŹ•àŹ°à­àŹ›àŹż"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"àŹĄàŹżàŹ­àŹŸàŹ‡àŹžà­"</string>
diff --git a/packages/CompanionDeviceManager/res/values-pa/strings.xml b/packages/CompanionDeviceManager/res/values-pa/strings.xml
index c6bbf37..a99d764 100644
--- a/packages/CompanionDeviceManager/res/values-pa/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pa/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"àšžàšźàšŸàš°àšŸ-àš”àšŸàšš"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; àš”à©±àšČà©‹àš‚ àšȘà©àš°àšŹà©°àš§àšżàš€ àš•à©€àš€à©‡ àšœàšŸàšŁ àšČàšˆ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> àššà©àšŁà©‹"</string>
     <string name="summary_watch" msgid="898569637110705523">"àš‡àšč àšàšȘ àš€à©àščàšŸàšĄà©‡ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> àšŠàšŸ àšȘà©àš°àšŹà©°àš§àšš àš•àš°àšš àšČàšˆ àšČà©‹à©œà©€àš‚àšŠà©€ àščà©ˆà„€ <xliff:g id="APP_NAME">%2$s</xliff:g> àššà©‚à©° àš•àšŸàšČàš° àšŠà©‡ àššàšŸàšź àš”àš°àš—à©€ àšœàšŸàšŁàš•àšŸàš°à©€ àššà©‚à©° àšžàšżà©°àš• àš•àš°àšš, àš€à©àščàšŸàšĄà©€àš†àš‚ àšžà©‚àššàššàšŸàš”àšŸàš‚ àššàšŸàšČ àš…à©°àš€àš°àš•àšżàš°àšżàš† àš•àš°àšš àš…àš€à©‡ àš€à©àščàšŸàšĄà©‡ àš«àšŒà©‹àšš, SMS, àšžà©°àšȘàš°àš•àšŸàš‚, àš•à©ˆàšČà©°àšĄàš°, àš•àšŸàšČ àšČà©Œàš—àšŸàš‚ àš…àš€à©‡ àššàšœàšŒàšŠà©€àš•à©€ àšĄà©€àš”àšŸàšˆàšžàšŸàš‚ àšžà©°àšŹà©°àš§à©€ àš‡àšœàšŸàšœàšŒàš€àšŸàš‚ àš€à©±àš• àšȘàščà©à©°àšš àš•àš°àšš àšŠà©€ àš†àš—àšżàš† àščà©‹àš”à©‡àš—à©€à„€"</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"àš‡àšž àšàšȘ àššà©‚à©° àš€à©àščàšŸàšĄà©‡ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> \'àš€à©‡ àš•àšŸàšČàš° àšŠà©‡ àššàšŸàšź àš”àš°àš—à©€ àšœàšŸàšŁàš•àšŸàš°à©€ àššà©‚à©° àšžàšżà©°àš• àš•àš°àšš àš…àš€à©‡ àš‡àššà©àščàšŸàš‚ àš‡àšœàšŸàšœàšŒàš€àšŸàš‚ àš€à©±àš• àšȘàščà©à©°àšš àš•àš°àšš àšŠà©€ àš†àš—àšżàš† àščà©‹àš”à©‡àš—à©€"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"àš•à©€ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àššà©‚à©° &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; àšŠàšŸ àšȘà©àš°àšŹà©°àš§àšš àš•àš°àšš àšŠà©€ àš†àš—àšżàš† àšŠà©‡àšŁà©€ àščੈ?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"àšàššàš•àšŸàš‚"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"àš‡àšč àšàšȘ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> àšŠàšŸ àšȘà©àš°àšŹà©°àš§àšš àš•àš°àšš àšČàšˆ àšČà©‹à©œà©€àš‚àšŠà©€ àščà©ˆà„€ <xliff:g id="APP_NAME">%2$s</xliff:g> àššà©‚à©° àš€à©àščàšŸàšĄà©€àš†àš‚ àšžà©‚àššàššàšŸàš”àšŸàš‚ àššàšŸàšČ àš…à©°àš€àš°àš•àšżàš°àšżàš† àš•àš°àšš àš…àš€à©‡ àš€à©àščàšŸàšĄà©‡ àš«àšŒà©‹àšš, SMS, àšžà©°àšȘàš°àš•àšŸàš‚, àšźàšŸàšˆàš•à©àš°à©‹àš«àšŒà©‹àšš àš…àš€à©‡ àššàšœàšŒàšŠà©€àš•à©€ àšĄà©€àš”àšŸàšˆàšžàšŸàš‚ àšžà©°àšŹà©°àš§à©€ àš‡àšœàšŸàšœàšŒàš€àšŸàš‚ àš€à©±àš• àšȘàščà©à©°àšš àš•àš°àšš àšŠà©€ àš†àš—àšżàš† àščà©‹àš”à©‡àš—à©€à„€"</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"àš‡àšž àšàšȘ àššà©‚à©° àš€à©àščàšŸàšĄà©‡ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> \'àš€à©‡ àš‡àššà©àščàšŸàš‚ àš‡àšœàšŸàšœàšŒàš€àšŸàš‚ àš€à©±àš• àšȘàščà©à©°àšš àš•àš°àšš àšŠà©€ àš†àš—àšżàš† àščà©‹àš”à©‡àš—à©€"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àššà©‚à©° àš€à©àščàšŸàšĄà©‡ àš«àšŒà©‹àšš àš€à©‹àš‚ àš‡àšž àšœàšŸàšŁàš•àšŸàš°à©€ àš€à©±àš• àšȘàščà©à©°àšš àš•àš°àšš àšŠà©€ àš†àš—àšżàš† àšŠàšżàš“"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"àš•à©àš°àšŸàšž-àšĄà©€àš”àšŸàšˆàšž àšžà©‡àš”àšŸàš”àšŸàš‚"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> àš€à©àščàšŸàšĄà©‡ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> àšŠà©€ àš€àš°àš«àšŒà©‹àš‚ àš€à©àščàšŸàšĄà©‡ àšĄà©€àš”àšŸàšˆàšžàšŸàš‚ àš”àšżàššàš•àšŸàš° àšàšȘàšŸàš‚ àššà©‚à©° àšžàšŸà©àš°à©€àšź àš•àš°àšš àšŠà©€ àš‡àšœàšŸàšœàšŒàš€ àšźà©°àš— àš°àščੀ àščੈ"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àššà©‚à©° àš€à©àščàšŸàšĄà©‡ àš«àšŒà©‹àšš àš€à©‹àš‚ àš‡àšž àšœàšŸàšŁàš•àšŸàš°à©€ àš€à©±àš• àšȘàščà©à©°àšš àš•àš°àšš àšŠà©€ àš†àš—àšżàš† àšŠàšżàš“"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play àšžà©‡àš”àšŸàš”àšŸàš‚"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> àš€à©àščàšŸàšĄà©‡ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> àšŠà©€ àš€àš°àš«àšŒà©‹àš‚ àš€à©àščàšŸàšĄà©‡ àš«àšŒà©‹àšš àšŠà©€àš†àš‚ àš«àšŒà©‹àšŸà©‹àš†àš‚, àšźà©€àšĄà©€àš† àš…àš€à©‡ àšžà©‚àššàššàšŸàš”àšŸàš‚ àš€à©±àš• àšȘàščà©à©°àšš àš•àš°àšš àšŠà©€ àš‡àšœàšŸàšœàšŒàš€ àšźà©°àš— àš°àščੀ àščੈ"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"àš•à©€ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; àššà©‚à©° àš‡àšč àš•àšŸàš°àš”àšŸàšˆ àš•àš°àšš àšŠà©€ àš†àš—àšżàš† àšŠà©‡àšŁà©€ àščੈ?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> àš€à©àščàšŸàšĄà©‡ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> àšŠà©€ àš€àš°àš«àšŒà©‹àš‚ àššàšœàšŒàšŠà©€àš•à©€ àšĄà©€àš”àšŸàšˆàšžàšŸàš‚ \'àš€à©‡ àšàšȘàšŸàš‚ àš…àš€à©‡ àščà©‹àš° àšžàšżàšžàšŸàšź àšžà©°àšŹà©°àš§à©€ àš”àšżàšžàšŒà©‡àšžàšŒàš€àšŸàš”àšŸàš‚ àššà©‚à©° àšžàšŸà©àš°à©€àšź àš•àš°àšš àšŠà©€ àš‡àšœàšŸàšœàšŒàš€ àšźà©°àš— àš°àščੀ àščੈ"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"àšĄà©€àš”àšŸàšˆàšž"</string>
diff --git a/packages/CompanionDeviceManager/res/values-pl/strings.xml b/packages/CompanionDeviceManager/res/values-pl/strings.xml
index 87db327..a00e5bf 100644
--- a/packages/CompanionDeviceManager/res/values-pl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pl/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"zegarek"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Wybierz profil <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, którym ma zarządzać aplikacja &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Ta aplikacja jest niezbędna do zarządzania urządzeniem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikacja <xliff:g id="APP_NAME">%2$s</xliff:g> będzie mogƂa synchronizować informacje takie jak nazwa osoby dzwoniącej, korzystać z powiadomieƄ oraz uprawnieƄ dotyczących telefonu, SMS-ów, kontaktów, kalendarza, rejestrów poƂączeƄ i UrządzeƄ w pobliĆŒu."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Aplikacja będzie mogƂa synchronizować informacje takie jak nazwa dzwoniącego oraz korzystać z tych uprawnieƄ na Twoim urządzeniu (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>)"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Zezwolić na dostęp aplikacji &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; do urządzenia &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"Okulary"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Ta aplikacja jest niezbędna do zarządzania urządzeniem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikacja <xliff:g id="APP_NAME">%2$s</xliff:g> będzie mogƂa wchodzić w interakcję z powiadomieniami i korzystać z uprawnieƄ dotyczących telefonu, SMS-ów, kontaktów, mikrofonu oraz urządzeƄ w pobliĆŒu."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Aplikacja będzie miaƂa dostęp do tych uprawnieƄ na Twoim urządzeniu (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>)"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Zezwól urządzeniu &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; na dostęp do tych informacji na Twoim telefonie"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"UsƂugi na innym urządzeniu"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> prosi w imieniu urządzenia <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> o uprawnienia dotyczące strumieniowego odtwarzania treƛci z aplikacji na innym urządzeniu"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Zezwól aplikacji &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; na dostęp do tych informacji na Twoim telefonie"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"UsƂugi Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> prosi w imieniu urządzenia <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> o uprawnienia dotyczące dostępu do zdjęć, multimediów i powiadomieƄ na telefonie"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Zezwolić urządzeniu &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; na wykonanie tego dziaƂania?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> prosi w imieniu urządzenia <xliff:g id="DEVICE_NAME">%2$s</xliff:g> o uprawnienia do strumieniowego odtwarzania treƛci i innych funkcji systemowych na urządzeniach w pobliĆŒu"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"urządzenie"</string>
diff --git a/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml b/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml
index c630fce..f482146 100644
--- a/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"relógio"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Escolha um <xliff:g id="PROFILE_NAME">%1$s</xliff:g> para ser gerenciado pelo app &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"O app <xliff:g id="APP_NAME">%2$s</xliff:g> é necessário para gerenciar o dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Ele poderá sincronizar informações, como o nome de quem está ligando, interagir com suas notificações e acessar as permissões do Telefone, SMS, contatos, agenda, registro de chamadas e dispositivos por perto."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"O app poderá sincronizar informações, como o nome de quem está ligando, e acessar estas permissões no seu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Permitir que o app &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; gerencie o dispositivo &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"óculos"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"O app <xliff:g id="APP_NAME">%2$s</xliff:g> é necessário para gerenciar o dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Ele poderá interagir com suas notificações e acessar suas permissões de telefone, SMS, contatos, microfone e dispositivos por perto."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"O app poderá acessar estas permissões no seu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Permitir que o app &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acesse estas informações do smartphone"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Serviços entre dispositivos"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> está pedindo permissão em nome do seu dispositivo <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para fazer streaming de apps entre seus dispositivos"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Autorizar que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acesse estas informações do smartphone"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play Services"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> está pedindo permissão em nome do seu dispositivo <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para acessar fotos, mídia e notificações do smartphone"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Permitir que o dispositivo &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; realize essa ação?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> está pedindo permissão em nome do seu dispositivo <xliff:g id="DEVICE_NAME">%2$s</xliff:g> para fazer streaming de apps e de outros recursos do sistema para dispositivos por perto"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"dispositivo"</string>
diff --git a/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml b/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml
index 59d4423..1f375f5 100644
--- a/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"relógio"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Escolha um <xliff:g id="PROFILE_NAME">%1$s</xliff:g> para ser gerido pela app &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Esta app é necessária para gerir o dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. A app <xliff:g id="APP_NAME">%2$s</xliff:g> vai poder sincronizar informações, como o nome do autor de uma chamada, interagir com as suas notificações e aceder às autorizações do Telemóvel, SMS, Contactos, Calendário, Registos de chamadas e Dispositivos próximos."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Esta app vai poder sincronizar informações, como o nome do autor de uma chamada, e aceder a estas autorizações no seu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Permita que a app &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; faça a gestão do dispositivo &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"óculos"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Esta app é necessária para gerir o dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. A app <xliff:g id="APP_NAME">%2$s</xliff:g> vai poder interagir com as suas notificações e aceder às autorizações do Telemóvel, SMS, Contactos, Microfone e Dispositivos próximos."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Esta app vai poder aceder a estas autorizações no seu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Permita que a app &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; aceda a estas informações do seu telemóvel"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Serviços entre dispositivos"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> está a pedir autorização em nome do seu dispositivo <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para fazer stream de apps entre os seus dispositivos"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Permita que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; aceda a estas informações do seu telemóvel"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Serviços do Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> está a pedir autorização em nome do seu dispositivo <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para aceder às fotos, ao conteúdo multimédia e às notificações do seu telemóvel"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Permitir que o dispositivo &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; realize esta ação?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> está a pedir autorização em nome do dispositivo <xliff:g id="DEVICE_NAME">%2$s</xliff:g> para fazer stream de apps e outras funcionalidades do sistema para dispositivos próximos"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"dispositivo"</string>
diff --git a/packages/CompanionDeviceManager/res/values-pt/strings.xml b/packages/CompanionDeviceManager/res/values-pt/strings.xml
index c630fce..f482146 100644
--- a/packages/CompanionDeviceManager/res/values-pt/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pt/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"relógio"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Escolha um <xliff:g id="PROFILE_NAME">%1$s</xliff:g> para ser gerenciado pelo app &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"O app <xliff:g id="APP_NAME">%2$s</xliff:g> é necessário para gerenciar o dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Ele poderá sincronizar informações, como o nome de quem está ligando, interagir com suas notificações e acessar as permissões do Telefone, SMS, contatos, agenda, registro de chamadas e dispositivos por perto."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"O app poderá sincronizar informações, como o nome de quem está ligando, e acessar estas permissões no seu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Permitir que o app &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; gerencie o dispositivo &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"óculos"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"O app <xliff:g id="APP_NAME">%2$s</xliff:g> é necessário para gerenciar o dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Ele poderá interagir com suas notificações e acessar suas permissões de telefone, SMS, contatos, microfone e dispositivos por perto."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"O app poderá acessar estas permissões no seu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Permitir que o app &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acesse estas informações do smartphone"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Serviços entre dispositivos"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> está pedindo permissão em nome do seu dispositivo <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para fazer streaming de apps entre seus dispositivos"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Autorizar que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acesse estas informações do smartphone"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play Services"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> está pedindo permissão em nome do seu dispositivo <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para acessar fotos, mídia e notificações do smartphone"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Permitir que o dispositivo &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; realize essa ação?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> está pedindo permissão em nome do seu dispositivo <xliff:g id="DEVICE_NAME">%2$s</xliff:g> para fazer streaming de apps e de outros recursos do sistema para dispositivos por perto"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"dispositivo"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ro/strings.xml b/packages/CompanionDeviceManager/res/values-ro/strings.xml
index 785ad86..67b53e4 100644
--- a/packages/CompanionDeviceManager/res/values-ro/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ro/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"ceas"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Alege un profil <xliff:g id="PROFILE_NAME">%1$s</xliff:g> pe care să îl gestioneze &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Această aplicație este necesară pentru a gestiona <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> va putea să sincronizeze informații, cum ar fi numele unui apelant, să interacționeze cu notificările tale și să îți acceseze permisiunile pentru Telefon, SMS, Agendă, Calendar, Jurnale de apeluri și Dispozitive din apropiere."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Aplicația va putea să sincronizeze informații, cum ar fi numele unui apelant, și să acceseze aceste permisiuni pe <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Permiți ca &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; să gestioneze &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"ochelari"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Această aplicație este necesară pentru a gestiona <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> va putea să interacționeze cu notificările tale și să-ți acceseze permisiunile pentru Telefon, SMS, Agendă, Microfon și Dispozitive din apropiere."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Aplicația va putea să acceseze următoarele permisiuni pe <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Permite ca &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; să acceseze aceste informații de pe telefon"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Servicii pe mai multe dispozitive"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> solicită permisiunea pentru <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> de a reda în stream aplicații între dispozitivele tale"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Permite ca &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; să acceseze aceste informații de pe telefon"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Servicii Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> solicită permisiunea pentru <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> de a accesa fotografiile, conținutul media și notificările de pe telefon"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Permiți ca &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; să realizeze această acțiune?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> solicită permisiunea pentru <xliff:g id="DEVICE_NAME">%2$s</xliff:g> de a reda în stream conținut din aplicații și alte funcții de sistem pe dispozitivele din apropiere"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"dispozitiv"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ru/strings.xml b/packages/CompanionDeviceManager/res/values-ru/strings.xml
index 6b03b43..6486d24 100644
--- a/packages/CompanionDeviceManager/res/values-ru/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ru/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"часы"</string>
     <string name="chooser_title" msgid="2262294130493605839">"ВыбДрОтД ŃƒŃŃ‚Ń€ĐŸĐčстĐČĐŸ (<xliff:g id="PROFILE_NAME">%1$s</xliff:g>), ĐșĐŸŃ‚ĐŸŃ€Ń‹ĐŒ Đ±ŃƒĐŽĐ”Ń‚ упраĐČĐ»ŃŃ‚ŃŒ ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Đ­Ń‚ĐŸ ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” ĐœĐ”ĐŸĐ±Ń…ĐŸĐŽĐžĐŒĐŸ ĐŽĐ»Ń упраĐČĐ»Đ”ĐœĐžŃ ŃƒŃŃ‚Ń€ĐŸĐčстĐČĐŸĐŒ \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". ĐŸŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” \"<xliff:g id="APP_NAME">%2$s</xliff:g>\" ŃĐŒĐŸĐ¶Đ”Ń‚ ŃĐžĐœŃ…Ń€ĐŸĐœĐžĐ·ĐžŃ€ĐŸĐČать ĐŽĐ°ĐœĐœŃ‹Đ”, ĐœĐ°ĐżŃ€ĐžĐŒĐ”Ń€ Оз Đ¶ŃƒŃ€ĐœĐ°Đ»Đ° Đ·ĐČĐŸĐœĐșĐŸĐČ, а таĐșжД ĐżĐŸĐ»ŃƒŃ‡ĐžŃ‚ ĐŽĐŸŃŃ‚ŃƒĐż Đș уĐČĐ”ĐŽĐŸĐŒĐ»Đ”ĐœĐžŃĐŒ Đž Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžŃĐŒ \"ĐąĐ”Đ»Đ”Ń„ĐŸĐœ\", \"ĐšĐŸĐœŃ‚Đ°Đșты\", \"ĐšĐ°Đ»Đ”ĐœĐŽĐ°Ń€ŃŒ\", \"ĐĄĐżĐžŃĐŸĐș ĐČŃ‹Đ·ĐŸĐČĐŸĐČ\", \"ĐŁŃŃ‚Ń€ĐŸĐčстĐČа ĐżĐŸĐ±Đ»ĐžĐ·ĐŸŃŃ‚Đž\" Đž SMS."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Đ­Ń‚ĐŸ ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” ŃĐŒĐŸĐ¶Đ”Ń‚ ŃĐžĐœŃ…Ń€ĐŸĐœĐžĐ·ĐžŃ€ĐŸĐČать ĐŽĐ°ĐœĐœŃ‹Đ”, ĐœĐ°ĐżŃ€ĐžĐŒĐ”Ń€ ĐžĐŒĐ”ĐœĐ° ĐČызыĐČающох Đ°Đ±ĐŸĐœĐ”ĐœŃ‚ĐŸĐČ, а таĐșжД ĐżĐŸĐ»ŃƒŃ‡ĐžŃ‚ уĐșĐ°Đ·Đ°ĐœĐœŃ‹Đ” Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžŃ ĐœĐ° <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>."</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Đ Đ°Đ·Ń€Đ”ŃˆĐžŃ‚ŃŒ ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃŽ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; упраĐČĐ»ŃŃ‚ŃŒ ŃƒŃŃ‚Ń€ĐŸĐčстĐČĐŸĐŒ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"ОчĐșĐž"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Đ­Ń‚ĐŸ ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” ĐœĐ”ĐŸĐ±Ń…ĐŸĐŽĐžĐŒĐŸ ĐŽĐ»Ń упраĐČĐ»Đ”ĐœĐžŃ ŃƒŃŃ‚Ń€ĐŸĐčстĐČĐŸĐŒ \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". ĐŸŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” \"<xliff:g id="APP_NAME">%2$s</xliff:g>\" ŃĐŒĐŸĐ¶Đ”Ń‚ ĐČĐ·Đ°ĐžĐŒĐŸĐŽĐ”ĐčстĐČĐŸĐČать с уĐČĐ”ĐŽĐŸĐŒĐ»Đ”ĐœĐžŃĐŒĐž, а таĐșжД ĐżĐŸĐ»ŃƒŃ‡ĐžŃ‚ Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžŃ \"ĐąĐ”Đ»Đ”Ń„ĐŸĐœ\", SMS, \"ĐšĐŸĐœŃ‚Đ°Đșты\", \"МоĐșŃ€ĐŸŃ„ĐŸĐœ\" Đž \"ĐŁŃŃ‚Ń€ĐŸĐčстĐČа ĐżĐŸĐ±Đ»ĐžĐ·ĐŸŃŃ‚Đž\"."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Đ­Ń‚ĐŸ ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” ĐżĐŸĐ»ŃƒŃ‡ĐžŃ‚ уĐșĐ°Đ·Đ°ĐœĐœŃ‹Đ” Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžŃ ĐœĐ° <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>."</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Đ Đ°Đ·Ń€Đ”ŃˆĐžŃ‚Đ” ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃŽ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ĐżĐŸĐ»ŃƒŃ‡Đ°Ń‚ŃŒ эту ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃŽ с ĐČĐ°ŃˆĐ”ĐłĐŸ Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐ°"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"ХДрĐČосы ŃŃ‚Ń€ĐžĐŒĐžĐœĐłĐ° ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐč"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"ĐŸŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" Đ·Đ°ĐżŃ€Đ°ŃˆĐžĐČаДт Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžĐ” ĐŸŃ‚ ĐžĐŒĐ”ĐœĐž ĐČĐ°ŃˆĐ”ĐłĐŸ ŃƒŃŃ‚Ń€ĐŸĐčстĐČа <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>, Ń‡Ń‚ĐŸĐ±Ń‹ Ń‚Ń€Đ°ĐœŃĐ»ĐžŃ€ĐŸĐČать ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃ ĐŒĐ”Đ¶ĐŽŃƒ ŃƒŃŃ‚Ń€ĐŸĐčстĐČĐ°ĐŒĐž."</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Đ Đ°Đ·Ń€Đ”ŃˆĐžŃ‚Đ” ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃŽ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ĐżĐŸĐ»ŃƒŃ‡Đ°Ń‚ŃŒ эту ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃŽ с ĐČĐ°ŃˆĐ”ĐłĐŸ Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐ°"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"ХДрĐČосы Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"ĐŸŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" Đ·Đ°ĐżŃ€Đ°ŃˆĐžĐČаДт Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžĐ” ĐŸŃ‚ ĐžĐŒĐ”ĐœĐž ĐČĐ°ŃˆĐ”ĐłĐŸ ŃƒŃŃ‚Ń€ĐŸĐčстĐČа <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>, Ń‡Ń‚ĐŸĐ±Ń‹ ĐżĐŸĐ»ŃƒŃ‡ĐžŃ‚ŃŒ ĐŽĐŸŃŃ‚ŃƒĐż Đș Ń„ĐŸŃ‚ĐŸĐłŃ€Đ°Ń„ĐžŃĐŒ, ĐŒĐ”ĐŽĐžĐ°ĐșĐŸĐœŃ‚Đ”ĐœŃ‚Ńƒ Đž уĐČĐ”ĐŽĐŸĐŒĐ»Đ”ĐœĐžŃĐŒ ĐœĐ° Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐ”."</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Đ Đ°Đ·Ń€Đ”ŃˆĐžŃ‚ŃŒ ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃŽ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ĐČŃ‹ĐżĐŸĐ»ĐœŃŃ‚ŃŒ ŃŃ‚ĐŸ ĐŽĐ”ĐčстĐČОД?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"ĐŸŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" ĐŸŃ‚ ĐžĐŒĐ”ĐœĐž ĐČĐ°ŃˆĐ”ĐłĐŸ ŃƒŃŃ‚Ń€ĐŸĐčстĐČа \"<xliff:g id="DEVICE_NAME">%2$s</xliff:g>\" Đ·Đ°ĐżŃ€Đ°ŃˆĐžĐČаДт Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžĐ” Ń‚Ń€Đ°ĐœŃĐ»ĐžŃ€ĐŸĐČать ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃ Đž ŃĐžŃŃ‚Đ”ĐŒĐœŃ‹Đ” Ń„ŃƒĐœĐșцоо ĐœĐ° ŃƒŃŃ‚Ń€ĐŸĐčстĐČа ĐżĐŸĐ±Đ»ĐžĐ·ĐŸŃŃ‚Đž."</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"ŃƒŃŃ‚Ń€ĐŸĐčстĐČĐŸ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-si/strings.xml b/packages/CompanionDeviceManager/res/values-si/strings.xml
index c6821c3..8207122 100644
--- a/packages/CompanionDeviceManager/res/values-si/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-si/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"ඔරගෝසුව"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; ඞගින් කළඞනාකරණà¶ș කරනු ගැබීඞට <xliff:g id="PROFILE_NAME">%1$s</xliff:g>ක් තෝරන්න"</string>
     <string name="summary_watch" msgid="898569637110705523">"ඞෙඞ à¶șà·™à¶Żà·”à¶žà¶§ ඔබේ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> කළඞනාකරණà¶ș කිරීඞට අවශ්‍à¶șà¶șි. <xliff:g id="APP_NAME">%2$s</xliff:g> හට à¶…à¶žà¶­à¶± කෙනෙකුගේ නඞ වැනි, තතු සඞඞුහුර්ත කිරීඞට, ඔබේ à¶Żà·à¶±à·”à¶žà·Šà¶Żà·“à¶žà·Š සඞග අන්තර්ක්‍රිà¶șා කිරීඞට සහ ඔබේ à¶Żà·”à¶»à¶šà¶źà¶±à¶ș, SMS, සඞ්බන්ධතා, à¶Żà·’à¶± à¶Żà¶»à·Šà·à¶±à¶ș, ඇඞතුඞ් ගොග සහ අවට උඎාංග අවසර වෙත à¶Žà·Š‍රවේශ වීඞට ඉඩ à¶Żà·™à¶±à·” ඇත."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"ඞෙඞ à¶șà·™à¶Żà·”à¶žà¶§ à¶…à¶žà¶­à¶± කෙනෙකුගේ නඞ වැනි, තතු සඞඞුහුර්ත කිරීඞට, සහ ඔබේ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> à¶žà¶­ ඞෙඞ අවසර වෙත à¶Žà·Š‍රවේශ වීඞට ඉඩ à¶Żà·™à¶±à·” ඇත"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; හට &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; කළඞනා කිරීඞට ඉඩ à¶Żà·™à¶±à·Šà¶± à¶Ż?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"කණ්ණාඩි"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> කළඞනා කිරීඞට ඞෙඞ à¶șà·™à¶Żà·”à¶ž අවශ්‍à¶șà¶șි. <xliff:g id="APP_NAME">%2$s</xliff:g> හට ඔබේ à¶Żà·à¶±à·”à¶žà·Šà¶Żà·“à¶žà·Š සඞග අන්තර්ක්‍රිà¶șා කිරීඞට සහ ඔබේ à¶Żà·”à¶»à¶šà¶źà¶±à¶ș, කෙටි ඎණිවුඩà¶ș, සඞ්බන්ධතා, à¶žà¶șික්‍රොෆෝනà¶ș සහ අවට උඎාංග අවසර වෙත à¶Žà·Š‍රවේශ වීඞට ඉඩ à¶Żà·™à¶șි."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"ඞෙඞ à¶șà·™à¶Żà·”à¶žà¶§ ඔබේ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> à¶žà¶­ ඞෙඞ අවසර වෙත à¶Žà·Š‍රවේශ වීඞට ඉඩ à¶Żà·™à¶±à·” ඇත"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; හට ඔබගේ à¶Żà·”à¶»à¶šà¶źà¶±à¶șෙන් ඞෙඞ තොරතුරුවගට à¶Žà·Š‍රවේශ වීඞට ඉඩ à¶Żà·™à¶±à·Šà¶±"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"හරස්-උඎාංග සේවා"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> ඔබේ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> වෙනුවෙන් ඔබේ උඎාංග අතර à¶șà·™à¶Żà·”à¶žà·Š à¶Žà·Š‍රවාහ කිරීඞට අවසරà¶ș ඉග්ගඞින් සිටිà¶șි"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; හට ඔබගේ à¶Żà·”à¶»à¶šà¶źà¶±à¶șෙන් ඞෙඞ තොරතුරුවගට à¶Žà·Š‍රවේශ වීඞට ඉඩ à¶Żà·™à¶±à·Šà¶±"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play සේවා"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> ඔබේ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> වෙනුවෙන් ඔබේ à¶Żà·”à¶»à¶šà¶źà¶±à¶șේ à¶Ąà·à¶șාරූඎ, ඞාධ්‍à¶ș, සහ à¶Żà·à¶±à·”à¶žà·Šà¶Żà·“à¶žà·Š වෙත à¶Žà·Š‍රවේශ වීඞට අවසරà¶ș ඉග්ගඞින් සිටිà¶șි"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"ඞෙඞ ක්‍රිà¶șාව කිරීඞට &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; හට ඉඩ à¶Żà·™à¶±à·Šà¶± à¶Ż?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> ඔබේ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> වෙනුවෙන් à¶șà·™à¶Żà·”à¶žà·Š සහ අනෙකුත් à¶Žà¶Żà·Šà¶°à¶­à·’ විශේෂාංග අවට උඎාංග වෙත à¶Žà·Š‍රවාහ කිරීඞට අවසර ඉග්ගà¶șි"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"උඎාංගà¶ș"</string>
diff --git a/packages/CompanionDeviceManager/res/values-sk/strings.xml b/packages/CompanionDeviceManager/res/values-sk/strings.xml
index 24a0f19..088e383 100644
--- a/packages/CompanionDeviceManager/res/values-sk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sk/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"hodinky"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Vyberte profil <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, ktorý bude spravovaĆ„ aplikácia &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Táto aplikácia sa vyĆŸaduje na správu zariadenia <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> bude môcĆ„ synchronizovaĆ„ informácie, napríklad meno volajúceho, interagovaĆ„ s vašimi upozorneniami a získavaĆ„ prístup k povoleniam telefónu, SMS, kontaktov, kalendára, zoznamu hovorov a zariadení v okolí."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Táto aplikácia bude môcĆ„ synchronizovaĆ„ informácie, napríklad meno volajúceho, a získavaĆ„ prístup k týmto povoleniam v zariadení <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Chcete povoliĆ„ aplikácii &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; spravovaĆ„ zariadenie &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"okuliare"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Táto aplikácia sa vyĆŸaduje na správu zariadenia <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> bude môcĆ„ interagovaĆ„ s vašimi upozorneniami a získa prístup k povoleniam pre telefón, SMS, kontakty, mikrofón a zariadenia v okolí."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Táto aplikácia bude maĆ„ prístup k týmto povoleniam v zariadení <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"PovoÄŸte aplikácii &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; prístup k týmto informáciám z vášho telefónu"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"SluĆŸby pre viacero zariadení"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> vyĆŸaduje pre zariadenie <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> povolenie streamovaĆ„ aplikácie medzi vašimi zariadeniami."</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"PovoÄŸte aplikácii &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; prístup k týmto informáciám z vášho telefónu"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"SluĆŸby Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> vyĆŸaduje pre zariadenie <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> povolenie na prístup k fotkám, médiám a upozorneniam vášho telefónu"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Chcete povoliĆ„ zariadeniu &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; vykonaĆ„ túto akciu?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> vyĆŸaduje pre zariadenie <xliff:g id="DEVICE_NAME">%2$s</xliff:g> povolenie streamovaĆ„ aplikácie a Äalšie systémové funkcie do zariadení v okolí"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"zariadenie"</string>
diff --git a/packages/CompanionDeviceManager/res/values-sl/strings.xml b/packages/CompanionDeviceManager/res/values-sl/strings.xml
index 6058ae1..bc7843c 100644
--- a/packages/CompanionDeviceManager/res/values-sl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sl/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"ura"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Izbira naprave »<xliff:g id="PROFILE_NAME">%1$s</xliff:g>«, ki jo bo upravljala aplikacija &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Ta aplikacija je potrebna za upravljanje naprave »<xliff:g id="DEVICE_NAME">%1$s</xliff:g>«. Aplikaciji <xliff:g id="APP_NAME">%2$s</xliff:g> bodo omogočene sinhronizacija podatkov, na primer imena klicatelja, interakcija z obvestili in uporaba dovoljenj Telefon, SMS, Stiki, Koledar, Dnevniki klicev in Naprave v bliĆŸini."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Ta aplikacija bo lahko sinhronizirala podatke, na primer ime klicatelja, in dostopala do teh dovoljenj v napravi »<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>«."</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Ćœelite aplikaciji &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; dovoliti upravljanje naprave &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"očala"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Ta aplikacija je potrebna za upravljanje naprave »<xliff:g id="DEVICE_NAME">%1$s</xliff:g>«. Aplikaciji <xliff:g id="APP_NAME">%2$s</xliff:g> bosta omogočeni interakcija z obvestili in uporaba dovoljenj Telefon, SMS, Stiki, Mikrofon in Naprave v bliĆŸini."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Ta aplikacija bo lahko dostopala do teh dovoljenj v napravi »<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>«."</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Dovolite, da &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; dostopa do teh podatkov v vašem telefonu"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Storitve za zunanje naprave"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> v imenu naprave »<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>« zahteva dovoljenje za pretočno predvajanje aplikacij v vaših napravah."</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Dovolite, da &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; dostopa do teh podatkov v vašem telefonu"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Storitve Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> v imenu naprave »<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>« zahteva dovoljenje za dostop do fotografij, predstavnosti in obvestil v telefonu."</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Ali napravi &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; dovolite izvedbo tega dejanja?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> v imenu naprave »<xliff:g id="DEVICE_NAME">%2$s</xliff:g>« zahteva dovoljenje za pretočno predvajanje aplikacij in drugih sistemskih funkcij v napravah v bliĆŸini."</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"naprava"</string>
diff --git a/packages/CompanionDeviceManager/res/values-sq/strings.xml b/packages/CompanionDeviceManager/res/values-sq/strings.xml
index aeab5bf..d5999f3 100644
--- a/packages/CompanionDeviceManager/res/values-sq/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sq/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"ora inteligjente"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Zgjidh \"<xliff:g id="PROFILE_NAME">%1$s</xliff:g>\" që do të menaxhohet nga &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Ky aplikacion nevojitet për të menaxhuar <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> do të lejohet të sinkronizojë informacione, si p.sh. emrin e dikujt që po telefonon, të ndërveprojë me njoftimet e tua dhe të ketë qasje te lejet e \"Telefonit\", \"SMS-ve\", \"Kontakteve\", \"Kalendarit\", \"Evidencave të telefonatave\" dhe \"Pajisjeve në afërsi\"."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Këtij aplikacioni do t\'i lejohet të sinkronizojë informacione, si p.sh. emrin e dikujt që po telefonon, si dhe të ketë qasje në këto leje në <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Të lejohet që &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; të menaxhojë &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"syzet"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Ky aplikacion nevojitet për të menaxhuar <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> do të lejohet të ndërveprojë me njoftimet e tua dhe të ketë qasje te lejet e \"Telefonit\", \"SMS-ve\", \"Kontakteve\", \"Mikrofonit\" dhe të \"Pajisjeve në afërsi\"."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Këtij aplikacioni do t\'i lejohet qasja te këto leje në <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Lejo që &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; të ketë qasje në këtë informacion nga telefoni yt"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Shërbimet mes pajisjeve"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> po kërkon leje në emër të <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> për të transmetuar aplikacione ndërmjet pajisjeve të tua"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Lejo që &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; të ketë qasje në këtë informacion nga telefoni yt"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Shërbimet e Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> po kërkon leje në emër të <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> për të marrë qasje te fotografitë, media dhe njoftimet e telefonit tënd"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Të lejohet që &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; të ndërmarrë këtë veprim?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> po kërkon leje në emër të (<xliff:g id="DEVICE_NAME">%2$s</xliff:g>) tënde për të transmetuar aplikacione dhe veçori të tjera të sistemit te pajisjet në afërsi"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"pajisja"</string>
diff --git a/packages/CompanionDeviceManager/res/values-sr/strings.xml b/packages/CompanionDeviceManager/res/values-sr/strings.xml
index cdcddf1..93c939c 100644
--- a/packages/CompanionDeviceManager/res/values-sr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sr/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"сат"</string>
     <string name="chooser_title" msgid="2262294130493605839">"ОЎабДрОтД <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ĐșĐŸŃ˜ĐžĐŒ ћД упраĐČљато аплОĐșацоја &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"ОĐČа аплОĐșацоја јД ĐżĐŸŃ‚Ń€Đ”Đ±ĐœĐ° за упраĐČљањД ŃƒŃ€Đ”Ń’Đ°Ń˜Đ”ĐŒ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> ћД ĐŽĐŸĐ±ĐžŃ‚Đž ĐŽĐŸĐ·ĐČĐŸĐ»Ńƒ за ŃĐžĐœŃ…Ń€ĐŸĐœĐžĐ·ĐŸĐČањД ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ˜Đ°, ĐżĐŸĐżŃƒŃ‚ ĐŸŃĐŸĐ±Đ” ĐșĐŸŃ˜Đ° ŃƒĐżŃƒŃ›ŃƒŃ˜Đ” ĐżĐŸĐ·ĐžĐČ, за ĐžĐœŃ‚Đ”Ń€Đ°Đșцоју са ĐŸĐ±Đ°ĐČĐ”ŃˆŃ‚Đ”ŃšĐžĐŒĐ° Đž проступ ĐŽĐŸĐ·ĐČĐŸĐ»Đ°ĐŒĐ° за Ń‚Đ”Đ»Đ”Ń„ĐŸĐœ, SMS, ĐșĐŸĐœŃ‚Đ°ĐșтД, ĐșĐ°Đ»Đ”ĐœĐŽĐ°Ń€, Đ”ĐČĐžĐŽĐ”ĐœŃ†ĐžŃ˜Đ” ĐżĐŸĐ·ĐžĐČа Đž ŃƒŃ€Đ”Ń’Đ°Ń˜Đ” у Đ±Đ»ĐžĐ·ĐžĐœĐž."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"ОĐČĐŸŃ˜ аплОĐșацојо ћД бОтО ĐŽĐŸĐ·ĐČĐŸŃ™Đ”ĐœĐŸ Ўа ŃĐžĐœŃ…Ń€ĐŸĐœĐžĐ·ŃƒŃ˜Đ” ĐżĐŸĐŽĐ°Ń‚ĐșĐ”, ĐżĐŸĐżŃƒŃ‚ ĐžĐŒĐ”ĐœĐ° ĐŸŃĐŸĐ±Đ” ĐșĐŸŃ˜Đ° ŃƒĐżŃƒŃ›ŃƒŃ˜Đ” ĐżĐŸĐ·ĐžĐČ, Đž проступа Ń‚ĐžĐŒ ĐŽĐŸĐ·ĐČĐŸĐ»Đ°ĐŒĐ° ĐœĐ° ĐČĐ°ŃˆĐ”ĐŒ ŃƒŃ€Đ”Ń’Đ°Ń˜Ńƒ (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>)"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"ЖДлОтД лО Ўа ĐŽĐŸĐ·ĐČĐŸĐ»ĐžŃ‚Đ” Ўа &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; упраĐČља ŃƒŃ€Đ”Ń’Đ°Ń˜Đ”ĐŒ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"ĐœĐ°ĐŸŃ‡Đ°Ń€Đ”"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"ОĐČа аплОĐșацоја јД ĐżĐŸŃ‚Ń€Đ”Đ±ĐœĐ° за упраĐČљањД ŃƒŃ€Đ”Ń’Đ°Ń˜Đ”ĐŒ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> ћД ĐŽĐŸĐ±ĐžŃ‚Đž ĐŽĐŸĐ·ĐČĐŸĐ»Ńƒ за ĐžĐœŃ‚Đ”Ń€Đ°Đșцоју са ĐŸĐ±Đ°ĐČĐ”ŃˆŃ‚Đ”ŃšĐžĐŒĐ° Đž проступ ĐŽĐŸĐ·ĐČĐŸĐ»Đ°ĐŒĐ° за Ń‚Đ”Đ»Đ”Ń„ĐŸĐœ, SMS, ĐșĐŸĐœŃ‚Đ°ĐșтД, ĐŒĐžĐșŃ€ĐŸŃ„ĐŸĐœ Đž ŃƒŃ€Đ”Ń’Đ°Ń˜Đ” у Đ±Đ»ĐžĐ·ĐžĐœĐž."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"ОĐČĐŸŃ˜ аплОĐșацојо ћД бОтО ĐŽĐŸĐ·ĐČĐŸŃ™Đ”ĐœĐŸ Ўа проступа ĐŸĐČĐžĐŒ ĐŽĐŸĐ·ĐČĐŸĐ»Đ°ĐŒĐ° ĐœĐ° ĐČĐ°ŃˆĐ”ĐŒ ŃƒŃ€Đ”Ń’Đ°Ń˜Ńƒ (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>)"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Đ”ĐŸĐ·ĐČĐŸĐ»ĐžŃ‚Đ” Ўа &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; проступа ĐŸĐČĐžĐŒ ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ˜Đ°ĐŒĐ° са Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐ°"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"УслугД ĐœĐ° ĐČОшД ŃƒŃ€Đ”Ń’Đ°Ń˜Đ°"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> захтДĐČа ĐŽĐŸĐ·ĐČĐŸĐ»Ńƒ у ĐžĐŒĐ” ŃƒŃ€Đ”Ń’Đ°Ń˜Đ° <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> за ŃŃ‚Ń€ĐžĐŒĐŸĐČањД аплОĐșацоја ĐžĐ·ĐŒĐ”Ń’Ńƒ ŃƒŃ€Đ”Ń’Đ°Ń˜Đ°"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Đ”ĐŸĐ·ĐČĐŸĐ»ĐžŃ‚Đ” Ўа &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; проступа ĐŸĐČĐžĐŒ ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ˜Đ°ĐŒĐ° са Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐ°"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play услугД"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> захтДĐČа ĐŽĐŸĐ·ĐČĐŸĐ»Ńƒ у ĐžĐŒĐ” ŃƒŃ€Đ”Ń’Đ°Ń˜Đ° <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> за проступ слОĐșĐ°ĐŒĐ°, ĐŒĐ”ĐŽĐžŃ˜ŃĐșĐŸĐŒ ŃĐ°ĐŽŃ€Đ¶Đ°Ń˜Ńƒ Đž ĐŸĐ±Đ°ĐČĐ”ŃˆŃ‚Đ”ŃšĐžĐŒĐ° са Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐ°"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"ЖДлОтД лО Ўа ĐŽĐŸĐ·ĐČĐŸĐ»ĐžŃ‚Đ” Ўа &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ĐŸĐ±Đ°ĐČĐž ĐŸĐČу раЮњу?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"АплОĐșацоја <xliff:g id="APP_NAME">%1$s</xliff:g> захтДĐČа ĐŽĐŸĐ·ĐČĐŸĐ»Ńƒ у ĐžĐŒĐ” ŃƒŃ€Đ”Ń’Đ°Ń˜Đ° <xliff:g id="DEVICE_NAME">%2$s</xliff:g> Ўа ŃŃ‚Ń€ĐžĐŒŃƒŃ˜Đ” аплОĐșĐ°Ń†ĐžŃ˜Đ” Đž ĐŽŃ€ŃƒĐłĐ” ŃĐžŃŃ‚Đ”ĐŒŃĐșĐ” Ń„ŃƒĐœĐșŃ†ĐžŃ˜Đ” ĐœĐ° ŃƒŃ€Đ”Ń’Đ°Ń˜Đ” у Đ±Đ»ĐžĐ·ĐžĐœĐž"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"ŃƒŃ€Đ”Ń’Đ°Ń˜"</string>
diff --git a/packages/CompanionDeviceManager/res/values-sv/strings.xml b/packages/CompanionDeviceManager/res/values-sv/strings.xml
index f43f973..dfe795e 100644
--- a/packages/CompanionDeviceManager/res/values-sv/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sv/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"klocka"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Välj en <xliff:g id="PROFILE_NAME">%1$s</xliff:g> för hantering av &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Appen behövs för att hantera <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får tillåtelse att synkronisera information, till exempel namnet på någon som ringer, interagera med dina aviseringar och får åtkomst till behörigheterna Telefon, Sms, Kontakter, Kalender, Samtalsloggar och Enheter i närheten."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Appen får tillåtelse att synkronisera information, till exempel namnet på någon som ringer, och få tillgång till dessa behörigheter på din <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Tillåt att &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; hanterar &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"glasögon"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Appen behövs för att hantera <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får tillåtelse att interagera med dina aviseringar och får åtkomst till behörigheterna Telefon, Sms, Kontakter, Mikrofon och Enheter i närheten."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Appen får tillåtelse att använda dessa behörigheter på din <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Ge &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; åtkomstbehörighet till denna information på telefonen"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Tjänster för flera enheter"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> begär behörighet att låta <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> streama appar mellan enheter"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Ge &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; åtkomstbehörighet till denna information på telefonen"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play-tjänster"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> begär behörighet att ge <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> åtkomst till foton, mediefiler och aviseringar på telefonen"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Vill du tillåta att &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; utför denna åtgärd?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> begär behörighet att streama appar och andra systemfunktioner till enheter i närheten för din <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"enhet"</string>
diff --git a/packages/CompanionDeviceManager/res/values-sw/strings.xml b/packages/CompanionDeviceManager/res/values-sw/strings.xml
index e784373..982c1d9d 100644
--- a/packages/CompanionDeviceManager/res/values-sw/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sw/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"saa"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Chagua <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ili idhibitiwe na &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Programu hii inahitajika ili udhibiti <xliff:g id="DEVICE_NAME">%1$s</xliff:g> yako. <xliff:g id="APP_NAME">%2$s</xliff:g> itaruhusiwa kusawazisha maelezo, kama vile jina la mtu anayepiga simu, kutumia arifa zako na ruhusa zako za Simu, SMS, Anwani, Maikrofoni na vifaa vilivyo Karibu."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Programu hii itaruhusiwa kusawazisha maelezo, kama vile jina la mtu anayepiga simu na kufikia ruhusa hizi kwenye <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> yako"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Ungependa kuruhusu &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; idhibiti &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"miwani"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Programu hii inahitajika ili udhibiti <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> itaruhusiwa kutumia arifa zako na kufikia ruhusa zako za Simu, SMS, Anwani, Maikrofoni na Vifaa vilivyo Karibu."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Programu hii itaruhusiwa kufikia ruhusa hizi kwenye <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> yako"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Ruhusu &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ifikie maelezo haya kutoka kwenye simu yako"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Huduma za kifaa kilichounganishwa kwingine"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"Programu ya <xliff:g id="APP_NAME">%1$s</xliff:g> inaomba ruhusa kwa niaba ya <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> yako ili itiririshe programu kati ya vifaa vyako"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Ruhusu &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ifikie maelezo haya kutoka kwenye simu yako"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Huduma za Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"Programu ya <xliff:g id="APP_NAME">%1$s</xliff:g> inaomba ruhusa kwa niaba ya <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> yako ili ifikie picha, maudhui na arifa za simu yako"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Ungependa kuruhusu &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; itekeleze kitendo hiki?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> inaomba ruhusa kwa niaba ya <xliff:g id="DEVICE_NAME">%2$s</xliff:g> chako ili itiririshe programu na vipengele vingine vya mfumo kwenye vifaa vilivyo karibu"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"kifaa"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ta/strings.xml b/packages/CompanionDeviceManager/res/values-ta/strings.xml
index e5fe2b2..34da557 100644
--- a/packages/CompanionDeviceManager/res/values-ta/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ta/strings.xml
@@ -20,26 +20,33 @@
     <string name="confirmation_title" msgid="4593465730772390351">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; àźšàźŸàź€àź©àź€àŻàź€àŻˆ àź…àźŁàŻàź• &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àź†àźȘàŻàźžàŻˆ àź…àź©àŻàźźàź€àźżàź•àŻàź•àź”àźŸ?"</string>
     <string name="profile_name_watch" msgid="576290739483672360">"àź”àźŸàźŸàŻàźšàŻ"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; àź†àźȘàŻàźžàŻ àźšàźżàź°àŻàź”àź•àźżàź•àŻàź•àź•àŻàź•àŻ‚àźŸàźżàźŻ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> àź€àŻ‡àź°àŻàźšàŻàź€àŻ†àźŸàŻàź•àŻàź•àźȘàŻàźȘàźŸ àź”àŻ‡àźŁàŻàźŸàŻàźźàŻ"</string>
-    <string name="summary_watch" msgid="898569637110705523">"àź‰àź™àŻàź•àźłàŻ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> àźšàźŸàź€àź©àź€àŻàź€àŻˆ àźšàźżàź°àŻàź”àź•àźżàź•àŻàź• àź‡àźšàŻàź€ àź†àźȘàŻàźžàŻ àź€àŻ‡àź”àŻˆ. àź…àźŽàŻˆàźȘàŻàźȘàź”àź°àźżàź©àŻ àźȘàŻ†àźŻàź°àŻ àźȘàŻ‹àź©àŻàź± àź€àź•àź”àźČàŻˆ àź’àź€àŻàź€àźżàźšàŻˆàź€àŻàź€àźČàŻ, àź‰àź™àŻàź•àźłàŻ àź…àź±àźżàź”àźżàźȘàŻàźȘàŻàź•àźłàŻˆàźȘàŻ àźȘàźŸàź°àŻàź€àŻàź€àźČàŻ, àź‰àź™àŻàź•àźłàŻ àźźàŻŠàźȘàŻˆàźČàŻ, àźźàŻ†àźšàŻ‡àźœàŻ, àź€àŻŠàźŸàź°àŻàźȘàŻàź•àźłàŻ, àź•àŻ‡àźČàŻ†àźŁàŻàźŸàź°àŻ, àź…àźŽàŻˆàźȘàŻàźȘàŻàźȘàŻ àźȘàź€àźżàź”àŻàź•àźłàŻ, àź…àź°àŻàź•àźżàźČàŻàźłàŻàźł àźšàźŸàź€àź©àź™àŻàź•àźłàŻˆ àź…àźŁàŻàź•àŻàź€àźČàŻ àź†àź•àźżàźŻàź”àź±àŻàź±àŻàź•àŻàź•àŻ <xliff:g id="APP_NAME">%2$s</xliff:g> àź…àź©àŻàźźàź€àźżàź•àŻàź•àźȘàŻàźȘàźŸàŻàźźàŻ."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"àź…àźŽàŻˆàźȘàŻàźȘàź”àź°àźżàź©àŻ àźȘàŻ†àźŻàź°àŻ àźȘàŻ‹àź©àŻàź± àź€àź•àź”àźČàŻàź•àźłàŻˆ àź’àź€àŻàź€àźżàźšàŻˆàź•àŻàź•àź”àŻàźźàŻ àź‰àź™àŻàź•àźłàŻ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> àźšàźŸàź€àź©àź€àŻàź€àźżàźČàŻ àź‡àźšàŻàź€ àź…àź©àŻàźźàź€àźżàź•àźłàŻˆ àź…àźŁàŻàź•àź”àŻàźźàŻ àź‡àźšàŻàź€ àź†àźȘàŻàźžàŻ àź…àź©àŻàźźàź€àźżàź•àŻàź•àźȘàŻàźȘàźŸàŻàźźàŻ"</string>
+    <!-- no translation found for summary_watch (898569637110705523) -->
+    <skip />
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&amp;gt àźšàźŸàź€àź©àź€àŻàź€àŻˆ àźšàźżàź°àŻàź”àź•àźżàź•àŻàź• &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àź†àźȘàŻàźžàŻˆ àź…àź©àŻàźźàź€àźżàź•àŻàź•àź”àźŸ?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"àź•àźżàźłàźŸàźžàźžàŻ"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> àźšàźŸàź€àź©àź€àŻàź€àŻˆ àźšàźżàź°àŻàź”àź•àźżàź•àŻàź• àź‡àźšàŻàź€ àź†àźȘàŻàźžàŻ àź€àŻ‡àź”àŻˆ. àź‰àź™àŻàź•àźłàŻ àźźàŻŠàźȘàŻˆàźČàŻ, àźźàŻ†àźšàŻ‡àźœàŻ, àź€àŻŠàźŸàź°àŻàźȘàŻàź•àźłàŻ, àźźàŻˆàź•àŻàź°àŻ‹àźƒàźȘàŻ‹àź©àŻ, àź…àź°àŻàź•àźżàźČàŻàźłàŻàźł àźšàźŸàź€àź©àź™àŻàź•àźłàŻ àź†àź•àźżàźŻàź”àź±àŻàź±àŻàź•àŻàź•àźŸàź© àź…àźŁàŻàź•àźČàŻˆàźŻàŻàźźàŻ àź‰àź™àŻàź•àźłàŻ àź…àź±àźżàź”àźżàźȘàŻàźȘàŻàź•àźłàŻˆàźȘàŻ àźȘàźŸàź°àŻàźȘàŻàźȘàź€àź±àŻàź•àźŸàź© àź…àź©àŻàźźàź€àźżàźŻàŻˆàźŻàŻàźźàŻ <xliff:g id="APP_NAME">%2$s</xliff:g> àźȘàŻ†àź±àŻàźźàŻ."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"àź‰àź™àŻàź•àźłàŻ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> àźšàźŸàź€àź©àź€àŻàź€àźżàźČàŻ àź‡àźšàŻàź€ àź…àź©àŻàźźàź€àźżàź•àźłàŻˆ àź…àźŁàŻàź• àź‡àźšàŻàź€ àź†àźȘàŻàźžàŻ àź…àź©àŻàźźàź€àźżàź•àŻàź•àźȘàŻàźȘàźŸàŻàźźàŻ"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"àźźàŻŠàźȘàŻˆàźČàźżàźČàŻ àź‰àźłàŻàźł àź‡àźšàŻàź€àź€àŻ àź€àź•àź”àźČàŻàź•àźłàŻˆ àź…àźŁàŻàź•, &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àź†àźȘàŻàźžàŻˆ àź…àź©àŻàźźàź€àźżàź•àŻàź•àź”àŻàźźàŻ"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"àźȘàź©àŻàźźàŻàź• àźšàźŸàź€àź© àźšàŻ‡àź”àŻˆàź•àźłàŻ"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"àź‰àź™àŻàź•àźłàŻ àźšàźŸàź€àź©àź™àŻàź•àźłàŻàź•àŻàź•àŻ àź‡àźŸàŻˆàźŻàŻ‡ àź†àźȘàŻàźžàŻˆ àźžàŻàźŸàŻàź°àŻ€àźźàŻ àźšàŻ†àźŻàŻàźŻ àź‰àź™àŻàź•àźłàŻ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> àźšàźŸàź°àŻàźȘàźŸàź• <xliff:g id="APP_NAME">%1$s</xliff:g> àź†àźȘàŻàźžàŻ àź…àź©àŻàźźàź€àźżàźŻàŻˆàź•àŻ àź•àŻ‹àź°àŻàź•àźżàź±àź€àŻ"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"àź‰àź™àŻàź•àźłàŻ àźźàŻŠàźȘàŻˆàźČàźżàźČàźżàź°àŻàźšàŻàź€àŻ àź‡àźšàŻàź€àź€àŻ àź€àź•àź”àźČàŻˆ àź…àźŁàŻàź• &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àź†àźȘàŻàźžàŻˆ àź…àź©àŻàźźàź€àźżàźŻàŻàź™àŻàź•àźłàŻ"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play àźšàŻ‡àź”àŻˆàź•àźłàŻ"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"àź‰àź™àŻàź•àźłàŻ àźźàŻŠàźȘàŻˆàźČàźżàźČàŻ àź‰àźłàŻàźł àźȘàźŸàź™àŻàź•àźłàŻ, àźźàŻ€àźŸàźżàźŻàźŸ, àź…àź±àźżàź”àźżàźȘàŻàźȘàŻàź•àźłàŻ àź†àź•àźżàźŻàź”àź±àŻàź±àŻˆ àź…àźŁàŻàź• àź‰àź™àŻàź•àźłàŻ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> àźšàźŸàź°àŻàźȘàźŸàź• <xliff:g id="APP_NAME">%1$s</xliff:g> àź†àźȘàŻàźžàŻ àź…àź©àŻàźźàź€àźżàźŻàŻˆàź•àŻ àź•àŻ‹àź°àŻàź•àźżàź±àź€àŻ"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"àź‡àźšàŻàź€àźšàŻ àźšàŻ†àźŻàźČàŻˆàźšàŻ àźšàŻ†àźŻàŻàźŻ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&amp;gt àźšàźŸàź€àź©àź€àŻàź€àŻˆ àź…àź©àŻàźźàź€àźżàź•àŻàź•àź”àźŸ?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"àź…àź°àŻàź•àźżàźČàŻàźłàŻàźł àźšàźŸàź€àź©àź™àŻàź•àźłàŻàź•àŻàź•àŻ àź†àźȘàŻàźžàŻˆàźŻàŻàźźàŻ àźȘàźżàź± àźšàźżàźžàŻàźŸàźźàŻ àź…àźźàŻàźšàź™àŻàź•àźłàŻˆàźŻàŻàźźàŻ àźžàŻàźŸàŻàź°àŻ€àźźàŻ àźšàŻ†àźŻàŻàźŻ àź‰àź™àŻàź•àźłàŻ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> àźšàźŸàź°àŻàźȘàźŸàź• <xliff:g id="APP_NAME">%1$s</xliff:g> àź…àź©àŻàźźàź€àźż àź•àŻ‹àź°àŻàź•àźżàź±àź€àŻ"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"àźšàźŸàź€àź©àźźàŻ"</string>
-    <string name="summary_generic_single_device" msgid="4181180669689590417">"àź…àźŽàŻˆàźȘàŻàźȘàź”àź°àźżàź©àŻ àźȘàŻ†àźŻàź°àŻ àźȘàŻ‹àź©àŻàź± àź€àź•àź”àźČàŻˆ àź‰àź™àŻàź•àźłàŻ àźźàŻŠàźȘàŻˆàźČàŻ àźźàź±àŻàź±àŻàźźàŻ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> àźšàźŸàź€àź©àź€àŻàź€àźżàź±àŻàź•àŻ àź‡àźŸàŻˆàźŻàźżàźČàŻ àź‡àźšàŻàź€ àź†àźȘàŻàźžàźŸàźČàŻ àź’àź€àŻàź€àźżàźšàŻˆàź•àŻàź• àźźàŻàźŸàźżàźŻàŻàźźàŻ"</string>
-    <string name="summary_generic" msgid="1761976003668044801">"àź…àźŽàŻˆàźȘàŻàźȘàź”àź°àźżàź©àŻ àźȘàŻ†àźŻàź°àŻ àźȘàŻ‹àź©àŻàź± àź€àź•àź”àźČàŻˆ àź‰àź™àŻàź•àźłàŻ àźźàŻŠàźȘàŻˆàźČàŻ àźźàź±àŻàź±àŻàźźàŻ àź€àŻ‡àź°àŻàź”àŻàźšàŻ†àźŻàŻàź€ àźšàźŸàź€àź©àź€àŻàź€àźżàź±àŻàź•àŻ àź‡àźŸàŻˆàźŻàźżàźČàŻ àź‡àźšàŻàź€ àź†àźȘàŻàźžàźŸàźČàŻ àź’àź€àŻàź€àźżàźšàŻˆàź•àŻàź• àźźàŻàźŸàźżàźŻàŻàźźàŻ"</string>
+    <!-- no translation found for summary_generic_single_device (4181180669689590417) -->
+    <skip />
+    <!-- no translation found for summary_generic (1761976003668044801) -->
+    <skip />
     <string name="consent_yes" msgid="8344487259618762872">"àź…àź©àŻàźźàź€àźż"</string>
     <string name="consent_no" msgid="2640796915611404382">"àź…àź©àŻàźźàź€àźżàź•àŻàź• àź”àŻ‡àźŁàŻàźŸàźŸàźźàŻ"</string>
     <string name="consent_back" msgid="2560683030046918882">"àźȘàźżàź©àŻàźšàŻ†àźČàŻ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-te/strings.xml b/packages/CompanionDeviceManager/res/values-te/strings.xml
index ee20fbc..9155ed2 100644
--- a/packages/CompanionDeviceManager/res/values-te/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-te/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"ఔటచ్"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; ఊ్ఔటరట à°źà±‡à°šà±‡à°œà± à°šà±‡à°Żà°Źà°Ąà°Ÿà°Ÿà°šà°żà°•à°ż ఒక <xliff:g id="PROFILE_NAME">%1$s</xliff:g>చు à°Žà°‚à°šà±à°•à±‹à°‚à°Ąà°ż"</string>
     <string name="summary_watch" msgid="898569637110705523">"à°źà±€ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>‌చు à°źà±‡à°šà±‡à°œà± à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż ఈ à°Żà°Ÿà°Ș్ అఔఞరం. à°•à°Ÿà°Č్ చేఞ్ఀుచ్చ à°”à°Ÿà°°à°ż à°Șేరు à°”à°‚à°Ÿà°ż à°žà°źà°Ÿà°šà°Ÿà°°à°Ÿà°šà±à°šà°ż à°žà°żà°‚à°•à± à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż, à°źà±€ à°šà±‹à°Ÿà°żà°«à°żà°•à±‡à°·à°šà±‌à°Čఀో ఇంటరటక్ట్ à°…à°”à±à°”à°Ąà°Ÿà°šà°żà°•à°ż, అà°Čటగే à°źà±€ ఫోచ్, SMS, కటంటటక్ట్‌à°Čు, à°•à±à°Żà°Ÿà°Čà±†à°‚à°Ąà°°à±, à°•à°Ÿà°Č్ à°Čటగ్‌à°Čు, à°žà°źà±€à°Șంà°Čà±‹à°šà°ż à°Șà°°à°żà°•à°°à°Ÿà°Č à°…à°šà±à°źà°€à±à°Čచు à°Żà°Ÿà°•à±à°žà±†à°žà± à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż <xliff:g id="APP_NAME">%2$s</xliff:g> à°…à°šà±à°źà°€à°żà°‚à°šà°Źà°Ąà±à°€à±à°‚à°Šà°ż."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"à°•à°Ÿà°Č్ చేఞ్ఀుచ్చ à°”à°Ÿà°°à°ż à°Șేరు à°”à°‚à°Ÿà°ż à°žà°źà°Ÿà°šà°Ÿà°°à°Ÿà°šà±à°šà°ż à°žà°żà°‚à°•à± à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż, à°źà±€ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>à°Čో ఈ à°…à°šà±à°źà°€à±à°Čచు à°Żà°Ÿà°•à±à°žà±†à°žà± à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż ఈ à°Żà°Ÿà°Ș్ à°…à°šà±à°źà°€à°żà°‚à°šà°Źà°Ąà±à°€à±à°‚à°Šà°ż"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;‌చు à°źà±‡à°šà±‡à°œà± à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;‌చు à°…à°šà±à°źà°€à°żà°‚à°šà°Ÿà°Čà°Ÿ?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"గ్à°Čటఞెఞ్"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>‌చు à°źà±‡à°šà±‡à°œà± à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż ఈ à°Żà°Ÿà°Ș్ అఔఞరం. à°źà±€ à°šà±‹à°Ÿà°żà°«à°żà°•à±‡à°·à°šà±‌à°Čఀో ఇంటరటక్ట్ à°…à°”à±à°”à°Ąà°Ÿà°šà°żà°•à°ż, అà°Čటగే à°źà±€ ఫోచ్, SMS, కటంటటక్ట్‌à°Čు, à°źà±ˆà°•à±à°°à±‹à°«à±‹à°šà±, à°žà°źà±€à°Șంà°Čà±‹à°šà°ż à°Șà°°à°żà°•à°°à°Ÿà°Č à°…à°šà±à°źà°€à±à°Čచు à°Żà°Ÿà°•à±à°žà±†à°žà± à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż <xliff:g id="APP_NAME">%2$s</xliff:g> à°…à°šà±à°źà°€à°żà°‚à°šà°Źà°Ąà±à°€à±à°‚à°Šà°ż."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"à°źà±€ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>à°Čో ఈ à°…à°šà±à°źà°€à±à°Čచు à°Żà°Ÿà°•à±à°žà±†à°žà± à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż ఈ à°Żà°Ÿà°Ș్ à°…à°šà±à°źà°€à°żà°‚à°šà°Źà°Ąà±à°€à±à°‚à°Šà°ż"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"à°źà±€ ఫోచ్ à°šà±à°‚à°Ąà°ż ఈ à°žà°źà°Ÿà°šà°Ÿà°°à°Ÿà°šà±à°šà°ż à°Żà°Ÿà°•à±à°žà±†à°žà± à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à°Żà°Ÿà°Ș్‌చు à°…à°šà±à°źà°€à°żà°‚à°šà°‚à°Ąà°ż"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Cross-device services"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"à°źà±€ à°Șà°°à°żà°•à°°à°Ÿà°Č à°źà°§à±à°Ż à°Żà°Ÿà°Ș్‌à°Čచు à°žà±à°Ÿà±à°°à±€à°źà± à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż <xliff:g id="APP_NAME">%1$s</xliff:g> à°źà±€ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ఀరఫుచ à°…à°šà±à°źà°€à°żà°šà°ż à°°à°żà°•à±à°”à±†à°žà±à°Ÿà± à°šà±‡à°žà±à°€à±‹à°‚à°Šà°ż"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"à°źà±€ ఫోచ్ à°šà±à°‚à°Ąà°ż ఈ à°žà°źà°Ÿà°šà°Ÿà°°à°Ÿà°šà±à°šà°ż à°Żà°Ÿà°•à±à°žà±†à°žà± à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à°Żà°Ÿà°Ș్‌చు à°…à°šà±à°źà°€à°żà°‚à°šà°‚à°Ąà°ż"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play ఞర్ఔీఞుà°Čు"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> à°źà±€ ఫోచ్‌à°Čà±‹à°šà°ż ఫోటోà°Čచు, à°źà±€à°Ąà°żà°Żà°Ÿà°šà±, ఇంకట à°šà±‹à°Ÿà°żà°«à°żà°•à±‡à°·à°šà±‌à°Čచు à°Żà°Ÿà°•à±à°žà±†à°žà± à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż à°źà±€ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ఀరఫుచ à°…à°šà±à°źà°€à°żà°šà°ż à°°à°żà°•à±à°”à±†à°žà±à°Ÿà± à°šà±‡à°žà±à°€à±‹à°‚à°Šà°ż"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"ఈ à°šà°°à±à°Żà°šà± à°…à°źà°Čు à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt;‌చు à°…à°šà±à°źà°€à°żà°‚à°šà°Ÿà°Čà°Ÿ?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"à°žà°źà±€à°Șంà°Čà±‹à°šà°ż à°Șà°°à°żà°•à°°à°Ÿà°Čకు à°Żà°Ÿà°Ș్‌à°Čచు, ఇఀర à°žà°żà°žà±à°Ÿà°źà± ఫీచర్‌à°Čచు à°žà±à°Ÿà±à°°à±€à°źà± à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż <xliff:g id="APP_NAME">%1$s</xliff:g> à°źà±€ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> ఀరఫుచ à°…à°šà±à°źà°€à°żà°šà°ż à°°à°żà°•à±à°”à±†à°žà±à°Ÿà± à°šà±‡à°žà±à°€à±‹à°‚à°Šà°ż"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"à°Șà°°à°żà°•à°°à°‚"</string>
diff --git a/packages/CompanionDeviceManager/res/values-th/strings.xml b/packages/CompanionDeviceManager/res/values-th/strings.xml
index fc55930..950078e 100644
--- a/packages/CompanionDeviceManager/res/values-th/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-th/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"àž™àžČàžŹàžŽàžàžČ"</string>
     <string name="chooser_title" msgid="2262294130493605839">"àč€àž„àž·àž­àž<xliff:g id="PROFILE_NAME">%1$s</xliff:g>àž—àž”àčˆàžˆàž°àčƒàž«àč‰àžĄàž”àžàžČàžŁàžˆàž±àž”àžàžČàžŁàč‚àž”àžą &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"àž•àč‰àž­àž‡àčƒàžŠàč‰àčàž­àž›àž™àž”àč‰àčƒàž™àžàžČàžŁàžˆàž±àž”àžàžČàžŁ<xliff:g id="DEVICE_NAME">%1$s</xliff:g> <xliff:g id="APP_NAME">%2$s</xliff:g> àžˆàž°àč„àž”àč‰àžŁàž±àžšàž­àž™àžžàžàžČàž•àčƒàž«àč‰àž‹àžŽàž‡àž„àčŒàž‚àč‰àž­àžĄàžčàž„ àč€àžŠàčˆàž™ àžŠàž·àčˆàž­àž‚àž­àž‡àžšàžžàž„àž„àž„àž—àž”àčˆàč‚àž—àžŁàč€àž‚àč‰àžČàžĄàžČ àč‚àž•àč‰àž•àž­àžšàžàž±àžšàžàžČàžŁàčàžˆàč‰àž‡àč€àž•àž·àž­àž™ àžŁàž§àžĄàž–àž¶àž‡àžĄàž”àžȘàžŽàž—àž˜àžŽàčŒàč€àž‚àč‰àžČàž–àž¶àž‡àč‚àž—àžŁàžšàž±àžžàž—àčŒ, SMS, àžŁàžČàžąàžŠàž·àčˆàž­àž•àžŽàž”àž•àčˆàž­, àž›àžàžŽàž—àžŽàž™, àžšàž±àž™àž—àž¶àžàžàžČàžŁàč‚àž—àžŁ àčàž„àž°àž­àžžàž›àžàžŁàž“àčŒàž—àž”àčˆàž­àžąàžčàčˆàčƒàžàž„àč‰àč€àž„àž”àžąàž‡"</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"àčàž­àž›àž™àž”àč‰àžˆàž°àč„àž”àč‰àžŁàž±àžšàž­àž™àžžàžàžČàž•àčƒàž«àč‰àž‹àžŽàž‡àž„àčŒàž‚àč‰àž­àžĄàžčàž„ àč€àžŠàčˆàž™ àžŠàž·àčˆàž­àž‚àž­àž‡àžšàžžàž„àž„àž„àž—àž”àčˆàč‚àž—àžŁàč€àž‚àč‰àžČàžĄàžČ àčàž„àž°àžĄàž”àžȘàžŽàž—àž˜àžŽàčŒàč€àž‚àč‰àžČàž–àž¶àž‡àž‚àč‰àž­àžĄàžčàž„àč€àž«àž„àčˆàžČàž™àž”àč‰àčƒàž™<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>àž‚àž­àž‡àž„àžžàž“"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"àž­àž™àžžàžàžČàž•àčƒàž«àč‰ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àžˆàž±àž”àžàžČàžŁ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; àč„àž«àžĄ"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"àčàž§àčˆàž™àž•àžČ"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"àž•àč‰àž­àž‡àčƒàžŠàč‰àčàž­àž›àž™àž”àč‰àčƒàž™àžàžČàžŁàžˆàž±àž”àžàžČàžŁ<xliff:g id="DEVICE_NAME">%1$s</xliff:g> <xliff:g id="APP_NAME">%2$s</xliff:g> àžˆàž°àč„àž”àč‰àžŁàž±àžšàž­àž™àžžàžàžČàž•àčƒàž«àč‰àč‚àž•àč‰àž•àž­àžšàžàž±àžšàžàžČàžŁàčàžˆàč‰àž‡àč€àž•àž·àž­àž™àčàž„àž°àžĄàž”àžȘàžŽàž—àž˜àžŽàčŒàč€àž‚àč‰àžČàž–àž¶àž‡àč‚àž—àžŁàžšàž±àžžàž—àčŒ, SMS, àžŁàžČàžąàžŠàž·àčˆàž­àž•àžŽàž”àž•àčˆàž­, àč„àžĄàč‚àž„àžŁàč‚àžŸàž™ àčàž„àž°àž­àžžàž›àžàžŁàž“àčŒàž—àž”àčˆàž­àžąàžčàčˆàčƒàžàž„àč‰àč€àž„àž”àžąàž‡"</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"àčàž­àž›àž™àž”àč‰àžˆàž°àč„àž”àč‰àžŁàž±àžšàžȘàžŽàž—àž˜àžŽàčŒàž”àž±àž‡àž•àčˆàž­àč„àž›àž™àž”àč‰àčƒàž™<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>àž‚àž­àž‡àž„àžžàž“"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"àž­àž™àžžàžàžČàž•àčƒàž«àč‰ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àč€àž‚àč‰àžČàž–àž¶àž‡àž‚àč‰àž­àžĄàžčàž„àž™àž”àč‰àžˆàžČàžàč‚àž—àžŁàžšàž±àžžàž—àčŒàž‚àž­àž‡àž„àžžàž“"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"àžšàžŁàžŽàžàžČàžŁàž«àž„àžČàžąàž­àžžàž›àžàžŁàž“àčŒ"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> àžàžłàž„àž±àž‡àž‚àž­àžȘàžŽàž—àž˜àžŽàčŒàčƒàž™àž™àžČàžĄàž‚àž­àž‡ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> àč€àžžàž·àčˆàž­àžȘàž•àžŁàž”àžĄàčàž­àž›àžŁàž°àž«àž§àčˆàžČàž‡àž­àžžàž›àžàžŁàž“àčŒàž•àčˆàžČàž‡àč† àž‚àž­àž‡àž„àžžàž“"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"àž­àž™àžžàžàžČàž•àčƒàž«àč‰ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; àč€àž‚àč‰àžČàž–àž¶àž‡àž‚àč‰àž­àžĄàžčàž„àž™àž”àč‰àžˆàžČàžàč‚àž—àžŁàžšàž±àžžàž—àčŒàž‚àž­àž‡àž„àžžàž“"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"àžšàžŁàžŽàžàžČàžŁ Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> àžàžłàž„àž±àž‡àž‚àž­àžȘàžŽàž—àž˜àžŽàčŒàčƒàž™àž™àžČàžĄàž‚àž­àž‡ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> àč€àžžàž·àčˆàž­àč€àž‚àč‰àžČàž–àž¶àž‡àžŁàžčàž›àž àžČàžž àžȘàž·àčˆàž­ àčàž„àž°àžàžČàžŁàčàžˆàč‰àž‡àč€àž•àž·àž­àž™àčƒàž™àč‚àž—àžŁàžšàž±àžžàž—àčŒàž‚àž­àž‡àž„àžžàž“"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"àž­àž™àžžàžàžČàž•àčƒàž«àč‰ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; àž—àžłàž‡àžČàž™àž™àž”àč‰àč„àž«àžĄ"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> àžàžłàž„àž±àž‡àž‚àž­àžȘàžŽàž—àž˜àžŽàčŒàčƒàž™àž™àžČàžĄàž‚àž­àž‡ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> àč€àžžàž·àčˆàž­àžȘàž•àžŁàž”àžĄàčàž­àž›àčàž„àž°àžŸàž”àč€àžˆàž­àžŁàčŒàž­àž·àčˆàž™àč† àž‚àž­àž‡àžŁàž°àžšàžšàč„àž›àžąàž±àž‡àž­àžžàž›àžàžŁàž“àčŒàž—àž”àčˆàž­àžąàžčàčˆàčƒàžàž„àč‰àč€àž„àž”àžąàž‡"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"àž­àžžàž›àžàžŁàž“àčŒ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-tl/strings.xml b/packages/CompanionDeviceManager/res/values-tl/strings.xml
index 6e4ce39..b177dda 100644
--- a/packages/CompanionDeviceManager/res/values-tl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-tl/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"relo"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Pumili ng <xliff:g id="PROFILE_NAME">%1$s</xliff:g> para pamahalaan ng &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Kailangan ang app na ito para mapamahalaan ang iyong <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Papayagan ang <xliff:g id="APP_NAME">%2$s</xliff:g> na mag-sync ng impormasyon, tulad ng pangalan ng isang taong tumatawag, makipag-ugnayan sa mga notification mo, at ma-access ang iyong mga pahintulot sa Telepono, SMS, Mga Contact, Kalendaryo, Mga log ng tawag, at Mga kalapit na device."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Papayagan ang app na ito na mag-sync ng impormasyon, tulad ng pangalan ng isang taong tumatawag, at i-access ang mga pahintulot na ito sa iyong <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Payagan ang &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; na pamahalaan ang &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"salamin"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Kailangan ang app na ito para mapamahalaan ang <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Papayagan ang <xliff:g id="APP_NAME">%2$s</xliff:g> na makipag-ugnayan sa mga notification mo at i-access ang iyong mga pahintulot sa Telepono, SMS, Mga Contact, Mikropono, at Mga kalapit na device."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Papayagan ang app na ito na i-access ang mga pahintulot na ito sa iyong <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Payagan ang &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; na i-access ang impormasyong ito sa iyong telepono"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Mga cross-device na serbisyo"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"Ang <xliff:g id="APP_NAME">%1$s</xliff:g> ay humihiling ng pahintulot sa ngalan ng iyong <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para mag-stream ng mga app sa pagitan ng mga device mo"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Payagan ang &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; na i-access ang impormasyon sa iyong telepono"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Mga serbisyo ng Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"Ang <xliff:g id="APP_NAME">%1$s</xliff:g> ay humihiling ng pahintulot sa ngalan ng iyong <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para i-access ang mga larawan, media, at notification ng telepono mo"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Payagan ang &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; na gawin ang pagkilos na ito?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Humihiling ang <xliff:g id="APP_NAME">%1$s</xliff:g> ng pahintulot sa ngalan ng iyong <xliff:g id="DEVICE_NAME">%2$s</xliff:g> para mag-stream ng mga app at iba pang feature ng system sa mga kalapit na device"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"device"</string>
diff --git a/packages/CompanionDeviceManager/res/values-tr/strings.xml b/packages/CompanionDeviceManager/res/values-tr/strings.xml
index f9466db..7df524b 100644
--- a/packages/CompanionDeviceManager/res/values-tr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-tr/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"saat"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; tarafından yönetilecek bir <xliff:g id="PROFILE_NAME">%1$s</xliff:g> seçin"</string>
     <string name="summary_watch" msgid="898569637110705523">"Bu uygulama, <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazınızın yönetilmesi için gereklidir. <xliff:g id="APP_NAME">%2$s</xliff:g> adlı uygulamanın arayan kißinin adı gibi bilgileri senkronize etmesine, bildirimlerinizle etkileßimde bulunup Telefon, SMS, Kißiler, Takvim, Arama kayıtları ve Yakındaki cihazlar izinlerine erißmesine izin verilir."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Bu uygulamanın arayan kißinin adı gibi bilgileri senkronize etmesine ve <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> cihazınızda aßağıdaki izinlere erißmesine izin verilir"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; uygulamasına &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; cihazını yönetmesi için izin verilsin mi?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"glasses"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Bu uygulama, <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazının yönetilmesi için gereklidir. <xliff:g id="APP_NAME">%2$s</xliff:g> adlı uygulamanın bildirimlerinizle etkileßimde bulunup Telefon, SMS, Kißiler, Mikrofon ve Yakındaki cihazlar izinlerine erißmesine izin verilir."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Bu uygulamanın <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> cihazınızda ßu izinlere erißmesine izin verilecek:"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; uygulamasının, telefonunuzdaki bu bilgilere erißmesine izin verin"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Cihazlar arası hizmetler"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g>, cihazlarınız arasında uygulama akıßı gerçekleßtirmek için <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> cihazınız adına izin istiyor"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; uygulamasının, telefonunuzdaki bu bilgilere erißmesine izin verin"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play hizmetleri"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g>, telefonunuzdaki fotoğraf, medya ve bildirimlere erißmek için <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> cihazınız adına izin istiyor"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; cihazının bu ißlem yapmasına izin verilsin mi?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> uygulaması <xliff:g id="DEVICE_NAME">%2$s</xliff:g> cihazınız adına uygulamaları ve diğer sistem özelliklerini yakındaki cihazlara aktarmak için izin istiyor"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"cihaz"</string>
diff --git a/packages/CompanionDeviceManager/res/values-uk/strings.xml b/packages/CompanionDeviceManager/res/values-uk/strings.xml
index 5b192a8..22a2afd 100644
--- a/packages/CompanionDeviceManager/res/values-uk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-uk/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"ĐłĐŸĐŽĐžĐœĐœĐžĐș"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Đ’ĐžĐ±Đ”Ń€Ń–Ń‚ŃŒ <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, яĐșĐžĐŒ ĐșĐ”Ń€ŃƒĐČĐ°Ń‚ĐžĐŒĐ” ĐŽĐŸĐŽĐ°Ń‚ĐŸĐș &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"ĐŠĐ”Đč ĐŽĐŸĐŽĐ°Ń‚ĐŸĐș ĐżĐŸŃ‚Ń€Ń–Đ±Đ”Đœ, Ń‰ĐŸĐ± ĐșĐ”Ń€ŃƒĐČато ĐżŃ€ĐžŃŃ‚Ń€ĐŸŃ”ĐŒ \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". Đ”ĐŸĐŽĐ°Ń‚ĐŸĐș <xliff:g id="APP_NAME">%2$s</xliff:g> Đ·ĐŒĐŸĐ¶Đ” ŃĐžĐœŃ…Ń€ĐŸĐœŃ–Đ·ŃƒĐČато Ń–ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†Ń–ŃŽ (ĐœĐ°ĐżŃ€ĐžĐșлаЎ, Ń–ĐŒ’я Đ°Đ±ĐŸĐœĐ”ĐœŃ‚Đ°, яĐșĐžĐč ĐČĐžĐșлОĐșає), ĐČĐ·Đ°Ń”ĐŒĐŸĐŽŃ–ŃŃ‚Đž Đ· ĐČĐ°ŃˆĐžĐŒĐž ŃĐżĐŸĐČŃ–Ń‰Đ”ĐœĐœŃĐŒĐž Đč ĐŸŃ‚Ń€ĐžĐŒĐ°Ń” ĐŽĐŸĐ·ĐČĐŸĐ»Đž \"ĐąĐ”Đ»Đ”Ń„ĐŸĐœ\", \"SMS\", \"ĐšĐŸĐœŃ‚Đ°Đșто\", \"ĐšĐ°Đ»Đ”ĐœĐŽĐ°Ń€\", \"Đ–ŃƒŃ€ĐœĐ°Đ»Đž ĐČĐžĐșлОĐșіĐČ\" і \"ĐŸŃ€ĐžŃŃ‚Ń€ĐŸŃ— ĐżĐŸĐ±Đ»ĐžĐ·Ńƒ\"."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"ĐŠĐ”Đč ĐŽĐŸĐŽĐ°Ń‚ĐŸĐș Đ·ĐŒĐŸĐ¶Đ” ŃĐžĐœŃ…Ń€ĐŸĐœŃ–Đ·ŃƒĐČато Ń–ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†Ń–ŃŽ (ĐœĐ°ĐżŃ€ĐžĐșлаЎ, Ń–ĐŒ’я Đ°Đ±ĐŸĐœĐ”ĐœŃ‚Đ°, яĐșĐžĐč ĐČĐžĐșлОĐșає) і ĐŸŃ‚Ń€ĐžĐŒĐ°Ń” ĐŽĐŸŃŃ‚ŃƒĐż ĐŽĐŸ ĐżĐ”Ń€Đ”Đ»Ń–Ń‡Đ”ĐœĐžŃ… ĐœĐžĐ¶Ń‡Đ” ĐŽĐŸĐ·ĐČĐŸĐ»Ń–ĐČ ĐœĐ° ĐČĐ°ŃˆĐŸĐŒŃƒ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Đ”ĐŸĐ·ĐČĐŸĐ»ĐžŃ‚Đž ĐŽĐŸĐŽĐ°Ń‚Đșу &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ĐșĐ”Ń€ŃƒĐČато ĐżŃ€ĐžŃŃ‚Ń€ĐŸŃ”ĐŒ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"ĐŸĐșŃƒĐ»ŃŃ€Đž"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"ĐŠĐ”Đč ĐŽĐŸĐŽĐ°Ń‚ĐŸĐș ĐżĐŸŃ‚Ń€Ń–Đ±Đ”Đœ, Ń‰ĐŸĐ± ĐșĐ”Ń€ŃƒĐČато ĐżŃ€ĐžŃŃ‚Ń€ĐŸŃ”ĐŒ \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". Đ”ĐŸĐŽĐ°Ń‚ĐŸĐș <xliff:g id="APP_NAME">%2$s</xliff:g> Đ·ĐŒĐŸĐ¶Đ” ĐČĐ·Đ°Ń”ĐŒĐŸĐŽŃ–ŃŃ‚Đž Đ· ĐČĐ°ŃˆĐžĐŒĐž ŃĐżĐŸĐČŃ–Ń‰Đ”ĐœĐœŃĐŒĐž Đč ĐŸŃ‚Ń€ĐžĐŒĐ°Ń” ĐŽĐŸĐ·ĐČĐŸĐ»Đž \"ĐąĐ”Đ»Đ”Ń„ĐŸĐœ\", \"SMS\", \"ĐšĐŸĐœŃ‚Đ°Đșто\", \"МіĐșŃ€ĐŸŃ„ĐŸĐœ\" і \"ĐŸŃ€ĐžŃŃ‚Ń€ĐŸŃ— ĐżĐŸĐ±Đ»ĐžĐ·Ńƒ\"."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"ĐŠĐ”Đč ĐŽĐŸĐŽĐ°Ń‚ĐŸĐș ĐŒĐ°Ń‚ĐžĐŒĐ” ĐŽĐŸŃŃ‚ŃƒĐż ĐŽĐŸ ĐżĐ”Ń€Đ”Đ»Ń–Ń‡Đ”ĐœĐžŃ… ĐœĐžĐ¶Ń‡Đ” ĐŽĐŸĐ·ĐČĐŸĐ»Ń–ĐČ ĐœĐ° ĐČĐ°ŃˆĐŸĐŒŃƒ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"НаЮаĐčтД ĐŽĐŸĐŽĐ°Ń‚Đșу &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ĐŽĐŸŃŃ‚ŃƒĐż ĐŽĐŸ цієї Ń–ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†Ń–Ń— Đ· Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐ°"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"ХДрĐČісо ĐŽĐ»Ń ĐșŃ–Đ»ŃŒĐșĐŸŃ… ĐżŃ€ĐžŃŃ‚Ń€ĐŸŃ—ĐČ"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"Đ”ĐŸĐŽĐ°Ń‚ĐŸĐș <xliff:g id="APP_NAME">%1$s</xliff:g> ĐČіЮ Ń–ĐŒĐ”ĐœŃ– ĐČĐ°ŃˆĐŸĐłĐŸ ĐżŃ€ĐžŃŃ‚Ń€ĐŸŃŽ \"<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>\" Đ·Đ°ĐżĐžŃ‚ŃƒŃ” ĐŽĐŸĐ·ĐČŃ–Đ» ĐœĐ° Ń‚Ń€Đ°ĐœŃĐ»ŃŃ†Ń–ŃŽ ĐŽĐŸĐŽĐ°Ń‚ĐșіĐČ ĐŒŃ–Đ¶ ĐČĐ°ŃˆĐžĐŒĐž ĐżŃ€ĐžŃŃ‚Ń€ĐŸŃĐŒĐž"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"НаЮаĐčтД ĐżŃ€ĐžŃŃ‚Ń€ĐŸŃŽ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ĐŽĐŸŃŃ‚ŃƒĐż ĐŽĐŸ цієї Ń–ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†Ń–Ń— Đ· Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐ°"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"ХДрĐČісо Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"Đ”ĐŸĐŽĐ°Ń‚ĐŸĐș <xliff:g id="APP_NAME">%1$s</xliff:g> ĐČіЮ Ń–ĐŒĐ”ĐœŃ– ĐČĐ°ŃˆĐŸĐłĐŸ ĐżŃ€ĐžŃŃ‚Ń€ĐŸŃŽ \"<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>\" Đ·Đ°ĐżĐžŃ‚ŃƒŃ” ĐŽĐŸĐ·ĐČŃ–Đ» ĐœĐ° ĐŽĐŸŃŃ‚ŃƒĐż ĐŽĐŸ Ń„ĐŸŃ‚ĐŸĐłŃ€Đ°Ń„Ń–Đč, ĐŒĐ”ĐŽŃ–Đ°Ń„Đ°ĐčліĐČ Ń– ŃĐżĐŸĐČŃ–Ń‰Đ”ĐœŃŒ ĐČĐ°ŃˆĐŸĐłĐŸ Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐ°"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Đ”ĐŸĐ·ĐČĐŸĐ»ĐžŃ‚Đž ĐŽĐŸĐŽĐ°Ń‚Đșу &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ĐČĐžĐșĐŸĐœŃƒĐČато цю Юію?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Đ”ĐŸĐŽĐ°Ń‚ĐŸĐș <xliff:g id="APP_NAME">%1$s</xliff:g> ĐČіЮ Ń–ĐŒĐ”ĐœŃ– ĐČĐ°ŃˆĐŸĐłĐŸ ĐżŃ€ĐžŃŃ‚Ń€ĐŸŃŽ (<xliff:g id="DEVICE_NAME">%2$s</xliff:g>) Đ·Đ°ĐżĐžŃ‚ŃƒŃ” ĐŽĐŸĐ·ĐČŃ–Đ» ĐœĐ° Ń‚Ń€Đ°ĐœŃĐ»ŃŃ†Ń–ŃŽ ĐŽĐŸĐŽĐ°Ń‚ĐșіĐČ Ń‚Đ° Ń–ĐœŃˆĐžŃ… ŃĐžŃŃ‚Đ”ĐŒĐœĐžŃ… Ń„ŃƒĐœĐșціĐč ĐœĐ° ĐżŃ€ĐžŃŃ‚Ń€ĐŸŃ— ĐżĐŸĐ±Đ»ĐžĐ·Ńƒ"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"простріĐč"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ur/strings.xml b/packages/CompanionDeviceManager/res/values-ur/strings.xml
index beeaef3..82b1605 100644
--- a/packages/CompanionDeviceManager/res/values-ur/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ur/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"ŰŻÛŒÚ©ÚŸÛŒÚș"</string>
     <string name="chooser_title" msgid="2262294130493605839">"‏&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; کے Ű°Ű±ÛŒŰčے Ù†ŰžÙ… Ú©ŰŠÛ’ ŰŹŰ§Ù†Û’ Ú©ÛŒÙ„ŰŠÛ’ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> کو منŰȘ۟ۚ Ú©Ű±ÛŒÚș"</string>
     <string name="summary_watch" msgid="898569637110705523">"‏ŰąÙŸ کے <xliff:g id="DEVICE_NAME">%1$s</xliff:g> کۧ Ù†ŰžÙ… Ú©Ű±Ù†Û’ کے لیے ۧ۳ Ű§ÛŒÙŸ کی Ű¶Ű±ÙˆŰ±ŰȘ ہے۔ <xliff:g id="APP_NAME">%2$s</xliff:g> کو Ú©ŰłÛŒ Ú©Ű§Ù„ Ú©Ű±Ù†Û’ ÙˆŰ§Ù„Û’ کے Ù†Ű§Ù… ŰŹÛŒŰłÛŒ مŰčÙ„ÙˆÙ…Ű§ŰȘ کی Ù…Ű·Ű§ŰšÙ‚ŰȘ ÙŸŰ°ÛŒŰ±ÛŒ Ú©Ű±Ù†Û’ŰŒ ŰąÙŸ کی Ű§Ű·Ù„Ű§ŰčۧŰȘ کے ۳ۧŰȘÚŸ ŰȘŰčŰ§Ù…Ù„ Ú©Ű±Ù†Û’ŰŒ ŰąÙŸ کے ÙÙˆÙ†ŰŒ SMSی Ű±Ű§ŰšŰ·Û’ŰŒ Ú©ÛŒÙ„Ù†ÚˆŰ±ŰŒ Ú©Ű§Ù„ Ù„Ű§ÚŻŰČ Ű§ÙˆŰ± Ù‚Ű±ÛŒŰšÛŒ ŰąÙ„Ű§ŰȘ کی ۧۏۧŰČŰȘوÚș ŰȘÚ© Ű±ŰłŰ§ŰŠÛŒ Ű­Ű§Ű”Ù„ Ú©Ű±Ù†Û’ کی ۧۏۧŰČŰȘ ÛÙˆÚŻÛŒÛ”"</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"ۧ۳ Ű§ÛŒÙŸ کو ŰąÙŸ کے <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> ÙŸŰ± Ú©ŰłÛŒ Ú©Ű§Ù„ Ú©Ű±Ù†Û’ ÙˆŰ§Ù„Û’ کے Ù†Ű§Ù… ŰŹÛŒŰłÛŒ مŰčÙ„ÙˆÙ…Ű§ŰȘ کی Ù…Ű·Ű§ŰšÙ‚ŰȘ ÙŸŰ°ÛŒŰ±ÛŒ Ú©Ű±Ù†Û’ Ű§ÙˆŰ± Ű§Ù† ۧۏۧŰČŰȘوÚș ŰȘÚ© Ű±ŰłŰ§ŰŠÛŒ کی ۧۏۧŰČŰȘ ÛÙˆÚŻÛŒ"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"‏&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; کو &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; کۧ Ù†ŰžÙ… Ú©Ű±Ù†Û’ کی ۧۏۧŰČŰȘ ŰŻÛŒÚș۟"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"ÚŻÙ„Ű§ŰłŰČ"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"‏<xliff:g id="DEVICE_NAME">%1$s</xliff:g> کۧ Ù†ŰžÙ… Ú©Ű±Ù†Û’ کے Ù„ÛŒÛ’ŰŒ ۧ۳ Ű§ÛŒÙŸ کی Ű¶Ű±ÙˆŰ±ŰȘ ہے۔ <xliff:g id="APP_NAME">%2$s</xliff:g> کو ŰąÙŸ کی Ű§Ű·Ù„Ű§ŰčۧŰȘ کے ۳ۧŰȘÚŸ ŰȘŰčŰ§Ù…Ù„ Ú©Ű±Ù†Û’ Ű§ÙˆŰ± ŰąÙŸ کے ÙÙˆÙ†ŰŒ SMSی Ű±Ű§ŰšŰ·ÙˆÚșی Ù…Ű§ŰŠÛŒÚ©Ű±ÙˆÙÙˆÙ† Ű§ÙˆŰ± Ù‚Ű±ÛŒŰšÛŒ ŰąÙ„Ű§ŰȘ کی ۧۏۧŰČŰȘوÚș ŰȘÚ© Ű±ŰłŰ§ŰŠÛŒ کی ۧۏۧŰČŰȘ ÛÙˆÚŻÛŒÛ”"</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"ۧ۳ Ű§ÛŒÙŸ کو ŰąÙŸ کے <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> ÙŸŰ± Ű§Ù† ۧۏۧŰČŰȘوÚș ŰȘÚ© Ű±ŰłŰ§ŰŠÛŒ کی ۧۏۧŰČŰȘ ÛÙˆÚŻÛŒ"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"‏Ű§ÙŸÙ†Û’ فون ŰłÛ’ Ű§Ù† مŰčÙ„ÙˆÙ…Ű§ŰȘ ŰȘÚ© Ű±ŰłŰ§ŰŠÛŒ Ű­Ű§Ű”Ù„ Ú©Ű±Ù†Û’ کی &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; کو ۧۏۧŰČŰȘ ŰŻÛŒÚș"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"ک۱ۧ۳ ÚˆÛŒÙˆŰ§ŰŠŰł ŰłŰ±ÙˆŰłŰČ"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> Ű§ÛŒÙŸ ŰąÙŸ کے <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> کی ŰŹŰ§Ù†Űš ŰłÛ’ ŰąÙŸ کے ŰąÙ„Ű§ŰȘ کے ŰŻŰ±Ù…ÛŒŰ§Ù† Ű§ÛŒÙŸŰł کی ŰłÙ„ŰłÙ„Û ŰšÙ†ŰŻÛŒ Ú©Ű±Ù†Û’ کی ۧۏۧŰČŰȘ کی ŰŻŰ±ŰźÙˆŰ§ŰłŰȘ ک۱ Ű±ÛÛŒ ہے"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"‏Ű§ÙŸÙ†Û’ فون ŰłÛ’ ۧ۳ مŰčÙ„ÙˆÙ…Ű§ŰȘ ŰȘÚ© Ű±ŰłŰ§ŰŠÛŒ Ű­Ű§Ű”Ù„ Ú©Ű±Ù†Û’ کی &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; کو ۧۏۧŰČŰȘ ŰŻÛŒÚș"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"‏Google Play ŰłŰ±ÙˆŰłŰČ"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> Ű§ÛŒÙŸ ŰąÙŸ کے <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> کی ŰŹŰ§Ù†Űš ŰłÛ’ ŰąÙŸ کے فون کی ŰȘŰ”Ű§ÙˆÛŒŰ±ŰŒ Ù…ÛŒÚˆÛŒŰ§ Ű§ÙˆŰ± Ű§Ű·Ù„Ű§ŰčۧŰȘ ŰȘÚ© Ű±ŰłŰ§ŰŠÛŒ کی ۧۏۧŰČŰȘ کی ŰŻŰ±ŰźÙˆŰ§ŰłŰȘ ک۱ Ű±ÛÛŒ ہے"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"‏&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; کو یہ Ú©Ű§Ű±Ű±ÙˆŰ§ŰŠÛŒ Ű§Ù†ŰŹŰ§Ù… ŰŻÛŒÙ†Û’ کی ۧۏۧŰČŰȘ ŰŻÛŒÚș۟"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> ŰąÙŸ کے <xliff:g id="DEVICE_NAME">%2$s</xliff:g> کی ŰŹŰ§Ù†Űš ŰłÛ’ Ű§ÛŒÙŸŰł Ű§ÙˆŰ± ۳۳Ùčم کی ŰŻÛŒÚŻŰ± ŰźŰ”ÙˆŰ”ÛŒŰ§ŰȘ کی ŰłÙ„ŰłÙ„Û ŰšÙ†ŰŻÛŒ Ù‚Ű±ÛŒŰšÛŒ ŰąÙ„Ű§ŰȘ ÙŸŰ± Ú©Ű±Ù†Û’ کی ۧۏۧŰČŰȘ Ű·Ù„Űš ک۱ Ű±ÛÛŒ ہے"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"ŰąÙ„Û"</string>
diff --git a/packages/CompanionDeviceManager/res/values-uz/strings.xml b/packages/CompanionDeviceManager/res/values-uz/strings.xml
index 567539a..99bf67e 100644
--- a/packages/CompanionDeviceManager/res/values-uz/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-uz/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"soat"</string>
     <string name="chooser_title" msgid="2262294130493605839">"&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; boshqaradigan <xliff:g id="PROFILE_NAME">%1$s</xliff:g> qurilmasini tanlang"</string>
     <string name="summary_watch" msgid="898569637110705523">"Bu ilova <xliff:g id="DEVICE_NAME">%1$s</xliff:g> profilini boshqarish uchun kerak. <xliff:g id="APP_NAME">%2$s</xliff:g> ilovasiga chaqiruvchining ismi, bildirishnomalar bilan ishlash va telefon, SMS, kontaktlar, taqvim, chaqiruvlar jurnali va yaqin-atrofdagi qurilmalarni aniqlash kabi maÊŒlumotlarni sinxronlashga ruxsat beriladi."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Bu ilovaga chaqiruvchining ismi kabi maÊŒlumotlarni sinxronlash va <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> qurilmasida quyidagi amallarni bajarishga ruxsat beriladi"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ilovasiga &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt; qurilmasini boshqarish uchun ruxsat berilsinmi?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"koʻzoynak"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Bu ilova <xliff:g id="DEVICE_NAME">%1$s</xliff:g> qurilmasini boshqarish uchun kerak. <xliff:g id="APP_NAME">%2$s</xliff:g> ilovasiga bildirishnomalar bilan ishlash va telefon, SMS, kontaktlar, mikrofon va yaqin-atrofdagi qurilmalarga kirishga ruxsat beriladi."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Bu ilova <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> qurilmasida quyidagi ruxsatlarni oladi"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ilovasiga telefondagi ushbu maÊŒlumot uchun ruxsat bering"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Qurilmalararo xizmatlar"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"Qurilamalararo ilovalar strimingi uchun <xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> nomidan ruxsat soʻramoqda"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ilovasiga telefondagi ushbu maÊŒlumot uchun ruxsat bering"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play xizmatlari"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"Telefoningizdagi rasm, media va bildirishnomalarga kirish uchun <xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> nomidan ruxsat soʻramoqda"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ilovasiga bu amalni bajarish uchun ruxsat berilsinmi?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi <xliff:g id="DEVICE_NAME">%2$s</xliff:g> qurilmangizdan nomidan atrofdagi qurilmalarga ilova va boshqa tizim funksiyalarini uzatish uchun ruxsat olmoqchi"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"qurilma"</string>
diff --git a/packages/CompanionDeviceManager/res/values-vi/strings.xml b/packages/CompanionDeviceManager/res/values-vi/strings.xml
index d4eefeb..4b3e1ec 100644
--- a/packages/CompanionDeviceManager/res/values-vi/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-vi/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"đồng hồ"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Chọn một <xliff:g id="PROFILE_NAME">%1$s</xliff:g> sáșœ do &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; quáșŁn lý"</string>
     <string name="summary_watch" msgid="898569637110705523">"Cáș§n ứng dỄng này để quáșŁn lý <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cá»§a báșĄn. <xliff:g id="APP_NAME">%2$s</xliff:g> Ä‘Æ°á»Łc phép đồng bộ hoá thông tin (ví dỄ: tên người gọi), tÆ°ÆĄng tác với thông báo cĆ©ng như có các quyền truy cáș­p Điện thoáșĄi, Tin nháșŻn SMS, Danh báșĄ, Lịch, Nháș­t ký cuộc gọi và Thiáșżt bị ở gáș§n."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Ớng dỄng này sáșœ Ä‘Æ°á»Łc phép đồng bộ hoá thông tin (cháșłng háșĄn như tên cá»§a người đang gọi điện) và dùng những quyền sau trên <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> cá»§a báșĄn"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Cho phép &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; quáșŁn lý &lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;?"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"kính"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"BáșĄn cáș§n có ứng dỄng này để quáșŁn lý <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> sáșœ Ä‘Æ°á»Łc phép tÆ°ÆĄng tác với thông báo cá»§a báșĄn, cĆ©ng như sá»­ dỄng các quyền đối với Điện thoáșĄi, SMS, Danh báșĄ, Micrô và Thiáșżt bị ở gáș§n."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Ớng dỄng này sáșœ Ä‘Æ°á»Łc phép dùng những quyền sau trên <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> cá»§a báșĄn"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Cho phép &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; truy cáș­p vào thông tin này trên điện thoáșĄi cá»§a báșĄn"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Dịch vỄ trên nhiều thiáșżt bị"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> đang yêu cáș§u quyền thay cho <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> để truyền trá»±c tuyáșżn ứng dỄng giữa các thiáșżt bị cá»§a báșĄn"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Cho phép &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; truy cáș­p vào thông tin này trên điện thoáșĄi cá»§a báșĄn"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Dịch vỄ Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> đang yêu cáș§u quyền thay cho <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> để truy cáș­p vào áșŁnh, nội dung nghe nhìn và thông báo trên điện thoáșĄi cá»§a báșĄn"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Cho phép &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; thá»±c hiện hành động này?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> đang thay <xliff:g id="DEVICE_NAME">%2$s</xliff:g> yêu cáș§u quyền truyền trá»±c tuyáșżn ứng dỄng và các tính năng khác cá»§a hệ thống đáșżn các thiáșżt bị ở gáș§n"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"thiáșżt bị"</string>
diff --git a/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml
index ea07086..8ae7974 100644
--- a/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"æ‰‹èĄš"</string>
     <string name="chooser_title" msgid="2262294130493605839">"选择芁由&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;缡理的<xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string>
     <string name="summary_watch" msgid="898569637110705523">"éœ€èŠäœżç”šæ­€ćș”ç”šæ‰èƒœçźĄç†æ‚šçš„èźŸć€‡“<xliff:g id="DEVICE_NAME">%1$s</xliff:g>”。<xliff:g id="APP_NAME">%2$s</xliff:g>ć°†èƒœćŒæ­„äżĄæŻïŒˆäŸ‹ćŠ‚æ„ç””è€…çš„ć§“ćïŒ‰ă€äžŽé€šçŸ„äș€äș’ćč¶èƒœèŽ·ćŸ—ćŻčç””èŻă€çŸ­äżĄă€é€šèźŻćœ•ă€æ—„ćŽ†ă€é€šèŻèź°ćœ•ć’Œé™„èż‘èźŸć€‡çš„èźżé—źæƒé™ă€‚"</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"èŻ„ćș”ç”šć°†ćŻä»„ćŒæ­„äżĄæŻïŒˆäŸ‹ćŠ‚æ„ç””è€…çš„ć§“ćïŒ‰ïŒŒćč¶ćŻä»„èŽ·ćŸ—æ‚š<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>䞊的仄䞋权限"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"ć…èźž&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;缡理&lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"県镜"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"éœ€èŠäœżç”šæ­€ćș”ç”šæ‰èƒœçźĄç†<xliff:g id="DEVICE_NAME">%1$s</xliff:g>。“<xliff:g id="APP_NAME">%2$s</xliff:g>”ć°†èƒœäžŽé€šçŸ„äș€äș’ćč¶ćŻèŽ·ćŸ—ç””èŻă€çŸ­äżĄă€é€šèźŻćœ•ă€éșŠć…‹éŁŽć’Œé™„èż‘èźŸć€‡çš„èźżé—źæƒé™ă€‚"</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"èŻ„ćș”ç”šć°†ćŻä»„èŽ·ćŸ—æ‚š<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>䞊的仄䞋权限"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"ć…èźž“<xliff:g id="APP_NAME">%1$s</xliff:g>”&lt;strong&gt;&lt;/strong&gt;èźżé—źæ‚šæ‰‹æœșäž­çš„èż™éĄčäżĄæŻ"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"è·šèźŸć€‡æœćŠĄ"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"“<xliff:g id="APP_NAME">%1$s</xliff:g>”æ­Łä»ŁèĄšæ‚šçš„<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>èŻ·æ±‚ćœšæ‚šçš„èźŸć€‡äč‹é—Žæ”ćŒäŒ èŸ“ćș”甚憅ćźč"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"ć…èźž &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; èźżé—źæ‚šæ‰‹æœșäž­çš„èż™éĄčäżĄæŻ"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play æœćŠĄ"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"“<xliff:g id="APP_NAME">%1$s</xliff:g>”æ­Łä»ŁèĄšæ‚šçš„<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>èŻ·æ±‚èźżé—źæ‚šæ‰‹æœș侊的照片、ćȘ’äœ“ć†…ćźčć’Œé€šçŸ„"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"ć…èźž&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt;èż›èĄŒæ­€æ“äœœïŒŸ"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"“<xliff:g id="APP_NAME">%1$s</xliff:g>”æ­Łä»ŁèĄšæ‚šçš„<xliff:g id="DEVICE_NAME">%2$s</xliff:g>èŻ·æ±‚ć°†ćș”ç”šć’Œć…¶ä»–çł»ç»ŸćŠŸèƒœæ”ćŒäŒ èŸ“ćˆ°é™„èż‘çš„èźŸć€‡"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"èźŸć€‡"</string>
diff --git a/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml
index 3c2dcea..66c6be2 100644
--- a/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"手錶"</string>
     <string name="chooser_title" msgid="2262294130493605839">"遞擇由 &lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt; 缡理的<xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string>
     <string name="summary_watch" msgid="898569637110705523">"ćż…é ˆäœżç”šæ­€æ‡‰ç”šçš‹ćŒïŒŒæ‰èƒœçźĄç†ă€Œ<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」。「<xliff:g id="APP_NAME">%2$s</xliff:g>ă€ć°‡ćŻćŒæ­„èł‡èšŠ (äŸ‹ćŠ‚äŸ†é›»è€…çš„ćçš±)ă€é€éŽé€šçŸ„èˆ‡äœ äș’ć‹•ïŒŒäžŠć­˜ć–é›»è©±ă€çŸ­èšŠă€é€šèšŠéŒ„ă€æ—„æ›†ă€é€šè©±èš˜éŒ„ć’Œé™„èż‘çš„èŁçœźæŹŠé™ă€‚"</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"æ­€æ‡‰ç”šçš‹ćŒć°‡ćŻćŒæ­„èł‡èšŠ (äŸ‹ćŠ‚äŸ†é›»è€…çš„ćçš±)ïŒŒäžŠćŻćœš<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>äžŠć–ćŸ—ä»„äž‹æŹŠé™"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"èŠć…èš±ă€Œ<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;strong&gt;&lt;/strong&gt;缡理「<xliff:g id="DEVICE_NAME">%2$s</xliff:g>」&lt;strong&gt;&lt;/strong&gt;ć—ŽïŒŸ"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"çœŒéĄ"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"ćż…é ˆäœżç”šæ­€æ‡‰ç”šçš‹ćŒïŒŒæ‰èƒœçźĄç†ă€Œ<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」。「<xliff:g id="APP_NAME">%2$s</xliff:g>ă€ć°‡ćŻé€éŽé€šçŸ„èˆ‡æ‚šäș’ć‹•ïŒŒäžŠć­˜ć–é›»è©±ă€çŸ­èšŠă€é€šèšŠéŒ„ă€éș„ć…‹éąšć’Œé™„èż‘çš„èŁçœźæŹŠé™ă€‚"</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"æ­€æ‡‰ç”šçš‹ćŒć°‡ćŻćœš<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>äžŠć–ćŸ—ä»„äž‹æŹŠé™"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"ć…èš±ă€Œ<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;strong&gt;&lt;/strong&gt;ć­˜ć–æ‚šæ‰‹æ©Ÿäž­çš„é€™é …èł‡æ–™"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"è·šèŁçœźæœć‹™"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"「<xliff:g id="APP_NAME">%1$s</xliff:g>ă€æ­Łćœšä»ŁèĄš <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> èŠæ±‚æŹŠé™ïŒŒä»„äŸżćœšèŁçœźé–“äžČæ”æ‡‰ç”šçš‹ćŒçš„ć…§ćźč"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"ć…èš±ă€Œ<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;strong&gt;&lt;/strong&gt;ć­˜ć–æ‚šæ‰‹æ©Ÿäž­çš„é€™é …èł‡æ–™"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play æœć‹™"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"「<xliff:g id="APP_NAME">%1$s</xliff:g>ă€æ­Łćœšä»ŁèĄš <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> èŠæ±‚æŹŠé™ïŒŒä»„äŸżć­˜ć–æ‰‹æ©ŸäžŠçš„ç›žç‰‡ă€ćȘ’é«”ć’Œé€šçŸ„"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"èŠć…èš±ă€Œ<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」&lt;strong&gt;&lt;/strong&gt;ćŸ·èĄŒæ­€æ“äœœć—ŽïŒŸ"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"「<xliff:g id="APP_NAME">%1$s</xliff:g>ă€æ­Łćœšä»ŁèĄšă€Œ<xliff:g id="DEVICE_NAME">%2$s</xliff:g>ă€èŠæ±‚æŹŠé™ïŒŒæ‰èƒœćœšé™„èż‘çš„èŁçœźäžŠäžČæ”æ’­æ”Ÿæ‡‰ç”šçš‹ćŒć’Œć…¶ä»–çł»ç”±ćŠŸèƒœ"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"èŁçœź"</string>
diff --git a/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml
index f22fcba..fdb78a5 100644
--- a/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"手錶"</string>
     <string name="chooser_title" msgid="2262294130493605839">"éžæ“‡èŠèź“ă€Œ<xliff:g id="APP_NAME">%2$s</xliff:g>」&lt;strong&gt;&lt;/strong&gt;缡理的<xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string>
     <string name="summary_watch" msgid="898569637110705523">"äœ ćż…é ˆäœżç”šé€™ć€‹æ‡‰ç”šçš‹ćŒïŒŒæ‰èƒœçźĄç†<xliff:g id="DEVICE_NAME">%1$s</xliff:g>。「<xliff:g id="APP_NAME">%2$s</xliff:g>ă€ć°‡ćŻćŒæ­„èł‡èšŠ (äŸ‹ćŠ‚äŸ†é›»è€…ćçš±)ă€ć­˜ć–é€šçŸ„ćŠćœšé€šçŸ„äžŠćŸ·èĄŒæ“äœœïŒŒäžŠć–ćŸ—é›»è©±ă€ç°ĄèšŠă€èŻç”Ąäșșă€æ—„æ›†ă€é€šè©±èš˜éŒ„ă€éș„ć…‹éąšć’Œé„°èż‘èŁçœźæŹŠé™ă€‚"</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"é€™ć€‹æ‡‰ç”šçš‹ćŒć°‡ćŻćŒæ­„è™•ç†èł‡èšŠ (äŸ‹ćŠ‚äŸ†é›»è€…ćçš±)ă€ć–ćŸ—<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>侊的這äș›æŹŠé™"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"èŠć…èš±ă€Œ<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;strong&gt;&lt;/strong&gt;缡理「<xliff:g id="DEVICE_NAME">%2$s</xliff:g>」&lt;strong&gt;&lt;/strong&gt;ć—ŽïŒŸ"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"çœŒéĄ"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"äœ ćż…é ˆäœżç”šé€™ć€‹æ‡‰ç”šçš‹ćŒïŒŒæ‰èƒœçźĄç†ă€Œ<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」。「<xliff:g id="APP_NAME">%2$s</xliff:g>ă€ć°‡ćŻć­˜ć–é€šçŸ„ćŠćœšé€šçŸ„äžŠćŸ·èĄŒæ“äœœïŒŒäžŠć–ćŸ—é›»è©±ă€ç°ĄèšŠă€èŻç”Ąäșș、éș„ć…‹éąšć’Œé„°èż‘èŁçœźæŹŠé™ă€‚"</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"é€™ć€‹æ‡‰ç”šçš‹ćŒć°‡ćŻć–ćŸ—<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>侊的這äș›æŹŠé™"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"ć…èš±ă€Œ<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;strong&gt;&lt;/strong&gt;ć­˜ć–æ‰‹æ©Ÿäž­çš„é€™é …èł‡èšŠ"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"è·šèŁçœźæœć‹™"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"ç‚șäș†ćœšèŁçœźé–“äžČæ”ć‚łèŒžæ‡‰ç”šçš‹ćŒć…§ćźčïŒŒă€Œ<xliff:g id="APP_NAME">%1$s</xliff:g>ă€æ­Łćœšä»ŁèĄš <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> èŠæ±‚ç›žé—œæŹŠé™"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"ć…èš±ă€Œ<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;strong&gt;&lt;/strong&gt;ć­˜ć–äœ æ‰‹æ©Ÿäž­çš„é€™é …èł‡èšŠ"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Google Play æœć‹™"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"ç‚șäș†ć­˜ć–æ‰‹æ©ŸäžŠçš„ç›žç‰‡ă€ćȘ’é«”ć’Œé€šçŸ„ïŒŒă€Œ<xliff:g id="APP_NAME">%1$s</xliff:g>ă€æ­Łćœšä»ŁèĄš <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> èŠæ±‚ç›žé—œæŹŠé™"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"èŠć…èš±ă€Œ<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」&lt;strong&gt;&lt;/strong&gt;ćŸ·èĄŒé€™é …æ“äœœć—ŽïŒŸ"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"「<xliff:g id="APP_NAME">%1$s</xliff:g>ă€æ­Łćœšä»ŁèĄšă€Œ<xliff:g id="DEVICE_NAME">%2$s</xliff:g>ă€èŠæ±‚ćż…èŠæŹŠé™ïŒŒæ‰èƒœćœšé„°èż‘èŁçœźäžŠäžČæ”æ’­æ”Ÿæ‡‰ç”šçš‹ćŒć’Œć…¶ä»–çł»ç”±ćŠŸèƒœ"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"èŁçœź"</string>
diff --git a/packages/CompanionDeviceManager/res/values-zu/strings.xml b/packages/CompanionDeviceManager/res/values-zu/strings.xml
index 1de5713..9656fef 100644
--- a/packages/CompanionDeviceManager/res/values-zu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zu/strings.xml
@@ -21,20 +21,24 @@
     <string name="profile_name_watch" msgid="576290739483672360">"buka"</string>
     <string name="chooser_title" msgid="2262294130493605839">"Khetha i-<xliff:g id="PROFILE_NAME">%1$s</xliff:g> ezophathwa yi-&lt;strong&gt;<xliff:g id="APP_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="summary_watch" msgid="898569637110705523">"Le app iyadingeka ukuphatha i-<xliff:g id="DEVICE_NAME">%1$s</xliff:g> yakho. I-<xliff:g id="APP_NAME">%2$s</xliff:g> izovunyelwa ukuvumelanisa ulwazi, njengegama lomuntu othile ofonayo, ukusebenzisana nezaziso zakho futhi ufinyelele Ifoni yakho, i-SMS, Oxhumana Nabo, Ikhalenda, Amarekhodi Amakholi nezimvume zamadivayisi aseduze."</string>
-    <string name="summary_watch_single_device" msgid="3173948915947011333">"Le-app izovunyelwa ukuvumelanisa ulwazi, olufana negama lomuntu ofonayo, iphinde ifinyelele lezi zimvume ku-<xliff:g id="DEVICE_TYPE">%1$s</xliff:g> yakho"</string>
+    <!-- no translation found for summary_watch_single_device (3173948915947011333) -->
+    <skip />
     <string name="confirmation_title_glasses" msgid="8288346850537727333">"Vumela i-&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ukuthi ifinyelele i-&lt;strong&gt;<xliff:g id="DEVICE_NAME">%2$s</xliff:g>&lt;/strong&gt;"</string>
     <string name="profile_name_glasses" msgid="8488394059007275998">"Izingilazi"</string>
     <string name="summary_glasses_multi_device" msgid="615259525961937348">"Le app iyadingeka ukuphatha i-<xliff:g id="DEVICE_NAME">%1$s</xliff:g>. I-<xliff:g id="APP_NAME">%2$s</xliff:g> izovunyelwa ukuthi ihlanganyele nezaziso zakho futhi ifinyelele kufoni yakho, i-SMS, Oxhumana nabo, Imakrofoni Nezimvume zamadivayisi aseduze."</string>
-    <string name="summary_glasses_single_device" msgid="3000909894067413398">"Le-app izovunyelwa ukufinyelela lezi zimvume ku-<xliff:g id="DEVICE_TYPE">%1$s</xliff:g> yakho"</string>
+    <!-- no translation found for summary_glasses_single_device (3000909894067413398) -->
+    <skip />
     <string name="title_app_streaming" msgid="2270331024626446950">"Vumela i-&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ifinyelele lolu lwazi kusukela efonini yakho"</string>
     <string name="helper_title_app_streaming" msgid="4151687003439969765">"Amasevisi amadivayisi amaningi"</string>
-    <string name="helper_summary_app_streaming" msgid="2396773196949578425">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> icela imvume esikhundleni se-<xliff:g id="DISPLAY_NAME">%2$s</xliff:g> yakho ukuze isakaze-bukhoma ama-app phakathi kwamadivayisi akho"</string>
+    <!-- no translation found for helper_summary_app_streaming (2396773196949578425) -->
+    <skip />
     <string name="title_automotive_projection" msgid="3296005598978412847"></string>
     <string name="summary_automotive_projection" msgid="8683801274662496164"></string>
     <string name="title_computer" msgid="4693714143506569253">"Vumela &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ukufinyelela lolu lwazi kusuka efonini yakho"</string>
     <string name="summary_computer" msgid="3798467601598297062"></string>
     <string name="helper_title_computer" msgid="4671071173916176037">"Amasevisi we-Google Play"</string>
-    <string name="helper_summary_computer" msgid="8774832742608187072">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> icela imvume esikhundleni se-<xliff:g id="DISPLAY_NAME">%2$s</xliff:g> yakho ukuze ifinyelele izithombe zefoni yakho, imidiya nezaziso"</string>
+    <!-- no translation found for helper_summary_computer (8774832742608187072) -->
+    <skip />
     <string name="title_nearby_device_streaming" msgid="7269956847378799794">"Vumela i-<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ukwenza lesi senzo?"</string>
     <string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> icela imvume esikhundleni se-<xliff:g id="DEVICE_NAME">%2$s</xliff:g> ukusakaza ama-app nezinye izakhi zesistimu kumadivayisi aseduze"</string>
     <string name="profile_name_generic" msgid="6851028682723034988">"idivayisi"</string>
diff --git a/packages/CredentialManager/res/values-af/strings.xml b/packages/CredentialManager/res/values-af/strings.xml
index 05f04cf..0c205c3 100644
--- a/packages/CredentialManager/res/values-af/strings.xml
+++ b/packages/CredentialManager/res/values-af/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Bekyk opsies"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Gaan voort"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Aanmeldopsies"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Bekyk meer"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Vir <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Geslote wagwoordbestuurders"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Tik om te ontsluit"</string>
diff --git a/packages/CredentialManager/res/values-am/strings.xml b/packages/CredentialManager/res/values-am/strings.xml
index b093ced..6837617 100644
--- a/packages/CredentialManager/res/values-am/strings.xml
+++ b/packages/CredentialManager/res/values-am/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"áŠ áˆ›áˆ«áŒźá‰œáŠ• አሳይ"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ቀጄል"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"á‹šáˆ˜áŒá‰ąá‹« áŠ áˆ›áˆ«áŒźá‰œ"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"ተጹማáˆȘ አሳይ"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"ለ<xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"ዹተቆለፉ ዚሚሔጄር ቁልፍ áŠ áˆ”á‰°á‹łá‹łáˆȘዎቜ"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ለመክፈቔ መታ ያዔርጉ"</string>
diff --git a/packages/CredentialManager/res/values-ar/strings.xml b/packages/CredentialManager/res/values-ar/strings.xml
index 13a4de9..8e23ca0 100644
--- a/packages/CredentialManager/res/values-ar/strings.xml
+++ b/packages/CredentialManager/res/values-ar/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Űč۱۶ Ű§Ù„ŰźÙŠŰ§Ű±Ű§ŰȘ"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"مŰȘۧۚŰčŰ©"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ŰźÙŠŰ§Ű±Ű§ŰȘ ŰȘŰłŰŹÙŠÙ„ Ű§Ù„ŰŻŰźÙˆÙ„"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Űč۱۶ Ű§Ù„Ù…ŰČÙŠŰŻ"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"مŰčÙ„ÙˆÙ…Ű§ŰȘ ŰȘŰłŰŹÙŠÙ„ ŰŻŰźÙˆÙ„ \"<xliff:g id="USERNAME">%1$s</xliff:g>\""</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"ŰźŰŻÙ…Ű§ŰȘ ۄۯۧ۱۩ ÙƒÙ„Ù…Ű§ŰȘ Ű§Ù„Ù…Ű±ÙˆŰ± Ű§Ù„Ù…Ù‚ÙÙˆÙ„Ű©"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Ű§Ù†Ù‚Ű± لفŰȘŰ­ Ű§Ù„Ù‚ÙÙ„."</string>
diff --git a/packages/CredentialManager/res/values-as/strings.xml b/packages/CredentialManager/res/values-as/strings.xml
index be72bbe..ac0969c 100644
--- a/packages/CredentialManager/res/values-as/strings.xml
+++ b/packages/CredentialManager/res/values-as/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"àŠŹàŠżàŠ•àŠČ্àŠȘàŠžàŠźà§‚àŠč àŠšàŠŸàŠ“àŠ•"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"àŠ…àŠŹà§àŠŻàŠŸàŠčàŠ€ à§°àŠŸàŠ–àŠ•"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"àŠ›àŠŸàŠ‡àŠš àŠ‡àŠšà§° àŠŹàŠżàŠ•àŠČ্àŠȘ"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"àŠ…àŠ§àŠżàŠ• àŠšàŠŸàŠ“àŠ•"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>à§° àŠŹàŠŸàŠŹà§‡"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"àŠČàŠ• àŠčৈ àŠ„àŠ•àŠŸ àŠȘàŠŸàŠ›à§±à§°à§àŠĄ àŠȘà§°àŠżàŠšàŠŸàŠČàŠ•"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"àŠ†àŠšàŠČàŠ• àŠ•à§°àŠżàŠŹàŠČৈ àŠŸàŠżàŠȘàŠ•"</string>
diff --git a/packages/CredentialManager/res/values-az/strings.xml b/packages/CredentialManager/res/values-az/strings.xml
index c35f849..904c2a4 100644
--- a/packages/CredentialManager/res/values-az/strings.xml
+++ b/packages/CredentialManager/res/values-az/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Seçimlərə baxın"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Davam edin"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Giriß seçimləri"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Davamına baxın"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> üçün"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Kilidli parol menecerləri"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Kiliddən çıxarmaq üçün toxunun"</string>
diff --git a/packages/CredentialManager/res/values-b+sr+Latn/strings.xml b/packages/CredentialManager/res/values-b+sr+Latn/strings.xml
index 94eff9d..55b1189 100644
--- a/packages/CredentialManager/res/values-b+sr+Latn/strings.xml
+++ b/packages/CredentialManager/res/values-b+sr+Latn/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"PrikaĆŸi opcije"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Nastavi"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opcije za prijavljivanje"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"PrikaĆŸi još"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Za: <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"MenadĆŸeri zaključanih lozinki"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Dodirnite da biste otključali"</string>
diff --git a/packages/CredentialManager/res/values-be/strings.xml b/packages/CredentialManager/res/values-be/strings.xml
index 4972d7f..f73fb4e 100644
--- a/packages/CredentialManager/res/values-be/strings.xml
+++ b/packages/CredentialManager/res/values-be/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"ĐŸŃ€Đ°ĐłĐ»ŃĐŽĐ·Đ”Ń†ŃŒ ĐČĐ°Ń€Ń‹ŃĐœŃ‚Ń‹"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ДалДĐč"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ĐĄĐżĐŸŃĐ°Đ±Ń‹ ўĐČĐ°Ń…ĐŸĐŽŃƒ"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"ПаĐșĐ°Đ·Đ°Ń†ŃŒ Đ±ĐŸĐ»ŃŒŃˆ"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Đ”Đ»Ń ĐșĐ°Ń€Ń‹ŃŃ‚Đ°Đ»ŃŒĐœŃ–Đșа <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"ЗаблаĐșіраĐČĐ°ĐœŃ‹Ń ŃĐżĐŸŃĐ°Đ±Ń‹ ўĐČĐ°Ń…ĐŸĐŽŃƒ"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ĐĐ°Ń†Ń–ŃĐœŃ–Ń†Đ”, Đșаб разблаĐșіраĐČаць"</string>
diff --git a/packages/CredentialManager/res/values-bg/strings.xml b/packages/CredentialManager/res/values-bg/strings.xml
index ba515c0..d2e8e55 100644
--- a/packages/CredentialManager/res/values-bg/strings.xml
+++ b/packages/CredentialManager/res/values-bg/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"ĐŸŃ€Đ”ĐłĐ»Đ”ĐŽ ĐœĐ° ĐŸĐżŃ†ĐžĐžŃ‚Đ”"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ĐĐ°ĐżŃ€Đ”ĐŽ"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Опцоо за ĐČĐ»ĐžĐ·Đ°ĐœĐ” ĐČ ĐżŃ€ĐŸŃ„ĐžĐ»Đ°"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"ĐŸŃ€Đ”ĐłĐ»Đ”ĐŽ ĐœĐ° ĐŸŃ‰Đ”"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"За <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"ЗаĐșĐ»ŃŽŃ‡Đ”ĐœĐž ĐŒĐ”ĐœĐžĐŽĐ¶ŃŠŃ€Đž ĐœĐ° ĐżĐ°Ń€ĐŸĐ»Đž"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Đ”ĐŸĐșĐŸŃĐœĐ”Ń‚Đ”, за Ўа ĐŸŃ‚ĐșлючОтД"</string>
diff --git a/packages/CredentialManager/res/values-bn/strings.xml b/packages/CredentialManager/res/values-bn/strings.xml
index f2862f8..1d2afb6 100644
--- a/packages/CredentialManager/res/values-bn/strings.xml
+++ b/packages/CredentialManager/res/values-bn/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"àŠŹàŠżàŠ•àŠČ্àŠȘ àŠŠà§‡àŠ–à§àŠš"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"àŠšàŠŸàŠČàŠżàŠŻàŠŒà§‡ àŠŻàŠŸàŠš"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"àŠžàŠŸàŠ‡àŠš-àŠ‡àŠš àŠ•àŠ°àŠŸàŠ° àŠŹàŠżàŠ•àŠČ্àŠȘ"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"àŠ†àŠ°àŠ“ àŠŠà§‡àŠ–à§àŠš"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>-àŠàŠ° àŠœàŠšà§àŠŻ"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"àŠČàŠ• àŠ•àŠ°àŠŸ Password Manager"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"àŠ†àŠšàŠČàŠ• àŠ•àŠ°àŠ€à§‡ àŠŸà§àŠŻàŠŸàŠȘ àŠ•àŠ°à§àŠš"</string>
diff --git a/packages/CredentialManager/res/values-bs/strings.xml b/packages/CredentialManager/res/values-bs/strings.xml
index 165c1ce..2bbd80f 100644
--- a/packages/CredentialManager/res/values-bs/strings.xml
+++ b/packages/CredentialManager/res/values-bs/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"PrikaĆŸi opcije"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Nastavi"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opcije prijave"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Pregledajte više"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Za osobu <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Zaključani upravitelji lozinki"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Dodirnite da otključate"</string>
diff --git a/packages/CredentialManager/res/values-ca/strings.xml b/packages/CredentialManager/res/values-ca/strings.xml
index 295e916..c745ba5 100644
--- a/packages/CredentialManager/res/values-ca/strings.xml
+++ b/packages/CredentialManager/res/values-ca/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Mostra les opcions"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continua"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opcions d\'inici de sessió"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Mostra\'n més"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Per a <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Gestors de contrasenyes bloquejats"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Toca per desbloquejar"</string>
diff --git a/packages/CredentialManager/res/values-cs/strings.xml b/packages/CredentialManager/res/values-cs/strings.xml
index dbad4a5..0bedef0 100644
--- a/packages/CredentialManager/res/values-cs/strings.xml
+++ b/packages/CredentialManager/res/values-cs/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Zobrazit moĆŸnosti"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Pokračovat"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"MoĆŸnosti pƙihlašování"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Zobrazit více"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Pro uĆŸivatele <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Uzamčení správci hesel"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Klepnutím odemknete"</string>
diff --git a/packages/CredentialManager/res/values-da/strings.xml b/packages/CredentialManager/res/values-da/strings.xml
index 40761e0c..faae20b 100644
--- a/packages/CredentialManager/res/values-da/strings.xml
+++ b/packages/CredentialManager/res/values-da/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Se valgmuligheder"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Fortsæt"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Valgmuligheder for login"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Se mere"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"For <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Låste adgangskodeadministratorer"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Tryk for at låse op"</string>
diff --git a/packages/CredentialManager/res/values-de/strings.xml b/packages/CredentialManager/res/values-de/strings.xml
index 07edca5..4e76826 100644
--- a/packages/CredentialManager/res/values-de/strings.xml
+++ b/packages/CredentialManager/res/values-de/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Optionen ansehen"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Weiter"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Anmeldeoptionen"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Mehr ansehen"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Für <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Gesperrte Passwortmanager"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Zum Entsperren tippen"</string>
diff --git a/packages/CredentialManager/res/values-el/strings.xml b/packages/CredentialManager/res/values-el/strings.xml
index d7b3f98..4364d0f 100644
--- a/packages/CredentialManager/res/values-el/strings.xml
+++ b/packages/CredentialManager/res/values-el/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"ΠροβολÎź επιλογών"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Συνέχεια"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Επιλογές σύνδεσης"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"ΠροβολÎź περισσότερων"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Για τον χρÎźστη <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Κλειδωμένοι διαχειριστές κωδικών πρόσβασης"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ΠατÎźστε για ξεκλεÎŻδωμα"</string>
diff --git a/packages/CredentialManager/res/values-en-rAU/strings.xml b/packages/CredentialManager/res/values-en-rAU/strings.xml
index deb7822..34b3e94 100644
--- a/packages/CredentialManager/res/values-en-rAU/strings.xml
+++ b/packages/CredentialManager/res/values-en-rAU/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"View options"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continue"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Sign-in options"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"View more"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"For <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Locked password managers"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Tap to unlock"</string>
diff --git a/packages/CredentialManager/res/values-en-rGB/strings.xml b/packages/CredentialManager/res/values-en-rGB/strings.xml
index deb7822..34b3e94 100644
--- a/packages/CredentialManager/res/values-en-rGB/strings.xml
+++ b/packages/CredentialManager/res/values-en-rGB/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"View options"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continue"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Sign-in options"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"View more"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"For <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Locked password managers"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Tap to unlock"</string>
diff --git a/packages/CredentialManager/res/values-en-rIN/strings.xml b/packages/CredentialManager/res/values-en-rIN/strings.xml
index deb7822..34b3e94 100644
--- a/packages/CredentialManager/res/values-en-rIN/strings.xml
+++ b/packages/CredentialManager/res/values-en-rIN/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"View options"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continue"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Sign-in options"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"View more"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"For <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Locked password managers"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Tap to unlock"</string>
diff --git a/packages/CredentialManager/res/values-es-rUS/strings.xml b/packages/CredentialManager/res/values-es-rUS/strings.xml
index 93880c0..17d2e82 100644
--- a/packages/CredentialManager/res/values-es-rUS/strings.xml
+++ b/packages/CredentialManager/res/values-es-rUS/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Ver opciones"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuar"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opciones de acceso"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Ver más"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Para <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Administradores de contraseñas bloqueados"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Presiona para desbloquear"</string>
diff --git a/packages/CredentialManager/res/values-es/strings.xml b/packages/CredentialManager/res/values-es/strings.xml
index ae89976..533581d 100644
--- a/packages/CredentialManager/res/values-es/strings.xml
+++ b/packages/CredentialManager/res/values-es/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Ver opciones"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuar"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opciones de inicio de sesión"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Ver más"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Para <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Gestores de contraseñas bloqueados"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Tocar para desbloquear"</string>
diff --git a/packages/CredentialManager/res/values-et/strings.xml b/packages/CredentialManager/res/values-et/strings.xml
index 653a0ee..077ccdf 100644
--- a/packages/CredentialManager/res/values-et/strings.xml
+++ b/packages/CredentialManager/res/values-et/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Kuva valikud"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Jätka"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Sisselogimise valikud"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Kuva rohkem"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Kasutajale <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Lukustatud paroolihaldurid"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Avamiseks puudutage"</string>
diff --git a/packages/CredentialManager/res/values-eu/strings.xml b/packages/CredentialManager/res/values-eu/strings.xml
index 6e54c1d..4cd4a61 100644
--- a/packages/CredentialManager/res/values-eu/strings.xml
+++ b/packages/CredentialManager/res/values-eu/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Ikusi aukerak"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Egin aurrera"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Saioa hasteko aukerak"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Ikusi gehiago"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> erabiltzailearenak"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Blokeatutako pasahitz-kudeatzaileak"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Desblokeatzeko, sakatu hau"</string>
diff --git a/packages/CredentialManager/res/values-fa/strings.xml b/packages/CredentialManager/res/values-fa/strings.xml
index fa25fa89..2ef052f 100644
--- a/packages/CredentialManager/res/values-fa/strings.xml
+++ b/packages/CredentialManager/res/values-fa/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Ù…ŰŽŰ§Ù‡ŰŻÙ‡ ÚŻŰČینه‌Ù‡Ű§"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Ű§ŰŻŰ§Ù…Ù‡"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ÚŻŰČینه‌Ù‡Ű§ÛŒ ÙˆŰ±ÙˆŰŻ ŰšÙ‡ ŰłÛŒŰłŰȘم"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Ù…ŰŽŰ§Ù‡ŰŻÙ‡ Ù…ÙˆŰ§Ű±ŰŻ ŰšÛŒŰŽŰȘ۱"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"ŰšŰ±Ű§ÛŒ <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Ù…ŰŻÛŒŰ±Ű§Ù† ÚŻŰ°Ű±ÙˆŰ§Ú˜Ù‡ قفل‌ŰŽŰŻÙ‡"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ŰšŰ±Ű§ÛŒ ۚۧŰČ Ú©Ű±ŰŻÙ† قفل Ű¶Ű±ŰšÙ‡ ŰšŰČÙ†ÛŒŰŻ"</string>
diff --git a/packages/CredentialManager/res/values-fi/strings.xml b/packages/CredentialManager/res/values-fi/strings.xml
index 384ad56..f034046 100644
--- a/packages/CredentialManager/res/values-fi/strings.xml
+++ b/packages/CredentialManager/res/values-fi/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Katseluasetukset"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Jatka"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Kirjautumisvaihtoehdot"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Näytä lisää"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Käyttäjä: <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Lukitut salasanojen ylläpitotyökalut"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Avaa napauttamalla"</string>
diff --git a/packages/CredentialManager/res/values-fr-rCA/strings.xml b/packages/CredentialManager/res/values-fr-rCA/strings.xml
index 7a7fd52..7b8f2a5 100644
--- a/packages/CredentialManager/res/values-fr-rCA/strings.xml
+++ b/packages/CredentialManager/res/values-fr-rCA/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Afficher les options"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuer"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Options de connexion"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Afficher plus"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Pour <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Gestionnaires de mots de passe verrouillés"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Touchez pour déverrouiller"</string>
diff --git a/packages/CredentialManager/res/values-fr/strings.xml b/packages/CredentialManager/res/values-fr/strings.xml
index f890e73..ce487a9 100644
--- a/packages/CredentialManager/res/values-fr/strings.xml
+++ b/packages/CredentialManager/res/values-fr/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Voir les options"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuer"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Options de connexion"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Afficher plus"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Pour <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Gestionnaires de mots de passe verrouillés"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Appuyer pour déverrouiller"</string>
diff --git a/packages/CredentialManager/res/values-gl/strings.xml b/packages/CredentialManager/res/values-gl/strings.xml
index 0e54a27..24e29d5 100644
--- a/packages/CredentialManager/res/values-gl/strings.xml
+++ b/packages/CredentialManager/res/values-gl/strings.xml
@@ -10,7 +10,7 @@
     <string name="content_description_hide_password" msgid="6841375971631767996">"Ocultar contrasinal"</string>
     <string name="passkey_creation_intro_title" msgid="4251037543787718844">"Máis protección coas claves de acceso"</string>
     <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Cunha clave de acceso non é necesario que crees ou lembres contrasinais complexos"</string>
-    <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"As claves de acceso son claves dixitais encriptadas que creas usando a impresión dixital, o recoñecemento facial ou un bloqueo de pantalla"</string>
+    <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"As claves de acceso son claves dixitais encriptadas que creas usando a túa impresión dixital, a túa cara ou o teu bloqueo de pantalla"</string>
     <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"As claves de acceso gárdanse nun xestor de contrasinais para que poidas iniciar sesión noutros dispositivos"</string>
     <string name="more_about_passkeys_title" msgid="7797903098728837795">"Máis información sobre as claves de acceso"</string>
     <string name="passwordless_technology_title" msgid="2497513482056606668">"Tecnoloxía sen contrasinais"</string>
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Ver opcións"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuar"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opcións de inicio de sesión"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Ver máis"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Para <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Xestores de contrasinais bloqueados"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Toca para desbloquear"</string>
diff --git a/packages/CredentialManager/res/values-gu/strings.xml b/packages/CredentialManager/res/values-gu/strings.xml
index b90d7a0..1ae3df2 100644
--- a/packages/CredentialManager/res/values-gu/strings.xml
+++ b/packages/CredentialManager/res/values-gu/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"àȘ”્àȘŻà«‚àȘšàȘŸ àȘ”àȘżàȘ•àȘČ્àȘȘો"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"àȘšàȘŸàȘČુ àȘ°àȘŸàȘ–à«‹"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"àȘžàȘŸàȘ‡àȘš-àȘ‡àȘšàȘšàȘŸ àȘ”àȘżàȘ•àȘČ્àȘȘો"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"àȘ”àȘ§à« àȘœà«àȘ“"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> àȘźàȘŸàȘŸà«‡"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"àȘČૉàȘ• àȘ•àȘ°à«‡àȘČàȘŸ àȘȘàȘŸàȘžàȘ”àȘ°à«àȘĄ àȘźà«‡àȘšà«‡àȘœàȘ°"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"àȘ…àȘšàȘČૉàȘ• àȘ•àȘ°àȘ”àȘŸ àȘźàȘŸàȘŸà«‡ àȘŸà«…àȘȘ àȘ•àȘ°à«‹"</string>
diff --git a/packages/CredentialManager/res/values-hi/strings.xml b/packages/CredentialManager/res/values-hi/strings.xml
index 8a6eab3..5dc1f0d 100644
--- a/packages/CredentialManager/res/values-hi/strings.xml
+++ b/packages/CredentialManager/res/values-hi/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"à€”à€żà€•à€Čà„à€Ș à€Šà„‡à€–à„‡à€‚"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"à€œà€Ÿà€°à„€ à€°à€–à„‡à€‚"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"à€žà€Ÿà€‡à€š à€‡à€š à€•à€°à€šà„‡ à€•à„‡ à€”à€żà€•à€Čà„à€Ș"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"à€œà€Œà„à€Żà€Ÿà€Šà€Ÿ à€Šà„‡à€–à„‡à€‚"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> à€•à„‡ à€Čà€żà€"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"à€Čà„‰à€• à€•à€żà€ à€—à€ à€Șà€Ÿà€žà€”à€°à„à€Ą à€źà„ˆà€šà„‡à€œà€°"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"à€…à€šà€Čà„‰à€• à€•à€°à€šà„‡ à€•à„‡ à€Čà€żà€ à€Ÿà„ˆà€Ș à€•à€°à„‡à€‚"</string>
diff --git a/packages/CredentialManager/res/values-hr/strings.xml b/packages/CredentialManager/res/values-hr/strings.xml
index 140a099..f1be424 100644
--- a/packages/CredentialManager/res/values-hr/strings.xml
+++ b/packages/CredentialManager/res/values-hr/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"PrikaĆŸi opcije"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Nastavi"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opcije prijave"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"PrikaĆŸi više"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Za korisnika <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Upravitelji zaključanih zaporki"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Dodirnite za otključavanje"</string>
diff --git a/packages/CredentialManager/res/values-hu/strings.xml b/packages/CredentialManager/res/values-hu/strings.xml
index f07252a..4e851c9 100644
--- a/packages/CredentialManager/res/values-hu/strings.xml
+++ b/packages/CredentialManager/res/values-hu/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"LehetƑségek megtekintése"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Folytatás"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Bejelentkezési beállítások"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Továbbiak megjelenítése"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Zárolt jelszókezelƑk"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Koppintson a feloldáshoz"</string>
diff --git a/packages/CredentialManager/res/values-hy/strings.xml b/packages/CredentialManager/res/values-hy/strings.xml
index 2b666c4..f36ea9e 100644
--- a/packages/CredentialManager/res/values-hy/strings.xml
+++ b/packages/CredentialManager/res/values-hy/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"ÔŽŐ«ŐżŐ„ŐŹ ŐżŐĄÖ€ŐąŐ„Ö€ŐĄŐŻŐ¶Ő„Ö€Őš"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Ő‡ŐĄÖ€ŐžÖ‚Ő¶ŐĄŐŻŐ„ŐŹ"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Ő„ŐžÖ‚ŐżÖ„Ő« ŐżŐĄÖ€ŐąŐ„Ö€ŐĄŐŻŐ¶Ő„Ö€"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"ÔŽŐ«ŐżŐ„ŐŹ ŐĄŐŸŐ„ŐŹŐ«Ő¶"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>-Ő« հածար"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"ÔłŐĄŐČŐżŐ¶ŐĄŐąŐĄŐŒŐ„Ö€Ő« ŐŻŐžŐČŐșŐŸŐĄŐź ŐŻŐĄŐŒŐĄŐŸŐĄÖ€Ő«ŐčŐ¶Ő„Ö€"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ՀŐșŐ„Ö„ ŐĄŐșŐĄŐŻŐžŐČŐșŐ„ŐŹŐžÖ‚ հածար"</string>
diff --git a/packages/CredentialManager/res/values-in/strings.xml b/packages/CredentialManager/res/values-in/strings.xml
index 608c1ac..f9a6176 100644
--- a/packages/CredentialManager/res/values-in/strings.xml
+++ b/packages/CredentialManager/res/values-in/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Lihat opsi"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Lanjutkan"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opsi login"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Tampilkan lainnya"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Untuk <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Pengelola sandi terkunci"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Ketuk untuk membuka kunci"</string>
diff --git a/packages/CredentialManager/res/values-is/strings.xml b/packages/CredentialManager/res/values-is/strings.xml
index 4f7fa4a..e2aa5c0 100644
--- a/packages/CredentialManager/res/values-is/strings.xml
+++ b/packages/CredentialManager/res/values-is/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Skoða valkosti"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Áfram"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Innskráningarkostir"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Nánar"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Fyrir: <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Læst aðgangsorðastjórnun"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Ýttu til að opna"</string>
diff --git a/packages/CredentialManager/res/values-it/strings.xml b/packages/CredentialManager/res/values-it/strings.xml
index b971b7b..8a0b484 100644
--- a/packages/CredentialManager/res/values-it/strings.xml
+++ b/packages/CredentialManager/res/values-it/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Visualizza opzioni"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continua"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opzioni di accesso"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Mostra altro"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Per <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Gestori delle password bloccati"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Tocca per sbloccare"</string>
diff --git a/packages/CredentialManager/res/values-iw/strings.xml b/packages/CredentialManager/res/values-iw/strings.xml
index ad7e712..47af8a7 100644
--- a/packages/CredentialManager/res/values-iw/strings.xml
+++ b/packages/CredentialManager/res/values-iw/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Ś”ŚŠŚ’ŚȘ Ś”ŚŚ€Ś©ŚšŚ•Ś™Ś•ŚȘ"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Ś”ŚžŚ©Śš"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ŚŚ€Ś©ŚšŚ•Ś™Ś•ŚȘ Ś›Ś Ś™ŚĄŚ” ŚœŚ—Ś©Ś‘Ś•ŚŸ"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"ŚąŚ•Ś“ ŚžŚ™Ś“Śą"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"ŚąŚ‘Ś•Śš <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"ŚžŚ Ś”ŚœŚ™ ŚĄŚ™ŚĄŚžŚŚ•ŚȘ Ś ŚąŚ•ŚœŚ™Ś"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ڙک ŚœŚ”Ś§Ś™Ś© ڛړڙ ŚœŚ‘Ś˜Śœ ڐŚȘ Ś”Ś ŚąŚ™ŚœŚ”"</string>
diff --git a/packages/CredentialManager/res/values-ja/strings.xml b/packages/CredentialManager/res/values-ja/strings.xml
index 4adabd4..166aa73 100644
--- a/packages/CredentialManager/res/values-ja/strings.xml
+++ b/packages/CredentialManager/res/values-ja/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"ă‚Șăƒ—ă‚·ăƒ§ăƒłă‚’èĄšç€ș"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ç¶šèĄŒ"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ăƒ­ă‚°ă‚€ăƒł ă‚Șăƒ—ă‚·ăƒ§ăƒł"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"ă•ă‚‰ă«èĄšç€ș"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> 甹"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"パă‚čăƒŻăƒŒăƒ‰ ăƒžăƒăƒŒă‚žăƒŁăƒŒ ロック侭"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ă‚żăƒƒăƒ—ă—ăŠăƒ­ăƒƒă‚Żè§Łé™€"</string>
diff --git a/packages/CredentialManager/res/values-ka/strings.xml b/packages/CredentialManager/res/values-ka/strings.xml
index adba0c0..fbd70e4 100644
--- a/packages/CredentialManager/res/values-ka/strings.xml
+++ b/packages/CredentialManager/res/values-ka/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"პარამეჱრების ნაჼვა"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"გაგრძელება"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"სისჱემაჹი ჹესვლის ვარიანჱები"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"მეჱის ნაჼვა"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>-ისთვის"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"áƒ©áƒáƒ™áƒ”áƒąáƒ˜áƒšáƒ˜ პაროლის მმართველები"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ჹეეჼეთ განსაბლოკად"</string>
diff --git a/packages/CredentialManager/res/values-kk/strings.xml b/packages/CredentialManager/res/values-kk/strings.xml
index 09f7b3d..18ac0eb 100644
--- a/packages/CredentialManager/res/values-kk/strings.xml
+++ b/packages/CredentialManager/res/values-kk/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"ĐžĐżŃ†ĐžŃĐ»Đ°Ń€ĐŽŃ‹ ĐșÓ©Ń€Ńƒ"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Đ–Đ°Đ»Ò“Đ°ŃŃ‚Ń‹Ń€Ńƒ"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Кіру ĐŸĐżŃ†ĐžŃĐ»Đ°Ń€Ń‹"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"ĐąĐ°Ò“Ń‹ ĐșÓ©Ń€Ńƒ"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> ÒŻŃˆŃ–Đœ"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"ÒšÒ±Đ»Ń‹ĐżŃ‚Đ°Đ»Ò“Đ°Đœ Ò›Ò±ĐżĐžŃ сөз ĐŒĐ”ĐœĐ”ĐŽĐ¶Đ”Ń€Đ»Đ”Ń€Ń–"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ÒšÒ±Đ»Ń‹ĐżŃ‚Ń‹ ашу ÒŻŃˆŃ–Đœ Ń‚ÒŻŃ€Ń‚Ń–ÒŁŃ–Đ·."</string>
diff --git a/packages/CredentialManager/res/values-km/strings.xml b/packages/CredentialManager/res/values-km/strings.xml
index b5b1e17..b402e8c 100644
--- a/packages/CredentialManager/res/values-km/strings.xml
+++ b/packages/CredentialManager/res/values-km/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"មសលជម្រសស"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"បន្ត"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ជម្រសស​ចឌលគណនឞ"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"មសល​ច្រសនទៀត"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"សម្រាប់ <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"កម្មវិធឞគ្រប់គ្រងពាក្យសម្ងាត់ដែលបានចាក់សោ"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ចុចដសម្បឞដោះសោ"</string>
diff --git a/packages/CredentialManager/res/values-kn/strings.xml b/packages/CredentialManager/res/values-kn/strings.xml
index 9fb614e..99b4f45 100644
--- a/packages/CredentialManager/res/values-kn/strings.xml
+++ b/packages/CredentialManager/res/values-kn/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"àȆàČŻàłàČ•àł†àȗàČłàČšàłàČšàł àČ”àł€àČ•àłàČ·àČżàČžàČż"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"àČźàłàȂàČŠàłàČ”àȰàČżàČžàČż"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"àČžàłˆàČšàł àȇàČšàł àȆàČŻàłàČ•àł†àȗàČłàł"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"àȇàČšàłàČšàČ·àłàČŸàł àČ”àł€àČ•àłàČ·àČżàČžàČż"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> àȗàČŸàȗàČż"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"àČȘàČŸàČžàł‌àČ”àČ°àłàČĄàł àČšàČżàČ°àłàČ”àČŸàČčàȕàȰàČšàłàČšàł àČČàČŸàČ•àł àČźàČŸàČĄàČČàČŸàȗàČżàČŠàł†"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"àȅàČšàł‌àČČàČŸàČ•àł àČźàČŸàČĄàČČàł àČŸàłàČŻàČŸàČȘàł àČźàČŸàČĄàČż"</string>
diff --git a/packages/CredentialManager/res/values-ko/strings.xml b/packages/CredentialManager/res/values-ko/strings.xml
index 092bf89..929944c 100644
--- a/packages/CredentialManager/res/values-ko/strings.xml
+++ b/packages/CredentialManager/res/values-ko/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"옔션 ëłŽêž°"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"êł„ì†"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ëĄœê·žìž 옔션"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"ë”ëłŽêž°"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>님의 ëĄœê·žìž ì •ëłŽ"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"잠ꞎ ëč„ë°€ëȈ혞 êŽ€ëŠŹìž"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"íƒ­í•˜ì—Ź 잠ꞈ 핎제"</string>
diff --git a/packages/CredentialManager/res/values-ky/strings.xml b/packages/CredentialManager/res/values-ky/strings.xml
index e055ea3..f402c6c 100644
--- a/packages/CredentialManager/res/values-ky/strings.xml
+++ b/packages/CredentialManager/res/values-ky/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"ĐŸĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ»Đ”Ń€ĐŽĐž ĐșÓ©Ń€ÒŻÒŻ"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ĐŁĐ»Đ°ĐœŃ‚ŃƒŃƒ"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"АĐșĐșĐ°ŃƒĐœŃ‚Đșа ĐșĐžŃ€ÒŻÒŻ ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ»Đ”Ń€Đž"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Дагы ĐșÓ©Ń€ÒŻÒŻ"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> ÒŻŃ‡ÒŻĐœ"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"ĐšŃƒĐ»ĐżŃƒĐ»Đ°ĐœĐłĐ°Đœ ŃŃ‹Ń€ŃÓ©Đ·ĐŽÓ©Ń€ĐŽÒŻ башĐșаргычтар"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ĐšŃƒĐ»ĐżŃƒŃŃƒĐœ ачуу ÒŻŃ‡ÒŻĐœ Ń‚Đ°ĐżŃ‚Đ°ÒŁŃ‹Đ·"</string>
diff --git a/packages/CredentialManager/res/values-lo/strings.xml b/packages/CredentialManager/res/values-lo/strings.xml
index 28e80fa..be282d6 100644
--- a/packages/CredentialManager/res/values-lo/strings.xml
+++ b/packages/CredentialManager/res/values-lo/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"ເàșšàșŽà»ˆàș‡àș•àș»àș§à»€àș„àș·àș­àș"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"àșȘàș·àșšàș•ໍ່"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"àș•àș»àș§à»€àș„àș·àș­àșàșàșČàș™à»€àș‚àș»à»‰àșČàșȘàșč່àș„àș°àșšàș»àșš"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"ເàșšàșŽà»ˆàș‡à»€àșžàș”່àșĄà»€àș•àș”àșĄ"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"àșȘàșłàș„àș±àșš <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"àș•àș»àș§àșˆàș±àș”àșàșČàș™àș„àș°àș«àș±àș”àșœà»ˆàșČàș™àș—àș”່àș„àș±àș­àșà»„àș§à»‰"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ແàș•àș°à»€àșžàș·à»ˆàș­àș›àș»àș”àș„àș±àș­àș"</string>
diff --git a/packages/CredentialManager/res/values-lt/strings.xml b/packages/CredentialManager/res/values-lt/strings.xml
index ce06610..d9ae3a0 100644
--- a/packages/CredentialManager/res/values-lt/strings.xml
+++ b/packages/CredentialManager/res/values-lt/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"PerĆŸiĆ«rėti parinktis"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Tęsti"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Prisijungimo parinktys"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"PerĆŸiĆ«rėti daugiau"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Skirta <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"UĆŸrakintos slaptaĆŸodĆŸiĆł tvarkyklės"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Palieskite, kad atrakintumėte"</string>
diff --git a/packages/CredentialManager/res/values-lv/strings.xml b/packages/CredentialManager/res/values-lv/strings.xml
index a2dd6f5..16c0c41 100644
--- a/packages/CredentialManager/res/values-lv/strings.xml
+++ b/packages/CredentialManager/res/values-lv/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Skatīt opcijas"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Turpināt"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"PierakstÄ«šanās opcijas"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Skatīt vairāk"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Lietotājam <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"ParoÄŒu pārvaldnieki, kuros nepieciešams autentificēties"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Pieskarieties, lai atbloķētu"</string>
diff --git a/packages/CredentialManager/res/values-mk/strings.xml b/packages/CredentialManager/res/values-mk/strings.xml
index 0f40d49..c449b90 100644
--- a/packages/CredentialManager/res/values-mk/strings.xml
+++ b/packages/CredentialManager/res/values-mk/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"ПроĐșажО гО ĐŸĐżŃ†ĐžĐžŃ‚Đ”"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ĐŸŃ€ĐŸĐŽĐŸĐ»Đ¶Đž"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Опцоо за ĐœĐ°Ń˜Đ°ĐČуĐČањД"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"ĐŸŃ€Đ”ĐłĐ»Đ”ĐŽĐ°Ń˜Ń‚Đ” ĐżĐŸĐČĐ”ŃœĐ”"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"За <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"ЗаĐșĐ»ŃƒŃ‡Đ”ĐœĐž упраĐČĐœĐžŃ†Đž ŃĐŸ Đ»ĐŸĐ·ĐžĐœĐșĐž"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Đ”ĐŸĐżŃ€Đ”Ń‚Đ” за Ўа ĐŸŃ‚ĐșĐ»ŃƒŃ‡ĐžŃ‚Đ”"</string>
diff --git a/packages/CredentialManager/res/values-ml/strings.xml b/packages/CredentialManager/res/values-ml/strings.xml
index d5e33ab..8cdf818 100644
--- a/packages/CredentialManager/res/values-ml/strings.xml
+++ b/packages/CredentialManager/res/values-ml/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"àŽ“àŽȘà”àŽ·àŽšà”àŽ•à”Ÿ àŽ•àŽŸàŽŁà”àŽ•"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"àŽ€à”àŽŸàŽ°à”àŽ•"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"àŽžà”ˆà”» àŽ‡à”» àŽ“àŽȘà”àŽ·àŽšà”àŽ•à”Ÿ"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"àŽ•à”‚àŽŸà”àŽ€à”œ àŽ•àŽŸàŽŁà”àŽ•"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> àŽŽàŽšà”àŽšàŽŻàŽŸà”ŸàŽ•à”àŽ•à”"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"àŽČà”‹àŽ•à”àŽ•à” àŽšà”†àŽŻà”‌àŽ€ àŽȘàŽŸàŽžà”‌àŽ”à”‡àŽĄà” àŽžà”ˆà”» àŽ‡à”» àŽźàŽŸàŽšà”‡àŽœà”ŒàŽźàŽŸà”Œ"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"àŽ…à”șàŽČà”‹àŽ•à”àŽ•à” àŽšà”†àŽŻà”àŽŻàŽŸà”» àŽŸàŽŸàŽȘà”àŽȘà” àŽšà”†àŽŻà”àŽŻà”àŽ•"</string>
diff --git a/packages/CredentialManager/res/values-mn/strings.xml b/packages/CredentialManager/res/values-mn/strings.xml
index 4491821..00289b6 100644
--- a/packages/CredentialManager/res/values-mn/strings.xml
+++ b/packages/CredentialManager/res/values-mn/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"ĐĄĐŸĐœĐłĐŸĐ»Ń‚ харах"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ÒźŃ€ĐłŃĐ»Đ¶Đ»ÒŻÒŻĐ»ŃŃ…"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"НэĐČтрэх ŃĐŸĐœĐłĐŸĐ»Ń‚"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Đ”ŃĐ»ĐłŃŃ€ŃĐœĐłÒŻĐč ÒŻĐ·ŃŃ…"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>-ĐŽ"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"ĐąÒŻĐłĐ¶ŃŃŃ‚ŃĐč ĐœŃƒŃƒŃ† ÒŻĐłĐœĐžĐč ĐŒĐ”ĐœĐ”Đ¶Đ”Ń€ÒŻÒŻĐŽ"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ĐąÒŻĐłĐ¶ŃŃĐł таĐčĐ»Đ°Ń…Ń‹Đœ Ń‚ŃƒĐ»ĐŽ Ń‚ĐŸĐČŃˆĐžĐœĐŸ уу"</string>
diff --git a/packages/CredentialManager/res/values-mr/strings.xml b/packages/CredentialManager/res/values-mr/strings.xml
index 6f4f5de..11973ba 100644
--- a/packages/CredentialManager/res/values-mr/strings.xml
+++ b/packages/CredentialManager/res/values-mr/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"à€Șà€°à„à€Żà€Ÿà€Ż à€Șà€čà€Ÿ"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"à€Șà„à€ąà„‡ à€žà„à€°à„‚ à€ à„‡à€”à€Ÿ"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"à€žà€Ÿà€‡à€š à€‡à€š à€Șà€°à„à€Żà€Ÿà€Ż"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"à€†à€Łà€–à„€ à€Șà€čà€Ÿ"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> à€žà€Ÿà€ à„€"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"à€Čà„‰à€• à€•à„‡à€Čà„‡à€Čà„‡ à€Șà€Ÿà€žà€”à€°à„à€Ą à€”à„à€Żà€”à€žà„à€„à€Ÿà€Șà€•"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"à€…à€šà€Čà„‰à€• à€•à€°à€Łà„à€Żà€Ÿà€žà€Ÿà€ à„€ à€Ÿà„…à€Ș à€•à€°à€Ÿ"</string>
diff --git a/packages/CredentialManager/res/values-ms/strings.xml b/packages/CredentialManager/res/values-ms/strings.xml
index 79390ba..cf9b13a 100644
--- a/packages/CredentialManager/res/values-ms/strings.xml
+++ b/packages/CredentialManager/res/values-ms/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Lihat pilihan"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Teruskan"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Pilihan log masuk"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Lihat lagi"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Untuk <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Password Manager dikunci"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Ketik untuk membuka kunci"</string>
diff --git a/packages/CredentialManager/res/values-my/strings.xml b/packages/CredentialManager/res/values-my/strings.xml
index 321b7e9..8d556a4 100644
--- a/packages/CredentialManager/res/values-my/strings.xml
+++ b/packages/CredentialManager/res/values-my/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"á€›á€œá€±á€žá€…á€›á€Źá€™á€»á€Źá€žá€€á€­á€Ż ကဌည့á€șရနá€ș"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ရဟေ့ဆကá€șရနá€ș"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"လကá€șမဟတá€șထိုှဝငá€șရနá€ș နညá€șှလမá€șသမျဏသ"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"á€•á€­á€Żá€€á€Œá€Šá€·á€șရနá€ș"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> á€Ąá€á€œá€€á€ș"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"á€œá€±á€Źá€·á€á€șချထဏသသည့á€ș á€…á€€á€Źá€žá€á€Ÿá€€á€șမနá€șနေဂျဏမျဏသ"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ဖလင့á€șရနá€ș တို့ပါ"</string>
diff --git a/packages/CredentialManager/res/values-nb/strings.xml b/packages/CredentialManager/res/values-nb/strings.xml
index 4d558d8..0dc750e 100644
--- a/packages/CredentialManager/res/values-nb/strings.xml
+++ b/packages/CredentialManager/res/values-nb/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Se alternativene"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Fortsett"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Påloggingsalternativer"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Se mer"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"For <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Låste løsninger for passordlagring"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Trykk for å låse opp"</string>
diff --git a/packages/CredentialManager/res/values-ne/strings.xml b/packages/CredentialManager/res/values-ne/strings.xml
index 3213e5d..a770821 100644
--- a/packages/CredentialManager/res/values-ne/strings.xml
+++ b/packages/CredentialManager/res/values-ne/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"à€”à€żà€•à€Čà„à€Șà€čà€°à„‚ à€čà„‡à€°à„à€šà„à€čà„‹à€žà„"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"à€œà€Ÿà€°à„€ à€°à€Ÿà€–à„à€šà„à€čà„‹à€žà„"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"à€žà€Ÿà€‡à€š‍ à€‡à€šà€žà€źà„à€Źà€šà„à€§à„€ à€”à€żà€•à€Čà„à€Șà€čà€°à„‚"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"à€„à€Ș à€čà„‡à€°à„à€šà„à€čà„‹à€žà„"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> à€•à€Ÿ à€Čà€Ÿà€—à€ż"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"à€Čà€• à€—à€°à€żà€à€•à€Ÿ à€Șà€Ÿà€žà€”à€°à„à€Ą à€źà„à€Żà€Ÿà€šà„‡à€œà€°à€čà€°à„‚"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"à€…à€šà€Čà€• à€—à€°à„à€š à€Ÿà„à€Żà€Ÿà€Ș à€—à€°à„à€šà„à€čà„‹à€žà„"</string>
diff --git a/packages/CredentialManager/res/values-nl/strings.xml b/packages/CredentialManager/res/values-nl/strings.xml
index d0963d7..b3497ee 100644
--- a/packages/CredentialManager/res/values-nl/strings.xml
+++ b/packages/CredentialManager/res/values-nl/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Opties bekijken"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Doorgaan"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opties voor inloggen"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Meer bekijken"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Voor <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Vergrendelde wachtwoordmanagers"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Tik om te ontgrendelen"</string>
diff --git a/packages/CredentialManager/res/values-or/strings.xml b/packages/CredentialManager/res/values-or/strings.xml
index cdd229f..bbe2aa6 100644
--- a/packages/CredentialManager/res/values-or/strings.xml
+++ b/packages/CredentialManager/res/values-or/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"àŹŹàŹżàŹ•àŹłà­àŹȘàŹ—à­àŹĄàŹŒàŹżàŹ•à­ àŹŠà­‡àŹ–àŹšà­àŹ€à­"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"àŹœàŹŸàŹ°àŹż àŹ°àŹ–àŹšà­àŹ€à­"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"àŹžàŹŸàŹ‡àŹš àŹ‡àŹš àŹŹàŹżàŹ•àŹłà­àŹȘàŹ—à­àŹĄàŹŒàŹżàŹ•"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"àŹ…àŹ§àŹżàŹ• àŹŠà­‡àŹ–àŹšà­àŹ€à­"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>àŹ°à­‡"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"àŹČàŹ• àŹ„àŹżàŹŹàŹŸ Password Manager"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"àŹ…àŹšàŹČàŹ• àŹ•àŹ°àŹżàŹŹàŹŸàŹ•à­ àŹŸàŹŸàŹȘ àŹ•àŹ°àŹšà­àŹ€à­"</string>
diff --git a/packages/CredentialManager/res/values-pa/strings.xml b/packages/CredentialManager/res/values-pa/strings.xml
index ed2c40c..da24768 100644
--- a/packages/CredentialManager/res/values-pa/strings.xml
+++ b/packages/CredentialManager/res/values-pa/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"àš”àšżàš•àšČàšȘ àšŠà©‡àš–à©‹"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"àšœàšŸàš°à©€ àš°à©±àš–à©‹"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"àšžàšŸàšˆàšš-àš‡àšš àš•àš°àšš àšŠà©‡ àš”àšżàš•àšČàšȘ"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"àščà©‹àš° àšŠà©‡àš–à©‹"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> àšČàšˆ"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"àšČàšŸàš• àš•à©€àš€à©‡ àšȘàšŸàšžàš”àš°àšĄ àšȘà©àš°àšŹà©°àš§àš•"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"àš…àšŁàšČàšŸàš• àš•àš°àšš àšČàšˆ àšŸà©ˆàšȘ àš•àš°à©‹"</string>
diff --git a/packages/CredentialManager/res/values-pl/strings.xml b/packages/CredentialManager/res/values-pl/strings.xml
index 68c8500..f5fffb3 100644
--- a/packages/CredentialManager/res/values-pl/strings.xml
+++ b/packages/CredentialManager/res/values-pl/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Wyƛwietl opcje"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Dalej"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opcje logowania"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Wyƛwietl więcej"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Zablokowane menedĆŒery haseƂ"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Kliknij, aby odblokować"</string>
diff --git a/packages/CredentialManager/res/values-pt-rBR/strings.xml b/packages/CredentialManager/res/values-pt-rBR/strings.xml
index 67955fe..5d23fed 100644
--- a/packages/CredentialManager/res/values-pt-rBR/strings.xml
+++ b/packages/CredentialManager/res/values-pt-rBR/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Conferir opções"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuar"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opções de login"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Mostrar mais"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Para <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Gerenciadores de senha bloqueados"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Toque para desbloquear"</string>
diff --git a/packages/CredentialManager/res/values-pt-rPT/strings.xml b/packages/CredentialManager/res/values-pt-rPT/strings.xml
index 163134c..34a9d14 100644
--- a/packages/CredentialManager/res/values-pt-rPT/strings.xml
+++ b/packages/CredentialManager/res/values-pt-rPT/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Ver opções"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuar"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opções de início de sessão"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Ver mais"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Para <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Gestores de palavras-passe bloqueados"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Tocar para desbloquear"</string>
diff --git a/packages/CredentialManager/res/values-pt/strings.xml b/packages/CredentialManager/res/values-pt/strings.xml
index 67955fe..5d23fed 100644
--- a/packages/CredentialManager/res/values-pt/strings.xml
+++ b/packages/CredentialManager/res/values-pt/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Conferir opções"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuar"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opções de login"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Mostrar mais"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Para <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Gerenciadores de senha bloqueados"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Toque para desbloquear"</string>
diff --git a/packages/CredentialManager/res/values-ro/strings.xml b/packages/CredentialManager/res/values-ro/strings.xml
index d9aa106..9461e3c 100644
--- a/packages/CredentialManager/res/values-ro/strings.xml
+++ b/packages/CredentialManager/res/values-ro/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Afișează opțiunile"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuă"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opțiuni de conectare"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Afișează mai multe"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Pentru <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Manageri de parole blocate"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Atinge pentru a debloca"</string>
diff --git a/packages/CredentialManager/res/values-ru/strings.xml b/packages/CredentialManager/res/values-ru/strings.xml
index 008cecf..8b9e23c 100644
--- a/packages/CredentialManager/res/values-ru/strings.xml
+++ b/packages/CredentialManager/res/values-ru/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"ĐŸĐŸĐșĐ°Đ·Đ°Ń‚ŃŒ ĐČĐ°Ń€ĐžĐ°ĐœŃ‚Ń‹"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ĐŸŃ€ĐŸĐŽĐŸĐ»Đ¶ĐžŃ‚ŃŒ"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Đ’Đ°Ń€ĐžĐ°ĐœŃ‚Ń‹ ĐČŃ…ĐŸĐŽĐ°"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Ещё"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Đ”Đ»Ń ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»Ń <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Đ—Đ°Đ±Đ»ĐŸĐșĐžŃ€ĐŸĐČĐ°ĐœĐœŃ‹Đ” ĐŒĐ”ĐœĐ”ĐŽĐ¶Đ”Ń€Ń‹ ĐżĐ°Ń€ĐŸĐ»Đ”Đč"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ĐĐ°Đ¶ĐŒĐžŃ‚Đ” ĐŽĐ»Ń Ń€Đ°Đ·Đ±Đ»ĐŸĐșĐžŃ€ĐŸĐČĐșĐž"</string>
diff --git a/packages/CredentialManager/res/values-si/strings.xml b/packages/CredentialManager/res/values-si/strings.xml
index 203d0f6..63992de 100644
--- a/packages/CredentialManager/res/values-si/strings.xml
+++ b/packages/CredentialManager/res/values-si/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"විකග්ඎ බගන්න"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"à¶‰à¶Żà·’à¶»à·’à¶șà¶§ à¶șන්න"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ඎුරනà¶ș වීඞේ විකග්ඎ"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"වැඩිà¶șෙන් à¶Żà¶šà·’à¶±à·Šà¶±"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> à·ƒà¶łà·„à·"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"අගුළු à¶Żà·à¶žà·– à¶žà·”à¶»à¶Žà¶Ż කළඞනාකරුවන්"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"අගුළු හැරීඞට තට්ටු කරන්න"</string>
diff --git a/packages/CredentialManager/res/values-sk/strings.xml b/packages/CredentialManager/res/values-sk/strings.xml
index ef3b958..e89b6c32 100644
--- a/packages/CredentialManager/res/values-sk/strings.xml
+++ b/packages/CredentialManager/res/values-sk/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"ZobraziĆ„ moĆŸnosti"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"PokračovaĆ„"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"MoĆŸnosti prihlásenia"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"ZobraziƄ viac"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Pre pouĆŸívateÄŸa <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Správcovia uzamknutých hesiel"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"OdomknúĆ„ klepnutím"</string>
diff --git a/packages/CredentialManager/res/values-sl/strings.xml b/packages/CredentialManager/res/values-sl/strings.xml
index 8582dab..1a95c14 100644
--- a/packages/CredentialManager/res/values-sl/strings.xml
+++ b/packages/CredentialManager/res/values-sl/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Prikaz moĆŸnosti"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Naprej"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"MoĆŸnosti prijave"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"PrikaĆŸi več"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Za uporabnika <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Zaklenjeni upravitelji gesel"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Dotaknite se, da odklenete"</string>
diff --git a/packages/CredentialManager/res/values-sq/strings.xml b/packages/CredentialManager/res/values-sq/strings.xml
index a3e2c0d..adaf35e 100644
--- a/packages/CredentialManager/res/values-sq/strings.xml
+++ b/packages/CredentialManager/res/values-sq/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Shiko opsionet"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Vazhdo"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opsionet e identifikimit"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Shiko më shumë"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Për <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Menaxherët e fjalëkalimeve të kyçura"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Trokit për të shkyçur"</string>
diff --git a/packages/CredentialManager/res/values-sr/strings.xml b/packages/CredentialManager/res/values-sr/strings.xml
index fabf1fd..89c1a40 100644
--- a/packages/CredentialManager/res/values-sr/strings.xml
+++ b/packages/CredentialManager/res/values-sr/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"ПроĐșажО ĐŸĐżŃ†ĐžŃ˜Đ”"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"НастаĐČĐž"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ĐžĐżŃ†ĐžŃ˜Đ” за пројаĐČљоĐČањД"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"ПроĐșажО Ń˜ĐŸŃˆ"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"За: <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"ĐœĐ”ĐœĐ°ŃŸĐ”Ń€Đž заĐșŃ™ŃƒŃ‡Đ°ĐœĐžŃ… Đ»ĐŸĐ·ĐžĐœĐșĐž"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Đ”ĐŸĐŽĐžŃ€ĐœĐžŃ‚Đ” Ўа бОстД ĐŸŃ‚ĐșŃ™ŃƒŃ‡Đ°Đ»Đž"</string>
diff --git a/packages/CredentialManager/res/values-sv/strings.xml b/packages/CredentialManager/res/values-sv/strings.xml
index 80c6014..c159600 100644
--- a/packages/CredentialManager/res/values-sv/strings.xml
+++ b/packages/CredentialManager/res/values-sv/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Visa alternativ"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Fortsätt"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Inloggningsalternativ"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Visa fler"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"För <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Låsta lösenordshanterare"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Tryck för att låsa upp"</string>
diff --git a/packages/CredentialManager/res/values-sw/strings.xml b/packages/CredentialManager/res/values-sw/strings.xml
index 39f7ad9..982b1ba 100644
--- a/packages/CredentialManager/res/values-sw/strings.xml
+++ b/packages/CredentialManager/res/values-sw/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Angalia chaguo"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Endelea"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Chaguo za kuingia katika akaunti"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Angalia zaidi"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Kwa ajili ya <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Vidhibiti vya manenosiri vilivyofungwa"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Gusa ili ufungue"</string>
diff --git a/packages/CredentialManager/res/values-ta/strings.xml b/packages/CredentialManager/res/values-ta/strings.xml
index 02d2e08..eabae9d 100644
--- a/packages/CredentialManager/res/values-ta/strings.xml
+++ b/packages/CredentialManager/res/values-ta/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"àź”àźżàź°àŻàźȘàŻàźȘàź™àŻàź•àźłàŻˆàź•àŻ àź•àźŸàźŸàŻàźŸàŻ"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"àź€àŻŠàźŸàź°àŻàź•"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"àź‰àźłàŻàźšàŻàźŽàŻˆàź”àŻ àź”àźżàź°àŻàźȘàŻàźȘàź™àŻàź•àźłàŻ"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"àźźàŻ‡àźČàŻàźźàŻ àź•àźŸàźŸàŻàźŸàŻ"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>àź•àŻàź•àŻ"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"àźȘàŻ‚àźŸàŻàźŸàźȘàŻàźȘàźŸàŻàźŸ àź•àźŸàź”àŻàźšàŻàźšàŻŠàźČàŻ àźšàźżàź°àŻàź”àźŸàź•àźżàź•àźłàŻ"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"àź…àź©àŻàźČàźŸàź•àŻ àźšàŻ†àźŻàŻàźŻ àź€àźŸàŻàźŸàź”àŻàźźàŻ"</string>
diff --git a/packages/CredentialManager/res/values-te/strings.xml b/packages/CredentialManager/res/values-te/strings.xml
index 75dd429..aa05e94 100644
--- a/packages/CredentialManager/res/values-te/strings.xml
+++ b/packages/CredentialManager/res/values-te/strings.xml
@@ -47,7 +47,7 @@
     <string name="other_password_manager" msgid="565790221427004141">"ఇఀర à°Șటఞ్‌à°”à°°à±à°Ąà± à°źà±‡à°šà±‡à°œà°°à±‌à°Čు"</string>
     <string name="close_sheet" msgid="1393792015338908262">"షీట్‌చు à°źà±‚à°žà°żà°”à±‡à°Żà°‚à°Ąà°ż"</string>
     <string name="accessibility_back_arrow_button" msgid="3233198183497842492">"à°źà±à°šà±à°Șà°Ÿà°ż à°Șà±‡à°œà±€à°•à°ż à°€à°żà°°à°żà°—à°ż à°”à±†à°łà±à°Čà°‚à°Ąà°ż"</string>
-    <string name="accessibility_close_button" msgid="1163435587545377687">"à°źà±‚à°žà°żà°”à±‡à°Żà°‚à°Ąà°ż"</string>
+    <string name="accessibility_close_button" msgid="1163435587545377687">"à°źà±‚à°žà°żà°”à±‡à°žà±à°€à±à°‚à°Šà°ż"</string>
     <string name="accessibility_snackbar_dismiss" msgid="3456598374801836120">"à°”à°żà°žà±à°źà°°à°żà°‚à°šà°‚à°Ąà°ż"</string>
     <string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"<xliff:g id="APP_NAME">%1$s</xliff:g> కోఞం à°źà±€ ఞేఔ్ à°šà±‡à°žà°żà°š à°Șటఞ్-à°•à±€à°šà°ż ఉà°Șà°Żà±‹à°—à°żà°‚à°šà°Ÿà°Čà°Ÿ?"</string>
     <string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> కోఞం à°źà±€à°°à± ఞేఔ్ à°šà±‡à°žà°żà°š ఞైచ్ ఇచ్ à°”à°żà°”à°°à°Ÿà°Čచు ఉà°Șà°Żà±‹à°—à°żà°‚à°šà°Ÿà°Čà°Ÿ?"</string>
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"ఆà°Ș్షచ్‌à°Čచు à°šà±‚à°Ąà°‚à°Ąà°ż"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"à°•à±Šà°šà°žà°Ÿà°—à°żà°‚à°šà°‚à°Ąà°ż"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ఞైచ్ ఇచ్ ఆà°Ș్షచ్‌à°Čు"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"à°źà°°à°żà°šà±à°šà°ż à°šà±‚à°Ąà°‚à°Ąà°ż"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> కోఞం"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"à°Čటక్ à°šà±‡à°Żà°Źà°Ąà°żà°š à°Șటఞ్‌à°”à°°à±à°Ąà± à°źà±‡à°šà±‡à°œà°°à±‌à°Čు"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"అచ్‌à°Čటక్ à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż à°Ÿà±à°Żà°Ÿà°Ș్ à°šà±‡à°Żà°‚à°Ąà°ż"</string>
diff --git a/packages/CredentialManager/res/values-th/strings.xml b/packages/CredentialManager/res/values-th/strings.xml
index b9857ac..e10016c 100644
--- a/packages/CredentialManager/res/values-th/strings.xml
+++ b/packages/CredentialManager/res/values-th/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"àž”àžčàž•àž±àž§àč€àž„àž·àž­àž"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"àž•àčˆàž­àč„àž›"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"àž•àž±àž§àč€àž„àž·àž­àžàžàžČàžŁàž„àž‡àžŠàž·àčˆàž­àč€àž‚àč‰àžČàčƒàžŠàč‰"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"àž”àžčàč€àžžàžŽàčˆàžĄàč€àž•àžŽàžĄ"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"àžȘàžłàž«àžŁàž±àžš <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"àč€àž„àžŁàž·àčˆàž­àž‡àžĄàž·àž­àžˆàž±àž”àžàžČàžŁàžŁàž«àž±àžȘàžœàčˆàžČàž™àž—àž”àčˆàž„àč‡àž­àžàč„àž§àč‰"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"àčàž•àž°àč€àžžàž·àčˆàž­àž›àž„àž”àž„àč‡àž­àž"</string>
diff --git a/packages/CredentialManager/res/values-tl/strings.xml b/packages/CredentialManager/res/values-tl/strings.xml
index a69cc28..c0ba96f 100644
--- a/packages/CredentialManager/res/values-tl/strings.xml
+++ b/packages/CredentialManager/res/values-tl/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Mga opsyon sa view"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Magpatuloy"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Mga opsyon sa pag-sign in"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Tumingin pa"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Para kay <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Mga naka-lock na password manager"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"I-tap para i-unlock"</string>
diff --git a/packages/CredentialManager/res/values-tr/strings.xml b/packages/CredentialManager/res/values-tr/strings.xml
index 082dc5e..7d1d697 100644
--- a/packages/CredentialManager/res/values-tr/strings.xml
+++ b/packages/CredentialManager/res/values-tr/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Seçenekleri göster"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Devam"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Oturum açma seçenekleri"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Daha fazla"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> için"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Kilitli ßifre yöneticileri"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Kilidi açmak için dokunun"</string>
diff --git a/packages/CredentialManager/res/values-uk/strings.xml b/packages/CredentialManager/res/values-uk/strings.xml
index 22d7789..a5ae72b 100644
--- a/packages/CredentialManager/res/values-uk/strings.xml
+++ b/packages/CredentialManager/res/values-uk/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"ĐŸĐ”Ń€Đ”ĐłĐ»ŃĐœŃƒŃ‚Đž ĐČĐ°Ń€Ń–Đ°ĐœŃ‚Đž"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ĐŸŃ€ĐŸĐŽĐŸĐČжОтО"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Опції ĐČŃ…ĐŸĐŽŃƒ"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"ĐŸĐ”Ń€Đ”ĐłĐ»ŃĐœŃƒŃ‚Đž Đ±Ń–Đ»ŃŒŃˆĐ”"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Đ”Đ»Ń ĐșĐŸŃ€ĐžŃŃ‚ŃƒĐČача <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Đ—Đ°Đ±Đ»ĐŸĐșĐŸĐČĐ°ĐœŃ– ĐŒĐ”ĐœĐ”ĐŽĐ¶Đ”Ń€Đž ĐżĐ°Ń€ĐŸĐ»Ń–ĐČ"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ĐąĐŸŃ€ĐșĐœŃ–Ń‚ŃŒŃŃ, Ń‰ĐŸĐ± Ń€ĐŸĐ·Đ±Đ»ĐŸĐșуĐČато"</string>
diff --git a/packages/CredentialManager/res/values-ur/strings.xml b/packages/CredentialManager/res/values-ur/strings.xml
index 12126ba..daadda8 100644
--- a/packages/CredentialManager/res/values-ur/strings.xml
+++ b/packages/CredentialManager/res/values-ur/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"ۧ۟ŰȘÛŒŰ§Ű±Ű§ŰȘ ŰŻÛŒÚ©ÚŸÛŒÚș"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ŰŹŰ§Ű±ÛŒ Ű±Ú©ÚŸÛŒÚș"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ŰłŰ§ŰŠÙ† Ű§Ù† کے ۧ۟ŰȘÛŒŰ§Ű±Ű§ŰȘ"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"مŰČÛŒŰŻ ŰŻÛŒÚ©ÚŸÛŒÚș"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> کے لیے"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"مقفل Ú©Ű±ŰŻÛ ÙŸŰ§Űł ÙˆŰ±Úˆ Ù…ÛŒÙ†ÛŒŰŹŰ±ŰČ"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ŰșÛŒŰ± مقفل Ú©Ű±Ù†Û’ Ú©ÛŒÙ„ŰŠÛ’ ŰȘÚŸÙŸŰȘÚŸÙŸŰ§ŰŠÛŒÚș"</string>
diff --git a/packages/CredentialManager/res/values-uz/strings.xml b/packages/CredentialManager/res/values-uz/strings.xml
index f9ee936..a52095d 100644
--- a/packages/CredentialManager/res/values-uz/strings.xml
+++ b/packages/CredentialManager/res/values-uz/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Variantlarni ochish"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Davom etish"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Kirish parametrlari"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Yana"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> uchun"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Qulfli parol menejerlari"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Qulfni ochish uchun bosing"</string>
diff --git a/packages/CredentialManager/res/values-vi/strings.xml b/packages/CredentialManager/res/values-vi/strings.xml
index d4acb94..0f8fb66 100644
--- a/packages/CredentialManager/res/values-vi/strings.xml
+++ b/packages/CredentialManager/res/values-vi/strings.xml
@@ -8,39 +8,39 @@
     <string name="string_learn_more" msgid="4541600451688392447">"Tìm hiểu thêm"</string>
     <string name="content_description_show_password" msgid="3283502010388521607">"Hiện máș­t kháș©u"</string>
     <string name="content_description_hide_password" msgid="6841375971631767996">"áșšn máș­t kháș©u"</string>
-    <string name="passkey_creation_intro_title" msgid="4251037543787718844">"An toàn hÆĄn nhờ khoá đăng nháș­p"</string>
+    <string name="passkey_creation_intro_title" msgid="4251037543787718844">"An toàn hÆĄn nhờ mã xác thá»±c"</string>
     <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Mã xác thá»±c giúp báșĄn tránh Ä‘Æ°á»Łc việc pháșŁi táșĄo và ghi nhớ máș­t kháș©u phức táșĄp"</string>
     <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Mã xác thá»±c là các khoá ká»č thuáș­t số Ä‘Æ°á»Łc mã hoá mà báșĄn táșĄo báș±ng cách dùng vân tay, khuôn máș·t hoáș·c phÆ°ÆĄng thức khoá màn hình cá»§a mình"</string>
     <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Thông tin này Ä‘Æ°á»Łc lưu vào trình quáșŁn lý máș­t kháș©u nên báșĄn có thể đăng nháș­p trên các thiáșżt bị khác"</string>
-    <string name="more_about_passkeys_title" msgid="7797903098728837795">"Xem thêm thông tin về khoá đăng nháș­p"</string>
+    <string name="more_about_passkeys_title" msgid="7797903098728837795">"Xem thêm thông tin về mã xác thá»±c"</string>
     <string name="passwordless_technology_title" msgid="2497513482056606668">"Công nghệ không dùng máș­t kháș©u"</string>
-    <string name="passwordless_technology_detail" msgid="6853928846532955882">"Khoá đăng nháș­p cho phép báșĄn đăng nháș­p mà không cáș§n dá»±a vào máș­t kháș©u. BáșĄn chỉ cáș§n dùng vân tay, tính năng nháș­n dáșĄng khuôn máș·t, mã PIN hoáș·c hình mở khoá để xác minh danh tính và táșĄo khoá đăng nháș­p."</string>
+    <string name="passwordless_technology_detail" msgid="6853928846532955882">"Mã xác thá»±c cho phép báșĄn đăng nháș­p mà không cáș§n dá»±a vào máș­t kháș©u. BáșĄn chỉ cáș§n dùng vân tay, tính năng nháș­n dáșĄng khuôn máș·t, mã PIN hoáș·c hình mở khoá để xác minh danh tính và táșĄo mã xác thá»±c."</string>
     <string name="public_key_cryptography_title" msgid="6751970819265298039">"Mã hoá khoá công khai"</string>
-    <string name="public_key_cryptography_detail" msgid="6937631710280562213">"Dá»±a trên Liên minh FIDO (bao gồm Google, Apple, Microsoft, v.v.) và tiêu chuáș©n W3C, khoá đăng nháș­p sá»­ dỄng cáș·p khoá mã hoá. Khác với tên người dùng và chuỗi ký tá»± chúng tôi dùng cho máș­t kháș©u, một cáș·p khoá riêng tư – công khai Ä‘Æ°á»Łc táșĄo cho một ứng dỄng hoáș·c trang web. Khoá riêng tư Ä‘Æ°á»Łc lưu trữ an toàn trên thiáșżt bị hoáș·c trình quáșŁn lý máș­t kháș©u và xác nháș­n danh tính cá»§a báșĄn. Khoá công khai Ä‘Æ°á»Łc chia sáș» với máy chá»§ ứng dỄng hoáș·c trang web. Với khoá tÆ°ÆĄng ứng, báșĄn có thể đăng ký và đăng nháș­p tức thì."</string>
+    <string name="public_key_cryptography_detail" msgid="6937631710280562213">"Dá»±a trên Liên minh FIDO (bao gồm Google, Apple, Microsoft, v.v.) và tiêu chuáș©n W3C, mã xác thá»±c sá»­ dỄng cáș·p khoá mã hoá. Khác với tên người dùng và chuỗi ký tá»± chúng tôi dùng cho máș­t kháș©u, một cáș·p khoá riêng tư – công khai Ä‘Æ°á»Łc táșĄo cho một ứng dỄng hoáș·c trang web. Khoá riêng tư Ä‘Æ°á»Łc lưu trữ an toàn trên thiáșżt bị hoáș·c trình quáșŁn lý máș­t kháș©u và xác nháș­n danh tính cá»§a báșĄn. Khoá công khai Ä‘Æ°á»Łc chia sáș» với máy chá»§ ứng dỄng hoáș·c trang web. Với khoá tÆ°ÆĄng ứng, báșĄn có thể đăng ký và đăng nháș­p tức thì."</string>
     <string name="improved_account_security_title" msgid="1069841917893513424">"CáșŁi thiện tính báșŁo máș­t cá»§a tài khoáșŁn"</string>
     <string name="improved_account_security_detail" msgid="9123750251551844860">"Mỗi khoá Ä‘Æ°á»Łc liên káșżt riêng với ứng dỄng hoáș·c trang web mà khoá đó Ä‘Æ°á»Łc táșĄo. Vì váș­y, báșĄn sáșœ không bao giờ đăng nháș­p nháș§m vào một ứng dỄng hoáș·c trang web lừa đáșŁo. Ngoài ra, với các máy chá»§ chỉ lưu giữ khoá công khai, việc xâm nháș­p càng khó hÆĄn nhiều."</string>
     <string name="seamless_transition_title" msgid="5335622196351371961">"Chuyển đổi liền máșĄch"</string>
-    <string name="seamless_transition_detail" msgid="4475509237171739843">"Trong quá trình chúng tôi hướng đáșżn tÆ°ÆĄng lai không dùng máș­t kháș©u, báșĄn váș«n sáșœ dùng Ä‘Æ°á»Łc máș­t kháș©u cùng với khoá đăng nháș­p."</string>
+    <string name="seamless_transition_detail" msgid="4475509237171739843">"Trong quá trình chúng tôi hướng đáșżn tÆ°ÆĄng lai không dùng máș­t kháș©u, báșĄn váș«n sáșœ dùng Ä‘Æ°á»Łc máș­t kháș©u cùng với mã xác thá»±c."</string>
     <string name="choose_provider_title" msgid="8870795677024868108">"Chọn vị trí lưu <xliff:g id="CREATETYPES">%1$s</xliff:g> cá»§a báșĄn"</string>
-    <string name="choose_provider_body" msgid="4967074531845147434">"Hãy chọn một trình quáșŁn lý máș­t kháș©u để lưu thông tin cá»§a báșĄn và đăng nháș­p nhanh hÆĄn vào láș§n tới"</string>
-    <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"TáșĄo khoá đăng nháș­p cho <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+    <string name="choose_provider_body" msgid="4967074531845147434">"Hãy chọn một trình quáșŁn lý máș­t kháș©u để lưu thông tin cá»§a báșĄn và đăng nháș­p nhanh hÆĄn trong láș§n tới"</string>
+    <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"TáșĄo mã xác thá»±c cho <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
     <string name="choose_create_option_password_title" msgid="7097275038523578687">"Lưu máș­t kháș©u cho <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
     <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Lưu thông tin đăng nháș­p cho <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
-    <string name="passkey" msgid="632353688396759522">"khoá đăng nháș­p"</string>
+    <string name="passkey" msgid="632353688396759522">"mã xác thá»±c"</string>
     <string name="password" msgid="6738570945182936667">"máș­t kháș©u"</string>
-    <string name="passkeys" msgid="5733880786866559847">"khoá đăng nháș­p"</string>
+    <string name="passkeys" msgid="5733880786866559847">"mã xác thá»±c"</string>
     <string name="passwords" msgid="5419394230391253816">"máș­t kháș©u"</string>
     <string name="sign_ins" msgid="4710739369149469208">"thông tin đăng nháș­p"</string>
     <string name="sign_in_info" msgid="2627704710674232328">"thông tin đăng nháș­p"</string>
     <string name="save_credential_to_title" msgid="3172811692275634301">"Lưu <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> vào"</string>
     <string name="create_passkey_in_other_device_title" msgid="9195411122362461390">"TáșĄo mã xác thá»±c trên thiáșżt bị khác?"</string>
     <string name="use_provider_for_all_title" msgid="4201020195058980757">"Dùng <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> cho mọi thông tin đăng nháș­p cá»§a báșĄn?"</string>
-    <string name="use_provider_for_all_description" msgid="1998772715863958997">"Trình quáșŁn lý máș­t kháș©u này cho <xliff:g id="USERNAME">%1$s</xliff:g> sáșœ lưu trữ máș­t kháș©u và khoá đăng nháș­p để báșĄn dễ dàng đăng nháș­p"</string>
+    <string name="use_provider_for_all_description" msgid="1998772715863958997">"Trình quáșŁn lý máș­t kháș©u này cho <xliff:g id="USERNAME">%1$s</xliff:g> sáșœ lưu trữ máș­t kháș©u và mã xác thá»±c để báșĄn dễ dàng đăng nháș­p"</string>
     <string name="set_as_default" msgid="4415328591568654603">"Đáș·t làm máș·c định"</string>
     <string name="use_once" msgid="9027366575315399714">"Dùng một láș§n"</string>
-    <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> máș­t kháș©u • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> khoá đăng nháș­p"</string>
+    <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> máș­t kháș©u • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> mã xác thá»±c"</string>
     <string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> máș­t kháș©u"</string>
-    <string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> khoá đăng nháș­p"</string>
+    <string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> mã xác thá»±c"</string>
     <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> thông tin xác thá»±c"</string>
     <string name="passkey_before_subtitle" msgid="2448119456208647444">"Mã xác thá»±c"</string>
     <string name="another_device" msgid="5147276802037801217">"Thiáșżt bị khác"</string>
@@ -49,7 +49,7 @@
     <string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Quay láșĄi trang trước"</string>
     <string name="accessibility_close_button" msgid="1163435587545377687">"Đóng"</string>
     <string name="accessibility_snackbar_dismiss" msgid="3456598374801836120">"Đóng"</string>
-    <string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Dùng khoá đăng nháș­p báșĄn đã lưu cho <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+    <string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Dùng mã xác thá»±c báșĄn đã lưu cho <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
     <string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Dùng thông tin đăng nháș­p báșĄn đã lưu cho <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
     <string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Chọn thông tin đăng nháș­p đã lưu cho <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_title_choose_option_for" msgid="4976380044745029107">"Chọn một lựa chọn cho <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Xem các lá»±a chọn"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Tiáșżp tỄc"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Tuỳ chọn đăng nháș­p"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Xem thêm"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Cho <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Trình quáșŁn lý máș­t kháș©u đã khoá"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Nháș„n để mở khoá"</string>
diff --git a/packages/CredentialManager/res/values-zh-rCN/strings.xml b/packages/CredentialManager/res/values-zh-rCN/strings.xml
index a6f2890..4fded4b 100644
--- a/packages/CredentialManager/res/values-zh-rCN/strings.xml
+++ b/packages/CredentialManager/res/values-zh-rCN/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"柄看选éĄč"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ç»§ç»­"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ç™»ćœ•é€‰éĄč"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"æŸ„çœ‹æ›Žć€š"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"甚户<xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"ć·Č锁柚的毆码知理淄慷"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"ç‚čæŒ‰ćłćŻè§Łé”"</string>
diff --git a/packages/CredentialManager/res/values-zh-rHK/strings.xml b/packages/CredentialManager/res/values-zh-rHK/strings.xml
index 44484a5..8486efe 100644
--- a/packages/CredentialManager/res/values-zh-rHK/strings.xml
+++ b/packages/CredentialManager/res/values-zh-rHK/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"柄看遞項"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"çčŒçșŒ"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"登慄遞項"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"æŸ„çœ‹æ›Žć€š"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> 氈甹"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"ć·ČéŽ–ćźšçš„ćŻ†çąŒçźĄç†ć·„ć…·"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"èŒ•æŒ‰ćłćŻè§ŁéŽ–"</string>
diff --git a/packages/CredentialManager/res/values-zh-rTW/strings.xml b/packages/CredentialManager/res/values-zh-rTW/strings.xml
index 758f2a4d..0414538 100644
--- a/packages/CredentialManager/res/values-zh-rTW/strings.xml
+++ b/packages/CredentialManager/res/values-zh-rTW/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"柄看遞項"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"çčŒçșŒ"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"登慄遞項"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"饯ç€șæ›Žć€š"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> 氈甹"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"ć·ČéŽ–ćźšçš„ćŻ†çąŒçźĄç†ć·„ć…·"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"èŒ•è§žćłćŻè§ŁéŽ–"</string>
diff --git a/packages/CredentialManager/res/values-zu/strings.xml b/packages/CredentialManager/res/values-zu/strings.xml
index 94bd6c7..8aaf869 100644
--- a/packages/CredentialManager/res/values-zu/strings.xml
+++ b/packages/CredentialManager/res/values-zu/strings.xml
@@ -58,7 +58,8 @@
     <string name="snackbar_action" msgid="37373514216505085">"Buka okungakhethwa kukho"</string>
     <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Qhubeka"</string>
     <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Okungakhethwa kukho kokungena ngemvume"</string>
-    <string name="button_label_view_more" msgid="3429098227286495651">"Buka okwengeziwe"</string>
+    <!-- no translation found for button_label_view_more (3429098227286495651) -->
+    <skip />
     <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Okuka-<xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Abaphathi bephasiwedi abakhiyiwe"</string>
     <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"Thepha ukuze uvule"</string>
diff --git a/packages/PackageInstaller/AndroidManifest.xml b/packages/PackageInstaller/AndroidManifest.xml
index 9ee6fbd..1edb751 100644
--- a/packages/PackageInstaller/AndroidManifest.xml
+++ b/packages/PackageInstaller/AndroidManifest.xml
@@ -9,6 +9,8 @@
     <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
     <uses-permission android:name="android.permission.DELETE_PACKAGES" />
     <uses-permission android:name="android.permission.READ_INSTALL_SESSIONS" />
+    <uses-permission android:name="android.permission.READ_INSTALLED_SESSION_PATHS" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
     <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS" />
     <uses-permission android:name="android.permission.USE_RESERVED_DISK" />
diff --git a/packages/PackageInstaller/res/values-af/strings.xml b/packages/PackageInstaller/res/values-af/strings.xml
index 3545179..267d634 100644
--- a/packages/PackageInstaller/res/values-af/strings.xml
+++ b/packages/PackageInstaller/res/values-af/strings.xml
@@ -79,7 +79,7 @@
     <string name="uninstall_all_blocked_profile_owner" msgid="2009393666026751501">"Dié program word vir sommige gebruikers of profiele vereis en is vir ander gedeïnstalleer"</string>
     <string name="uninstall_blocked_profile_owner" msgid="6373897407002404848">"Hierdie program is nodig vir jou profiel en kan nie gedeïnstalleer word nie."</string>
     <string name="uninstall_blocked_device_owner" msgid="6724602931761073901">"Jou toesteladministrateur vereis die program; kan nie gedeïnstalleer word nie."</string>
-    <string name="manage_device_administrators" msgid="3092696419363842816">"Bestuur toesteladministrasie-apps"</string>
+    <string name="manage_device_administrators" msgid="3092696419363842816">"Bestuur toesteladministrasieprogramme"</string>
     <string name="manage_users" msgid="1243995386982560813">"Bestuur gebruikers"</string>
     <string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> kon nie gedeïnstalleer word nie."</string>
     <string name="Parse_error_dlg_text" msgid="1661404001063076789">"Kon nie die pakket ontleed nie."</string>
diff --git a/packages/PackageInstaller/res/values-as/strings.xml b/packages/PackageInstaller/res/values-as/strings.xml
index 37f6c13..c37ed70 100644
--- a/packages/PackageInstaller/res/values-as/strings.xml
+++ b/packages/PackageInstaller/res/values-as/strings.xml
@@ -39,7 +39,7 @@
     <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="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="update_anyway" msgid="8792432341346261969">"àŠŻàŠżàŠ•à§‹àŠšà§‹ àŠȘà§à§°àŠ•àŠŸà§°à§‡ àŠ†àŠȘàŠĄà§‡’àŠŸ àŠ•à§°àŠ•"</string>
@@ -79,7 +79,7 @@
     <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="manage_device_administrators" msgid="3092696419363842816">"àŠĄàŠżàŠ­àŠŸàŠ‡àŠšà§° àŠȘà§à§°àŠ¶àŠŸàŠžàŠ• àŠàŠȘ্‌àŠžàŠźà§‚àŠč àŠȘà§°àŠżàŠšàŠŸàŠČàŠšàŠŸ àŠ•à§°àŠ•"</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>
@@ -97,7 +97,7 @@
     <string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>à§° àŠ•à§àŠČ’àŠš"</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>
+    <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>
     <string name="notification_installation_success_status" msgid="3172502643504323321">"“<xliff:g id="APPNAME">%1$s</xliff:g>” àŠžàŠ«àŠČàŠ€àŠŸà§°à§‡ àŠ‡àŠšàŠ·à§àŠŸàŠČ àŠ•à§°àŠŸ àŠč’àŠČ"</string>
diff --git a/packages/PackageInstaller/res/values-sk/strings.xml b/packages/PackageInstaller/res/values-sk/strings.xml
index f6602b1..0afce1b 100644
--- a/packages/PackageInstaller/res/values-sk/strings.xml
+++ b/packages/PackageInstaller/res/values-sk/strings.xml
@@ -91,7 +91,7 @@
     <string name="untrusted_external_source_warning" product="tv" msgid="7057271609532508035">"Váš televízor momentálne nemôĆŸe z bezpečnostných dôvodov inštalovaĆ„ neznáme aplikácie z tohto zdroja. MôĆŸete to zmeniĆ„ v Nastaveniach."</string>
     <string name="untrusted_external_source_warning" product="watch" msgid="7195163388090818636">"Z bezpečnostných dôvodov momentálne nemôĆŸete v hodnikách inštalovaĆ„ neznáme aplikácie z tohto zdroja. MôĆŸete to zmeniĆ„ v Nastaveniach."</string>
     <string name="untrusted_external_source_warning" product="default" msgid="8444191224459138919">"Váš telefón momentálne nemôĆŸe z bezpečnostných dôvodov inštalovaĆ„ neznáme aplikácie z tohto zdroja. MôĆŸete to zmeniĆ„ v nastaveniach."</string>
-    <string name="anonymous_source_warning" product="default" msgid="2784902545920822500">"Váš telefón a osobné údaje sú zraniteÄŸnejšie voči útoku z neznámych aplikácií. Inštaláciou tejto aplikácie vyjadrujete súhlas s tým, ĆŸe nesiete zodpovednosĆ„ za akékoÄŸvek poškodenie telefónu alebo stratu údajov, ktoré by mohli nastaĆ„ pri jej pouĆŸívaní."</string>
+    <string name="anonymous_source_warning" product="default" msgid="2784902545920822500">"Váš telefón a osobné údaje sú náchylnejšie na útok z neznámych aplikácií. Inštaláciou tejto aplikácie vyjadrujete súhlas s tým, ĆŸe nesiete zodpovednosĆ„ za akékoÄŸvek poškodenie telefónu alebo stratu údajov, ktoré by mohli nastaĆ„ pri jej pouĆŸívaní."</string>
     <string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Váš tablet a osobné dáta sú náchylnejšie na útok z neznámych aplikácií. Inštaláciou tejto aplikácie vyjadrujete súhlas s tým, ĆŸe nesiete zodpovednosĆ„ za akékoÄŸvek poškodenie tabletu alebo stratu dát, ktoré by mohli nastaĆ„ pri jej pouĆŸívaní."</string>
     <string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Váš televízor a osobné údaje sú náchylnejšie na útok z neznámych aplikácií. Inštaláciou tejto aplikácie vyjadrujete súhlas s tým, ĆŸe nesiete zodpovednosĆ„ za akékoÄŸvek poškodenie televízora alebo stratu údajov, ktoré by mohli nastaĆ„ pri jej pouĆŸívaní."</string>
     <string name="cloned_app_label" msgid="7503612829833756160">"Klon <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
index c81e75b..3ba2acb 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
@@ -375,16 +375,15 @@
             final int sessionId = intent.getIntExtra(PackageInstaller.EXTRA_SESSION_ID,
                     -1 /* defaultValue */);
             final SessionInfo info = mInstaller.getSessionInfo(sessionId);
-            final String resolvedBaseCodePath = intent.getStringExtra(
-                    PackageInstaller.EXTRA_RESOLVED_BASE_PATH);
-            if (info == null || !info.isSealed() || resolvedBaseCodePath == null) {
+            String resolvedPath = info.getResolvedBaseApkPath();
+            if (info == null || !info.isSealed() || resolvedPath == null) {
                 Log.w(TAG, "Session " + mSessionId + " in funky state; ignoring");
                 finish();
                 return;
             }
 
             mSessionId = sessionId;
-            packageSource = Uri.fromFile(new File(resolvedBaseCodePath));
+            packageSource = Uri.fromFile(new File(resolvedPath));
             mOriginatingURI = null;
             mReferrerURI = null;
             mPendingUserActionReason = info.getPendingUserActionReason();
diff --git a/packages/PrintSpooler/res/values-or/strings.xml b/packages/PrintSpooler/res/values-or/strings.xml
index a29f320ca..dd29700 100644
--- a/packages/PrintSpooler/res/values-or/strings.xml
+++ b/packages/PrintSpooler/res/values-or/strings.xml
@@ -65,7 +65,7 @@
     <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_searching_for_printers" msgid="6550424555079932867">"àŹȘà­àŹ°àŹżàŹŁà­àŹŸàŹ°àŹ•à­ àŹžàŹ°à­àŹšà­àŹš àŹ•àŹ°àŹŸàŹŻàŹŸàŹ‰àŹ›àŹż"</string>
+    <string name="print_searching_for_printers" msgid="6550424555079932867">"àŹȘà­àŹ°àŹżàŹŁà­àŹŸàŹ°àŹ•à­ àŹžàŹšà­àŹ§àŹŸàŹš àŹ•àŹ°àŹŸàŹŻàŹŸàŹ‰àŹ›àŹż"</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>
diff --git a/packages/SettingsLib/AppPreference/res/values-fr-rCA/strings.xml b/packages/SettingsLib/AppPreference/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 7be1e97..0000000
--- a/packages/SettingsLib/AppPreference/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2022 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="install_type_instant" msgid="7217305006127216917">"Application instantanée"</string>
-</resources>
diff --git a/packages/SettingsLib/AppPreference/res/values-gl/strings.xml b/packages/SettingsLib/AppPreference/res/values-gl/strings.xml
deleted file mode 100644
index 97fc538..0000000
--- a/packages/SettingsLib/AppPreference/res/values-gl/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2022 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="install_type_instant" msgid="7217305006127216917">"Aplicación instantánea"</string>
-</resources>
diff --git a/packages/SettingsLib/AppPreference/res/values-ta/strings.xml b/packages/SettingsLib/AppPreference/res/values-ta/strings.xml
deleted file mode 100644
index 4760a07..0000000
--- a/packages/SettingsLib/AppPreference/res/values-ta/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2022 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="install_type_instant" msgid="7217305006127216917">"àź‡àź©àŻàźžàŻàźŸàźŁàŻàźŸàŻ àź†àźȘàŻàźžàŻ"</string>
-</resources>
diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/CollapsingToolbarBaseActivity.java b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/CollapsingToolbarBaseActivity.java
index 01f92c4..19b7e85 100644
--- a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/CollapsingToolbarBaseActivity.java
+++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/CollapsingToolbarBaseActivity.java
@@ -17,6 +17,7 @@
 package com.android.settingslib.collapsingtoolbar;
 
 import android.app.ActionBar;
+import android.content.pm.PackageManager;
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -59,7 +60,8 @@
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        if (mCustomizeLayoutResId > 0 && !BuildCompatUtils.isAtLeastS()) {
+        // for backward compatibility on R devices or wearable devices due to small device size.
+        if (mCustomizeLayoutResId > 0 && (!BuildCompatUtils.isAtLeastS() || isWatch())) {
             super.setContentView(mCustomizeLayoutResId);
             return;
         }
@@ -157,6 +159,14 @@
         return getToolbarDelegate().getAppBarLayout();
     }
 
+    private boolean isWatch() {
+        PackageManager packageManager = getPackageManager();
+        if (packageManager == null) {
+            return false;
+        }
+        return packageManager.hasSystemFeature(PackageManager.FEATURE_WATCH);
+    }
+
     private CollapsingToolbarDelegate getToolbarDelegate() {
         if (mToolbardelegate == null) {
             mToolbardelegate = new CollapsingToolbarDelegate(new DelegateCallback());
diff --git a/packages/SettingsLib/ProfileSelector/res/values-fr-rCA/strings.xml b/packages/SettingsLib/ProfileSelector/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 43e4a59..0000000
--- a/packages/SettingsLib/ProfileSelector/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright (C) 2022 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="settingslib_category_personal" msgid="1142302328104700620">"Personnel"</string>
-    <string name="settingslib_category_work" msgid="4867750733682444676">"Professionnel"</string>
-</resources>
diff --git a/packages/SettingsLib/ProfileSelector/res/values-ta/strings.xml b/packages/SettingsLib/ProfileSelector/res/values-ta/strings.xml
deleted file mode 100644
index ab360a9..0000000
--- a/packages/SettingsLib/ProfileSelector/res/values-ta/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright (C) 2022 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="settingslib_category_personal" msgid="1142302328104700620">"àź€àź©àźżàźȘàŻàźȘàźŸàŻàźŸàź”àŻˆ"</string>
-    <string name="settingslib_category_work" msgid="4867750733682444676">"àźȘàźŁàźż"</string>
-</resources>
diff --git a/packages/SettingsLib/Spa/OWNERS b/packages/SettingsLib/Spa/OWNERS
index 2887872..464328e 100644
--- a/packages/SettingsLib/Spa/OWNERS
+++ b/packages/SettingsLib/Spa/OWNERS
@@ -4,3 +4,6 @@
 hanxu@google.com
 kellyz@google.com
 pierreqian@google.com
+lijun@google.com
+songchenxi@google.com
+cyl@google.com
diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml
index 707768e..f44b301 100644
--- a/packages/SettingsLib/res/values-af/strings.xml
+++ b/packages/SettingsLib/res/values-af/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Meer tyd."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Minder tyd."</string>
     <string name="cancel" msgid="5665114069455378395">"Kanselleer"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Klaar"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Wekkers en onthounotas"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Voeg nuwe gebruiker by?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Jy kan hierdie toestel met ander mense deel deur bykomende gebruikers te skep. Elke gebruiker het sy eie spasie wat hulle kan pasmaak met programme, muurpapier en so meer. Gebruikers kan ook toestelinstellings wat almal raak, soos Wi-Fi, aanpas.\n\nWanneer jy \'n nuwe gebruiker byvoeg, moet daardie persoon hul eie spasie opstel.\n\nEnige gebruiker kan programme vir alle ander gebruikers opdateer. Toeganklikheidinstellings en -dienste sal dalk nie na die nuwe gebruiker oorgedra word nie."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Wanneer jy \'n nuwe gebruiker byvoeg, moet daardie persoon hul spasie opstel.\n\nEnige gebruiker kan programme vir al die ander gebruikers opdateer."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Gee gebruiker adminvoorregte?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"As ’n admin sal hulle ander gebruikers kan bestuur, toestelinstellings kan wysig, en ’n fabriekterugstelling van die toestel kan doen."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Moet die gebruiker nou opgestel word?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Maak seker die persoon is beskikbaar om die toestel te vat en hul spasie op te stel"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Stel profiel nou op?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Dit sal ’n nuwe gastesessie begin en alle programme en data van die huidige sessie uitvee"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Verlaat gasmodus?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Dit sal programme en data in die huidige gastesessie uitvee"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Gee hierdie gebruiker adminvoorregte"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Moenie vir gebruiker adminvoorregte gee nie"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Gaan uit"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Stoor gasaktiwiteit?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Jy kan aktiwiteit in die huidige sessie stoor of alle programme en data uitvee"</string>
diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml
index 986208f..492e294 100644
--- a/packages/SettingsLib/res/values-am/strings.xml
+++ b/packages/SettingsLib/res/values-am/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"ተጹማáˆȘ ጊዜ፱"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"ያነሰ ጊዜ፱"</string>
     <string name="cancel" msgid="5665114069455378395">"ይቅር"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"ኄáˆș"</string>
     <string name="done" msgid="381184316122520313">"ተኹናውኗል"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"ማንቂያዎቜ ኄና áŠ áˆ”á‰łá‹‹áˆŸá‰œ"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"አá‹Čሔ ተጠቃሚ ይታኹል?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"ተጹማáˆȘ ተጠቃሚዎቜን በመፍጠር ይህን መሣáˆȘያ ለሌሎቜ ሰዎቜ ማጋራቔ á‹­á‰œáˆ‹áˆ‰áą ኄያንዳንዱ ተጠቃሚ በራሱ መተግበáˆȘá‹«á‹Žá‰œáŁ ልጣፍ ኄና በመሳሰሉ áŠáŒˆáˆźá‰œ ሊያበጀው ዚሚቜል ዚራሱ ቩታ አለው፱ ተጠቃሚዎቜም ኄንá‹Čሁ ኄንደ Wi‑Fi ያሉ በሁሉም ሰው ላይ ተጜዕኖ ሊኖራ቞ው ዚሚቜሉ ዹመሣáˆȘያ á‰…áŠ•á‰„áˆźá‰œáŠ• ማሔተካኚል á‹­á‰œáˆ‹áˆ‰áą \n\nኄርሔዎ አንዔ አá‹Čሔ ተጠቃሚ áˆČያክሉ ያ ሰው ዚራሱ ቩታ ማዘጋጀቔ áŠ áˆˆá‰ á‰”áą\n\nማንኛውም ተጠቃሚ መተግበáˆȘያዎቜን ለሌሎቜ ተጠቃሚዎቜ ሁሉ ሊያዘምኑ á‹­á‰œáˆ‹áˆ‰áą"</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"ኄርሔዎ አንዔ አá‹Čሔ ተጠቃሚ áˆČያክሉ ያ ሰው ዚራሱ ቩታ ማዘጋጀቔ áŠ áˆˆá‰ á‰”áą\n\nማንኛውም ተጠቃሚ መተግበáˆȘያዎቜን ለሌሎቜ ተጠቃሚዎቜ ሁሉ ሊያዘምን á‹­á‰œáˆ‹áˆáą"</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"ለዚህ ተጠቃሚ á‹šáŠ áˆ”á‰°á‹łá‹łáˆȘ መቄቶቜ ይሰጣቾው?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"ኄንደ áŠ áˆ”á‰°á‹łá‹łáˆȘ ሌሎቜ ተጠቃሚዎቜን áˆ›áˆ”á‰°á‹łá‹°áˆ­áŁ ዹመሣáˆȘያ á‰…áŠ•á‰„áˆźá‰œáŠ• ማሻሻል ኄና መሣáˆȘያውን ዚፋቄáˆȘካ ዳግም ማሔጀመር á‹­á‰œáˆ‹áˆ‰áą"</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"ተጠቃሚ አሁን ይዋቀር?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"ግለሰቡ መሣáˆȘያውን ወሔደው ቩታቾውን ለማዋቀር ኄንደሚገኙ á‹«áˆšáŒ‹áŒáŒĄ"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"መገለጫ አሁን ይዋቀር?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ይህ አá‹Čሔ á‹šáŠ„áŠ•áŒá‹ł ክፍለ-ጊዜ ይጀምራል ኄና ሁሉንም መተግበáˆȘያዎቜ ኄና ውሂቄ አሁን ካለው ክፍለ-ጊዜ ይሰርዛል"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"áŠšáŠ„áŠ•áŒá‹ł ሁኔታ ይውጣ?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"ይህ አሁን ካለው á‹šáŠ„áŠ•áŒá‹ł ክፍለ-ጊዜ መተግበáˆȘያዎቜን ኄና ውሂቄን ይሰርዛል"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"ለዚህ ተጠቃሚ á‹šáŠ áˆ”á‰°á‹łá‹łáˆȘ መቄቶቜን á‹­áˆ”áŒĄ"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"ለዚህ ተጠቃሚ á‹šáŠ áˆ”á‰°á‹łá‹łáˆȘ መቄቶቜን áŠ á‹­áˆ”áŒĄ"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"ውጣ"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"á‹šáŠ„áŠ•áŒá‹ł ኄንቅሔቃሎ ይቀመጄ?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ኄንቅሔቃሎን አሁን ካለው ክፍለ-ጊዜ ማሔቀመጄ ወይም ሁሉንም መተግበáˆȘያዎቜ ኄና ውሂቄ መሰሹዝ ይቜላሉ"</string>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index ae4b89d..c3408cf 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"وقŰȘ ŰŁÙƒŰ«Ű±."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"وقŰȘ ŰŁÙ‚Ù„."</string>
     <string name="cancel" msgid="5665114069455378395">"Ű„Ù„Űșۧۥ"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"Ű­ŰłÙ†Ù‹Ű§"</string>
     <string name="done" msgid="381184316122520313">"ŰȘم"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Ű§Ù„Ù…Ù†ŰšÙ‘Ù‡Ű§ŰȘ ÙˆŰ§Ù„ŰȘŰ°ÙƒÙŠŰ±Ű§ŰȘ"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"هل ŰȘŰ±ÙŠŰŻ Ű„Ű¶Ű§ÙŰ© Ù…ŰłŰȘŰźŰŻÙ… ŰŹŰŻÙŠŰŻŰŸ"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"‏يمكنك Ù…ŰŽŰ§Ű±ÙƒŰ© Ù‡Ű°Ű§ Ű§Ù„ŰŹÙ‡Ű§ŰČ Ù…Űč ۣێ۟ۧ۔ ŰąŰźŰ±ÙŠÙ† من ŰźÙ„Ű§Ù„ Ű„Ù†ŰŽŰ§ŰĄ ۭ۳ۧۚۧŰȘ Ù„Ù…ŰłŰȘŰźŰŻÙ…ÙŠÙ† Ű„Ű¶Ű§ÙÙŠÙŠÙ†. ÙˆŰłÙŠŰ­Ű”Ù„ كل Ù…ŰłŰȘŰźŰŻÙ… Űčلى Ù…ŰłŰ§Ű­ŰȘه Ű§Ù„ŰźŰ§Ű”Ű© Ű§Ù„ŰȘي يمكنه ŰȘŰźŰ”ÙŠŰ”Ù‡Ű§ ŰšŰȘŰ·ŰšÙŠÙ‚Ű§ŰȘه ÙˆŰźÙ„ÙÙŠŰ§ŰȘه Ű§Ù„ŰȘي ÙŠŰ±ÙŠŰŻÙ‡Ű§ وŰșÙŠŰ± Ű°Ù„Ùƒ. ويمكن ŰŁÙŠŰ¶Ù‹Ű§ Ù„Ù„Ù…ŰłŰȘŰźŰŻÙ…ÙŠÙ† ۶ۚ۷ Ű„ŰčۯۧۯۧŰȘ Ű§Ù„ŰŹÙ‡Ű§ŰČ Ù…Ű«Ù„ Wi-Fi ÙˆŰ§Ù„ŰȘي ŰȘۀ۫۱ في ŰŹÙ…ÙŠŰč Ű§Ù„Ù…ŰłŰȘŰźŰŻÙ…ÙŠÙ†.\n\nŰčÙ†ŰŻ Ű„Ű¶Ű§ÙŰ© Ù…ŰłŰȘŰźŰŻÙ… ŰŹŰŻÙŠŰŻŰŒ Űčليه Ű„Űčۯۧۯ Ù…ŰłŰ§Ű­ŰȘه.\n\nيمكن Ù„ŰŁÙŠ Ù…ŰłŰȘŰźŰŻÙ… ŰȘŰ­ŰŻÙŠŰ« Ű§Ù„ŰȘŰ·ŰšÙŠÙ‚Ű§ŰȘ Ù„ŰŹÙ…ÙŠŰč Ű§Ù„Ù…ŰłŰȘŰźŰŻÙ…ÙŠÙ† Ű§Ù„ŰąŰźŰ±ÙŠÙ†. ÙˆÙ‚ŰŻ Ù„Ű§ يŰȘم نقل Ű„ŰčۯۧۯۧŰȘ ÙˆŰźŰŻÙ…Ű§ŰȘ \"ŰłÙ‡ÙˆÙ„Ű© Ű§Ù„Ű§ŰłŰȘŰźŰŻŰ§Ù…\" Ű„Ù„Ù‰ Ű§Ù„Ù…ŰłŰȘŰźŰŻÙ… Ű§Ù„ŰŹŰŻÙŠŰŻ."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"ŰčÙ†ŰŻ Ű„Ű¶Ű§ÙŰ© Ù…ŰłŰȘŰźŰŻÙ… ŰŹŰŻÙŠŰŻŰŒ Űčليه Ű„Űčۯۧۯ Ù…ŰłŰ§Ű­ŰȘه.\n\nويمكن Ù„ŰŁÙŠ Ù…ŰłŰȘŰźŰŻÙ… ŰȘŰ­ŰŻÙŠŰ« Ű§Ù„ŰȘŰ·ŰšÙŠÙ‚Ű§ŰȘ Ù„ŰŹÙ…ÙŠŰč Ű§Ù„Ù…ŰłŰȘŰźŰŻÙ…ÙŠÙ† Ű§Ù„ŰąŰźŰ±ÙŠÙ†."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"ŰŁŰȘŰ±ÙŠŰŻ Ù…Ù†Ű­ Ù‡Ű°Ű§ Ű§Ù„Ù…ŰłŰȘŰźŰŻÙ… Ű§Ù…ŰȘÙŠŰ§ŰČۧŰȘ Ù…ŰŽŰ±ÙŰŸ"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"ŰšŰ”ÙŰȘه Ù…ŰŽŰ±ÙÙ‹Ű§ŰŒ ŰłÙŠŰȘمكن من ۄۯۧ۱۩ Ű§Ù„Ù…ŰłŰȘŰźŰŻÙ…ÙŠÙ† Ű§Ù„ŰąŰźŰ±ÙŠÙ† وŰȘŰčŰŻÙŠÙ„ Ű„ŰčۯۧۯۧŰȘ Ű§Ù„ŰŹÙ‡Ű§ŰČ ÙˆŰ„Űčۧۯ۩ ۶ۚ۷ Ű§Ù„ŰŹÙ‡Ű§ŰČ Űčلى Ű§Ù„Ű„ŰčۯۧۯۧŰȘ Ű§Ù„ŰŁŰ”Ù„ÙŠŰ©."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"هل ŰȘŰ±ÙŠŰŻ Ű„Űčۯۧۯ Ű§Ù„Ù…ŰłŰȘŰźŰŻÙ… Ű§Ù„ŰąÙ†ŰŸ"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"ÙŠÙŰ±ŰŹÙ‰ Ű§Ù„ŰȘŰŁÙƒÙ‘ŰŻ من ŰŁÙ† Ű§Ù„ŰŽŰźŰ” يمكنه ۧ۳ŰȘŰźŰŻŰ§Ù… Ű§Ù„ŰŹÙ‡Ű§ŰČ Ű§Ù„ŰąÙ† ÙˆŰ„Űčۯۧۯ Ù…ŰłŰ§Ű­ŰȘه."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"هل ŰȘ۱ŰșŰš في Ű„Űčۯۧۯ ملف ŰŽŰźŰ”ÙŠ Ű§Ù„ŰąÙ†ŰŸ"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ŰłŰȘŰ€ŰŻÙŠ Ű„Űčۧۯ۩ Ű§Ù„Ű¶ŰšŰ· Ű„Ù„Ù‰ ۚۯۥ ŰŹÙ„ŰłŰ© Ű¶ÙŠÙ ŰŹŰŻÙŠŰŻŰ© ÙˆŰ­Ű°Ù ŰŹÙ…ÙŠŰč Ű§Ù„ŰȘŰ·ŰšÙŠÙ‚Ű§ŰȘ ÙˆŰ§Ù„ŰšÙŠŰ§Ù†Ű§ŰȘ من Ű§Ù„ŰŹÙ„ŰłŰ© Ű§Ù„Ű­Ű§Ù„ÙŠŰ©."</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"هل ŰȘŰ±ÙŠŰŻ Ű§Ù„ŰźŰ±ÙˆŰŹ من ÙˆŰ¶Űč Ű§Ù„Ű¶ÙŠÙŰŸ"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"ŰłÙŠŰ€ŰŻÙŠ Ű§Ù„ŰźŰ±ÙˆŰŹ من ÙˆŰ¶Űč Ű§Ù„Ű¶ÙŠÙ Ű„Ù„Ù‰ Ű­Ű°Ù Ű§Ù„ŰȘŰ·ŰšÙŠÙ‚Ű§ŰȘ ÙˆŰ§Ù„ŰšÙŠŰ§Ù†Ű§ŰȘ من ŰŹÙ„ŰłŰ© Ű§Ù„Ű¶ÙŠÙ Ű§Ù„Ű­Ű§Ù„ÙŠŰ©."</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Ù…Ù†Ű­ Ù‡Ű°Ű§ Ű§Ù„Ù…ŰłŰȘŰźŰŻÙ… Ű§Ù…ŰȘÙŠŰ§ŰČۧŰȘ Ű§Ù„Ù…ŰŽŰ±Ù"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"ŰčŰŻÙ… Ù…Ù†Ű­ Ù‡Ű°Ű§ Ű§Ù„Ù…ŰłŰȘŰźŰŻÙ… Ű§Ù…ŰȘÙŠŰ§ŰČۧŰȘ Ű§Ù„Ù…ŰŽŰ±Ù"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"ŰźŰ±ÙˆŰŹ"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"هل ŰȘŰ±ÙŠŰŻ Ű­ÙŰž Ű§Ù„Ù†ŰŽŰ§Ű· في ÙˆŰ¶Űč Ű§Ù„Ű¶ÙŠÙŰŸ"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"يمكنك Ű­ÙŰž Ù†ŰŽŰ§Ű· من Ű§Ù„ŰŹÙ„ŰłŰ© Ű§Ù„Ű­Ű§Ù„ÙŠŰ© ŰŁÙˆ Ű­Ű°Ù كلّ Ű§Ù„ŰȘŰ·ŰšÙŠÙ‚Ű§ŰȘ ÙˆŰ§Ù„ŰšÙŠŰ§Ù†Ű§ŰȘ."</string>
diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml
index 93813e2..ef1f3bf 100644
--- a/packages/SettingsLib/res/values-as/strings.xml
+++ b/packages/SettingsLib/res/values-as/strings.xml
@@ -86,7 +86,7 @@
     <string name="bluetooth_disconnecting" msgid="7638892134401574338">"àŠžàŠ‚àŠŻà§‹àŠ— àŠŹàŠżàŠšà§àŠ›àŠżàŠšà§àŠš àŠ•à§°àŠż àŠ„àŠ•àŠŸ àŠčà§ˆàŠ›à§‡…"</string>
     <string name="bluetooth_connecting" msgid="5871702668260192755">"àŠžàŠ‚àŠŻà§‹àŠ— àŠ•à§°àŠż àŠ„àŠ•àŠŸ àŠčà§ˆàŠ›à§‡…"</string>
     <string name="bluetooth_connected" msgid="8065345572198502293">"<xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g> àŠžàŠ‚àŠŻà§‹àŠ— àŠ•à§°àŠŸ àŠč’àŠČ"</string>
-    <string name="bluetooth_pairing" msgid="4269046942588193600">"àŠȘà§‡àŠŻàŠŒàŠŸà§° àŠ•à§°àŠż àŠ„àŠ•àŠŸ àŠčà§ˆàŠ›à§‡…"</string>
+    <string name="bluetooth_pairing" msgid="4269046942588193600">"àŠŻà§‹à§°àŠŸ àŠČàŠ—à§‹à§±àŠŸ àŠčà§ˆàŠ›à§‡…"</string>
     <string name="bluetooth_connected_no_headset" msgid="2224101138659967604">"àŠžàŠ‚àŠŻà§‹àŠ— àŠ•à§°àŠŸ àŠč’àŠČ (àŠ«\'àŠš àŠšàŠŸàŠ‡)<xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g>"</string>
     <string name="bluetooth_connected_no_a2dp" msgid="8566874395813947092">"àŠžàŠ‚àŠŻà§‹àŠ— àŠ•à§°àŠŸ àŠč’àŠČ (àŠźàŠżàŠĄàŠżàŠŻàŠŒàŠŸ àŠšàŠŸàŠ‡)<xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g>"</string>
     <string name="bluetooth_connected_no_headset_no_a2dp" msgid="2893204819854215433">"àŠžàŠ‚àŠŻà§‹àŠ— àŠ•à§°àŠŸ àŠč’àŠČ (àŠ•à§‹àŠšà§‹ àŠ«\'àŠš àŠŹàŠŸ àŠźàŠżàŠĄàŠżàŠŻàŠŒàŠŸ àŠšàŠŸàŠ‡)<xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g>"</string>
@@ -386,7 +386,7 @@
     <string name="transition_animation_scale_title" msgid="1278477690695439337">"àŠŸà§à§°àŠŸàŠžà§àŠœàŠżàŠ¶à§àŠŹàŠš àŠàŠšàŠżàŠźà§‡àŠ¶à§àŠŹàŠš àŠžà§àŠ•à§‡àŠČ"</string>
     <string name="animator_duration_scale_title" msgid="7082913931326085176">"àŠàŠšàŠżàŠźà§‡àŠŸà§° àŠ•àŠŸàŠČàŠŠà§ˆà§°à§àŠ˜à§àŠŻ àŠžà§àŠ•à§‡àŠČ"</string>
     <string name="overlay_display_devices_title" msgid="5411894622334469607">"àŠ—à§ŒàŠŁ àŠȘà§à§°àŠŠà§°à§àŠ¶àŠšà§° àŠšàŠ•àŠČ àŠŹàŠšàŠŸàŠ“àŠ•"</string>
-    <string name="debug_applications_category" msgid="5394089406638954196">"àŠàŠȘ্‌àŠžàŠźà§‚àŠč"</string>
+    <string name="debug_applications_category" msgid="5394089406638954196">"àŠàŠȘàŠžàŠźà§‚àŠč"</string>
     <string name="immediately_destroy_activities" msgid="1826287490705167403">"àŠ•àŠŸà§°à§àŠŻàŠ•àŠČàŠŸàŠȘàŠžàŠźà§‚àŠč àŠšàŠŸà§°àŠŸàŠ–àŠżàŠŹ"</string>
     <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€ àŠ“àŠČà§‹à§±àŠŸà§° àŠČàŠ—à§‡ àŠČàŠ—à§‡ àŠžàŠ•àŠČো àŠ•àŠŸà§°à§àŠŻàŠ•àŠČàŠŸàŠȘ àŠźàŠšàŠ•"</string>
     <string name="app_process_limit_title" msgid="8361367869453043007">"àŠšà§‡àŠȘàŠ„à§àŠŻàŠ€ àŠšàŠČàŠŸ àŠȘà§à§°àŠ•à§à§°àŠżàŠŻàŠŒàŠŸà§° àŠžà§€àŠźàŠŸ"</string>
@@ -418,7 +418,7 @@
     <item msgid="4548987861791236754">"àŠšàŠ•à§à§±à§‡ àŠŠà§‡àŠ–àŠŸ àŠȘà§‹à§±àŠŸ àŠ§à§°àŠŁà§° àŠȘà§à§°àŠŸàŠ•à§ƒàŠ€àŠżàŠ• à§°àŠ‚"</item>
     <item msgid="1282170165150762976">"àŠĄàŠżàŠœàŠżàŠŸà§‡àŠČ àŠžàŠźàŠČà§° àŠŹàŠŸàŠŹà§‡ à§°àŠ‚ àŠ…àŠȘà§àŠŸàŠżàŠźàŠŸàŠ‡àŠœ àŠ•à§°àŠŸ àŠčà§ˆàŠ›à§‡"</item>
   </string-array>
-    <string name="inactive_apps_title" msgid="5372523625297212320">"àŠ·à§àŠŸà§‡àŠŁà§àŠĄàŠŹàŠŸàŠ‡àŠ€ àŠ„àŠ•àŠŸ àŠàŠȘ্‌àŠžàŠźà§‚àŠč"</string>
+    <string name="inactive_apps_title" msgid="5372523625297212320">"àŠ·à§àŠŸà§‡àŠŁà§àŠĄàŠŹàŠŸàŠ‡àŠ€ àŠ„àŠ•àŠŸ àŠàŠȘàŠžàŠźà§‚àŠč"</string>
     <string name="inactive_app_inactive_summary" msgid="3161222402614236260">"àŠšàŠżàŠ·à§àŠ•à§à§°àŠżàŠŻàŠŒà„€ àŠŸ\'àŠ—àŠČ àŠ•à§°àŠżàŠŹàŠČৈ àŠŸàŠżàŠȘàŠ•à„€"</string>
     <string name="inactive_app_active_summary" msgid="8047630990208722344">"àŠžàŠ•à§à§°àŠżàŠŻàŠŒà„€ àŠŸ\'àŠ—àŠČ àŠ•à§°àŠżàŠŹàŠČৈ àŠŸàŠżàŠȘàŠ•à„€"</string>
     <string name="standby_bucket_summary" msgid="5128193447550429600">"àŠàŠȘ্ àŠ·à§àŠŸà§‡àŠŁà§àŠĄàŠŹàŠŸàŠ‡ àŠ…à§±àŠžà§àŠ„àŠŸàŠ€ àŠ†àŠ›à§‡:<xliff:g id="BUCKET"> %s</xliff:g>"</string>
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"àŠ…àŠ§àŠżàŠ• àŠžàŠźàŠŻàŠŒà„€"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"àŠ•àŠź àŠžàŠźàŠŻàŠŒà„€"</string>
     <string name="cancel" msgid="5665114069455378395">"àŠŹàŠŸàŠ€àŠżàŠČ àŠ•à§°àŠ•"</string>
-    <string name="next" msgid="2699398661093607009">"àŠȘà§°à§±à§°à§àŠ€à§€"</string>
-    <string name="back" msgid="5554327870352703710">"àŠ‰àŠ­àŠ€àŠż àŠŻàŠŸàŠ“àŠ•"</string>
-    <string name="save" msgid="3745809743277153149">"àŠ›à§‡àŠ­ àŠ•à§°àŠ•"</string>
     <string name="okay" msgid="949938843324579502">"àŠ àŠżàŠ•"</string>
     <string name="done" msgid="381184316122520313">"àŠč’àŠČ"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"àŠàŠČàŠŸà§°à§àŠź àŠ†à§°à§ à§°àŠżàŠźàŠŸàŠ‡àŠŁà§àŠĄàŠŸà§°"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"àŠšàŠ€à§àŠš àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€ àŠŻà§‹àŠ— àŠ•à§°àŠżàŠŹàŠšà§‡?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"àŠ†àŠȘà§àŠšàŠż àŠ…àŠ€àŠżà§°àŠżàŠ•à§àŠ€ àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€àŠ• àŠŻà§‹àŠ— àŠ•à§°àŠż àŠàŠ‡ àŠĄàŠżàŠ­àŠŸàŠ‡àŠšàŠŸà§‹ àŠ…àŠšà§àŠŻàŠŒ àŠŹà§àŠŻàŠŒàŠ•à§àŠ€àŠżà§° àŠžà§ˆàŠ€à§‡ àŠ¶à§àŠŹà§‡àŠŻàŠŒàŠŸà§° àŠ•à§°àŠżàŠŹ àŠȘàŠŸà§°à§‡à„€ àŠȘà§à§°àŠ€àŠżàŠœàŠš àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€à§° àŠŹàŠŸàŠŹà§‡ àŠšàŠżàŠœàŠŸàŠ•à§ˆ àŠ àŠŸàŠ‡ àŠ†àŠ›à§‡ àŠŻàŠŸàŠ• àŠ€à§‡àŠ“àŠàŠČà§‹àŠ•à§‡ àŠàŠȘ্, à§±àŠŸàŠČàŠȘেàŠȘàŠŸà§° àŠ†à§°à§ àŠ…àŠšà§àŠŻàŠŒàŠŸàŠšà§àŠŻàŠŒ àŠŹàŠžà§àŠ€à§à§° àŠŹàŠŸàŠŹà§‡ àŠšàŠżàŠœà§° àŠ‰àŠȘàŠŻà§‹àŠ—àŠżàŠ€àŠŸ àŠ…àŠšà§àŠŻàŠŸàŠŻàŠŒà§€ àŠŹà§àŠŻà§±àŠčàŠŸà§° àŠ•à§°àŠżàŠŹ àŠȘàŠŸà§°à§‡à„€ àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€àŠžàŠ•àŠČে àŠžàŠ•àŠČà§‹àŠ•à§‡ àŠȘà§à§°àŠ­àŠŸà§±àŠŸàŠšà§àŠŹàŠżàŠ€ àŠ•à§°àŠŸ à§±àŠŸàŠ‡-àŠ«àŠŸàŠ‡à§° àŠšàŠżàŠšàŠżàŠšàŠŸ àŠĄàŠżàŠ­àŠŸàŠ‡àŠšà§° àŠ›à§‡àŠŸàŠżàŠ‚ àŠžàŠŸàŠČ-àŠžàŠČàŠšàŠż àŠ•à§°àŠżàŠŹàŠ“ àŠȘàŠŸà§°à§‡à„€\n\nàŠ†àŠȘà§àŠšàŠż àŠŻà§‡àŠ€àŠżàŠŻàŠŒàŠŸ àŠ•à§‹àŠšà§‹ àŠšàŠ€à§àŠš àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€àŠ• àŠŻà§‹àŠ— àŠ•à§°à§‡ àŠžà§‡àŠ‡ àŠŹà§àŠŻàŠŒàŠ•à§àŠ€àŠżàŠœàŠšà§‡ àŠšàŠżàŠœà§‡àŠ‡ àŠšàŠżàŠœà§° àŠŹàŠŸàŠŹà§‡ àŠ àŠŸàŠ‡ àŠ›à§‡àŠŸ àŠ†àŠȘ àŠ•à§°àŠżàŠŹ àŠČàŠŸàŠ—àŠżàŠŹà„€\n\nàŠžàŠ•àŠČো àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€àŠŻàŠŒà§‡ àŠ…àŠšà§àŠŻàŠŒ àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€à§° àŠŹàŠŸàŠŹà§‡ àŠàŠȘ্‌àŠžàŠźà§‚àŠč àŠ†àŠȘàŠĄà§‡’àŠŸ àŠ•à§°àŠżàŠŹ àŠȘàŠŸà§°à§‡à„€ àŠžàŠŸàŠ§à§àŠŻàŠŒ àŠžà§àŠŹàŠżàŠ§àŠŸàŠžàŠźà§‚àŠčà§° àŠ›à§‡àŠŸàŠżàŠ‚ àŠ†à§°à§ àŠžà§‡à§±àŠŸàŠžàŠźà§‚àŠč àŠšàŠ€à§àŠš àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€àŠČৈ àŠžà§àŠ„àŠŸàŠšàŠŸàŠšà§àŠ€à§° àŠšàŠč\'àŠŹàŠ“ àŠȘàŠŸà§°à§‡à„€"</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"àŠ†àŠȘà§àŠšàŠż àŠŻà§‡àŠ€àŠżàŠŻàŠŒàŠŸ àŠàŠœàŠš àŠšàŠ€à§àŠš àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€ àŠŻà§‹àŠ— àŠ•à§°à§‡, àŠ€à§‡àŠ“àŠ àŠšàŠżàŠœà§° àŠ àŠŸàŠ‡ àŠ›à§‡àŠŸ àŠ†àŠȘ àŠ•à§°àŠŸà§° àŠȘà§à§°àŠŻàŠŒà§‹àŠœàŠšà„€\n\nàŠŻàŠżàŠ•à§‹àŠšà§‹ àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€àŠŻàŠŒà§‡ àŠ…àŠšà§àŠŻ àŠžàŠ•àŠČো àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€à§° àŠŹàŠŸàŠŹà§‡ àŠàŠȘ্ àŠ†àŠȘàŠĄà§‡\'àŠŸ àŠ•à§°àŠżàŠŹ àŠȘàŠŸà§°à§‡à„€"</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"àŠàŠ‡ àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€àŠ—à§°àŠŸàŠ•à§€àŠ• àŠàŠ—à§°àŠŸàŠ•à§€ àŠȘà§à§°àŠ¶àŠŸàŠžàŠ• àŠŹàŠšàŠŸàŠŹàŠšà§‡?"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"àŠȘà§à§°àŠ¶àŠŸàŠžàŠ•à§° àŠ“àŠšà§°àŠ€ àŠ•àŠżàŠ›à§àŠźàŠŸàŠš àŠŹàŠżàŠ¶à§‡àŠ·àŠŸàŠ§àŠżàŠ•àŠŸà§° àŠ†àŠ›à§‡, àŠŻàŠżàŠŹà§‹à§° àŠ…àŠšà§àŠŻ àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€à§° àŠšàŠŸàŠ‡à„€ àŠàŠ—à§°àŠŸàŠ•à§€ àŠȘà§à§°àŠ¶àŠŸàŠžàŠ•à§‡ àŠžàŠ•àŠČো àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€àŠ• àŠȘà§°àŠżàŠšàŠŸàŠČàŠšàŠŸ àŠ•à§°àŠżàŠŹ, àŠàŠ‡ àŠĄàŠżàŠ­àŠŸàŠ‡àŠšàŠŸà§‹ àŠ†àŠȘàŠĄà§‡’àŠŸ àŠ…àŠ„àŠŹàŠŸ à§°àŠżàŠ›à§‡àŠŸ àŠ•à§°àŠżàŠŹ, àŠ›à§‡àŠŸàŠżàŠ‚ àŠžàŠ‚àŠ¶à§‹àŠ§àŠš àŠ•à§°àŠżàŠŹ, àŠ‡àŠšàŠ·à§àŠŸàŠČ àŠ•à§°àŠż àŠ„à§‹à§±àŠŸ àŠ†àŠŸàŠŸàŠ‡àŠŹà§‹à§° àŠàŠȘ্ àŠšàŠŸàŠŹ àŠ†à§°à§ àŠ…àŠšà§àŠŻ àŠČà§‹àŠ•à§° àŠŹàŠŸàŠŹà§‡ àŠȘà§à§°àŠ¶àŠŸàŠžàŠ•à§° àŠŹàŠżàŠ¶à§‡àŠ·àŠŸàŠ§àŠżàŠ•àŠŸà§° àŠȘà§à§°àŠŠàŠŸàŠš àŠ•à§°àŠżàŠŹ àŠ…àŠ„àŠŹàŠŸ àŠȘà§à§°àŠ€à§àŠŻàŠŸàŠčàŠŸà§° àŠ•à§°àŠżàŠŹ àŠȘàŠŸà§°à§‡à„€"</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"àŠȘà§à§°àŠ¶àŠŸàŠžàŠ•à§° àŠŹàŠšàŠŸàŠ“àŠ•"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"àŠàŠ‡ àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€àŠ—à§°àŠŸàŠ•à§€àŠ• àŠȘà§à§°àŠ¶àŠŸàŠžàŠ•à§° àŠŹàŠżàŠ¶à§‡àŠ·àŠŸàŠ§àŠżàŠ•àŠŸà§° àŠȘà§à§°àŠŠàŠŸàŠš àŠ•à§°àŠżàŠŹàŠšà§‡?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"àŠàŠ—à§°àŠŸàŠ•à§€ àŠȘà§à§°àŠ¶àŠŸàŠžàŠ• àŠčàŠżàŠšàŠŸàŠȘে, àŠ€à§‡àŠ“àŠ àŠ…àŠšà§àŠŻ àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€àŠ• àŠȘà§°àŠżàŠšàŠŸàŠČàŠšàŠŸ àŠ•à§°àŠżàŠŹ, àŠĄàŠżàŠ­àŠŸàŠ‡àŠšà§° àŠ›à§‡àŠŸàŠżàŠ‚ àŠžàŠ‚àŠ¶à§‹àŠ§àŠš àŠ•à§°àŠżàŠŹ àŠ†à§°à§ àŠĄàŠżàŠ­àŠŸàŠ‡àŠšàŠŸà§‹ àŠ«à§‡àŠ•à§àŠŸà§°à§€ à§°àŠżàŠ›à§‡àŠŸ àŠ•à§°àŠżàŠŹ àŠȘàŠŸà§°àŠżàŠŹà„€"</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€ àŠàŠ€àŠżàŠŻàŠŒàŠŸ àŠ›à§‡àŠŸ àŠ†àŠȘ àŠ•à§°àŠżàŠŹàŠšà§‡?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"àŠĄàŠżàŠ­àŠŸàŠ‡àŠšàŠŸà§‹ àŠČৈ àŠšàŠżàŠœà§° àŠ àŠŸàŠ‡ àŠ›à§‡àŠŸàŠ†àŠȘ àŠ•à§°àŠżàŠŹàŠČৈ àŠšàŠ€à§àŠš àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€ àŠ‰àŠȘàŠČàŠŹà§àŠ§ àŠ„àŠ•àŠŸàŠŸà§‹ àŠšàŠżàŠ¶à§àŠšàŠżàŠ€ àŠ•à§°àŠ•"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"àŠàŠ€àŠżàŠŻàŠŒàŠŸ àŠȘ্ৰ\'àŠ«àŠŸàŠ‡àŠČ àŠ›à§‡àŠŸ àŠ†àŠȘ àŠ•à§°àŠżàŠŹàŠšà§‡?"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"àŠàŠ‡àŠŸà§‹à§±à§‡ àŠàŠŸàŠŸ àŠ…àŠ€àŠżàŠ„àŠżà§° àŠ›à§‡àŠ¶à§àŠŹàŠš àŠ†à§°àŠźà§àŠ­ àŠ•à§°àŠżàŠŹ àŠ†à§°à§ àŠŹà§°à§àŠ€àŠźàŠŸàŠšà§° àŠ›à§‡àŠ¶à§àŠŹàŠšàŠŸà§‹à§° àŠȘà§°àŠŸ àŠ†àŠŸàŠŸàŠ‡àŠŹà§‹à§° àŠàŠȘ্ àŠ†à§°à§ àŠĄà§‡àŠŸàŠŸ àŠźàŠšàŠżàŠŹ"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"àŠ…àŠ€àŠżàŠ„àŠż àŠź’àŠĄà§° àŠȘà§°àŠŸ àŠŹàŠŸàŠčàŠżà§° àŠč’àŠŹàŠšà§‡?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"àŠàŠ‡àŠŸà§‹à§±à§‡ àŠŹà§°à§àŠ€àŠźàŠŸàŠšà§° àŠ…àŠ€àŠżàŠ„àŠżà§° àŠ›à§‡àŠ¶à§àŠŹàŠšàŠŸà§‹à§° àŠȘà§°àŠŸ àŠàŠȘ্ àŠ†à§°à§ àŠĄà§‡àŠŸàŠŸ àŠźàŠšàŠżàŠŹ"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"àŠčàŠŻàŠŒ, àŠ€à§‡àŠ“àŠàŠ• àŠàŠ—à§°àŠŸàŠ•à§€ àŠȘà§à§°àŠ¶àŠŸàŠžàŠ• àŠŹàŠšàŠŸàŠ“àŠ•"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"àŠšàŠčàŠŻàŠŒ, àŠ€à§‡àŠ“àŠàŠ• àŠàŠ—à§°àŠŸàŠ•à§€ àŠȘà§à§°àŠ¶àŠŸàŠžàŠ• àŠšàŠŹàŠšàŠŸàŠŹ"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€àŠ—à§°àŠŸàŠ•à§€àŠ• àŠȘà§à§°àŠ¶àŠŸàŠžàŠ•à§° àŠŹàŠżàŠ¶à§‡àŠ·àŠŸàŠ§àŠżàŠ•àŠŸà§° àŠŠàŠżàŠŻàŠŒàŠ•"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"àŠŹà§àŠŻà§±àŠčàŠŸà§°àŠ•àŠŸà§°à§€àŠ• àŠȘà§à§°àŠ¶àŠŸàŠžàŠ•à§° àŠŹàŠżàŠ¶à§‡àŠ·àŠŸàŠ§àŠżàŠ•àŠŸà§° àŠȘà§à§°àŠŠàŠŸàŠš àŠšàŠ•à§°àŠżàŠŹ"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"àŠŹàŠŸàŠčàŠżà§° àŠčàŠ“àŠ•"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"àŠ…àŠ€àŠżàŠ„àŠżà§° àŠ•àŠŸà§°à§àŠŻàŠ•àŠČàŠŸàŠȘ àŠ›à§‡àŠ­ àŠ•à§°àŠżàŠŹàŠšà§‡?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"àŠ†àŠȘà§àŠšàŠż àŠŹà§°à§àŠ€àŠźàŠŸàŠšà§° àŠ›à§‡àŠ¶à§àŠŹàŠšàŠŸà§‹à§° àŠȘà§°àŠŸ àŠ•àŠŸà§°à§àŠŻàŠ•àŠČàŠŸàŠȘ àŠ›à§‡àŠ­ àŠ•à§°àŠżàŠŹ àŠȘàŠŸà§°à§‡ àŠ…àŠ„àŠŹàŠŸ àŠ†àŠŸàŠŸàŠ‡àŠŹà§‹à§° àŠàŠȘ্ àŠ†à§°à§ àŠĄà§‡àŠŸàŠŸ àŠźàŠšàŠżàŠŹ àŠȘàŠŸà§°à§‡"</string>
diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml
index 9d441c9..cb476e2 100644
--- a/packages/SettingsLib/res/values-az/strings.xml
+++ b/packages/SettingsLib/res/values-az/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Daha çox vaxt."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Daha az vaxt."</string>
     <string name="cancel" msgid="5665114069455378395">"Ləğv edin"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"Ok"</string>
     <string name="done" msgid="381184316122520313">"Hazırdır"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Siqnallar və xatırladıcılar"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Yeni istifadəçi əlavə edilsin?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Əlavə istifadəçilər yaratmaqla bu cihazı digərləri ilə paylaßa bilərsiniz. Hər bir istifadəçinin tətbiq, divar kağızı və daha çoxu ilə fərdiləƟdirə biləcəyi fərdi məkanları olacaq. İstifadəçilər hər kəsə təsir edən Wi‑Fi kimi cihaz ayarlarını da tənzimləyə biləcək.\n\nYeni istifadəçi əlavə etdiyiniz zaman həmin istifadəçi öz məkanını ayarlamalıdır.\n\nİstənilən istifadəçi tətbiqləri digər bütün istifadəçilər üçün güncəlləyə bilər. Əlçatımlılıq ayarları və xidmətlər yeni istifadəçiyə transfer edilməyə bilər."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Yeni istifadəçi əlavə etdiyiniz zaman həmin Ɵəxs öz yerini quraßdırmalıdır.\n\nİstənilən istifadəçi bütün digər istifadəçilərdən olan tətbiqləri güncəlləƟdirə bilər."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Bu istifadəçiyə admin imtiyazları verilsin?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Admin olaraq o, digər istifadəçiləri idarə edə, cihaz ayarlarını dəyißdirə və cihazı zavod ayarlarına sıfırlaya biləcək."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"İstifadəçi indi ayarlansın?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"ƞəxsin cihazı götürə bilməsinə və yerini quraßdıra bilməsinə əmin olun"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profil indi quraßdırılsın?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Bu, yeni qonaq sessiyası baßladacaq və cari sessiyadan bütün tətbiqləri və datanı siləcək"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Qonaq rejimindən çıxılsın?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Bununla cari qonaq sessiyasındakı bütün tətbiqlər və data silinəcək"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Bu istifadəçiyə admin imtiyazları verin"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"İstifadəçiyə admin imtiyazları verməyin"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Çıxın"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Qonaq fəaliyyəti saxlansın?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Cari sessiyadakı fəaliyyəti saxlaya və ya bütün tətbiq və datanı silə bilərsiniz"</string>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
index 62025e4..c87f8aa 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Više vremena."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Manje vremena."</string>
     <string name="cancel" msgid="5665114069455378395">"OtkaĆŸi"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"Potvrdi"</string>
     <string name="done" msgid="381184316122520313">"Gotovo"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmi i podsetnici"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Dodajete novog korisnika?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Ovaj uređaj moĆŸete da delite sa drugim ljudima ako napravite još korisnika. Svaki korisnik ima sopstveni prostor, koji moĆŸe da prilagođava pomoću aplikacija, pozadine i slično. Korisnici mogu da prilagođavaju i podešavanja uređaja koja utiču na svakoga, poput Wi‑Fi-ja.\n\nKada dodate novog korisnika, ta osoba treba da podesi sopstveni prostor.\n\nSvaki korisnik moĆŸe da aĆŸurira aplikacije za sve ostale korisnike. Podešavanja i usluge pristupačnosti ne mogu da se prenose na novog korisnika."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Kada dodate novog korisnika, ta osoba treba da podesi sopstveni prostor.\n\nSvaki korisnik moĆŸe da aĆŸurira aplikacije za sve ostale korisnike."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Dajete privilegije administratora?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Kao administrator, moći će da upravlja drugim korisnicima, menja podešavanja uređaja i resetuje uređaj na fabrička podešavanja."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Podešavate korisnika?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Ta osoba treba da uzme uređaj i podesi svoj prostor"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Ćœelite li da odmah podesite profil?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Time ćete pokrenuti novu sesiju gosta i izbrisati sve aplikacije i podatke iz aktuelne sesije"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Izlazite iz reĆŸima gosta?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Time ćete izbrisati sve aplikacije i podatke iz aktuelne sesije gosta"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Daj ovom korisniku administratorske privilegije"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Ne daj korisniku administratorske privilegije"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Izađi"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Sačuvaćete aktivnosti gosta?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Sačuvajte aktivnosti iz aktuelne sesije ili izbrišite sve aplikacije i podatke"</string>
@@ -677,7 +665,7 @@
     <string name="physical_keyboard_title" msgid="4811935435315835220">"Fizička tastatura"</string>
     <string name="keyboard_layout_dialog_title" msgid="3927180147005616290">"Odaberite raspored tastature"</string>
     <string name="keyboard_layout_default_label" msgid="1997292217218546957">"Podrazumevano"</string>
-    <string name="turn_screen_on_title" msgid="3266937298097573424">"Uključivanje ekrana"</string>
+    <string name="turn_screen_on_title" msgid="3266937298097573424">"Uključite ekran"</string>
     <string name="allow_turn_screen_on" msgid="6194845766392742639">"Dozvoli uključivanje ekrana"</string>
     <string name="allow_turn_screen_on_description" msgid="43834403291575164">"Dozvoljava aplikaciji da uključi ekran. Ako se omogući, aplikacija moĆŸe da uključi ekran u bilo kom trenutku bez vaše eksplicitne namere."</string>
     <string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"Ćœelite da zaustavite emitovanje aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
index 4a81fab..3e9bbb0 100644
--- a/packages/SettingsLib/res/values-be/strings.xml
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -141,7 +141,7 @@
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"ĐĄĐșасаĐČаць"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"ĐĄĐżĐ°Đ»ŃƒŃ‡ŃĐœĐœĐ” ЎаД ĐŽĐŸŃŃ‚ŃƒĐż Ўа ĐČашых ĐșĐ°ĐœŃ‚Đ°Đșтаў і ĐłŃ–ŃŃ‚ĐŸŃ€Ń‹Ń– ĐČыĐșліĐșаў пры паЎĐșĐ»ŃŽŃ‡ŃĐœĐœŃ–."</string>
     <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"ĐĐ” Đ°Ń‚Ń€Ń‹ĐŒĐ°Đ»Đ°ŃŃ паЎĐșлючыцца Ўа прылаЎы <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"ĐĐ” ŃĐżĐ°Đ»ŃƒŃ‡Đ°ĐœĐ° Đ· прылаЎаĐč <xliff:g id="DEVICE_NAME">%1$s</xliff:g> Đ·-за ĐœŃĐżŃ€Đ°ĐČŃ–Đ»ŃŒĐœĐ°ĐłĐ° PIN-ĐșĐŸĐŽĐ° Đ°Đ±ĐŸ Đșлюча ĐŽĐŸŃŃ‚ŃƒĐżŃƒ."</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"ĐĐ” Đ°Ń‚Ń€Ń‹ĐŒĐ°Đ»Đ°ŃŃ ŃĐżĐ°Đ»ŃƒŃ‡Ń‹Ń†Ń†Đ° Đ· прылаЎаĐč <xliff:g id="DEVICE_NAME">%1$s</xliff:g>, Ń‚Đ°ĐŒŃƒ ŃˆŃ‚ĐŸ PIN-ĐșĐŸĐŽ Đ°Đ±ĐŸ ĐżĐ°Ń€ĐŸĐ»ŃŒ ĐœŃĐżŃ€Đ°ĐČiĐ»ŃŒĐœŃ‹Ń."</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"ĐĐ” ĐŒĐ°ĐłŃƒ Ń€Đ°Đ·ĐŒĐ°ŃžĐ»ŃŃ†ŃŒ Đ· прылаЎаĐč <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Đ—Đ»ŃƒŃ‡ŃĐœĐœĐ” Đ°ĐŽŃ…Ń–Đ»Đ”ĐœĐ° прылаЎаĐč <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"ĐšĐ°ĐŒĐż\'ютар"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Đ‘ĐŸĐ»ŃŒŃˆ часу."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"ĐœĐ”ĐœŃˆ часу."</string>
     <string name="cancel" msgid="5665114069455378395">"ĐĄĐșасаĐČаць"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"ОК"</string>
     <string name="done" msgid="381184316122520313">"Đ“Đ°Ń‚ĐŸĐČа"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Đ‘ŃƒĐŽĐ·Ń–Đ»ŃŒĐœŃ–Đșі і ĐœĐ°ĐżĐ°ĐŒŃ–ĐœŃ‹"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"ДаЮаць ĐœĐŸĐČага ĐșĐ°Ń€Ń‹ŃŃ‚Đ°Đ»ŃŒĐœŃ–Đșа?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Вы ĐŒĐŸĐ¶Đ°Ń†Đ” аЎĐșрыць ĐŽĐŸŃŃ‚ŃƒĐż Ўа гэтаĐč прылаЎы Ń–ĐœŃˆŃ‹ĐŒ Đ»ŃŽĐŽĐ·ŃĐŒ ŃˆĐ»ŃŃ…Đ°ĐŒ стĐČĐ°Ń€ŃĐœĐœŃ ЮаЮатĐșĐŸĐČых ĐșĐ°Ń€Ń‹ŃŃ‚Đ°Đ»ŃŒĐœŃ–Đșаў. ĐšĐŸĐ¶ĐœŃ‹ ĐșĐ°Ń€Ń‹ŃŃ‚Đ°Đ»ŃŒĐœŃ–Đș ĐŒĐ°Đ” сĐČĐŸĐč ŃƒĐ»Đ°ŃĐœŃ‹ разЎзДл, ĐœĐ° яĐșŃ–ĐŒ Ń‘Đœ ĐŒĐŸĐ¶Đ° ĐœĐ°Đ»Đ°ĐŽĐ·Ń–Ń†ŃŒ сĐČаД ĐżŃ€Đ°ĐłŃ€Đ°ĐŒŃ‹, ŃˆĐżĐ°Đ»Đ”Ń€Ń‹ і Ń–ĐœŃˆĐ°Đ”. ĐšĐ°Ń€Ń‹ŃŃ‚Đ°Đ»ŃŒĐœŃ–Đșі таĐșŃĐ°ĐŒĐ° ĐŒĐŸĐłŃƒŃ†ŃŒ ĐœĐ°Đ»Đ°ĐŽĐ¶ĐČаць ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Ń‹ прылаЎы, ĐœĐ°ĐżŃ€Ń‹ĐșлаЎ Wi-Fi, яĐșія ўплыĐČаюць ĐœĐ° ўсіх.\n\nКалі ĐČы ĐŽĐ°ĐŽĐ°ŃŃ†Đ” ĐœĐŸĐČага ĐșĐ°Ń€Ń‹ŃŃ‚Đ°Đ»ŃŒĐœŃ–Đșа, Ń‘Đœ паĐČŃ–ĐœĐ”Đœ ĐœĐ°Đ»Đ°ĐŽĐ·Ń–Ń†ŃŒ сĐČĐŸĐč разЎзДл.\n\nЛюбы ĐșĐ°Ń€Ń‹ŃŃ‚Đ°Đ»ŃŒĐœŃ–Đș ĐŒĐŸĐ¶Đ° Đ°Đ±ĐœĐ°ŃžĐ»ŃŃ†ŃŒ ĐżŃ€Đ°ĐłŃ€Đ°ĐŒŃ‹ ĐŽĐ»Ń ўсіх Đ°ŃŃ‚Đ°Ń‚ĐœŃ–Ń… ĐșĐ°Ń€Ń‹ŃŃ‚Đ°Đ»ŃŒĐœŃ–Đșаў. ĐĄĐżĐ”Ń†Ń‹ŃĐ»ŃŒĐœŃ‹Ń ĐŒĐ°ĐłŃ‡Ń‹ĐŒĐ°ŃŃ†Ń– ĐœĐ°Đ»Đ°ĐŽĐ¶ĐČаюцца асабіста ĐșĐŸĐ¶ĐœŃ‹ĐŒ ĐșĐ°Ń€Ń‹ŃŃ‚Đ°Đ»ŃŒĐœŃ–ĐșĐ°ĐŒ."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"ĐŸĐ°ŃĐ»Ń стĐČĐ°Ń€ŃĐœĐœŃ ĐżŃ€ĐŸŃ„Ń–Đ»Ń ŃĐłĐŸ Ń‚Ń€ŃĐ±Đ° ĐœĐ°Đ»Đ°ĐŽĐ·Ń–Ń†ŃŒ.\n\nЛюбы ĐșĐ°Ń€Ń‹ŃŃ‚Đ°Đ»ŃŒĐœŃ–Đș прылаЎы ĐŒĐŸĐ¶Đ° Đ°Đ±ĐœĐ°ŃžĐ»ŃŃ†ŃŒ ĐżŃ€Đ°ĐłŃ€Đ°ĐŒŃ‹ ўсіх Ń–ĐœŃˆŃ‹Ń… ĐșĐ°Ń€Ń‹ŃŃ‚Đ°Đ»ŃŒĐœŃ–Đșаў."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Даць ĐłŃŃ‚Đ°ĐŒŃƒ ĐșĐ°Ń€Ń‹ŃŃ‚Đ°Đ»ŃŒĐœŃ–Đșу праĐČы Đ°ĐŽĐŒŃ–ĐœŃ–ŃŃ‚Ń€Đ°Ń‚Đ°Ń€Đ°?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"ĐĐŽĐŒŃ–ĐœŃ–ŃŃ‚Ń€Đ°Ń‚Đ°Ń€ ĐŒĐŸĐ¶Đ° ĐșіраĐČаць Ń–ĐœŃˆŃ‹ĐŒŃ– ĐșĐ°Ń€Ń‹ŃŃ‚Đ°Đ»ŃŒĐœŃ–ĐșĐ°ĐŒŃ–, Đ·ĐŒŃĐœŃŃ†ŃŒ ĐœĐ°Đ»Đ°ĐŽŃ‹ прылаЎы і сĐșіЮĐČаць ĐœĐ°Đ»Đ°ĐŽŃ‹ прылаЎы Ўа заĐČĐŸĐŽŃĐșіх Đ·ĐœĐ°Ń‡ŃĐœĐœŃŃž."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"ĐĐ°Đ»Đ°ĐŽĐ·Ń–Ń†ŃŒ ĐżŃ€ĐŸŃ„Ń–Đ»ŃŒ?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"ĐŸĐ”Ń€Đ°ĐșĐ°ĐœĐ°ĐčŃ†Đ”ŃŃ, ŃˆŃ‚ĐŸ чалаĐČĐ”Đș ĐŒĐ°Đ” ĐŒĐ°ĐłŃ‡Ń‹ĐŒĐ°ŃŃ†ŃŒ ŃƒĐ·ŃŃ†ŃŒ ĐżŃ€Ń‹Đ»Đ°ĐŽŃƒ і ĐœĐ°Đ»Đ°ĐŽĐ·Ń–Ń†ŃŒ сĐČĐŸĐč разЎзДл"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ĐĐ°Đ»Đ°ĐŽĐ·iць ĐżŃ€ĐŸŃ„iĐ»ŃŒ?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Đ‘ŃƒĐŽĐ·Đ” Đ·Đ°ĐżŃƒŃˆŃ‡Đ°ĐœŃ‹ ĐœĐŸĐČы гасцяĐČы ŃĐ”Đ°ĐœŃ. УсД ĐżŃ€Đ°ĐłŃ€Đ°ĐŒŃ‹ і ĐŽĐ°ĐœŃ‹Ń Đ±ŃĐłŃƒŃ‡Đ°ĐłĐ° ŃĐ”Đ°ĐœŃĐ° Đ±ŃƒĐŽŃƒŃ†ŃŒ ĐČŃ‹ĐŽĐ°Đ»Đ”ĐœŃ‹"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"ВыĐčсці Đ· гасцяĐČĐŸĐłĐ° Ń€ŃĐ¶Ń‹ĐŒŃƒ?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"БуЮуць ĐČŃ‹ĐŽĐ°Đ»Đ”ĐœŃ‹ ĐżŃ€Đ°ĐłŃ€Đ°ĐŒŃ‹ і ĐŽĐ°ĐœŃ‹Ń Đ±ŃĐłŃƒŃ‡Đ°ĐłĐ° гасцяĐČĐŸĐłĐ° ŃĐ”Đ°ĐœŃĐ°"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Даць ĐłŃŃ‚Đ°ĐŒŃƒ ĐșĐ°Ń€Ń‹ŃŃ‚Đ°Đ»ŃŒĐœŃ–Đșу праĐČы Đ°ĐŽĐŒŃ–ĐœŃ–ŃŃ‚Ń€Đ°Ń‚Đ°Ń€Đ°"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"ĐĐ” ЎаĐČаць ĐșĐ°Ń€Ń‹ŃŃ‚Đ°Đ»ŃŒĐœŃ–Đșу праĐČы Đ°ĐŽĐŒŃ–ĐœŃ–ŃŃ‚Ń€Đ°Ń‚Đ°Ń€Đ°"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"ВыĐčсці"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ЗахаĐČаць ĐŽĐ·Đ”ŃĐœĐœŃ– ĐłĐŸŃŃ†Ń?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ĐœĐŸĐ¶ĐœĐ° захаĐČаць ĐŽĐ°ĐœŃ‹Ń пра ĐŽĐ·Đ”ŃĐœĐœŃ– ў Đ±ŃĐłŃƒŃ‡Ń‹ĐŒ ŃĐ”Đ°ĐœŃĐ” ці ĐČŃ‹ĐŽĐ°Đ»Ń–Ń†ŃŒ ĐżŃ€Đ°ĐłŃ€Đ°ĐŒŃ‹ і ĐŽĐ°ĐœŃ‹Ń"</string>
diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml
index b6b76c5..9f425a88 100644
--- a/packages/SettingsLib/res/values-bg/strings.xml
+++ b/packages/SettingsLib/res/values-bg/strings.xml
@@ -47,7 +47,7 @@
     <string name="wifi_security_sae" msgid="3644520541721422843">"WPA3-Personal"</string>
     <string name="wifi_security_psk_sae" msgid="8135104122179904684">"WPA2/WPA3-Personal"</string>
     <string name="wifi_security_none_owe" msgid="5241745828327404101">"ĐŃĐŒĐ°/Enhanced Open"</string>
-    <string name="wifi_security_owe" msgid="3343421403561657809">"Enhanced Open"</string>
+    <string name="wifi_security_owe" msgid="3343421403561657809">"ĐĄŃ‚Đ°ĐœĐŽĐ°Ń€Ń‚ за ŃĐžĐłŃƒŃ€ĐœĐŸŃŃ‚ Enhanced Open"</string>
     <string name="wifi_security_eap_suiteb" msgid="415842785991698142">"WPA3-Enterprise, 192-Đ±ĐžŃ‚ĐŸĐČа защОта"</string>
     <string name="wifi_remembered" msgid="3266709779723179188">"Đ—Đ°ĐżĐ°Đ·Đ”ĐœĐŸ"</string>
     <string name="wifi_disconnected" msgid="7054450256284661757">"ĐŃĐŒĐ° ĐČръзĐșа"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"ĐŸĐŸĐČДчД ĐČŃ€Đ”ĐŒĐ”."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"ĐŸĐŸ-ĐŒĐ°Đ»ĐșĐŸ ĐČŃ€Đ”ĐŒĐ”."</string>
     <string name="cancel" msgid="5665114069455378395">"ОтĐșаз"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"ОK"</string>
     <string name="done" msgid="381184316122520313">"Đ“ĐŸŃ‚ĐŸĐČĐŸ"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Đ‘ŃƒĐŽĐžĐ»ĐœĐžŃ†Đž Đž ĐœĐ°ĐżĐŸĐŒĐœŃĐœĐžŃ"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Đ”ĐŸĐ±Đ°ĐČŃĐœĐ” ĐœĐ° ĐœĐŸĐČ ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"ĐœĐŸĐ¶Đ”Ń‚Đ” Ўа ŃĐżĐŸĐŽĐ”Đ»ĐžŃ‚Đ” Ń‚ĐŸĐČа ŃƒŃŃ‚Ń€ĐŸĐčстĐČĐŸ с Юруго Ń…ĐŸŃ€Đ°, ĐșĐ°Ń‚ĐŸ съзЎаЎДтД ĐŽĐŸĐżŃŠĐ»ĐœĐžŃ‚Đ”Đ»ĐœĐž ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»Đž. ВсДĐșĐž ĐŸŃ‚ тях ĐžĐŒĐ° ŃĐŸĐ±ŃŃ‚ĐČĐ”ĐœĐŸ Ń€Đ°Đ±ĐŸŃ‚ĐœĐŸ ĐżŃ€ĐŸŃŃ‚Ń€Đ°ĐœŃŃ‚ĐČĐŸ, ĐșĐŸĐ”Ń‚ĐŸ ĐŒĐŸĐ¶Đ” Ўа ĐżĐ”Ń€ŃĐŸĐœĐ°Đ»ĐžĐ·ĐžŃ€Đ° с ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃ, тапДт Đž Юр. ĐŸĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»ĐžŃ‚Đ” ĐŒĐŸĐłĐ°Ń‚ ŃŃŠŃ‰ĐŸ Ўа ĐșĐŸŃ€ĐžĐłĐžŃ€Đ°Ń‚ ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ĐœĐ° ŃƒŃŃ‚Ń€ĐŸĐčстĐČĐŸŃ‚ĐŸ, ĐșĐŸĐžŃ‚ĐŸ Đ·Đ°ŃŃĐłĐ°Ń‚ ĐČсочĐșĐž – ĐœĐ°ĐżŃ€ĐžĐŒĐ”Ń€ за Wi‑Fi.\n\nĐšĐŸĐłĐ°Ń‚ĐŸ ĐŽĐŸĐ±Đ°ĐČОтД ĐœĐŸĐČ ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ», Ń‚ĐŸĐč Ń‚Ń€ŃĐ±ĐČа Ўа ĐœĐ°ŃŃ‚Ń€ĐŸĐž Ń€Đ°Đ±ĐŸŃ‚ĐœĐŸŃ‚ĐŸ сО ĐżŃ€ĐŸŃŃ‚Ń€Đ°ĐœŃŃ‚ĐČĐŸ.\n\nВсДĐșĐž ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ» ĐŒĐŸĐ¶Đ” Ўа аĐșŃ‚ŃƒĐ°Đ»ĐžĐ·ĐžŃ€Đ° ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃŃ‚Đ° за ĐČсочĐșĐž ĐŸŃŃ‚Đ°ĐœĐ°Đ»Đž ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»Đž. ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșОтД Đž ŃƒŃĐ»ŃƒĐłĐžŃ‚Đ” за ĐŽĐŸŃŃ‚ŃŠĐżĐœĐŸŃŃ‚ ĐŒĐŸĐ¶Đ” Ўа ĐœĐ” сД прДхĐČŃŠŃ€Đ»ŃŃ‚ за ĐœĐŸĐČоя ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"ĐšĐŸĐłĐ°Ń‚ĐŸ ĐŽĐŸĐ±Đ°ĐČОтД ĐœĐŸĐČ ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ», Ń‚ĐŸĐč Ń‚Ń€ŃĐ±ĐČа Ўа ĐœĐ°ŃŃ‚Ń€ĐŸĐž Ń€Đ°Đ±ĐŸŃ‚ĐœĐŸŃ‚ĐŸ сО ĐżŃ€ĐŸŃŃ‚Ń€Đ°ĐœŃŃ‚ĐČĐŸ.\n\nВсДĐșĐž ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ» ĐŒĐŸĐ¶Đ” Ўа аĐșŃ‚ŃƒĐ°Đ»ĐžĐ·ĐžŃ€Đ° ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃŃ‚Đ° за ĐČсочĐșĐž ĐŸŃŃ‚Đ°ĐœĐ°Đ»Đž ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»Đž."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Да сД ЮаЮат лО Đ°ĐŽĐŒĐžĐœ. праĐČа?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"ĐšĐ°Ń‚ĐŸ Đ°ĐŽĐŒĐžĐœĐžŃŃ‚Ń€Đ°Ń‚ĐŸŃ€ Ń‚ĐŸĐ·Đž ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ» щД ĐŒĐŸĐ¶Đ” Ўа упраĐČĐ»ŃĐČа Юруго ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»Đž, Ўа ĐżŃ€ĐŸĐŒĐ”ĐœŃ ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșОтД ĐœĐ° ŃƒŃŃ‚Ń€ĐŸĐčстĐČĐŸŃ‚ĐŸ Đž Ўа ĐČŃŠĐ·ŃŃ‚Đ°ĐœĐŸĐČяĐČа Ń„Đ°Đ±Ń€ĐžŃ‡ĐœĐžŃ‚Đ” ĐŒŃƒ ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"ĐĐ°ŃŃ‚Ń€ĐŸĐčĐČĐ°ĐœĐ” ĐœĐ° ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»Ń?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"ĐŁĐČДрДтД сД, чД Ń‡ĐŸĐČĐ”Đșът ĐžĐŒĐ° ĐČŃŠĐ·ĐŒĐŸĐ¶ĐœĐŸŃŃ‚ Ўа ĐČĐ·Đ”ĐŒĐ” ŃƒŃŃ‚Ń€ĐŸĐčстĐČĐŸŃ‚ĐŸ Đž Ўа ĐœĐ°ŃŃ‚Ń€ĐŸĐž Ń€Đ°Đ±ĐŸŃ‚ĐœĐŸŃ‚ĐŸ сО ĐżŃ€ĐŸŃŃ‚Ń€Đ°ĐœŃŃ‚ĐČĐŸ."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ЩД ĐœĐ°ŃŃ‚Ń€ĐŸĐžŃ‚Đ” лО ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»ŃĐșоя ĐżŃ€ĐŸŃ„ĐžĐ» сДга?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"йаĐșа щД стартОратД ĐœĐŸĐČа ŃĐ”ŃĐžŃ ĐșĐ°Ń‚ĐŸ ĐłĐŸŃŃ‚ Đž щД ОзтрОДтД ĐČсочĐșĐž ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃ Đž ĐŽĐ°ĐœĐœĐž ĐŸŃ‚ тДĐșущата ŃĐ”ŃĐžŃ"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Đ˜Đ·Ń…ĐŸĐŽ ĐŸŃ‚ Ń€Đ”Đ¶ĐžĐŒĐ° ĐœĐ° ĐłĐŸŃŃ‚?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"йаĐșа щД ОзтрОДтД ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃŃ‚Đ° Đž ĐŽĐ°ĐœĐœĐžŃ‚Đ” ĐŸŃ‚ тДĐșущата ŃĐ”ŃĐžŃ ĐșĐ°Ń‚ĐŸ ĐłĐŸŃŃ‚"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"ĐŸŃ€Đ”ĐŽĐŸŃŃ‚Đ°ĐČŃĐœĐ” ĐœĐ° Đ°ĐŽĐŒĐžĐœĐžŃŃ‚Ń€Đ°Ń‚ĐŸŃ€ŃĐșĐž праĐČа ĐœĐ° Ń‚ĐŸĐ·Đž ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"БДз ĐżŃ€Đ”ĐŽĐŸŃŃ‚Đ°ĐČŃĐœĐ” ĐœĐ° Đ°ĐŽĐŒĐžĐœĐžŃŃ‚Ń€Đ°Ń‚ĐŸŃ€ŃĐșĐž праĐČа ĐœĐ° ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»Ń"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Đ˜Đ·Ń…ĐŸĐŽ"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ЗапазĐČĐ°ĐœĐ” ĐœĐ° аĐșтоĐČĐœĐŸŃŃ‚Ń‚Đ° ĐșĐ°Ń‚ĐŸ ĐłĐŸŃŃ‚?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ĐœĐŸĐ¶Đ”Ń‚Đ” Ўа запазОтД аĐșтоĐČĐœĐŸŃŃ‚Ń‚Đ° ĐŸŃ‚ ŃĐ”ŃĐžŃŃ‚Đ° ОлО Ўа ОзтрОДтД ĐČсочĐșĐž прОл. Đž ĐŽĐ°ĐœĐœĐž"</string>
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index a4ff171..1a353d7 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"àŠ†àŠ°àŠ“ àŠŹà§‡àŠ¶àŠżà„€"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"àŠ†àŠ°àŠ“ àŠ•àŠźà„€"</string>
     <string name="cancel" msgid="5665114069455378395">"àŠŹàŠŸàŠ€àŠżàŠČ"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"àŠ àŠżàŠ• àŠ†àŠ›à§‡"</string>
     <string name="done" msgid="381184316122520313">"àŠčàŠŻàŠŒà§‡ àŠ—à§‡àŠ›à§‡"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"àŠ…à§àŠŻàŠŸàŠČàŠŸàŠ°à§àŠź àŠàŠŹàŠ‚ àŠ°àŠżàŠźàŠŸàŠ‡àŠšà§àŠĄàŠŸàŠ°"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"àŠšàŠ€à§àŠš àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠ•àŠŸàŠ°à§€ àŠœà§àŠĄàŠŒàŠŹà§‡àŠš?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"àŠ†àŠȘàŠšàŠż àŠàŠ•àŠŸàŠ§àŠżàŠ• àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠ•àŠŸàŠ°à§€àŠ° àŠ†àŠ‡àŠĄàŠż àŠ€à§ˆàŠ°àŠż àŠ•àŠ°à§‡ àŠ…àŠšà§àŠŻàŠŠà§‡àŠ° àŠžàŠŸàŠ„à§‡ àŠàŠ‡ àŠĄàŠżàŠ­àŠŸàŠ‡àŠžàŠŸàŠż àŠ¶à§‡àŠŻàŠŒàŠŸàŠ° àŠ•àŠ°àŠ€à§‡ àŠȘàŠŸàŠ°à§‡àŠšà„€ àŠĄàŠżàŠ­àŠŸàŠ‡àŠžà§‡àŠ° àŠžà§àŠŸà§‹àŠ°à§‡àŠœà§‡ àŠȘà§àŠ°àŠ€à§àŠŻà§‡àŠ• àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠ•àŠŸàŠ°à§€ àŠ€àŠŸàŠ° àŠšàŠżàŠœàŠžà§àŠŹ àŠœàŠŸàŠŻàŠŒàŠ—àŠŸ àŠȘàŠŸàŠŹà§‡àŠš àŠŻàŠŸ àŠ€àŠżàŠšàŠż àŠ…à§àŠŻàŠŸàŠȘ, àŠ“àŠŻàŠŒàŠŸàŠČàŠȘেàŠȘàŠŸàŠ° àŠàŠŹàŠ‚ àŠ†àŠ°àŠ“ àŠ…àŠšà§‡àŠ• àŠ•àŠżàŠ›à§ àŠŠàŠżàŠŻàŠŒà§‡ àŠ•àŠŸàŠžà§àŠŸàŠźàŠŸàŠ‡àŠœ àŠ•àŠ°àŠ€à§‡ àŠȘàŠŸàŠ°à§‡àŠšà„€ àŠ“àŠŻàŠŒàŠŸàŠ‡-àŠ«àŠŸàŠ‡ àŠàŠ° àŠźàŠ€à§‹ àŠĄàŠżàŠ­àŠŸàŠ‡àŠž àŠžà§‡àŠŸàŠżàŠ‚àŠž, àŠŻà§‡àŠ—à§àŠČàŠż àŠžàŠ•àŠČà§‡àŠ° àŠ•à§àŠ·à§‡àŠ€à§àŠ°à§‡ àŠȘà§àŠ°àŠŻà§‹àŠœà§àŠŻ àŠčàŠŻàŠŒ, àŠžà§‡àŠ—à§àŠČàŠż àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠ•àŠŸàŠ°à§€àŠ°àŠŸ àŠȘàŠ°àŠżàŠŹàŠ°à§àŠ€àŠš àŠ•àŠ°àŠ€à§‡ àŠȘàŠŸàŠ°àŠŹà§‡àŠšà„€\n\nàŠšàŠ€à§àŠš àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠ•àŠŸàŠ°à§€àŠ° àŠ†àŠ‡àŠĄàŠż àŠŻà§‹àŠ— àŠ•àŠ°àŠČে àŠžà§‡àŠ‡ àŠŹà§àŠŻàŠ•à§àŠ€àŠżàŠ•à§‡ àŠžà§àŠŸà§‹àŠ°à§‡àŠœà§‡ àŠ€àŠŸàŠ° àŠšàŠżàŠœà§‡àŠ° àŠœàŠŸàŠŻàŠŒàŠ—àŠŸ àŠžà§‡àŠŸ-àŠ†àŠȘ àŠ•àŠ°àŠ€à§‡ àŠčàŠŹà§‡à„€\n\nàŠ…àŠšà§àŠŻàŠŸàŠšà§àŠŻ àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠ•àŠŸàŠ°à§€àŠŠà§‡àŠ° àŠčàŠŻàŠŒà§‡ àŠŻà§‡ àŠ•à§‹àŠšàŠ“ àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠ•àŠŸàŠ°à§€ àŠ…à§àŠŻàŠŸàŠȘ àŠ†àŠȘàŠĄà§‡àŠŸ àŠ•àŠ°àŠ€à§‡ àŠȘàŠŸàŠ°àŠŹà§‡àŠšà„€ àŠ€àŠŹà§‡ àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠŻà§‹àŠ—à§àŠŻàŠ€àŠŸàŠ° àŠžà§‡àŠŸàŠżàŠ‚àŠž àŠàŠŹàŠ‚ àŠȘàŠ°àŠżàŠ·à§‡àŠŹàŠŸ àŠšàŠ€à§àŠš àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠ•àŠŸàŠ°à§€àŠ° àŠ•à§àŠ·à§‡àŠ€à§àŠ°à§‡ àŠȘà§àŠ°àŠŻà§‹àŠœà§àŠŻ àŠšàŠŸàŠ“ àŠčàŠ€à§‡ àŠȘàŠŸàŠ°à§‡à„€"</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"àŠ†àŠȘàŠšàŠż àŠàŠ•àŠœàŠš àŠšàŠ€à§àŠš àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠ•àŠŸàŠ°à§€ àŠŻà§‹àŠ— àŠ•àŠ°àŠČে àŠ€àŠŸàŠ•à§‡ àŠ€àŠŸàŠ° àŠœàŠŸàŠŻàŠŒàŠ—àŠŸ àŠžà§‡àŠŸ-àŠ†àŠȘ àŠ•àŠ°à§‡ àŠšàŠżàŠ€à§‡ àŠčàŠŹà§‡à§·\n\nàŠŻà§‡àŠ•à§‹àŠšàŠ“ àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠ•àŠŸàŠ°à§€ àŠ…àŠšà§àŠŻ àŠžàŠŹ àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠ•àŠŸàŠ°à§€àŠ° àŠœàŠšà§àŠŻ àŠ…à§àŠŻàŠŸàŠȘ àŠ†àŠȘàŠĄà§‡àŠŸ àŠ•àŠ°àŠ€à§‡ àŠȘàŠŸàŠ°àŠŹà§‡àŠšà§·"</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"àŠàŠ‡ àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠ•àŠŸàŠ°à§€àŠ•à§‡ àŠ…à§àŠŻàŠŸàŠĄàŠźàŠżàŠš àŠžàŠźà§àŠȘàŠ°à§àŠ•àŠżàŠ€ àŠ•à§àŠ·àŠźàŠ€àŠŸ àŠŠà§‡àŠŹà§‡àŠš?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"àŠ…à§àŠŻàŠŸàŠĄàŠźàŠżàŠš àŠčàŠżàŠžà§‡àŠŹà§‡ àŠ€àŠŸàŠ°àŠŸ àŠ…àŠšà§àŠŻ àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠ•àŠŸàŠ°à§€àŠŠà§‡àŠ° àŠźà§àŠŻàŠŸàŠšà§‡àŠœ àŠ•àŠ°àŠ€à§‡, àŠĄàŠżàŠ­àŠŸàŠ‡àŠž àŠžà§‡àŠŸàŠżàŠ‚àŠž àŠȘàŠ°àŠżàŠŹàŠ°à§àŠ€àŠš àŠàŠŹàŠ‚ àŠ«à§àŠŻàŠŸàŠ•à§àŠŸàŠ°àŠż àŠ°àŠżàŠžà§‡àŠŸ àŠ•àŠ°àŠ€à§‡ àŠȘàŠŸàŠ°àŠŹà§‡àŠšà„€"</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"àŠàŠ–àŠš àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠ•àŠŸàŠ°à§€ àŠžà§‡àŠŸ-àŠ†àŠȘ àŠ•àŠ°àŠŹà§‡àŠš?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"àŠšàŠżàŠ¶à§àŠšàŠżàŠ€ àŠ•àŠ°à§àŠš, àŠŻà§‡ àŠŹà§àŠŻàŠ•à§àŠ€àŠżàŠŸàŠż àŠĄàŠżàŠ­àŠŸàŠ‡àŠžàŠŸàŠż àŠšà§‡àŠ“àŠŻàŠŒàŠŸàŠ° àŠœàŠšà§àŠŻ àŠàŠŹàŠ‚ àŠ€àŠŸàŠ° àŠœàŠŸàŠŻàŠŒàŠ—àŠŸ àŠžà§‡àŠŸ-àŠ†àŠȘ àŠ•àŠ°àŠŸàŠ° àŠœàŠšà§àŠŻ àŠ‰àŠȘàŠČàŠŹà§àŠ§ àŠ†àŠ›à§‡àŠš"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"àŠàŠ–àŠšàŠ‡ àŠȘà§àŠ°à§‹àŠ«àŠŸàŠ‡àŠČ àŠžà§‡àŠŸ-àŠ†àŠȘ àŠ•àŠ°àŠŹà§‡àŠš?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"àŠàŠŸàŠż àŠšàŠ€à§àŠš àŠ…àŠ€àŠżàŠ„àŠż àŠžà§‡àŠ¶àŠš àŠšàŠŸàŠČু àŠ•àŠ°àŠŹà§‡ àŠàŠŹàŠ‚ àŠŹàŠ°à§àŠ€àŠźàŠŸàŠš àŠžà§‡àŠ¶àŠš àŠ„à§‡àŠ•à§‡ àŠžàŠŹ àŠ…à§àŠŻàŠŸàŠȘ àŠ“ àŠĄà§‡àŠŸàŠŸ àŠźà§àŠ›à§‡ àŠŠà§‡àŠŹà§‡"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"\'àŠ…àŠ€àŠżàŠ„àŠż àŠźà§‹àŠĄ\' àŠ›à§‡àŠĄàŠŒà§‡ àŠŹà§‡àŠ°àŠżàŠŻàŠŒà§‡ àŠ†àŠžàŠŹà§‡àŠš?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"àŠàŠŸàŠż àŠŹàŠ°à§àŠ€àŠźàŠŸàŠš àŠ…àŠ€àŠżàŠ„àŠż àŠžà§‡àŠ¶àŠš àŠ„à§‡àŠ•à§‡ àŠ…à§àŠŻàŠŸàŠȘ àŠ“ àŠĄà§‡àŠŸàŠŸ àŠźà§àŠ›à§‡ àŠŠà§‡àŠŹà§‡"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"àŠàŠ‡ àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠ•àŠŸàŠ°à§€àŠ•à§‡ àŠ…à§àŠŻàŠŸàŠĄàŠźàŠżàŠš àŠžàŠźà§àŠȘàŠ°à§àŠ•àŠżàŠ€ àŠ•à§àŠ·àŠźàŠ€àŠŸ àŠŠàŠżàŠš"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"àŠàŠ‡ àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ°àŠ•àŠŸàŠ°à§€àŠ•à§‡ àŠ…à§àŠŻàŠŸàŠĄàŠźàŠżàŠš àŠžàŠźà§àŠȘàŠ°à§àŠ•àŠżàŠ€ àŠ•à§àŠ·àŠźàŠ€àŠŸ àŠŠà§‡àŠŹà§‡àŠš àŠšàŠŸ"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"àŠŹà§‡àŠ°àŠżàŠŻàŠŒà§‡ àŠ†àŠžà§àŠš"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"àŠ…àŠ€àŠżàŠ„àŠż àŠźà§‹àŠĄà§‡àŠ° àŠ…à§àŠŻàŠŸàŠ•à§àŠŸàŠżàŠ­àŠżàŠŸàŠż àŠžà§‡àŠ­ àŠ•àŠ°àŠŹà§‡àŠš?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"àŠ†àŠȘàŠšàŠż àŠŹàŠ°à§àŠ€àŠźàŠŸàŠš àŠžà§‡àŠ¶àŠš àŠ„à§‡àŠ•à§‡ àŠ…à§àŠŻàŠŸàŠ•à§àŠŸàŠżàŠ­àŠżàŠŸàŠż àŠžà§‡àŠ­ àŠ•àŠ°àŠ€à§‡ àŠŹàŠŸ àŠžàŠŹ àŠ…à§àŠŻàŠŸàŠȘ àŠ“ àŠĄà§‡àŠŸàŠŸ àŠźà§àŠ›àŠ€à§‡ àŠȘàŠŸàŠ°àŠŹà§‡àŠš"</string>
diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml
index a2b41c5..8139dc3 100644
--- a/packages/SettingsLib/res/values-bs/strings.xml
+++ b/packages/SettingsLib/res/values-bs/strings.xml
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Više vremena."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Manje vremena."</string>
     <string name="cancel" msgid="5665114069455378395">"OtkaĆŸi"</string>
-    <string name="next" msgid="2699398661093607009">"Naprijed"</string>
-    <string name="back" msgid="5554327870352703710">"Nazad"</string>
-    <string name="save" msgid="3745809743277153149">"Sačuvaj"</string>
     <string name="okay" msgid="949938843324579502">"Uredu"</string>
     <string name="done" msgid="381184316122520313">"Gotovo"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmi i podsjetnici"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Dodati novog korisnika?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Ovaj uređaj moĆŸete dijeliti s drugima ako napravite dodatne korisnike. Svaki korisnik ima svoj prostor koji moĆŸe prilagoditi pomoću aplikacija, pozadinske slike i slično. Korisnici također mogu prilagoditi postavke uređaja koje utiču na sve ostale korisnike, kao što je WiFi.\n\nKada dodate novog korisnika, ta osoba treba postaviti svoj prostor.\n\nSvaki korisnik moĆŸe aĆŸurirati aplikacije za sve ostale korisnike. Postavke i usluge pristupačnosti moĆŸda se neće prenijeti na novog korisnika."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Kada dodate novog korisnika, ta osoba treba postaviti svoj prostor. \n\nSvaki korisnik moĆŸe aĆŸurirati aplikacije za sve ostale korisnike."</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"Postaviti korisnika kao administratora?"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"Administratori imaju posebna prava koja drugi korisnici nemaju. Administrator moĆŸe upravljati svim korisnicima, aĆŸurirati ili vratiti ovaj uređaj na zadano, izmijeniti postavke, vidjeti sve instalirane aplikacije i dodijeliti ili povući administratorska prava za druge."</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"Postavi kao administratora"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Dati privilegije administratora?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Kao administrator će moći upravljati drugim korisnicima, promijeniti postavke uređaja i vratiti uređaj na fabričke postavke."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Postaviti korisnika sada?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Provjerite moĆŸe li osoba uzeti uređaj i postaviti svoj prostor"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Postaviti profil sada?"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Ovim ćete pokrenuti novu sesiju gosta i izbrisati sve aplikacije i podatke iz trenutne sesije"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Napustiti način rada za gosta?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Ovim ćete izbrisati aplikacije i podatke iz trenutne sesije gosta"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"Da, postavi korisnika kao administratora"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"Ne, nemoj postaviti korisnika kao administratora"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"Dajte korisniku privilegije administratora"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Nemojte dati korisniku privilegije administratora"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Napusti"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Sačuvati aktivnost gosta?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"MoĆŸete sačuvati aktivnost iz ove sesije ili izbrisati sve aplikacije i podatke"</string>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index f8f742b..36a7c30 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -107,7 +107,7 @@
     <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Transferència de fitxers"</string>
     <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Dispositiu d\'entrada"</string>
     <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Accés a Internet"</string>
-    <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Compartició de contactes i historial de trucades"</string>
+    <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Compartició de contactes i trucades"</string>
     <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Utilitza per compartir contactes i l\'historial de trucades"</string>
     <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Compartició de connexió d\'Internet"</string>
     <string name="bluetooth_profile_map" msgid="8907204701162107271">"Missatges de text"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Més temps"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Menys temps"</string>
     <string name="cancel" msgid="5665114069455378395">"Cancel·la"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"D\'acord"</string>
     <string name="done" msgid="381184316122520313">"Fet"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmes i recordatoris"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Vols afegir un usuari nou?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Pots compartir aquest dispositiu amb altres persones creant usuaris addicionals. Cada usuari té el seu propi espai, que pot personalitzar amb aplicacions i fons de pantalla, entre d\'altres. Els usuaris també poden ajustar opcions de configuració del dispositiu, com ara la Wi-Fi, que afecten els altres usuaris.\n\nQuan afegeixis un usuari nou, haurà de configurar el seu espai.\n\nTots els usuaris poden actualitzar les aplicacions de la resta. És possible que la configuració i els serveis d\'accessibilitat no es transfereixin a l\'usuari nou."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Quan s\'afegeix un usuari nou, aquesta persona ha de configurar el seu espai.\n\nQualsevol usuari pot actualitzar les aplicacions dels altres usuaris."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Vols donar privilegis d\'admin. a l\'usuari?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Com a administrador podrà gestionar altres usuaris, modificar la configuració del dispositiu i restablir les dades de fàbrica."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Vols configurar l\'usuari ara?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Assegura\'t que la persona estigui disponible per accedir al dispositiu i configurar el seu espai."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Vols configurar el perfil ara?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Aquesta acció iniciarà una nova sessió de convidat i suprimirà totes les aplicacions i dades de la sessió actual"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Sortir del mode de convidat?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Aquesta acció suprimirà les aplicacions i dades de la sessió de convidat actual"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Dona privilegis d\'administrador a aquest usuari"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"No donis privilegis d\'administrador a l\'usuari"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Surt"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Desar l\'activitat de convidat?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Pots desar l\'activitat de la sessió actual o suprimir totes les apps i dades"</string>
diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml
index 9813ffc..b695dfc 100644
--- a/packages/SettingsLib/res/values-cs/strings.xml
+++ b/packages/SettingsLib/res/values-cs/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Delší doba"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Kratší doba"</string>
     <string name="cancel" msgid="5665114069455378395">"Zrušit"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Hotovo"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Budíky a pƙipomenutí"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Pƙidat nového uĆŸivatele?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Vytvoƙením dalších uĆŸivatelĆŻ mĆŻĆŸete toto zaƙízení sdílet s jinými lidmi. KaĆŸdý uĆŸivatel má svĆŻj prostor, který si mĆŻĆŸe pƙizpĆŻsobit instalací aplikací, pƙidáním tapety apod. UĆŸivatelé také mohou upravit nastavení zaƙízení (napƙ. Wi-Fi), která ovlivní všechny uĆŸivatele.\n\nKaĆŸdý nově pƙidaný uĆŸivatel si musí nastavit vlastní prostor.\n\nKaĆŸdý uĆŸivatel mĆŻĆŸe aktualizovat aplikace všech ostatních uĆŸivatelĆŻ."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"KdyĆŸ pƙidáte nového uĆŸivatele, musí si nastavit vlastní prostor.\n\nJakýkoli uĆŸivatel mĆŻĆŸe aktualizovat aplikace všech ostatních uĆŸivatelĆŻ."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Udělit tomuto uĆŸivateli administrátorská práva?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Jako administrátor bude moci spravovat ostatní uĆŸivatele, upravovat nastavení zaƙízení a resetovat zaƙízení do továrního nastavení."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Nastavit uĆŸivatele?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Ujistěte se, ĆŸe je uĆŸivatel k dispozici a mĆŻĆŸe si v zaƙízení nastavit svĆŻj prostor"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Nastavit profil?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Tímto zahájíte novou relaci hosta a smaĆŸete všechny aplikace a data z aktuální relace"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Ukončit reĆŸim hosta?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Tímto smaĆŸete aplikace a data z aktuální relace hosta"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Udělit tomuto uĆŸivateli administrátorská práva"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Neudělovat uĆŸivateli administrátorská práva"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Ukončit"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"UloĆŸit aktivitu hosta?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Aktivitu z aktuální relace mĆŻĆŸete uloĆŸit, nebo všechny aplikace a data smazat"</string>
@@ -677,7 +665,7 @@
     <string name="physical_keyboard_title" msgid="4811935435315835220">"Fyzická klávesnice"</string>
     <string name="keyboard_layout_dialog_title" msgid="3927180147005616290">"Zvolte rozloĆŸení klávesnice"</string>
     <string name="keyboard_layout_default_label" msgid="1997292217218546957">"Výchozí"</string>
-    <string name="turn_screen_on_title" msgid="3266937298097573424">"Zapínání obrazovky"</string>
+    <string name="turn_screen_on_title" msgid="3266937298097573424">"Zapínat obrazovku"</string>
     <string name="allow_turn_screen_on" msgid="6194845766392742639">"Povolit zapínání obrazovky"</string>
     <string name="allow_turn_screen_on_description" msgid="43834403291575164">"Povolte aplikaci zapínat obrazovku. Pokud aplikace bude mít toto oprávnění, mĆŻĆŸe kdykoli zapnout obrazovku bez explicitního intentu."</string>
     <string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"Zastavit vysílání v aplikaci <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index 33131c8..d61ee26 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Mere tid."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Mindre tid."</string>
     <string name="cancel" msgid="5665114069455378395">"Annuller"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Udfør"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmer og påmindelser"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Vil du tilføje en ny bruger?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Du kan dele denne enhed med andre ved at oprette ekstra brugere. Hver bruger har sit personlige område, som kan tilpasses med apps, baggrund osv. Brugerne kan også justere enhedsindstillinger, som for eksempel Wi-Fi, som påvirker alle.\n\nNår du tilføjer en ny bruger, skal vedkommende konfigurere sit område.\n\nAlle brugere kan opdatere apps for alle andre brugere. Indstillinger og tjenester for hjælpefunktioner overføres muligvis ikke til den nye bruger."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Når du tilføjer en ny bruger, skal personen konfigurere sit rum.\n\nAlle brugere kan opdatere apps for alle de andre brugere."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Giv bruger admin.rettigheder?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Når brugeren er administrator, kan vedkommende administrere andre brugere, ændre enhedsindstillingerne og gendanne fabriksindstillingerne på enheden."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Vil du konfigurere brugeren nu?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Sørg for, at brugeren har mulighed for at tage enheden og konfigurere sit eget rum"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Vil du oprette en profil nu?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Denne handling starter en ny gæstesession og sletter alle apps og data fra den aktuelle session"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Vil du afslutte gæstetilstanden?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Denne handling sletter apps og data fra den aktuelle gæstesession."</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Giv denne bruger administratorrettigheder"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Giv ikke brugeren administratorrettigheder"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Luk"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Vil du gemme gæsteaktiviteten?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Du kan gemme aktivitet fra den aktuelle session eller slette alle apps og data"</string>
diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml
index c32baec..2cc048b 100644
--- a/packages/SettingsLib/res/values-de/strings.xml
+++ b/packages/SettingsLib/res/values-de/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Mehr Zeit."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Weniger Zeit."</string>
     <string name="cancel" msgid="5665114069455378395">"Abbrechen"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Fertig"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Wecker und Erinnerungen"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Neuen Nutzer hinzufügen?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Du kannst dieses Gerät zusammen mit anderen nutzen, indem du weitere Nutzer erstellst. Jeder erhält einen eigenen Bereich, in dem er Apps, den Hintergrund usw. personalisieren kann. Außerdem lassen sich Geräteeinstellungen wie WLAN ändern, die sich auf alle Nutzer auswirken.\n\nWenn du einen neuen Nutzer hinzufügst, muss dieser seinen Bereich einrichten.\n\nJeder Nutzer kann Apps für alle anderen Nutzer aktualisieren. Bedienungshilfen-Einstellungen und -Dienste werden möglicherweise nicht auf den neuen Nutzer übertragen."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Wenn du einen neuen Nutzer hinzufügst, muss dieser seinen Bereich einrichten.\n\nJeder Nutzer kann Apps für alle anderen Nutzer aktualisieren."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Nutzer Administratorberechtigungen geben?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Administratoren können andere Nutzer verwalten, Geräteeinstellungen ändern und das Gerät auf die Werkseinstellungen zurücksetzen."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Nutzer jetzt einrichten?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Die Person muss Zugang zum Gerät haben und bereit sein, ihren Bereich einzurichten."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profil jetzt einrichten?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Hierdurch wird eine neue Gastsitzung gestartet und alle Apps und Daten der aktuellen Sitzung werden gelöscht"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Gastmodus beenden?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Hierdurch werden Apps und Daten der aktuellen Gastsitzung gelöscht"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Nutzer Administratorberechtigungen geben"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Nutzer keine Administratorberechtigungen geben"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Beenden"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Gastaktivität speichern?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Speichere Aktivitäten der aktuellen Sitzung oder lösche alle Apps und Daten"</string>
diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml
index 0364665..71a5492 100644
--- a/packages/SettingsLib/res/values-el/strings.xml
+++ b/packages/SettingsLib/res/values-el/strings.xml
@@ -141,7 +141,7 @@
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Ακύρωση"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Η σύζευξη παρέχει πρόσβαση στις επαφές σας και το ιστορικό κλÎźσεων όταν συνδεθεÎŻτε."</string>
     <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Δεν Îźταν δυνατÎź η σύζευξη με τη συσκευÎź <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Δεν Îźταν δυνατÎź η σύζευξη με το <xliff:g id="DEVICE_NAME">%1$s</xliff:g> λόγω λÎŹθους PIN Îź κλειδιού πρόσβ."</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Δεν Îźταν δυνατÎź η σύζευξη με το <xliff:g id="DEVICE_NAME">%1$s</xliff:g> λόγω εσφαλμένου PIN Îź κλειδιού πρόσβασης."</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Δεν εÎŻναι δυνατÎź η σύνδεση με τη συσκευÎź <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Η ζεύξη απορρÎŻφθηκε από τη συσκευÎź <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"ΥπολογιστÎźς"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Περισσότερη ώρα."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Λιγότερη ώρα."</string>
     <string name="cancel" msgid="5665114069455378395">"Ακύρωση"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"ΟΚ"</string>
     <string name="done" msgid="381184316122520313">"Τέλος"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"ΞυπνητÎźρια και ειδοποιÎźσεις"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"ΠροσθÎźκη νέου χρÎźστη;"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"ΜπορεÎŻτε να μοιραστεÎŻτε αυτÎźν τη συσκευÎź με ÎŹλλα ÎŹτομα, δημιουργώντας επιπλέον χρÎźστες. ΚÎŹθε χρÎźστης θα έχει το δικό του χώρο, τον οποÎŻο μπορεÎŻ να προσαρμόσει με τις δικές του εφαρμογές, ταπετσαρÎŻα κ.λπ. Οι χρÎźστες μπορούν επÎŻσης να προσαρμόσουν ρυθμÎŻσεις της συσκευÎźς, όπως το Wi‑Fi, που επηρεÎŹζουν τους πÎŹντες.\n\nΚατÎŹ την προσθÎźκη ενός νέου χρÎźστη, αυτός θα πρέπει να ρυθμÎŻσει τον χώρο του.\n\nΟποιοσδÎźποτε χρÎźστης μπορεÎŻ να ενημερώσει τις εφαρμογές για όλους τους ÎŹλλους χρÎźστες. Οι ρυθμÎŻσεις και οι υπηρεσÎŻες προσβασιμότητας ενδέχεται να μην μεταφερθούν στον νέο χρÎźστη."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"ΚατÎŹ την προσθÎźκη ενός νέου χρÎźστη, αυτός θα πρέπει να ρυθμÎŻσει το χώρο του.\n\nΟποιοσδÎźποτε χρÎźστης μπορεÎŻ να ενημερώσει τις εφαρμογές για όλους τους ÎŹλλους χρÎźστες."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"ΠρονομÎŻα διαχειρ. στον χρÎźστη;"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Ως διαχειριστÎźς θα μπορεÎŻ να διαχειρÎŻζεται ÎŹλλους χρÎźστες, να τροποποιεÎŻ ρυθμÎŻσεις της συσκευÎźς και να κÎŹνει επαναφορÎŹ των εργοστασιακών ρυθμÎŻσεών της."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Να γÎŻνει ρύθμιση χρÎźστη τώρα;"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"ΒεβαιωθεÎŻτε ότι ο χρÎźστης μπορεÎŻ να πÎŹρει τη συσκευÎź και ρυθμÎŻστε το χώρο του"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Να γÎŻνει ρύθμιση προφÎŻλ τώρα;"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Με αυτόν τον τρόπο θα ξεκινÎźσει μια νέα περÎŻοδος σύνδεσης επισκέπτη και θα διαγραφούν όλες οι εφαρμογές και τα δεδομένα από την τρέχουσα περÎŻοδο σύνδεσης"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Έξοδος από λειτ. επισκέπτη;"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Θα διαγραφούν εφαρμογές και δεδομένα από την τρέχουσα περÎŻοδο σύνδεσης επισκέπτη"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Εκχώρηση προνομÎŻων διαχειριστÎź σε αυτόν τον χρÎźστη"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Να μην εκχωρηθούν προνόμια διαχειριστÎź σε αυτόν τον χρÎźστη"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Έξοδος"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ΑποθÎźκευση δραστ. επισκέπτη;"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ΑποθÎźκευση δραστ. τρέχουσας περιόδου σύνδεσης Îź διαγραφÎź εφαρμογών και δεδομένων"</string>
diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml
index e1dc7b56..19dbc53 100644
--- a/packages/SettingsLib/res/values-en-rAU/strings.xml
+++ b/packages/SettingsLib/res/values-en-rAU/strings.xml
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"More time."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Less time."</string>
     <string name="cancel" msgid="5665114069455378395">"Cancel"</string>
-    <string name="next" msgid="2699398661093607009">"Next"</string>
-    <string name="back" msgid="5554327870352703710">"Back"</string>
-    <string name="save" msgid="3745809743277153149">"Save"</string>
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Done"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarms and reminders"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Add new user?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"You can share this device with other people by creating additional users. Each user has their own space, which they can customise with apps, wallpaper and so on. Users can also adjust device settings such as Wi‑Fi that affect everyone.\n\nWhen you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users. Accessibility settings and services may not transfer to the new user."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"When you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users."</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"Make this user an admin?"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"Admins have special privileges that other users don\'t. An admin can manage all users, update or reset this device, modify settings, see all installed apps and grant or revoke admin privileges for others."</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"Make admin"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Give this user admin privileges?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"As an admin, they will be able to manage other users, modify device settings and factory reset the device."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Set up user now?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Make sure that the person is available to take the device and set up their space."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Set up profile now?"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"This will start a new guest session and delete all apps and data from the current session"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Exit guest mode?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"This will delete apps and data from the current guest session"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"Yes, make them an admin"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"No, don\'t make them an admin"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"Give this user admin privileges"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Do not give user admin privileges"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Exit"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Save guest activity?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"You can save activity from the current session or delete all apps and data"</string>
diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml
index e793fb7..7c14c1a 100644
--- a/packages/SettingsLib/res/values-en-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-en-rCA/strings.xml
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"More time."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Less time."</string>
     <string name="cancel" msgid="5665114069455378395">"Cancel"</string>
-    <string name="next" msgid="2699398661093607009">"Next"</string>
-    <string name="back" msgid="5554327870352703710">"Back"</string>
-    <string name="save" msgid="3745809743277153149">"Save"</string>
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Done"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarms and reminders"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Add new user?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"You can share this device with other people by creating additional users. Each user has their own space, which they can customize with apps, wallpaper, and so on. Users can also adjust device settings like Wi‑Fi that affect everyone.\n\nWhen you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users. Accessibility settings and services may not transfer to the new user."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"When you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users."</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"Make this user an admin?"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"Admins have special privileges that other users dont. An admin can manage all users, update or reset this device, modify settings, see all installed apps, and grant or revoke admin privileges for others."</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"Make admin"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Give this user admin privileges?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"As an admin, they will be able to manage other users, modify device settings and factory reset the device."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Set up user now?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Make sure the person is available to take the device and set up their space"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Set up profile now?"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"This will start a new guest session and delete all apps and data from the current session"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Exit guest mode?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"This will delete apps and data from the current guest session"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"Yes, make them an admin"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"No, dont make them an admin"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"Give this user admin privileges"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Do not give user admin privileges"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Exit"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Save guest activity?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"You can save activity from the current session or delete all apps and data"</string>
diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml
index e1dc7b56..19dbc53 100644
--- a/packages/SettingsLib/res/values-en-rGB/strings.xml
+++ b/packages/SettingsLib/res/values-en-rGB/strings.xml
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"More time."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Less time."</string>
     <string name="cancel" msgid="5665114069455378395">"Cancel"</string>
-    <string name="next" msgid="2699398661093607009">"Next"</string>
-    <string name="back" msgid="5554327870352703710">"Back"</string>
-    <string name="save" msgid="3745809743277153149">"Save"</string>
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Done"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarms and reminders"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Add new user?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"You can share this device with other people by creating additional users. Each user has their own space, which they can customise with apps, wallpaper and so on. Users can also adjust device settings such as Wi‑Fi that affect everyone.\n\nWhen you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users. Accessibility settings and services may not transfer to the new user."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"When you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users."</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"Make this user an admin?"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"Admins have special privileges that other users don\'t. An admin can manage all users, update or reset this device, modify settings, see all installed apps and grant or revoke admin privileges for others."</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"Make admin"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Give this user admin privileges?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"As an admin, they will be able to manage other users, modify device settings and factory reset the device."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Set up user now?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Make sure that the person is available to take the device and set up their space."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Set up profile now?"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"This will start a new guest session and delete all apps and data from the current session"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Exit guest mode?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"This will delete apps and data from the current guest session"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"Yes, make them an admin"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"No, don\'t make them an admin"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"Give this user admin privileges"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Do not give user admin privileges"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Exit"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Save guest activity?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"You can save activity from the current session or delete all apps and data"</string>
diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml
index e1dc7b56..19dbc53 100644
--- a/packages/SettingsLib/res/values-en-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-en-rIN/strings.xml
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"More time."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Less time."</string>
     <string name="cancel" msgid="5665114069455378395">"Cancel"</string>
-    <string name="next" msgid="2699398661093607009">"Next"</string>
-    <string name="back" msgid="5554327870352703710">"Back"</string>
-    <string name="save" msgid="3745809743277153149">"Save"</string>
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Done"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarms and reminders"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Add new user?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"You can share this device with other people by creating additional users. Each user has their own space, which they can customise with apps, wallpaper and so on. Users can also adjust device settings such as Wi‑Fi that affect everyone.\n\nWhen you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users. Accessibility settings and services may not transfer to the new user."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"When you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users."</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"Make this user an admin?"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"Admins have special privileges that other users don\'t. An admin can manage all users, update or reset this device, modify settings, see all installed apps and grant or revoke admin privileges for others."</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"Make admin"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Give this user admin privileges?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"As an admin, they will be able to manage other users, modify device settings and factory reset the device."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Set up user now?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Make sure that the person is available to take the device and set up their space."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Set up profile now?"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"This will start a new guest session and delete all apps and data from the current session"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Exit guest mode?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"This will delete apps and data from the current guest session"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"Yes, make them an admin"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"No, don\'t make them an admin"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"Give this user admin privileges"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Do not give user admin privileges"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Exit"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Save guest activity?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"You can save activity from the current session or delete all apps and data"</string>
diff --git a/packages/SettingsLib/res/values-en-rXC/strings.xml b/packages/SettingsLib/res/values-en-rXC/strings.xml
index cfa2df5..af7a1cb 100644
--- a/packages/SettingsLib/res/values-en-rXC/strings.xml
+++ b/packages/SettingsLib/res/values-en-rXC/strings.xml
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‎‏‏‎‏‏‎‏‎‏‏‎‎‎‏‏‎‏‏‎‎‏‏‏‎‎‏‏‏‎‏‎‎‏‏‏‎‏‏‎‎‏‎‏‎‎‎‎‎‏‏‎‏‏‎More time.‎‏‎‎‏‎"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‎‏‎‏‎‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‏‏‎‎‏‎‏‎‎‎‎‏‎‎‎‏‎‎‎‏‎‎‏‏‎‏‎Less time.‎‏‎‎‏‎"</string>
     <string name="cancel" msgid="5665114069455378395">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‎‏‏‏‏‎‏‎‎‎‎‏‏‏‎‎‏‏‏‎‏‏‎‎‏‎‏‎‎‏‏‏‏‏‎‏‎‎‏‎‎‏‎‏‏‏‏‏‎‏‏‎‏‏‎Cancel‎‏‎‎‏‎"</string>
-    <string name="next" msgid="2699398661093607009">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‎‏‎‏‎‏‏‏‎‏‏‎‎‎‏‏‎‎‎‎‏‏‎‎‎‏‏‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‏‎‎‏‎‎‎‏‏‎‎‏‏‎‎‎‎‏‎Next‎‏‎‎‏‎"</string>
-    <string name="back" msgid="5554327870352703710">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‎‏‎‎‏‏‏‎‏‏‏‏‏‏‎‎‎‏‎‏‎‎‎‏‏‏‏‎‎‏‏‎‏‏‎‎‏‏‎‎‎‎‎‎‏‏‎‏‏‏‏‎‎Back‎‏‎‎‏‎"</string>
-    <string name="save" msgid="3745809743277153149">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‎‎‎‏‏‏‎‏‏‎‎‎‏‎‎‎‎‎‏‏‏‎‏‏‎‏‎‏‏‎‏‏‎‏‏‏‏‏‎‏‎Save‎‏‎‎‏‎"</string>
     <string name="okay" msgid="949938843324579502">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‎‏‏‎‏‎‎‏‎‏‏‏‎‏‏‎‏‏‏‎‎‎‏‎‏‏‎‎‎‎‏‎‏‎‎‏‎‏‎‏‏‎‏‎‎‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‎OK‎‏‎‎‏‎"</string>
     <string name="done" msgid="381184316122520313">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‏‏‎‏‎‏‎‎‏‎‏‎‎‎‏‏‏‏‎‏‎‎‎‏‏‏‎‏‏‎‏‎‏‏‎‎‎‏‏‎‏‏‏‎‏‏‎‏‏‎‏‎‏‏‏‏‏‎‎‏‎Done‎‏‎‎‏‎"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‎‎‎‎‏‏‎‎‎‏‎‏‎‎‎‎‏‏‎‎‎‎‎‎‏‎‏‏‎‏‏‏‎‏‏‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‏‎‎Alarms and reminders‎‏‎‎‏‎"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‎‏‏‏‎‏‏‏‎‏‏‎‏‏‏‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‎‎‎‏‎‏‎‏‎‏‎Add new user?‎‏‎‎‏‎"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‏‎‏‎‎‏‏‎‎‏‎‏‎‎‎‏‎‏‎‎‎‎‎‎‎‏‎‎‏‎‏‎‏‏‏‏‎‎‎‎‎‏‎‎‎‏‎‎‎‏‎‎‏‎‎‎‏‎‎‎You can share this device with other people by creating additional users. Each user has their own space, which they can customize with apps, wallpaper, and so on. Users can also adjust device settings like Wi‑Fi that affect everyone.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎When you add a new user, that person needs to set up their space.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎Any user can update apps for all other users. Accessibility settings and services may not transfer to the new user.‎‏‎‎‏‎"</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‏‏‎‏‏‎‏‏‏‏‎‏‏‎‎‏‏‎‏‎‎‎‏‎‎‏‎‎‏‏‏‏‎‎‏‏‎‏‎‎‎‎‎‏‎‏‎‏‎‏‎‎‎‏‎‎‎‏‏‎‎When you add a new user, that person needs to set up their space.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎Any user can update apps for all other users.‎‏‎‎‏‎"</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‎‎‏‏‎‎‎‏‏‏‎‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‎‎‏‎‎‏‏‏‎‎‎‎‎Make this user an admin?‎‏‎‎‏‎"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‏‏‏‎‎‏‏‏‎‏‎‏‎‎‎‎‎‎‎‏‏‏‎‎‏‎‎‏‎‏‎‎‏‎‏‎‎‏‎‏‎‏‎‏‎‎‎‎‏‎‏‎‏‏‏‎‏‎‏‎Admins have special privileges that other users dont. An admin can manage all users, update or reset this device, modify settings, see all installed apps, and grant or revoke admin privileges for others.‎‏‎‎‏‎"</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‎‏‏‏‎‎‎‎‏‎‎‎‎‎‎‏‎‏‏‎‏‎‏‏‎‏‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‎‏‏‎‏‎‎‏‏‎‏‏‏‏‎‎‎Make admin‎‏‎‎‏‎"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‏‏‏‎‏‏‎‏‎‏‏‏‎‏‏‎‎‏‏‎‏‏‎‎‏‎‏‎‎‎‎‎‎‏‏‎‎‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎Give this user admin privileges?‎‏‎‎‏‎"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‎‎‎‎‏‎‎‎‏‎‏‎‎‏‎‎‏‏‏‏‎‏‏‎‏‏‏‎‎‏‎‎‎‏‏‎‏‏‎‎‎‎‎As an admin, they will be able to manage other users, modify device settings and factory reset the device.‎‏‎‎‏‎"</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‎‏‎‎‏‏‎‎‎‎‎‎‎‎‎‎‏‏‎‏‎‎‏‎‏‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‎‎‏‏‎‏‏‎Set up user now?‎‏‎‎‏‎"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‏‏‎‏‏‏‏‏‎‏‏‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‏‎‎‏‎‏‏‏‏‏‎‎‎‏‎‎‏‎‏‎‎‎‎‏‎‏‏‏‎‎‏‎Make sure the person is available to take the device and set up their space‎‏‎‎‏‎"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‎‏‎‎‏‏‏‎‎‏‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‏‏‎‏‎‎‎‎‎‏‎‏‏‏‎‏‏‏‎‏‎‎‎‏‎‎‎‏‏‏‏‎‎‎Set up profile now?‎‏‎‎‏‎"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‎‏‏‎‎‏‎‏‏‏‎‏‎‎‏‏‎‏‏‎‎‏‏‏‏‎‎‎‎‎‎‎‎‎‎‎‎‏‎‏‏‎‎‏‏‎‎‏‏‏‎‎‏‎‎‏‎‏‏‎‎This will start a new guest session and delete all apps and data from the current session‎‏‎‎‏‎"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‎‎‏‏‎‏‎‎‎‎‎‎‎‎‏‎‎‎‏‎‎‎‏‏‎‏‏‎‏‏‏‎‏‎‏‎‎‏‎‏‎‏‎‎‎‎‎‏‎‎‏‏‎‏‎‏‏‎‎‎Exit guest mode?‎‏‎‎‏‎"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‎‎‎‎‎‏‏‎‎‎‏‎‎‏‎‏‎‎‎‎‏‎‏‎‎‏‎‎‎‏‏‎‎‎‎‏‏‏‏‎‎‏‎‎‏‏‏‏‏‎‎‎‎‏‎‎‏‏‏‎This will delete apps and data from the current guest session‎‏‎‎‏‎"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‏‎‏‏‏‏‎‏‏‏‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‎‏‎‎‎‏‏‎‎‏‏‏‎‎Yes, make them an admin‎‏‎‎‏‎"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‎‏‎‏‏‎‎‎‎‎‎‎‎‎‎‏‎‏‎‏‎‏‎‏‏‎‏‏‎‏‎‏‏‏‎‎‏‎‎‏‏‏‎‏‏‎‏‎‎‏‎‏‎‏‎‏‎‏‎No, dont make them an admin‎‏‎‎‏‎"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‎‏‏‎‏‎‎‏‏‎‏‎‎‎‎‎‏‎‏‎‎‎‏‎‏‏‎‎‎‏‎‎‏‏‏‎‏‎‎‏‏‏‏‏‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‎Give this user admin privileges‎‏‎‎‏‎"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‏‎‏‏‏‏‏‏‎‎‏‏‎‏‏‎‏‎‏‎‎‏‏‎‏‏‏‎‏‎‎‎‎‏‏‏‎‎‏‏‎‏‎‎‏‎‏‎‏‎‎‎‏‎‎Do not give user admin privileges‎‏‎‎‏‎"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‎‎‎‎‎‎‏‏‎‎‎‏‏‏‏‎‎‎‎‎‏‎‏‎‎‏‏‎‏‎‏‎‏‏‎‎‎‎‎‎‏‎‎‏‏‏‎‏‏‏‏‎‏‏‏‏‏‎‎‎Exit‎‏‎‎‏‎"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‏‎‎‎‎‏‏‏‏‎‏‏‎‏‎‎‏‎‎‏‏‏‏‏‎‏‏‎‎‎‏‏‏‏‎‎‏‎‎‎‎‏‎‎‏‏‎‏‎‏‎‎Save guest activity?‎‏‎‎‏‎"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‏‎‎‎‏‏‎‎‏‏‎‎‏‏‏‏‏‏‏‎‎‎‏‎‎‏‎‎‏‎‏‏‏‏‎‎‎‎‎‎‎‎‎‏‏‏‎‎‏‎‎‎‏‎‎‏‎‎You can save activity from the current session or delete all apps and data‎‏‎‎‏‎"</string>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index 38a7c32..9e35c9e 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -107,7 +107,7 @@
     <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Transferencia de archivos"</string>
     <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Dispositivo de entrada"</string>
     <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Acceso a Internet"</string>
-    <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Compartir contactos e historial de llamadas"</string>
+    <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Compartir contactos e historial de llam."</string>
     <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Uso para compartir contactos e historial de llamadas"</string>
     <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Compartir conexión a Internet"</string>
     <string name="bluetooth_profile_map" msgid="8907204701162107271">"Mensajes de texto"</string>
@@ -141,7 +141,7 @@
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Cancelar"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"La sincronización te permite acceder a los contactos y al historial de llamadas cuando el dispositivo está conectado."</string>
     <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"No se pudo vincular con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"No se pudo vincular con <xliff:g id="DEVICE_NAME">%1$s</xliff:g> porque la llave de acceso o el PIN son incorrectos."</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"No se pudo vincular con <xliff:g id="DEVICE_NAME">%1$s</xliff:g> porque la clave de acceso o el PIN son incorrectos."</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"No se puede establecer la comunicación con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Vínculo rechazado por <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Computadora"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Más tiempo"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Menos tiempo"</string>
     <string name="cancel" msgid="5665114069455378395">"Cancelar"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"Aceptar"</string>
     <string name="done" msgid="381184316122520313">"Listo"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmas y recordatorios"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"¿Agregar usuario nuevo?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Para compartir este dispositivo, crea más usuarios. Cada uno tendrá su propio espacio y podrá personalizarlo con apps, un fondo de pantalla y mucho más. Los usuarios también podrán ajustar algunas opciones del dispositivo, como la conexión Wi‑Fi, que afectan a todos los usuarios.\n\nCuando agregues un nuevo usuario, esa persona deberá configurar su espacio.\n\nCualquier usuario podrá actualizar las apps de otras personas. Es posible que no se transfieran los servicios ni las opciones de accesibilidad al nuevo usuario."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Cuando agregas un nuevo usuario, esa persona debe configurar su espacio.\n\nCualquier usuario puede actualizar las aplicaciones del resto de los usuarios."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"¿Dar privilegios de admin.?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Como administrador, podrá controlar a otros usuarios, modificar la configuración de dispositivos y restablecer su configuración de fábrica."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"¿Configurar el usuario ahora?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Asegúrate de que la persona pueda acceder al dispositivo y configurar su espacio."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"¿Quieres configurar tu perfil ahora?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Esta acción comenzará una nueva sesión de invitado y borrará todas las apps y los datos de la sesión actual"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"¿Salir del modo de invitado?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Esta acción borrará todas las apps y los datos de la sesión de invitado actual"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Otorgar privilegios de administrador a este usuario"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"No otorgar privilegios de administrador a este usuario"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Salir"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"¿Guardar actividad de invitado?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Puedes guardar la actividad de la sesión actual o borrar las apps y los datos"</string>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
index 995a426..01e3961 100644
--- a/packages/SettingsLib/res/values-es/strings.xml
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -141,7 +141,7 @@
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Cancelar"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"La vinculación permite acceder a tus contactos y al historial de llamadas cuando el dispositivo está conectado."</string>
     <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"No se ha podido emparejar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"No se puede emparejar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g> porque la llave de acceso o el PIN son incorrectos."</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"No se ha podido emparejar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g> porque la clave de acceso o el PIN son incorrectos."</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"No se puede establecer comunicación con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Vinculación rechazada por <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Ordenador"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Más tiempo."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Menos tiempo."</string>
     <string name="cancel" msgid="5665114069455378395">"Cancelar"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"Aceptar"</string>
     <string name="done" msgid="381184316122520313">"Hecho"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmas y recordatorios"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"¿Añadir nuevo usuario?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Puedes compartir este dispositivo si creas más usuarios. Cada uno tendrá su propio espacio y podrá personalizarlo con aplicaciones, un fondo de pantalla y mucho más. Los usuarios también pueden ajustar opciones del dispositivo, como la conexión Wi‑Fi, que afectan a todos los usuarios.\n\nCuando añadas un usuario, tendrá que configurar su espacio.\n\nCualquier usuario puede actualizar aplicaciones de todos los usuarios. Es posible que no se transfieran los servicios y opciones de accesibilidad al nuevo usuario."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Al añadir un nuevo usuario, dicha persona debe configurar su espacio.\n\nCualquier usuario puede actualizar las aplicaciones del resto de usuarios."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"¿Dar privilegios de administrador al usuario?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Como administrador, podrá gestionar otros usuarios, así como modificar los ajustes y restablecer el estado de fábrica del dispositivo."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"¿Configurar usuario ahora?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Asegúrate de que la persona está disponible en este momento para usar el dispositivo y configurar su espacio."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"¿Quieres configurar un perfil ahora?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Se iniciará una nueva sesión de invitado y se borrarán todas las aplicaciones y datos de esta sesión"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"¿Salir del modo Invitado?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Se eliminarán todas las aplicaciones y datos de la sesión de invitado actual"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Dar privilegios de administrador a este usuario"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"No dar privilegios de administrador a este usuario"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Salir"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"¿Guardar actividad de invitado?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Puedes guardar la actividad de esta sesión o eliminar todas las aplicaciones y datos"</string>
@@ -677,7 +665,7 @@
     <string name="physical_keyboard_title" msgid="4811935435315835220">"Teclado físico"</string>
     <string name="keyboard_layout_dialog_title" msgid="3927180147005616290">"Elige el diseño del teclado"</string>
     <string name="keyboard_layout_default_label" msgid="1997292217218546957">"Predeterminado"</string>
-    <string name="turn_screen_on_title" msgid="3266937298097573424">"Encender la pantalla"</string>
+    <string name="turn_screen_on_title" msgid="3266937298097573424">"Encender pantalla"</string>
     <string name="allow_turn_screen_on" msgid="6194845766392742639">"Permitir encender la pantalla"</string>
     <string name="allow_turn_screen_on_description" msgid="43834403291575164">"Permite que una aplicación encienda la pantalla. Si das este permiso, la aplicación puede encender la pantalla en cualquier momento sin que se lo pidas."</string>
     <string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"¿Dejar de emitir <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml
index 12e44fe..4b8db97 100644
--- a/packages/SettingsLib/res/values-et/strings.xml
+++ b/packages/SettingsLib/res/values-et/strings.xml
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Pikem aeg."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Lühem aeg."</string>
     <string name="cancel" msgid="5665114069455378395">"Tühista"</string>
-    <string name="next" msgid="2699398661093607009">"Edasi"</string>
-    <string name="back" msgid="5554327870352703710">"Tagasi"</string>
-    <string name="save" msgid="3745809743277153149">"Salvesta"</string>
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Valmis"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmid ja meeldetuletused"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Kas lisada uus kasutaja?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Võite jagada seda seadet teiste inimestega, luues uusi kasutajaid. Igal kasutajal on oma ruum, mida saab kohandada rakenduste, taustapildi ja muuga. Kasutajad saavad kohandada ka seadme seadeid, näiteks WiFi-valikuid, mis mõjutavad kõiki kasutajaid.\n\nKui lisate uue kasutaja, siis peab ta seadistama oma ruumi.\n\nIga kasutaja saab rakendusi kõigi kasutajate jaoks värskendada. Juurdepääsetavuse seadeid ja teenuseid ei pruugita uuele kasutajale üle kanda."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Kui lisate uue kasutaja, siis peab ta seadistama oma ruumi.\n\nIga kasutaja saab värskendada rakendusi kõigi kasutajate jaoks."</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"Kas määrata see kasutaja administraatoriks?"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"Administraatoritel on eriõigused, mida teistel kasutajatel pole. Administraator saab hallata kõiki kasutajaid, värskendada või lähtestada seda seadet, muuta seadeid, vaadata kõiki installitud rakendusi ja anda teistele kasutajatele administraatoriõigused või need eemaldada."</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"Määra administraatoriks"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Kas anda kasutajale administraatoriõigused?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Administraatorina saab ta hallata teisi kasutajaid, muuta seadme seadeid ja lähtestada seadme tehaseseadetele."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Kas seadistada kasutaja kohe?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Veenduge, et isik saaks seadet kasutada ja oma ruumi seadistada"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Kas soovite kohe profiili seadistada?"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"See alustab uut külastajaseanssi ning kustutab kõik praeguse seansi rakendused ja andmed."</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Kas väljuda külalisreĆŸiimist?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"See kustutab praeguse külastajaseansi rakendused ja andmed"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"Jah, määra ta administraatoriks"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"Ei, ära määra teda administraatoriks"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"Anna sellele kasutajale administraatoriõigused"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Ära anna kasutajale administraatoriõiguseid"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Välju"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Kas salvestada külalise tegevus?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Võite selle seansi tegevused salvestada või kustutada kõik rakendused ja andmed."</string>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index c882eb9..35cbafc7 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -141,7 +141,7 @@
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Utzi"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Gailuak parekatzen badituzu, batetik besteko kontaktuak eta deien historia atzitu ahal izango dituzu."</string>
     <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Ezin izan da <xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailuarekin parekatu."</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Ezin izan da parekatu <xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailuarekin, PIN edo sarbide-gako okerra idatzi delako."</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Ezin izan da parekatu <xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailuarekin, PIN edo pasakode okerra idatzi delako."</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Ezin da <xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailuarekin komunikatu."</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailuak bikotetzea ukatu du."</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Ordenagailua"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Denbora gehiago."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Denbora gutxiago."</string>
     <string name="cancel" msgid="5665114069455378395">"Utzi"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"Ados"</string>
     <string name="done" msgid="381184316122520313">"Eginda"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmak eta abisuak"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Beste erabiltzaile bat gehitu nahi duzu?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Gailu hau beste pertsona batzuekin partekatzeko, sortu erabiltzaile gehiago. Erabiltzaile bakoitzak bere eremua izango du eta, bertan, aplikazioak, horma-papera eta antzekoak pertsonalizatu ahal izango ditu. Horrez gain, agian erabiltzaile guztiei eragingo dieten ezarpen batzuk ere doi daitezke; adibidez, wifi-konexioarena.\n\nErabiltzaile bat gehitzen duzunean, pertsona horrek berak konfiguratu beharko du bere eremua.\n\nEdozein erabiltzailek egunera ditzake beste erabiltzaile guztien aplikazioak. Baliteke erabilerraztasun-ezarpenak eta -zerbitzuak ez transferitzea erabiltzaile berriei."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Erabiltzaile bat gehitzen duzunean, erabiltzaile horrek bere eremua konfiguratu beharko du.\n\nEdozein erabiltzailek egunera ditzake beste erabiltzaile guztien aplikazioak."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Administratzaile-baimenak eman nahi dizkiozu erabiltzaileari?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Administratzaile-baimenak ematen badizkiozu, hauek egin ahalko ditu: beste erabiltzaile batzuk kudeatu, gailuaren ezarpenak aldatu eta gailuaren jatorrizko datuak berrezarri."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Erabiltzailea konfiguratu?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Ziurtatu pertsona horrek gailua hartu eta bere eremua konfigura dezakeela"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profila konfiguratu?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Gonbidatuentzako saio berri bat abiaraziko da, eta saio honetako aplikazio eta datu guztiak ezabatuko"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Gonbidatu modutik irten nahi duzu?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Gonbidatuentzako saio honetako aplikazioak eta datuak ezabatuko dira"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Eman administratzaile-baimenak erabiltzaileari"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Ez eman administratzaile-baimenik erabiltzaileari"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Irten"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Gonbidatuaren jarduerak gorde nahi dituzu?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Saio honetako jarduerak gorde ditzakezu, edo aplikazio eta datu guztiak ezabatu"</string>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index 5643322..42311ef 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"ŰČÙ…Ű§Ù† ŰšÛŒŰŽŰȘ۱."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"ŰČÙ…Ű§Ù† کمŰȘ۱."</string>
     <string name="cancel" msgid="5665114069455378395">"لŰșو"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"ŰȘŰŁÛŒÛŒŰŻ"</string>
     <string name="done" msgid="381184316122520313">"ŰȘÙ…Ű§Ù…"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"ŰČÙ†ÚŻ‌Ù‡Ű§ÛŒ Ù‡ŰŽŰŻŰ§Ű± و ÛŒŰ§ŰŻŰąÙˆŰ±ÛŒ‌Ù‡Ű§"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"کۧ۱ۚ۱ ŰŹŰŻÛŒŰŻÛŒ Ű§Ű¶Ű§ÙÙ‡ می‌Ú©Ù†ÛŒŰŻŰŸ"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"‏ۚۧ Ű§ÛŒŰŹŰ§ŰŻ Ú©Ű§Ű±ŰšŰ±Ű§Ù† ŰšÛŒŰŽŰȘŰ±ŰŒ می‌ŰȘÙˆŰ§Ù†ÛŒŰŻ Ű§ÛŒÙ† ŰŻŰłŰȘÚŻŰ§Ù‡ ۱ۧ ۚۧ ŰŻÛŒÚŻŰ±Ű§Ù† ŰšÙ‡‌ۧێŰȘ۱ۧک ŰšÚŻŰ°Ű§Ű±ÛŒŰŻ. Ù‡Ű± کۧ۱ۚ۱ ÙŰ¶Ű§ÛŒ Ù…ŰźŰ”ÙˆŰ” ŰšÙ‡ ŰźÙˆŰŻŰŽ ۱ۧ ۯۧ۱ۯ که می‌ŰȘÙˆŰ§Ù†ŰŻ ŰąÙ† ۱ۧ ۚۧ ŰšŰ±Ù†Ű§Ù…Ù‡‌Ù‡Ű§ŰŒ کۧŰșŰ°ŰŻÛŒÙˆŰ§Ű±ÛŒ و Ù…ÙˆŰ§Ű±ŰŻ ŰŻÛŒÚŻŰ± ŰłÙŰ§Ű±ŰŽÛŒ Ú©Ù†ŰŻ. همچنین Ú©Ű§Ű±ŰšŰ±Ű§Ù† می‌ŰȘÙˆŰ§Ù†Ù†ŰŻ ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘی ۯ۱ ŰŻŰłŰȘÚŻŰ§Ù‡ Ű§ÛŒŰŹŰ§ŰŻ Ú©Ù†Ù†ŰŻŰŒ Ù…Ű§Ù†Ù†ŰŻ ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ Wi-Fiی که ۚ۱ ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ ŰšÙ‚ÛŒÙ‡ ۧ۫۱ ۯۧ۱ۯ.\n\nوقŰȘی کۧ۱ۚ۱ ŰŹŰŻÛŒŰŻÛŒ Ű§Ű¶Ű§ÙÙ‡ می‌Ú©Ù†ÛŒŰŻŰŒ ŰąÙ† ێ۟۔ ŰšŰ§ÛŒŰŻ ÙŰ¶Ű§ÛŒ ŰźÙˆŰŻŰŽ ۱ۧ ŰȘÙ†ŰžÛŒÙ… Ú©Ù†ŰŻ.\n\nÙ‡Ű± کۧ۱ۚ۱ می‌ŰȘÙˆŰ§Ù†ŰŻ ŰšŰ±Ù†Ű§Ù…Ù‡‌Ù‡Ű§ ۱ۧ ŰšŰ±Ű§ÛŒ ŰłŰ§ÛŒŰ± Ú©Ű§Ű±ŰšŰ±Ű§Ù† ŰšÙ‡‌Ű±ÙˆŰČŰ±ŰłŰ§Ù†ÛŒ Ú©Ù†ŰŻ. ŰŻŰłŰȘ۱۳‌ÙŸŰ°ÛŒŰ±ÛŒŰŒ ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘی و ŰłŰ±ÙˆÛŒŰł‌Ù‡Ű§ Ù‚Ű§ŰšÙ„‌Ű§Ù†ŰȘÙ‚Ű§Ù„ ŰšÙ‡ کۧ۱ۚ۱ ŰŹŰŻÛŒŰŻ Ù†ÛŒŰłŰȘÙ†ŰŻ."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"وقŰȘی کۧ۱ۚ۱ ŰŹŰŻÛŒŰŻÛŒ Ű§Ű¶Ű§ÙÙ‡ می‌Ú©Ù†ÛŒŰŻ ŰąÙ† ÙŰ±ŰŻ ŰšŰ§ÛŒŰŻ ÙŰ¶Ű§ÛŒ ŰźÙˆŰŻŰŽ ۱ۧ ŰȘÙ†ŰžÛŒÙ… Ú©Ù†ŰŻ.\n\nÙ‡Ű± Ú©Ű§Ű±ŰšŰ±ÛŒ می‌ŰȘÙˆŰ§Ù†ŰŻ ŰšŰ±Ù†Ű§Ù…Ù‡‌Ù‡Ű§ ۱ۧ ŰšŰ±Ű§ÛŒ همه Ú©Ű§Ű±ŰšŰ±Ű§Ù† ŰŻÛŒÚŻŰ± ŰšÙ‡‌Ű±ÙˆŰČŰ±ŰłŰ§Ù†ÛŒ Ú©Ù†ŰŻ."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Ű§Ù…ŰȘÛŒŰ§ŰČÙ‡Ű§ÛŒ ŰłŰ±ÙŸŰ±ŰłŰȘ ŰšÙ‡ Ű§ÛŒÙ† کۧ۱ۚ۱ ۧŰč۷ۧ ŰŽÙˆŰŻŰŸ"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"ŰšÙ‡‌ŰčÙ†ÙˆŰ§Ù† ŰłŰ±ÙŸŰ±ŰłŰȘی Ű§ÛŒÙ† ÙŰ±ŰŻ می‌ŰȘÙˆŰ§Ù†ŰŻ Ú©Ű§Ű±ŰšŰ±Ű§Ù† ŰŻÛŒÚŻŰ± ۱ۧ Ù…ŰŻÛŒŰ±ÛŒŰȘ Ú©Ù†ŰŻŰŒ ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ ŰŻŰłŰȘÚŻŰ§Ù‡ ۱ۧ ŰȘŰșÛŒÛŒŰ± ŰŻÙ‡ŰŻŰŒ و ŰŻŰłŰȘÚŻŰ§Ù‡ ۱ۧ ۚۧŰČÙ†ŰŽŰ§Ù†ÛŒ Ú©Ű§Ű±ŰźŰ§Ù†Ù‡‌Ű§ÛŒ Ú©Ù†ŰŻ."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"هم Ű§Ú©Ù†ÙˆÙ† کۧ۱ۚ۱ ŰȘÙ†ŰžÛŒÙ… ŰŽÙˆŰŻŰŸ"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Ù…Ű·Ù…ŰŠÙ† ŰŽÙˆÛŒŰŻ ێ۟۔ ۯ۱ ŰŻŰłŰȘ۱۳ ۧ۳ŰȘ ŰȘۧ ŰŻŰłŰȘÚŻŰ§Ù‡ ۱ۧ ŰšÚŻÛŒŰ±ŰŻ و ÙŰ¶Ű§ÛŒŰŽ ۱ۧ ŰȘÙ†ŰžÛŒÙ… Ú©Ù†ŰŻ"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Ű§Ú©Ù†ÙˆÙ† Ù†Ù…Ű§ÛŒÙ‡ ۱ۧ ŰȘÙ†ŰžÛŒÙ… می‌Ú©Ù†ÛŒŰŻŰŸ"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ۚۧ Ű§ÛŒÙ† Ú©Ű§Ű±ŰŒ ŰŹÙ„ŰłÙ‡ Ù…Ù‡Ù…Ű§Ù† ŰŹŰŻÛŒŰŻÛŒ ŰŽŰ±ÙˆŰč ŰźÙˆŰ§Ù‡ŰŻ ŰŽŰŻ و همه ŰšŰ±Ù†Ű§Ù…Ù‡‌Ù‡Ű§ و ŰŻŰ§ŰŻÙ‡‌Ù‡Ű§ ۧŰČ ŰŹÙ„ŰłÙ‡ کنونی Ű­Ű°Ù ŰźÙˆŰ§Ù‡Ù†ŰŻ ŰŽŰŻ"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"ۧŰČ Ű­Ű§Ù„ŰȘ Ù…Ù‡Ù…Ű§Ù† ۟ۧ۱ۏ می‌ŰŽÙˆÛŒŰŻŰŸ"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"ۚۧ Ű§ÛŒÙ† Ú©Ű§Ű±ŰŒ ŰšŰ±Ù†Ű§Ù…Ù‡‌Ù‡Ű§ و ŰŻŰ§ŰŻÙ‡‌Ù‡Ű§ ۧŰČ ŰŹÙ„ŰłÙ‡ Ù…Ù‡Ù…Ű§Ù† کنونی Ű­Ű°Ù ŰźÙˆŰ§Ù‡Ù†ŰŻ ŰŽŰŻ."</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Ű§Ù…ŰȘÛŒŰ§ŰČÙ‡Ű§ÛŒ ŰłŰ±ÙŸŰ±ŰłŰȘ ŰšÙ‡ Ű§ÛŒÙ† کۧ۱ۚ۱ ۧŰč۷ۧ ŰŽÙˆŰŻ"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Ű§Ù…ŰȘÛŒŰ§ŰČÙ‡Ű§ÛŒ ŰłŰ±ÙŸŰ±ŰłŰȘ ŰšÙ‡ کۧ۱ۚ۱ ۧŰč۷ۧ Ù†ŰŽÙˆŰŻ"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"ŰźŰ±ÙˆŰŹ"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"فŰčŰ§Ù„ÛŒŰȘ Ù…Ù‡Ù…Ű§Ù† Ű°ŰźÛŒŰ±Ù‡ ŰŽÙˆŰŻŰŸ"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"می‌ŰȘÙˆŰ§Ù†ÛŒŰŻ فŰčŰ§Ù„ÛŒŰȘ ŰŹÙ„ŰłÙ‡ کنونی ۱ۧ Ű°ŰźÛŒŰ±Ù‡ Ú©Ù†ÛŒŰŻ ÛŒŰ§ همه ŰšŰ±Ù†Ű§Ù…Ù‡ و ŰŻŰ§ŰŻÙ‡‌Ù‡Ű§ ۱ۧ Ű­Ű°Ù Ú©Ù†ÛŒŰŻ"</string>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
index 6377d2a..0af656d 100644
--- a/packages/SettingsLib/res/values-fi/strings.xml
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Enemmän aikaa"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Vähemmän aikaa"</string>
     <string name="cancel" msgid="5665114069455378395">"Peru"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Valmis"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Herätykset ja muistutukset"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Lisätäänkö uusi käyttäjä?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Voit jakaa tämän laitteen muiden kanssa luomalla lisää käyttäjiä. Kullakin käyttäjällä on oma tilansa, jota he voivat muokata esimerkiksi omilla sovelluksilla ja taustakuvilla. Käyttäjät voivat myös muokata laiteasetuksia, kuten Wi‑Fi-asetuksia, jotka vaikuttavat laitteen kaikkiin käyttäjiin.\n\nKun lisäät uuden käyttäjän, hänen tulee määrittää oman tilansa asetukset.\n\nKaikki käyttäjät voivat päivittää muiden käyttäjien sovelluksia. Esteettömyysominaisuuksia tai ‑palveluita ei välttämättä siirretä uudelle käyttäjälle."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Kun lisäät uuden käyttäjän, hänen tulee määrittää oman tilansa asetukset.\n\nKaikki käyttäjät voivat päivittää sovelluksia muille käyttäjille."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Annetaanko käyttäjälle järjestelmänvalvojan oikeudet?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Järjestelmänvalvoja voi ylläpitää muita käyttäjiä, muuttaa laitteen asetuksia ja palauttaa laitteen tehdasasetukset."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Lisätäänkö käyttäjä nyt?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Varmista, että käyttäjä voi ottaa laitteen nyt ja määrittää oman tilansa."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Määritetäänkö profiilin asetukset nyt?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Tämä aloittaa uuden vierailija-käyttökerran ja kaikki nykyisen istunnon sovellukset ja data poistetaan"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Poistutaanko vierastilasta?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Tämä poistaa nykyisen vierailija-käyttökerran sovellukset ja datan"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Anna tälle käyttäjälle järjestelmänvalvojan oikeudet"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Älä anna käyttäjälle järjestelmänvalvojan oikeuksia"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Sulje"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Tallennetaanko vierastoiminta?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Voit tallentaa tämän istunnon toimintaa tai poistaa kaikki sovellukset ja datan"</string>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
index b0203dc..5596e70 100644
--- a/packages/SettingsLib/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -486,7 +486,7 @@
     <string name="disabled" msgid="8017887509554714950">"Désactivée"</string>
     <string name="external_source_trusted" msgid="1146522036773132905">"Autorisée"</string>
     <string name="external_source_untrusted" msgid="5037891688911672227">"Non autorisée"</string>
-    <string name="install_other_apps" msgid="3232595082023199454">"Installer les applications inconnues"</string>
+    <string name="install_other_apps" msgid="3232595082023199454">"Installer applis inconnues"</string>
     <string name="home" msgid="973834627243661438">"Accueil des paramètres"</string>
   <string-array name="battery_labels">
     <item msgid="7878690469765357158">"0 %"</item>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Plus longtemps."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Moins longtemps."</string>
     <string name="cancel" msgid="5665114069455378395">"Annuler"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"OK"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmes et rappels"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Ajouter un utilisateur?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Vous pouvez partager cet appareil avec d\'autres personnes en ajoutant des utilisateurs. Chaque utilisateur dispose de son propre espace, où il peut personnaliser, entre autres, ses applications et son fond d\'écran. Chacun peut également modifier les paramètres de l\'appareil, comme les réseaux Wi-Fi, qui touchent tous les utilisateurs.\n\nLorsque vous ajoutez un utilisateur, celui-ci doit configurer son propre espace.\n\nTout utilisateur peut mettre à jour les applications pour les autres utilisateurs. Il se peut que les paramètres et les services d\'accessibilité ne soient pas transférés aux nouveaux utilisateurs."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Lorsque vous ajoutez un utilisateur, celui-ci doit configurer son espace.\n\nTout utilisateur peut mettre à jour les applications pour tous les autres utilisateurs."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Privi. d\'admin. à l\'utilisateur?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"En tant qu\'administrateur, il pourra gérer d\'autres utilisateurs, modifier les paramètres de l\'appareil et rétablir les paramètres par défaut de l\'appareil."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurer l\'utilisateur?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Assurez-vous que la personne est disponible et qu\'elle peut utiliser l\'appareil pour configurer son espace."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurer le profil maintenant?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Une nouvelle session d\'invité sera lancée, et toutes les applications et données de la session en cours seront supprimées"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Quitter le mode Invité?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Les applications et les données de la session d\'invité en cours seront supprimées"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Accorder des privilèges d\'administrateur à cet utilisateur"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Ne pas accorder de privilèges d\'administrateur à l\'utilisateur"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Quitter"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Enregistrer l\'activité d\'invité?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Vous pouvez enregistrer l\'activité de session ou supprimer les applis et données"</string>
diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml
index 33c4b98..12ba2c3 100644
--- a/packages/SettingsLib/res/values-fr/strings.xml
+++ b/packages/SettingsLib/res/values-fr/strings.xml
@@ -141,7 +141,7 @@
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Annuler"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"L\'association vous permet d\'accéder à vos contacts et à l\'historique des appels lorsque vous êtes connecté."</string>
     <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Impossible d\'associer à <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Impossible d\'associer <xliff:g id="DEVICE_NAME">%1$s</xliff:g> : code ou clé d\'accès incorrects."</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Impossible d\'associer <xliff:g id="DEVICE_NAME">%1$s</xliff:g> : le code ou le mot de passe est incorrect."</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Impossible d\'établir la communication avec <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Association refusée par <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Ordinateur"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Plus longtemps."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Moins longtemps."</string>
     <string name="cancel" msgid="5665114069455378395">"Annuler"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"OK"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmes et rappels"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Ajouter un utilisateur ?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Vous pouvez partager cet appareil avec d\'autres personnes en ajoutant des utilisateurs. Chaque utilisateur dispose de son propre espace où il peut personnaliser ses applications et son fond d\'écran, entre autres. Chaque utilisateur peut également modifier les paramètres de l\'appareil qui s\'appliquent à tous, tels que le Wi-Fi.\n\nLorsque vous ajoutez un utilisateur, celui-ci doit configurer son espace.\n\nN\'importe quel utilisateur peut mettre à jour les applications pour tous les autres. Toutefois, il est possible que les services et les paramètres d\'accessibilité ne soient pas transférés vers le nouvel utilisateur."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Lorsque vous ajoutez un utilisateur, celui-ci doit configurer son espace.\n\nN\'importe quel utilisateur peut mettre à jour les applications pour tous les autres utilisateurs."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Droits admin à l\'utilisateur ?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"En tant qu\'administrateur, il pourra gérer d\'autres utilisateurs, modifier les paramètres et rétablir la configuration d\'usine de l\'appareil."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurer l\'utilisateur ?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Assurez-vous que la personne est prête à utiliser l\'appareil et à configurer son espace."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurer le profil maintenant ?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Cette action lancera une nouvelle session Invité et supprimera toutes les applis et données de la session actuelle"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Quitter le mode Invité ?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Cette action supprimera les applis et données de la session Invité actuelle."</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Accordez des droits d\'administrateur à cet utilisateur"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"N\'accordez pas de droits d\'administrateur à l\'utilisateur"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Quitter"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Enregistrer l\'activité ?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Enregistrez l\'activité de la session actuelle ou supprimez les applis et données"</string>
diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml
index 9dffccb..7577cd5 100644
--- a/packages/SettingsLib/res/values-gl/strings.xml
+++ b/packages/SettingsLib/res/values-gl/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Máis tempo."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Menos tempo."</string>
     <string name="cancel" msgid="5665114069455378395">"Cancelar"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"Aceptar"</string>
     <string name="done" msgid="381184316122520313">"Feito"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmas e recordatorios"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Engadir un usuario novo?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Podes compartir este dispositivo con outras persoas a través da creación de usuarios adicionais. Cada usuario ten o seu propio espazo que pode personalizar coas súas propias aplicacións, fondos de pantalla etc. Os usuarios tamén poden modificar as opcións de configuración do dispositivo, como a rede wifi, que afectan a todo o mundo.\n\nCando engadas un usuario novo, este deberá configurar o seu espazo.\n\nCalquera usuario pode actualizar as aplicacións para todos os demais usuarios. Non se poden transferir ao novo usuario os servizos nin a configuración de accesibilidade."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Cando engadas un usuario novo, este deberá configurar o seu espazo.\n\nCalquera usuario pode actualizar as aplicacións para todos os demais usuarios."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Privilexios de administrador?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Como administrador, poderá xestionar outros usuarios, modificar a configuración dos dispositivos e restablecer a configuración de fábrica."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurar o usuario agora?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Asegúrate de que a persoa está dispoñible para acceder ao dispositivo e configurar o seu espazo"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurar o perfil agora?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Iniciarase unha nova sesión de convidado e eliminaranse todas as aplicacións e datos desta sesión"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Saír do modo de convidado?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Eliminaranse as aplicacións e os datos da sesión de convidado actual"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Dar a este usuario privilexios de administrador"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Non dar a este usuario privilexios de administrador"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Saír"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Gardar actividade do convidado?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Podes gardar a actividade da sesión ou eliminar todas as aplicacións e datos"</string>
diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml
index 157b4f7..1696f81a 100644
--- a/packages/SettingsLib/res/values-gu/strings.xml
+++ b/packages/SettingsLib/res/values-gu/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"àȘ”àȘ§à« àȘžàȘźàȘŻ."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"àȘ“àȘ›à«‹ àȘžàȘźàȘŻ."</string>
     <string name="cancel" msgid="5665114069455378395">"àȘ°àȘŠ àȘ•àȘ°à«‹"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"àȘ“àȘ•ે"</string>
     <string name="done" msgid="381184316122520313">"àȘ„àȘˆ àȘ—àȘŻà«àȘ‚"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"àȘ…àȘČàȘŸàȘ°à«àȘź àȘ…àȘšà«‡ àȘ°àȘżàȘźàȘŸàȘ‡àȘšà«àȘĄàȘ°"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"àȘšàȘ”àȘŸ àȘ”àȘȘàȘ°àȘŸàȘ¶àȘ•àȘ°à«àȘ€àȘŸàȘšà«‡ àȘ‰àȘźà«‡àȘ°à«€àȘ?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"àȘ€àȘźà«‡ àȘ”àȘ§àȘŸàȘ°àȘŸàȘšàȘŸ àȘ”àȘȘàȘ°àȘŸàȘ¶àȘ•àȘ°à«àȘ€àȘŸàȘ“ àȘŹàȘšàȘŸàȘ”ીàȘšà«‡ àȘ…àȘšà«àȘŻ àȘČોàȘ•à«‹ àȘžàȘŸàȘ„ે àȘ† àȘĄàȘżàȘ”àȘŸàȘ‡àȘžàȘšà«‡ àȘ¶à«‡àȘ° àȘ•àȘ°à«€ àȘ¶àȘ•à«‹ àȘ›à«‹. àȘŠàȘ°à«‡àȘ• àȘ”àȘȘàȘ°àȘŸàȘ¶àȘ•àȘ°à«àȘ€àȘŸ àȘȘàȘŸàȘžà«‡ àȘ€à«‡àȘźàȘšà«€ àȘȘોàȘ€àȘŸàȘšà«€ àȘžà«àȘȘેàȘž àȘ›à«‡, àȘœà«‡àȘšà«‡ àȘ€à«‡àȘ“ àȘàȘȘ, àȘ”ૉàȘČàȘȘેàȘȘàȘ°, àȘ”àȘ—ેàȘ°à«‡ àȘžàȘŸàȘ„ે àȘ•àȘžà«àȘŸàȘźàȘŸàȘ‡àȘ àȘ•àȘ°à«€ àȘ¶àȘ•ે àȘ›à«‡. àȘ”àȘȘàȘ°àȘŸàȘ¶àȘ•àȘ°à«àȘ€àȘŸàȘ“ àȘȘ્àȘ°àȘ€à«àȘŻà«‡àȘ• àȘ”્àȘŻàȘ•્àȘ€àȘżàȘšà«‡ àȘ…àȘžàȘ° àȘ•àȘ°àȘ€à«€ àȘčોàȘŻ àȘ€à«‡àȘ”ી àȘĄàȘżàȘ”àȘŸàȘ‡àȘž àȘžà«‡àȘŸàȘżàȘ‚àȘ— àȘœà«‡àȘź àȘ•ે àȘ”àȘŸàȘ‡-àȘ«àȘŸàȘ‡àȘšà«‡ àȘȘàȘŁ àȘžàȘźàȘŸàȘŻà«‹àȘœàȘżàȘ€ àȘ•àȘ°à«€ àȘ¶àȘ•ે àȘ›à«‡.\n\nàȘœà«àȘŻàȘŸàȘ°à«‡ àȘ€àȘźà«‡ àȘ•à«‹àȘˆ àȘšàȘ”àȘŸ àȘ”àȘȘàȘ°àȘŸàȘ¶àȘ•àȘ°à«àȘ€àȘŸàȘšà«‡ àȘ‰àȘźà«‡àȘ°à«‹ àȘ›à«‹, àȘ€à«àȘŻàȘŸàȘ°à«‡ àȘ€à«‡ àȘ”્àȘŻàȘ•્àȘ€àȘżàȘšà«‡ àȘ€à«‡àȘźàȘšà«€ àȘžà«àȘȘેàȘž àȘžà«‡àȘŸ àȘ•àȘ°àȘ”àȘŸàȘšà«€ àȘœàȘ°à«‚àȘ° àȘȘàȘĄà«‡ àȘ›à«‡.\n\nàȘ•à«‹àȘˆàȘȘàȘŁ àȘ”àȘȘàȘ°àȘŸàȘ¶àȘ•àȘ°à«àȘ€àȘŸ àȘ…àȘšà«àȘŻ àȘŹàȘ§àȘŸ àȘ”àȘȘàȘ°àȘŸàȘ¶àȘ•àȘ°à«àȘ€àȘŸàȘ“ àȘźàȘŸàȘŸà«‡ àȘàȘȘàȘšà«‡ àȘ…àȘȘàȘĄà«‡àȘŸ àȘ•àȘ°à«€ àȘ¶àȘ•ે àȘ›à«‡. àȘšàȘ”àȘŸ àȘ”àȘȘàȘ°àȘŸàȘ¶àȘ•àȘ°à«àȘ€àȘŸàȘšà«‡ àȘàȘ•્àȘžà«‡àȘžàȘżàȘŹàȘżàȘČàȘżàȘŸà«€ àȘžà«‡àȘŸàȘżàȘ‚àȘ— àȘ…àȘšà«‡ àȘžà«‡àȘ”àȘŸàȘ“ àȘŸà«àȘ°àȘŸàȘšà«àȘžàȘ«àȘ° àȘš àȘȘàȘŁ àȘ„àȘŸàȘŻ."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"àȘœà«àȘŻàȘŸàȘ°à«‡ àȘ€àȘźà«‡ àȘ•à«‹àȘˆ àȘšàȘ”àȘŸ àȘ”àȘȘàȘ°àȘŸàȘ¶àȘ•àȘ°à«àȘ€àȘŸàȘšà«‡ àȘ‰àȘźà«‡àȘ°à«‹ àȘ›à«‹, àȘ€à«àȘŻàȘŸàȘ°à«‡ àȘ€à«‡ àȘ”્àȘŻàȘ•્àȘ€àȘżàȘšà«‡ àȘ€à«‡àȘźàȘšà«àȘ‚ àȘžà«àȘ„àȘŸàȘš àȘžà«‡àȘŸ àȘ…àȘȘ àȘ•àȘ°àȘ”àȘŸàȘšà«€ àȘœàȘ°à«‚àȘ° àȘȘàȘĄà«‡ àȘ›à«‡.\n\nàȘ•à«‹àȘˆàȘȘàȘŁ àȘ”àȘȘàȘ°àȘŸàȘ¶àȘ•àȘ°à«àȘ€àȘŸ àȘŹàȘ§àȘŸ àȘ…àȘšà«àȘŻ àȘ”àȘȘàȘ°àȘŸàȘ¶àȘ•àȘ°à«àȘ€àȘŸàȘ“ àȘźàȘŸàȘŸà«‡ àȘàȘȘàȘšà«‡ àȘ…àȘȘàȘĄà«‡àȘŸ àȘ•àȘ°à«€ àȘ¶àȘ•ે àȘ›à«‡."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"àȘŻà«àȘàȘ°àȘšà«‡ àȘàȘĄàȘźàȘżàȘš àȘ”àȘżàȘ¶à«‡àȘ·àȘŸàȘ§àȘżàȘ•àȘŸàȘ° àȘ†àȘȘીàȘ?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"àȘàȘĄàȘźàȘżàȘš àȘ€àȘ°à«€àȘ•ે, àȘ€à«‡àȘ“ àȘ…àȘšà«àȘŻ àȘ”àȘȘàȘ°àȘŸàȘ¶àȘ•àȘ°à«àȘ€àȘŸàȘ“àȘšà«‡ àȘźà«‡àȘšà«‡àȘœ, àȘĄàȘżàȘ”àȘŸàȘ‡àȘž àȘžà«‡àȘŸàȘżàȘ‚àȘ—àȘźàȘŸàȘ‚ àȘ«à«‡àȘ°àȘ«àȘŸàȘ° àȘ…àȘšà«‡ àȘĄàȘżàȘ”àȘŸàȘ‡àȘžàȘšà«‡ àȘ«à«‡àȘ•્àȘŸàȘ°à«€ àȘ°à«€àȘžà«‡àȘŸ àȘ•àȘ°à«€ àȘ¶àȘ•àȘ¶à«‡."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"àȘ…àȘ€à«àȘŻàȘŸàȘ°à«‡ àȘœ àȘ”àȘȘàȘ°àȘŸàȘ¶àȘ•àȘ°à«àȘ€àȘŸàȘšà«‡ àȘžà«‡àȘŸ àȘ…àȘȘ àȘ•àȘ°à«€àȘ?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"àȘ–àȘŸàȘ€àȘ°à«€ àȘ•àȘ°à«‹ àȘ•ે àȘ”્àȘŻàȘ•્àȘ€àȘż àȘĄàȘżàȘ”àȘŸàȘ‡àȘž àȘČેàȘ”àȘŸ àȘ…àȘšà«‡ àȘ€à«‡àȘźàȘšàȘŸ àȘžà«àȘ„àȘŸàȘšàȘšà«àȘ‚ àȘžà«‡àȘŸ àȘ…àȘȘ àȘ•àȘ°àȘ”àȘŸ àȘźàȘŸàȘŸà«‡ àȘ‰àȘȘàȘČàȘŹà«àȘ§ àȘ›à«‡"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"àȘčàȘ”ે àȘȘ્àȘ°à«‹àȘ«àȘŸàȘ‡àȘČ àȘžà«‡àȘŸ àȘ•àȘ°à«€àȘ?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"àȘ†àȘź àȘ•àȘ°àȘ”àȘŸàȘ„ી àȘ•à«‹àȘˆ àȘšàȘ”ુàȘ‚ àȘ…àȘ€àȘżàȘ„àȘż àȘžàȘ€à«àȘ° àȘšàȘŸàȘČુ àȘ„àȘ¶à«‡ àȘ€à«‡àȘźàȘœ àȘčàȘŸàȘČàȘšàȘŸ àȘžàȘ€à«àȘ°àȘźàȘŸàȘ‚àȘšà«€ àȘ€àȘźàȘŸàȘź àȘàȘȘ àȘ…àȘšà«‡ àȘĄà«‡àȘŸàȘŸ àȘĄàȘżàȘČીàȘŸ àȘ„àȘ¶à«‡"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"àȘ¶à«àȘ‚ àȘ…àȘ€àȘżàȘ„àȘż àȘźà«‹àȘĄàȘźàȘŸàȘ‚àȘ„ી àȘŹàȘčàȘŸàȘ° àȘšà«€àȘ•àȘłà«€àȘ?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"àȘ†àȘź àȘ•àȘ°àȘ”àȘŸàȘ„ી àȘčàȘŸàȘČàȘšàȘŸ àȘ…àȘ€àȘżàȘ„àȘż àȘžàȘ€à«àȘ°àȘšà«€ àȘ€àȘźàȘŸàȘź àȘàȘȘ àȘ…àȘšà«‡ àȘĄà«‡àȘŸàȘŸ àȘĄàȘżàȘČીàȘŸ àȘ•àȘ°àȘ”àȘŸàȘźàȘŸàȘ‚ àȘ†àȘ”àȘ¶à«‡"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"àȘ† àȘ”àȘȘàȘ°àȘŸàȘ¶àȘ•àȘ°à«àȘ€àȘŸàȘšà«‡ àȘàȘĄàȘźàȘżàȘšàȘšàȘŸ àȘ”àȘżàȘ¶à«‡àȘ·àȘŸàȘ§àȘżàȘ•àȘŸàȘ°à«‹ àȘ†àȘȘો"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"àȘ† àȘ”àȘȘàȘ°àȘŸàȘ¶àȘ•àȘ°à«àȘ€àȘŸàȘšà«‡ àȘàȘĄàȘźàȘżàȘšàȘšàȘŸ àȘ”àȘżàȘ¶à«‡àȘ·àȘŸàȘ§àȘżàȘ•àȘŸàȘ°à«‹ àȘ†àȘȘàȘ¶à«‹ àȘšàȘčીàȘ‚"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"àȘŹàȘčàȘŸàȘ° àȘšà«€àȘ•àȘłà«‹"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"àȘ¶à«àȘ‚ àȘ…àȘ€àȘżàȘ„àȘż àȘȘ્àȘ°àȘ”ૃàȘ€à«àȘ€àȘż àȘžàȘŸàȘšàȘ”ીàȘ?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"àȘ€àȘźà«‡ àȘčàȘŸàȘČàȘšàȘŸ àȘžàȘ€à«àȘ°àȘšà«€ àȘȘ્àȘ°àȘ”ૃàȘ€à«àȘ€àȘż àȘžàȘŸàȘšàȘ”ી àȘ¶àȘ•à«‹ àȘ›à«‹ àȘ…àȘ„àȘ”àȘŸ àȘ€àȘźàȘŸàȘź àȘàȘȘ àȘ…àȘšà«‡ àȘĄà«‡àȘŸàȘŸ àȘĄàȘżàȘČીàȘŸ àȘ•àȘ°à«€ àȘ¶àȘ•à«‹ àȘ›à«‹"</string>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index f0d12cc..2866f9e 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -141,7 +141,7 @@
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"à€°à€Šà„à€Š à€•à€°à„‡à€‚"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"à€•à€šà„‡à€•à„à€Ÿ à€čà„‹à€šà„‡ à€Șà€°, à€Șà„‡à€Żà€°à€żà€‚à€— à€žà„‡ à€†à€Șà€•à„‡ à€žà€‚à€Șà€°à„à€•à„‹à€‚ à€”à€° à€•à„‰à€Č à€‡à€€à€żà€čà€Ÿà€ž à€€à€• à€Șà€čà„à€‚à€šà€Ÿ à€œà€Ÿ à€žà€•à€€à€Ÿ à€čà„ˆ."</string>
     <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> à€•à„‡ à€žà€Ÿà€„ à€Żà„à€—à„‍à€źà€żà€€ à€šà€čà„€à€‚ à€čà„‹ à€žà€•à€Ÿ."</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"à€—à€Čà€€ à€Șà€żà€š à€Żà€Ÿ à€Șà€Ÿà€žà€•à„€ à€•à„€ à€”à€œà€č à€žà„‡ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> à€žà„‡ à€šà€čà„€à€‚ à€œà„‹à€Ąà€Œà€Ÿ à€œà€Ÿ à€žà€•à€Ÿ."</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"à€—à€Čà€€ à€Șà€żà€š à€Żà€Ÿ à€Șà€Ÿà€žà€”à€°à„à€Ą à€•à„€ à€”à€œà€č à€žà„‡ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> à€žà„‡ à€šà€čà„€à€‚ à€œà„‹à€Ąà€Œà€Ÿ à€œà€Ÿ à€žà€•à€Ÿ."</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> à€žà„‡ à€žà€‚à€šà€Ÿà€° à€šà€čà„€à€‚ à€•à€° à€žà€•à€€à€Ÿ."</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> à€šà„‡ à€œà„‹à€Ąà€Œà€šà„‡ à€•à€Ÿ à€…à€šà„à€°à„‹à€§ à€šà€čà„€à€‚ à€źà€Ÿà€šà€Ÿ."</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"à€•à€‚à€Șà„à€Żà„‚à€Ÿà€°"</string>
@@ -214,7 +214,7 @@
   </string-array>
     <string name="choose_profile" msgid="343803890897657450">"à€Șà„à€°à„‹à€«à€Œà€Ÿà€‡à€Č à€šà„à€šà„‡à€‚"</string>
     <string name="category_personal" msgid="6236798763159385225">"à€šà€żà€œà„€"</string>
-    <string name="category_work" msgid="4014193632325996115">"à€”à€°à„à€•"</string>
+    <string name="category_work" msgid="4014193632325996115">"à€‘à€«à€Œà€żà€ž"</string>
     <string name="development_settings_title" msgid="140296922921597393">"à€Ąà„‡à€”à€Čà€Șà€° à€•à„‡ à€Čà€żà€ à€žà„‡à€Ÿà€żà€‚à€— à€”à€° à€Ÿà„‚à€Č"</string>
     <string name="development_settings_enable" msgid="4285094651288242183">"à€Ąà„‡à€”à€Čà€Șà€° à€•à„‡ à€Čà€żà€ à€žà„‡à€Ÿà€żà€‚à€— à€”à€° à€Ÿà„‚à€Č à€šà€Ÿà€Čà„‚ à€•à€°à„‡à€‚"</string>
     <string name="development_settings_summary" msgid="8718917813868735095">"à€à€Șà„à€Čà€żà€•à„‡à€¶à€š à€”à€żà€•à€Ÿà€ž à€•à„‡ à€Čà€żà€ à€”à€żà€•à€Čà„‍à€Ș à€žà„‡à€Ÿ à€•à€°à„‡à€‚"</string>
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"à€œà€Œà„à€Żà€Ÿà€Šà€Ÿ à€žà€źà€Ż."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"à€•à€ź à€žà€źà€Ż."</string>
     <string name="cancel" msgid="5665114069455378395">"à€°à€Šà„à€Š à€•à€°à„‡à€‚"</string>
-    <string name="next" msgid="2699398661093607009">"à€†à€—à„‡ à€Źà€ąà€Œà„‡à€‚"</string>
-    <string name="back" msgid="5554327870352703710">"à€”à€Ÿà€Șà€ž à€œà€Ÿà€à€‚"</string>
-    <string name="save" msgid="3745809743277153149">"à€žà„‡à€” à€•à€°à„‡à€‚"</string>
     <string name="okay" msgid="949938843324579502">"à€ à„€à€• à€čà„ˆ"</string>
     <string name="done" msgid="381184316122520313">"à€čà„‹ à€—à€Żà€Ÿ"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"à€…à€Čà€Ÿà€°à„à€ź à€”à€° à€°à€żà€źà€Ÿà€‡à€‚à€Ąà€°"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"à€šà€Żà€Ÿ à€‰à€Șà€Żà„‹à€—à€•à€°à„à€€à€Ÿ à€œà„‹à€Ąà€Œà„‡à€‚?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"à€šà€ à€‰à€Șà€Żà„‹à€—à€•à€°à„à€€à€Ÿ à€œà„‹à€Ąà€Œà€•à€° à€‡à€ž à€Ąà€żà€”à€Ÿà€‡à€ž à€•à„‹ à€Šà„‚à€žà€°à„‡ à€Čà„‹à€—à„‹à€‚ à€•à„‡ à€žà€Ÿà€„ à€¶à„‡à€Żà€° à€•à€żà€Żà€Ÿ à€œà€Ÿ à€žà€•à€€à€Ÿ à€čà„ˆ. à€čà€° à€‰à€Șà€Żà„‹à€—à€•à€°à„à€€à€Ÿ à€•à„‡ à€Șà€Ÿà€ž à€…à€Șà€šà„€ à€œà€—à€č à€čà„‹à€€à„€ à€čà„ˆ, à€œà€żà€žà€źà„‡à€‚ à€”à„‡ à€à€Șà„à€Čà€żà€•à„‡à€¶à€š, à€”à„‰à€Čà€Șà„‡à€Șà€°, à€”à€° à€Šà„‚à€žà€°à„€ à€šà„€à€œà€Œà„‹à€‚ à€źà„‡à€‚ à€źà€šà€źà„à€€à€Ÿà€Źà€żà€• à€Źà€Šà€Čà€Ÿà€” à€•à€° à€žà€•à€€à„‡ à€čà„ˆà€‚. à€‰à€Șà€Żà„‹à€—à€•à€°à„à€€à€Ÿ à€”à€Ÿà€ˆ-à€«à€Œà€Ÿà€ˆ à€œà„ˆà€žà„€ à€Ąà€żà€”à€Ÿà€‡à€ž à€žà„‡à€Ÿà€żà€‚à€— à€źà„‡à€‚ à€­à„€ à€Źà€Šà€Čà€Ÿà€” à€•à€° à€žà€•à€€à„‡ à€čà„ˆà€‚, à€œà€żà€žà€•à€Ÿ à€…à€žà€° à€čà€° à€•à€żà€žà„€ à€Șà€° à€Șà€Ąà€Œà€€à€Ÿ à€čà„ˆ.\n\nà€œà€Ź à€•à€żà€žà„€ à€šà€ à€‰à€Șà€Żà„‹à€—à€•à€°à„à€€à€Ÿ à€•à„‹ à€œà„‹à€Ąà€Œà€Ÿ à€œà€Ÿà€€à€Ÿ à€čà„ˆ, à€€à„‹ à€‰à€žà„‡ à€…à€Șà€šà„€ à€œà€—à€č à€žà„‡à€Ÿ à€•à€°à€šà„€ à€čà„‹à€€à„€ à€čà„ˆ.\n\nà€•à„‹à€ˆ à€­à„€ à€‰à€Șà€Żà„‹à€—à€•à€°à„à€€à€Ÿ, à€Šà„‚à€žà€°à„‡ à€žà€­à„€ à€‰à€Șà€Żà„‹à€—à€•à€°à„à€€à€Ÿà€“à€‚ à€•à„‡ à€Čà€żà€ à€à€Șà„à€Čà€żà€•à„‡à€¶à€š à€…à€Șà€Ąà„‡à€Ÿ à€•à€° à€žà€•à€€à€Ÿ à€čà„ˆ. à€à€žà€Ÿ à€­à„€ à€čà„‹ à€žà€•à€€à€Ÿ à€čà„ˆ à€•à€ż à€žà„à€Čà€­à€€à€Ÿ à€žà„‡à€Ÿà€żà€‚à€— à€”à€° à€žà„‡à€”à€Ÿà€à€‚ à€šà€ à€‰à€Șà€Żà„‹à€—à€•à€°à„à€€à€Ÿ à€•à„‹ à€Ÿà„à€°à€Ÿà€‚à€žà€«à€Œà€° à€š à€čà„‹ à€Șà€Ÿà€à€‚."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"à€•à„‹à€ˆ à€šà€Żà€Ÿ à€‰à€Șà€Żà„‹à€—à€•à€°à„à€€à€Ÿ à€œà„‹à€Ąà€Œà€šà„‡ à€Șà€°, à€‰à€žà„‡ à€…à€Șà€šà„€ à€œà€—à€č à€žà„‡à€Ÿ à€•à€°à€šà„€ à€čà„‹à€€à„€ à€čà„ˆ.\n\nà€•à„‹à€ˆ à€­à„€ à€‰à€Șà€Żà„‹à€—à€•à€°à„à€€à€Ÿ à€Źà€Ÿà€•à„€ à€žà€­à„€ à€‰à€Șà€Żà„‹à€—à€•à€°à„à€€à€Ÿà€“à€‚ à€•à„‡ à€Čà€żà€ à€à€Șà„à€Čà€żà€•à„‡à€¶à€š à€…à€Șà€Ąà„‡à€Ÿ à€•à€° à€žà€•à€€à€Ÿ à€čà„ˆ."</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"à€•à„à€Żà€Ÿ à€‡à€ž à€”à„à€Żà€•à„à€€à€ż à€•à„‹ à€à€Ąà€źà€żà€š à€Źà€šà€Ÿà€šà€Ÿ à€čà„ˆ?"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"à€à€Ąà€źà€żà€š, à€…à€šà„à€Ż à€Čà„‹à€—à„‹à€‚ à€•à„‡ à€źà„à€•à€Ÿà€Źà€Čà„‡ à€–à€Ÿà€ž à€…à€§à€żà€•à€Ÿà€° à€čà„‹à€€à„‡ à€čà„ˆà€‚. à€à€Ąà€źà€żà€š à€•à„‡ à€Șà€Ÿà€ž à€Żà„‡ à€…à€§à€żà€•à€Ÿà€° à€čà„‹à€€à„‡ à€čà„ˆà€‚: à€žà€­à„€ à€Čà„‹à€—à„‹à€‚ à€•à„‹ à€źà„ˆà€šà„‡à€œ à€•à€°à€šà€Ÿ, à€‡à€ž à€Ąà€żà€”à€Ÿà€‡à€ž à€•à„‹ à€…à€Șà€Ąà„‡à€Ÿ à€Żà€Ÿ à€°à„€à€žà„‡à€Ÿ à€•à€°à€šà€Ÿ, à€žà„‡à€Ÿà€żà€‚à€— à€źà„‡à€‚ à€Źà€Šà€Čà€Ÿà€” à€•à€°à€šà€Ÿ, à€‡à€‚à€žà„à€Ÿà„‰à€Č à€•à€żà€ à€—à€ à€žà€­à„€ à€à€Șà„à€Čà€żà€•à„‡à€¶à€š à€Šà„‡à€–à€šà€Ÿ, à€”à€° à€…à€šà„à€Ż à€Čà„‹à€—à„‹à€‚ à€•à„‹ à€à€Ąà€źà€żà€š à€•à„‡ à€–à€Ÿà€ž à€…à€§à€żà€•à€Ÿà€° à€Šà„‡à€šà€Ÿ à€Żà€Ÿ à€‰à€šà„à€čà„‡à€‚ à€”à€Ÿà€Șà€ž à€Čà„‡à€šà€Ÿ."</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"à€à€Ąà€źà€żà€š à€Źà€šà€Ÿà€à€‚"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"à€‡à€ž à€”à„à€Żà€•à„à€€à€ż à€•à„‹ à€à€Ąà€źà€żà€š à€•à„‡ à€–à€Ÿà€ž à€…à€§à€żà€•à€Ÿà€° à€Šà„‡à€‚?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"à€à€Ąà€źà€żà€š à€•à„‡ à€€à„Œà€° à€Șà€°, à€‰à€šà€•à„‡ à€Șà€Ÿà€ž à€…à€šà„à€Ż à€Čà„‹à€—à„‹à€‚ à€•à„€ à€…à€šà„à€źà€€à€żà€Żà€Ÿà€‚ à€•à„‹ à€źà„ˆà€šà„‡à€œ à€•à€°à€šà„‡, à€Ąà€żà€”à€Ÿà€‡à€ž à€•à„€ à€žà„‡à€Ÿà€żà€‚à€— à€Źà€Šà€Čà€šà„‡, à€”à€° à€Ąà€żà€”à€Ÿà€‡à€ž à€•à„‹ à€«à€Œà„ˆà€•à„à€Ÿà„à€°à„€ à€°à„€à€žà„‡à€Ÿ à€•à€°à€šà„‡ à€•à€Ÿ à€…à€§à€żà€•à€Ÿà€° à€čà„‹à€—à€Ÿ."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"à€‰à€Șà€Żà„‹à€—à€•à€°à„à€€à€Ÿ à€•à„‹ à€…à€­à„€ à€žà„‡à€Ÿ à€•à€°à„‡à€‚?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"à€Șà€•à„à€•à€Ÿ à€•à€°à„‡à€‚ à€•à€ż à€”à„à€Żà€•à„à€€à€ż à€Ąà€żà€”à€Ÿà€‡à€ž à€•à€Ÿ à€‡à€žà„à€€à„‡à€źà€Ÿà€Č à€•à€°à€šà„‡ à€”à€° à€…à€Șà€šà„€ à€œà€—à€č à€žà„‡à€Ÿ à€•à€°à€šà„‡ à€•à„‡ à€Čà€żà€ à€źà„Œà€œà„‚à€Š à€čà„ˆ"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"à€Șà„à€°à„‹à€«à€Œà€Ÿà€‡à€Č à€…à€­à„€ à€žà„‡à€Ÿ à€•à€°à„‡à€‚?"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"à€à€žà€Ÿ à€•à€°à€šà„‡ à€Șà€°, à€źà„‡à€čà€źà€Ÿà€š à€•à„‡ à€€à„Œà€° à€Șà€° à€Źà„à€°à€Ÿà€‰à€œà€Œ à€•à€°à€šà„‡ à€•à€Ÿ à€à€• à€šà€Żà€Ÿ à€žà„‡à€¶à€š à€¶à„à€°à„‚ à€čà„‹ à€œà€Ÿà€à€—à€Ÿ. à€žà€Ÿà€„ à€čà„€, à€Șà€żà€›à€Čà„‡ à€žà„‡à€¶à€š à€źà„‡à€‚ à€źà„Œà€œà„‚à€Š à€Ąà„‡à€Ÿà€Ÿ à€”à€° à€‡à€žà„à€€à„‡à€źà€Ÿà€Č à€•à€żà€ à€œà€Ÿ à€°à€čà„‡ à€à€Șà„à€Čà€żà€•à„‡à€¶à€š à€•à„‹ à€źà€żà€Ÿà€Ÿ à€Šà€żà€Żà€Ÿ à€œà€Ÿà€à€—à€Ÿ"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"à€źà„‡à€čà€źà€Ÿà€š à€źà„‹à€Ą à€žà„‡ à€Źà€Ÿà€čà€° à€šà€żà€•à€Čà€šà€Ÿ à€čà„ˆ?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"à€‡à€žà€žà„‡, à€źà„‡à€čà€źà€Ÿà€š à€źà„‹à€Ą à€•à„‡ à€źà„Œà€œà„‚à€Šà€Ÿ à€žà„‡à€¶à€š à€•à€Ÿ à€Ąà„‡à€Ÿà€Ÿ à€”à€° à€‡à€žà€źà„‡à€‚ à€‡à€žà„à€€à„‡à€źà€Ÿà€Č à€čà„‹ à€°à€čà„‡ à€à€Șà„à€Čà€żà€•à„‡à€¶à€š à€źà€żà€Ÿ à€œà€Ÿà€à€‚à€—à„‡"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"à€čà€Ÿà€‚, à€‡à€šà„à€čà„‡à€‚ à€à€Ąà€źà€żà€š à€Źà€šà€Ÿà€à€‚"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"à€šà€čà„€à€‚, à€‡à€šà„à€čà„‡à€‚ à€à€Ąà€źà€żà€š à€š à€Źà€šà€Ÿà€à€‚"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"à€‡à€ž à€”à„à€Żà€•à„à€€à€ż à€•à„‹ à€à€Ąà€źà€żà€š à€•à„‡ à€–à€Ÿà€ž à€…à€§à€żà€•à€Ÿà€° à€Šà„‡à€‚"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"à€‡à€ž à€”à„à€Żà€•à„à€€à€ż à€•à„‹ à€à€Ąà€źà€żà€š à€•à„‡ à€–à€Ÿà€ž à€…à€§à€żà€•à€Ÿà€° à€š à€Šà„‡à€‚"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"à€Źà€Ÿà€čà€° à€šà€żà€•à€Čà„‡à€‚"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"à€źà„‡à€čà€źà€Ÿà€š à€źà„‹à€Ą à€•à„€ à€—à€€à€żà€”à€żà€§à€ż à€•à„‹ à€žà„‡à€” à€•à€°à€šà€Ÿ à€čà„ˆ?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"à€źà„Œà€œà„‚à€Šà€Ÿ à€žà„‡à€¶à€š à€•à„€ à€—à€€à€żà€”à€żà€§à€ż à€•à„‹ à€žà„‡à€” à€•à€żà€Żà€Ÿ à€œà€Ÿ à€žà€•à€€à€Ÿ à€čà„ˆ à€Żà€Ÿ à€žà€­à„€ à€à€Ș à€”à€° à€Ąà„‡à€Ÿà€Ÿ à€•à„‹ à€źà€żà€Ÿà€Ÿà€Żà€Ÿ à€œà€Ÿ à€žà€•à€€à€Ÿ à€čà„ˆ"</string>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index 41528f3..06fe6f2 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -141,7 +141,7 @@
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Odustani"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Uparivanje omogućuje pristup vašim kontaktima i povijesti poziva dok ste povezani."</string>
     <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Uparivanje s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nije bilo moguće."</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Uparivanje s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nije uspjelo zbog netočnog PIN-a ili pristupnog ključa."</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Uparivanje s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nije uspjelo zbog netočnog PIN-a ili zaporke."</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Komunikacija s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nije moguća."</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Uparivanje odbio uređaj <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Računalo"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Više vremena."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Manje vremena."</string>
     <string name="cancel" msgid="5665114069455378395">"Odustani"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"U redu"</string>
     <string name="done" msgid="381184316122520313">"Gotovo"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmi i podsjetnici"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Dodati novog korisnika?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Da biste ovaj uređaj dijelili s drugima, moĆŸete napraviti dodatne korisnike. Svaki korisnik ima svoj prostor koji moĆŸe prilagoditi pomoću vlastitih aplikacija, pozadine i tako dalje. Korisnici mogu prilagoditi i postavke uređaja koje utječu na sve ostale korisnike, na primjer Wi‑Fi.\n\nKada dodate novog korisnika, ta osoba mora postaviti svoj prostor.\n\nBilo koji korisnik moĆŸe aĆŸurirati aplikacije za sve ostale korisnike. Postavke i usluge pristupačnosti moĆŸda se neće prenijeti na novog korisnika."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Kada dodate novog korisnika, ta osoba mora postaviti vlastiti prostor.\n\nBilo koji korisnik moĆŸe aĆŸurirati aplikacije za sve ostale korisnike."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Dati korisniku administratorske ovlasti?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Kao administrator moći će upravljati drugim korisnicima, mijenjati postavke uređaja i vraćati uređaj na tvorničke postavke."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Ćœelite li postaviti korisnika?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Uređaj morate dati toj osobi da sama postavi svoj prostor"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Ćœelite li sada postaviti profil?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Time će se pokrenuti nova gostujuća sesija i izbrisati sve aplikacije i podaci iz trenutačne sesije."</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Napustiti način rada za goste?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Time će se izbrisati aplikacije i podaci iz trenutačne gostujuće sesije."</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Daj ovom korisniku administratorske ovlasti"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Nemoj dati korisniku administratorske ovlasti"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Izlaz"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Spremiti aktivnosti gosta?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"MoĆŸete spremiti aktivnosti iz ove sesije ili izbrisati sve aplikacije i podatke"</string>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index 36e4f39..5d25572 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Több idƑ."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Kevesebb idƑ."</string>
     <string name="cancel" msgid="5665114069455378395">"Mégse"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Kész"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Ébresztések és emlékeztetƑk"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Hozzáad új felhasználót?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"További felhasználók létrehozásával megoszthatja ezt az eszközt másokkal. Minden felhasználó saját felülettel rendelkezik, amelyet személyre szabhat saját alkalmazásaival, háttérképével stb. A felhasználók módosíthatják az eszköz beállításait is, például a Wi‑Fi használatát, amely mindenkit érint.\n\nHa új felhasználót ad hozzá, az illetƑnek be kell állítania saját felületét.\n\nBármely felhasználó frissítheti az alkalmazásokat valamennyi felhasználó számára. ElƑfordulhat, hogy a kisegítƑ lehetƑségekkel kapcsolatos beállításokat és szolgáltatásokat nem viszi át a rendszer az új felhasználóhoz."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Ha új felhasználót ad hozzá, az illetƑnek be kell állítania saját tárterületét.\n\nBármely felhasználó frissítheti az alkalmazásokat valamennyi felhasználó számára."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Ad adminisztrátori jogosultságokat?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Adminisztrátorként más felhasználókat kezelhet, módosíthatja az eszközbeállításokat és visszaállíthatja az eszköz gyári beállításait."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Beállít most egy felhasználót?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"GyƑzƑdjön meg arról, hogy a személy hozzá tud férni az eszközhöz, hogy beállíthassa a területét"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Létrehoz most egy profilt?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"A mƱvelettel új vendégmunkamenetet indít, valamint az összes alkalmazást és adatot törli az aktuális munkamenetbƑl"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Kilép a vendég módból?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"A mƱvelettel törlƑdnek az aktuális vendégmunkamenet alkalmazásai és adatai"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Adminisztrátori jogosultságok megadása a felhasználónak"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Ne kapjon a felhasználó adminisztrátori jogosultságokat"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Kilépés"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Menti a vendégtevékenységeket?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Tevékenységeket menthet az aktuális munkamenetbƑl, vagy minden appot és adatot törölhet"</string>
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index 23a8044..69e57cc 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Ô±ŐŸŐ„ŐŹŐĄÖŐ¶Ő„ŐŹ ŐȘŐĄŐŽŐĄŐ¶ŐĄŐŻŐš:"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"ŐŠŐĄŐŻŐĄŐœŐ„ÖŐ¶Ő„ŐŹ ŐȘŐĄŐŽŐĄŐ¶ŐĄŐŻŐš:"</string>
     <string name="cancel" msgid="5665114069455378395">"Ő‰Ő„ŐČŐĄÖ€ŐŻŐ„ŐŹ"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"Ô”ŐČŐĄŐŸ"</string>
     <string name="done" msgid="381184316122520313">"ŐŠŐĄŐżÖ€ŐĄŐœŐż Ő§"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Զերթ՞ւցիŐčŐ¶Ő„Ö€ և հիշՄց՞ւՎնՄր"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Ô±ŐŸŐ„ŐŹŐĄÖŐ¶Ő„ŐžŐŹ Ő¶ŐžÖ€ Ö…ŐŁŐżŐĄŐżŐ„Ö€"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Ô±Ő”Őœ ŐœŐĄÖ€Ö„Ő«Ö կարվŐČ Ő„Ö„ Ö…ŐŁŐżŐŸŐ„ŐŹ ŐŽŐ« Ö„ŐĄŐ¶Ő« Ő°ŐžŐŁŐžŐŸ: Ԯրա հածար ŐĄŐ¶Ő°Ö€ŐĄŐȘŐ„Ő·Őż Ő§ ŐœŐżŐ„ŐČŐźŐ„ŐŹ Տրեց՞ւցիŐč ŐșÖ€ŐžÖ†Ő«ŐŹŐ¶Ő„Ö€: Ő…ŐžÖ‚Ö€ŐĄÖ„ŐĄŐ¶ŐčŐ”ŐžÖ‚Ö€ Ö…ŐŁŐżŐĄŐżŐ„Ö€ կարվŐČ Ő§ ŐŻŐĄÖ€ŐŁŐĄŐŸŐžÖ€Ő„ŐŹ Ő«Ö€ ŐșÖ€ŐžÖ†Ő«ŐŹŐš ŐšŐœŐż Ő«Ö€ հեՔՄց՞ŐČŐžÖ‚Ő©Ő”ŐĄŐ¶ և ŐłŐĄŐ·ŐĄŐŻŐ« (օր.՝ ŐšŐ¶ŐżÖ€Ő„ŐŹ Ő«Ö€ վւթառ ŐșŐĄŐœŐżŐĄŐŒŐš, ŐżŐ„ŐČŐĄŐ€Ö€Ő„ŐŹ ŐĄŐ¶Ő°Ö€ŐĄŐȘŐ„Ő·Őż Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ¶Ő„Ö€Őš և ŐĄŐ”ŐŹŐ¶): ÔČեցի ŐĄŐ”Ő€, Ö…ŐŁŐżŐĄŐżŐ„Ö€Ő„Ö€Őš կարվŐČ Ő„Ő¶ ŐŻŐĄÖ€ŐŁŐĄŐŸŐžÖ€Ő„ŐŹ ŐœŐĄÖ€Ö„Ő« ŐžÖ€ŐžŐ· ŐșŐĄÖ€ŐĄŐŽŐ„ŐżÖ€Ő„Ö€ (օր.՝ Wi-Fi-Őš), ŐžÖ€ŐžŐ¶Ö„ ŐŻŐŁŐžÖ€ŐźŐ„Ő¶ Ő¶ŐĄÖ‡ ŐŽŐ”ŐžÖ‚Őœ ŐșÖ€ŐžÖ†Ő«ŐŹŐ¶Ő„Ö€Ő« հածար:\n\nÔ”Ö€Őą Ő¶ŐžÖ€ ŐșÖ€ŐžÖ†Ő«ŐŹ ŐĄŐŸŐ„ŐŹŐĄÖŐ¶Ő„Ö„, ŐżŐŸŐ”ŐĄŐŹ Ö…ŐŁŐżŐĄŐżŐ„Ö€Őš ŐșŐ„ŐżÖ„ Ő§ ŐŻŐĄÖ€ŐŁŐĄŐŸŐžÖ€Ő« ŐĄŐ”Ő¶:\n\nŐ…ŐžÖ‚Ö€ŐĄÖ„ŐĄŐ¶ŐčŐ”ŐžÖ‚Ö€ Ö…ŐŁŐżŐĄŐżŐ„Ö€ կարվŐČ Ő§ թերՎեցնՄՏ ŐŽŐ”ŐžÖ‚Őœ Ö…ŐŁŐżŐĄŐżŐ„Ö€Ő„Ö€Ő« Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ¶Ő„Ö€Őš: Հատվւկ ŐŁŐžÖ€ŐźŐĄŐŒŐžÖ‚Ő”Ő©Ő¶Ő„Ö€Ő« և ŐźŐĄŐŒŐĄŐ”ŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€Ő« ŐŻŐĄÖ€ŐŁŐĄŐŸŐžÖ€ŐžÖ‚ŐŽŐ¶Ő„Ö€Őš կարվŐČ Ő„Ő¶ ŐčÖƒŐžŐ­ŐĄŐ¶ÖŐŸŐ„ŐŹ Ő¶ŐžÖ€ Ö…ŐŁŐżŐĄŐżŐ„Ö€Ő„Ö€Ő«Ő¶:"</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Ô”Ö€Őą Ő¶ŐžÖ€ Ö…ŐŁŐżŐĄŐżŐ„Ö€ Ő„Ö„ ŐĄŐŸŐ„ŐŹŐĄÖŐ¶ŐžÖ‚ŐŽ, Ő¶ŐĄ ŐșŐ„ŐżÖ„ Ő§ ŐŻŐĄÖ€ŐŁŐĄŐŸŐžÖ€Ő« Ő«Ö€ ŐșÖ€ŐžÖ†Ő«ŐŹŐš:\n\nՑենկեցե՟ Ö…ŐŁŐżŐĄŐżŐ„Ö€ կարվŐČ Ő§ թերՎեցնՄՏ Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ¶Ő„Ö€Őš ձվլվր Ö…ŐŁŐżŐĄŐżŐ„Ö€Ő„Ö€Ő« հածար:"</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"ŐÖ€ŐĄŐŽŐĄŐ€Ö€Ő„ŐžŐŹ ŐĄÖ€ŐżŐžŐ¶ŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"ՈրŐșŐ„Őœ ŐĄŐ€ŐŽŐ«Ő¶Ő«ŐœŐżÖ€ŐĄŐżŐžÖ€Ő Ő¶ŐĄ կկարվŐČŐĄŐ¶ŐĄ ŐŻŐĄŐŒŐĄŐŸŐĄÖ€Ő„ŐŹ ŐĄŐ”ŐŹ Ö…ŐŁŐżŐĄŐżŐ„Ö€Ő„Ö€Ő«, փ՞խՄՏ ŐœŐĄÖ€Ö„Ő« ŐŻŐĄÖ€ŐŁŐĄŐŸŐžÖ€ŐžÖ‚ŐŽŐ¶Ő„Ö€Őš և ŐŸŐ„Ö€ŐĄŐŻŐĄŐ¶ŐŁŐ¶Ő„ŐŹ ŐœŐĄÖ€Ö„Ő« ŐŁŐžÖ€ŐźŐĄÖ€ŐĄŐ¶ŐĄŐ”Ő«Ő¶ ŐŻŐĄÖ€ŐŁŐĄŐŸŐžÖ€ŐžÖ‚ŐŽŐ¶Ő„Ö€ŐšÖ‰"</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"ÔżŐĄÖ€ŐŁŐĄŐŸŐžÖ€Ő„ŐžŐŹ ŐșÖ€ŐžÖ†Ő«ŐŹŐš"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Ő€ŐĄŐŽŐžŐŠŐŸŐ„Ö„, վր ŐĄŐ¶Ő±Őš կարվŐČ Ő§ ŐŸŐ„Ö€ÖŐ¶Ő„ŐŹ ŐœŐĄÖ€Ö„Őš և ŐŻŐĄÖ€ŐŁŐĄŐŸŐžÖ€Ő„ŐŹ Ő«Ö€ տարառքչ"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ÔżŐĄÖ€ŐŁŐĄŐŸŐžÖ€Ő„ŐžŐŹ ŐșÖ€ŐžÖ†Ő«ŐŹŐš Ő°Ő«ŐŽŐĄ:"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ÔżŐœŐŻŐœŐŸŐ« Ő°Ő”ŐžÖ‚Ö€Ő« Ő¶ŐžÖ€ ŐĄŐ·Ő­ŐĄŐżŐĄŐ·Ö€Ő»ŐĄŐ¶, Ő«ŐœŐŻ Ő¶ŐĄŐ­ŐžÖ€Ő€ ŐĄŐ·Ő­ŐĄŐżŐĄŐ·Ö€Ő»ŐĄŐ¶Ő« ձվլվր Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ¶Ő„Ö€Ő¶ վւ ŐżŐŸŐ”ŐĄŐŹŐ¶Ő„Ö€Őš ŐŻŐ»Ő¶Ő»ŐŸŐ„Ő¶"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"ÔŽŐžÖ‚Ö€Őœ գա՞լ Ő°Ő”ŐžÖ‚Ö€Ő« ŐŒŐ„ŐȘիՎից"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Ő€Ő”ŐžÖ‚Ö€Ő« ՚նթեցիկ ŐĄŐ·Ő­ŐĄŐżŐĄŐ·Ö€Ő»ŐĄŐ¶Ő« ձվլվր Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ¶Ő„Ö€Ő¶ վւ ŐżŐŸŐ”ŐĄŐŹŐ¶Ő„Ö€Őš ŐŻŐ»Ő¶Ő»ŐŸŐ„Ő¶"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Ő•ŐŁŐżŐĄŐżŐ«Ö€ŐžŐ»Őš ŐżÖ€ŐĄŐŽŐĄŐ€Ö€Ő„ŐŹ ŐĄŐ€ŐŽŐ«Ő¶Ő«ŐœŐżÖ€ŐĄŐżŐžÖ€Ő« ŐĄÖ€ŐżŐžŐ¶ŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Ő•ŐŁŐżŐĄŐżŐ«Ö€ŐžŐ»Őš ŐčŐżÖ€ŐĄŐŽŐĄŐ€Ö€Ő„ŐŹ ŐĄŐ€ŐŽŐ«Ő¶Ő«ŐœŐżÖ€ŐĄŐżŐžÖ€Ő« ŐĄÖ€ŐżŐžŐ¶ŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"ÔŽŐžÖ‚Ö€Őœ ŐŁŐĄŐŹ"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ŐŠŐĄŐ°Ő„ŐžŐŹ Ő°Ő”ŐžÖ‚Ö€Ő« ŐŒŐ„ŐȘŐ«ŐŽŐ« ŐșŐĄŐżŐŽŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Őš"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ŐŠŐĄŐ°Ő„Ö„ ՚նթեցիկ ŐĄŐ·Ő­ŐĄŐżŐĄŐ·Ö€Ő»ŐĄŐ¶Ő« ŐșŐĄŐżŐŽŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Őš ŐŻŐĄŐŽ Ő»Ő¶Ő»Ő„Ö„ Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ¶Ő„Ö€Ő¶ վւ ŐżŐŸŐ”ŐĄŐŹŐ¶Ő„Ö€Őš"</string>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index 0037b2d..d174c75 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Lebih lama."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Lebih cepat."</string>
     <string name="cancel" msgid="5665114069455378395">"Batal"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"Oke"</string>
     <string name="done" msgid="381184316122520313">"Selesai"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarm dan pengingat"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Tambahkan pengguna baru?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Anda dapat menggunakan perangkat ini bersama orang lain dengan membuat pengguna tambahan. Setiap pengguna memiliki ruang sendiri, yang dapat disesuaikan dengan aplikasi, wallpaper, dan lainnya. Pengguna juga dapat menyesuaikan setelan perangkat seperti Wi-Fi yang dapat memengaruhi semua pengguna lain.\n\nSaat Anda menambahkan pengguna baru, pengguna tersebut perlu menyiapkan ruangnya.\n\nPengguna mana pun dapat mengupdate aplikasi untuk semua pengguna lainnya. Layanan dan setelan aksesibilitas mungkin tidak ditransfer ke pengguna baru."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Saat Anda menambahkan pengguna baru, orang tersebut perlu menyiapkan ruang mereka sendiri.\n\nPengguna mana pun dapat memperbarui aplikasi untuk semua pengguna lain."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Berikan hak istimewa admin?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Sebagai admin, mereka akan dapat mengelola pengguna lainnya, mengubah setelan perangkat, dan mereset perangkat ke setelan pabrik."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Siapkan pengguna sekarang?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Pastikan orang tersebut ada untuk mengambil perangkat dan menyiapkan ruangnya"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Siapkan profil sekarang?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Tindakan ini akan memulai sesi tamu baru dan menghapus semua aplikasi serta data dari sesi saat ini"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Keluar dari mode tamu?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Tindakan ini akan menghapus aplikasi dan data dari sesi tamu saat ini"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Beri pengguna ini hak istimewa admin"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Jangan beri pengguna hak istimewa admin"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Keluar"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Simpan aktivitas tamu?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Anda bisa menyimpan aktivitas sesi saat ini atau menghapus semua aplikasi &amp; data"</string>
@@ -677,7 +665,7 @@
     <string name="physical_keyboard_title" msgid="4811935435315835220">"Keyboard fisik"</string>
     <string name="keyboard_layout_dialog_title" msgid="3927180147005616290">"Pilih tata letak keyboard"</string>
     <string name="keyboard_layout_default_label" msgid="1997292217218546957">"Default"</string>
-    <string name="turn_screen_on_title" msgid="3266937298097573424">"Mengaktifkan layar"</string>
+    <string name="turn_screen_on_title" msgid="3266937298097573424">"Aktifkan layar"</string>
     <string name="allow_turn_screen_on" msgid="6194845766392742639">"Izinkan pengaktifan layar"</string>
     <string name="allow_turn_screen_on_description" msgid="43834403291575164">"Mengizinkan aplikasi mengaktifkan layar. Jika diizinkan, aplikasi dapat mengaktifkan layar kapan saja tanpa izin Anda."</string>
     <string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"Hentikan siaran <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml
index ced9ec6..d97a001 100644
--- a/packages/SettingsLib/res/values-is/strings.xml
+++ b/packages/SettingsLib/res/values-is/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Meiri tími."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Minni tími."</string>
     <string name="cancel" msgid="5665114069455378395">"Hætta við"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"Í lagi"</string>
     <string name="done" msgid="381184316122520313">"Lokið"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Vekjarar og áminningar"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Bæta nýjum notanda við?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Þú getur búið til fleiri notendur til að deila þessu tæki með öðrum. Hver notandi hefur sitt eigið svæði sem viðkomandi getur sérsniðið með forritum, veggfóðri o.s.frv. Notendur geta einnig breytt þeim stillingum tækisins sem hafa áhrif á alla notendur, t.d. Wi-Fi.\n\nÞegar þú bætir nýjum notanda við þarf sá notandi að setja upp svæðið sitt.\n\nHvaða notandi sem er getur uppfært forrit fyrir alla aðra notendur. Ekki er tryggt að stillingar á aðgengi og þjónustu flytjist yfir á nýja notandann."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Þegar þú bætir nýjum notanda við þarf sá notandi að setja upp svæðið sitt.\n\nHvaða notandi sem er getur uppfært forrit fyrir alla aðra notendur."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Viltu veita þessum notanda stjórnandaheimildir?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Sem stjórnandi getur viðkomandi stjórnað öðrum notendum, breytt tækjastillingum og núllstillt tækið."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Setja notanda upp núna?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Gakktu úr skugga um að notandinn geti tekið tækið og sett upp sitt svæði"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Setja upp snið núna?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Þetta opnar nýja gestalotu og eyðir öllum forritum og gögnum úr núverandi lotu"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Loka gestastillingu?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Þetta eyðir forritum og gögnum úr núverandi gestalotu"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Veita þessum notanda stjórnandaheimildir"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Ekki veita þessum notanda stjórnandaheimildir"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Hætta"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Vista aðgerðir úr gestalotu?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Þú getur vistað aðgerðir úr núverandi lotu eða eytt öllum forritum og gögnum"</string>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index 7829bd2..17d9edb 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -213,8 +213,8 @@
     <item msgid="6946761421234586000">"400%"</item>
   </string-array>
     <string name="choose_profile" msgid="343803890897657450">"Scegli profilo"</string>
-    <string name="category_personal" msgid="6236798763159385225">"Personale"</string>
-    <string name="category_work" msgid="4014193632325996115">"Lavoro"</string>
+    <string name="category_personal" msgid="6236798763159385225">"Personali"</string>
+    <string name="category_work" msgid="4014193632325996115">"Di lavoro"</string>
     <string name="development_settings_title" msgid="140296922921597393">"Opzioni sviluppatore"</string>
     <string name="development_settings_enable" msgid="4285094651288242183">"Attiva Opzioni sviluppatore"</string>
     <string name="development_settings_summary" msgid="8718917813868735095">"Imposta opzioni per lo sviluppo di applicazioni"</string>
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Più tempo."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Meno tempo."</string>
     <string name="cancel" msgid="5665114069455378395">"Annulla"</string>
-    <string name="next" msgid="2699398661093607009">"Avanti"</string>
-    <string name="back" msgid="5554327870352703710">"Indietro"</string>
-    <string name="save" msgid="3745809743277153149">"Salva"</string>
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Fine"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Sveglie e promemoria"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Aggiungere un nuovo utente?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Puoi condividere il dispositivo con altre persone creando altri utenti. Ogni utente ha un proprio spazio personalizzabile con app, sfondo e così via. Gli utenti possono anche regolare le impostazioni del dispositivo, come il Wi‑Fi, che riguardano tutti.\n\nQuando crei un nuovo utente, la persona in questione deve configurare il proprio spazio.\n\nQualsiasi utente può aggiornare le app per tutti gli altri utenti. I servizi e le impostazioni di accessibilità non potranno essere trasferiti al nuovo utente."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Il nuovo utente, una volta aggiunto, deve configurare il proprio spazio.\n\nQualsiasi utente può aggiornare le app per tutti gli altri."</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"Vuoi impostare questo utente come amministratore?"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"Gli amministratori hanno privilegi speciali che altri utenti non hanno. Un amministratore può gestire tutti gli utenti, aggiornare o resettare questo dispositivo, modificare le impostazioni, vedere tutte le app installate e concedere o revocare privilegi amministrativi per altri utenti."</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"Imposta come amministratore"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Concedere privilegi amministrativi all\'utente?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"In qualità di amministratore, l\'utente potrà gestire altri utenti, modificare le impostazioni del dispositivo e ripristinare i dati di fabbrica di quest\'ultimo."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurare l\'utente ora?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Assicurati che la persona sia disponibile a prendere il dispositivo e configurare il suo spazio"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurare il profilo ora?"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Verrà avviata una nuova sessione Ospite e verranno eliminati tutti i dati e le app della sessione corrente"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Vuoi uscire da modalità Ospite?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Verranno eliminati i dati e le app della sessione Ospite corrente"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"Sì, imposta come amministratore"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"No, non impostare come amministratore"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"Concedi privilegi amministrativi all\'utente"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Non concedere privilegi amministrativi all\'utente"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Esci"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Vuoi salvare l\'attività Ospite?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Puoi salvare l\'attività della sessione corrente o eliminare tutti i dati e le app"</string>
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
index 30a79de..c38111a 100644
--- a/packages/SettingsLib/res/values-iw/strings.xml
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"ڙڕŚȘŚš Ś–ŚžŚŸ."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"ڀڗڕŚȘ Ś–ŚžŚŸ."</string>
     <string name="cancel" msgid="5665114069455378395">"Ś‘Ś™Ś˜Ś•Śœ"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"ŚŚ™Ś©Ś•Śš"</string>
     <string name="done" msgid="381184316122520313">"ŚĄŚ™Ś•Ś"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Ś©ŚąŚ•Ś Ś™Ś ŚžŚąŚ•ŚšŚšŚ™Ś Ś•ŚȘŚ–Ś›Ś•ŚšŚ•ŚȘ"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"ŚœŚ”Ś•ŚĄŚ™ŚŁ ŚžŚ©ŚȘŚžŚ© ڗړک?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"‏Ś Ś™ŚȘڟ ڜکŚȘŚŁ ŚžŚ›Ś©Ś™Śš Ś–Ś” ŚąŚ ŚŚ Ś©Ś™Ś ŚŚ—ŚšŚ™Ś ŚąŚœ ڙړڙ Ś™ŚŠŚ™ŚšŚȘ ŚžŚ©ŚȘŚžŚ©Ś™Ś Ś Ś•ŚĄŚ€Ś™Ś. ŚœŚ›Śœ ŚžŚ©ŚȘŚžŚ© ŚžŚšŚ—Ś‘ ŚžŚ©ŚœŚ•, کڐڕŚȘŚ• ŚŚ€Ś©Śš ŚœŚ”ŚȘŚŚ™Ś ڐڙکڙŚȘ Ś‘ŚąŚ–ŚšŚȘ ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś•ŚȘ, ژڀژ Ś•Ś€ŚšŚ™Ś˜Ś™Ś Ś Ś•ŚĄŚ€Ś™Ś. Ś”ŚžŚ©ŚȘŚžŚ©Ś™Ś Ś™Ś›Ś•ŚœŚ™Ś Ś’Ś ŚœŚ”ŚȘŚŚ™Ś Ś”Ś’Ś“ŚšŚ•ŚȘ کڜ Ś”ŚžŚ›Ś©Ś™Śš Ś›Ś’Ś•ŚŸ Wi‑Fi, Ś©ŚžŚ©Ś€Ś™ŚąŚ•ŚȘ ŚąŚœ Ś›Ś•ŚœŚ.\n\nŚ›Ś©ŚžŚ•ŚĄŚ™Ś€Ś™Ś ŚžŚ©ŚȘŚžŚ© ڗړک, ŚąŚœ ŚžŚ©ŚȘŚžŚ© Ś–Ś” ŚœŚ”Ś’Ś“Ś™Śš ڐŚȘ Ś”ŚžŚšŚ—Ś‘ Ś©ŚœŚ•.\n\nŚ›Śœ ڐڗړ ŚžŚ”ŚžŚ©ŚȘŚžŚ©Ś™Ś Ś™Ś›Ś•Śœ ŚœŚąŚ“Ś›ŚŸ ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś•ŚȘ ŚœŚ›Śœ Ś©ŚŚš Ś”ŚžŚ©ŚȘŚžŚ©Ś™Ś. ڙڙŚȘŚ›ŚŸ Ś©Ś”Ś’Ś“ŚšŚ•ŚȘ Ś•Ś©Ś™ŚšŚ•ŚȘŚ™Ś کڜ ڠڒڙکڕŚȘ ڜڐ Ś™Ś•ŚąŚ‘ŚšŚ• ŚœŚžŚ©ŚȘŚžŚ© ڔڗړک."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Ś›Ś©ŚžŚ•ŚĄŚ™Ś€Ś™Ś ŚžŚ©ŚȘŚžŚ© ڗړک, Ś”ŚžŚ©ŚȘŚžŚ© ڔږڔ ŚŠŚšŚ™Śš ŚœŚ”Ś’Ś“Ś™Śš ڐŚȘ Ś”ŚžŚšŚ—Ś‘ Ś©ŚœŚ•.\n\nŚ›Śœ ŚžŚ©ŚȘŚžŚ© Ś™Ś›Ś•Śœ ŚœŚąŚ“Ś›ŚŸ ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś•ŚȘ ŚąŚ‘Ś•Śš Ś›Śœ Ś”ŚžŚ©ŚȘŚžŚ©Ś™Ś Ś”ŚŚ—ŚšŚ™Ś."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"ڜŚȘŚȘ ŚœŚžŚ©ŚȘŚžŚ© ڔږڔ Ś”ŚšŚ©ŚŚ•ŚȘ ŚŚ“ŚžŚ™ŚŸ?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Ś‘ŚȘŚ•Śš ŚŚ“ŚžŚ™ŚŸ, Ś”ŚžŚ©ŚȘŚžŚ© Ś™Ś•Ś›Śœ ŚœŚ Ś”Śœ ŚžŚ©ŚȘŚžŚ©Ś™Ś ŚŚ—ŚšŚ™Ś, ŚœŚ©Ś Ś•ŚȘ ڐŚȘ Ś”Ś’Ś“ŚšŚ•ŚȘ Ś”ŚžŚ›Ś©Ś™Śš Ś•ŚœŚŚ€ŚĄ ڐŚȘ Ś”ŚžŚ›Ś©Ś™Śš ŚœŚ”Ś’Ś“ŚšŚ•ŚȘ Ś”ŚžŚ§Ś•ŚšŚ™Ś•ŚȘ."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Ś”ŚŚ ŚœŚ”Ś’Ś“Ś™Śš ŚžŚ©ŚȘŚžŚ© ŚąŚ›Ś©Ś™Ś•?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"ڛړڐڙ ŚœŚ•Ś•Ś“Ś Ś©Ś”ŚžŚ©ŚȘŚžŚ© Ś–ŚžŚ™ŚŸ Ś•Ś™Ś›Ś•Śœ ŚœŚ§Ś—ŚȘ ڐŚȘ Ś”ŚžŚ›Ś©Ś™Śš Ś•ŚœŚ”Ś’Ś“Ś™Śš ڐŚȘ Ś”ŚžŚšŚ—Ś‘ Ś©ŚœŚ•"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Ś”ŚŚ ŚœŚ”Ś’Ś“Ś™Śš Ś€ŚšŚ•Ś€Ś™Śœ ŚąŚ›Ś©Ś™Ś•?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Ś”Ś€ŚąŚ•ŚœŚ” ڔږڕ ŚȘŚȘŚ—Ś™Śœ Ś’ŚœŚ™Ś©Ś” ڗړکڔ Ś›ŚŚ•ŚšŚ— Ś•ŚȘŚžŚ—Ś§ ڐŚȘ Ś›Śœ Ś”ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś•ŚȘ ڕڔڠŚȘŚ•Ś Ś™Ś ŚžŚ”ŚĄŚ©ŚŸ ڔڠڕڛڗڙ"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"ŚœŚŠŚŚȘ ŚžŚžŚŠŚ‘ ŚŚ•ŚšŚ—?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Ś”Ś€ŚąŚ•ŚœŚ” ڔږڕ ŚȘŚžŚ—Ś§ ڐŚȘ Ś”ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś•ŚȘ ڕڔڠŚȘŚ•Ś Ś™Ś ŚžŚ”Ś’ŚœŚ™Ś©Ś” ڔڠڕڛڗڙŚȘ Ś›ŚŚ•ŚšŚ—"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"ڐڠڙ ŚšŚ•ŚŠŚ” ڜŚȘŚȘ Ś”ŚšŚ©ŚŚ•ŚȘ ŚŚ“ŚžŚ™ŚŸ ŚœŚžŚ©ŚȘŚžŚ© ڔږڔ"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"ڐڠڙ ڜڐ ŚšŚ•ŚŠŚ” ڜŚȘŚȘ Ś”ŚšŚ©ŚŚ•ŚȘ ŚŚ“ŚžŚ™ŚŸ ŚœŚžŚ©ŚȘŚžŚ© ڔږڔ"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Ś™ŚŠŚ™ŚŚ”"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ŚœŚ©ŚžŚ•Śš ڐŚȘ Ś€ŚąŚ™ŚœŚ•ŚȘ Ś”ŚŚ•ŚšŚ—?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ŚŚ€Ś©Śš ŚœŚ©ŚžŚ•Śš ڐŚȘ Ś”Ś€ŚąŚ™ŚœŚ•ŚȘ ŚžŚ”ŚĄŚ©ŚŸ ڔڠڕڛڗڙ ڐڕ ŚœŚžŚ—Ś•Ś§ ڐŚȘ Ś›Śœ Ś”ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś•ŚȘ ڕڔڠŚȘŚ•Ś Ś™Ś"</string>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index f0e632a..a7635c7 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"é•·ăă—ăŸă™ă€‚"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"çŸ­ăă—ăŸă™ă€‚"</string>
     <string name="cancel" msgid="5665114069455378395">"ă‚­ăƒŁăƒłă‚»ăƒ«"</string>
-    <string name="next" msgid="2699398661093607009">"æŹĄăž"</string>
-    <string name="back" msgid="5554327870352703710">"æˆ»ă‚‹"</string>
-    <string name="save" msgid="3745809743277153149">"保歘"</string>
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"漌äș†"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"ă‚ąăƒ©ăƒŒăƒ ăšăƒȘăƒžă‚€ăƒłăƒ€ăƒŒ"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"æ–°ă—ă„ăƒŠăƒŒă‚¶ăƒŒă‚’èżœćŠ ă—ăŸă™ă‹ïŒŸ"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"èżœćŠ ăƒŠăƒŒă‚¶ăƒŒă‚’äœœæˆă—ăŠă€ă“ăźăƒ‡ăƒă‚€ă‚čă‚’ä»–ăźăƒŠăƒŒă‚¶ăƒŒăšć…±æœ‰ă§ăăŸă™ă€‚ć„ăƒŠăƒŒă‚¶ăƒŒăŻć„è‡Șたă‚čăƒšăƒŒă‚čă‚’æ‰€æœ‰ă—ăŠă€ă‚ąăƒ—ăƒȘや棁箙ăȘどたカă‚čă‚żăƒžă‚€ă‚șă‚’èĄŒă†ă“ăšăŒă§ăăŸă™ă€‚Wi-Fi ăȘど、すăčăŠăźăƒŠăƒŒă‚¶ăƒŒă«ćœ±éŸżă™ă‚‹ăƒ‡ăƒă‚€ă‚čèš­ćźšă‚’ć€‰æ›Žă™ă‚‹ă“ăšă‚‚ă§ăăŸă™ă€‚\n\næ–°ă—ăèżœćŠ ă—ăŸăƒŠăƒŒă‚¶ăƒŒăŻć„è‡Șでă‚čăƒšăƒŒă‚čă‚’ă‚»ăƒƒăƒˆă‚ąăƒƒăƒ—ă™ă‚‹ćż…èŠăŒă‚ă‚ŠăŸă™ă€‚\n\nすăčăŠăźăƒŠăƒŒă‚¶ăƒŒăŒă‚ąăƒ—ăƒȘă‚’æ›Žæ–°ă§ăă€ăăźćœ±éŸżăŻä»–ăźăƒŠăƒŒă‚¶ăƒŒă«ă‚‚ćŠăłăŸă™ă€‚ăƒŠăƒŒă‚¶ăƒŒèŁœćŠ©æ©Ÿèƒœăźèš­ćźšăšă‚”ăƒŒăƒ“ă‚čăŻæ–°ă—ă„ăƒŠăƒŒă‚¶ăƒŒă«é©ç”šă•ă‚ŒăȘă„ă“ăšăŒă‚ă‚ŠăŸă™ă€‚"</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"æ–°ă—ăèżœćŠ ă—ăŸăƒŠăƒŒă‚¶ăƒŒăŻć„è‡Șでă‚čăƒšăƒŒă‚čă‚’ă‚»ăƒƒăƒˆă‚ąăƒƒăƒ—ă™ă‚‹ćż…èŠăŒă‚ă‚ŠăŸă™ă€‚\n\nすăčăŠăźăƒŠăƒŒă‚¶ăƒŒăŒă‚ąăƒ—ăƒȘă‚’æ›Žæ–°ă§ăă€ăăźćœ±éŸżăŻä»–ăźăƒŠăƒŒă‚¶ăƒŒă«ă‚‚ćŠăłăŸă™ă€‚"</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"ă“ăźăƒŠăƒŒă‚¶ăƒŒă‚’çźĄç†è€…ă«ă—ăŸă™ă‹ïŒŸ"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"çźĄç†è€…ă«ăŻă€ä»–ăźăƒŠăƒŒă‚¶ăƒŒă«ăŻăȘいç‰č戄ăȘæš©é™ăŒäžŽăˆă‚‰ă‚ŒăŸă™ă€‚çźĄç†è€…ăŻă€ă™ăčăŠăźăƒŠăƒŒă‚¶ăƒŒăźçźĄç†ă€ă“ăźăƒ‡ăƒă‚€ă‚čăźæ›Žæ–°ă‚„ăƒȘă‚»ăƒƒăƒˆă€èš­ćźšăźć€‰æ›Žă€ă‚€ăƒłă‚čăƒˆăƒŒăƒ«æžˆăżăźă™ăčどぼケプăƒȘたçąșèȘă€ä»–ăźăƒŠăƒŒă‚¶ăƒŒă«ćŻŸă™ă‚‹çźĄç†è€…æš©é™ăźèš±ćŻă‚„ć–ă‚Šæ¶ˆă—ă‚’èĄŒăˆăŸă™ă€‚"</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"çźĄç†è€…ă«ă™ă‚‹"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"ă“ăźăƒŠăƒŒă‚¶ăƒŒă«çźĄç†è€…æš©é™ă‚’ä»˜äžŽă—ăŸă™ă‹ïŒŸ"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"çźĄç†è€…ăŻă€ä»–ăźăƒŠăƒŒă‚¶ăƒŒăźçźĄç†ă€ăƒ‡ăƒă‚€ă‚čăźèš­ćźšăźć€‰æ›Žă€ăƒ‡ăƒă‚€ă‚čたć‡șè·æ™‚èš­ćźšăžăźăƒȘă‚»ăƒƒăƒˆă‚’èĄŒăˆăŸă™ă€‚"</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"ăƒŠăƒŒă‚¶ăƒŒă‚’ä»Šă™ăă‚»ăƒƒăƒˆă‚ąăƒƒăƒ—"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"ăƒŠăƒŒă‚¶ăƒŒăŒăƒ‡ăƒă‚€ă‚čă‚’äœżăŁăŠć„è‡Șたă‚čăƒšăƒŒă‚čă‚’ă‚»ăƒƒăƒˆă‚ąăƒƒăƒ—ă§ăă‚‹ă‚ˆă†ă«ă—ăŸă™"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ăƒ—ăƒ­ăƒ•ă‚Ąă‚€ăƒ«ă‚’ä»Šă™ăă‚»ăƒƒăƒˆă‚ąăƒƒăƒ—ă—ăŸă™ă‹ïŒŸ"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"æ–°ă—ă„ă‚Čă‚čト ă‚»ăƒƒă‚·ăƒ§ăƒłăŒé–‹ć§‹ă—ă€çŸćœšăźă‚»ăƒƒă‚·ăƒ§ăƒłăźă™ăčどぼケプăƒȘăšăƒ‡ăƒŒă‚żăŒć‰Šé™€ă•ă‚ŒăŸă™"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"ă‚Čă‚čăƒˆăƒąăƒŒăƒ‰ă‚’ç”‚äș†ă—ăŸă™ă‹ïŒŸ"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"çŸćœšăźă‚Čă‚čト ă‚»ăƒƒă‚·ăƒ§ăƒłă‹ă‚‰ă™ăčどぼケプăƒȘăšăƒ‡ăƒŒă‚żăŒć‰Šé™€ă•ă‚ŒăŸă™"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"ăŻă„ă€çźĄç†è€…ă«ă—ăŸă™"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"ă„ă„ăˆă€çźĄç†è€…ă«ă—ăŸă›ă‚“"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"ă“ăźăƒŠăƒŒă‚¶ăƒŒă«çźĄç†è€…æš©é™ă‚’ä»˜äžŽă—ăŸă™"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"ăƒŠăƒŒă‚¶ăƒŒă«çźĄç†è€…æš©é™ă‚’ä»˜äžŽă—ăŸă›ă‚“"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"甂äș†"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ă‚Čă‚čトケクティビティぼ保歘"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"çŸćœšăźă‚»ăƒƒă‚·ăƒ§ăƒłăźă‚ąă‚Żăƒ†ă‚Łăƒ“ăƒ†ă‚Łăźäżć­˜ă‚„ă€ă™ăčどぼケプăƒȘăšăƒ‡ăƒŒă‚żăźć‰Šé™€ă‚’èĄŒăˆăŸă™"</string>
diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml
index 99ee13a..568d061 100644
--- a/packages/SettingsLib/res/values-ka/strings.xml
+++ b/packages/SettingsLib/res/values-ka/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"მეჱი დრო."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"ნაკლები დრო."</string>
     <string name="cancel" msgid="5665114069455378395">"áƒ’áƒáƒŁáƒ„áƒ›áƒ”áƒ‘áƒ"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"კარგი"</string>
     <string name="done" msgid="381184316122520313">"მზადაა"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"მა჊ვიძარები და ჹეჼსენებები"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"დაემაჱოს აჼალი მომჼმარებელი?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"დამაჱებითი მომჼმარებლების ლეჄმნით, ლეგიძლიათ ეს მოწყობილობა სჼვებს გაუზიაროთ. ყოველ მომჼმარებელს თავისი სივრáƒȘე áƒáƒ„áƒ•áƒĄ, რომლის პერსონალიზება áƒšáƒ”áƒŁáƒ«áƒšáƒ˜áƒ საკუთარი აპებით, Ⴠონით და ა.ლ. მომჼმარებლებს აგრეთვე áƒšáƒ”áƒŁáƒ«áƒšáƒ˜áƒáƒ— ისეთი პარამეჱრების მორგება, როგორიáƒȘაა Wi‑Fi, რაáƒȘ ყველაზე გავრáƒȘელდება.\n\nაჼალი მომჼმარებლის დამაჱების ჹემდეგ, მომჼმარებელმა საკუთარი სივრáƒȘე უნდა დააყენოს.\n\nყველა მომჼმარებელი áƒšáƒ”áƒ«áƒšáƒ”áƒ‘áƒĄ აპების ყველა სჼვა მომჼმარებლისთვის განაჼლებას. მარჱივი წვდომის პარამეჱრები/სერვისები áƒšáƒ”áƒĄáƒáƒ«áƒšáƒáƒ აჼალ მომჼმარებლებზე არ გავრáƒȘელდეს."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"აჼალი მომჼმარებლის დამაჱებისას, ამ მომჼმარებელს საკუთარი სივრáƒȘიქ ლეჄმნა მოუწევს.\n\nნებისმიერ მომჼმარებელს áƒšáƒ”áƒŁáƒ«áƒšáƒ˜áƒ აპები ყველა სჼვა მომჼმარებლისათვის განააჼლოს."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"მისáƒȘემთ ამ მომჼმ. ადმ. პრივ.?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"ადმინისჱრაჱორის როლჹი ისინი ლეძლებენ სჼვა მომჼმარებლების მართვას, მოწყობილობის პარამეჱრების მოდიჀიკაáƒȘიაქ და მოწყობილობის áƒ„áƒáƒ áƒźáƒœáƒŁáƒšáƒ˜ პარამეჱრების დაბრუნებას."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"გსურთ მომჼმარებლის პარამეჱრების დაყენება?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"დარწმუნდით, რომ პირს áƒšáƒ”áƒŁáƒ«áƒšáƒ˜áƒ მოწყობილობის აჩება და საკუთარი სივრáƒȘიქ დაყენება"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"გსურთ დავაყენო პროჀილი აჼლა?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ამ Ⴤმედებით დაიწყება სჱუმრის აჼალი სესია და წაიჹლება ყველა აპი და მონაáƒȘემი მიმდინარე სესიიდან"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"გსურთ სჱუმრის რეჟიმიდან გასვლა?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"ეს Ⴤმედება წაჹლის აპებსა და მონაáƒȘემებს სჱუმრის რეჟიმის მიმდინარე სესიიდან"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"მიეáƒȘეს ამ მომჼმარებელს ადმინისჱრაჱორის პრივილეგიები"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"არ მიეáƒȘეს ამ მომჼმარებელს ადმინისჱრაჱორის პრივილეგიები"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"გასვლა"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"გსურთ სჱუმრის áƒáƒ„áƒąáƒ˜áƒ•áƒáƒ‘áƒ˜áƒĄ ჹენაჼვა?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ლეგიძლიათ ჹეინაჼოთ áƒáƒ„áƒąáƒ˜áƒ•áƒáƒ‘áƒ მიმდინარე სესიიდან ან წაჹალოთ ყველა აპი და მონაáƒȘემი"</string>
diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml
index c6381d6..3b53471 100644
--- a/packages/SettingsLib/res/values-kk/strings.xml
+++ b/packages/SettingsLib/res/values-kk/strings.xml
@@ -86,7 +86,7 @@
     <string name="bluetooth_disconnecting" msgid="7638892134401574338">"ĐĐ¶Ń‹Ń€Đ°Ń‚Ń‹Đ»ŃƒĐŽĐ°…"</string>
     <string name="bluetooth_connecting" msgid="5871702668260192755">"Đ–Đ°Đ»Ò“Đ°ŃƒĐŽĐ°..."</string>
     <string name="bluetooth_connected" msgid="8065345572198502293">"<xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g> Đ¶Đ°Đ»Ò“Đ°ĐœĐŽŃ‹"</string>
-    <string name="bluetooth_pairing" msgid="4269046942588193600">"Đ–Ò±ĐżŃ‚Đ°ŃŃ‹Đż жатыр..."</string>
+    <string name="bluetooth_pairing" msgid="4269046942588193600">"Đ–Ò±ĐżŃ‚Đ°ŃƒĐŽĐ°..."</string>
     <string name="bluetooth_connected_no_headset" msgid="2224101138659967604">"<xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g> Đ¶Đ°Đ»Ò“Đ°ĐœĐŽŃ‹ (Ń‚Đ”Đ»Đ”Ń„ĐŸĐœŃŃ‹Đ·)"</string>
     <string name="bluetooth_connected_no_a2dp" msgid="8566874395813947092">"<xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g> Đ¶Đ°Đ»Ò“Đ°ĐœĐŽŃ‹ (Đ°ŃƒĐŽĐžĐŸŃŃ‹Đ·)"</string>
     <string name="bluetooth_connected_no_headset_no_a2dp" msgid="2893204819854215433">"<xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g> Đ¶Đ°Đ»Ò“Đ°ĐœĐŽŃ‹ (Ń‚Đ”Đ»Đ”Ń„ĐŸĐœŃŃ‹Đ· ĐœĐ” Đ°ŃƒĐŽĐžĐŸŃŃ‹Đ·)"</string>
@@ -141,7 +141,7 @@
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Бас тарту"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Đ–Ò±ĐżŃ‚Đ°ŃÒ›Đ°Đœ ĐșДзЎД, ĐșĐŸĐœŃ‚Đ°ĐșŃ‚Ń–Đ»Đ”Ń€Ń–ÒŁŃ–Đ· Đ±Đ”Đœ Ò›ĐŸÒŁŃ‹Ń€Đ°ŃƒĐ»Đ°Ń€ Ń‚Đ°Ń€ĐžŃ…Ń‹Đœ ĐșÓ©Ń€Ńƒ ĐŒÒŻĐŒĐșŃ–ĐœĐŽŃ–ĐłŃ– бДрілДЎі."</string>
     <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> Đ¶Ò±ĐżŃ‚Đ°Đ»Ńƒ ĐŸŃ€Ń‹ĐœĐŽĐ°Đ»ĐŒĐ°ĐŽŃ‹."</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ŃŃ‹ĐŒĐ”Đœ Đ¶Ò±ĐżŃ‚Đ°ŃĐ° Đ°Đ»ĐŒĐ°ĐŽŃ‹, сДбДбі PIN ĐœĐ”ĐŒĐ”ŃĐ” Đșіру Đșілті ĐŽÒ±Ń€Ń‹Ń Đ”ĐŒĐ”Ń."</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ŃŃ‹ĐŒĐ”Đœ Đ¶Ò±ĐżŃ‚Đ°ŃĐ° Đ°Đ»ĐŒĐ°ĐŽŃ‹, сДбДбі PIN ĐœĐ”ĐŒĐ”ŃĐ” Ń€Ò±Ò›ŃĐ°Ń‚ Đșілті ĐŽÒ±Ń€Ń‹Ń Đ”ĐŒĐ”Ń."</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ŃŃ‹ĐŒĐ”Đœ Ò›Đ°Ń‚Ń‹ĐœĐ°ŃĐ° Đ°Đ»ĐŒĐ°ĐčЮы"</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ŃŃ‹ Đ¶Ò±ĐżŃ‚Đ°Đ»ŃƒĐŽĐ°Đœ бас тартты."</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"ĐšĐŸĐŒĐżŃŒŃŽŃ‚Đ”Ń€"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"КөбірДĐș ŃƒĐ°Ò›Ń‹Ń‚."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"ĐĐ·Ń‹Ń€Đ°Ò› ŃƒĐ°Ò›Ń‹Ń‚."</string>
     <string name="cancel" msgid="5665114069455378395">"Бас тарту"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"ЖараĐčЮы"</string>
     <string name="done" msgid="381184316122520313">"ДаĐčŃ‹Đœ"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"ĐžŃŃ‚Ò›Ń‹Ńˆ Đ¶Ó™ĐœĐ” ДсĐșĐ” ŃĐ°Đ»Ò“Ń‹Ńˆ"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Đ–Đ°ÒŁĐ° паĐčĐŽĐ°Đ»Đ°ĐœŃƒŃˆŃ‹ Ò›ĐŸŃŃ‹Đ»ŃŃ‹Đœ ба?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"ÒšĐŸŃŃ‹ĐŒŃˆĐ° ĐżŃ€ĐŸŃ„ĐžĐ»ŃŒĐŽĐ”Ń€ жасаĐč ĐŸŃ‚Ń‹Ń€Ń‹Đż, Đ±Ò±Đ» Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ĐœŃ‹ Đ±Đ°ŃÒ›Đ°Đ»Đ°Ń€ĐŒĐ”Đœ ĐŸŃ€Ń‚Đ°Ò› паĐčĐŽĐ°Đ»Đ°ĐœŃƒÒ“Đ° Đ±ĐŸĐ»Đ°ĐŽŃ‹. Әр паĐčĐŽĐ°Đ»Đ°ĐœŃƒŃˆŃ‹ Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°Đ»Đ°Ń€ĐŽŃ‹, Ń‚Ò±ŃÒ›Đ°Ò“Đ°Đ·ĐŽĐ°Ń€ĐŽŃ‹ ĐŸŃ€ĐœĐ°Ń‚Ń‹Đż, ĐżŃ€ĐŸŃ„ĐžĐ»Ń–Đœ Ó©Đ· Ò›Đ°Đ»Đ°ŃƒŃ‹ĐœŃˆĐ° рДттДĐč алаЎы. ĐĄĐŸĐœĐŽĐ°Đč-Đ°Ò› Đ±Đ°Ń€Đ»Ń‹Ò“Ń‹ ĐŸŃ€Ń‚Đ°Ò› Ò›ĐŸĐ»ĐŽĐ°ĐœĐ°Ń‚Ń‹Đœ Wi‑Fi ŃĐžŃÒ›Ń‚Ń‹ ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ»Đ”Ń€ĐŽŃ– ĐŽĐ” Ń€Đ”Ń‚Ń‚Đ”ŃƒĐłĐ” Đ±ĐŸĐ»Đ°ĐŽŃ‹.\n\nĐ–Đ°ÒŁĐ° паĐčĐŽĐ°Đ»Đ°ĐœŃƒŃˆŃ‹ Đ”ĐœĐłŃ–Đ·Ń–Đ»ĐłĐ”ĐœĐŽĐ”, ĐŸĐ» Ó©Đ· ĐżŃ€ĐŸŃ„ĐžĐ»Ń–Đœ Ń€Đ”Ń‚Ń‚Đ”ŃƒŃ– ĐșДрДĐș Đ±ĐŸĐ»Đ°ĐŽŃ‹.\n\nКДз ĐșĐ”Đ»ĐłĐ”Đœ паĐčĐŽĐ°Đ»Đ°ĐœŃƒŃˆŃ‹ Đ±Đ°Ń€Đ»Ń‹Ò› Đ±Đ°ŃÒ›Đ° паĐčĐŽĐ°Đ»Đ°ĐœŃƒŃˆŃ‹Đ»Đ°Ń€ ÒŻŃˆŃ–Đœ Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°Đ»Đ°Ń€ĐŽŃ‹ Đ¶Đ°ÒŁĐ°Ń€Ń‚Đ° алаЎы. ĐŃ€ĐœĐ°Đčы ĐŒÒŻĐŒĐșŃ–ĐœĐŽŃ–ĐșтДргД Ò›Đ°Ń‚Ń‹ŃŃ‚Ń‹ ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ»Đ”Ń€ ĐŒĐ”Đœ Ò›Ń‹Đ·ĐŒĐ”Ń‚Ń‚Đ”Ń€ Đ¶Đ°ÒŁĐ° паĐčĐŽĐ°Đ»Đ°ĐœŃƒŃˆŃ‹Ò“Đ° өтпДĐčЮі."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Đ–Đ°ÒŁĐ° паĐčĐŽĐ°Đ»Đ°ĐœŃƒŃˆŃ‹ĐœŃ‹ Ò›ĐŸŃÒ›Đ°ĐœĐŽĐ°, ŃĐŸĐ» Đ°ĐŽĐ°ĐŒ Ó©Đ· ĐșĐ”ÒŁŃ–ŃŃ‚Ń–ĐłŃ–Đœ Ń€Đ”Ń‚Ń‚Đ”ŃƒŃ– ĐșДрДĐș.\n\nКДз ĐșĐ”Đ»ĐłĐ”Đœ паĐčĐŽĐ°Đ»Đ°ĐœŃƒŃˆŃ‹ Đ±Đ°Ń€Đ»Ń‹Ò› Đ±Đ°ŃÒ›Đ° паĐčĐŽĐ°Đ»Đ°ĐœŃƒŃˆŃ‹Đ»Đ°Ń€ ÒŻŃˆŃ–Đœ Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°Đ»Đ°Ń€ĐŽŃ‹ Đ¶Đ°ÒŁĐ°Ń€Ń‚Đ° алаЎы."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Đ‘Ò±Đ» паĐčĐŽĐ°Đ»Đ°ĐœŃƒŃˆŃ‹Ò“Đ° әĐșŃ–ĐŒŃˆŃ– Ó©ĐșілДттігі Đ±Đ”Ń€Ń–Đ»ŃŃ–Đœ бД?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"ӘĐșŃ–ĐŒŃˆŃ– Ń€Đ”Ń‚Ń–ĐœĐŽĐ” ĐŸĐ» Đ±Đ°ŃÒ›Đ° паĐčĐŽĐ°Đ»Đ°ĐœŃƒŃˆŃ‹Đ»Đ°Ń€ĐŽŃ‹ Đ±Đ°ŃÒ›Đ°Ń€Đ°, Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ»Đ”Ń€Ń–Đœ өзгДртД Đ¶Ó™ĐœĐ” Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ĐœŃ‹ Đ·Đ°ŃƒŃ‹Ń‚Ń‚Ń‹Ò› ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ»Đ”Ń€ĐłĐ” Ò›Đ°Đčтара алаЎы."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"ĐŸŃ€ĐŸŃ„ĐžĐ»ŃŒ Ò›Ò±Ń€Ńƒ ĐșДрДĐș пД?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"ПаĐčĐŽĐ°Đ»Đ°ĐœŃƒŃˆŃ‹ Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ĐœŃ‹ алып, Ó©Đ· ĐżŃ€ĐŸŃ„ĐžĐ»Ń–Đœ Ń€Đ”Ń‚Ń‚Đ”ŃƒŃ– ĐșДрДĐș."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ĐŸŃ€ĐŸŃ„Đ°ĐčĐ» Ò›Đ°Đ·Ń–Ń€ Đ¶Đ°ŃĐ°Ò›Ń‚Đ°Đ»ŃŃ‹Đœ ба?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ĐœÒ±ĐœĐŽĐ°ĐčЎа Đ¶Đ°ÒŁĐ° Ò›ĐŸĐœĐ°Ò› ŃĐ”Đ°ĐœŃŃ‹ басталаЎы Đ¶Ó™ĐœĐ” Đ°Ò“Ń‹ĐŒĐŽĐ°Ò“Ń‹ ŃĐ”Đ°ĐœŃŃ‚Đ°Ò“Ń‹ Đ±Đ°Ń€Đ»Ń‹Ò› Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ° ĐŒĐ”Đœ ЎДрДĐș Đ¶ĐŸĐčылаЎы."</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"ÒšĐŸĐœĐ°Ò› Ń€Đ”Đ¶ĐžĐŒŃ–ĐœĐ”Đœ ŃˆŃ‹Ò“Ńƒ ĐșДрДĐș пД?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"ĐÒ“Ń‹ĐŒĐŽĐ°Ò“Ń‹ Ò›ĐŸĐœĐ°Ò› ŃĐ”Đ°ĐœŃŃ‹ĐœĐŽĐ°Ò“Ń‹ Đ±Đ°Ń€Đ»Ń‹Ò› Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ° ĐŒĐ”Đœ ЎДрДĐș Đ¶ĐŸĐčылаЎы."</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Đ‘Ò±Đ» паĐčĐŽĐ°Đ»Đ°ĐœŃƒŃˆŃ‹Ò“Đ° әĐșŃ–ĐŒŃˆŃ– Ó©ĐșілДттігі Đ±Đ”Ń€Ń–Đ»ŃŃ–Đœ"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"ПаĐčĐŽĐ°Đ»Đ°ĐœŃƒŃˆŃ‹Ò“Đ° әĐșŃ–ĐŒŃˆŃ– Ó©ĐșілДттігі Đ±Đ”Ń€Ń–Đ»ĐŒĐ”ŃŃ–Đœ"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"ĐšŃ‹Ò“Ńƒ"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ÒšĐŸĐœĐ°Ò› әрДĐșĐ”Ń‚Ń–Đœ ŃĐ°Ò›Ń‚Đ°Ńƒ ĐșДрДĐș пД?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ĐÒ“Ń‹ĐŒĐŽĐ°Ò“Ń‹ ŃĐ”Đ°ĐœŃŃ‚Đ°Ò“Ń‹ әрДĐșДтті ŃĐ°Ò›Ń‚Đ°Đč ĐœĐ” Đ±Đ°Ń€Đ»Ń‹Ò› Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ° ĐŒĐ”Đœ ЎДрДĐșті Đ¶ĐŸŃ аласыз."</string>
diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml
index 5444bd1..1cbf245 100644
--- a/packages/SettingsLib/res/values-km/strings.xml
+++ b/packages/SettingsLib/res/values-km/strings.xml
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"រយៈពេល​ច្រសន​ជាង។"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"រយៈពេល​តិច​ជាង។"</string>
     <string name="cancel" msgid="5665114069455378395">"បោះ​បង់​"</string>
-    <string name="next" msgid="2699398661093607009">"បន្ទាប់"</string>
-    <string name="back" msgid="5554327870352703710">"ថយក្រោយ"</string>
-    <string name="save" msgid="3745809743277153149">"រក្សាទុក"</string>
     <string name="okay" msgid="949938843324579502">"យល់ព្រម"</string>
     <string name="done" msgid="381184316122520313">"រវចរាល់"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"ម៉ោងរោទ៍ និងការរំលážčក"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"áž”áž‰áŸ’áž…ážŒáž›â€‹â€‹ážąáŸ’áž“áž€áž”áŸ’ážšážŸâ€‹áž”áŸ’ážšáž¶ážŸáŸ‹â€‹ážáŸ’áž˜ážž?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"ážąáŸ’áž“áž€ážąáž¶áž…â€‹áž…áŸ‚áž€ážšáŸ†áž›áŸ‚áž€â€‹áž§áž”áž€ážšážŽáŸâ€‹áž“áŸáŸ‡â€‹áž‡áž¶áž˜ážœáž™â€‹áž˜áž“áž»ážŸáŸ’ážŸâ€‹áž•áŸ’ážŸáŸáž„áž‘áŸ€ážáž”áž¶áž“ážŠáŸ„áž™â€‹áž”áž„áŸ’áž€ážŸážâ€‹ážąáŸ’áž“áž€áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹â€‹áž”áž“áŸ’ážáŸ‚áž˜áŸ” ážąáŸ’áž“áž€â€‹áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹â€‹áž˜áŸ’áž“áž¶áž€áŸ‹áŸ—â€‹áž˜áž¶áž“â€‹áž‘áŸ†áž áŸ†áž•áŸ’áž‘áž»áž€â€‹áž•áŸ’áž‘áž¶áž›áŸ‹ážáŸ’áž›ážœáž“â€‹ážšáž”ážŸáŸ‹â€‹áž‚áŸ ážŠáŸ‚áž›áž–ážœáž€áž‚áŸâ€‹ážąáž¶áž…â€‹áž”áŸ’ážŠážŒážšážáž¶áž˜â€‹áž”áŸ†ážŽáž„â€‹ážŸáž˜áŸ’ážšáž¶áž”áŸ‹â€‹áž€áž˜áŸ’áž˜ážœáž·áž’ážž ផ្ទាំង​រឌបភាព áž“áž·áž„â€‹ážąáŸ’ážœážžáŸ—â€‹áž•áŸ’ážŸáŸáž„â€‹áž‘áŸ€ážáŸ” ážąáŸ’áž“áž€â€‹áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹â€‹áž€áŸážąáž¶áž…â€‹áž€áŸ‚ážŸáž˜áŸ’ážšážœáž›â€‹áž€áž¶ážšáž€áŸ†ážŽážáŸ‹â€‹áž§áž”áž€ážšážŽáŸâ€‹ážŠážŒáž…áž‡áž¶ Wi‑Fi ážŠáŸ‚áž›â€‹áž”áŸ‰áŸ‡áž–áž¶áž›áŸ‹â€‹ážŠáž›áŸ‹â€‹ážąáŸ’áž“áž€áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹â€‹áž•áŸ’ážŸáŸáž„â€‹áž‘áŸ€ážâ€‹áž•áž„ážŠáŸ‚ážšáŸ”\n\náž“áŸ…áž–áŸáž›â€‹ážŠáŸ‚áž›ážąáŸ’áž“áž€â€‹áž”áž‰áŸ’áž…ážŒáž›â€‹ážąáŸ’áž“áž€áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹â€‹ážáŸ’áž˜ážž បុគ្គល​នោះត្រឌវតែ​រៀបចំទំហំ​ផ្ទុក​​របស់​គេ។\n\nážąáŸ’áž“áž€áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹â€‹ážŽáž¶áž€áŸâ€‹ážąáž¶áž…â€‹ážŠáŸ†ážĄážŸáž„â€‹áž€áŸ†ážŽáŸ‚â€‹áž€áž˜áŸ’áž˜ážœáž·áž’ážžâ€‹ážŸáž˜áŸ’ážšáž¶áž”áŸ‹â€‹ážąáŸ’áž“áž€â€‹áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹â€‹áž‘áž¶áŸ†áž„ážąážŸáŸ‹â€‹áž•áŸ’ážŸáŸáž„â€‹áž‘áŸ€ážâ€‹áž”áž¶áž“â€‹ážŠáŸ‚ážšáŸ” ការកំណត់​ភាព​ងាយស្រវល áž“áž·áž„â€‹ážŸáŸážœáž¶áž€áž˜áŸ’áž˜â€‹áž˜áž·áž“ážąáž¶áž…â€‹áž•áŸ’áž‘áŸážšáž‘áŸ…áž€áž¶áž“áŸ‹â€‹ážąáŸ’áž“áž€áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹â€‹ážáŸ’áž˜ážžâ€‹áž”áž¶áž“áž‘áŸáŸ”"</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"áž“áŸ…áž–áŸáž›â€‹ážąáŸ’áž“áž€â€‹áž”áž‰áŸ’áž…ážŒáž›â€‹â€‹ážąáŸ’áž“áž€áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹â€‹â€‹ážáŸ’áž˜ážž ážąáŸ’áž“áž€áž”áŸ’ážšážŸâ€‹áž”áŸ’ážšáž¶ážŸáŸ‹â€‹áž“áŸ„áŸ‡â€‹áž…áž¶áŸ†áž”áž¶áž…áŸ‹ážáŸ’ážšážŒážœâ€‹ážšáŸ€áž”áž…áŸ†áž›áŸ†áž â€‹áž•áŸ’áž‘áž¶áž›áŸ‹â€‹ážáŸ’áž›ážœáž“ážšáž”ážŸáŸ‹â€‹áž‚áž¶ážáŸ‹áŸ”\n\nážąáŸ’áž“áž€áž”áŸ’ážšážŸâ€‹áž”áŸ’ážšáž¶ážŸáŸ‹â€‹ážŽáž¶áž€áŸâ€‹â€‹â€‹ážąáž¶áž…â€‹ážŠáŸ†ážĄážŸáž„áž€áŸ†ážŽáŸ‚áž€áž˜áŸ’áž˜ážœáž·áž’ážžâ€‹ážŸáž˜áŸ’ážšáž¶áž”áŸ‹â€‹ážąáŸ’áž“áž€áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹â€‹â€‹áž‘áž¶áŸ†áž„ážąážŸáŸ‹â€‹áž•áŸ’ážŸáŸáž„áž‘áŸ€ážáž”áž¶áž“ážŠáŸ‚ážšáŸ”"</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"áž•áŸ’ážŠáž›áŸ‹ážŸáž·áž‘áŸ’áž’áž·áž‡áž¶ážąáŸ’áž“áž€áž‚áŸ’ážšáž”áŸ‹áž‚áŸ’ážšáž„áž±áŸ’áž™ážąáŸ’áž“áž€áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹áž“áŸáŸ‡ážŹ?"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"ážąáŸ’áž“áž€áž‚áŸ’ážšáž”áŸ‹áž‚áŸ’ážšáž„áž˜áž¶áž“ážŸáž·áž‘áŸ’áž’áž·áž–áž·ážŸáŸážŸážŠáŸ‚áž›ážąáŸ’áž“áž€áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹áž•áŸ’ážŸáŸáž„áž‘áŸ€ážáž˜áž·áž“áž˜áž¶áž“áŸ” ážąáŸ’áž“áž€áž‚áŸ’ážšáž”áŸ‹áž‚áŸ’ážšáž„ážąáž¶áž…áž‚áŸ’ážšáž”áŸ‹áž‚áŸ’ážšáž„ážąáŸ’áž“áž€áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹áž‘áž¶áŸ†áž„ážąážŸáŸ‹ áž’áŸ’ážœážŸáž”áž…áŸ’áž…áž»áž”áŸ’áž”áž“áŸ’áž“áž—áž¶áž–ážŹáž€áŸ†ážŽážáŸ‹áž§áž”áž€ážšážŽáŸáž“áŸáŸ‡ážĄážŸáž„ážœáž·áž‰ កែសម្រវលការកំណត់ áž˜ážŸáž›áž€áž˜áŸ’áž˜ážœáž·áž’ážžážŠáŸ‚áž›áž”áž¶áž“ážŠáŸ†ážĄážŸáž„áž‘áž¶áŸ†áž„ážąážŸáŸ‹ áž“áž·áž„áž•áŸ’ážŠáž›áŸ‹ážŹážŠáž€ážŸáž·áž‘áŸ’áž’áž·áž‡áž¶ážąáŸ’áž“áž€áž‚áŸ’ážšáž”áŸ‹áž‚áŸ’ážšáž„ážŸáž˜áŸ’ážšáž¶áž”áŸ‹ážąáŸ’áž“áž€áž•áŸ’ážŸáŸáž„áž‘áŸ€ážáŸ”"</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"áž•áŸ’ážŠáž›áŸ‹ážŸáž·áž‘áŸ’áž’áž·áž‡áž¶ážąáŸ’áž“áž€áž‚áŸ’ážšáž”áŸ‹áž‚áŸ’ážšáž„"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"áž•áŸ’ážŠáž›áŸ‹ážŸáž·áž‘áŸ’áž’áž·áž‡áž¶ážąáŸ’áž“áž€áž‚áŸ’ážšáž”áŸ‹áž‚áŸ’ážšáž„áž±áŸ’áž™ážąáŸ’áž“áž€áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹áž“áŸáŸ‡ážŹ?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"áž€áŸ’áž“áž»áž„áž“áž¶áž˜áž‡áž¶ážąáŸ’áž“áž€áž‚áŸ’ážšáž”áŸ‹áž‚áŸ’ážšáž„ គាត់នážčáž„ážąáž¶áž…áž‚áŸ’ážšáž”áŸ‹áž‚áŸ’ážšáž„â€‹ážąáŸ’áž“áž€áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹áž•áŸ’ážŸáŸáž„áž‘áŸ€áž កែប្រែការកំណត់ឧបករណ៍ និងកំណត់ឧបករណ៍ដឌចចេញពឞរោងចក្រ។"</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"ážšáŸ€áž”áž…áŸ†â€‹ážąáŸ’áž“áž€â€‹áž”áŸ’ážšážŸâ€‹áž”áŸ’ážšáž¶ážŸáŸ‹áž„ážĄážŒážœáž“áŸáŸ‡?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"ážŸážŒáž˜â€‹áž”áŸ’ážšáž¶áž€ážŠâ€‹ážáž¶â€‹â€‹ážąáŸ’áž“áž€â€‹áž”áŸ’ážšážŸâ€‹áž”áŸ’ážšáž¶ážŸáŸ‹áž“áŸáŸ‡â€‹ážąáž¶áž…â€‹áž™áž€â€‹â€‹áž§áž”áž€ážšážŽáŸ ​និង​រៀបចំ​​ទំហំ​ផ្ទុករបស់​គេបាន"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ážšáŸ€áž”áž…áŸ†â€‹áž”áŸ’ážšážœážáŸ’ážáž·ážšážŒáž”â€‹áž„ážĄážŒážœ?"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ការធ្វសបែបនេះនážčងចាប់ផ្ដសមវគ្គភ្ញៀវថ្មឞ និងលុបកម្មវិធឞ áž“áž·áž„áž‘áž·áž“áŸ’áž“áž“áŸáž™áž‘áž¶áŸ†áž„ážąážŸáŸ‹áž…áŸáž‰áž–ážžážœáž‚áŸ’áž‚áž”áž…áŸ’áž…áž»áž”áŸ’áž”áž“áŸ’áž“"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"áž…áž¶áž€áž…áŸáž‰áž–ážžáž˜áž»ážáž„áž¶ážšáž—áŸ’áž‰áŸ€ážœážŹ?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"ការធ្វសបែបនេះនážčងលុបកម្មវិធឞ និងទិន្នន័យចេញពឞវគ្គភ្ញៀវបច្ចុប្បន្ន"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"បាទ/ចាស áž•áŸ’ážŠáž›áŸ‹ážŸáž·áž‘áŸ’áž’áž·áž‡áž¶ážąáŸ’áž“áž€áž‚áŸ’ážšáž”áŸ‹áž‚áŸ’ážšáž„áž±áŸ’áž™áž‚áž¶ážáŸ‹"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"ទេ áž€áž»áŸ†áž•áŸ’ážŠáž›áŸ‹ážŸáž·áž‘áŸ’áž’áž·áž‡áž¶ážąáŸ’áž“áž€áž‚áŸ’ážšáž”áŸ‹áž‚áŸ’ážšáž„áž±áŸ’áž™áž‚áž¶ážáŸ‹"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"áž•áŸ’ážŠáž›áŸ‹ážŸáž·áž‘áŸ’áž’áž·áž‡áž¶ážąáŸ’áž“áž€áž‚áŸ’ážšáž”áŸ‹áž‚áŸ’ážšáž„áž±áŸ’áž™ážąáŸ’áž“áž€áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹áž“áŸáŸ‡"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"áž€áž»áŸ†áž•áŸ’ážŠáž›áŸ‹ážŸáž·áž‘áŸ’áž’áž·áž‡áž¶â€‹ážąáŸ’áž“áž€áž‚áŸ’ážšáž”áŸ‹áž‚áŸ’ážšáž„áž±áŸ’áž™â€‹ážąáŸ’áž“áž€áž”áŸ’ážšážŸáž”áŸ’ážšáž¶ážŸáŸ‹áž“áŸáŸ‡"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"ចាកចេញ"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ážšáž€áŸ’ážŸáž¶áž‘áž»áž€ážŸáž€áž˜áŸ’áž˜áž—áž¶áž–áž—áŸ’áž‰áŸ€ážœážŹ?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ážąáŸ’áž“áž€ážąáž¶áž…ážšáž€áŸ’ážŸáž¶áž‘áž»áž€ážŸáž€áž˜áŸ’áž˜áž—áž¶áž–áž–ážžážœáž‚áŸ’áž‚áž”áž…áŸ’áž…áž»áž”áŸ’áž”áž“áŸ’áž“ ážŹáž›áž»áž”áž€áž˜áŸ’áž˜ážœáž·áž’ážžáž“áž·áž„áž‘áž·áž“áŸ’áž“áž“áŸáž™áž‘áž¶áŸ†áž„ážąážŸáŸ‹"</string>
diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml
index f64bd53..8071be4 100644
--- a/packages/SettingsLib/res/values-kn/strings.xml
+++ b/packages/SettingsLib/res/values-kn/strings.xml
@@ -214,7 +214,7 @@
   </string-array>
     <string name="choose_profile" msgid="343803890897657450">"àČȘàłàČ°àłŠàČ«àłˆàČČàł àȆàČŻàłàČ•àł† àČźàČŸàČĄàČż"</string>
     <string name="category_personal" msgid="6236798763159385225">"àČ”àłˆàČŻàČ•àłàČ€àČżàȕ"</string>
-    <string name="category_work" msgid="4014193632325996115">"àČ•àł†àČČàČž"</string>
+    <string name="category_work" msgid="4014193632325996115">"àČ•àł†àČČàČžàČŠ àČžàłàČ„àČł"</string>
     <string name="development_settings_title" msgid="140296922921597393">"àČĄàł†àČ”àČČàČȘàČ°àł àȆàČŻàłàČ•àł†àȗàČłàł"</string>
     <string name="development_settings_enable" msgid="4285094651288242183">"àČĄàł†àČ”àČČàČȘàČ°àł àȆàČŻàłàČ•àł†àȗàČłàČšàłàČšàł àČžàČ•àłàȰàČżàČŻàČ—àłŠàČłàČżàČžàČż"</string>
     <string name="development_settings_summary" msgid="8718917813868735095">"àȅàČȘàłàČČàČżàČ•àł‡àȶàČšàł àȅàČ­àČżàČ”àłƒàČŠàłàȧàČżàȗàČŸàȗàČż àȆàČŻàłàČ•àł†àȗàČłàČšàłàČšàł àČčàłŠàȂàČŠàČżàČžàČż"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"àČčàł†àČšàłàČšàł àČžàČźàČŻ."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"àȕàČĄàČżàČźàł† àČžàČźàČŻ."</string>
     <string name="cancel" msgid="5665114069455378395">"àȰàČŠàłàČŠàłàČźàČŸàČĄàČż"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"àČžàȰàČż"</string>
     <string name="done" msgid="381184316122520313">"àČźàłàȗàČżàČŠàČżàČŠàł†"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"àȅàČČàČŸàȰàČŸàČźàł‌àȗàČłàł àČźàČ€àłàČ€àł àȰàČżàČźàłˆàȂàČĄàČ°àł‌àȗàČłàł"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"àČčàłŠàČž àČŹàČłàČ•àł†àČŠàČŸàȰàȰàČšàłàČšàł àČžàł‡àȰàČżàČžàłàČ”àłàČŠàł‡?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"àČšàł€àČ”àł àČčàł†àČšàłàČšàłàČ”àȰàČż àČŹàČłàČ•àł†àČŠàČŸàȰàȰàČšàłàČšàł àȰàȚàČżàČžàłàČ” àČźàł‚àČČàȕ àȇàČ€àȰ àȜàČšàȰ àČœàłŠàČ€àł†àČ—àł† àȈ àČžàČŸàȧàČšàČ”àČšàłàČšàł àČčàȂàȚàČżàČ•àłŠàČłàłàČłàČŹàČčàłàČŠàł. àČȘàłàȰàČ€àČż àČŹàČłàČ•àł†àČŠàČŸàȰàČ°àł àČ€àČźàłàČźàČŠàł‡ àČžàłàČ„àČłàČ”àČšàłàČšàł àČčàłŠàȂàČŠàČżàČ°àłàČ€àłàČ€àČŸàČ°àł†, àȇàČŠàȰàČČàłàČČàČż àȅàČ”àČ°àł àČ€àČźàłàČźàČŠàł‡ àȅàČȘàłàČČàČżàČ•àł‡àȶàČšàł‌àȗàČłàł, àČ”àČŸàČČàł‌àČȘàł‡àČȘàČ°àł àČźàČ€àłàČ€àł àČźàłàȂàČ€àČŸàČŠàČ”àłàȗàČł àČźàł‚àČČàȕ àȕàČžàłàȟàČźàłˆàČžàł àČźàČŸàČĄàČżàČ•àłŠàČłàłàČłàČŹàČčàłàČŠàł. àȎàČČàłàČČàȰ àČźàł‡àČČàł‚ àČȘàȰàČżàČŁàČŸàČź àČŹàł€àČ°àłàČ”àȂàČ€àł† àČ”àłˆ-àČ«àłˆ àČ°àł€àČ€àČżàČŻ àČžàČŸàȧàČš àČžàł†àČŸàłàȟàČżàȂàČ—àł‌àȗàČłàČšàłàČšàł àČŹàČłàČ•àł†àČŠàČŸàȰàČ°àł àČžàȰàČżàČčàłŠàȂàČŠàČżàČžàČŹàČčàłàČŠàł.\n\nàČšàł€àČ”àł àȒàČŹàłàČŹ àČčàłŠàČž àČŹàČłàČ•àł†àČŠàČŸàȰàȰàČšàłàČšàł àČžàł‡àȰàČżàČžàČżàČŠàČŸàȗ, àȆ àČ”àłàČŻàČ•àłàČ€àČżàČŻàł àȅàČ”àȰ àČžàłàČ„àČłàČ”àČšàłàČšàł àČčàłŠàȂàČŠàČżàČžàČŹàł‡àȕàČŸàČ—àłàČ€àłàČ€àČŠàł†.\n\nàČŻàČŸàČ”àłàČŠàł‡ àČŹàČłàČ•àł†àČŠàČŸàȰàČ°àł àȎàČČàłàČČàČŸ àȇàČ€àČ°àł† àČŹàČłàČ•àł†àČŠàČŸàȰàȰàČżàČ—àł† àȅàČȘàłàČČàČżàČ•àł‡àȶàČšàł‌àȗàČłàČšàłàČšàł àȅàČȘàł‌àČĄàł‡àČŸàł‌ àČźàČŸàČĄàČŹàČčàłàČŠàł. àČ†àłàČŻàČ•àłàČžàł†àČžàČżàČŹàČżàČČàČżàȟàČż àČžàł†àČŸàłàȟàČżàȂàČ—àł‌àȗàČłàł àČźàČ€àłàČ€àł àČžàł‡àČ”àł†àȗàČłàł àČčàłŠàČž àČŹàČłàČ•àł†àČŠàČŸàȰàȰàČżàČ—àł† àČ”àČ°àłàȗàČŸàČ”àČŁàł† àȆàȗàČŠàČżàȰàČŹàČčàłàČŠàł."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"àČšàł€àČ”àł àȒàČŹàłàČŹ àČčàłŠàČž àČŹàČłàČ•àł†àČŠàČŸàȰàȰàČšàłàČšàł àČžàł‡àȰàČżàČžàČżàČŠàČŸàȗ, àȆ àČ”àłàČŻàČ•àłàČ€àČżàČŻàł àȅàČ”àȰ àČžàłàČ„àČłàČ”àČšàłàČšàł àČžàłàČ„àČŸàČȘàČżàČžàČŹàł‡àȕàČŸàČ—àłàČ€àłàČ€àČŠàł†.\n\nàČŻàČŸàČ”àłàČŠàł‡ àČŹàČłàČ•àł†àČŠàČŸàȰàČ°àł àȎàČČàłàČČàČŸ àȇàČ€àČ°àł† àČŹàČłàČ•àł†àČŠàČŸàȰàȰàČżàȗàČŸàȗàČż àȅàČȘàłàČČàČżàČ•àł‡àȶàČšàł‌àȗàČłàČšàłàČšàł àȅàČȘàł‌àČĄàł‡àČŸàł‌ àČźàČŸàČĄàČŹàČčàłàČŠàł."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"àȈ àČŹàČłàČ•àł†àČŠàČŸàȰàȰàČżàČ—àł† àČšàČżàČ°àłàČ”àČŸàČčàȕ àČžàłŒàČČàČ­àłàČŻ àČšàł€àČĄàČŹàł‡àČ•àł†?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"àČšàČżàČ°àłàČ”àČŸàČčàȕàȰàČŸàȗàČż, àȅàČ”àČ°àł àȇàČ€àȰ àČŹàČłàČ•àł†àČŠàČŸàȰàȰàČšàłàČšàł àČšàČżàČ°àłàČ”àČčàČżàČžàČČàł, àČžàČŸàȧàČš àČžàł†àČŸàłàȟàČżàȂàČ—àł‌àȗàČłàČšàłàČšàł àČźàČŸàČ°àłàČȘàČĄàČżàČžàČČàł àČźàČ€àłàČ€àł àČžàČŸàȧàČšàČ”àČšàłàČšàł àČ«àłàČŻàČŸàČ•àłàȟàȰàČż àČ°àł€àČžàł†àČŸàł àČźàČŸàČĄàČČàł àČžàČŸàČ§àłàČŻàČ”àČŸàČ—àłàČ€àłàČ€àČŠàł†."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"àȈàȗ àČŹàČłàČ•àł†àČŠàČŸàȰàȰàČšàłàČšàł àČžàł†àČŸàł àČźàČŸàČĄàłàČ”àłàČŠàł‡?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"àČžàČŸàȧàČšàČ”àČšàłàČšàł àČ€àł†àČ—àł†àČŠàłàČ•àłŠàČłàłàČłàČČàł àČźàČ€àłàČ€àł àȅàČŠàȰ àČžàłàČ„àČłàČ”àČšàłàČšàł àČčàłŠàȂàČŠàČżàČžàČČàł àČ”àłàČŻàČ•àłàČ€àČżàČŻàł àČČàČ­àłàČŻàČ”àČżàČŠàłàČŠàČŸàČ°àł†àČŻàł‡ àȎàȂàČŹàłàČŠàČšàłàČšàł àȖàȚàČżàČ€àČȘàČĄàČżàČžàČżàČ•àłŠàČłàłàČłàČż"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"àȇàČŠàł€àȗ àČȘàłàČ°àłŠàČ«àłˆàČČàł‌ àȅàČšàłàČšàł àČčàłŠàȂàČŠàČżàČžàłàČ”àłàČŠàł‡?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"àȈ àČȘàłàȰàČ•àłàȰàČżàČŻàł†àČŻàł àČčàłŠàČž àȅàČ€àČżàČ„àČż àČžàł†àȶàČšàł àȅàČšàłàČšàł àČȘàłàȰàČŸàȰàȂàČ­àČżàČžàłàČ€àłàČ€àČŠàł† àČźàČ€àłàČ€àł àČȘàłàȰàČžàłàČ€àłàČ€ àČžàł†àȶàČšàł‌àČšàČżàȂàČŠ àȎàČČàłàČČàČŸ àČ†àłàČŻàČȘàł‌àȗàČłàł àČčàČŸàČ—àł‚ àČĄàł‡àȟàČŸàČ”àČšàłàČšàł àȅàČłàČżàČžàłàČ€àłàČ€àČŠàł†"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"àȅàČ€àČżàČ„àČż àČźàł‹àČĄàł‌àČšàČżàȂàČŠ àČšàČżàČ°àłàȗàČźàČżàČžàČŹàł‡àČ•àł†?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"àȈ àČȘàłàȰàČ•àłàȰàČżàČŻàł†àČŻàł àČȘàłàȰàČžàłàČ€àłàČ€ àȅàČ€àČżàČ„àČż àČžàł†àČ·àČšàł‌àČšàČżàȂàČŠ àČ†àłàČŻàČȘàł‌àȗàČłàł àČźàČ€àłàČ€àł àČĄàł‡àȟàČŸàČ”àČšàłàČšàł àȅàČłàČżàČžàłàČ€àłàČ€àČŠàł†"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"àȈ àČŹàČłàČ•àł†àČŠàČŸàȰàȰàČżàČ—àł† àČšàČżàČ°àłàČ”àČŸàČčàȕ àČžàłŒàČČàČ­àłàČŻàȗàČłàČšàłàČšàł àČšàł€àČĄàČż"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"àČŹàČłàČ•àł†àČŠàČŸàȰ àČšàČżàČ°àłàČ”àČŸàČčàȕ àČžàłŒàČČàČ­àłàČŻàȗàČłàČšàłàČšàł àČšàł€àČĄàČŹàł‡àČĄàČż"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"àČšàČżàČ°àłàȗàČźàČżàČžàČż"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"àȅàČ€àČżàČ„àČż àȚàČŸàłàČ”àȟàČżàČ•àł†àČŻàČšàłàČšàł àȉàČłàČżàČžàČŹàł‡àČ•àł†?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"àČšàł€àČ”àł àČȘàłàȰàČžàłàČ€àłàČ€ àČžàł†àȶàČšàł‌àČš àȚàČŸàłàČ”àȟàČżàČ•àł†àČŻàČšàłàČšàł àȉàČłàČżàČžàČŹàČčàłàČŠàł àȅàČ„àČ”àČŸ àȎàČČàłàČČàČŸ àČ†àłàČŻàČȘàł‌àȗàČłàł àČźàČ€àłàČ€àł àČĄàł‡àȟàČŸàČ”àČšàłàČšàł àȅàČłàČżàČžàČŹàČčàłàČŠàł"</string>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
index 74e1cea..ad71c09 100644
--- a/packages/SettingsLib/res/values-ko/strings.xml
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"시간 ëŠ˜ëŠŹêž°"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"시간 쀄읎Ʞ"</string>
     <string name="cancel" msgid="5665114069455378395">"췚소"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"확읞"</string>
     <string name="done" msgid="381184316122520313">"ì™„ëŁŒ"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"알람 및 ëŠŹë§ˆìžë”"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"신규 ì‚Źìš©ìžë„Œ 추가할êčŒìš”?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"추가 ì‚Źìš©ìžë„Œ 만듀얎 닀넞 ì‚Źìš©ìžì™€ ꞰꞰ넌 êł”ìœ í•  수 있슔니닀. 각 ì‚Źìš©ìžëŠ” 앱, ë°°êČœí™”ë©Ž ë“±ìœŒëĄœ 맞춀섀정할 수 있는 자신만의 êł”ê°„ì„ 갖êȌ 됩니닀. 또한 ëȘšë“  ì‚Źìš©ìžì—êȌ 영햄을 믞ìč˜ëŠ” Wi‑Fi와 같은 êž°êž° 섀정도 ìĄ°ì •í•  수 있슔니닀.\n\n추가된 신규 ì‚Źìš©ìžëŠ” 자신의 êł”ê°„ì„ 섀정핎알 합니닀.\n\nëȘšë“  ì‚Źìš©ìžê°€ 앱을 업데읎튞할 수 있윌며, 업데읎튞는 닀넞 ì‚Źìš©ìžì—êȌ도 적용됩니닀. 접귌성 섀정 및 서ëč„슀는 신규 ì‚Źìš©ìžì—êȌ 읎전되지 않을 수도 있슔니닀."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"추가된 ìƒˆëĄœìšŽ ì‚Źìš©ìžëŠ” 자신의 êł”ê°„ì„ 섀정핎알 합니닀.\n\nëȘšë“  ì‚Źìš©ìžëŠ” 닀넞 ì‚Źìš©ìžë“€ì„ ìœ„í•˜ì—Ź 앱을 업데읎튞할 수 있슔니닀."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"읎 ì‚Źìš©ìžì—êȌ êŽ€ëŠŹìž 권한을 ë¶€ì—Źí•˜ì‹œêČ ìŠ”ë‹ˆêčŒ?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"êŽ€ëŠŹìžëŠ” 닀넞 ì‚Źìš©ìžë„Œ êŽ€ëŠŹí•˜êł  êž°êž° 섀정을 수정하며 ꞰꞰ넌 쎈Ʞ화할 수 있슔니닀."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"지ꞈ ì‚Źìš©ìžë„Œ 섀정하시êČ ìŠ”ë‹ˆêčŒ?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"ì‚Źìš©ìžê°€ ꞰꞰ넌 ì‚Źìš©í•˜ì—Ź 자신의 êł”ê°„ì„ 섀정할 수 ìžˆë„ëĄ 하섞요."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"지ꞈ í”„ëĄœí•„ì„ 섀정하시êČ ìŠ”ë‹ˆêčŒ?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ìƒˆëĄœìšŽ êČŒìŠ€íŠž 섞션읎 ì‹œìž‘ë˜êł  êž°ìĄŽ 섞션의 ëȘšë“  ì•±êłŒ 데읎터가 삭제됩니닀."</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"êČŒìŠ€íŠž ëȘšë“œë„Œ ìą…ëŁŒí•˜ì‹œêČ ìŠ”ë‹ˆêčŒ?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"í˜„ìžŹ êČŒìŠ€íŠž 섞션의 ì•±êłŒ 데읎터가 삭제됩니닀."</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"읎 ì‚Źìš©ìžì—êȌ êŽ€ëŠŹìž 권한 ë¶€ì—Ź"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"ì‚Źìš©ìžì—êȌ êŽ€ëŠŹìž 권한 ë¶€ì—Ź 안 핹"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"ìą…ëŁŒ"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"êČŒìŠ€íŠž 활동을 저임하시êČ ìŠ”ë‹ˆêčŒ?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"êž°ìĄŽ 섞션의 활동을 저임하거나 ëȘšë“  ì•±êłŒ 데읎터넌 삭제할 수 있슔니닀."</string>
diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml
index f67e0bf..704f0cd 100644
--- a/packages/SettingsLib/res/values-ky/strings.xml
+++ b/packages/SettingsLib/res/values-ky/strings.xml
@@ -141,7 +141,7 @@
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Đ–ĐŸĐș"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"ЖупташĐșĐ°ĐœĐŽĐ° баĐčĐ»Đ°ĐœŃ‹ŃˆŃ‚Đ°Ń€Ń‹ÒŁŃ‹Đ· ĐŒĐ”ĐœĐ”Đœ Ń‡Đ°Đ»ŃƒŃƒ Ń‚Đ°Ń€Đ¶Ń‹ĐŒĐ°Đ»Ń‹ÒŁŃ‹Đ·ĐŽŃ‹ паĐčĐŽĐ°Đ»Đ°ĐœĐ° аласыз."</string>
     <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> Ń‚ÒŻĐ·ĐŒÓ©ĐłÒŻĐœÓ© туташуу ĐŒÒŻĐŒĐșÒŻĐœ Đ±ĐŸĐ»ĐłĐŸĐœ Đ¶ĐŸĐș."</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"PIN-ĐșĐŸĐŽ жД сырсөз туура ŃĐŒĐ”Ń Đ±ĐŸĐ»ĐłĐŸĐœĐŽŃƒĐșŃ‚Đ°Đœ, \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\" туташпаĐč ĐșалЎы."</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"PIN-ĐșĐŸĐŽ жД сырсөз туура ŃĐŒĐ”Ń Đ±ĐŸĐ»ĐłĐŸĐœĐŽŃƒĐșŃ‚Đ°Đœ, \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\" Ń‚ÒŻĐ·ĐŒÓ©ĐłÒŻĐœÓ© туташуу ĐŒÒŻĐŒĐșÒŻĐœ Đ±ĐŸĐ»ĐłĐŸĐœ Đ¶ĐŸĐș."</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ĐŒĐ”ĐœĐ”Đœ баĐčĐ»Đ°ĐœŃ‹ŃˆŃƒŃƒ ĐŒÒŻĐŒĐșÒŻĐœ ŃĐŒĐ”Ń."</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Đ–ŃƒĐżŃ‚Đ°ŃˆŃ‚Ń‹Ń€ŃƒŃƒĐœŃƒ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> чДтĐșĐ” ĐșаĐșты."</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"ĐšĐŸĐŒĐżŃŒŃŽŃ‚Đ”Ń€"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"ĐšÓ©Đ±ÒŻŃ€Ó©Ó©Đș убаĐșыт."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"АзырааĐș убаĐșыт."</string>
     <string name="cancel" msgid="5665114069455378395">"Đ–ĐŸĐș"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Đ‘ÒŻŃ‚Ń‚ÒŻ"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"ОĐčĐłĐŸŃ‚Đșучтар Đ¶Đ°ĐœĐ° ŃŃŃ‚Đ”Ń‚ĐșОчтДр"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Đ–Đ°ÒŁŃ‹ ĐșĐŸĐ»ĐŽĐŸĐœŃƒŃƒŃ‡Ńƒ ĐșĐŸŃˆĐŸŃŃƒĐ·Đ±Ńƒ?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"ЭгДр Ń‚ÒŻĐ·ĐŒÓ©ĐłÒŻÒŁÒŻĐ·ĐŽÒŻ Юагы бОр Đ°ĐŽĐ°ĐŒ ĐșĐŸĐ»ĐŽĐŸĐœŃƒĐż жатĐșĐ°Đœ Đ±ĐŸĐ»ŃĐŸ, ĐșĐŸŃˆŃƒĐŒŃ‡Đ° ĐżŃ€ĐŸŃ„ĐžĐ»ĐŽĐ”Ń€ĐŽĐž Ń‚ÒŻĐ·ÒŻĐż ĐșĐŸŃŽÒŁŃƒĐ·. ĐŸŃ€ĐŸŃ„ĐžĐ»ĐŽĐžĐœ ээсо Đ°ĐœŃ‹ Ó©Đ·ÒŻ ĐșĐ°Đ°Đ»Đ°ĐłĐ°ĐœĐŽĐ°Đč Ń‚ŃƒŃƒŃ€Đ°Đ»Đ°Đż, тушĐșагазЎарЎы ĐșĐŸŃŽĐż, ĐșДрДĐșŃ‚ÒŻÒŻ ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸĐ»ĐŸŃ€ĐŽŃƒ ĐŸŃ€ĐœĐŸŃ‚ŃƒĐż алат. ĐœŃ‹ĐœĐŽĐ°Đœ тышĐșары, ĐșĐŸĐ»ĐŽĐŸĐœŃƒŃƒŃ‡ŃƒĐ»Đ°Ń€ Ń‚ÒŻĐ·ĐŒÓ©ĐșŃ‚ÒŻĐœ Wi‑Fi´ĐŽŃ‹ Ó©Ń‡ÒŻŃ€ÒŻÒŻ/ĐșÒŻĐčĐłÒŻĐ·ÒŻÒŻ сыяĐșтуу жалпы ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ»Đ”Ń€ĐžĐœ өзгөртө Đ°Đ»Ń‹ŃˆĐ°Ń‚.\n\nĐŸŃ€ĐŸŃ„ĐžĐ»ŃŒ Ń‚ÒŻĐ·ÒŻĐ»ĐłÓ©ĐœĐŽÓ©Đœ ĐșĐžĐčĐžĐœ, Đ°ĐœŃ‹ Ń‚ŃƒŃƒŃ€Đ°Đ»Đ°Đż алуу ĐșДрДĐș.\n\nЖалпы ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸĐ»ĐŸŃ€ĐŽŃƒ баары Đ¶Đ°ÒŁŃ‹Ń€Ń‚Đ° алат, Đ±ĐžŃ€ĐŸĐș атаĐčŃ‹Đœ ĐŒÒŻĐŒĐșÒŻĐœŃ‡ÒŻĐ»ÒŻĐșтөр Ó©Đ·-Ó©Đ·ÒŻĐœŃ‡Ó© Đ¶Ó©ĐœĐŽÓ©Đ»Ó©Ń‚."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Đ–Đ°ÒŁŃ‹ ĐșĐŸĐ»ĐŽĐŸĐœŃƒŃƒŃ‡Ńƒ ĐșĐŸŃˆŃƒĐ»ĐłĐ°ĐœĐŽĐ°, ал Ó©Đ· ĐŒĐ”ĐčĐșĐžĐœĐŽĐžĐłĐžĐœ Ń‚ÒŻĐ·ÒŻĐż Đ°Đ»Ń‹ŃˆŃ‹ ĐșДрДĐș.\n\nĐšĐŸĐ»ĐŽĐŸĐœĐŒĐŸĐ»ĐŸŃ€ĐŽŃƒ бОр ĐșĐŸĐ»ĐŽĐŸĐœŃƒŃƒŃ‡Ńƒ Đ¶Đ°ÒŁŃ‹Ń€Ń‚ĐșĐ°ĐœĐŽĐ°, ал ĐșĐ°Đ»ĐłĐ°Đœ барЎыĐș ĐșĐŸĐ»ĐŽĐŸĐœŃƒŃƒŃ‡ŃƒĐ»Đ°Ń€ ÒŻŃ‡ÒŻĐœ Ўа Đ¶Đ°ÒŁŃ‹Ń€Đ°Ń‚."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Đ‘ŃƒĐ» ĐșĐŸĐ»ĐŽĐŸĐœŃƒŃƒŃ‡ŃƒĐłĐ° Đ°ĐŽĐŒĐžĐœ уĐșуĐșŃ‚Đ°Ń€Ń‹Đœ бДрДсОзбО?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"ĐĐŽĐŒĐžĐœ Đșатары ал башĐșа ĐșĐŸĐ»ĐŽĐŸĐœŃƒŃƒŃ‡ŃƒĐ»Đ°Ń€ĐŽŃ‹ башĐșарып, Ń‚ÒŻĐ·ĐŒÓ©ĐșŃ‚ÒŻĐœ ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ»Đ”Ń€ĐžĐœ Ó©Đ·ĐłÓ©Ń€Ń‚ÒŻĐż Đ¶Đ°ĐœĐ° Ń‚ÒŻĐ·ĐŒÓ©ĐșŃ‚ÒŻ Đ±Đ°ŃˆŃ‚Đ°ĐżĐșы абалга ĐșаĐčтара алат."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"ĐŸŃ€ĐŸŃ„ĐžĐ»ĐŽĐž Đ¶Ó©ĐœĐŽÓ©ĐčŃÒŻĐ·Đ±ÒŻ?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Ӛз ĐŒĐ”ĐčĐșĐžĐœĐŽĐžĐłĐžĐœ Đ¶Ó©ĐœĐŽÓ©Đż Đ°Đ»Ń‹ŃˆŃ‹ ÒŻŃ‡ÒŻĐœ, Ń‚ÒŻĐ·ĐŒÓ©ĐșŃ‚ÒŻ ĐșĐŸĐ»ĐŽĐŸĐœŃƒŃƒŃ‡ŃƒĐłĐ° Đ±Đ”Ń€ĐžŃˆĐžÒŁĐžĐ· ĐșДрДĐș."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ĐŸŃ€ĐŸŃ„Đ°ĐčĐ» азыр Ń‚ÒŻĐ·ÒŻĐ»ŃÒŻĐœĐ±ÒŻ?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Đ‘ŃƒĐ» араĐșДт Đ¶Đ°ÒŁŃ‹ ĐșĐŸĐœĐŸĐș ŃĐ”Đ°ĐœŃŃ‹Đœ Đ±Đ°ŃˆŃ‚Đ°Đż, учурЮагы ŃĐ”Đ°ĐœŃŃ‚Đ°ĐłŃ‹ барЎыĐș ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸĐ»ĐŸŃ€ĐŽŃƒ Đ¶Đ°ĐœĐ° аларЎагы ĐœĐ”Ń€ŃĐ”Đ»Đ”Ń€ĐŽĐž Đ¶ĐŸĐș Đșылат"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"ĐšĐŸĐœĐŸĐș Ń€Đ”Đ¶ĐžĐŒĐžĐœĐ”Đœ чыгасызбы?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"УчурЮагы ĐșĐŸĐœĐŸĐș ŃĐ”Đ°ĐœŃŃ‹ĐœĐŽĐ°ĐłŃ‹ барЎыĐș ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸĐ»ĐŸŃ€ ĐŒĐ”ĐœĐ”Đœ аларЎагы ĐœĐ”Ń€ŃĐ”Đ»Đ”Ń€ Ó©Ń‡ÒŻĐż Đșалат"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Đ‘ŃƒĐ» ĐșĐŸĐ»ĐŽĐŸĐœŃƒŃƒŃ‡ŃƒĐłĐ° Đ°ĐŽĐŒĐžĐœ уĐșуĐșŃ‚Đ°Ń€Ń‹Đœ Đ±Đ”Ń€ÒŻÒŻ"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"ĐšĐŸĐ»ĐŽĐŸĐœŃƒŃƒŃ‡ŃƒĐłĐ° Đ°ĐŽĐŒĐžĐœ уĐșуĐșтары Đ±Đ”Ń€ĐžĐ»Đ±Đ”ŃĐžĐœ"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Чыгуу"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ĐšĐŸĐœĐŸĐșŃ‚ŃƒĐœ араĐșĐ”Ń‚Ń‚Đ”Ń€ĐžĐœ саĐșтаĐčсызбы?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"УчурЮагы ŃĐ”Đ°ĐœŃŃ‚Đ°ĐłŃ‹ араĐșДттДрЎО саĐșтап жД барЎыĐș ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸĐ»ĐŸŃ€ĐŽŃƒ Đ¶Đ°ĐœĐ° аларЎагы ĐœĐ”Ń€ŃĐ”Đ»Đ”Ń€ĐŽĐž Đ¶ĐŸĐș ĐșŃ‹Đ»ŃĐ°ÒŁŃ‹Đ· Đ±ĐŸĐ»ĐŸŃ‚"</string>
diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml
index c9a40f6..34d646d 100644
--- a/packages/SettingsLib/res/values-lo/strings.xml
+++ b/packages/SettingsLib/res/values-lo/strings.xml
@@ -141,7 +141,7 @@
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"àșàș»àșà»€àș„àș”àș"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"àșàșČàș™àșˆàș±àșšàș„àșč່​àșˆàș°â€‹àș­àș°àș™àșžàșàșČàș”​ໃàș«à»‰à»€àș‚àș»à»‰àșČ​ເàș–àșŽàș‡àș„àșČàșâ€‹àșŠàș·à»ˆàșœàșč່àș•àșŽàș”àș•ໍ່ ແàș„àș° àș›àș°â€‹àș«àș§àș±àș”​àșàșČàș™â€‹à»‚àș—àș‚àș­àș‡â€‹àș—່àșČàș™àș—àșžàșà»†â€‹à»€àș—àș·à»ˆàș­â€‹àș—àș”່​ເàșŠàș·à»ˆàș­àșĄâ€‹àș•ໍ່àșàș±àș™."</string>
     <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"àșšà»à»ˆàșȘàșČàșĄàșČàș”àșˆàș±àșšàș„àșč່àșàș±àșš <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ໄàș”້."</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"àșšà»à»ˆàșȘàșČàșĄàșČàș”àșˆàș±àșšàș„àșč່àșàș±àșš <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ໄàș”້ເàșžàșČàș° PIN àș«àșŒàș· àșàș°à»àșˆàșœà»ˆàșČàș™àșšà»à»ˆàș–àș·àșàș•້àș­àș‡."</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"àșšà»à»ˆàșȘàșČàșĄàșČàș”àșˆàș±àșšàș„àșč່àșàș±àșš <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ໄàș”້ ເàșžàșČàș° PIN àș«àșŒàș· passkey àșšà»à»ˆàș–àș·àșàș•້àș­àș‡."</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"àșšà»à»ˆàșȘàșČàșĄàșČàș”àș•àșŽàș”àș•ໍ່àșȘàș·à»ˆàșȘàșČàș™àșàș±àșš <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ໄàș”້."</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"àșàșČàș™àșˆàș±àșšàș„àșč່àș–àș·àșàș›àș°àș•àșŽà»€àșȘàș”ໂàș”àș <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"àș„àș­àșĄàșžàșŽàș§à»€àș•àș”"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"ເàșžàș”່àșĄà»€àș§àș„àșČ."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"àș«àșŒàșžàș”ເàș§àș„àșČ."</string>
     <string name="cancel" msgid="5665114069455378395">"àșàș»àșà»€àș„àș”àș"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"àș•àș»àșàș„àș»àș‡"</string>
     <string name="done" msgid="381184316122520313">"ແàș„້àș§à»†"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"ໂàșĄàș‡àș›àșžàș ແàș„àș° àșàșČàș™à»àșˆà»‰àș‡à»€àș•àș·àș­àș™"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"ເàșžàș”່àșĄàșœàșč້ໃàșŠà»‰à»ƒà»à»ˆàșšà»?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"àș—່àșČàș™àșȘàșČàșĄàșČàș”ໃàșŠà»‰àș­àșžàș›àș°àșàș­àș™àș™àș”້àșźà»ˆàș§àșĄàșàș±àșšàș„àș»àș™àș­àș·à»ˆàș™à»„àș”້ໂàș”àșàșàșČàș™àșȘ້àșČàș‡àșœàșč້ໃàșŠà»‰à»€àșžàș”່àșĄà»€àș•àș”àșĄ. àșœàșč້ໃàșŠà»‰à»àș•່àș„àș°àș„àș»àș™àșˆàș°àșĄàș”àșžàș·à»‰àș™àș—àș”່àș‚àș­àș‡àș•àș»àș§à»€àș­àș‡, ເàșŠàșŽà»ˆàș‡à»€àș‚àș»àșČເàșˆàș»à»‰àșČàșȘàșČàșĄàșČàș”àș›àș±àșšà»àș•່àș‡à»àș­àș±àșš, àșźàșčàșšàșžàș·à»‰àș™àș«àșŒàș±àș‡ ແàș„àș° àș­àș·à»ˆàș™à»†à»„àș”້. àșœàșč້ໃàșŠà»‰àș•່àșČàș‡à»† àșȘàșČàșĄàșČàș”àș›àș±àșšà»àș•່àș‡àșàșČàș™àș•àș±à»‰àș‡àș„່àșČàș­àșžàș›àș°àșàș­àș™à»„àș”້ ເàșŠàș±à»ˆàș™: Wi‑Fi àș—àș”່àșĄàș”àșœàș»àș™àșàș°àș—àș»àșšàș—àșžàșàș„àș»àș™.\n\nເàșĄàș·à»ˆàș­àș—່àșČàș™à»€àșžàș”່àșĄàșœàșč້ໃàșŠà»‰à»ƒà»à»ˆ, àșšàșžàșàș„àș»àș™àș™àș±à»‰àș™àșˆàș°àș•້àș­àș‡àș•àș±à»‰àș‡àș„່àșČàșžàș·à»‰àș™àș—àș”່àș‚àș­àș‡à»€àș‚àș»àșČເàșˆàș»à»‰àșČàșà»ˆàș­àș™.\n\nàșœàșč້ໃàșŠà»‰à»ƒàș”àșà»àș•àșČàșĄàșȘàșČàșĄàșČàș”àș­àș±àșšà»€àș”àș”ແàș­àș±àșšàșȘàșłàș„àș±àșšàșœàșč້ໃàșŠà»‰àș„àș»àș™àș­àș·à»ˆàș™àș—àș±àș‡à»àș»àș”ໄàș”້. àșàșČàș™àș•àș±à»‰àș‡àș„່àșČàșàșČàș™àșŠà»ˆàș§àșà»€àș‚àș»à»‰àșČເàș–àșŽàș‡àș­àșČàș”àșšà»à»ˆàș–àș·àșà»‚àș­àș™àșà»‰àșČàșà»„àș›à»ƒàș«à»‰àșœàșč້ໃàșŠà»‰à»ƒà»à»ˆ."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"ເàșĄàș·à»ˆàș­â€‹àș—່àșČàș™â€‹à»€àșžàș”່àșĄâ€‹àșœàșč້​ໃàșŠà»‰â€‹à»ƒà»à»ˆ, àșœàșč້​ໃàșŠà»‰â€‹àș™àș±à»‰àș™â€‹àșˆàș°â€‹àș•້àș­àș‡â€‹àș•àș±à»‰àș‡â€‹àș„່àșČ​àșžàș·à»‰àș™â€‹àș—àș”່​àșšà»ˆàș­àș™â€‹àșˆàș±àș”​ເàșàș±àșšâ€‹àș‚ໍ້​àșĄàșčàș™â€‹àș‚àș­àș‡â€‹àș„àșČàș§.\n\nàșœàșč້​ໃàșŠà»‰â€‹àș—àșžàșâ€‹àș„àș»àș™â€‹àșȘàșČ​àșĄàșČàș”​àș­àș±àșšâ€‹à»€àș”àș”​ແàș­àș±àșšàșȘàșłâ€‹àș„àș±àșšâ€‹àșœàșč້​ໃàșŠà»‰â€‹àș„àș»àș™â€‹àș­àș·à»ˆàș™â€‹àș—àș±àș‡â€‹à»àș»àș”​ໄàș”້."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"ໃàș«à»‰àșȘàșŽàș”àș—àșŽàșœàșč້ເàșšàșŽà»ˆàș‡à»àșàș‡àș„àș°àșšàș»àșšà»àșà»ˆàșœàșč້ໃàșŠà»‰àș™àș”້àșšà»?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"àșœàșč້ເàșšàșŽà»ˆàș‡à»àșàș‡àș„àș°àșšàș»àșšàșˆàș°àșȘàșČàșĄàșČàș”àșˆàș±àș”àșàșČàș™àșœàșč້ໃàșŠà»‰àș­àș·à»ˆàș™à»†, ແàșà»‰à»„àș‚àșàșČàș™àș•àș±à»‰àș‡àș„່àșČàș­àșžàș›àș°àșàș­àș™ ແàș„àș° àșŁàș”ເàșŠàș±àș”àș­àșžàș›àș°àșàș­àș™à»€àș›àș±àș™àș„່àșČàșˆàșČàșà»‚àșźàș‡àș‡àșČàș™à»„àș”້."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"àș•àș±à»‰àș‡àș„່àșČàșœàșč້ໃàșŠà»‰àș•àș­àș™àș™àș”້àșšà»?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"àșàș§àș”​àșȘàș­àșšâ€‹à»ƒàș«à»‰â€‹à»àș™à»ˆâ€‹à»ƒàșˆâ€‹àș§à»ˆàșČ​àșšàșžàșâ€‹àș„àș»àș™â€‹àș”àș±à»ˆàș‡â€‹àșà»ˆàșČàș§â€‹àșȘàșČ​àșĄàșČàș”​àșźàș±àșšâ€‹àș­àșžâ€‹àș›àș°â€‹àșàș­àș™â€‹ ແàș„àș° ​àș•àș±à»‰àș‡â€‹àș„່àșČ​àșžàș·à»‰àș™â€‹àș—àș”່​àș‚àș­àș‡â€‹àșžàș§àșâ€‹à»€àș‚àș»àșČ​ໄàș”້"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"àș•àș±à»‰àș‡àș„່àșČໂàș›àșŁà»„àșŸàș„໌àș”àșœàș§àș™àș”້?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"àș™àș”້àșˆàș°à»€àș„àș”່àșĄà»„àș„àșàș°à»€àș§àș„àșČàș‚àș­àș‡à»àș‚àșà»ƒà»à»ˆ ແàș„àș° àș„àș¶àșšà»àș­àș±àșš ແàș„àș° àș‚ໍ້àșĄàșčàș™àș—àș±àș‡à»àș»àș”àș­àș­àșàșˆàșČàșà»€àșŠàș”àșŠàș±àș™àș›àș±àș”àșˆàșžàșšàș±àș™"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"àș­àș­àșàșˆàșČàșà»‚ໝàș”ແàș‚àșàșšà»?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"àș™àș”້àșˆàș°àș„àș¶àșšà»àș­àș±àșš ແàș„àș° àș‚ໍ້àșĄàșčàș™àș­àș­àșàșˆàșČàșà»€àșŠàș”àșŠàș±àș™à»àș‚àșàș›àș±àș”àșˆàșžàșšàș±àș™"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"ໃàș«à»‰àșȘàșŽàș”àș—àșŽàșœàșč້ເàșšàșŽà»ˆàș‡à»àșàș‡àș„àș°àșšàș»àșšà»àșà»ˆàșœàșč້ໃàșŠà»‰àș™àș”້"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"àșšà»à»ˆàșĄàș­àșšàșȘàșŽàș”àș—àșŽàșœàșč້ເàșšàșŽà»ˆàș‡à»àșàș‡àș„àș°àșšàș»àșšà»ƒàș«à»‰à»àșà»ˆàșœàșč້ໃàșŠà»‰"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"àș­àș­àș"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"àșšàș±àș™àș—àș¶àșàșàșČàș™à»€àș„àș·à»ˆàș­àș™à»„àș«àș§à»àș‚àșàșšà»?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"àș—່àșČàș™àșȘàșČàșĄàșČàș”àșšàș±àș™àș—àș¶àșàșàșČàș™à»€àș„àș·à»ˆàș­àș™à»„àș«àș§àșˆàșČàșà»€àșŠàș”àșŠàș±àș™àș›àș±àș”àșˆàșžàșšàș±àș™ àș«àșŒàș· àș„àș¶àșšà»àș­àș±àșš ແàș„àș° àș‚ໍ້àșĄàșčàș™àș—àș±àș‡à»àș»àș”ໄàș”້"</string>
diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml
index bac6306..7a8aff5 100644
--- a/packages/SettingsLib/res/values-lt/strings.xml
+++ b/packages/SettingsLib/res/values-lt/strings.xml
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Daugiau laiko."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"MaĆŸiau laiko."</string>
     <string name="cancel" msgid="5665114069455378395">"Atšaukti"</string>
-    <string name="next" msgid="2699398661093607009">"Kitas"</string>
-    <string name="back" msgid="5554327870352703710">"Atgal"</string>
-    <string name="save" msgid="3745809743277153149">"Išsaugoti"</string>
     <string name="okay" msgid="949938843324579502">"Gerai"</string>
     <string name="done" msgid="381184316122520313">"Atlikta"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Signalai ir priminimai"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Pridėti naują naudotoją?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Galite bendrinti šÄŻ ÄŻrenginÄŻ su kitais ĆŸmonėmis sukĆ«rę papildomĆł naudotojĆł. Kiekvienam naudotojui suteikiama atskira erdvė, kurią jie gali tinkinti naudodami programas, ekrano foną ir kt. Be to, naudotojai gali koreguoti ÄŻrenginio nustatymus, pvz., „Wi‑Fi“, kurie taikomi visiems.\n\nKai pridedate naują naudotoją, šis asmuo turi nusistatyti savo erdvę.\n\nBet kuris naudotojas gali atnaujinti visĆł kitĆł naudotojĆł programas. Pasiekiamumo nustatymai ir paslaugos gali nebĆ«ti perkeltos naujam naudotojui."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Kai pridedate naują naudotoją, šis asmuo turi nustatyti savo vietą.\n\nBet kuris naudotojas gali atnaujinti visĆł kitĆł naudotojĆł programas."</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"Nustatyti šÄŻ naudotoją kaip administratoriĆł?"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"Administratoriai turi specialiĆł privilegijĆł, kuriĆł kiti naudotojai neturi. Administratorius gali tvarkyti visus naudotojus, atnaujinti ar iš naujo nustatyti šÄŻ ÄŻrenginÄŻ, keisti nustatymus, perĆŸiĆ«rėti visas ÄŻdiegtas programas ir suteikti administratoriaus privilegijas kitiems naudotojams arba jas panaikinti."</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"Nustatyti kaip administratoriĆł"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Suteikti šiam naudotojui administratoriaus privilegijas?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Kaip administratotorius jis galės valdyti kitus naudotojus, keisti įrenginio nustatymus ir atkurti įrenginio gamyklinius nustatymus."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Nustatyti naudotoją dabar?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"ļsitikinkite, kad asmuo gali paimti įrenginį ir nustatyti savo vietą"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Nustatyti profilÄŻ dabar?"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Bus pradėta nauja svečio sesija ir iš esamos sesijos bus ištrintos visos programos ir duomenys"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Išeiti iš svečio reĆŸimo?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Bus ištrintos esamos svečio sesijos programos ir duomenys"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"Taip, nustatyti kaip administratoriĆł"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"Ne, nenustatyti kaip administratoriaus"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"Suteikti šiam naudotojui administratoriaus privilegijas"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Nesuteikti šiam naudotojui administratoriaus privilegijĆł"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Išeiti"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Išsaugoti svečio veiklą?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Galite išsaugoti esamos sesijos veiklą arba ištrinti visas programas ir duomenis"</string>
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
index 32d9243..6425e16 100644
--- a/packages/SettingsLib/res/values-lv/strings.xml
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -165,7 +165,7 @@
     <string name="data_usage_ota" msgid="7984667793701597001">"Sistēmas atjauninājumi"</string>
     <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB saistÄ«šana"</string>
     <string name="tether_settings_title_wifi" msgid="4803402057533895526">"Pārnēsājams tīklājs"</string>
-    <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"Bluetooth piesaiste"</string>
+    <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"Bluetooth saistÄ«šana"</string>
     <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"SaistÄ«šana"</string>
     <string name="tether_settings_title_all" msgid="8910259483383010470">"Piesaiste un pārn. tīklājs"</string>
     <string name="managed_user_title" msgid="449081789742645723">"Visas darba grupas"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Vairāk laika."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Mazāk laika."</string>
     <string name="cancel" msgid="5665114069455378395">"Atcelt"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"LABI"</string>
     <string name="done" msgid="381184316122520313">"Gatavs"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Signāli un atgādinājumi"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Vai pievienot jaunu lietotāju?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Varat koplietot šo ierÄ«ci ar citām personām, izveidojot papildu lietotājus. Katram lietotājam ir sava vide, kas ir pielāgojama, izmantojot lietotnes, fona tapetes u.c. Lietotāji var pielāgot arÄ« ierÄ«ces iestatÄ«jumus, kas attiecas uz visiem lietotājiem, piemēram, Wi‑Fi.\n\nKad pievienosiet jaunu lietotāju, viƆam bĆ«s jāizveido sava vide.\n\nIkviens lietotājs var atjaunināt lietotnes citu lietotāju vietā. PieejamÄ«bas iestatÄ«jumi un pakalpojumi var netikt pārsĆ«tÄ«ti jaunajam lietotājam."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Kad pievienosiet jaunu lietotāju, viƆam bĆ«s jāizveido sava vide.\n\nIkviens lietotājs var atjaunināt lietotnes citu lietotāju vietā."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Vai piešÄ·irt šim lietotājam administratora atÄŒaujas?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Kā administrators šis lietotājs varēs pārvaldÄ«t citus lietotājus, mainÄ«t ierÄ«ces iestatÄ«jumus un atiestatÄ«t ierÄ«cē rĆ«pnÄ«cas datus."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Iestatīt kontu tƫlīt?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Pārliecinieties, ka persona var izmantot ierīci un iestatīt savu vidi."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Vai iestatīt profilu tƫlīt?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Tādējādi tiks sākta jauna viesa sesijas un visas pašreizējās sesijas lietotnes un dati tiks dzēsti"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Vai iziet no viesa reĆŸÄ«ma?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Tādējādi tiks dzēstas pašreizējās viesa sesijas lietotnes un dati."</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"PiešÄ·irt šim lietotājam administratora atÄŒaujas"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"NepiešÄ·irt lietotājam administratora atÄŒaujas"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Iziet"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Vai saglabāt viesa darbības?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Varat saglabāt pašreizējās sesijas darbÄ«bas vai dzēst visas lietotnes un datus"</string>
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index f8a66f8..558b1a3 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"ĐŸĐŸĐČĐ”ŃœĐ” ĐČŃ€Đ”ĐŒĐ”."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"ĐŸĐŸĐŒĐ°Đ»Đșу ĐČŃ€Đ”ĐŒĐ”."</string>
     <string name="cancel" msgid="5665114069455378395">"ОтĐșажО"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"Đ’ĐŸ рДЎ"</string>
     <string name="done" msgid="381184316122520313">"Đ“ĐŸŃ‚ĐŸĐČĐŸ"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"ĐĐ»Đ°Ń€ĐŒĐž Đž ĐżĐŸŃ‚ŃĐ”Ń‚ĐœĐžŃ†Đž"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Да сД ĐŽĐŸĐŽĐ°ĐŽĐ” ĐœĐŸĐČ ĐșĐŸŃ€ĐžŃĐœĐžĐș?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"ĐŁŃ€Đ”ĐŽĐŸĐČ ĐŒĐŸĐ¶Đ” Ўа ĐłĐŸ ŃĐżĐŸĐŽĐ”Đ»ŃƒĐČатД ŃĐŸ Юруго лОца аĐșĐŸ ĐŽĐŸĐŽĐ°ĐŽĐ”Ń‚Đ” ĐŽĐŸĐżĐŸĐ»ĐœĐžŃ‚Đ”Đ»ĐœĐž ĐșĐŸŃ€ĐžŃĐœĐžŃ†Đž. ĐĄĐ”ĐșĐŸŃ˜ ĐșĐŸŃ€ĐžŃĐœĐžĐș ĐžĐŒĐ° ŃĐŸĐżŃŃ‚ĐČĐ”Đœ ĐżŃ€ĐŸŃŃ‚ĐŸŃ€ ŃˆŃ‚ĐŸ ĐŒĐŸĐ¶Đ” Ўа ĐłĐŸ ĐżŃ€ĐžŃĐżĐŸŃĐŸĐ±ŃƒĐČа ŃĐŸ аплОĐșацоо, тапДтО Đž ŃĐ»ĐžŃ‡ĐœĐŸ. ĐšĐŸŃ€ĐžŃĐœĐžŃ†ĐžŃ‚Đ” ĐŒĐŸĐ¶Đ” Ўа ĐżŃ€ĐžŃĐżĐŸŃĐŸĐ±ŃƒĐČаат Đž ĐżĐŸŃŃ‚Đ°ĐČĐșĐž за ŃƒŃ€Đ”ĐŽĐŸŃ‚, ĐșаĐșĐŸ ĐœĐ° пр., Wi‑Fi, ŃˆŃ‚ĐŸ ĐČажат за сОтД.\n\nĐšĐŸĐłĐ° ĐŽĐŸĐŽĐ°ĐČатД ĐœĐŸĐČ ĐșĐŸŃ€ĐžŃĐœĐžĐș, Ń‚ĐŸĐ° лОцД трДба Ўа ĐłĐŸ ĐżĐŸŃŃ‚Đ°ĐČĐž сĐČĐŸŃ˜ĐŸŃ‚ ĐżŃ€ĐŸŃŃ‚ĐŸŃ€.\n\nĐĄĐ”ĐșĐŸŃ˜ ĐșĐŸŃ€ĐžŃĐœĐžĐș ĐŒĐŸĐ¶Đ” Ўа Đ°Đ¶ŃƒŃ€ĐžŃ€Đ° аплОĐșацоо за сОтД Юруго ĐșĐŸŃ€ĐžŃĐœĐžŃ†Đž. ĐŸĐŸŃŃ‚Đ°ĐČĐșОтД Đž ŃƒŃĐ»ŃƒĐłĐžŃ‚Đ” за ĐżŃ€ĐžŃŃ‚Đ°ĐżĐœĐŸŃŃ‚ ĐœĐ” ĐŒĐŸĐ¶Đ” Ўа сД прДфрлат ĐœĐ° ĐœĐŸĐČĐžĐŸŃ‚ ĐșĐŸŃ€ĐžŃĐœĐžĐș."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"ĐšĐŸĐłĐ° ĐŽĐŸĐŽĐ°ĐČатД ĐœĐŸĐČ ĐșĐŸŃ€ĐžŃĐœĐžĐș, Ń‚ĐŸĐ° лОцД трДба Ўа ĐłĐŸ ĐżĐŸŃŃ‚Đ°ĐČĐž сĐČĐŸŃ˜ĐŸŃ‚ ĐżŃ€ĐŸŃŃ‚ĐŸŃ€.\n\nĐĄĐ”ĐșĐŸŃ˜ ĐșĐŸŃ€ĐžŃĐœĐžĐș ĐŒĐŸĐ¶Đ” Ўа Đ°Đ¶ŃƒŃ€ĐžŃ€Đ° аплОĐșацоо за сОтД Юруго ĐșĐŸŃ€ĐžŃĐœĐžŃ†Đž."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Да ĐŒŃƒ сД ЮаЮат проĐČОлДгОО ĐœĐ° Đ°ĐŽĐŒĐžĐœĐžŃŃ‚Ń€Đ°Ń‚ĐŸŃ€ ĐœĐ° ĐșĐŸŃ€ĐžŃĐœĐžĐșĐŸĐČ?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"КаĐșĐŸ Đ°ĐŽĐŒĐžĐœĐžŃŃ‚Ń€Đ°Ń‚ĐŸŃ€, ĐșĐŸŃ€ĐžŃĐœĐžĐșĐŸŃ‚ ŃœĐ” ĐŒĐŸĐ¶Đ” Ўа упраĐČуĐČа ŃĐŸ ĐŽŃ€ŃƒĐłĐžŃ‚Đ” ĐșĐŸŃ€ĐžŃĐœĐžŃ†Đž, Ўа гО ĐŒĐ”ĐœŃƒĐČа ĐżĐŸŃŃ‚Đ°ĐČĐșОтД за ŃƒŃ€Đ”ĐŽĐŸŃ‚ Đž Ўа ĐłĐŸ рДсДтОра ŃƒŃ€Đ”ĐŽĐŸŃ‚ ĐœĐ° фабрОчĐșĐž ĐżĐŸŃŃ‚Đ°ĐČĐșĐž."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"ĐŒĐ” ĐżĐŸŃŃ‚Đ°ĐČОтД ĐșĐŸŃ€ĐžŃĐœĐžĐș сДга?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"ĐŸŃ€ĐŸĐČДрДтД ЎалО Đ»ĐžŃ†Đ”Ń‚ĐŸ Đ” ĐŽĐŸŃŃ‚Đ°ĐżĐœĐŸ Ўа ĐłĐŸ Đ·Đ”ĐŒĐ” ŃƒŃ€Đ”ĐŽĐŸŃ‚ Đž Ўа ĐłĐŸ ĐżĐŸŃŃ‚Đ°ĐČĐž сĐČĐŸŃ˜ĐŸŃ‚ ĐżŃ€ĐŸŃŃ‚ĐŸŃ€"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ĐŸĐŸŃŃ‚Đ°ĐČĐž ĐżŃ€ĐŸŃ„ĐžĐ» сДга?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ОĐČа ŃœĐ” Đ·Đ°ĐżĐŸŃ‡ĐœĐ” ĐœĐŸĐČа ĐłĐŸŃŃ‚ĐžĐœŃĐșа сДсОја Đž ŃœĐ” гО ĐžĐ·Đ±Ń€ĐžŃˆĐ” сОтД аплОĐșацоо Đž ĐżĐŸĐŽĐ°Ń‚ĐŸŃ†Đž ĐŸĐŽ тДĐșĐŸĐČĐœĐ°Ń‚Đ° сДсОја"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Да сД ОзлДзД ĐŸĐŽ Ń€Đ”Đ¶ĐžĐŒ ĐœĐ° ĐłĐŸŃŃ‚ĐžĐœ?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"ОĐČа ŃœĐ” гО ĐžĐ·Đ±Ń€ĐžŃˆĐ” сОтД аплОĐșацоо Đž ĐżĐŸĐŽĐ°Ń‚ĐŸŃ†Đž ĐŸĐŽ тДĐșĐŸĐČĐœĐ°Ń‚Đ° ĐłĐŸŃŃ‚ĐžĐœŃĐșа сДсОја"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Đ”Đ°Ń˜Ń‚Đ” ĐŒŃƒ проĐČОлДгОО ĐœĐ° Đ°ĐŽĐŒĐžĐœĐžŃŃ‚Ń€Đ°Ń‚ĐŸŃ€ ĐœĐ° ĐșĐŸŃ€ĐžŃĐœĐžĐșĐŸĐČ"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"ĐĐ” ЎаĐČĐ°Ń˜Ń‚Đ” ĐŒŃƒ проĐČОлДгОО ĐœĐ° Đ°ĐŽĐŒĐžĐœĐžŃŃ‚Ń€Đ°Ń‚ĐŸŃ€ ĐœĐ° ĐșĐŸŃ€ĐžŃĐœĐžĐșĐŸĐČ"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"ИзлДзО"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Да сД Đ·Đ°Ń‡ŃƒĐČа аĐșтоĐČĐœĐŸŃŃ‚ ĐœĐ° ĐłĐŸŃŃ‚ĐžĐœ?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ĐœĐŸĐ¶Đ” Ўа Đ·Đ°Ń‡ŃƒĐČатД аĐșтоĐČĐœĐŸŃŃ‚ ĐŸĐŽ тДĐșĐŸĐČĐœĐ°Ń‚Đ° сДсОја ОлО Ўа гО ĐžĐ·Đ±Ń€ĐžŃˆĐ”Ń‚Đ” сОтД аплОĐșацоо Đž ĐżĐŸĐŽĐ°Ń‚ĐŸŃ†Đž"</string>
diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml
index ac4b077..75f9037 100644
--- a/packages/SettingsLib/res/values-ml/strings.xml
+++ b/packages/SettingsLib/res/values-ml/strings.xml
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"àŽ•à”‚àŽŸà”àŽ€à”œ àŽžàŽźàŽŻàŽ‚."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"àŽ•à”àŽ±àŽžà”àŽž àŽžàŽźàŽŻàŽ‚."</string>
     <string name="cancel" msgid="5665114069455378395">"àŽ±àŽŠà”àŽŠàŽŸàŽ•à”àŽ•à”àŽ•"</string>
-    <string name="next" msgid="2699398661093607009">"àŽ…àŽŸà”àŽ€à”àŽ€àŽ€à”"</string>
-    <string name="back" msgid="5554327870352703710">"àŽźàŽŸàŽ™à”àŽ™à”àŽ•"</string>
-    <string name="save" msgid="3745809743277153149">"àŽžàŽ‚àŽ°àŽ•à”àŽ·àŽżàŽ•à”àŽ•à”àŽ•"</string>
     <string name="okay" msgid="949938843324579502">"àŽ¶àŽ°àŽż"</string>
     <string name="done" msgid="381184316122520313">"àŽȘà”‚à”ŒàŽ€à”àŽ€àŽżàŽŻàŽŸàŽŻàŽż"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"àŽ…àŽČàŽŸàŽ±àŽ™à”àŽ™àŽłà”àŽ‚ àŽ±àŽżàŽźà”†à”†à”»àŽĄàŽ±à”àŽ•àŽłà”àŽ‚"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"àŽȘà”àŽ€àŽżàŽŻ àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ”àŽżàŽšà”† àŽšà”‡à”ŒàŽ•à”àŽ•àŽŁà”‹?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"àŽ•à”‚àŽŸà”àŽ€à”œ àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ•à”àŽ•àŽłà”† àŽžà”ƒàŽ·à”‌àŽŸàŽżàŽšà”àŽšà”àŽ•à”ŠàŽŁà”àŽŸà” àŽˆ àŽ‰àŽȘàŽ•àŽ°àŽŁàŽ‚ àŽźàŽ±à”àŽ±à”àŽłà”àŽłàŽ”àŽ°à”àŽźàŽŸàŽŻàŽż àŽšàŽżàŽ™à”àŽ™à”ŸàŽ•à”àŽ•à” àŽȘàŽ™à”àŽ•àŽżàŽŸàŽŸàŽ‚. àŽ†àŽȘà”àŽȘà”àŽ•àŽłà”àŽ‚ àŽ”àŽŸà”ŸàŽȘà”‡àŽȘà”àŽȘàŽ±à”àŽ•àŽłà”àŽ‚ àŽźàŽ±à”àŽ±à”àŽ‚ àŽ‰àŽȘàŽŻà”‹àŽ—àŽżàŽšà”àŽšà” àŽ‡àŽ·à”‌àŽŸàŽŸàŽšà”àŽžà”ƒàŽ€àŽźàŽŸàŽ•à”àŽ•àŽŸà”» àŽ“àŽ°à”‹ àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ”àŽżàŽšà”àŽ‚ àŽžàŽŸàŽ§àŽżàŽ•à”àŽ•à”àŽ‚. àŽ”à”ˆàŽ«à”ˆ àŽȘà”‹àŽČà”† àŽŽàŽČà”àŽČàŽŸàŽ”àŽ°à”†àŽŻà”àŽ‚ àŽŹàŽŸàŽ§àŽżàŽ•à”àŽ•à”àŽšà”àŽš àŽ‰àŽȘàŽ•àŽ°àŽŁ àŽ•à”àŽ°àŽźà”€àŽ•àŽ°àŽŁàŽ”à”àŽ‚ àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ•à”àŽ•à”ŸàŽ•à”àŽ•à” àŽ…àŽĄà”àŽœàŽžà”àŽ±à”àŽ±à” àŽšà”†àŽŻà”àŽŻàŽŸàŽ‚.\n\nàŽšàŽżàŽ™à”àŽ™àŽłà”ŠàŽ°à” àŽȘà”àŽ€àŽżàŽŻ àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ”àŽżàŽšà”† àŽšà”‡à”ŒàŽ•à”àŽ•à”àŽźà”àŽȘà”‹à”Ÿ, àŽ† àŽ”à”àŽŻàŽ•à”àŽ€àŽż àŽžà”àŽ”àŽšà”àŽ€àŽźàŽŸàŽŻ àŽ‡àŽŸàŽ‚ àŽžàŽœà”àŽœà”€àŽ•àŽ°àŽżàŽ•à”àŽ•à”‡àŽŁà”àŽŸàŽ€à”àŽŁà”àŽŸà”.\n\n àŽàŽ€à”†àŽ™à”àŽ•àŽżàŽČà”àŽ‚ àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ”àŽżàŽšà” àŽŽàŽČà”àŽČàŽŸ àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ•à”àŽ•à”ŸàŽ•à”àŽ•à”àŽźàŽŸàŽŻàŽż àŽ†àŽȘà”àŽȘà”àŽ•à”Ÿ àŽ…àŽȘà”‌àŽĄà”‡àŽ±à”àŽ±à” àŽšà”†àŽŻà”àŽŻàŽŸàŽšàŽŸàŽ•à”àŽ‚. àŽ‰àŽȘàŽŻà”‹àŽ—àŽžàŽčàŽŸàŽŻàŽż àŽ•à”àŽ°àŽźà”€àŽ•àŽ°àŽŁàŽ”à”àŽ‚ àŽžà”‡àŽ”àŽšàŽ™à”àŽ™àŽłà”àŽ‚ àŽȘà”àŽ€àŽżàŽŻ àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ”àŽżàŽšà” àŽ•à”ˆàŽźàŽŸàŽ±à”àŽ•àŽŻàŽżàŽČà”àŽČ."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"àŽšàŽżàŽ™à”àŽ™à”Ÿ àŽ’àŽ°à” àŽȘà”àŽ€àŽżàŽŻ àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ”àŽżàŽšà”† àŽšà”‡à”ŒàŽ•à”àŽ•à”àŽźà”àŽȘà”‹à”Ÿ, àŽ† àŽ”à”àŽŻàŽ•à”àŽ€àŽż àŽžà”àŽ”àŽšà”àŽ€àŽźàŽŸàŽŻ àŽ‡àŽŸàŽ‚ àŽžàŽœà”àŽœà”€àŽ•àŽ°àŽżàŽ•à”àŽ•à”‡àŽŁà”àŽŸàŽ€à”àŽŁà”àŽŸà”.\n\nàŽźàŽ±à”àŽ±à”†àŽČà”àŽČàŽŸ àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ•à”àŽ•à”ŸàŽ•à”àŽ•à”àŽźàŽŸàŽŻàŽż àŽàŽ€à”†àŽ™à”àŽ•àŽżàŽČà”àŽ‚ àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ”àŽżàŽšà” àŽ†àŽȘà”àŽȘà”àŽ•à”Ÿ àŽ…àŽȘà”‌àŽĄà”‡àŽ±à”àŽ±à” àŽšà”†àŽŻà”àŽŻàŽŸàŽ‚."</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"àŽˆ àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ”àŽżàŽšà”† àŽ…àŽĄà”‌àŽźàŽżà”» àŽ†àŽ•à”àŽ•àŽŁà”‹?"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"àŽźàŽ±à”àŽ±à” àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ•à”àŽ•à”ŸàŽ•à”àŽ•à” àŽ‡àŽČà”àŽČàŽŸàŽ€à”àŽ€ àŽȘà”àŽ°àŽ€à”àŽŻà”‡àŽ• àŽ…àŽ§àŽżàŽ•àŽŸàŽ°àŽ™à”àŽ™à”Ÿ àŽ…àŽĄà”‌àŽźàŽżàŽšà”àŽ•à”ŸàŽ•à”àŽ•à”àŽŁà”àŽŸà”. àŽ…àŽĄà”‌àŽźàŽżàŽšà” àŽŽàŽČà”àŽČàŽŸ àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ•à”àŽ•àŽłà”†àŽŻà”àŽ‚ àŽźàŽŸàŽšà”‡àŽœà” àŽšà”†àŽŻà”àŽŻàŽŸàŽšà”àŽ‚ àŽˆ àŽ‰àŽȘàŽ•àŽ°àŽŁàŽ‚ àŽ…àŽȘà”àŽĄà”‡àŽ±à”àŽ±à” àŽ…àŽČà”àŽČà”†àŽ™à”àŽ•àŽżà”œ àŽ±à”€àŽžà”†àŽ±à”àŽ±à” àŽšà”†àŽŻà”àŽŻàŽŸàŽšà”àŽ‚ àŽ•à”àŽ°àŽźà”€àŽ•àŽ°àŽŁàŽ‚ àŽȘàŽ°àŽżàŽ·à”‌àŽ•àŽ°àŽżàŽ•à”àŽ•àŽŸàŽšà”àŽ‚ àŽ‡à”»àŽžà”àŽ±à”àŽ±àŽŸà”Ÿ àŽšà”†àŽŻà”àŽ€ àŽŽàŽČà”àŽČàŽŸ àŽ†àŽȘà”àŽȘà”àŽ•àŽłà”àŽ‚ àŽ•àŽŸàŽŁàŽŸàŽšà”àŽ‚ àŽźàŽ±à”àŽ±à”àŽłà”àŽłàŽ”à”ŒàŽ•à”àŽ•à” àŽ…àŽĄà”‌àŽźàŽżàŽšà”àŽ±à”† àŽȘà”àŽ°àŽ€à”àŽŻà”‡àŽ• àŽ…àŽ§àŽżàŽ•àŽŸàŽ°àŽ™à”àŽ™à”Ÿ àŽ…àŽšà”àŽ”àŽŠàŽżàŽ•à”àŽ•à”àŽ•àŽŻà”‹ àŽ±àŽŠà”àŽŠàŽŸàŽ•à”àŽ•à”àŽ•àŽŻà”‹ àŽšà”†àŽŻà”àŽŻàŽŸàŽšà”àŽ‚ àŽ•àŽŽàŽżàŽŻà”àŽ‚."</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"àŽ…àŽĄà”‌àŽźàŽżà”» àŽ†àŽ•à”àŽ•à”àŽ•"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"àŽˆ àŽŻà”‚àŽžàŽ±àŽżàŽšà” àŽ…àŽĄà”àŽźàŽżà”» àŽȘàŽ”à”Œ àŽšà”œàŽ•àŽŁà”‹?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"àŽ’àŽ°à” àŽ…àŽĄà”‌àŽźàŽżà”» àŽŽàŽšà”àŽš àŽšàŽżàŽČàŽŻàŽżà”œ, àŽ…àŽ”à”ŒàŽ•à”àŽ•à” àŽźàŽ±à”àŽ±à” àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ•à”àŽ•àŽłà”† àŽźàŽŸàŽšà”‡àŽœà” àŽšà”†àŽŻà”àŽŻàŽŸàŽšà”àŽ‚ àŽ‰àŽȘàŽ•àŽ°àŽŁ àŽ•à”àŽ°àŽźà”€àŽ•àŽ°àŽŁàŽ™à”àŽ™à”Ÿ àŽȘàŽ°àŽżàŽ·à”‌àŽ•àŽ°àŽżàŽ•à”àŽ•àŽŸàŽšà”àŽ‚ àŽ‰àŽȘàŽ•àŽ°àŽŁàŽ‚ àŽ«àŽŸàŽ•à”àŽŸàŽ±àŽż àŽ±à”€àŽžà”†àŽ±à”àŽ±à” àŽšà”†àŽŻà”àŽŻàŽŸàŽšà”àŽ‚ àŽ•àŽŽàŽżàŽŻà”àŽ‚."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ”àŽżàŽšà”† àŽ‡àŽȘà”àŽȘà”‹à”Ÿ àŽžàŽœà”àŽœà”€àŽ•àŽ°àŽżàŽ•à”àŽ•àŽŁà”‹?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"àŽ‰àŽȘàŽ•àŽ°àŽŁàŽ‚ àŽŽàŽŸà”àŽ€à”àŽ€à” àŽ‡àŽŸàŽ‚ àŽžàŽœà”àŽœà”€àŽ•àŽ°àŽżàŽ•à”àŽ•à”àŽšà”àŽšàŽ€àŽżàŽšà” àŽ”à”àŽŻàŽ•à”àŽ€àŽż àŽČàŽ­à”àŽŻàŽźàŽŸàŽŁà”†àŽšà”àŽšà” àŽ‰àŽ±àŽȘà”àŽȘàŽŸàŽ•à”àŽ•à”àŽ•"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"àŽ‡àŽȘà”àŽȘà”‹à”Ÿ àŽȘà”àŽ°à”ŠàŽ«à”ˆà”œ àŽžàŽœà”àŽœà”€àŽ•àŽ°àŽżàŽ•à”àŽ•àŽŁà”‹?"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"àŽ‡àŽ€à” àŽȘà”àŽ€àŽżàŽŻà”ŠàŽ°à” àŽ…àŽ€àŽżàŽ„àŽż àŽžà”†àŽ·à”» àŽ†àŽ°àŽ‚àŽ­àŽżàŽ•à”àŽ•à”àŽ•àŽŻà”àŽ‚ àŽšàŽżàŽČàŽ”àŽżàŽČà”† àŽžà”†àŽ·àŽšàŽżà”œ àŽšàŽżàŽšà”àŽšà” àŽŽàŽČà”àŽČàŽŸ àŽ†àŽȘà”àŽȘà”àŽ•àŽłà”àŽ‚ àŽĄàŽŸàŽ±à”àŽ±àŽŻà”àŽ‚ àŽ‡àŽČà”àŽČàŽŸàŽ€àŽŸàŽ•à”àŽ•à”àŽ•àŽŻà”àŽ‚ àŽšà”†àŽŻà”àŽŻà”àŽ‚"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"àŽ…àŽ€àŽżàŽ„àŽż àŽźà”‹àŽĄàŽżà”œ àŽšàŽżàŽšà”àŽšà” àŽȘà”àŽ±àŽ€à”àŽ€à”àŽ•àŽŸàŽ•à”àŽ•àŽŁà”‹?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"àŽšàŽżàŽČàŽ”àŽżàŽČà”† àŽ…àŽ€àŽżàŽ„àŽż àŽžà”†àŽ·àŽšàŽżà”œ àŽšàŽżàŽšà”àŽšà” àŽ†àŽȘà”àŽȘà”àŽ•àŽłà”àŽ‚ àŽĄàŽŸàŽ±à”àŽ±àŽŻà”àŽ‚ àŽ‡àŽ€à” àŽ‡àŽČà”àŽČàŽŸàŽ€àŽŸàŽ•à”àŽ•à”àŽ‚"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"àŽ¶àŽ°àŽż, àŽ…àŽ”àŽ°à”† àŽ…àŽĄà”‌àŽźàŽżàŽšàŽŸàŽ•à”àŽ•à”àŽ•"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"àŽ”à”‡àŽŁà”àŽŸ, àŽ…àŽ”àŽ°à”† àŽ…àŽĄà”‌àŽźàŽżà”» àŽ†àŽ•à”àŽ•à”‡àŽŁà”àŽŸàŽ€àŽżàŽČà”àŽČ"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"àŽˆ àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ”àŽżàŽšà” àŽȘà”àŽ°àŽ€à”àŽŻà”‡àŽ• àŽ…àŽĄà”‌àŽźàŽżà”» àŽ…àŽ§àŽżàŽ•àŽŸàŽ°àŽ‚ àŽšà”œàŽ•à”‚"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€àŽŸàŽ”àŽżàŽšà” àŽ…àŽĄà”‌àŽźàŽżàŽšà”àŽ±à”† àŽȘà”àŽ°àŽ€à”àŽŻà”‡àŽ• àŽ…àŽ§àŽżàŽ•àŽŸàŽ°àŽ™à”àŽ™à”Ÿ àŽšà”œàŽ•àŽ°à”àŽ€à”"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"àŽȘà”àŽ±àŽ€à”àŽ€à”àŽ•àŽŸàŽ•à”àŽ•à”àŽ•"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"àŽ…àŽ€àŽżàŽ„àŽż àŽ†àŽ•à”‌àŽ±à”àŽ±àŽżàŽ”àŽżàŽ±à”àŽ±àŽż àŽžàŽ‚àŽ°àŽ•à”àŽ·àŽżàŽ•à”àŽ•àŽŁà”‹?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"àŽšàŽżàŽČàŽ”àŽżàŽČà”† àŽžà”†àŽ·àŽšàŽżà”œ àŽšàŽżàŽšà”àŽšà”àŽłà”àŽł àŽ†àŽ•à”‌àŽ±à”àŽ±àŽżàŽ”àŽżàŽ±à”àŽ±àŽż àŽžàŽ‚àŽ°àŽ•à”àŽ·àŽżàŽ•à”àŽ•àŽŸàŽ‚ àŽ…àŽČà”àŽČà”†àŽ™à”àŽ•àŽżà”œ àŽŽàŽČà”àŽČàŽŸ àŽ†àŽȘà”àŽȘà”àŽ•àŽłà”àŽ‚ àŽĄàŽŸàŽ±à”àŽ±àŽŻà”àŽ‚ àŽ‡àŽČà”àŽČàŽŸàŽ€àŽŸàŽ•à”àŽ•àŽŸàŽ‚"</string>
diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml
index 80ca5fd..e53992a 100644
--- a/packages/SettingsLib/res/values-mn/strings.xml
+++ b/packages/SettingsLib/res/values-mn/strings.xml
@@ -141,7 +141,7 @@
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"ĐŠŃƒŃ†Đ»Đ°Ń…"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Đ„ĐŸŃĐ»ŃƒŃƒĐ»ŃĐœĐ°Đ°Ń€ Ń…ĐŸĐ»Đ±ĐŸĐłĐŽŃĐŸĐœ ÒŻĐ”ĐŽ Ń‚Đ°ĐœŃ‹ харОлцагчОЎ Đ±ĐŸĐ»ĐŸĐœ ĐŽŃƒŃƒĐŽĐ»Đ°ĐłŃ‹Đœ Ń‚ÒŻÒŻŃ…ŃĐŽ Ń…Đ°ĐœĐŽĐ°Ń… Đ±ĐŸĐ»ĐŸĐŒĐ¶Ń‚ĐŸĐč."</string>
     <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-таĐč Ń…ĐŸŃĐ»ŃƒŃƒĐ»Đ¶ Ń‡Đ°ĐŽŃĐ°ĐœĐłÒŻĐč."</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Буруу ПИН ŃŃŃ…ÒŻĐ» ĐœŃĐČтрэх Ń‚ÒŻĐ»Ń…ÒŻÒŻŃ€ŃŃŃ ŃˆĐ°Đ»Ń‚ĐłĐ°Đ°Đ»Đ°Đœ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-таĐč Ń…ĐŸŃĐ»ŃƒŃƒĐ»Đ¶ Ń‡Đ°ĐŽŃĐ°ĐœĐłÒŻĐč."</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Буруу ПИН ŃŃŃ…ÒŻĐ» ĐŽĐ°ĐŒĐ¶ĐžŃ… Ń‚ÒŻĐ»Ń…ÒŻÒŻŃ€ŃŃŃ ŃˆĐ°Đ»Ń‚ĐłĐ°Đ°Đ»Đ°Đœ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-таĐč Ń…ĐŸŃĐ»ŃƒŃƒĐ»Đ¶ Ń‡Đ°ĐŽŃĐ°ĐœĐłÒŻĐč."</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-таĐč Ń…ĐŸĐ»Đ±ĐŸĐŸ барОх Đ±ĐŸĐ»ĐŸĐŒĐ¶ĐłÒŻĐč."</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Đ„ĐŸŃĐ»ŃƒŃƒĐ»Đ°Ń…Đ°Đ°Ń <xliff:g id="DEVICE_NAME">%1$s</xliff:g> Ń‚Đ°Ń‚ĐłĐ°Đ»Đ·ŃĐ°Đœ."</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"ĐšĐŸĐŒĐżŃŒŃŽŃ‚Đ”Ń€"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Их хугацаа."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Бага хугацаа."</string>
     <string name="cancel" msgid="5665114069455378395">"ĐŠŃƒŃ†Đ»Đ°Ń…"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Đ‘ĐŸĐ»ŃĐŸĐœ"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"ĐĄŃŃ€ÒŻÒŻĐ»ŃĐł Đ±ĐŸĐ»ĐŸĐœ ŃĐ°ĐœŃƒŃƒĐ»Đ°ĐłŃ‡"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"ĐšĐžĐœŃ Ń…ŃŃ€ŃĐłĐ»ŃĐłŃ‡ ĐœŃĐŒŃŃ… ÒŻÒŻ?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"йа ĐœŃĐŒŃĐ»Ń‚ Ń…ŃŃ€ŃĐłĐ»ŃĐłŃ‡ ÒŻÒŻŃĐłŃŃ… Đ·Đ°ĐŒĐ°Đ°Ń€ бусаЎ Ń…ÒŻĐŒÒŻÒŻŃŃ‚ŃĐč ŃĐœŃ Ń‚Ó©Ń…Ó©Ó©Ń€Ó©ĐŒĐ¶ĐžĐčĐł хуĐČаалцаж Đ±ĐŸĐ»ĐœĐŸ. Đ„ŃŃ€ŃĐłĐ»ŃĐłŃ‡ тус Đ±ÒŻŃ€ апп, ĐŽŃĐ»ĐłŃŃ†ĐžĐčĐœ Đ·ŃƒŃ€Đ°Đł Đ±ĐŸĐ»ĐŸĐœ бусаЎ Đ·ÒŻĐčĐ»ŃŃ өөрчлөх Đ±ĐŸĐ»ĐŸĐŒĐ¶Ń‚ĐŸĐč хуĐČĐžĐčĐœ ĐŸŃ€ĐŸĐœ заĐčтаĐč баĐčĐœĐ°. ĐąÒŻÒŻĐœŃ‡Đ»ŃĐœ Ń…ŃŃ€ŃĐłĐ»ŃĐłŃ‡ ĐœŃŒ Đ±ÒŻŃ… Ń…ŃŃ€ŃĐłĐ»ŃĐłŃ‡ĐžĐŽ ĐœÓ©Đ»Ó©Ó©Đ»Ó©Ń… Đ±ĐŸĐ»ĐŸĐŒĐ¶Ń‚ĐŸĐč Wi-Fi Đ·ŃŃ€ŃĐł Ń‚Ó©Ń…Ó©Ó©Ń€Ó©ĐŒĐ¶ĐžĐčĐœ Ń‚ĐŸŃ…ĐžŃ€ĐłĐŸĐŸĐł өөрчлөх Đ±ĐŸĐ»ĐŸĐŒĐ¶Ń‚ĐŸĐč.\n\nĐ„ŃŃ€ŃĐČ Ń‚Đ° ŃˆĐžĐœŃ Ń…ŃŃ€ŃĐłĐ»ŃĐłŃ‡ ĐœŃĐŒŃŃ… Đ±ĐŸĐ» тухаĐčĐœ Ń…ÒŻĐœ хуĐČĐžĐčĐœ ĐŸŃ€ĐŸĐœ заĐčгаа Đ±ÒŻŃ€ĐŽÒŻÒŻĐ»ŃŃ… Ń‘ŃŃ‚ĐŸĐč.\n\nĐ„ŃŃ€ŃĐłĐ»ŃĐłŃ‡ Đ±ÒŻŃ€ бусаЎ Đ±ÒŻŃ… Ń…ŃŃ€ŃĐłĐ»ŃĐłŃ‡ĐžĐčĐœ Ó©ĐŒĐœÓ©Ó©Ń апп ŃˆĐžĐœŃŃ‡ĐžĐ»Đ¶ Đ±ĐŸĐ»ĐœĐŸ. Đ„Đ°ĐœĐŽĐ°Đ»Ń‚Ń‹Đœ Ń‚ĐŸŃ…ĐžŃ€ĐłĐŸĐŸ Đ±ĐŸĐ»ĐŸĐœ ÒŻĐčĐ»Ń‡ĐžĐ»ĐłŃŃĐł ŃˆĐžĐœŃ Ń…ŃŃ€ŃĐłĐ»ŃĐłŃ‡ĐžĐŽ ŃˆĐžĐ»Đ¶ÒŻÒŻĐ»ŃŃ… Đ±ĐŸĐ»ĐŸĐŒĐ¶ĐłÒŻĐč баĐčж Đ±ĐŸĐ»Đ·ĐŸŃˆĐłÒŻĐč."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"йа ŃˆĐžĐœŃ Ń…ŃŃ€ŃĐłĐ»ŃĐłŃ‡ ĐœŃĐŒĐ±ŃĐ» тухаĐčĐœ Ń…ÒŻĐœ өөрОĐčĐœ ĐżŃ€ĐŸŃ„Đ°Đčлыг Ń‚ĐŸŃ…ĐžŃ€ŃƒŃƒĐ»Đ°Ń… ŃˆĐ°Đ°Ń€ĐŽĐ»Đ°ĐłĐ°Ń‚Đ°Đč.\n\nĐĐ»ŃŒ ч Ń…ŃŃ€ŃĐłĐ»ŃĐłŃ‡ Đ±ÒŻŃ… Ń…ŃŃ€ŃĐłĐ»ŃĐłŃ‡ĐžĐčĐœ апп-ууЮыг ŃˆĐžĐœŃŃ‡Đ»ŃŃ… Đ±ĐŸĐ»ĐŸĐŒĐ¶Ń‚ĐŸĐč."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Đ­ĐœŃ Ń…ŃŃ€ŃĐłĐ»ŃĐłŃ‡ĐžĐŽ Đ°ĐŽĐŒĐžĐœŃ‹ эрх Ó©ĐłÓ©Ń… ÒŻÒŻ?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"ĐĐŽĐŒĐžĐœŃ‹ хуĐČьЮ тэр бусаЎ Ń…ŃŃ€ŃĐłĐ»ŃĐłŃ‡ĐžĐčĐł уЮорЮах, Ń‚Ó©Ń…Ó©Ó©Ń€Ó©ĐŒĐ¶ĐžĐčĐœ Ń‚ĐŸŃ…ĐžŃ€ĐłĐŸĐŸĐł өөрчлөх Đ±ĐŸĐ»ĐŸĐœ Ń‚Ó©Ń…Ó©Ó©Ń€Ó©ĐŒĐ¶ĐžĐčĐł ÒŻĐčлЎĐČэроĐčĐœ Ń‚ĐŸŃ…ĐžŃ€ĐłĐŸĐŸĐœĐŽ ŃˆĐžĐœŃŃ‡Đ»ŃŃ… Đ±ĐŸĐ»ĐŸĐŒĐ¶Ń‚ĐŸĐč Đ±ĐŸĐ»ĐœĐŸ."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Đ„ŃŃ€ŃĐłĐ»ŃĐłŃ‡ĐžĐčĐł ĐŸĐŽĐŸĐŸ Ń‚ĐŸŃ…ĐžŃ€ŃƒŃƒĐ»Đ°Ń… уу?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Đ„ŃŃ€ŃĐłĐ»ŃĐłŃ‡ Ń‚Ó©Ń…Ó©Ó©Ń€Ó©ĐŒĐ¶ĐžĐčĐł аĐČч өөрОĐčĐœ ĐżŃ€ĐŸŃ„Đ°Đčлыг Ń‚ĐŸŃ…ĐžŃ€ŃƒŃƒĐ»Đ°Ń… Đ±ĐŸĐ»ĐŸĐŒĐ¶Ń‚ĐŸĐč эсэхоĐčĐł ŃˆĐ°Đ»ĐłĐ°ĐœĐ° уу"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ĐŸŃ€ĐŸŃ„Đ°Đčлыг ĐŸĐŽĐŸĐŸ Ń‚ĐŸŃ…ĐžŃ€ŃƒŃƒĐ»Đ°Ń… уу?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Đ­ĐœŃ ĐœŃŒ ŃˆĐžĐœŃ Đ·ĐŸŃ‡ĐœŃ‹ Ń…Đ°Ń€ĐžĐ»Ń†Đ°Đœ ÒŻĐčĐ»ĐŽŃĐ» ŃŃ…Đ»ÒŻÒŻĐ»Đ¶, ĐŸĐŽĐŸĐŸĐłĐžĐčĐœ Ń…Đ°Ń€ĐžĐ»Ń†Đ°Đœ ÒŻĐčĐ»ĐŽĐ»ŃŃŃ Đ±ÒŻŃ… апп Đ±ĐŸĐ»ĐŸĐœ өгөгЎлОĐčĐł ŃƒŃŃ‚ĐłĐ°ĐœĐ°"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Đ—ĐŸŃ‡ĐœŃ‹ ĐłĐŸŃ€ĐžĐŒĐŸĐŸŃ гарах уу?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Đ­ĐœŃ ĐœŃŒ ĐŸĐŽĐŸĐŸĐłĐžĐčĐœ Đ·ĐŸŃ‡ĐœŃ‹ Ń…Đ°Ń€ĐžĐ»Ń†Đ°Đœ ÒŻĐčĐ»ĐŽĐ»ŃŃŃ аппууЎ Đ±ĐŸĐ»ĐŸĐœ өгөгЎлОĐčĐł ŃƒŃŃ‚ĐłĐ°ĐœĐ°"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Đ­ĐœŃ Ń…ŃŃ€ŃĐłĐ»ŃĐłŃ‡ĐžĐŽ Đ°ĐŽĐŒĐžĐœŃ‹ эрх Ó©ĐłÓ©Ń…"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Đ­ĐœŃ Ń…ŃŃ€ŃĐłĐ»ŃĐłŃ‡ĐžĐŽ Đ°ĐŽĐŒĐžĐœŃ‹ эрх Ó©ĐłÓ©Ń…ĐłÒŻĐč"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Гарах"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Đ—ĐŸŃ‡ĐœŃ‹ ÒŻĐčĐ» ажОллагааг хаЎгалах уу?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"йа ĐŸĐŽĐŸĐŸĐłĐžĐčĐœ Ń…Đ°Ń€ĐžĐ»Ń†Đ°Đœ ÒŻĐčĐ»ĐŽĐ»ŃŃŃ ÒŻĐčĐ» ажОллагаа хаЎгалах эсĐČŃĐ» Đ±ÒŻŃ… апп, өгөгЎлОĐčĐł ŃƒŃŃ‚ĐłĐ°Đ¶ Đ±ĐŸĐ»ĐœĐŸ"</string>
diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml
index 3836e17..aa2eae4 100644
--- a/packages/SettingsLib/res/values-mr/strings.xml
+++ b/packages/SettingsLib/res/values-mr/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"à€œà€Ÿà€žà„à€€ à€”à„‡à€ł."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"à€•à€źà„€ à€”à„‡à€ł."</string>
     <string name="cancel" msgid="5665114069455378395">"à€°à€Šà„à€Š à€•à€°à€Ÿ"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"à€ à„€à€• à€†à€čà„‡"</string>
     <string name="done" msgid="381184316122520313">"à€Șà„‚à€°à„à€Ł à€à€Ÿà€Čà„‡"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"à€…à€Čà€Ÿà€°à„à€ź à€†à€Łà€ż à€°à€żà€źà€Ÿà€‡à€‚à€Ąà€°"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"à€šà€”à„€à€š à€”à€Ÿà€Șà€°à€•à€°à„à€€à€Ÿ à€œà„‹à€Ąà€Ÿà€Żà€šà€Ÿ?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"à€…à€€à€żà€°à€żà€•à„à€€ à€”à€Ÿà€Șà€°à€•à€°à„à€€à„‡ à€€à€Żà€Ÿà€° à€•à€°à„‚à€š à€€à„à€źà„à€čà„€ à€‡à€€à€° à€Čà„‹à€•à€Ÿà€‚à€žà„‹à€Źà€€ à€čà„‡ à€Ąà€żà€”à„à€čà€Ÿà€‡à€ž à€¶à„‡à€…à€° à€•à€°à„‚ à€¶à€•à€€à€Ÿ. à€Șà„à€°à€€à„à€Żà„‡à€• à€”à€Ÿà€Șà€°à€•à€°à„à€€à„à€Żà€Ÿà€ž à€€à„à€Żà€Ÿà€‚à€šà„€ à€žà„à€”à€€à€ƒà€šà„€ à€žà„à€Șà„‡à€ž à€…à€žà€€à„‡, à€œà„€ à€€à„‡ à€…‍à„…à€Șà„à€ž, à€”à„‰à€Čà€Șà„‡à€Șà€° à€†à€Łà€ż à€Żà€Ÿà€žà€Ÿà€°à€–à„à€Żà€Ÿ à€—à„‹à€·à„à€Ÿà„€à€‚à€šà„€ à€•à€žà„à€Ÿà€źà€Ÿà€‡à€ à€•à€°à„‚ à€¶à€•à€€à€Ÿà€€. à€”à€Ÿà€Șà€°à€•à€°à„à€€à„‡ à€Șà„à€°à€€à„à€Żà„‡à€•à€Ÿà€Čà€Ÿ à€Șà„à€°à€­à€Ÿà€”à€żà€€ à€•à€°à€Łà€Ÿà€±à„à€Żà€Ÿ à€”à€Ÿà€Ż-à€«à€Ÿà€Ż à€žà€Ÿà€°à€–à„à€Żà€Ÿ à€Ąà€żà€”à„à€čà€Ÿà€‡à€ž à€žà„‡à€Ÿà€żà€‚à€—à„à€œ à€…‍à„…à€Ąà€œà€žà„à€Ÿ à€Šà„‡à€–à„€à€Č à€•à€°à„‚ à€¶à€•à€€à€Ÿà€€.\n\nà€€à„à€źà„à€čà„€ à€à€• à€šà€”à„€à€š à€”à€Ÿà€Șà€°à€•à€°à„à€€à€Ÿ à€œà„‹à€Ąà€€à€Ÿ, à€€à„‡à€”à„à€čà€Ÿ à€€à„à€Żà€Ÿ à€”à„à€Żà€•à„à€€à„€à€Čà€Ÿ à€€à„à€Żà€Ÿà€šà„€ à€žà„à€Șà„‡à€ž à€žà„‡à€Ÿ à€…à€Ș à€•à€°à€Łà„à€Żà€Ÿà€šà„€ à€†à€”à€¶à„à€Żà€•à€€à€Ÿ à€…à€žà€€à„‡.\n\nà€•à„‹à€Łà€€à€Ÿà€čà„€ à€”à€Ÿà€Șà€°à€•à€°à„à€€à€Ÿ à€‡à€€à€° à€žà€°à„à€” à€”à€Ÿà€Șà€°à€•à€°à„à€€à„à€Żà€Ÿà€‚à€žà€Ÿà€ à„€ à€…‍à„…à€Ș à€…à€Șà€Ąà„‡à€Ÿ à€•à€°à„‚ à€¶à€•à€€à„‹. à€…‍à„…à€•à„à€žà„‡à€žà€żà€Źà€żà€Čà€żà€Ÿà„€ à€žà„‡à€Ÿà€żà€‚à€—à„à€œ à€†à€Łà€ż à€žà„‡à€”à€Ÿ à€šà€”à„€à€š à€”à€Ÿà€Șà€°à€•à€°à„à€€à„à€Żà€Ÿà€Čà€Ÿ à€•à€Šà€Ÿà€šà€żà€€ à€Ÿà„à€°à€Ÿà€šà„à€žà€«à€° à€čà„‹à€Łà€Ÿà€° à€šà€Ÿà€čà„€à€€."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"à€€à„à€źà„à€čà„€ à€à€• à€šà€”à„€à€š à€”à€Ÿà€Șà€°à€•à€°à„à€€à€Ÿ à€œà„‹à€Ąà€€à€Ÿ à€€à„‡à€”à„à€čà€Ÿ, à€€à„à€Żà€Ÿ à€”à„à€Żà€•à„à€€à„€à€ž à€€à„à€Żà€Ÿà€‚à€šà„‡ à€žà„à€„à€Ÿà€š à€žà„‡à€Ÿ à€•à€°à€Łà„à€Żà€Ÿà€šà„€ à€†à€”à€¶à„à€Żà€•à€€à€Ÿ à€…à€žà€€à„‡.\n\nà€•à„‹à€Łà€€à€Ÿà€čà„€ à€”à€Ÿà€Șà€°à€•à€°à„à€€à€Ÿ à€‡à€€à€° à€žà€°à„à€” à€”à€Ÿà€Șà€°à€•à€°à„à€€à„à€Żà€Ÿà€‚à€žà€Ÿà€ à„€ à€…‍à„…à€Șà„à€ž à€…à€Șà€Ąà„‡à€Ÿ à€•à€°à„‚ à€¶à€•à€€à„‹."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"à€”à€Ÿà€Șà€°à€•à€°à„à€€à„à€Żà€Ÿà€Čà€Ÿ à„Čà€Ąà€źà€żà€š à€”à€żà€¶à„‡à€·à€Ÿà€§à€żà€•à€Ÿà€° à€Šà„à€Żà€Ÿà€Żà€šà„‡?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"à„Čà€Ąà€źà€żà€š à€…à€žà€Čà„à€Żà€Ÿà€šà„‡ à€€à„‡ à€‡à€€à€° à€”à€Ÿà€Șà€°à€•à€°à„à€€à„à€Żà€Ÿà€‚à€šà€Ÿ à€”à„à€Żà€”à€žà„à€„à€Ÿà€Șà€żà€€ à€•à€°à„‚ à€¶à€•à€€à€Ÿà€€, à€Ąà€żà€”à„à€čà€Ÿà€‡à€ž à€žà„‡à€Ÿà€żà€‚à€—à„à€œ à€žà„à€§à€Ÿà€°à€żà€€ à€•à€°à„‚ à€¶à€•à€€à€Ÿà€€ à€†à€Łà€ż à€Ąà€żà€”à„à€čà€Ÿà€‡à€žà€Čà€Ÿ à€«à„…à€•à„à€Ÿà€°à„€ à€°à„€à€žà„‡à€Ÿ à€•à€°à„‚ à€¶à€•à€€à€Ÿà€€."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"à€†à€€à€Ÿ à€”à€Ÿà€Șà€°à€•à€°à„à€€à€Ÿ à€žà„‡à€Ÿ à€•à€°à€Ÿà€Żà€šà€Ÿ?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"à€€à„‹ à€”à€Ÿà€Șà€°à€•à€°à„à€€à€Ÿ à€Ąà€żà€”à„à€čà€Ÿà€‡à€žà€œà€”à€ł à€†à€čà„‡ à€†à€Łà€ż à€€à„à€Żà€Ÿà€šà„‡ à€žà„à€„à€Ÿà€š à€žà„‡à€Ÿ à€•à€°à€Łà„à€Żà€Ÿà€žà€Ÿà€ à„€ à€‰à€Șà€Čà€Źà„à€§ à€†à€čà„‡ à€Żà€Ÿà€šà„€ à€–à€Ÿà€€à„à€°à„€ à€•à€°à€Ÿ"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"à€†à€€à€Ÿ à€Șà„à€°à„‹à€«à€Ÿà€ˆà€Č à€žà„‡à€Ÿ à€•à€°à€Ÿà€Żà€šà€Ÿ?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"à€čà„‡ à€šà€”à„€à€š à€…à€€à€żà€„à„€ à€žà€€à„à€° à€žà„à€°à„‚ à€•à€°à„‡à€Č à€†à€Łà€ż à€žà€§à„à€Żà€Ÿà€šà„à€Żà€Ÿ à€žà€€à„à€°à€Ÿà€€à„€à€Č à€žà€°à„à€” à€…‍à„…à€Șà„à€ž à€” à€Ąà„‡à€Ÿà€Ÿ à€čà€Ÿà€”à„‡à€Č"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"à€…à€€à€żà€„à„€ à€źà„‹à€Ąà€źà€§à„‚à€š à€Źà€Ÿà€čà„‡à€° à€Șà€Ąà€Ÿà€Żà€šà„‡ à€•à€Ÿ?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"à€čà„‡ à€žà€§à„à€Żà€Ÿà€šà„à€Żà€Ÿ à€…à€€à€żà€„à„€ à€žà€€à„à€°à€Ÿà€€à„€à€Č à€…‍à„…à€Șà„à€ž à€†à€Łà€ż à€Ąà„‡à€Ÿà€Ÿ à€čà€Ÿà€”à„‡à€Č"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"à€Żà€Ÿ à€”à€Ÿà€Șà€°à€•à€°à„à€€à„à€Żà€Ÿà€Čà€Ÿ à„Čà€Ąà€źà€żà€šà€šà„‡ à€”à€żà€¶à„‡à€·à€Ÿà€§à€żà€•à€Ÿà€° à€Šà„à€Żà€Ÿ"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"à€Żà€Ÿ à€”à€Ÿà€Șà€°à€•à€°à„à€€à„à€Żà€Ÿà€Čà€Ÿ à„Čà€Ąà€źà€żà€šà€šà„‡ à€”à€żà€¶à„‡à€·à€Ÿà€§à€żà€•à€Ÿà€° à€Šà„‡à€Š à€šà€•à€Ÿ"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"à€Źà€Ÿà€čà„‡à€° à€Șà€Ąà€Ÿ"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"à€…à€€à€żà€„à„€ à€…‍à„…à€•à„à€Ÿà€żà€”à„à€čà€żà€Ÿà„€ à€žà„‡à€”à„à€č à€•à€°à€Ÿà€Żà€šà„€ à€•à€Ÿ?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"à€žà€§à„à€Żà€Ÿà€šà„à€Żà€Ÿ à€žà€€à„à€°à€Ÿà€€à„€à€Č à€…‍à„…à€•à„à€Ÿà€żà€”à„à€čà€żà€Ÿà„€ à€žà„‡à€”à„à€č à€•à€°à„‚ à€•à€żà€‚à€”à€Ÿ à€žà€°à„à€” à€…‍à„…à€Șà„à€ž à€” à€Ąà„‡à€Ÿà€Ÿ à€čà€Ÿà€”à„‚ à€¶à€•à€€à€Ÿ"</string>
diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml
index 2c3bb50..78f5121 100644
--- a/packages/SettingsLib/res/values-ms/strings.xml
+++ b/packages/SettingsLib/res/values-ms/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Lagi masa."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Kurang masa."</string>
     <string name="cancel" msgid="5665114069455378395">"Batal"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Selesai"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Penggera dan peringatan"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Tambah pengguna baharu?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Anda boleh berkongsi peranti ini dengan orang lain dengan membuat pengguna tambahan. Setiap pengguna mempunyai ruang mereka sendiri, yang boleh diperibadikan dengan apl, kertas dinding dan sebagainya. Pengguna juga boleh melaraskan tetapan peranti seperti Wi-Fi yang akan memberi kesan kepada semua orang.\n\nApabila anda menambah pengguna baharu, orang itu perlu menyediakan ruang mereka.\n\nMana-mana pengguna boleh mengemas kini apl untuk semua pengguna lain. Tetapan dan perkhidmatan kebolehaksesan tidak boleh dipindahkan kepada pengguna baharu."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Apabila anda menambah pengguna baharu, orang itu perlu menyediakan ruang mereka.\n\nMana-mana pengguna boleh mengemas kini apl untuk semua pengguna lain."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Berikan keistimewaan pentadbir kepada pengguna ini?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Sebagai pentadbir, mereka dapat mengurus pengguna lain, mengubah suai tetapan peranti dan membuat tetapan semula kilang pada peranti."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Sediakan pengguna sekarang?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Pastikan orang itu tersedia untuk mengambil peranti dan menyediakan ruangan"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Sediakan profil sekarang?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Tindakan ini akan memulakan sesi tetamu baharu dan memadamkan semua apl dan data daripada sesi semasa"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Keluar daripada mod tetamu?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Tindakan ini akan memadamkan apl dan data daripada sesi tetamu semasa"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Berikan keistimewaan pentadbir kepada pengguna ini"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Jangan berikan keistimewaan pentadbir kepada pengguna"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Keluar"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Simpan aktiviti tetamu?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Anda boleh menyimpan aktiviti daripada sesi semasa atau memadamkan semua apl dan data"</string>
diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml
index e09afe5..ee27607 100644
--- a/packages/SettingsLib/res/values-my/strings.xml
+++ b/packages/SettingsLib/res/values-my/strings.xml
@@ -107,8 +107,8 @@
     <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ဖိုငá€șလလá€Čá€•á€Œá€±á€Źá€„á€șသခဌငá€șှ"</string>
     <string name="bluetooth_profile_hid" msgid="2969922922664315866">"ထည့á€șသလငá€șသသေဏ စကá€ș"</string>
     <string name="bluetooth_profile_pan" msgid="1006235139308318188">"အငá€șတာနကá€șချိတá€șဆကá€șခဌငá€șှ"</string>
-    <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"အဆကá€șá€Ąá€žá€œá€šá€ș၊ ခေါá€șá€†á€­á€Żá€™á€Ÿá€Żá€™á€Ÿá€á€șတမá€șှ မျဟဝေခဌငá€șှ"</string>
-    <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"အဆကá€șá€Ąá€žá€œá€šá€șနဟင့á€ș ခေါá€șá€†á€­á€Żá€™á€Ÿá€Żá€™á€Ÿá€á€șတမá€șှ မျဟဝေရနá€ș သုံသသညá€ș"</string>
+    <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"အဆကá€șá€Ąá€žá€œá€šá€ș၊ ယခငá€șခေါá€șá€†á€­á€Żá€™á€Ÿá€Żá€™á€»á€Źá€ž မျဟဝေခဌငá€șှ"</string>
+    <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"အဆကá€șá€Ąá€žá€œá€šá€șနဟင့á€ș ယခငá€șခေါá€șá€†á€­á€Żá€™á€Ÿá€Żá€™á€»á€Źá€ž မျဟဝေရနá€ș သုံသသညá€ș"</string>
     <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"အငá€șတာနကá€șဆကá€șသလယá€șá€™á€Ÿá€Ż မျဟဝေခဌငá€șှ"</string>
     <string name="bluetooth_profile_map" msgid="8907204701162107271">"မိုဘိုငá€șှမကá€șဆေ့ဂျá€șမျဏသ"</string>
     <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€á€Œá€„á€șှ"</string>
@@ -166,8 +166,8 @@
     <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB á€žá€Żá€¶á€žáá€á€»á€­á€á€șဆကá€șခဌငá€șှ"</string>
     <string name="tether_settings_title_wifi" msgid="4803402057533895526">"á€›á€œá€±á€·á€œá€»á€Źá€žá€”á€­á€Żá€„á€șá€žá€±á€Źá€Ÿá€±á€Źá€·á€…á€•á€±á€«á€·"</string>
     <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"ဘလူှတုသá€șသုံသချိတá€șဆကá€șခဌငá€șှ"</string>
-    <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"မိုဘိုငá€șá€žá€žá€Żá€¶á€žá ချိတá€șဆကá€șခဌငá€șှ"</string>
-    <string name="tether_settings_title_all" msgid="8910259483383010470">"မိုဘိုငá€șှမိုဒမá€ș၊ á€Ÿá€±á€Źá€·á€…á€•á€±á€«á€·"</string>
+    <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"မိုဘိုငá€șá€žá€žá€Żá€¶á€žá€á€œá€Čချိတá€șခဌငá€șှ"</string>
+    <string name="tether_settings_title_all" msgid="8910259483383010470">"တဆင့á€șချိတá€șဆကá€șခဌငá€șှ၊ á€Ÿá€±á€Źá€·á€…á€•á€±á€«á€·"</string>
     <string name="managed_user_title" msgid="449081789742645723">"အလုပá€șသုံသဥကá€șပá€șá€™á€»á€Źá€žá€Ąá€Źá€žá€œá€Żá€¶á€ž"</string>
     <string name="unknown" msgid="3544487229740637809">"မသိ"</string>
     <string name="running_process_item_user_label" msgid="3988506293099805796">"á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€°- <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
@@ -220,7 +220,7 @@
     <string name="development_settings_summary" msgid="8718917813868735095">"á€Ąá€•á€œá€źá€€á€±á€žá€›á€Ÿá€„á€șှတိုှတကá€șá€™á€Ÿá€Żá€Ąá€á€œá€€á€ș ရလေသချယá€șá€™á€Ÿá€Żá€€á€­á€Żá€žá€á€șမဟတá€șသညá€ș"</string>
     <string name="development_settings_not_available" msgid="355070198089140951">"á€€á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€°á€Ąá€á€œá€€á€ș ဆေဏ့ဖá€șဝá€Čရေသသူ á€›á€œá€±á€žá€…á€›á€Źá€™á€»á€Źá€ž မရနိုငá€șပါ"</string>
     <string name="vpn_settings_not_available" msgid="2894137119965668920">"က á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€° á€Ąá€á€œá€€á€ș VPN ဆကá€șတငá€șမျဏသကို မရယူနိုငá€ș"</string>
-    <string name="tethering_settings_not_available" msgid="266821736434699780">"á€€á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€°á€Ąá€á€œá€€á€ș မိုဘိုငá€șá€žá€žá€Żá€¶á€žá ချိတá€șဆကá€șခဌငá€șှ ဆကá€șတငá€șမျဏသ မရနိုငá€șပါ"</string>
+    <string name="tethering_settings_not_available" msgid="266821736434699780">"က á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€° á€Ąá€á€œá€€á€ș ချိတá€șတလá€Čရေသ ဆကá€șတငá€șမျဏသကို မရယူနိုငá€ș"</string>
     <string name="apn_settings_not_available" msgid="1147111671403342300">"က á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€° á€Ąá€á€œá€€á€ș ဝငá€șá€œá€­á€Żá€žá€Šá€·á€ș နေရဏ အမညá€ș၏ ဆကá€șတငá€șမျဏသကို မရယူနိုငá€ș"</string>
     <string name="enable_adb" msgid="8072776357237289039">"USB á€Ąá€™á€Ÿá€Źá€žá€›á€Ÿá€Źá€á€Œá€„á€șှ"</string>
     <string name="enable_adb_summary" msgid="3711526030096574316">"USB နဟင့á€șချိတá€șá€‘á€Źá€žá€œá€»á€Ÿá€„á€ș á€Ąá€™á€Ÿá€Źá€žá€›á€Ÿá€Źá€–á€œá€±á€–á€šá€șá€›á€Ÿá€Źá€žá€™á€Ÿá€Żá€…á€”á€…á€ș စတငá€șရနá€ș"</string>
@@ -272,7 +272,7 @@
     <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi‑Fi á€›á€Ÿá€Źá€–á€œá€±á€á€Œá€„á€șှ ထိနá€șသချုပá€șá€™á€Ÿá€Ż"</string>
     <string name="wifi_non_persistent_mac_randomization" msgid="7482769677894247316">"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>
@@ -317,7 +317,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>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"ဥချိနá€șတိုှရနá€ș။"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"ဥချိနá€șá€œá€»á€Ÿá€±á€Źá€·á€›á€”á€ș။"</string>
     <string name="cancel" msgid="5665114069455378395">"မလုပá€șတေဏ့"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"á€•á€Œá€źá€žá€•á€Œá€ź"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"á€”á€Ÿá€­á€Żá€žá€…á€€á€șနဟင့á€ș သတိပေသချကá€șမျဏသ"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€°á€Ąá€žá€…á€ș ထည့á€șမလာှ။"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"နေဏကá€șထပá€ș á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€°á€™á€»á€Źá€ž ထည့á€șသလငá€șသခဌငá€șသဖဌင့á€ș ကစကá€șပစá€čစညá€șှကို á€Ąá€á€Œá€Źá€žá€žá€°á€™á€»á€Źá€žá€”á€Ÿá€„á€·á€ș á€™á€»á€Ÿá€á€±á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€”á€­á€Żá€„á€șသညá€ș။ á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€°á€á€­á€Żá€„á€șှသညá€ș မိမိတို့ကိုယá€șပိုငá€șနေရဏ ရရဟိမညá€șဖဌစá€șá€•á€Œá€źá€ž အကá€șပá€ș၊ နေဏကá€șá€á€¶á€•á€Żá€¶á€”á€Ÿá€„á€·á€ș á€Ąá€á€Œá€Źá€žá€Ąá€›á€Źá€á€­á€Żá€·á€–á€Œá€„á€·á€ș စိတá€șá€€á€Œá€­á€Żá€€á€șပဌငá€șဆငá€șနိုငá€șပါမညá€ș။ á€Ąá€Źá€žá€œá€Żá€¶á€žá€€á€­á€Ż ဥကျိုသသကá€șရေဏကá€șá€™á€Ÿá€Ż á€›á€Ÿá€­á€…á€±á€”á€­á€Żá€„á€șသည့á€ș Wi-Fi ကá€Č့သို့ ဆကá€șတငá€șá€™á€»á€Źá€žá€€á€­á€Żá€œá€Šá€șှ ချိနá€șá€Šá€Ÿá€­á€”á€­á€Żá€„á€șပါမညá€ș။\n\ná€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€°á€Ąá€žá€…á€ș ထည့á€șသည့á€șဥခါ ထိုသူသညá€ș မိမိ၏ကိုယá€șပိုငá€șနေရဏကို သတá€șမဟတá€șရပါမညá€ș။\n\ná€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€° မညá€șသူမဆို á€Ąá€á€Œá€Źá€žá€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€°á€™á€»á€Źá€žá€Ąá€á€œá€€á€ș အကá€șပá€șမျဏသကို အပá€șဒိတá€șလုပá€șနိုငá€șသညá€ș။ á€Ąá€™á€»á€Źá€žá€žá€Żá€¶á€žá€…á€œá€Čနိုငá€șá€™á€Ÿá€Żá€†á€€á€șတငá€șá€™á€»á€Źá€žá€”á€Ÿá€„á€·á€ș ဝနá€șဆေဏငá€șá€™á€Ÿá€Żá€™á€»á€Źá€žá€€á€­á€Ż á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€°á€Ąá€žá€…á€șထံသို့ လလဟá€Čá€•á€Œá€±á€Źá€„á€șသပေသမညá€ș မဟုတá€șပါ။"</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"သငá€șက á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€° အသစá€ș တစá€șဩှကို ထည့á€șá€•á€±á€žá€œá€­á€Żá€€á€șလျဟငá€ș၊ ထိုသူသညá€ș ၎ငá€șှ၏ နေရဏကို သတá€șမဟတá€șစြစဉá€șရနá€ș လိုအပá€șမညá€ș။\n\n á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€° မညá€șသူမဆို ကျနá€șá€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€° á€Ąá€Źá€žá€œá€Żá€¶á€žá€á€­á€Żá€·á€Ąá€á€œá€€á€ș အကá€șပá€șမျဏသကို အပá€șဒိတá€șလုပá€șပေသနိုငá€șသညá€ș။"</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€°á€€á€­á€Ż á€…á€źá€™á€¶á€žá€°á€œá€Żá€•á€șပိုငá€șခလင့á€șá€•á€±á€žá€™á€œá€Źá€žá‹"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"စဟမံခန့á€șခလá€Čá€žá€°á€Ąá€”á€±á€–á€Œá€„á€·á€ș á€Ąá€á€Œá€Źá€žá€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€°á€™á€»á€Źá€žá€€á€­á€Ż á€…á€źá€™á€¶á€á€Œá€„á€șှ၊ စကá€șပစá€čစညá€șှဆကá€șတငá€șမျဏသကို ပဌငá€șဆငá€șခဌငá€șသနဟင့á€ș စကá€șပစá€čစညá€șှကို စကá€șရုံထုတá€șအတိုငá€șှ ပဌငá€șဆငá€șသတá€șမဟတá€șခဌငá€șသတို့ á€•á€Œá€Żá€œá€Żá€•á€șနိုငá€șပါမညá€ș။"</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€°á€€á€­á€Ż ယခုသတá€șမဟတá€șမလာှ။"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"ထိုသူသညá€ș ကိရိယာကိုယူ၍ ၎ငá€șá€žá€á€­á€Żá€·áá€”á€±á€›á€Źá€™á€»á€Źá€žá€€á€­á€Ż ယခုသတá€șမဟတá€șနိုငá€șရမညá€ș"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ယခု ကိုယá€șရေသဥချကá€șအလကá€șကို á€Ąá€…á€źá€Ąá€™á€¶á€œá€Żá€•á€șမညá€șလာှ?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"၎ငá€șှသညá€ș ဧည့á€șသညá€ș စကá€șရဟငá€șအသစá€șကို စတငá€șမညá€șဖဌစá€șá€•á€Œá€źá€ž လကá€șရဟိစကá€șရဟငá€șမဟ အကá€șပá€șနဟင့á€ș á€’á€±á€á€Źá€Ąá€Źá€žá€œá€Żá€¶á€žá€€á€­á€Ż ဖျကá€șပါမညá€ș"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"ဧည့á€șသညá€șမုဒá€șမဟ ထလကá€șမလာှ။"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"၎ငá€șှသညá€ș လကá€șရဟိဧည့á€șသညá€ș စကá€șရဟငá€șမဟ အကá€șပá€șနဟင့á€ș á€’á€±á€á€Źá€Ąá€Źá€žá€œá€Żá€¶á€žá€€á€­á€Ż ဖျကá€șလိုကá€șပါမညá€ș"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"á€€á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€°á€€á€­á€Ż á€…á€źá€™á€¶á€žá€°á€œá€Żá€•á€șပိုငá€șခလင့á€șမျဏသ ပေသပါ"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€žá€°á€€á€­á€Ż á€…á€źá€™á€¶á€žá€°á€œá€Żá€•á€șပိုငá€șခလင့á€șမျဏသ မပေသပါနဟင့á€ș"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"ထလကá€șရနá€ș"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ဧည့á€șသညá€șလုပá€șဆေဏငá€șချကá€ș သိမá€șှမလာှ။"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"လကá€șရဟိစကá€șရဟငá€șမဟ လုပá€șဆေဏငá€șချကá€ș သိမá€șှနိုငá€șသညá€ș (သို့) အကá€șပá€șနဟင့á€ș á€’á€±á€á€Źá€Ąá€Źá€žá€œá€Żá€¶á€ž ဖျကá€șနိုငá€șသညá€ș"</string>
diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml
index c550e3e..18b1f50 100644
--- a/packages/SettingsLib/res/values-nb/strings.xml
+++ b/packages/SettingsLib/res/values-nb/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Mer tid."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Mindre tid."</string>
     <string name="cancel" msgid="5665114069455378395">"Avbryt"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Ferdig"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmer og påminnelser"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Vil du legge til en ny bruker?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Du kan dele denne enheten med andre folk ved å opprette flere brukere. Hver bruker har sin egen plass de kan tilpasse med apper, bakgrunner og annet. Brukere kan også justere enhetsinnstillinger, for eksempel Wifi, som påvirker alle.\n\nNår du legger til en ny bruker, må vedkommende angi innstillinger for plassen sin.\n\nAlle brukere kan oppdatere apper for alle andre brukere. Innstillinger og tjenester for tilgjengelighet overføres kanskje ikke til den nye brukeren."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Når du legger til en ny bruker, må hen konfigurere sitt eget område.\n\nAlle brukere kan oppdatere apper for alle andre brukere."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Gi administratorrettigheter?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Som administrator kan hen administrere andre brukere, endre enhetsinnstillinger og tilbakestille enheten til fabrikkstandard."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Vil du konfigurere brukeren?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Sørg for at brukeren er tilgjengelig for å konfigurere området sitt på enheten"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Vil du konfigurere profilen nå?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Dette starter en ny gjesteøkt og sletter alle apper og data fra den gjeldende økten"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Vil du avslutte gjestemodus?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Dette sletter apper og data fra den gjeldende gjesteøkten"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Gi denne brukeren administratorrettigheter"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Ikke gi brukeren administratorrettigheter"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Avslutt"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Vil du lagre gjesteaktivitet?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Du kan lagre aktivitet fra den gjeldende økten eller slette alle apper og data"</string>
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index 9421e71..140fdcb 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -106,9 +106,9 @@
     <string name="bluetooth_profile_headset" msgid="5395952236133499331">"à€«à„‹à€š à€•à€Čà€čà€°à„‚"</string>
     <string name="bluetooth_profile_opp" msgid="6692618568149493430">"à€«à€Ÿà€‡à€Č à€žà„à€„à€Ÿà€šà€Ÿà€šà„à€€à€°à€Ł"</string>
     <string name="bluetooth_profile_hid" msgid="2969922922664315866">"à€‡à€šà€Șà„à€Ÿ à€‰à€Șà€•à€°à€Ł"</string>
-    <string name="bluetooth_profile_pan" msgid="1006235139308318188">"à€‡à€šà„à€Ÿà€°à€šà„‡à€Ÿ à€à€•à„à€žà„‡à€ž"</string>
-    <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"à€•à€šà„à€Ÿà„à€Żà€Ÿà€•à„à€Ÿ à€° à€•à€Č à€čà€żà€žà„à€Ÿà„à€°à„€ à€žà„‡à€Żà€° à€—à€°à„à€šà„‡"</string>
-    <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"à€•à€šà„à€Ÿà„à€Żà€Ÿà€•à„à€Ÿ à€° à€•à€Č à€čà€żà€žà„à€Ÿà„à€°à„€ à€žà„‡à€Żà€° à€—à€°à„à€š à€Șà„à€°à€Żà„‹à€— à€—à€°à€żà€Żà„‹à€žà„"</string>
+    <string name="bluetooth_profile_pan" msgid="1006235139308318188">"à€‡à€šà„à€Ÿà€°à€šà„‡à€Ÿ à€Șà€čà„à€à€š"</string>
+    <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"à€•à€šà„à€Ÿà„à€Żà€Ÿà€•à„à€Ÿ à€° à€•à€Čà€•à„‹ à€‡à€€à€żà€čà€Ÿà€ž à€žà„‡à€Żà€° à€—à€°à„à€šà„‡"</string>
+    <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"à€•à€šà„à€Ÿà„à€Żà€Ÿà€•à„à€Ÿ à€° à€•à€Čà€•à„‹ à€‡à€€à€żà€čà€Ÿà€ž à€žà„‡à€Żà€° à€—à€°à„à€š à€Șà„à€°à€Żà„‹à€— à€—à€°à€żà€Żà„‹à€žà„"</string>
     <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"à€‡à€šà„à€Ÿà€°à€šà„‡à€Ÿ à€œà€Ąà€Ÿà€š à€žà€Ÿà€à„‡à€Šà€Ÿà€°à„€ à€—à€°à„à€Šà„ˆ"</string>
     <string name="bluetooth_profile_map" msgid="8907204701162107271">"à€Ÿà„‡à€•à„à€žà„à€Ÿ à€źà„à€Żà€Ÿà€žà„‡à€œà€čà€°à„‚"</string>
     <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM à€Șà€čà„à€à€š"</string>
@@ -123,7 +123,7 @@
     <string name="bluetooth_opp_profile_summary_connected" msgid="2393521801478157362">"à€«à€Ÿà€‡à€Č à€Ÿà„à€°à€Ÿà€šà„à€žà€«à€° à€žà€°à„à€­à€°à€źà€Ÿ à€œà€Ąà€Ÿà€š à€—à€°à€żà€Żà„‹"</string>
     <string name="bluetooth_map_profile_summary_connected" msgid="4141725591784669181">"à€šà€•à„à€žà€Ÿà€žà€à€— à€œà€Ąà€żà€€"</string>
     <string name="bluetooth_sap_profile_summary_connected" msgid="1280297388033001037">"SAP à€źà€Ÿ à€œà€Ąà€żà€€"</string>
-    <string name="bluetooth_opp_profile_summary_not_connected" msgid="3959741824627764954">"à€«à€Ÿà€‡à€Č à€Ÿà„à€°à€Ÿà€šà„à€žà€«à€° à€žà€°à„à€­à€°à€žà€à€— à€•à€šà„‡à€•à„à€Ÿ à€—à€°à€żà€à€•à„‹ à€›à„ˆà€š"</string>
+    <string name="bluetooth_opp_profile_summary_not_connected" msgid="3959741824627764954">"à€«à€Ÿà€‡à€Č à€Ÿà„à€°à€Ÿà€šà„à€žà€«à€° à€žà€°à„à€­à€°à€žà€à€— à€œà€Ąà€Ÿà€š à€—à€°à€żà€à€•à„‹ à€›à„ˆà€š"</string>
     <string name="bluetooth_hid_profile_summary_connected" msgid="3923653977051684833">"à€‡à€šà€Șà„à€Ÿ à€‰à€Șà€•à€°à€Łà€žà€à€— à€œà„‹à€Ąà€żà€à€•à„‹ à€›"</string>
     <string name="bluetooth_pan_user_profile_summary_connected" msgid="380469653827505727">"à€‡à€šà„à€Ÿà€°à€šà„‡à€Ÿà€źà€Ÿà€„à€żà€•à„‹ à€Șà€čà„à€à€šà€•à€Ÿ à€Čà€Ÿà€—à€ż à€Ąà€żà€­à€Ÿà€‡à€žà€źà€Ÿ à€œà€Ąà€Ÿà€š à€—à€°à€żà€Żà„‹"</string>
     <string name="bluetooth_pan_nap_profile_summary_connected" msgid="3744773111299503493">"à€Żà€šà„à€€à„à€°à€žà€à€— à€žà„à€„à€Ÿà€šà„€à€Ż à€‡à€šà„à€Ÿà€°à€šà„‡à€Ÿ à€œà€Ąà€Ÿà€š à€žà€Ÿà€à€Ÿ à€—à€°à„à€Šà„ˆ"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"à€„à€Ș à€žà€źà€Żà„€"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"à€•à€ź à€žà€źà€Żà„€"</string>
     <string name="cancel" msgid="5665114069455378395">"à€°à€Šà„à€Š à€—à€°à„à€šà„à€čà„‹à€žà„"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"à€ à€żà€• à€›"</string>
     <string name="done" msgid="381184316122520313">"à€žà€źà„à€Șà€šà„à€š à€­à€Żà„‹"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"à€…à€Čà€Ÿà€°à„à€ź à€° à€°à€żà€źà€Ÿà€‡à€šà„à€Ąà€°à€čà€°à„‚"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"à€šà€Żà€Ÿà€ à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿ à€„à€Șà„à€šà„‡ à€čà„‹?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"à€€à€Șà€Ÿà€ˆà€‚ à€„à€Ș à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿà€čà€°à„‚ à€žà€żà€°à„à€œà€šà€Ÿ à€—à€°à„‡à€° à€€à„€ à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿà€Čà€Ÿà€ˆ à€Żà„‹ à€Ąà€żà€­à€Ÿà€‡à€ž à€Șà„à€°à€Żà„‹à€— à€—à€°à„à€š à€Šà€żà€š à€žà€•à„à€šà„à€čà„à€šà„à€›à„€ à€čà€°à„‡à€• à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿà€•à„‹ à€†à€«à„à€šà„ˆ à€ à€Ÿà€‰à€ à€čà„à€šà„à€›à„€ à€‰à€šà„€à€čà€°à„‚ à€Żà„‹ à€ à€Ÿà€‰à€à€źà€Ÿ à€†à€«à„à€šà„ˆ à€à€Ș, à€”à€Ÿà€Čà€Șà„‡à€Șà€° à€†à€Šà€żà€•à€Ÿ à€Čà€Ÿà€—à€ż à€Șà„à€°à€Żà„‹à€— à€—à€°à„à€š à€žà€•à„à€›à€šà„à„€ à€‰à€šà„€à€čà€°à„‚ à€žà€Źà„ˆà€œà€šà€Ÿà€Čà€Ÿà€ˆ à€…à€žà€° à€Șà€Ÿà€°à„à€šà„‡ Wi-Fi à€œà€žà„à€€à€Ÿ à€Ąà€żà€­à€Ÿà€‡à€žà€•à€Ÿ à€žà„‡à€Ÿà€żà€™à€čà€°à„‚ à€Șà€šà€ż à€Șà€°à€żà€”à€°à„à€€à€š à€—à€°à„à€š à€žà€•à„à€›à€šà„à„€\n\nà€€à€Șà€Ÿà€ˆà€‚à€Čà„‡ à€šà€Żà€Ÿà€ à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿ à€„à€Șà„à€Šà€Ÿ à€‰à€•à„à€€ à€”à„à€Żà€•à„à€€à€żà€Čà„‡ à€†à€«à„à€šà„‹ à€ à€Ÿà€‰à€ à€žà„‡à€Ÿà€…à€Ș à€—à€°à„à€šà„ à€Șà€°à„à€šà„‡ à€čà„à€šà„à€›à„€\n\nà€žà€Źà„ˆ à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿ à€…à€šà„à€Ż à€žà€Źà„ˆ à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿà€Čà„‡ à€Șà„à€°à€Żà„‹à€— à€—à€°à„à€šà„‡ à€à€Șà€čà€°à„‚ à€…à€Šà„à€Żà€Ÿà€”à€§à€żà€• à€—à€°à„à€š à€žà€•à„à€›à€šà„à„€ à€€à€° à€Șà€čà„à€à€šà€žà€źà„à€Źà€šà„à€§à„€ à€žà„‡à€Ÿà€żà€™ à€€à€„à€Ÿ à€žà„‡à€”à€Ÿà€čà€°à„‚ à€šà€Żà€Ÿà€ à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿà€źà€Ÿ à€šà€žà€°à„à€š à€žà€•à„à€›à„€"</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"à€€à€Șà€Ÿà€ˆà€‚à€Čà„‡ à€šà€Żà€Ÿà€ à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿ à€„à€Șà„à€šà„à€­à€Żà„‹ à€­à€šà„‡ à€€à„€ à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿà€Čà„‡ à€†à€«à„à€šà„‹ à€žà„à€Șà„‡à€ž à€žà„‡à€Ÿ à€—à€°à„à€šà„ à€Șà€°à„à€šà„‡ à€čà„à€šà„à€›à„€\n\nà€žà€Źà„ˆ à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿà€Čà„‡ à€…à€°à„‚ à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿà€•à€Ÿ à€à€Șà€čà€°à„‚ à€…à€Șà€Ąà„‡à€Ÿ à€—à€°à„à€š à€žà€•à„à€›à€šà„à„€"</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"à€Żà„€ à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿà€Čà€Ÿà€ˆ à€à€Ąà„à€źà€żà€šà€Čà„‡ à€Șà€Ÿà€‰à€šà„‡ à€”à€żà€¶à„‡à€·à€Ÿà€§à€żà€•à€Ÿà€° à€Šà€żà€šà„‡ à€čà„‹?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"à€‰à€čà€Ÿà€ à€à€Ąà„à€źà€żà€šà€•à€Ÿ à€čà„ˆà€žà€żà€Żà€€à€Čà„‡ à€…à€šà„à€Ż à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿà€čà€°à„‚ à€”à„à€Żà€”à€žà„à€„à€Ÿà€Șà€š à€—à€°à„à€š, à€Ąà€żà€­à€Ÿà€‡à€žà€•à€Ÿ à€žà„‡à€Ÿà€żà€™ à€Źà€Šà€Čà„à€š à€° à€Ąà€żà€­à€Ÿà€‡à€ž à€«à„à€Żà€Ÿà€•à„à€Ÿà„à€°à„€ à€°à€żà€žà„‡à€Ÿ à€—à€°à„à€š à€žà€•à„à€šà„ à€čà„à€šà„‡ à€›à„€"</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"à€…à€čà€żà€Čà„‡ à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿ à€žà„‡à€Ÿà€…à€Ș à€—à€°à„à€šà„‡ à€čà„‹?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"à€Żà„€ à€”à„à€Żà€•à„à€€à€ż à€Żà€šà„à€€à„à€° à€Żà„‹ à€Ąà€żà€­à€Ÿà€‡à€ž à€šà€Čà€Ÿà€‰à€š à€° à€†à€«à„à€šà„‹ à€ à€Ÿà€‰à€ à€žà„‡à€Ÿ à€—à€°à„à€š à€‰à€Șà€Čà€Źà„à€§ à€›à€šà„ à€­à€šà„à€šà„‡ à€•à„à€°à€Ÿ à€žà„à€šà€żà€¶à„à€šà€żà€€ à€—à€°à„à€šà„à€čà„‹à€žà„"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"à€…à€čà€żà€Čà„‡ à€Șà„à€°à„‹à€«à€Ÿà€‡à€Č à€žà„‡à€Ÿà€…à€Ș à€—à€°à„à€šà„‡ à€čà„‹?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"à€Żà€žà„‹ à€—à€°à„à€šà€Ÿà€Čà„‡ à€šà€Żà€Ÿà€ à€…à€€à€żà€„à€ż à€žà€€à„à€° à€žà„à€°à„ à€čà„à€šà„‡ à€› à€° à€čà€Ÿà€Čà€•à„‹ à€…à€€à€żà€„à€ż à€žà€€à„à€°à€•à€Ÿ à€žà€Źà„ˆ à€à€Ș à€€à€„à€Ÿ à€Ąà„‡à€Ÿà€Ÿ à€źà„‡à€Ÿà€żà€šà„‡ à€›"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"à€…à€€à€żà€„à€ż à€źà„‹à€Ąà€Źà€Ÿà€Ÿ à€Źà€Ÿà€čà€żà€°à€żà€šà„‡ à€čà„‹?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"à€Żà€žà„‹ à€—à€°à„à€šà€Ÿà€Čà„‡ à€čà€Ÿà€Čà€•à„‹ à€…à€€à€żà€„à€ż à€žà€€à„à€°à€•à€Ÿ à€à€Ș à€€à€„à€Ÿ à€Ąà„‡à€Ÿà€Ÿ à€źà„‡à€Ÿà€żà€šà„‡ à€›"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"à€Żà„€ à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿà€Čà€Ÿà€ˆ à€à€Ąà„à€źà€żà€šà€Čà„‡ à€Șà€Ÿà€‰à€šà„‡ à€”à€żà€¶à„‡à€·à€Ÿà€§à€żà€•à€Ÿà€° à€Šà€żà€šà„à€čà„‹à€žà„"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"à€Żà„€ à€Șà„à€°à€Żà„‹à€—à€•à€°à„à€€à€Ÿà€Čà€Ÿà€ˆ à€à€Ąà„à€źà€żà€šà€Čà„‡ à€Șà€Ÿà€‰à€šà„‡ à€”à€żà€¶à„‡à€·à€Ÿà€§à€żà€•à€Ÿà€° à€šà€Šà€żà€šà„à€čà„‹à€žà„"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"à€Źà€Ÿà€čà€żà€°à€żà€šà„à€čà„‹à€žà„"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"à€…à€€à€żà€„à€ż à€žà€€à„à€°à€źà€Ÿ à€—à€°à€żà€à€•à€Ÿ à€•à„à€°à€żà€Żà€Ÿà€•à€Čà€Ÿà€Ș à€žà„‡à€­ à€—à€°à„à€šà„‡ à€čà„‹?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"à€€à€Șà€Ÿà€ˆà€‚ à€čà€Ÿà€Čà€•à„‹ à€žà€€à„à€°à€źà€Ÿ à€—à€°à€żà€à€•à€Ÿ à€•à„à€°à€żà€Żà€Ÿà€•à€Čà€Ÿà€Ș à€žà„‡à€­ à€—à€°à„à€š à€”à€Ÿ à€žà€Źà„ˆ à€à€Ș à€€à€„à€Ÿ à€Ąà„‡à€Ÿà€Ÿ à€źà„‡à€Ÿà€Ÿà€‰à€š à€žà€•à„à€šà„à€čà„à€šà„à€›"</string>
diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml
index 2cad755c..64ee7ede 100644
--- a/packages/SettingsLib/res/values-nl/strings.xml
+++ b/packages/SettingsLib/res/values-nl/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Meer tijd."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Minder tijd."</string>
     <string name="cancel" msgid="5665114069455378395">"Annuleren"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Klaar"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Wekkers en herinneringen"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Nieuwe gebruiker toevoegen?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Je kunt dit apparaat met anderen delen door extra gebruikers te maken. Elke gebruiker heeft een eigen profiel met zelf gekozen apps, achtergrond, enzovoort. Gebruikers kunnen ook apparaatinstellingen aanpassen die van invloed zijn op alle gebruikers, zoals wifi.\n\nWanneer je een nieuwe gebruiker toevoegt, moet die persoon een eigen profiel instellen.\n\nElke gebruiker kan apps updaten voor alle andere gebruikers. Toegankelijkheidsinstellingen en -services worden mogelijk niet overgezet naar de nieuwe gebruiker."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Wanneer je een nieuwe gebruiker toevoegt, moet die persoon hun eigen profiel instellen.\n\nElke gebruiker kan apps updaten voor alle andere gebruikers."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Deze gebruiker beheerdersrechten geven?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Als beheerder kan deze persoon andere gebruikers beheren, apparaatinstellingen aanpassen en het apparaat terugzetten op de fabrieksinstellingen."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Gebruiker nu instellen?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Zorg ervoor dat de persoon het apparaat kan overnemen om een profiel in te stellen"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profiel nu instellen?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Hiermee start een nieuwe gastsessie en worden alle apps en gegevens van de huidige sessie verwijderd"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Gastmodus sluiten?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Hierdoor worden apps en gegevens van de huidige gastsessie verwijderd"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Deze gebruiker beheerdersrechten geven"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Gebruiker geen beheerdersrechten geven"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Sluiten"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Gastactiviteit opslaan?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Sla activiteit van de huidige sessie op of verwijder alle apps en gegevens"</string>
diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml
index 2c667c3..b68c1f0 100644
--- a/packages/SettingsLib/res/values-or/strings.xml
+++ b/packages/SettingsLib/res/values-or/strings.xml
@@ -141,7 +141,7 @@
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"àŹŹàŹŸàŹ€àŹżàŹČ àŹ•àŹ°àŹšà­àŹ€à­"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"àŹȘà­‡à­ŸàŹŸàŹ°àŹżàŹ‚ àŹ«àŹłàŹ°à­‡ àŹžàŹ‚àŹŻà­àŹ•à­àŹ€ àŹ„àŹżàŹŹàŹŸ àŹŹà­‡àŹłà­‡ àŹ†àŹȘàŹŁàŹ™à­àŹ• àŹžàŹźà­àŹȘàŹ°à­àŹ•àŹ—à­àŹĄàŹŒàŹżàŹ•à­ àŹàŹŹàŹ‚ àŹ•àŹČ୍‌àŹ° àŹ‡àŹ€àŹżàŹŹà­ƒàŹ€àŹżàŹ•à­ àŹ†àŹ•àŹžà­‡àŹžà­‌ àŹźàŹžà­àŹœà­àŹ° àŹčà­àŹà„€"</string>
     <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> àŹžàŹč àŹȘà­‡à­ŸàŹŸàŹ°à­‌ àŹ•àŹ°àŹżàŹčେàŹČàŹŸ àŹšàŹŸàŹčàŹżàŹà„€"</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"àŹàŹ• àŹ­à­àŹČ PIN àŹ•àŹżàŹźà­àŹŹàŹŸ àŹȘàŹŸàŹžàŹ•à­€ àŹ„àŹżàŹŹàŹŸ àŹŻà­‹àŹ—à­àŹ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> àŹžàŹč àŹȘà­‡à­ŸàŹŸàŹ° àŹ•àŹ°àŹżàŹȘàŹŸàŹ°àŹżàŹČàŹŸ àŹšàŹŸàŹčàŹżàŹà„€"</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"àŹàŹ• àŹ­à­àŹČ୍‌ PIN àŹ•àŹżàŹźà­àŹŹàŹŸ àŹȘàŹŸàŹžàŹ•à­€ àŹ•àŹŸàŹ°àŹŁàŹ°à­ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> àŹžàŹč àŹȘà­‡à­ŸàŹŸàŹ°à­‌ àŹ•àŹ°àŹżàŹȘàŹŸàŹ°àŹżàŹČàŹŸ àŹšàŹŸàŹčàŹżàŹà„€"</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> àŹžàŹč àŹŻà­‹àŹ—àŹŸàŹŻà­‹àŹ— àŹžà­àŹ„àŹŸàŹȘàŹšàŹŸ àŹ•àŹ°àŹżàŹȘàŹŸàŹ°à­àŹšàŹŸàŹčàŹżàŹà„€"</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> àŹŠà­à­±àŹŸàŹ°àŹŸ àŹȘà­‡à­ŸàŹŸàŹ°àŹżàŹ™à­àŹ— àŹȘàŹŸàŹ‡àŹ àŹȘà­àŹ°àŹ€à­à­ŸàŹŸàŹ–à­à­ŸàŹŸàŹš àŹ•àŹ°àŹżàŹŠàŹżàŹ†àŹ—àŹČàŹŸà„€"</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"àŹ•àŹźà­àŹȘà­à­Ÿà­àŹŸàŹ°à­"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"àŹ…àŹ§àŹżàŹ• àŹžàŹźà­Ÿà„€"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"àŹ•àŹźà­ àŹžàŹźà­Ÿà„€"</string>
     <string name="cancel" msgid="5665114069455378395">"àŹŹàŹŸàŹ€àŹżàŹČ"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"àŹ àŹżàŹ•à­‌ àŹ…àŹ›àŹż"</string>
     <string name="done" msgid="381184316122520313">"àŹčà­‹àŹ‡àŹ—àŹČàŹŸ"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"àŹ†àŹČàŹŸàŹ°àŹŸàŹźà­ àŹàŹŹàŹ‚ àŹ°àŹżàŹźàŹŸàŹ‡àŹŁà­àŹĄàŹ°àŹ—à­àŹĄàŹŒàŹżàŹ•"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"àŹšà­‚àŹ€àŹš àŹ‰àŹȘàŹŻà­‹àŹ—àŹ•àŹ°à­àŹ€à­àŹ€àŹŸàŹ™à­àŹ•à­ àŹŻà­‹àŹ— àŹ•àŹ°àŹżàŹŹà­‡?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"àŹ…àŹ€àŹżàŹ°àŹżàŹ•à­àŹ€ àŹ‰àŹȘàŹŻà­‹àŹ—àŹ•àŹ°à­àŹ€à­àŹ€àŹŸ àŹŻà­‹àŹ— àŹ•àŹ°àŹż àŹ†àŹȘàŹŁ àŹàŹčàŹż àŹĄàŹżàŹ­àŹŸàŹ‡àŹžàŹ•à­ àŹ…àŹšà­à­Ÿ àŹČà­‹àŹ•àŹźàŹŸàŹšàŹ™à­àŹ• àŹžàŹčàŹżàŹ€ àŹžà­‡à­ŸàŹŸàŹ° àŹ•àŹ°àŹżàŹȘàŹŸàŹ°àŹżàŹŹà­‡à„€ àŹȘà­àŹ°àŹ€à­à­Ÿà­‡àŹ• àŹ‰àŹȘàŹŻà­‹àŹ—àŹ•àŹ°à­àŹ€à­àŹ€àŹŸàŹ™à­àŹ• àŹšàŹżàŹœàŹ° àŹžà­àŹȘà­‡àŹžà­ àŹ…àŹ›àŹż àŹŻàŹŸàŹčàŹŸàŹ•à­ àŹžà­‡àŹźàŹŸàŹšà­‡ àŹ†àŹȘ, à­±àŹŸàŹČàŹȘେàŹȘàŹ°à­ àŹ“ àŹàŹȘàŹ°àŹż àŹ…àŹšà­‡àŹ• àŹ•àŹżàŹ›àŹż àŹžàŹčàŹżàŹ€ àŹ•àŹ·à­àŹŸàŹźàŹŸàŹ‡àŹœ àŹ•àŹ°àŹżàŹȘàŹŸàŹ°àŹżàŹŹà­‡à„€ àŹ‰àŹȘàŹŻà­‹àŹ—àŹ•àŹ°à­àŹ€à­àŹ€àŹŸ à­±àŹŸàŹ‡-àŹ«àŹŸàŹ‡ àŹ­àŹłàŹż àŹĄàŹżàŹ­àŹŸàŹ‡àŹž àŹžà­‡àŹŸàŹżàŹ‚àŹžàŹ•à­ àŹźàŹ§à­à­Ÿ àŹ†àŹĄàŹœàŹ·à­àŹŸ àŹ•àŹ°àŹżàŹȘàŹŸàŹ°àŹżàŹŹà­‡ àŹŻàŹŸàŹčàŹŸ àŹžàŹźàŹžà­àŹ€àŹ™à­àŹ•à­ àŹȘà­àŹ°àŹ­àŹŸàŹŹàŹżàŹ€ àŹ•àŹ°àŹżàŹ„àŹŸàŹà„€ \n\nàŹŻà­‡àŹ€à­‡àŹŹà­‡àŹłà­‡ àŹ†àŹȘàŹŁ àŹ—à­‹àŹŸàŹżàŹ àŹšà­‚àŹ† àŹ‰àŹȘàŹŻà­‹àŹ—àŹ•àŹ°à­àŹ€à­àŹ€àŹŸàŹ™à­àŹ•à­ àŹŻà­‹àŹ— àŹ•àŹ°àŹżàŹŹà­‡, àŹžà­‡àŹ€à­‡àŹŹà­‡àŹłà­‡ àŹžà­‡àŹčàŹż àŹŹà­à­ŸàŹ•à­àŹ€àŹżàŹ™à­àŹ•à­ àŹšàŹżàŹœàŹ° àŹžà­àŹȘà­‡àŹžà­‌àŹ•à­ àŹžà­‡àŹŸ‌àŹ…àŹȘ àŹ•àŹ°àŹżàŹŹàŹŸàŹ•à­ àŹȘàŹĄàŹŒàŹżàŹŹà„€ \n\nàŹ…àŹšà­à­Ÿ àŹ‰àŹȘàŹŻà­‹àŹ—àŹ•àŹ°à­àŹ€à­àŹ€àŹŸàŹ™à­àŹ• àŹȘàŹŸàŹ‡àŹ àŹŻà­‡ àŹ•à­ŒàŹŁàŹžàŹż àŹ‰àŹȘàŹŻà­‹àŹ—àŹ•àŹ°à­àŹ€à­àŹ€àŹŸ àŹ†àŹȘàŹ•à­ àŹ…àŹȘàŹĄà­‡àŹŸ àŹ•àŹ°àŹżàŹȘàŹŸàŹ°àŹżàŹŹà­‡à„€ àŹ†àŹ•à­àŹžà­‡àŹžàŹżàŹŹàŹżàŹČàŹżàŹŸà­€ àŹžà­‡àŹŸàŹżàŹ‚àŹž àŹàŹŹàŹ‚ àŹžà­‡àŹŹàŹŸàŹ—à­àŹĄàŹŒàŹżàŹ• àŹšà­‚àŹ† àŹ‰àŹȘàŹŻà­‹àŹ—àŹ•àŹ°à­àŹ€à­àŹ€àŹŸàŹ™à­àŹ•à­ àŹžà­àŹ„àŹŸàŹšàŹŸàŹšà­àŹ€àŹ° àŹčୋ‌àŹ‡àŹšàŹȘàŹŸàŹ°à­‡à„€"</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"àŹ†àŹȘàŹŁ àŹœàŹŁà­‡ àŹšà­‚àŹ† àŹ‰àŹȘàŹŻà­‹àŹ—àŹ•àŹ°à­àŹ€à­àŹ€àŹŸàŹ™à­àŹ•à­ àŹŻà­‹àŹ— àŹ•àŹ°àŹżàŹŹàŹŸ àŹŹà­‡àŹłà­‡, àŹžà­‡àŹčàŹż àŹŹà­à­ŸàŹ•à­àŹ€àŹżàŹ™à­àŹ•à­ àŹ€àŹŸàŹ™à­àŹ• àŹžà­àŹȘà­‡àŹž àŹžà­‡àŹŸ àŹ…àŹȘ àŹ•àŹ°àŹżàŹŹàŹŸàŹ•à­ àŹȘàŹĄàŹŒàŹżàŹŹà„€\n\nàŹ…àŹšà­à­Ÿ àŹžàŹźàŹžà­àŹ€ àŹ‰àŹȘàŹŻà­‹àŹ—àŹ•àŹ°à­àŹ€à­àŹ€àŹŸàŹ™à­àŹ• àŹȘàŹŸàŹ‡àŹ, àŹ†àŹȘàŹ—à­àŹĄàŹŒàŹżàŹ•à­ àŹŻà­‡ àŹ•à­ŒàŹŁàŹžàŹż àŹ‰àŹȘàŹŻà­‹àŹ—àŹ•àŹ°à­àŹ€à­àŹ€àŹŸ àŹ…àŹȘàŹĄà­‡àŹŸ àŹ•àŹ°àŹżàŹȘàŹŸàŹ°àŹżàŹŹà­‡à„€"</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"àŹàŹčàŹż à­Ÿà­àŹœàŹ°àŹ™à­àŹ•à­ àŹ†àŹĄàŹźàŹżàŹš àŹŹàŹżàŹ¶à­‡àŹ· àŹ…àŹ§àŹżàŹ•àŹŸàŹ°àŹ—à­àŹĄàŹŒàŹżàŹ• àŹŠà­‡àŹŹà­‡?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"àŹœàŹŁà­‡ àŹ†àŹĄàŹźàŹżàŹš àŹ­àŹŸàŹŹàŹ°à­‡, àŹžà­‡àŹźàŹŸàŹšà­‡ àŹ…àŹšà­à­Ÿ à­Ÿà­àŹœàŹ°àŹźàŹŸàŹšàŹ™à­àŹ•à­ àŹȘàŹ°àŹżàŹšàŹŸàŹłàŹšàŹŸ àŹ•àŹ°àŹżàŹŹàŹŸ, àŹĄàŹżàŹ­àŹŸàŹ‡àŹž àŹžà­‡àŹŸàŹżàŹ‚àŹžàŹ•à­ àŹȘàŹ°àŹżàŹŹàŹ°à­àŹ€à­àŹ€àŹš àŹ•àŹ°àŹżàŹŹàŹŸ àŹàŹŹàŹ‚ àŹĄàŹżàŹ­àŹŸàŹ‡àŹžàŹ•à­ àŹ«à­‡àŹ•à­àŹŸà­‹àŹ°à­€ àŹ°àŹżàŹžà­‡àŹŸ àŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ àŹžàŹ•à­àŹ·àŹź àŹčà­‡àŹŹà­‡à„€"</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"àŹàŹŹà­‡ àŹ‰àŹȘàŹŻà­‹àŹ—àŹ•àŹ°à­àŹ€à­àŹ€àŹŸ àŹžà­‡àŹŸàŹ…àŹȘ àŹ•àŹ°àŹżàŹŹà­‡?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"àŹžà­àŹšàŹżàŹ¶à­àŹšàŹżàŹ€ àŹ•àŹ°àŹšà­àŹ€à­ àŹŻà­‡, àŹŹà­à­ŸàŹ•à­àŹ€àŹż àŹœàŹŁàŹ• àŹĄàŹżàŹ­àŹŸàŹ‡àŹžà­‌ àŹ“ àŹšàŹżàŹœàŹ° àŹžà­àŹ„àŹŸàŹš àŹžà­‡àŹŸàŹ…àŹȘ୍‌ àŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ àŹ‰àŹȘàŹČàŹŹà­àŹ§ àŹ…àŹ›àŹšà­àŹ€àŹżà„€"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"àŹȘà­àŹ°à­‹àŹ«àŹŸàŹ‡àŹČ୍‌àŹ•à­ àŹàŹŹà­‡ àŹžà­‡àŹŸà­‌ àŹ•àŹ°àŹżàŹŹà­‡?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"àŹàŹčàŹŸ àŹàŹ• àŹšà­‚àŹ† àŹ…àŹ€àŹżàŹ„àŹż àŹžà­‡àŹžàŹš àŹ†àŹ°àŹźà­àŹ­ àŹ•àŹ°àŹżàŹŹ àŹàŹŹàŹ‚ àŹŹàŹ°à­àŹ€à­àŹ€àŹźàŹŸàŹšàŹ° àŹžà­‡àŹžàŹšàŹ°à­ àŹžàŹźàŹžà­àŹ€ àŹ†àŹȘà­àŹž àŹàŹŹàŹ‚ àŹĄàŹŸàŹŸàŹŸàŹ•à­ àŹĄàŹżàŹČàŹżàŹŸ àŹ•àŹ°àŹżàŹŹ"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"àŹ…àŹ€àŹżàŹ„àŹż àŹźà­‹àŹĄàŹ°à­ àŹŹàŹŸàŹčàŹŸàŹ°àŹż àŹŻàŹżàŹŹà­‡?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"àŹàŹčàŹŸ àŹŹàŹ°à­àŹ€à­àŹ€àŹźàŹŸàŹšàŹ° àŹ…àŹ€àŹżàŹ„àŹż àŹžà­‡àŹžàŹšàŹ°à­ àŹ†àŹȘà­àŹž àŹàŹŹàŹ‚ àŹĄàŹŸàŹŸàŹŸàŹ•à­ àŹĄàŹżàŹČàŹżàŹŸ àŹ•àŹ°àŹżàŹŹ"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"àŹàŹčàŹż à­Ÿà­àŹœàŹ°àŹ™à­àŹ•à­ àŹ†àŹĄàŹźàŹżàŹš àŹŹàŹżàŹ¶à­‡àŹ· àŹ…àŹ§àŹżàŹ•àŹŸàŹ°àŹ—à­àŹĄàŹŒàŹżàŹ• àŹŠàŹżàŹ…àŹšà­àŹ€à­"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"à­Ÿà­àŹœàŹ°àŹ™à­àŹ•à­ àŹ†àŹĄàŹźàŹżàŹš àŹŹàŹżàŹ¶à­‡àŹ· àŹ…àŹ§àŹżàŹ•àŹŸàŹ°àŹ—à­àŹĄàŹŒàŹżàŹ• àŹŠàŹżàŹ…àŹšà­àŹ€à­ àŹšàŹŸàŹčàŹżàŹ"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"àŹŹàŹŸàŹčàŹŸàŹ°àŹż àŹŻàŹŸàŹ†àŹšà­àŹ€à­"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"àŹ…àŹ€àŹżàŹ„àŹż àŹ•àŹŸàŹ°à­àŹŻà­à­ŸàŹ•àŹłàŹŸàŹȘ àŹžà­‡àŹ­ àŹ•àŹ°àŹżàŹŹà­‡?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"àŹ†àŹȘàŹŁ àŹàŹŹà­‡àŹ° àŹžà­‡àŹžàŹšàŹ°à­ àŹ•àŹŸàŹ°à­àŹŻà­à­ŸàŹ•àŹłàŹŸàŹȘàŹ•à­ àŹžà­‡àŹ­ àŹ•àŹ°àŹżàŹȘàŹŸàŹ°àŹżàŹŹà­‡ àŹŹàŹŸ àŹžàŹŹà­ àŹ†àŹȘà­àŹž àŹ“ àŹĄàŹŸàŹŸàŹŸàŹ•à­ àŹĄàŹżàŹČàŹżàŹŸ àŹ•àŹ°àŹżàŹȘàŹŸàŹ°àŹżàŹŹà­‡"</string>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index 068d695..08b0787 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -141,7 +141,7 @@
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"àš°à©±àšŠ àš•àš°à©‹"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"àšœà©‹à©œàšŸàšŹà©±àš§ àš•àš°àššàšŸ àš•àššà©ˆàš•àšŸ àš•à©€àš€à©‡ àšœàšŸàšŁ àš€à©‡ àš€à©àščàšŸàšĄà©‡ àšžà©°àšȘàš°àš•àšŸàš‚ àš…àš€à©‡ àš•àšŸàšČ àš‡àš€àšżàščàšŸàšž àš€à©±àš• àšȘàščà©à©°àšš àšŠà©€ àš†àš—àšżàš† àšŠàšżà©°àšŠàšŸ àščà©ˆà„€"</string>
     <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> àššàšŸàšČ àšȘà©‡àš…àš° àššàščà©€àš‚ àš•àš° àšžàš•àšżàš†à„€"</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"àš—àšČàš€ àšȘàšżà©°àšš àšœàšŸàš‚ àšȘàšŸàšžàš•à©€ àšŠà©‡ àš•àšŸàš°àšš <xliff:g id="DEVICE_NAME">%1$s</xliff:g> àššàšŸàšČ àšœà©‹à©œàšŸàšŹà©±àš§ àššàščà©€àš‚ àščੋ àšžàš•àšżàš†à„€"</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"àš‡à©±àš• àš—àšČàš€ àšȘàšżà©°àšš àšœàšŸàš‚ àšȘàšŸàšžàš•à©à©°àšœà©€ àšŠà©‡ àš•àšŸàš°àšš <xliff:g id="DEVICE_NAME">%1$s</xliff:g> àššàšŸàšČ àšœà©‹à©œàšŸàšŹà©±àš§ àššàščà©€àš‚ àščੋ àšžàš•àšżàš†à„€"</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> àššàšŸàšČ àšžà©°àššàšŸàš° àššàščà©€àš‚ àš•àš° àšžàš•àšŠàšŸà„€"</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"àšȘà©‡àš…àš°àšżà©°àš— <xliff:g id="DEVICE_NAME">%1$s</xliff:g> àš”à©±àšČà©‹àš‚ àš°à©±àšŠ àš•à©€àš€à©€ àš—àšˆà„€"</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"àš•à©°àšȘàšżàšŠàšŸàš°"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"àščà©‹àš° àšžàšźàšŸàš‚à„€"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"àš˜à©±àšŸ àšžàšźàšŸàš‚à„€"</string>
     <string name="cancel" msgid="5665114069455378395">"àš°à©±àšŠ àš•àš°à©‹"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"àš à©€àš• àščੈ"</string>
     <string name="done" msgid="381184316122520313">"àščੋ àš—àšżàš†"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"àš…àšČàšŸàš°àšź àš…àš€à©‡ àš°àšżàšźàšŸàšˆàš‚àšĄàš°"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"àš•à©€ àššàš”àšŸàš‚ àš”àš°àš€à©‹àš‚àš•àšŸàš° àšžàšŒàšŸàšźàšČ àš•àš°àššàšŸ àščੈ?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"àš€à©àšžà©€àš‚ àš”àšŸàš§à©‚ àš”àš°àš€à©‹àš‚àš•àšŸàš° àšŹàšŁàšŸ àš•à©‡ àščà©‹àš°àšŸàš‚ àšČà©‹àš•àšŸàš‚ àššàšŸàšČ àš‡àšč àšĄà©€àš”àšŸàšˆàšž àšžàšŸàš‚àšàšŸ àš•àš° àšžàš•àšŠà©‡ àščà©‹à„€ àščàš°à©‡àš• àš”àš°àš€à©‹àš‚àš•àšŸàš° àšŠà©€ àš†àšȘàšŁà©€ àš–à©àšŠ àšŠà©€ àšœàš—à©àščàšŸ àščà©à©°àšŠà©€ àščੈ, àšœàšżàšžàššà©‚à©° àš‰àšč àšàšȘàšŸàš‚ àš…àš€à©‡ àš”àšŸàšČàšȘੇàšȘàš° àš†àšŠàšż àššàšŸàšČ àš”àšżàš‰àš‚àš€àšŹà©±àš§ àš•àš° àšžàš•àšŠà©‡ àščàššà„€ àš”àš°àš€à©‹àš‚àš•àšŸàš° àš”àšŸàšˆ-àš«àšŸàšˆ àš”àš°àš—à©€àš†àš‚ àšĄà©€àš”àšŸàšˆàšž àšžà©ˆàšŸàšżà©°àš—àšŸàš‚ àššà©‚à©° àš”à©€ àš”àšżàš”àšžàš„àšżàš€ àš•àš° àšžàš•àšŠà©‡ àščàšš, àšœàšżàšž àššàšŸàšČ àščàš°à©‡àš• àš”àš°àš€à©‹àš‚àš•àšŸàš° \'àš€à©‡ àš…àšžàš° àšȘà©ˆàš‚àšŠàšŸ àščà©ˆà„€\n\nàšœàšŠà©‹àš‚ àš€à©àšžà©€àš‚ àš‡à©±àš• àššàš”àšŸàš‚ àš”àš°àš€à©‹àš‚àš•àšŸàš° àšžàšŒàšŸàšźàšČ àš•àš°àšŠà©‡ àščੋ, àš‰àšž àš”àšżàš…àš•àš€à©€ àššà©‚à©° àš†àšȘàšŁà©€ àšœàš—à©àščàšŸ àšžà©ˆà©±àšŸ àš…à©±àšȘ àš•àš°àššà©€ àšȘà©ˆàš‚àšŠà©€ àščà©ˆà„€\n\nàš•à©‹àšˆ àš”à©€ àš”àš°àš€à©‹àš‚àš•àšŸàš° àšŹàšŸàš•à©€ àšžàšŸàš°à©‡ àš”àš°àš€à©‹àš‚àš•àšŸàš°àšŸàš‚ àšŠà©€àš†àš‚ àšàšȘàšŸàš‚ àššà©‚à©° àš…à©±àšȘàšĄà©‡àšŸ àš•àš° àšžàš•àšŠàšŸ àščà©ˆà„€ àšžàšŒàšŸàš‡àšŠ àšȘàščà©à©°àššàšŻà©‹àš—àš€àšŸ àšžà©ˆàšŸàšżà©°àš—àšŸàš‚ àš…àš€à©‡ àšžà©‡àš”àšŸàš”àšŸàš‚ àššà©‚à©° àš•àšżàšžà©‡ àššàš”à©‡àš‚ àš”àš°àš€à©‹àš‚àš•àšŸàš° àššà©‚à©° àšŸà©àš°àšŸàš‚àšžàš«àš° àššàšŸ àš•à©€àš€àšŸ àšœàšŸ àšžàš•à©‡à„€"</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"àšœàšŠà©‹àš‚ àš€à©àšžà©€àš‚ àš‡à©±àš• àššàš”àšŸàš‚ àš”àš°àš€à©‹àš‚àš•àšŸàš° àšžàšŒàšŸàšźàšČ àš•àš°àšŠà©‡ àščੋ, àš‰àšž àš”àšżàš…àš•àš€à©€ àššà©‚à©° àš†àšȘàšŁà©€ àšœàš—à©àščàšŸ àšžà©ˆà©±àšŸàš…à©±àšȘ àš•àš°àšš àšŠà©€ àšČੋੜ àščà©à©°àšŠà©€ àščà©ˆà„€\n\nàš•à©‹àšˆ àš”à©€ àš”àš°àš€à©‹àš‚àš•àšŸàš° àščà©‹àš° àšžàšŸàš°à©‡ àš”àš°àš€à©‹àš‚àš•àšŸàš°àšŸàš‚ àšŠà©€àš†àš‚ àšàšȘàšŸàš‚ àššà©‚à©° àš…à©±àšȘàšĄà©‡àšŸ àš•àš° àšžàš•àšŠàšŸ àščà©ˆà„€"</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"àš•à©€ àš‡àšž àš”àš°àš€à©‹àš‚àš•àšŸàš° àššà©‚à©° àšȘà©àš°àšžàšŒàšŸàšžàš• àšŠà©‡ àš”àšżàšžàšŒà©‡àšžàšŒ-àš…àš§àšżàš•àšŸàš° àšŠà©‡àšŁà©‡ àščàšš?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"àšȘà©àš°àšžàšŒàšŸàšžàš• àš”àšœà©‹àš‚, àš‰àšč àščà©‹àš° àš”àš°àš€à©‹àš‚àš•àšŸàš°àšŸàš‚ àšŠàšŸ àšȘà©àš°àšŹà©°àš§àšš àš•àš° àšžàš•àšŁàš—à©‡, àšĄà©€àš”àšŸàšˆàšž àšžà©ˆàšŸàšżà©°àš—àšŸàš‚ àššà©‚à©° àšžà©‹àš§ àšžàš•àšŁàš—à©‡ àš…àš€à©‡ àšĄà©€àš”àšŸàšˆàšž àššà©‚à©° àš«à©ˆàš•àšŸàš°à©€ àš°à©€àšžà©ˆà©±àšŸ àš•àš° àšžàš•àšŁàš—à©‡à„€"</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"àš•à©€ àščà©àšŁ àš”àš°àš€à©‹àš‚àš•àšŸàš° àšžà©ˆà©±àšŸ àš…à©±àšȘ àš•àš°àššàšŸ àščੈ?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"àš‡àšč àšȘà©±àš•àšŸ àš•àš°à©‹ àš•àšż àš”àšżàš…àš•àš€à©€ àšĄà©€àš”àšŸàšˆàšž àš”àš°àš€àšŁ àš…àš€à©‡ àš†àšȘàšŁà©€ àšœàš—à©àščàšŸ àšŠà©‡ àšžà©ˆà©±àšŸ àš…à©±àšȘ àšČàšˆ àš‰àšȘàšČàšŹàš§ àščੈ"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"àš•à©€ àščà©àšŁ àšȘà©àš°à©‹àš«àšŸàšˆàšČ àšžà©ˆà©±àšŸ àš…à©±àšȘ àš•àš°àššà©€ àščੈ?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"àš‡àšž àššàšŸàšČ àššàš”àšŸàš‚ àšźàščàšżàšźàšŸàšš àšžà©ˆàšžàšŒàšš àšžàšŒà©àš°à©‚ àščੋ àšœàšŸàš”à©‡àš—àšŸ àš…àš€à©‡ àšźà©Œàšœà©‚àšŠàšŸ àšžà©ˆàšžàšŒàšš àšŠà©€àš†àš‚ àšžàšŸàš°à©€àš†àš‚ àšàšȘàšŸàš‚ àš…àš€à©‡ àšĄàšŸàšŸàšŸ àšźàšżàšŸ àšœàšŸàš”à©‡àš—àšŸ"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"àš•à©€ àšźàščàšżàšźàšŸàšš àšźà©‹àšĄ àš€à©‹àš‚ àšŹàšŸàščàš° àšœàšŸàšŁàšŸ àščੈ?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"àš‡àšž àššàšŸàšČ àšźà©Œàšœà©‚àšŠàšŸ àšźàščàšżàšźàšŸàšš àšžà©ˆàšžàšŒàšš àšŠà©€àš†àš‚ àšžàšŸàš°à©€àš†àš‚ àšàšȘàšŸàš‚ àš…àš€à©‡ àšĄàšŸàšŸàšŸ àšźàšżàšŸ àšœàšŸàš”à©‡àš—àšŸ"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"àš‡àšž àš”àš°àš€à©‹àš‚àš•àšŸàš° àššà©‚à©° àšȘà©àš°àšžàšŒàšŸàšžàš• àšŠà©‡ àš”àšżàšžàšŒà©‡àšžàšŒ-àš…àš§àšżàš•àšŸàš° àšŠàšżàš“"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"àš”àš°àš€à©‹àš‚àš•àšŸàš° àššà©‚à©° àšȘà©àš°àšžàšŒàšŸàšžàš• àšŠà©‡ àš”àšżàšžàšŒà©‡àšžàšŒ-àš…àš§àšżàš•àšŸàš° àššàšŸ àšŠàšżàš“"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"àšŹàšŸàščàš° àšœàšŸàš“"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"àš•à©€ àšźàščàšżàšźàšŸàšš àšžàš°àš—àš°àšźà©€ àš°à©±àš–àšżàš…àš€ àš•àš°àššà©€ àščੈ?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"àš€à©àšžà©€àš‚ àšźà©Œàšœà©‚àšŠàšŸ àšžà©ˆàšžàšŒàšš àšŠà©€ àšžàš°àš—àš°àšźà©€ àššà©‚à©° àš°à©±àš–àšżàš…àš€ àš•àš° àšžàš•àšŠà©‡ àščੋ àšœàšŸàš‚ àšžàšŸàš°à©€àš†àš‚ àšàšȘàšŸàš‚ àš…àš€à©‡ àšĄàšŸàšŸàšŸ àšźàšżàšŸàšŸ àšžàš•àšŠà©‡ àščੋ"</string>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
index f8c2c97..089bc2d 100644
--- a/packages/SettingsLib/res/values-pl/strings.xml
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -140,8 +140,8 @@
     <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"SPARUJ"</string>
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Anuluj"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Sparowanie powoduje przyznanie dostępu do historii poƂączeƄ i Twoich kontaktów w trakcie poƂączenia."</string>
-    <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Nie udaƂo się sparować z urządzeniem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Nie udaƂo się sparować z urządzeniem <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ze względu na bƂędny kod PIN lub klucz."</string>
+    <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Nie moĆŒna sparować z urządzeniem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Nie moĆŒna sparować z urządzeniem <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ze względu na bƂędny kod PIN lub klucz."</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Nie moĆŒna skomunikować się z urządzeniem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Powiązanie odrzucone przez urządzenie <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Komputer"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Więcej czasu."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Mniej czasu."</string>
     <string name="cancel" msgid="5665114069455378395">"Anuluj"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Gotowe"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmy i przypomnienia"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Dodać nowego uĆŒytkownika?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Z tego urządzenia moĆŒesz korzystać wraz z innymi osobami, dodając na nim konta uĆŒytkowników. KaĆŒdy uĆŒytkownik ma wƂasne miejsce na swoje aplikacje, tapety i inne dane. MoĆŒe teĆŒ zmieniać ustawienia, które wpƂywają na wszystkich uĆŒytkowników urządzenia (np. Wi‑Fi).\n\nGdy dodasz nowego uĆŒytkownika, musi on skonfigurować swoje miejsce na dane.\n\nKaĆŒdy uĆŒytkownik moĆŒe aktualizować aplikacje w imieniu wszystkich pozostaƂych uĆŒytkowników. UƂatwienia dostępu i usƂugi mogą nie zostać przeniesione na konto nowego uĆŒytkownika."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Gdy dodasz nowego uĆŒytkownika, musi on skonfigurować swoją przestrzeƄ.\n\nKaĆŒdy uĆŒytkownik moĆŒe aktualizować aplikacje wszystkich innych uĆŒytkowników."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Nadać uprawnienia administratora?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Administrator będzie mógƂ zarządzać innymi uĆŒytkownikami, zmieniać ustawienia urządzenia i przywracać urządzenie do ustawieƄ fabrycznych."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Skonfigurować ustawienia dla uĆŒytkownika?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Upewnij się, ĆŒe ta osoba jest w pobliĆŒu i moĆŒe skonfigurować swój profil"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Skonfigurować teraz profil?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Zostanie uruchomiona nowa sesja goƛcia. Wszystkie aplikacje i dane z obecnej sesji zostaną usunięte."</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Zamknąć tryb goƛcia?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Wszystkie aplikacje i dane z obecnej sesji goƛcia zostaną usunięte."</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Nadaj temu uĆŒytkownikowi uprawnienia administratora"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Nie nadawaj uprawnieƄ administratora"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Zamknij"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Zapisać aktywnoƛć goƛcia?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"MoĆŒesz zapisać aktywnoƛć z obecnej sesji lub usunąć wszystkie aplikacje i dane"</string>
diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml
index f6ffce0..44110c2 100644
--- a/packages/SettingsLib/res/values-pt-rBR/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Mais tempo."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Menos tempo."</string>
     <string name="cancel" msgid="5665114069455378395">"Cancelar"</string>
-    <string name="next" msgid="2699398661093607009">"Próxima"</string>
-    <string name="back" msgid="5554327870352703710">"Voltar"</string>
-    <string name="save" msgid="3745809743277153149">"Salvar"</string>
     <string name="okay" msgid="949938843324579502">"Ok"</string>
     <string name="done" msgid="381184316122520313">"Concluído"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmes e lembretes"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Adicionar novo usuário?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Você pode compartilhar este dispositivo com outras pessoas, adicionando usuários. Cada usuário tem o próprio espaço, que pode ser personalizado com apps, planos de fundo, etc. Os usuários também podem ajustar as configurações do dispositivo, como o Wi‑Fi, que afetam a todos.\n\nQuando você adiciona um novo usuário, essa pessoa precisa configurar o próprio espaço.\n\nQualquer usuário pode atualizar apps para todos os outros. Serviços e configurações de acessibilidade podem não ser transferidos para novos usuários."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Quando você adiciona um novo usuário, essa pessoa precisa configurar o próprio espaço.\n\nQualquer usuário pode atualizar apps para os demais usuários."</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"Transformar esse usuário um administrador?"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"Administradores têm privilégios especiais que outros usuários não têm. Um administrador pode gerenciar todos os usuários, atualizar ou redefinir este dispositivo, modificar configurações, conferir todos os apps instalados e conceder ou revogar privilégios de administrador para outras pessoas."</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"Transformar o usuário em administrador"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Dar privilégios de administrador ao usuário?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Como administrador, essa pessoa poderá gerenciar outros usuários, modificar as configurações e redefinir o dispositivo para a configuração original."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurar o usuário agora?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Certifique-se de que a pessoa está disponível para acessar o dispositivo e fazer as próprias configurações"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurar perfil agora?"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Essa ação vai iniciar uma nova Sessão de visitante e excluir todos os apps e dados da sessão atual"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Sair do modo visitante?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Essa ação vai excluir apps e dados da Sessão de visitante atual"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"Sim, transformar esse usuário em administrador"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"Não, não transformar o usuário em administrador"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"Dar privilégios de administrador ao usuário"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Não dar privilégios de administrador ao usuário"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Sair"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Salvar a atividade do visitante?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Você pode salvar a atividade da sessão atual ou excluir todos os apps e dados"</string>
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
index 8751ba2..893964b 100644
--- a/packages/SettingsLib/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Mais tempo."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Menos tempo."</string>
     <string name="cancel" msgid="5665114069455378395">"Cancelar"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Concluir"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmes e lembretes"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Adicionar novo utilizador?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Pode partilhar este dispositivo com outras pessoas ao criar utilizadores adicionais. Cada utilizador possui o seu próprio espaço, que pode ser personalizado com apps, imagens de fundo, etc. Os utilizadores também podem ajustar as definições do dispositivo, como o Wi‑Fi, que afetam os restantes utilizadores.\n\nAo adicionar um novo utilizador, essa pessoa tem de configurar o respetivo espaço.\n\nQualquer utilizador pode atualizar apps para todos os outros utilizadores. Os serviços e as definições de acessibilidade podem não ser transferidos para o novo utilizador."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Ao adicionar um novo utilizador, essa pessoa tem de configurar o respetivo espaço.\n\nQualquer utilizador pode atualizar aplicações para todos os outros utilizadores."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Dar priv. admin ao utilizador?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Como administradores, vão poder gerir outros utilizadores, modificar as definições do dispositivo e fazer uma reposição de fábrica do dispositivo."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurar o utilizador agora?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Certifique-se de que a pessoa está disponível para levar o dispositivo e configurar o seu espaço"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurar perfil agora?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Esta ação inicia uma nova sessão de convidado e elimina todas as apps e dados da sessão atual"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Sair do modo convidado?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Esta ação elimina as apps e os dados da sessão de convidado atual"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Dar privilégios de administrador a este utilizador"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Não dar privilégios de administrador a este utilizador"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Sair"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Guardar atividade de convidado?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Pode guardar a atividade da sessão atual ou eliminar todas as apps e dados"</string>
diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml
index f6ffce0..44110c2 100644
--- a/packages/SettingsLib/res/values-pt/strings.xml
+++ b/packages/SettingsLib/res/values-pt/strings.xml
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Mais tempo."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Menos tempo."</string>
     <string name="cancel" msgid="5665114069455378395">"Cancelar"</string>
-    <string name="next" msgid="2699398661093607009">"Próxima"</string>
-    <string name="back" msgid="5554327870352703710">"Voltar"</string>
-    <string name="save" msgid="3745809743277153149">"Salvar"</string>
     <string name="okay" msgid="949938843324579502">"Ok"</string>
     <string name="done" msgid="381184316122520313">"Concluído"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmes e lembretes"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Adicionar novo usuário?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Você pode compartilhar este dispositivo com outras pessoas, adicionando usuários. Cada usuário tem o próprio espaço, que pode ser personalizado com apps, planos de fundo, etc. Os usuários também podem ajustar as configurações do dispositivo, como o Wi‑Fi, que afetam a todos.\n\nQuando você adiciona um novo usuário, essa pessoa precisa configurar o próprio espaço.\n\nQualquer usuário pode atualizar apps para todos os outros. Serviços e configurações de acessibilidade podem não ser transferidos para novos usuários."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Quando você adiciona um novo usuário, essa pessoa precisa configurar o próprio espaço.\n\nQualquer usuário pode atualizar apps para os demais usuários."</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"Transformar esse usuário um administrador?"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"Administradores têm privilégios especiais que outros usuários não têm. Um administrador pode gerenciar todos os usuários, atualizar ou redefinir este dispositivo, modificar configurações, conferir todos os apps instalados e conceder ou revogar privilégios de administrador para outras pessoas."</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"Transformar o usuário em administrador"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Dar privilégios de administrador ao usuário?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Como administrador, essa pessoa poderá gerenciar outros usuários, modificar as configurações e redefinir o dispositivo para a configuração original."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurar o usuário agora?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Certifique-se de que a pessoa está disponível para acessar o dispositivo e fazer as próprias configurações"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurar perfil agora?"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Essa ação vai iniciar uma nova Sessão de visitante e excluir todos os apps e dados da sessão atual"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Sair do modo visitante?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Essa ação vai excluir apps e dados da Sessão de visitante atual"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"Sim, transformar esse usuário em administrador"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"Não, não transformar o usuário em administrador"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"Dar privilégios de administrador ao usuário"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Não dar privilégios de administrador ao usuário"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Sair"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Salvar a atividade do visitante?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Você pode salvar a atividade da sessão atual ou excluir todos os apps e dados"</string>
diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml
index ae9f1aa..97060f9 100644
--- a/packages/SettingsLib/res/values-ro/strings.xml
+++ b/packages/SettingsLib/res/values-ro/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Mai mult timp."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Mai puțin timp."</string>
     <string name="cancel" msgid="5665114069455378395">"Anulează"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Gata"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarme și mementouri"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Adaugi un utilizator nou?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Poți să permiți accesul la acest dispozitiv altor persoane creând utilizatori suplimentari. Fiecare utilizator are propriul spațiu, pe care îl poate personaliza cu aplicații, imagini de fundal etc. De asemenea, utilizatorii pot ajusta setările dispozitivului, cum ar fi setările pentru Wi-Fi, care îi afectează pe toți ceilalți utilizatori.\n\nDupă ce adaugi un utilizator nou, acesta trebuie să-și configureze spațiul.\n\nOricare dintre utilizatori poate actualiza aplicațiile pentru toți ceilalți utilizatori. Este posibil ca setările de accesibilitate și serviciile să nu se transfere la noul utilizator."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Când adaugi un utilizator nou, acesta trebuie să-și configureze spațiul.\n\nOrice utilizator poate actualiza aplicațiile pentru toți ceilalți utilizatori."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Acorzi utilizatorului privilegii de administrator?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Ca administrator, va putea să gestioneze alți utilizatori, să modifice setările dispozitivului și să revină la setările din fabrică ale dispozitivului."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurezi utilizatorul acum?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Asigură-te că utilizatorul are posibilitatea de a prelua dispozitivul și de a-și configura spațiul"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurezi profilul acum?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Astfel, va începe o nouă sesiune pentru invitați și se vor șterge toate aplicațiile și datele din sesiunea actuală"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Ieși din modul pentru invitați?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Se vor șterge toate aplicațiile și datele din sesiunea pentru invitați actuală"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Acordă-i utilizatorului privilegii de administrator"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Nu îi acorda utilizatorului privilegii de administrator"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Ieși"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Salvezi activitatea invitatului?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Salvează activitatea din sesiunea actuală sau șterge aplicațiile și datele"</string>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
index 96179d7..47bf5a0 100644
--- a/packages/SettingsLib/res/values-ru/strings.xml
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"ĐŁĐČĐ”Đ»ĐžŃ‡ĐžŃ‚ŃŒ ĐżŃ€ĐŸĐŽĐŸĐ»Đ¶ĐžŃ‚Đ”Đ»ŃŒĐœĐŸŃŃ‚ŃŒ"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"ĐŁĐŒĐ”ĐœŃŒŃˆĐžŃ‚ŃŒ ĐżŃ€ĐŸĐŽĐŸĐ»Đ¶ĐžŃ‚Đ”Đ»ŃŒĐœĐŸŃŃ‚ŃŒ"</string>
     <string name="cancel" msgid="5665114069455378395">"ĐžŃ‚ĐŒĐ”ĐœĐ°"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"ОК"</string>
     <string name="done" msgid="381184316122520313">"Đ“ĐŸŃ‚ĐŸĐČĐŸ"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Đ‘ŃƒĐŽĐžĐ»ŃŒĐœĐžĐșĐž Đž ĐœĐ°ĐżĐŸĐŒĐžĐœĐ°ĐœĐžŃ"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Đ”ĐŸĐ±Đ°ĐČоть ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»Ń?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"ЕслО ŃŃ‚ĐžĐŒ ŃƒŃŃ‚Ń€ĐŸĐčстĐČĐŸĐŒ ĐżĐŸĐ»ŃŒĐ·ŃƒŃŽŃ‚ŃŃ ŃŃ€Đ°Đ·Ńƒ ĐœĐ”ŃĐșĐŸĐ»ŃŒĐșĐŸ Ń‡Đ”Đ»ĐŸĐČĐ”Đș, ĐŽĐ»Ń ĐșĐ°Đ¶ĐŽĐŸĐłĐŸ Оз ĐœĐžŃ… ĐŒĐŸĐ¶ĐœĐŸ ŃĐŸĐ·ĐŽĐ°Ń‚ŃŒ ĐŸŃ‚ĐŽĐ”Đ»ŃŒĐœŃ‹Đč ĐżŃ€ĐŸŃ„ĐžĐ»ŃŒ – праĐșтОчДсĐșĐž ŃĐŸĐ±ŃŃ‚ĐČĐ”ĐœĐœĐŸĐ” ĐżŃ€ĐŸŃŃ‚Ń€Đ°ĐœŃŃ‚ĐČĐŸ ŃĐŸ сĐČĐŸĐžĐŒĐž ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃĐŒĐž, ĐŸĐ±ĐŸŃĐŒĐž Đž т. ĐŽ. Про ŃŃ‚ĐŸĐŒ Оз ĐżŃ€ĐŸŃ„ĐžĐ»Ń ĐŒĐŸĐ¶ĐœĐŸ ĐżĐŸĐŒĐ”ĐœŃŃ‚ŃŒ Đž ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ŃƒŃŃ‚Ń€ĐŸĐčстĐČа, ĐŸĐ±Ń‰ĐžĐ” ĐŽĐ»Ń ĐČсДх, ĐœĐ°ĐżŃ€ĐžĐŒĐ”Ń€ ĐČŃ‹Đ±Ń€Đ°Ń‚ŃŒ ŃĐ”Ń‚ŃŒ Wi-Fi.\n\nĐšĐŸĐłĐŽĐ° ĐČы ĐŽĐŸĐ±Đ°ĐČĐ»ŃĐ”Ń‚Đ” ĐœĐŸĐČĐŸĐłĐŸ ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»Ń, Đ”ĐŒŃƒ ĐœŃƒĐ¶ĐœĐŸ ĐœĐ°ŃŃ‚Ń€ĐŸĐžŃ‚ŃŒ сĐČĐŸĐč ĐżŃ€ĐŸŃ„ĐžĐ»ŃŒ.\n\nĐžĐ±ĐœĐŸĐČĐ»ŃŃ‚ŃŒ ĐŸĐ±Ń‰ĐžĐ” ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃ ĐŒĐŸĐ¶Đ”Ń‚ Đ»ŃŽĐ±ĐŸĐč ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»ŃŒ, ĐŸĐŽĐœĐ°ĐșĐŸ ŃĐżĐ”Ń†ĐžĐ°Đ»ŃŒĐœŃ‹Đ” ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸŃŃ‚Đž ĐœĐ°ŃŃ‚Ń€Đ°ĐžĐČаются ĐžĐœĐŽĐžĐČĐžĐŽŃƒĐ°Đ»ŃŒĐœĐŸ."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"ĐŸĐŸŃĐ»Đ” ŃĐŸĐ·ĐŽĐ°ĐœĐžŃ ĐżŃ€ĐŸŃ„ĐžĐ»Ń Đ”ĐłĐŸ ĐżĐŸŃ‚Ń€Đ”Đ±ŃƒĐ”Ń‚ŃŃ ĐœĐ°ŃŃ‚Ń€ĐŸĐžŃ‚ŃŒ.\n\nĐ›ŃŽĐ±ĐŸĐč ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»ŃŒ ŃƒŃŃ‚Ń€ĐŸĐčстĐČа ĐŒĐŸĐ¶Đ”Ń‚ ĐŸĐ±ĐœĐŸĐČĐ»ŃŃ‚ŃŒ ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃ ĐŽĐ»Ń ĐČсДх аĐșĐșĐ°ŃƒĐœŃ‚ĐŸĐČ."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"ПраĐČа Đ°ĐŽĐŒĐžĐœĐžŃŃ‚Ń€Đ°Ń‚ĐŸŃ€Đ°"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"КаĐș Đ°ĐŽĐŒĐžĐœĐžŃŃ‚Ń€Đ°Ń‚ĐŸŃ€, ĐŸĐœ ŃĐŒĐŸĐ¶Đ”Ń‚ упраĐČĐ»ŃŃ‚ŃŒ ĐŽŃ€ŃƒĐłĐžĐŒĐž ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»ŃĐŒĐž, ĐŒĐ”ĐœŃŃ‚ŃŒ Đž сбрасыĐČать ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ŃƒŃŃ‚Ń€ĐŸĐčстĐČа."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"ĐĐ°ŃŃ‚Ń€ĐŸĐžŃ‚ŃŒ ĐżŃ€ĐŸŃ„ĐžĐ»ŃŒ?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Đ’Đ°ĐŒ ĐżĐŸŃ‚Ń€Đ”Đ±ŃƒĐ”Ń‚ŃŃ ĐżĐ”Ń€Đ”ĐŽĐ°Ń‚ŃŒ ŃƒŃŃ‚Ń€ĐŸĐčстĐČĐŸ ĐżĐŸĐ»ŃŒĐ·ĐŸĐČатДлю, Ń‡Ń‚ĐŸĐ±Ń‹ ĐŸĐœ ĐŒĐŸĐł ĐœĐ°ŃŃ‚Ń€ĐŸĐžŃ‚ŃŒ сĐČĐŸĐč ĐżŃ€ĐŸŃ„ĐžĐ»ŃŒ."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ĐĐ°ŃŃ‚Ń€ĐŸĐžŃ‚ŃŒ ĐżŃ€ĐŸŃ„ĐžĐ»ŃŒ?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Про ŃŃ‚ĐŸĐŒ ĐœĐ°Ń‡ĐœĐ”Ń‚ŃŃ ĐœĐŸĐČыĐč ĐłĐŸŃŃ‚Đ”ĐČĐŸĐč ŃĐ”Đ°ĐœŃ, а ĐČсД ĐŽĐ°ĐœĐœŃ‹Đ” Đž ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃ ĐżŃ€Đ”ĐŽŃ‹ĐŽŃƒŃ‰Đ”ĐłĐŸ ŃĐ”Đ°ĐœŃĐ° Đ±ŃƒĐŽŃƒŃ‚ ŃƒĐŽĐ°Đ»Đ”ĐœŃ‹."</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"ВыĐčто Оз ĐłĐŸŃŃ‚Đ”ĐČĐŸĐłĐŸ Ń€Đ”Đ¶ĐžĐŒĐ°?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"ВсД ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃ Đž ĐŽĐ°ĐœĐœŃ‹Đ” тДĐșŃƒŃ‰Đ”ĐłĐŸ ĐłĐŸŃŃ‚Đ”ĐČĐŸĐłĐŸ ŃĐ”Đ°ĐœŃĐ° Đ±ŃƒĐŽŃƒŃ‚ ŃƒĐŽĐ°Đ»Đ”ĐœŃ‹."</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"ĐŸŃ€Đ”ĐŽĐŸŃŃ‚Đ°ĐČоть ĐżĐŸĐ»ŃŒĐ·ĐŸĐČатДлю праĐČа Đ°ĐŽĐŒĐžĐœĐžŃŃ‚Ń€Đ°Ń‚ĐŸŃ€Đ°"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"ĐĐ” ĐżŃ€Đ”ĐŽĐŸŃŃ‚Đ°ĐČĐ»ŃŃ‚ŃŒ ĐżĐŸĐ»ŃŒĐ·ĐŸĐČатДлю праĐČа Đ°ĐŽĐŒĐžĐœĐžŃŃ‚Ń€Đ°Ń‚ĐŸŃ€Đ°"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"ВыĐčто"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ĐĄĐŸŃ…Ń€Đ°ĐœĐžŃ‚ŃŒ ĐžŃŃ‚ĐŸŃ€ĐžŃŽ ŃĐ”Đ°ĐœŃĐ°?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ĐĄĐŸŃ…Ń€Đ°ĐœĐžŃ‚Đ” ĐžŃŃ‚ĐŸŃ€ĐžŃŽ тДĐșŃƒŃ‰Đ”ĐłĐŸ ŃĐ”Đ°ĐœŃĐ° ОлО ŃƒĐŽĐ°Đ»ĐžŃ‚Đ” ĐŽĐ°ĐœĐœŃ‹Đ” Đž ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃ."</string>
diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml
index 8dfe489..fbefa92 100644
--- a/packages/SettingsLib/res/values-si/strings.xml
+++ b/packages/SettingsLib/res/values-si/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"වේගාව වැඩිà¶șෙන්."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"වේගාව අඩුවෙන්."</string>
     <string name="cancel" msgid="5665114069455378395">"අවගංගු කරන්න"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"හරි"</string>
     <string name="done" msgid="381184316122520313">"නිඞà¶șි"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"එගාඞ සහ à·ƒà·’à·„à·’à¶šà·à¶łà·€à·“à¶žà·Š"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"අගුත් ඎරිශීගකà¶șෙක් එක් à¶šà¶»à¶±à·Šà¶±à¶Ż?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"à¶…à¶žà¶­à¶» ඎරිශීගකà¶șින් නිර්ඞාණà¶ș කිරීඞ ඞඟින් වෙනත් à¶Žà·”à¶Żà·Šà¶œà¶œà¶șන් සඞඟ ඞෙඞ උඎාංගà¶ș ඔබට à¶¶à·™à¶Żà· ගත හැකිà¶ș. සෑඞ ඎරිශීගකà¶șෙක්ටඞ ඔවුන්ගේඞ à¶șà·™à¶Żà·”à¶žà·Š, වෝග්ඎේඎර, සහ වෙනත් ඒවා අභිරුචි කළ හැකි තඞන්ට අà¶șිති ඉඩක් ඇත. ඎරිශීගකà¶șින්ට Wi‑Fi වැනි සෑඞ à¶Żà·™à¶±à·à¶§à¶ž බගඎාන උඎාංග à·ƒà·à¶šà·ƒà·“à¶žà·Šà¶Ż සීරුඞාරු කළ හැක.\n\nඔබ නව ඎරිශීගකà¶șෙකු එක් කළ විට ඔවුන්ගේ ඉඩ à¶‘à¶ž à¶Žà·”à¶Żà·Šà¶œà¶œà¶șා සකසා ගත à¶șුතු වේ.\n\nඕනෑඞ ඎරිශීගකà¶șෙකුට අනෙක් සිà¶șගු ඎරිශීගකà¶șන් à·ƒà¶łà·„à· à¶șà·™à¶Żà·”à¶žà·Š à¶șාවත්කාගීන කළ හැකිà¶ș. à¶Žà·Š‍රවේශà¶șතා සැකසීඞ් සහ සේවා නව ඎරිශීගකà¶șා වෙත ඞාරු නොකරනු ඇත."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"ඔබ අගුත් ඎරිශීගකà¶șෙක් එකතු කරන විට, à¶‘à¶ž à¶Žà·”à¶Żà·Šà¶œà¶œà¶șා ඔහුගේ වැඩ කරන ඉඩ සකසා ගත à¶șුතුà¶ș.\n\nසිà¶șළුඞ අනෙක් ඎරිශීගකà¶șින් à·ƒà¶łà·„à· ඕනෑඞ ඎරිශීගකà¶șෙකුට à¶șාවත්කාගීන කළ හැක."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"ඞෙඞ ඎරිශීගකà¶șාට ඎරිඎාගක වරඎ්‍à¶»à·ƒà·à¶Ż ගබා à¶Żà·™à¶±à·Šà¶± à¶Ż?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"ඎරිඎාගකà¶șෙකු ගෙස, ඔවුන්ට වෙනත් ඎරිශීගකà¶șින් කළඞනාකරණà¶ș කිරීඞට, උඎාංග සැකසීඞ් වෙනස් කිරීඞට සහ උඎාංගà¶ș කර්ඞාන්තශාගා à¶șළි සැකසීඞට හැකි වනු ඇත."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"à¶Żà·à¶±à·Š ඎරිශීගකà¶șා à·ƒà¶šà·ƒà¶±à·Šà¶±à¶Ż?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"උඎාංගà¶ș ගබාගෙන තඞන්ගේ ඉඩ සකසා ගැනීඞට à¶…à¶Żà·à·… à¶Žà·”à¶Żà·Šà¶œà¶œà¶șා සිටින බව තහවුරු කරගන්න"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"à¶Żà·à¶±à·Š ඎැතිකඩ à·ƒà¶šà·ƒà¶±à·Šà¶±à¶Ż?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"à¶žà·™à¶ș නව ආගන්තුක සැසිà¶șක් ආරඞ්භ කර වත්ඞන් සැසිà¶șෙන් සිà¶șගු à¶șà·™à¶Żà·”à¶žà·Š සහ à¶Żà¶­à·Šà¶­ ඞකනු ඇත"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"ආගන්තුක à¶Žà·Š‍රකාරà¶șෙන් à¶Žà·’à¶§à·€à¶±à·Šà¶±à¶Ż?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"à¶žà·™à¶ș වත්ඞන් ආගන්තුක සැසිà¶șෙන් à¶șà·™à¶Żà·”à¶žà·Š සහ à¶Żà¶­à·Šà¶­ ඞකනු ඇත"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"ඞෙඞ ඎරිශීගකà¶șාට ඎරිඎාගක වරඎ්‍à¶»à·ƒà·à¶Ż ගබා à¶Żà·™à¶±à·Šà¶±"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"ඞෙඞ ඎරිශීගකà¶șාට ඎරිඎාගක වරඎ්‍à¶»à·ƒà·à¶Ż ගබා à¶±à·œà¶Żà·™à¶±à·Šà¶±"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"ඎිටවන්න"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ආගන්තුක ක්‍රිà¶șාකාරකඞ් à·ƒà·”à¶»à¶šà·’à¶±à·Šà¶±à¶Ż?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ඔබට වත්ඞන් සැසිà¶șෙන් ක්‍රිà¶șාකාරකඞ් සුරැකීඞට හෝ සිà¶șගු à¶șà·™à¶Żà·”à¶žà·Š සහ à¶Żà¶­à·Šà¶­ ඞැකීඞට හැකිà¶ș"</string>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index cbfdcef..80374e0 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Dlhší čas."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Kratší čas."</string>
     <string name="cancel" msgid="5665114069455378395">"ZrušiĆ„"</string>
-    <string name="next" msgid="2699398661093607009">"Ďalej"</string>
-    <string name="back" msgid="5554327870352703710">"SpäĆ„"</string>
-    <string name="save" msgid="3745809743277153149">"UloĆŸiĆ„"</string>
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Hotovo"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Budíky a pripomenutia"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"PridaĆ„ nového pouĆŸívateÄŸa?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Vytvorením ďalších pouĆŸívateÄŸov môĆŸete toto zariadenie zdieÄŸaĆ„ s inými ÄŸuďmi. KaĆŸdý pouĆŸívateÄŸ má svoje prostredie, ktoré si môĆŸe prispôsobiĆ„ vlastnými aplikáciami, tapetou atď. PouĆŸívatelia tieĆŸ môĆŸu upraviĆ„ nastavenia zariadenia (napr. Wi-Fi), ktoré ovplyvnia všetkých pouĆŸívateÄŸov.\n\nKeď pridáte nového pouĆŸívateÄŸa, musí si nastaviĆ„ vlastný priestor.\n\nAkýkoÄŸvek pouĆŸívateÄŸ môĆŸe aktualizovaĆ„ aplikácie všetkých pouĆŸívateÄŸov. Nastavenia dostupnosti a sluĆŸby sa nemusia preniesĆ„ novému pouĆŸívateÄŸovi."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Keď pridáte nového pouĆŸívateÄŸa, musí si nastaviĆ„ vlastný priestor.\n\nAkýkoÄŸvek pouĆŸívateÄŸ môĆŸe aktualizovaĆ„ aplikácie všetkých ostatných pouĆŸívateÄŸov."</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"Chcete tohto pouĆŸívateÄŸa nastaviĆ„ ako správcu?"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"Správcovia majú oproti iným pouĆŸívateÄŸom špeciálne oprávnenia. Správca môĆŸe ovládaĆ„ všetkých pouĆŸívateÄŸov, aktualizovaĆ„ alebo resetovaĆ„ toto zariadenie, upravovaĆ„ nastavenia, prezeraĆ„ všetky nainštalované aplikácie a udeÄŸovaĆ„ či odoberaĆ„ správcovské oprávnenia iným pouĆŸívateÄŸom."</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"NastaviĆ„ ako správcu"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"UdeliĆ„ pouĆŸ. spr. oprávnenia?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Ako správca bude môcĆ„ spravovaĆ„ iných pouĆŸívateÄŸov, meniĆ„ nastavenia zariadenia a obnoviĆ„ jeho výrobné nastavenia."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Chcete teraz nastaviĆ„ pouĆŸívateÄŸa?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Uistite sa, ĆŸe je daná osoba k dispozícii a môĆŸe si na zariadení nastaviĆ„ svoj priestor."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"NastaviƄ profil?"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Týmto sa spustí nová relácia hosĆ„a a odstránia sa všetky aplikácie a údaje z aktuálnej relácie"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Chcete ukončiĆ„ reĆŸim pre hostí?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Ukončí sa reĆŸim pre hostí a odstránia sa aplikácie a údaje z relácie hosĆ„a"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"Áno, nastaviĆ„ ako správcu"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"Nie, nenastaviĆ„ ako správcu"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"UdeliĆ„ tomuto pouĆŸívateÄŸovi správcovské oprávnenia"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"NeudeliĆ„ tomuto pouĆŸívateÄŸovi správcovské oprávnenia"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"UkončiĆ„"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Chcete uloĆŸiĆ„ aktivitu hosĆ„a?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"MôĆŸte uloĆŸiĆ„ aktivitu aktuálnej relácie alebo odstrániĆ„ všetky aplikácie a údaje"</string>
diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml
index 222f300..814fa63 100644
--- a/packages/SettingsLib/res/values-sl/strings.xml
+++ b/packages/SettingsLib/res/values-sl/strings.xml
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Daljši čas."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Krajši čas."</string>
     <string name="cancel" msgid="5665114069455378395">"Prekliči"</string>
-    <string name="next" msgid="2699398661093607009">"Naprej"</string>
-    <string name="back" msgid="5554327870352703710">"Nazaj"</string>
-    <string name="save" msgid="3745809743277153149">"Shrani"</string>
     <string name="okay" msgid="949938843324579502">"V redu"</string>
     <string name="done" msgid="381184316122520313">"Končano"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmi in opomniki"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Ćœelite dodati uporabnika?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"To napravo lahko delite z drugimi tako, da ustvarite dodatne uporabnike. Vsak ima svoj prostor, ki ga lahko prilagodi z aplikacijami, ozadji in drugim. Uporabniki lahko tudi prilagodijo nastavitve naprave, ki vplivajo na vse, na primer nastavitve omreĆŸja Wi-Fi.\n\nKo dodate novega uporabnika, mora ta nastaviti svoj prostor.\n\nVsak uporabnik lahko posodobi aplikacije za vse druge uporabnike. Nastavitve in storitve za dostopnost morda ne bodo prenesene v prostor novega uporabnika."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Ko dodate novega uporabnika, mora ta nastaviti svoj prostor.\n\nVsak uporabnik lahko posodobi aplikacije za vse druge uporabnike."</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"Ćœelite tega uporabnika spremeniti v skrbnika?"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"Skrbniki imajo posebne pravice, ki jih drugi uporabniki nimajo. Skrbnik lahko upravlja vse uporabnike, posodobi ali ponastavi to napravo, spreminja nastavitve, si ogleduje vse namešÄene aplikacije ter odobri ali zavrne skrbniške pravice za druge."</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"Spremeni v skrbnika"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Naj ta uporabnik dobi skrbniške pravice?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Skrbniške pravice omogočajo upravljanje drugih uporabnikov, spreminjanje nastavitev naprave in ponastavitev naprave na tovarniške nastavitve."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Ćœelite uporabnika nastaviti zdaj?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Prepričajte se, da ima oseba čas za nastavitev svojega prostora."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Ćœelite zdaj nastaviti profil?"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"S tem boste začeli novo sejo gosta ter izbrisali vse aplikacije in podatke v trenutni seji."</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Ćœelite zapreti način za goste?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"S tem boste izbrisali aplikacije in podatke v trenutni seji gosta."</string>
-    <string name="grant_admin" msgid="4323199171790522574">"Da, spremeni v skrbnika"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"Ne, ne spremeni v skrbnika"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"Temu uporabniku podeli skrbniške pravice"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Uporabniku ne podeli skrbniških pravic"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Zapri"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Ćœelite shraniti dejavnost gosta?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Lahko shranite dejavnost v trenutni seji ali izbrišete vse aplikacije in podatke."</string>
diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml
index f5cfb95..5897466 100644
--- a/packages/SettingsLib/res/values-sq/strings.xml
+++ b/packages/SettingsLib/res/values-sq/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Më shumë kohë."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Më pak kohë."</string>
     <string name="cancel" msgid="5665114069455378395">"Anulo"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"Në rregull"</string>
     <string name="done" msgid="381184316122520313">"U krye"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmet dhe alarmet rikujtuese"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Të shtohet përdorues i ri?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Mund ta ndash këtë pajisje me persona të tjerë duke krijuar përdorues shtesë. Çdo përdorues ka hapësirën e vet, të cilën mund ta personalizojë me aplikacione, me imazhin e sfondit etj. Përdoruesit mund të rregullojnë po ashtu cilësimet e pajisjes, si Wi‑Fi, të cilat ndikojnë te të gjithë.\n\nKur shton një përdorues të ri, ai person duhet të konfigurojë hapësirën e vet.\n\nÇdo përdorues mund t\'i përditësojë aplikacionet për të gjithë përdoruesit e tjerë. Cilësimet e qasshmërisë dhe shërbimet mund të mos transferohen te përdoruesi i ri."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Kur shton një përdorues të ri, ai person duhet të konfigurojë hapësirën e vet.\n\nÇdo përdorues mund t\'i përditësojë aplikacionet për të gjithë përdoruesit e tjerë."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"T\'i jepen këtij përdoruesi privilegjet e administratorit?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Si administrator, ai person do të mund të menaxhojë përdoruesit e tjerë, të modifikojë cilësimet e pajisjes dhe ta rivendosë pajisjen në gjendje fabrike."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Të konfig. përdoruesi tani?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Sigurohu që personi të jetë i gatshëm të marrë pajisjen dhe të caktojë hapësirën e vet"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Të konfigurohet tani profili?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Kjo do të fillojë një sesion të ri për vizitorë dhe do të fshijë të gjitha aplikacionet dhe të dhënat nga sesioni aktual"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Të hiqet modaliteti \"vizitor\"?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Kjo do të fshijë aplikacionet dhe të dhënat nga sesioni aktual për vizitorë"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Jepi këtij përdoruesi privilegjet e administratorit"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Mos i jep përdoruesit privilegjet e administratorit"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Dil"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Të ruhet aktiviteti i vizitorit?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Ruaj aktivitetin nga sesioni aktual ose fshi të gjitha aplikacionet e të dhënat"</string>
diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml
index 7bd5267..32affcc 100644
--- a/packages/SettingsLib/res/values-sr/strings.xml
+++ b/packages/SettingsLib/res/values-sr/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Đ’ĐžŃˆĐ” ĐČŃ€Đ”ĐŒĐ”ĐœĐ°."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"ĐœĐ°ŃšĐ” ĐČŃ€Đ”ĐŒĐ”ĐœĐ°."</string>
     <string name="cancel" msgid="5665114069455378395">"ОтĐșажО"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"ĐŸĐŸŃ‚ĐČрЮо"</string>
     <string name="done" msgid="381184316122520313">"Đ“ĐŸŃ‚ĐŸĐČĐŸ"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"ĐĐ»Đ°Ń€ĐŒĐž Đž ĐżĐŸĐŽŃĐ”Ń‚ĐœĐžŃ†Đž"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Đ”ĐŸĐŽĐ°Ń˜Đ”Ń‚Đ” ĐœĐŸĐČĐŸĐł ĐșĐŸŃ€ĐžŃĐœĐžĐșа?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"ОĐČај ŃƒŃ€Đ”Ń’Đ°Ń˜ ĐŒĐŸĐ¶Đ”Ń‚Đ” Ўа ЎДлОтД са ĐŽŃ€ŃƒĐłĐžĐŒ Ń™ŃƒĐŽĐžĐŒĐ° аĐșĐŸ ĐœĐ°ĐżŃ€Đ°ĐČОтД Ń˜ĐŸŃˆ ĐșĐŸŃ€ĐžŃĐœĐžĐșа. ĐĄĐČаĐșĐž ĐșĐŸŃ€ĐžŃĐœĐžĐș ĐžĐŒĐ° ŃĐŸĐżŃŃ‚ĐČĐ”ĐœĐž ĐżŃ€ĐŸŃŃ‚ĐŸŃ€, ĐșĐŸŃ˜Đž ĐŒĐŸĐ¶Đ” Ўа ĐżŃ€ĐžĐ»Đ°ĐłĐŸŃ’Đ°ĐČа ĐżĐŸĐŒĐŸŃ›Ńƒ аплОĐșацоја, ĐżĐŸĐ·Đ°ĐŽĐžĐœĐ” Đž ŃĐ»ĐžŃ‡ĐœĐŸ. ĐšĐŸŃ€ĐžŃĐœĐžŃ†Đž ĐŒĐŸĐłŃƒ Ўа ĐżŃ€ĐžĐ»Đ°ĐłĐŸŃ’Đ°ĐČају Đž ĐżĐŸĐŽĐ”ŃˆĐ°ĐČања ŃƒŃ€Đ”Ń’Đ°Ń˜Đ° ĐșĐŸŃ˜Đ° уточу ĐœĐ° сĐČаĐșĐŸĐłĐ°, ĐżĐŸĐżŃƒŃ‚ Wi‑Fi-ја.\n\nКаЮа ĐŽĐŸĐŽĐ°Ń‚Đ” ĐœĐŸĐČĐŸĐł ĐșĐŸŃ€ĐžŃĐœĐžĐșа, та ĐŸŃĐŸĐ±Đ° трДба Ўа ĐżĐŸĐŽĐ”ŃĐž ŃĐŸĐżŃŃ‚ĐČĐ”ĐœĐž ĐżŃ€ĐŸŃŃ‚ĐŸŃ€.\n\nĐĄĐČаĐșĐž ĐșĐŸŃ€ĐžŃĐœĐžĐș ĐŒĐŸĐ¶Đ” Ўа Đ°Đ¶ŃƒŃ€ĐžŃ€Đ° аплОĐșĐ°Ń†ĐžŃ˜Đ” за сĐČĐ” ĐŸŃŃ‚Đ°Đ»Đ” ĐșĐŸŃ€ĐžŃĐœĐžĐșĐ”. ĐŸĐŸĐŽĐ”ŃˆĐ°ĐČања Đž услугД ĐżŃ€ĐžŃŃ‚ŃƒĐżĐ°Ń‡ĐœĐŸŃŃ‚Đž ĐœĐ” ĐŒĐŸĐłŃƒ Ўа сД ĐżŃ€Đ”ĐœĐŸŃĐ” ĐœĐ° ĐœĐŸĐČĐŸĐł ĐșĐŸŃ€ĐžŃĐœĐžĐșа."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"КаЮа ĐŽĐŸĐŽĐ°Ń‚Đ” ĐœĐŸĐČĐŸĐł ĐșĐŸŃ€ĐžŃĐœĐžĐșа, та ĐŸŃĐŸĐ±Đ° трДба Ўа ĐżĐŸĐŽĐ”ŃĐž ŃĐŸĐżŃŃ‚ĐČĐ”ĐœĐž ĐżŃ€ĐŸŃŃ‚ĐŸŃ€.\n\nĐĄĐČаĐșĐž ĐșĐŸŃ€ĐžŃĐœĐžĐș ĐŒĐŸĐ¶Đ” Ўа Đ°Đ¶ŃƒŃ€ĐžŃ€Đ° аплОĐșĐ°Ń†ĐžŃ˜Đ” за сĐČĐ” ĐŸŃŃ‚Đ°Đ»Đ” ĐșĐŸŃ€ĐžŃĐœĐžĐșĐ”."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Đ”Đ°Ń˜Đ”Ń‚Đ” проĐČОлДгОјД Đ°ĐŽĐŒĐžĐœĐžŃŃ‚Ń€Đ°Ń‚ĐŸŃ€Đ°?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"ĐšĐ°ĐŸ Đ°ĐŽĐŒĐžĐœĐžŃŃ‚Ń€Đ°Ń‚ĐŸŃ€, ĐŒĐŸŃ›Đž ћД Ўа упраĐČља ĐŽŃ€ŃƒĐłĐžĐŒ ĐșĐŸŃ€ĐžŃĐœĐžŃ†ĐžĐŒĐ°, ĐŒĐ”ŃšĐ° ĐżĐŸĐŽĐ”ŃˆĐ°ĐČања ŃƒŃ€Đ”Ń’Đ°Ń˜Đ° Đž Ń€Đ”ŃĐ”Ń‚ŃƒŃ˜Đ” ŃƒŃ€Đ”Ń’Đ°Ń˜ ĐœĐ° фабрОчĐșа ĐżĐŸĐŽĐ”ŃˆĐ°ĐČања."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"ĐŸĐŸĐŽĐ”ŃˆĐ°ĐČатД ĐșĐŸŃ€ĐžŃĐœĐžĐșа?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"йа ĐŸŃĐŸĐ±Đ° трДба Ўа ŃƒĐ·ĐŒĐ” ŃƒŃ€Đ”Ń’Đ°Ń˜ Đž ĐżĐŸĐŽĐ”ŃĐž сĐČĐŸŃ˜ ĐżŃ€ĐŸŃŃ‚ĐŸŃ€"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ЖДлОтД лО Ўа ĐŸĐŽĐŒĐ°Ń… ĐżĐŸĐŽĐ”ŃĐžŃ‚Đ” ĐżŃ€ĐŸŃ„ĐžĐ»?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ĐąĐžĐŒĐ” ћДтД ĐżĐŸĐșŃ€Đ”ĐœŃƒŃ‚Đž ĐœĐŸĐČу сДсОју ĐłĐŸŃŃ‚Đ° Đž ОзбрОсатО сĐČĐ” аплОĐșĐ°Ń†ĐžŃ˜Đ” Đž ĐżĐŸĐŽĐ°Ń‚ĐșĐ” Оз аĐșŃ‚ŃƒĐ”Đ»ĐœĐ” сДсОјД"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Đ˜Đ·Đ»Đ°Đ·ĐžŃ‚Đ” Оз Ń€Đ”Đ¶ĐžĐŒĐ° ĐłĐŸŃŃ‚Đ°?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"ĐąĐžĐŒĐ” ћДтД ОзбрОсатО сĐČĐ” аплОĐșĐ°Ń†ĐžŃ˜Đ” Đž ĐżĐŸĐŽĐ°Ń‚ĐșĐ” Оз аĐșŃ‚ŃƒĐ”Đ»ĐœĐ” сДсОјД ĐłĐŸŃŃ‚Đ°"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Дај ĐŸĐČĐŸĐŒ ĐșĐŸŃ€ĐžŃĐœĐžĐșу Đ°ĐŽĐŒĐžĐœĐžŃŃ‚Ń€Đ°Ń‚ĐŸŃ€ŃĐșĐ” проĐČОлДгОјД"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"ĐĐ” Ўај ĐșĐŸŃ€ĐžŃĐœĐžĐșу Đ°ĐŽĐŒĐžĐœĐžŃŃ‚Ń€Đ°Ń‚ĐŸŃ€ŃĐșĐ” проĐČОлДгОјД"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Đ˜Đ·Đ°Ń’Đž"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"СачуĐČаћДтД аĐșтоĐČĐœĐŸŃŃ‚Đž ĐłĐŸŃŃ‚Đ°?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"СачуĐČĐ°Ń˜Ń‚Đ” аĐșтоĐČĐœĐŸŃŃ‚Đž Оз аĐșŃ‚ŃƒĐ”Đ»ĐœĐ” сДсОјД ОлО ĐžĐ·Đ±Ń€ĐžŃˆĐžŃ‚Đ” сĐČĐ” аплОĐșĐ°Ń†ĐžŃ˜Đ” Đž ĐżĐŸĐŽĐ°Ń‚ĐșĐ”"</string>
@@ -677,7 +665,7 @@
     <string name="physical_keyboard_title" msgid="4811935435315835220">"ЀОзОчĐșа тастатура"</string>
     <string name="keyboard_layout_dialog_title" msgid="3927180147005616290">"ОЎабДрОтД Ń€Đ°ŃĐżĐŸŃ€Đ”ĐŽ Ń‚Đ°ŃŃ‚Đ°Ń‚ŃƒŃ€Đ”"</string>
     <string name="keyboard_layout_default_label" msgid="1997292217218546957">"ĐŸĐŸĐŽŃ€Đ°Đ·ŃƒĐŒĐ”ĐČĐ°ĐœĐŸ"</string>
-    <string name="turn_screen_on_title" msgid="3266937298097573424">"ĐŁĐșључоĐČањД Đ”ĐșŃ€Đ°ĐœĐ°"</string>
+    <string name="turn_screen_on_title" msgid="3266937298097573424">"ĐŁĐșŃ™ŃƒŃ‡ĐžŃ‚Đ” Đ”ĐșŃ€Đ°Đœ"</string>
     <string name="allow_turn_screen_on" msgid="6194845766392742639">"Đ”ĐŸĐ·ĐČĐŸĐ»Đž уĐșључоĐČањД Đ”ĐșŃ€Đ°ĐœĐ°"</string>
     <string name="allow_turn_screen_on_description" msgid="43834403291575164">"Đ”ĐŸĐ·ĐČĐŸŃ™Đ°ĐČа аплОĐșацојо Ўа уĐșључо Đ”ĐșŃ€Đ°Đœ. АĐșĐŸ сД ĐŸĐŒĐŸĐłŃƒŃ›Đž, аплОĐșацоја ĐŒĐŸĐ¶Đ” Ўа уĐșључо Đ”ĐșŃ€Đ°Đœ у Đ±ĐžĐ»ĐŸ ĐșĐŸĐŒ Ń‚Ń€Đ”ĐœŃƒŃ‚Đșу бДз ĐČашД Đ”ĐșŃĐżĐ»ĐžŃ†ĐžŃ‚ĐœĐ” ĐœĐ°ĐŒĐ”Ń€Đ”."</string>
     <string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"ЖДлОтД Ўа Đ·Đ°ŃƒŃŃ‚Đ°ĐČОтД Đ”ĐŒĐžŃ‚ĐŸĐČањД аплОĐșĐ°Ń†ĐžŃ˜Đ” <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
index 177eae4..f60fc83 100644
--- a/packages/SettingsLib/res/values-sv/strings.xml
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Längre tid."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Kortare tid."</string>
     <string name="cancel" msgid="5665114069455378395">"Avbryt"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Klar"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarm och påminnelser"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Lägga till ny användare?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Du kan dela enheten med andra om du skapar flera användare. Alla användare får sitt eget utrymme som de kan anpassa som de vill med appar, bakgrund och så vidare. Användarna kan även ändra enhetsinställningar som påverkar alla, till exempel wifi.\n\nNär du lägger till en ny användare måste han eller hon konfigurera sitt utrymme.\n\nAlla användare kan uppdatera appar för samtliga användares räkning. Tillgänglighetsinställningar och tjänster kanske inte överförs till den nya användaren."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"När du lägger till en ny användare måste den personen konfigurera sitt utrymme.\n\nAlla användare kan uppdatera appar för samtliga användares räkning."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Ge administratörsbehörigheter?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Som administratör kan användaren hantera andra användare, ändra enhetsinställningar och återställa enhetens standardinställningar"</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Konfigurera användare nu?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Kontrollera att personen finns tillgänglig för att konfigurera sitt utrymme på enheten"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Vill du konfigurera en profil nu?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"En ny gästsession startas och alla appar och all data från den pågående sessionen raderas"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Vill du avsluta gästläget?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Appar och data från den pågående gästsessionen raderas"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Ge den här användaren administratörsbehörigheter"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Ge inte administratörsbehörigheter"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Avsluta"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Vill du spara gästaktivitet?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Du kan spara aktivitet från den pågående sessionen eller radera appar och data"</string>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
index 6784aa5..0e3afae 100644
--- a/packages/SettingsLib/res/values-sw/strings.xml
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Muda zaidi."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Muda kidogo."</string>
     <string name="cancel" msgid="5665114069455378395">"Ghairi"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"Sawa"</string>
     <string name="done" msgid="381184316122520313">"Nimemaliza"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Ving\'ora na vikumbusho"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Ungependa kuongeza mtumiaji?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Unaweza kutumia kifaa hiki pamoja na watu wengine kwa kuongeza watumiaji wa ziada. Kila mtumiaji ana nafasi yake mwenyewe, ambayo anaweza kuweka programu, mandhari na vipengee vingine anavyopenda. Watumiaji pia wanaweza kurekebisha mipangilio ya kifaa inayoathiri kila mtu kama vile Wi-Fi.\n\nUnapomwongeza mtumiaji mpya, mtu huyo anahitaji kujitayarishia nafasi yake.\n\nMtumiaji yeyote anaweza kuwasasishia watumiaji wengine wote programu. Huenda mipangilio na huduma za ufikivu zisihamishiwe mtumiaji mgeni."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Mtumiaji mpya utakayemwongeza atahitaji kujitayarishia nafasi yake.\n\nMtumiaji yoyote anaweza kusasisha programu kwa niaba ya wengine wote."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Ungependa kumpatia mtumiaji huyu haki za msimamizi?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Akiwa msimamizi, ataweza kusimamia watumiaji wengine, kurekebisha mipangilio ya kifaa na kurejesha mipangilio ambayo kifaa kiIitoka nayo kiwandani."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Mtumiaji aongezwe sasa?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Hakikisha kuwa mtu huyu anaweza kuchukua kifaa na kujitayarishia nafasi yake"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Ungependa kuweka wasifu sasa?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Hatua hii itaanzisha upya kipindi cha mgeni na kufuta programu na data yote kwenye kipindi cha sasa"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Utafunga matumizi ya wageni?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Hatua hii itafuta programu na data kutoka kwenye kipindi cha mgeni cha sasa"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Mpatie mtumiaji huyu haki za msimamizi"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Usimpatie mtumiaji haki za msimamizi"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Funga"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Utahifadhi shughuli za mgeni?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Unaweza kuhifadhi shughuli kutoka kipindi cha sasa au kufuta programu na data yote"</string>
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index 76344cb..402aeb2 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"àźšàŻ‡àź°àź€àŻàź€àŻˆ àź…àź€àźżàź•àź°àźżàź•àŻàź•àŻàźźàŻ."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"àźšàŻ‡àź°àź€àŻàź€àŻˆàź•àŻ àź•àŻàź±àŻˆàź•àŻàź•àŻàźźàŻ."</string>
     <string name="cancel" msgid="5665114069455378395">"àź°àź€àŻàź€àŻàźšàŻ†àźŻàŻ"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"àźšàź°àźż"</string>
     <string name="done" msgid="381184316122520313">"àźźàŻàźŸàźżàźšàŻàź€àź€àŻ"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"àź…àźČàźŸàź°àź™àŻàź•àźłàŻàźźàŻ àźšàźżàź©àŻˆàź”àŻ‚àźŸàŻàźŸàźČàŻàź•àźłàŻàźźàŻ"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"àźȘàŻàź€àźżàźŻàź”àź°àŻˆàźšàŻ àźšàŻ‡àź°àŻàź•àŻàź•àź”àźŸ?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"àź•àŻ‚àźŸàŻàź€àźČàŻ àźȘàźŻàź©àź°àŻàź•àźłàŻˆ àź‰àź°àŻàź”àźŸàź•àŻàź•àŻàź”àź€àź©àŻ àźźàŻ‚àźČàźźàŻ, àźȘàźżàź±àź°àŻàźŸàź©àŻ àź‡àźšàŻàź€àźšàŻ àźšàźŸàź€àź©àź€àŻàź€àŻˆàźȘàŻ àźȘàź•àźżàź°àŻàźšàŻàź€àŻàź•àŻŠàźłàŻàźłàźČàźŸàźźàŻ. àź’àź”àŻàź”àŻŠàź°àŻ àźȘàźŻàź©àź°àŻàź•àŻàź•àŻàźźàŻ àź…àź”àź°àŻàź•àźłàŻàź•àŻàź•àŻ†àź© àź’àź°àŻ àź‡àźŸàźźàŻ àź‡àź°àŻàź•àŻàź•àŻàźźàŻ, àź…àź€àźżàźČàŻ àź…àź”àź°àŻàź•àźłàŻ àź†àźȘàŻàźžàŻ, àź”àźŸàźČàŻàźȘàŻ‡àźȘàŻàźȘàź°àŻ àźźàź±àŻàź±àŻàźźàŻ àźȘàźČàź”àź±àŻàź±àŻˆàźȘàŻ àźȘàźŻàź©àŻàźȘàźŸàŻàź€àŻàź€àźżàźȘàŻ àźȘàźżàź°àź€àŻàź€àźżàźŻàŻ‡àź•àźȘàŻàźȘàźŸàŻàź€àŻàź€àźČàźŸàźźàŻ. àź”àŻˆàźƒàźȘàŻˆ àźȘàŻ‹àź©àŻàź± àźźàź±àŻàź± àźšàźŸàź€àź© àź…àźźàŻˆàźȘàŻàźȘàŻàź•àźłàŻˆàźȘàŻ àźȘàźŻàź©àź°àŻàź•àźłàŻ àźźàźŸàź±àŻàź±àźČàźŸàźźàŻ, àź‡àźšàŻàź€ àźźàźŸàź±àŻàź±àźźàŻ àź…àź©àŻˆàź”àź°àŻàź•àŻàź•àŻàźźàŻ àźȘàŻŠàź°àŻàźšàŻàź€àŻàźźàŻ.\n\nàźšàŻ€àź™àŻàź•àźłàŻ àźȘàŻàź€àźżàźŻ àźȘàźŻàź©àź°àŻˆàźšàŻ àźšàŻ‡àź°àŻàź•àŻàź•àŻàźźàŻàźȘàŻ‹àź€àŻ, àź…àź”àź°àŻ àź€àź©àź•àŻàź•àźŸàź© àź‡àźŸàź€àŻàź€àŻˆ àź…àźźàŻˆàź•àŻàź• àź”àŻ‡àźŁàŻàźŸàŻàźźàŻ.\n\nàźŽàźšàŻàź€àź”àŻŠàź°àŻ àźȘàźŻàź©àź°àŻàźźàŻ, àźȘàźżàź± àźŽàźČàŻàźČàźŸàźȘàŻ àźȘàźŻàź©àź°àŻàź•àźłàŻàź•àŻàź•àŻàźźàźŸàź© àź†àźȘàŻàźžàŻˆàźȘàŻ àźȘàŻàź€àŻàźȘàŻàźȘàźżàź•àŻàź•àźČàźŸàźźàŻ. àź…àźŁàŻàź•àźČàŻàź€àź©àŻàźźàŻˆ àź…àźźàŻˆàźȘàŻàźȘàŻàź•àźłàŻˆàźŻàŻàźźàŻ àźšàŻ‡àź”àŻˆàź•àźłàŻˆàźŻàŻàźźàŻ, àźȘàŻàź€àźżàźŻ àźȘàźŻàź©àź°àŻàź•àŻàź•àŻ àź‡àźŸàźźàźŸàź±àŻàź± àźźàŻàźŸàźżàźŻàźŸàźźàźČàŻ àźȘàŻ‹àź•àźČàźŸàźźàŻ."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"àźȘàŻàź€àźżàźŻàź”àź°àŻˆàźšàŻ àźšàŻ‡àź°àŻàź•àŻàź•àŻàźźàŻ àźȘàŻ‹àź€àŻ, àź…àź”àź°àŻ àź€àź©àź•àŻàź•àźŸàź© àź‡àźŸàź€àŻàź€àŻˆ àź…àźźàŻˆàź•àŻàź• àź”àŻ‡àźŁàŻàźŸàŻàźźàŻ.\n\nàź‡àź°àŻàź•àŻàź•àŻàźźàŻ àź†àźȘàŻàźžàŻˆ àźŽàź”àź°àŻàźźàŻ àźȘàŻàź€àŻàźȘàŻàźȘàźżàź•àŻàź•àźČàźŸàźźàŻ."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"àźšàźżàź°àŻàź”àźŸàź• àźšàźżàź±àźȘàŻàźȘàŻàź°àźżàźźàŻˆàź•àźłàŻˆ àź”àźŽàź™àŻàź•àź”àźŸ?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"àźšàźżàź°àŻàź”àźŸàź•àźżàźŻàźŸàź•, àźźàź±àŻàź± àźȘàźŻàź©àź°àŻàź•àźłàŻˆ àźšàźżàź°àŻàź”àź•àźżàź•àŻàź•àźČàźŸàźźàŻ àźšàźŸàź€àź© àź…àźźàŻˆàźȘàŻàźȘàŻàź•àźłàŻˆ àźźàźŸàź±àŻàź±àźČàźŸàźźàŻ àźšàźŸàź€àź©àź€àŻàź€àŻˆ àź†àź°àźźàŻàźȘàźšàźżàźČàŻˆàź•àŻàź•àŻ àźźàŻ€àźŸàŻàźŸàźźàŻˆàź•àŻàź•àźČàźŸàźźàŻ."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"àź‡àźȘàŻàźȘàŻ‹àź€àŻ àźȘàźŻàź©àź°àŻˆ àź…àźźàŻˆàź•àŻàź•àź”àźŸ?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"àź‡àźšàŻàź€àźšàŻ àźšàźŸàź€àź©àź€àŻàź€àŻˆ àź‡àź”àź°àŻ àźȘàźŻàź©àŻàźȘàźŸàŻàź€àŻàź€àŻàźźàŻ àźšàźżàźČàŻˆàźŻàźżàźČàŻàźźàŻ, àź…àź”àź°àŻàź•àŻàź•àźŸàź© àź…àźźàŻˆàźȘàŻàźȘàŻàź•àźłàŻˆ àź…àź”àź°àŻ‡ àźšàŻ†àźŻàŻàź€àŻ àź•àŻŠàźłàŻàźȘàź”àź°àźŸàź•àź”àŻàźźàŻ àź‡àź°àŻàź•àŻàź• àź”àŻ‡àźŁàŻàźŸàŻàźźàŻ."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"àź‡àźȘàŻàźȘàŻ‹àź€àŻ àźšàŻàźŻàź”àźżàź”àź°àź€àŻàź€àŻˆ àź…àźźàŻˆàź•àŻàź•àź”àźŸ?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"àźȘàŻàź€àźżàźŻ àź•àŻ†àźžàŻàźŸàŻ àź…àźźàź°àŻàź”àŻ àź€àŻŠàźŸàź™àŻàź•àźȘàŻàźȘàźŸàŻàźźàŻ, àźźàŻ‡àźČàŻàźźàŻ àź€àź±àŻàźȘàŻ‹àź€àŻˆàźŻ àź•àŻ†àźžàŻàźŸàŻ àź…àźźàź°àŻàź”àźżàź©àŻ àź†àźȘàŻàźžàŻ àźźàź±àŻàź±àŻàźźàŻ àź€àź°àź”àŻ àź…àź©àŻˆàź€àŻàź€àŻàźźàŻ àźšàŻ€àź•àŻàź•àźȘàŻàźȘàźŸàŻàźźàŻ"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"àź•àŻ†àźžàŻàźŸàŻ àźźàŻàź±àŻˆàźŻàźżàźČàźżàź°àŻàźšàŻàź€àŻ àź”àŻ†àźłàźżàźŻàŻ‡àź±àź”àźŸ?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"àź€àź±àŻàźȘàŻ‹àź€àŻˆàźŻ àź•àŻ†àźžàŻàźŸàŻ àź…àźźàź°àŻàź”àźżàź©àŻ àź†àźȘàŻàźžàŻ àźźàź±àŻàź±àŻàźźàŻ àź€àź°àź”àŻ àź…àź©àŻˆàź€àŻàź€àŻàźźàŻ àźšàŻ€àź•àŻàź•àźȘàŻàźȘàźŸàŻàźźàŻ"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"àź‡àźšàŻàź€àźȘàŻ àźȘàźŻàź©àź°àŻàź•àŻàź•àŻ àźšàźżàź°àŻàź”àźŸàź•àźšàŻ àźšàźżàź±àźȘàŻàźȘàŻàź°àźżàźźàŻˆàź•àźłàŻˆ àź”àźŽàź™àŻàź•àź”àŻàźźàŻ"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"àźȘàźŻàź©àź°àŻàź•àŻàź•àŻ àźšàźżàź°àŻàź”àźŸàź•àźšàŻ àźšàźżàź±àźȘàŻàźȘàŻàź°àźżàźźàŻˆàź•àźłàŻˆ àź”àźŽàź™àŻàź• àź”àŻ‡àźŁàŻàźŸàźŸàźźàŻ"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"àź”àŻ†àźłàźżàźŻàŻ‡àź±àŻ"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"àź•àŻ†àźžàŻàźŸàŻ àźšàŻ†àźŻàźČàŻàźȘàźŸàźŸàŻàź•àźłàŻˆàźšàŻ àźšàŻ‡àźźàźżàź•àŻàź•àź”àźŸ?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"àź€àź±àŻàźȘàŻ‹àź€àŻˆàźŻ àź…àźźàź°àŻàź”àźżàź©àŻ àźšàŻ†àźŻàźČàŻàźȘàźŸàźŸàŻàź•àźłàŻˆàźšàŻ àźšàŻ‡àźźàźżàź•àŻàź•àźČàźŸàźźàŻ àź…àźČàŻàźČàź€àŻ àź†àźȘàŻàźžàŻˆàźŻàŻàźźàŻ àź€àź°àź”àŻˆàźŻàŻàźźàŻ àźšàŻ€àź•àŻàź•àźČàźŸàźźàŻ"</string>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index e31148c..d800433 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -141,7 +141,7 @@
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"రఊ్ఊు à°šà±‡à°Żà°‚à°Ąà°ż"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"à°Șà±†à°Żà°żà°°à± à°šà±‡à°Żà°Ąà°‚ à°”à°Čà°š కచెక్ట్ à°šà±‡à°Żà°Źà°Ąà°żà°šà°Ș్à°Șà±à°Ąà± à°źà±€ కటంటటక్ట్‌à°Čకు అà°Čటగే à°•à°Ÿà°Č్ à°čà°żà°žà±à°Ÿà°°à±€à°•à°ż à°Żà°Ÿà°•à±à°žà±†à°žà±‌చు à°źà°‚à°œà±‚à°°à± à°šà±‡à°žà±à°€à±à°‚à°Šà°ż."</string>
     <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>ఀో జఀ à°šà±‡à°Żà°Ąà°‚ à°žà°Ÿà°§à±à°Żà°Șà°Ąà°Čేఊు."</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"PIN à°Čేఊట à°Șటఞ్‌కీ చెà°Č్à°Čà°šà°ż à°•à°Ÿà°°à°Łà°‚à°—à°Ÿ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ఀో à°Șà±†à°Żà°żà°°à± à°šà±‡à°Żà°Ąà°‚ à°žà°Ÿà°§à±à°Żà°Șà°Ąà°Čేఊు."</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"à°Șà°żà°šà± à°Čేఊట à°Șటఞ్‌కీ చెà°Č్à°Čà°šà°ż à°•à°Ÿà°°à°Łà°‚à°—à°Ÿ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ఀో à°Șà±†à°Żà°żà°°à± à°šà±‡à°Żà°Ąà°‚ à°žà°Ÿà°§à±à°Żà°Șà°Ąà°Čేఊు."</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>ఀో à°•à°źà±à°Żà±‚à°šà°żà°•à±‡à°Ÿà± à°šà±‡à°Żà°Ąà°‚ à°žà°Ÿà°§à±à°Żà°Șà°Ąà°Šà±."</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> జఀ à°šà±‡à°Żà°Ąà°Ÿà°šà±à°šà°ż à°€à°żà°°à°žà±à°•à°°à°żà°‚à°šà°żà°‚à°Šà°ż."</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"కంà°Șà±à°Żà±‚à°Ÿà°°à±"</string>
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"ఎక్కుఔ à°žà°źà°Żà°‚."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"ఀక్కుఔ à°žà°źà°Żà°‚."</string>
     <string name="cancel" msgid="5665114069455378395">"రఊ్ఊు à°šà±‡à°Żà°‚à°Ąà°ż"</string>
-    <string name="next" msgid="2699398661093607009">"ఀర్ఔటఀ"</string>
-    <string name="back" msgid="5554327870352703710">"ఔెచుకకు"</string>
-    <string name="save" msgid="3745809743277153149">"ఞేఔ్ à°šà±‡à°Żà°‚à°Ąà°ż"</string>
     <string name="okay" msgid="949938843324579502">"ఞరే"</string>
     <string name="done" msgid="381184316122520313">"à°Șà±‚à°°à±à°€à°Żà°żà°‚à°Šà°ż"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"అà°Čà°Ÿà°°à°Ÿà°Čు, à°°à°żà°źà±ˆà°‚à°Ąà°°à±‌à°Čు"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"కొఀ్ఀ à°Żà±‚à°œà°°à±‌చు à°œà±‹à°Ąà°żà°‚à°šà°Ÿà°Čà°Ÿ?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"à°…à°Šà°šà°Șు à°Żà±‚à°œà°°à±‌à°Čచు à°•à±à°°à°żà°Żà±‡à°Ÿà± à°šà±‡à°Żà°Ąà°‚ ఊ్ఔటరట à°źà±€à°°à± ఈ à°Șà°°à°żà°•à°°à°Ÿà°šà±à°šà°ż ఇఀరుà°Čఀో షేర్ à°šà±‡à°Żà°”à°šà±à°šà±. à°Șà±à°°à°€à°ż à°Żà±‚à°œà°°à±‌కు‌ à°”à°Ÿà°°à°żà°•à°‚à°Ÿà±‚ à°Șà±à°°à°€à±à°Żà±‡à°• ఞ్ఄà°Čం à°‰à°‚à°Ÿà±à°‚à°Šà°ż, ఔటరు ఆ ఞ్ఄà°Čà°Ÿà°šà±à°šà°ż à°Żà°Ÿà°Ș్‌à°Čు, ఔటà°Č్‌à°Șేà°Șర్ à°źà±Šà°Šà°Čà±ˆà°šà°”à°Ÿà°Ÿà°żà°€à±‹ అచుకూà°Čà°‚à°—à°Ÿ à°źà°Ÿà°°à±à°šà°”à°šà±à°šà±. à°Żà±‚à°œà°°à±‌à°Čు à°Șà±à°°à°€à°ż à°’à°•à±à°•à°°à°żà°Șై à°Ș్రభటఔం చూà°Șే Wi‑Fi à°”à°‚à°Ÿà°ż à°Șà°°à°żà°•à°° à°žà±†à°Ÿà±à°Ÿà°żà°‚à°—à±‌à°Čచు à°•à±‚à°Ąà°Ÿ à°žà°°à±à°Šà±à°Źà°Ÿà°Ÿà± à°šà±‡à°Żà°”à°šà±à°šà±.\n\nà°źà±€à°°à± కొఀ్ఀ à°Żà±‚à°œà°°à±‌చు à°œà±‹à°Ąà°żà°‚à°šà°żà°šà°Ș్à°Șà±à°Ąà±, ఆ à°”à±à°Żà°•à±à°€à°ż à°”à°Ÿà°°à°żà°•à°‚à°Ÿà±‚ ఞ్ఔంఀ ఞ్ఄà°Čం ఞెట్ చేఞుకోఔటà°Čà°ż.\n\nఏ à°Żà±‚à°œà°°à± à°…à°Żà°żà°šà°Ÿ à°źà°żà°—à°żà°Čà°żà°š à°Żà±‚à°œà°°à±‌à°Čà°‚à°Šà°°à°ż కోఞం à°Żà°Ÿà°Ș్‌à°Čచు అà°Ș్‌à°Ąà±‡à°Ÿà± à°šà±‡à°Żà°”à°šà±à°šà±. à°Żà°Ÿà°•à±à°žà±†à°žà°żà°Źà°żà°Čà°żà°Ÿà±€ à°žà±†à°Ÿà±à°Ÿà°żà°‚à°—à±‌à°Čు, ఞర్ఔీఞ్‌à°Čు కొఀ్ఀ à°Żà±‚à°œà°°à±‌à°•à°ż à°Źà°Šà°żà°Čీ à°•à°Ÿà°•à°Șోఔచ్చు."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"à°źà±€à°°à± కొఀ్ఀ à°Żà±‚à°œà°°à±‌చు à°œà±‹à°Ąà°żà°‚à°šà°żà°šà°Ș్à°Șà±à°Ąà±, ఆ à°”à±à°Żà°•à±à°€à°ż ఀచ ఞ్à°Șేఞ్‌చు ఞెటà°Ș్ చేఞుకోఔటà°Čà°ż.\n\nఏ à°Żà±‚à°œà°°à± à°…à°Żà°żà°šà°Ÿ à°źà°żà°—à°€à°Ÿ à°Żà±‚à°œà°°à±à°Č కోఞం à°Żà°Ÿà°Ș్‌à°Čచు అà°Ș్‌à°Ąà±‡à°Ÿà±‌ à°šà±‡à°Żà°—à°Čరు."</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"ఈ à°Żà±‚à°œà°°à±‌చు à°…à°Ąà±à°źà°żà°šà± à°šà±‡à°Żà°Ÿà°Čà°Ÿ?"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"à°Żà±‚à°œà°°à±‌à°Čకు à°Čà±‡à°šà°ż à°Șà±à°°à°€à±à°Żà±‡à°• à°čక్కుà°Čు à°…à°Ąà±à°źà°żà°šà±‌à°Čకు à°‰à°‚à°Ÿà°Ÿà°Żà°ż. à°…à°Ąà±à°źà°żà°šà±, à°Żà±‚à°œà°°à±‌à°Čà°‚à°Šà°°à°żà°šà±€ à°źà±‡à°šà±‡à°œà± à°šà±‡à°Żà°—à°Čరు, ఈ à°Șà°°à°żà°•à°°à°Ÿà°šà±à°šà°ż అà°Ș్‌à°Ąà±‡à°Ÿà± à°Čేఊట రీఞెట్ à°šà±‡à°Żà°—à°Čరు, à°žà±†à°Ÿà±à°Ÿà°żà°‚à°—à±‌à°Čచు à°źà°Ÿà°°à±à°šà°—à°Čరు, ఇచ్‌ఞ్టటà°Č్ à°…à°Żà±à°Żà°ż à°‰à°‚à°Ąà±‡ à°Żà°Ÿà°Ș్‌à°Čà°šà±à°šà°żà°‚à°Ÿà°żà°šà±€ à°šà±‚à°Ąà°—à°Čరు, ఇఀరుà°Čకు à°…à°Ąà±à°źà°żà°šà± à°čక్కుà°Čచు ఇఔ్ఔగà°Čరు, à°Čేఊట ఉà°Șà°žà°‚à°čà°°à°żà°‚à°šà°—à°Čరు."</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"à°…à°Ąà±à°źà°żà°šà±‌à°—à°Ÿ à°šà±‡à°Żà°Ÿà°Čà°ż"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"à°”à±€à°°à°żà°•à°ż à°…à°Ąà±à°źà°żà°šà± à°čక్కు ఇఔ్ఔటà°Čà°Ÿ?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"ఒక à°…à°Ąà±à°źà°żà°šà±‌à°—à°Ÿ, ఔటరు ఇఀర à°Żà±‚à°œà°°à±‌à°Čచు à°źà±‡à°šà±‡à°œà± à°šà±‡à°Żà°—à°Čరు, à°Șà°°à°żà°•à°° à°žà±†à°Ÿà±à°Ÿà°żà°‚à°—à±‌à°Čచు à°Žà°Ąà°żà°Ÿà± à°šà±‡à°Żà°—à°Čరు, à°Șà°°à°żà°•à°°à°Ÿà°šà±à°šà°ż à°«à±à°Żà°Ÿà°•à±à°Ÿà°°à±€ రీఞెట్ à°šà±‡à°Żà°—à°Čరు."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"à°Żà±‚à°œà°°à±‌చు ఇà°Ș్à°Șà±à°Ąà±‡ ఞెటà°Ș్ à°šà±‡à°Żà°Ÿà°Čà°Ÿ?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"à°Șà°°à°żà°•à°°à°Ÿà°šà±à°šà°ż à°€à±€à°žà±à°•à±‹à°”à°Ąà°Ÿà°šà°żà°•à°ż à°”à±à°Żà°•à±à°€à°ż à°…à°‚à°Šà±à°Źà°Ÿà°Ÿà±à°Čో à°‰à°šà±à°šà°Ÿà°°à°šà°ż à°šà°żà°°à±à°§à°Ÿà°°à°żà°‚à°šà±à°•à±Šà°šà°ż, ఆà°Șై à°”à°Ÿà°°à°żà°•à°ż ఞ్టోరేజ్‌ ఞ్ఄà°Čà°Ÿà°šà±à°šà°ż ఞెటà°Ș్ à°šà±‡à°Żà°‚à°Ąà°ż"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ఇà°Ș్à°Șà±à°Ąà± à°Ș్రొఫైà°Č్‌చు ఞెటà°Ș్ à°šà±‡à°Żà°Ÿà°Čà°Ÿ?"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"à°‡à°Šà°ż కొఀ్ఀ గెఞ్ట్ ఞెషచ్‌చు à°Șà±à°°à°Ÿà°°à°‚à°­à°żà°žà±à°€à±à°‚à°Šà°ż, à°Ș్రఞ్ఀుఀ ఞెషచ్ à°šà±à°‚à°Ąà°ż à°…à°šà±à°šà°ż à°Żà°Ÿà°Ș్‌à°Čు, à°Ąà±‡à°Ÿà°Ÿà°šà± ఀొà°Čà°—à°żà°žà±à°€à±à°‚à°Šà°ż."</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"గెఞ్ట్ à°źà±‹à°Ąà± à°šà±à°‚à°Ąà°ż ఔైఊొà°Čà°—à°Ÿà°Čà°Ÿ?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"à°‡à°Šà°ż à°Ș్రఞ్ఀుఀ గెఞ్ట్ ఞెషచ్ à°šà±à°‚à°Ąà°ż à°Żà°Ÿà°Ș్‌à°Čచు à°”à°Ÿà°Ÿà°żà°€à±‹ à°Șటటు à°Ąà±‡à°Ÿà°Ÿà°šà± ఀొà°Čà°—à°żà°žà±à°€à±à°‚à°Šà°ż"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"అఔుచు, à°”à°Ÿà°°à°żà°šà°ż à°…à°Ąà±à°źà°żà°šà± à°šà±‡à°Żà°Ÿà°Čà°ż"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"ఔఊ్ఊు, à°”à°Ÿà°°à°żà°šà°ż à°…à°Ąà±à°źà°żà°šà± à°šà±‡à°Żà°”à°Šà±à°Šà±"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"ఈ à°Żà±‚à°œà°°à±‌కు à°…à°Ąà±à°źà°żà°šà± à°čక్కుà°Čచు à°‡à°”à±à°”à°‚à°Ąà°ż"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"à°Żà±‚à°œà°°à±‌కు à°…à°Ąà±à°źà°żà°šà± à°čక్కుà°Čచు à°‡à°”à±à°”à°•à°‚à°Ąà°ż"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"ఔైఊొà°Čà°—à°‚à°Ąà°ż"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"గెఞ్ట్ à°Żà°Ÿà°•à±à°Ÿà°żà°”à°żà°Ÿà±€à°šà°ż ఞేఔ్ à°šà±‡à°Żà°Ÿà°Čà°Ÿ?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"à°źà±€à°°à± ఞెషచ్ à°šà±à°‚à°Ąà°ż à°Żà°Ÿà°•à±à°Ÿà°żà°”à°żà°Ÿà±€à°šà°ż ఞేఔ్ à°šà±‡à°Żà°”à°šà±à°šà±, à°…à°šà±à°šà°ż à°Żà°Ÿà°Ș్‌à°Čు, à°Ąà±‡à°Ÿà°Ÿà°šà± ఀొà°Čà°—à°żà°‚à°šà°”à°šà±à°šà±"</string>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index 54545c1b6..89b8ce2 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -136,12 +136,12 @@
     <string name="bluetooth_hid_profile_summary_use_for" msgid="4289460627406490952">"àčƒàžŠàč‰àžȘàžłàž«àžŁàž±àžšàžàžČàžŁàž›àč‰àž­àž™àž‚àč‰àž­àžĄàžčàž„"</string>
     <string name="bluetooth_hearing_aid_profile_summary_use_for" msgid="7689393730163320483">"àčƒàžŠàč‰àžȘàžłàž«àžŁàž±àžšàč€àž„àžŁàž·àčˆàž­àž‡àžŠàčˆàž§àžąàžŸàž±àž‡"</string>
     <string name="bluetooth_le_audio_profile_summary_use_for" msgid="2778318636027348572">"àčƒàžŠàč‰àžȘàžłàž«àžŁàž±àžš LE_AUDIO"</string>
-    <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"àžˆàž±àžšàž„àžčàčˆ"</string>
+    <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"àžˆàž±àžšàž„àžčàčˆàž­àžžàž›àžàžŁàž“àčŒ"</string>
     <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"àžˆàž±àžšàž„àžčàčˆàž­àžžàž›àžàžŁàž“àčŒ"</string>
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"àžąàžàč€àž„àžŽàž"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"àžàžČàžŁàžˆàž±àžšàž„àžčàčˆàž­àžžàž›àžàžŁàž“àčŒàžˆàž°àčƒàž«àč‰àžȘàžŽàž—àž˜àžŽàčŒàžàžČàžŁàč€àž‚àč‰àžČàž–àž¶àž‡àž—àž”àčˆàž­àžąàžčàčˆàž•àžŽàž”àž•àčˆàž­àčàž„àž°àž›àžŁàž°àž§àž±àž•àžŽàžàžČàžŁàč‚àž—àžŁàč€àžĄàž·àčˆàž­àč€àžŠàž·àčˆàž­àžĄàž•àčˆàž­àčàž„àč‰àž§"</string>
     <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"àč„àžĄàčˆàžȘàžČàžĄàžČàžŁàž–àžˆàž±àžšàž„àžčàčˆàžàž±àžš <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"àč„àžĄàčˆàžȘàžČàžĄàžČàžŁàž–àžˆàž±àžšàž„àžčàčˆàžàž±àžš <xliff:g id="DEVICE_NAME">%1$s</xliff:g> àč„àž”àč‰àč€àžžàžŁàžČàž° PIN àž«àžŁàž·àž­àžžàžČàžȘàž„àž”àžąàčŒàč„àžĄàčˆàž–àžčàžàž•àč‰àž­àž‡"</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"àč„àžĄàčˆàžȘàžČàžĄàžČàžŁàž–àžˆàž±àžšàž„àžčàčˆàžàž±àžš <xliff:g id="DEVICE_NAME">%1$s</xliff:g> àč„àž”àč‰àč€àžžàžŁàžČàž° PIN àž«àžŁàž·àž­àžŁàž«àž±àžȘàžœàčˆàžČàž™àč„àžĄàčˆàž–àžčàžàž•àč‰àž­àž‡"</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"àč„àžĄàčˆàžȘàžČàžĄàžČàžŁàž–àč€àžŠàž·àčˆàž­àžĄàž•àčˆàž­àžàž±àžš <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> àž›àžàžŽàč€àžȘàž˜àžàžČàžŁàžˆàž±àžšàž„àžčàčˆàž­àžžàž›àžàžŁàž“àčŒ"</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"àž„àž­àžĄàžžàžŽàž§àč€àž•àž­àžŁàčŒ"</string>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"àč€àž§àž„àžČàžĄàžČàžàž‚àž¶àč‰àž™"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"àč€àž§àž„àžČàž™àč‰àž­àžąàž„àž‡"</string>
     <string name="cancel" msgid="5665114069455378395">"àžąàžàč€àž„àžŽàž"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"àž•àžàž„àž‡"</string>
     <string name="done" msgid="381184316122520313">"àč€àžȘàžŁàč‡àžˆàžȘàžŽàč‰àž™"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"àžàžČàžŁàž›àž„àžžàžàčàž„àž°àžàžČàžŁàžŠàčˆàž§àžąàč€àž•àž·àž­àž™"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"àž•àč‰àž­àž‡àžàžČàžŁàč€àžžàžŽàčˆàžĄàžœàžčàč‰àčƒàžŠàč‰àčƒàž«àžĄàčˆàčƒàžŠàčˆàč„àž«àžĄ"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"àž„àžžàž“àžĄàž”àžȘàžŽàž—àž˜àžŽàčŒàčàžŠàžŁàčŒàž­àžžàž›àžàžŁàž“àčŒàž™àž”àč‰àžàž±àžšàžœàžčàč‰àž­àž·àčˆàž™àč„àž”àč‰àč‚àž”àžąàžàžČàžŁàč€àžžàžŽàčˆàžĄàžœàžčàč‰àčƒàžŠàč‰ àčàž•àčˆàž„àž°àž„àž™àžˆàž°àžĄàž”àžžàž·àč‰àž™àž—àž”àčˆàž‚àž­àž‡àž•àž™àč€àž­àž‡àž‹àž¶àčˆàž‡àž›àžŁàž±àžšàčƒàžŠàč‰àžàž±àžšàčàž­àž› àž§àž­àž„àč€àž›àč€àž›àž­àžŁàčŒ àčàž„àž°àžŁàžČàžąàžàžČàžŁàž­àž·àčˆàž™àč† àč„àž”àč‰ àž­àž”àžàž—àž±àč‰àž‡àžąàž±àž‡àž›àžŁàž±àžšàžàžČàžŁàž•àž±àč‰àž‡àž„àčˆàžČàž­àžžàž›àžàžŁàž“àčŒàč„àž”àč‰àž”àč‰àž§àžą àč€àžŠàčˆàž™ Wi‑Fi àž‹àž¶àčˆàž‡àžˆàž°àžĄàž”àžœàž„àžàž±àžšàž—àžžàžàž„àž™\n\nàč€àžĄàž·àčˆàž­àž„àžžàž“àč€àžžàžŽàčˆàžĄàžœàžčàč‰àčƒàžŠàč‰àčƒàž«àžĄàčˆ àžœàžčàč‰àčƒàžŠàč‰àž”àž±àž‡àžàž„àčˆàžČàž§àžˆàž°àž•àč‰àž­àž‡àž•àž±àč‰àž‡àž„àčˆàžČàžžàž·àč‰àž™àž—àž”àčˆàž‚àž­àž‡àž•àž™\n\nàžœàžčàč‰àčƒàžŠàč‰àž—àžžàžàž„àž™àžĄàž”àžȘàžŽàž—àž˜àžŽàčŒàž­àž±àž›àč€àž”àž•àčàž­àž›àčƒàž«àč‰àžœàžčàč‰àčƒàžŠàč‰àžŁàžČàžąàž­àž·àčˆàž™ àžàžČàžŁàž•àž±àč‰àž‡àž„àčˆàžČàčàž„àž°àžšàžŁàžŽàžàžČàžŁàžȘàžłàž«àžŁàž±àžšàžàžČàžŁàžŠàčˆàž§àžąàč€àž«àž„àž·àž­àžžàžŽàč€àžšàž©àž­àžČàžˆàč‚àž­àž™àč„àž›àžąàž±àž‡àžœàžčàč‰àčƒàžŠàč‰àčƒàž«àžĄàčˆàč„àžĄàčˆàč„àž”àč‰"</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"àč€àžĄàž·àčˆàž­àž„àžžàž“àč€àžžàžŽàčˆàžĄàžœàžčàč‰àčƒàžŠàč‰àčƒàž«àžĄàčˆ àžœàžčàč‰àčƒàžŠàč‰àž”àž±àž‡àžàž„àčˆàžČàž§àžˆàž°àž•àč‰àž­àž‡àž•àž±àč‰àž‡àž„àčˆàžČàžžàž·àč‰àž™àž—àž”àčˆàž‚àž­àž‡àž•àž™àč€àž­àž‡\n\nàžœàžčàč‰àčƒàžŠàč‰àž—àžžàžàž„àž™àžȘàžČàžĄàžČàžŁàž–àž­àž±àž›àč€àž”àž•àčàž­àž›àžȘàžłàž«àžŁàž±àžšàžœàžčàč‰àčƒàžŠàč‰àžŁàžČàžąàž­àž·àčˆàž™àč„àž”àč‰"</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"àčƒàž«àč‰àžȘàžŽàž—àž˜àžŽàčŒàžœàžčàč‰àž”àžčàčàž„àčàžàčˆàžœàžčàč‰àčƒàžŠàč‰àč„àž«àžĄ"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"àžœàžčàč‰àž”àžčàčàž„àžŁàž°àžšàžšàžˆàž°àžȘàžČàžĄàžČàžŁàž–àžˆàž±àž”àžàžČàžŁàžœàžčàč‰àčƒàžŠàč‰àžŁàžČàžąàž­àž·àčˆàž™ àčàžàč‰àč„àž‚àžàžČàžŁàž•àž±àč‰àž‡àž„àčˆàžČàž­àžžàž›àžàžŁàž“àčŒ àčàž„àž°àžŁàž”àč€àž‹àč‡àž•àž­àžžàž›àžàžŁàž“àčŒàč€àž›àč‡àž™àž„àčˆàžČàč€àžŁàžŽàčˆàžĄàž•àč‰àž™àč„àž”àč‰"</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"àž•àž±àč‰àž‡àž„àčˆàžČàžœàžčàč‰àčƒàžŠàč‰àč€àž„àžąàč„àž«àžĄ"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"àž•àžŁàž§àžˆàžȘàž­àžšàž§àčˆàžČàžšàžžàž„àž„àž„àž”àž±àž‡àžàž„àčˆàžČàž§àžȘàžČàžĄàžČàžŁàž–àž™àžłàž­àžžàž›àžàžŁàž“àčŒàč„àž›àž•àž±àč‰àž‡àž„àčˆàžČàžžàž·àč‰àž™àž—àž”àčˆàž‚àž­àž‡àž•àž™àč„àž”àč‰"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"àž«àžČàžàž•àč‰àž­àž‡àžàžČàžŁàž•àž±àč‰àž‡àž„àčˆàžČàč‚àž›àžŁàč„àžŸàž„àčŒàž—àž±àž™àž—àž”"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"àžàžČàžŁàž”àžłàč€àž™àžŽàž™àžàžČàžŁàž™àž”àč‰àžˆàž°àč€àžŁàžŽàčˆàžĄàč€àž‹àžȘàžŠàž±àž™àžœàžčàč‰àčƒàžŠàč‰àžŠàž±àčˆàž§àž„àžŁàžČàž§àčƒàž«àžĄàčˆ àčàž„àž°àžˆàž°àž„àžšàčàž­àž›àčàž„àž°àž‚àč‰àž­àžĄàžčàž„àž—àž±àč‰àž‡àž«àžĄàž”àžˆàžČàžàč€àž‹àžȘàžŠàž±àž™àž›àž±àžˆàžˆàžžàžšàž±àž™"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"àž­àž­àžàžˆàžČàžàč‚àž«àžĄàž”àžœàžčàč‰àčƒàžŠàč‰àžŠàž±àčˆàž§àž„àžŁàžČàž§àč„àž«àžĄ"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"àžàžČàžŁàž”àžłàč€àž™àžŽàž™àžàžČàžŁàž™àž”àč‰àžˆàž°àž„àžšàčàž­àž›àčàž„àž°àž‚àč‰àž­àžĄàžčàž„àž­àž­àžàžˆàžČàžàč€àž‹àžȘàžŠàž±àž™àžœàžčàč‰àčƒàžŠàč‰àžŠàž±àčˆàž§àž„àžŁàžČàž§àčƒàž™àž›àž±àžˆàžˆàžžàžšàž±àž™"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"àčƒàž«àč‰àžȘàžŽàž—àž˜àžŽàčŒàž‚àž­àž‡àžœàžčàč‰àž”àžčàčàž„àžŁàž°àžšàžšàčàžàčˆàžœàžčàč‰àčƒàžŠàč‰àžŁàžČàžąàž™àž”àč‰"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"àč„àžĄàčˆàčƒàž«àč‰àžȘàžŽàž—àž˜àžŽàčŒàž‚àž­àž‡àžœàžčàč‰àž”àžčàčàž„àžŁàž°àžšàžšàčàžàčˆàžœàžčàč‰àčƒàžŠàč‰àžŁàžČàžąàž™àž”àč‰"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"àž­àž­àž"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"àžšàž±àž™àž—àž¶àžàžàžŽàžˆàžàžŁàžŁàžĄàž‚àž­àž‡àžœàžčàč‰àčƒàžŠàč‰àžŠàž±àčˆàž§àž„àžŁàžČàž§àč„àž«àžĄ"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"àž„àžžàž“àžȘàžČàžĄàžČàžŁàž–àžšàž±àž™àž—àž¶àžàžàžŽàžˆàžàžŁàžŁàžĄàžˆàžČàžàč€àž‹àžȘàžŠàž±àž™àž›àž±àžˆàžˆàžžàžšàž±àž™àž«àžŁàž·àž­àžˆàž°àž„àžšàčàž­àž›àčàž„àž°àž‚àč‰àž­àžĄàžčàž„àž—àž±àč‰àž‡àž«àžĄàž”àžàč‡àč„àž”àč‰"</string>
diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml
index 6e23eba..dbd3a8b 100644
--- a/packages/SettingsLib/res/values-tl/strings.xml
+++ b/packages/SettingsLib/res/values-tl/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Dagdagan ang oras."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Bawasan ang oras."</string>
     <string name="cancel" msgid="5665114069455378395">"Kanselahin"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Tapos na"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Mga alarm at paalala"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Magdagdag ng bagong user?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Puwede mong ibahagi ang device na ito sa ibang tao sa pamamagitan ng paggawa ng mga karagdagang user. May sariling espasyo ang bawat user na maaari nilang i-customize gamit ang mga app, wallpaper, at iba pa. Puwede ring isaayos ng mga user ang mga setting ng device tulad ng Wi‑Fi na nakakaapekto sa lahat.\n\nKapag nagdagdag ka ng bagong user, kailangang i-set up ng taong iyon ang kanyang espasyo.\n\nMaaaring mag-update ng mga app ang sinumang user para sa lahat ng iba pang user. Maaaring hindi malipat sa bagong user ang mga setting at serbisyo sa pagiging naa-access."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Kapag nagdagdag ka ng bagong user, kailangang i-set up ng taong iyon ang kanyang espasyo.\n\nAng sinumang user ay puwedeng mag-update ng mga app para sa lahat ng iba pang user."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Bigyan ang user na ito ng mga pribilehiyo ng admin?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Bilang admin, magagawa niyang pamahalaan ang iba pang user, baguhin ang mga setting ng device, at i-factory reset ang device."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"I-set up ang user ngayon?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Tiyaking available ang tao na kunin ang device at i-set up ang kanyang space"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Mag-set up ng profile ngayon?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Magsisimula ito ng bagong session ng bisita at made-delete ang lahat ng app at data mula sa kasalukuyang session"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Umalis sa guest mode?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Ide-delete nito ang mga app at data mula sa kasalukuyang session ng bisita"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Bigyan ang user na ito ng mga pribilehiyo ng admin"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Huwag bigyan ang user ng mga pribilehiyo ng admin"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Umalis"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"I-save ang aktibidad ng bisita?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Puwedeng i-save ang aktibidad ng session ngayon o i-delete lahat ng app at data"</string>
diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml
index 6187ad2..f8945c7 100644
--- a/packages/SettingsLib/res/values-tr/strings.xml
+++ b/packages/SettingsLib/res/values-tr/strings.xml
@@ -141,7 +141,7 @@
     <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"İptal"</string>
     <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Eßleme ißlemi, bağlantı kurulduğunda kißilerinize ve çağrı geçmißine erißim izni verir."</string>
     <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ile eßlenemedi."</string>
-    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"PIN veya ßifre anahtarı yanlıß olduğundan <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ile eßlenemedi."</string>
+    <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"PIN veya parola yanlıß olduğundan <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ile eßlenemedi."</string>
     <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ile iletißim kurulamıyor."</string>
     <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Eßleme <xliff:g id="DEVICE_NAME">%1$s</xliff:g> tarafından reddedildi."</string>
     <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Bilgisayar"</string>
@@ -486,7 +486,7 @@
     <string name="disabled" msgid="8017887509554714950">"Devre dıßı"</string>
     <string name="external_source_trusted" msgid="1146522036773132905">"İzin verildi"</string>
     <string name="external_source_untrusted" msgid="5037891688911672227">"İzin verilmiyor"</string>
-    <string name="install_other_apps" msgid="3232595082023199454">"Bilinmeyen uygulamaları yükleme"</string>
+    <string name="install_other_apps" msgid="3232595082023199454">"Bilinmeyen uygulamaları yükle"</string>
     <string name="home" msgid="973834627243661438">"Ayarlar Ana Sayfası"</string>
   <string-array name="battery_labels">
     <item msgid="7878690469765357158">"%0"</item>
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Daha uzun süre."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Daha kısa süre."</string>
     <string name="cancel" msgid="5665114069455378395">"İptal"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"Tamam"</string>
     <string name="done" msgid="381184316122520313">"Bitti"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmlar ve hatırlatıcılar"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Yeni kullanıcı eklensin mi?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Ek kullanıcılar olußturarak bu cihazı baßkalarıyla paylaßabilirsiniz. Her kullanıcının uygulamalarla, duvar kağıdıyla ve baßka ayarlarla özelleßtirebileceği kendi alanı olur. Kullanıcılar ayrıca kablosuz ağ gibi herkesi etkileyen cihaz ayarlarını değißtirebilirler.\n\nYeni bir kullanıcı eklediğinizde, ilgili kißinin kendi alanını ayarlaması gerekir.\n\nHer kullanıcı diğer tüm kullanıcılar için uygulamaları güncelleyebilir. Erißilebilirlik ayarları ve hizmetleri yeni kullanıcıya aktarılamayabilir."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Yeni bir kullanıcı eklediğinizde, bu kißinin kendi alanını ayarlaması gerekir.\n\nHerhangi bir kullanıcı, diğer tüm kullanıcılar için uygulamaları güncelleyebilir."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Yönetici ayrıcalıkları verilsin mi?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Yönetici olan kullanıcılar diğer kullanıcıları yönetebilir, cihaz ayarlarını değißtirebilir ve cihazı fabrika ayarlarına sıfırlayabilir."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Kullanıcı ßimdi ayarlansın mı?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"İlgili kißinin cihazı almak ve kendi alanını ayarlamak için müsait olduğundan emin olun"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profil ßimdi yapılandırılsın mı?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Bu ißlem, yeni bir misafir oturumu baßlatarak mevcut oturumdaki tüm uygulamaları ve verileri siler"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Misafir modundan çıkılsın mı?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Bu ißlem mevcut misafir oturumundaki tüm uygulamaları ve verileri siler"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Bu kullanıcıya yönetici ayrıcalıkları verin"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Bu kullanıcıya yönetici ayrıcalıkları vermeyin"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Çık"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Misafir etkinliği kaydedilsin mi?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Oturumdaki etkinliği kaydedebilir ya da tüm uygulama ve verileri silebilirsiniz"</string>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
index 96708ff..15c24e8 100644
--- a/packages/SettingsLib/res/values-uk/strings.xml
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Đ‘Ń–Đ»ŃŒŃˆĐ” часу."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"ĐœĐ”ĐœŃˆĐ” часу."</string>
     <string name="cancel" msgid="5665114069455378395">"ĐĄĐșасуĐČато"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"ОК"</string>
     <string name="done" msgid="381184316122520313">"Đ“ĐŸŃ‚ĐŸĐČĐŸ"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Đ‘ŃƒĐŽĐžĐ»ŃŒĐœĐžĐșĐž Đč ĐœĐ°ĐłĐ°ĐŽŃƒĐČĐ°ĐœĐœŃ"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Đ”ĐŸĐŽĐ°Ń‚Đž ĐœĐŸĐČĐŸĐłĐŸ ĐșĐŸŃ€ĐžŃŃ‚ŃƒĐČача?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"ĐŠĐžĐŒ ĐżŃ€ĐžŃŃ‚Ń€ĐŸŃ”ĐŒ ĐŒĐŸĐ¶ŃƒŃ‚ŃŒ ĐșĐŸŃ€ĐžŃŃ‚ŃƒĐČатося ĐșŃ–Đ»ŃŒĐșа люЎДĐč. Đ”Đ»Ń Ń†ŃŒĐŸĐłĐŸ ĐżĐŸŃ‚Ń€Ń–Đ±ĐœĐŸ стĐČĐŸŃ€ĐžŃ‚Đž ĐŽĐŸĐŽĐ°Ń‚ĐșĐŸĐČі ĐżŃ€ĐŸŃ„Ń–Đ»Ń–. Đ’Đ»Đ°ŃĐœĐžĐș ĐżŃ€ĐŸŃ„Ń–Đ»ŃŽ ĐŒĐŸĐ¶Đ” ĐœĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČато ĐčĐŸĐłĐŸ ĐœĐ° сĐČіĐč ŃĐŒĐ°Đș: ĐČОбратО Ń„ĐŸĐœĐŸĐČĐžĐč ĐŒĐ°Đ»ŃŽĐœĐŸĐș, ŃƒŃŃ‚Đ°ĐœĐŸĐČото ĐżĐŸŃ‚Ń€Ń–Đ±ĐœŃ– ĐŽĐŸĐŽĐ°Ń‚ĐșĐž Ń‚ĐŸŃ‰ĐŸ. ĐšĐŸŃ€ĐžŃŃ‚ŃƒĐČачі таĐșĐŸĐ¶ ĐŒĐŸĐ¶ŃƒŃ‚ŃŒ ĐœĐ°Đ»Đ°ŃˆŃ‚ĐŸĐČуĐČато пДĐČĐœŃ– ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đž ĐżŃ€ĐžŃŃ‚Ń€ĐŸŃŽ (яĐș-ĐŸŃ‚ Wi-Fi), яĐșі Đ·Đ°ŃŃ‚ĐŸŃĐŸĐČуĐČĐ°Ń‚ĐžĐŒŃƒŃ‚ŃŒŃŃ ĐŽĐŸ Ń€Đ”ŃˆŃ‚Đž ĐżŃ€ĐŸŃ„Ń–Đ»Ń–ĐČ.\n\nĐŸŃ–ŃĐ»Ń стĐČĐŸŃ€Đ”ĐœĐœŃ ĐœĐŸĐČĐžĐč ĐżŃ€ĐŸŃ„Ń–Đ»ŃŒ ĐżĐŸŃ‚Ń€Ń–Đ±ĐœĐŸ ĐœĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČато.\n\nБуЮь-яĐșĐžĐč ĐșĐŸŃ€ĐžŃŃ‚ŃƒĐČач ĐżŃ€ĐžŃŃ‚Ń€ĐŸŃŽ ĐŒĐŸĐ¶Đ” ĐŸĐœĐŸĐČлюĐČато ĐŽĐŸĐŽĐ°Ń‚ĐșĐž ĐŽĐ»Ń Ń€Đ”ŃˆŃ‚Đž ĐșĐŸŃ€ĐžŃŃ‚ŃƒĐČачіĐČ. ĐĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ ŃĐżĐ”Ń†Ń–Đ°Đ»ŃŒĐœĐžŃ… ĐŒĐŸĐ¶Đ»ĐžĐČĐŸŃŃ‚Đ”Đč і сДрĐČісіĐČ ĐŒĐŸĐ¶ŃƒŃ‚ŃŒ ĐœĐ” пДрДЎаĐČатося ĐœĐŸĐČĐŸĐŒŃƒ ĐșĐŸŃ€ĐžŃŃ‚ŃƒĐČачДĐČі."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"ĐšĐŸŃ€ĐžŃŃ‚ŃƒĐČач ĐŒĐ°Ń” ĐœĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČато сĐČіĐč ĐżŃ€ĐŸŃ„Ń–Đ»ŃŒ ĐżŃ–ŃĐ»Ń стĐČĐŸŃ€Đ”ĐœĐœŃ.\n\nБуЮь-яĐșĐžĐč ĐșĐŸŃ€ĐžŃŃ‚ŃƒĐČач ĐżŃ€ĐžŃŃ‚Ń€ĐŸŃŽ ĐŒĐŸĐ¶Đ” ĐŸĐœĐŸĐČлюĐČато ĐŽĐŸĐŽĐ°Ń‚ĐșĐž ĐŽĐ»Ń Ń€Đ”ŃˆŃ‚Đž ĐșĐŸŃ€ĐžŃŃ‚ŃƒĐČачіĐČ."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"НаЮато праĐČа Đ°ĐŽĐŒŃ–ĐœŃ–ŃŃ‚Ń€Đ°Ń‚ĐŸŃ€Đ°?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"ПраĐČа Đ°ĐŽĐŒŃ–ĐœŃ–ŃŃ‚Ń€Đ°Ń‚ĐŸŃ€Đ° ЮаЮуть Đ·ĐŒĐŸĐłŃƒ ĐșĐ”Ń€ŃƒĐČато Ń–ĐœŃˆĐžĐŒĐž ĐșĐŸŃ€ĐžŃŃ‚ŃƒĐČĐ°Ń‡Đ°ĐŒĐž, Đ·ĐŒŃ–ĐœŃŽĐČато та сĐșоЮато ĐœĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ ĐżŃ€ĐžŃŃ‚Ń€ĐŸŃŽ."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"СтĐČĐŸŃ€ĐžŃ‚Đž ĐșĐŸŃ€ĐžŃŃ‚ŃƒĐČача зараз?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"ĐŸĐ”Ń€Đ”ĐșĐŸĐœĐ°ĐčŃ‚Đ”ŃŃ, Ń‰ĐŸ ĐșĐŸŃ€ĐžŃŃ‚ŃƒĐČач ĐŒĐŸĐ¶Đ” ĐČĐ·ŃŃ‚Đž простріĐč і ĐœĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČато ĐżŃ€ĐŸŃ„Ń–Đ»ŃŒ"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ĐĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČато ĐżŃ€ĐŸŃ„Ń–Đ»ŃŒ зараз?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ĐŸĐŸŃ‡ĐœĐ”Ń‚ŃŒŃŃ ĐœĐŸĐČĐžĐč ŃĐ”Đ°ĐœŃ у Ń€Đ”Đ¶ĐžĐŒŃ– ĐłĐŸŃŃ‚Ń, а ĐČсі ĐŽĐŸĐŽĐ°Ń‚ĐșĐž Đč ĐŽĐ°ĐœŃ– Đ· ĐżĐŸŃ‚ĐŸŃ‡ĐœĐŸĐłĐŸ ŃĐ”Đ°ĐœŃŃƒ буЎД ĐČĐžĐŽĐ°Đ»Đ”ĐœĐŸ"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"ВоĐčто Đ· Ń€Đ”Đ¶ĐžĐŒŃƒ ĐłĐŸŃŃ‚Ń?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Усі ĐŽĐŸĐŽĐ°Ń‚ĐșĐž Đč ĐŽĐ°ĐœŃ– Đ· ĐżĐŸŃ‚ĐŸŃ‡ĐœĐŸĐłĐŸ ŃĐ”Đ°ĐœŃŃƒ ĐČ Ń€Đ”Đ¶ĐžĐŒŃ– ĐłĐŸŃŃ‚Ń буЎД ĐČĐžĐŽĐ°Đ»Đ”ĐœĐŸ."</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"НаЮато Ń†ŃŒĐŸĐŒŃƒ ĐșĐŸŃ€ĐžŃŃ‚ŃƒĐČачу праĐČа Đ°ĐŽĐŒŃ–ĐœŃ–ŃŃ‚Ń€Đ°Ń‚ĐŸŃ€Đ°"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"ĐĐ” ĐœĐ°ĐŽĐ°ĐČато ĐșĐŸŃ€ĐžŃŃ‚ŃƒĐČачу праĐČа Đ°ĐŽĐŒŃ–ĐœŃ–ŃŃ‚Ń€Đ°Ń‚ĐŸŃ€Đ°"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"ВоĐčто"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ЗбДрДгтО Юії ĐČ Ń€Đ”Đ¶ĐžĐŒŃ– ĐłĐŸŃŃ‚Ń?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Во ĐŒĐŸĐ¶Đ”Ń‚Đ” збДрДгтО Юії Đ· ĐżĐŸŃ‚ĐŸŃ‡ĐœĐŸĐłĐŸ ŃĐ”Đ°ĐœŃŃƒ Đ°Đ±ĐŸ ĐČОЎалОтО ĐČсі ĐŽĐŸĐŽĐ°Ń‚ĐșĐž Đč ĐŽĐ°ĐœŃ–"</string>
diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml
index 5917a32..60d5f11 100644
--- a/packages/SettingsLib/res/values-ur/strings.xml
+++ b/packages/SettingsLib/res/values-ur/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"ŰČÛŒŰ§ŰŻÛ وقŰȘ۔"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"کم وقŰȘ۔"</string>
     <string name="cancel" msgid="5665114069455378395">"Ù…Ù†ŰłÙˆŰź Ú©Ű±ÛŒÚș"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"Ùčڟیک ہے"</string>
     <string name="done" msgid="381184316122520313">"ہو ÚŻÛŒŰ§"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Ű§Ù„Ű§Ű±Ù…ŰČ Ű§ÙˆŰ± ÛŒŰ§ŰŻ ŰŻÛŰ§Ù†ÛŒŰ§Úș"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Ù†ÛŒŰ§ Ű”Ű§Ű±Ù ŰŽŰ§Ù…Ù„ Ú©Ű±ÛŒÚș۟"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"‏ŰąÙŸ Ű§Ű¶Ű§ÙÛŒ Ű”Ű§Ű±ÙÛŒÙ† ŰȘŰźÙ„ÛŒÙ‚ ک۱ کے ŰŻÙˆŰłŰ±Û’ Ù„ÙˆÚŻÙˆÚș کے ۳ۧŰȘÚŸ ۧ۳ ŰąÙ„Û کۧ ۧێŰȘ۱ۧک ک۱ ŰłÚ©ŰȘے ہیÚș۔ ÛŰ± Ű”Ű§Ű±Ù کے ÙŸŰ§Űł Ű§ÙŸÙ†ÛŒ ŰŹÚŻÛ ہوŰȘی ÛÛ’ŰŒ ŰŹŰłÛ’ وہ Ű§ÛŒÙŸŰłŰŒ ÙˆŰ§Ù„ ÙŸÛŒÙŸŰ± وŰșÛŒŰ±Û کے ۳ۧŰȘÚŸ ۭ۳ۚ Ű¶Ű±ÙˆŰ±ŰȘ ŰšÙ†Ű§ ŰłÚ©ŰȘۧ ہے۔ Ű”Ű§Ű±ÙÛŒÙ† Wi‑Fi ŰŹÛŒŰłÛŒ ŰąÙ„Û’ کی ŰȘ۱ŰȘÛŒŰšŰ§ŰȘ کو Ű§ÛŒÚˆŰŹŰłÙč ŰšÚŸÛŒ ک۱ ŰłÚ©ŰȘے ہیÚș ŰŹŰł کۧ ۧ۫۱ ÛŰ± Ú©ŰłÛŒ ÙŸŰ± ہوŰȘۧ ہے۔\n\nŰŹŰš ŰąÙŸ Ű§ÛŒÚ© Ù†ÛŒŰ§ Ű”Ű§Ű±Ù ŰŽŰ§Ù…Ù„ ک۱ŰȘے ہیÚșی ŰȘو Ű§ŰłÛ’ Ű§ÙŸÙ†ÛŒ ŰŹÚŻÛ ŰłÛŒÙč Ű§ÙŸ Ú©Ű±Ù†Ű§ ÙŸÚ‘ŰȘی ہے۔\n\nÚ©ÙˆŰŠÛŒ ŰšÚŸÛŒ Ű”Ű§Ű±Ù ŰŻÛŒÚŻŰ± ŰȘÙ…Ű§Ù… Ű”Ű§Ű±ÙÛŒÙ† Ú©ÛŒÙ„ŰŠÛ’ Ű§ÛŒÙŸŰł Ű§ÙŸ ڈیÙč ک۱ ŰłÚ©ŰȘۧ ہے۔ Ű±ŰłŰ§ŰŠÛŒ کی ŰȘ۱ŰȘÛŒŰšŰ§ŰȘ Ű§ÙˆŰ± ŰłŰ±ÙˆŰłŰČ Ú©Ùˆ Ù†ŰŠÛ’ Ű”Ű§Ű±Ù کو منŰȘقل نہیÚș Ú©ÛŒŰ§ ۏۧ ŰłÚ©ŰȘŰ§Û”"</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"ŰŹŰš ŰąÙŸ Ű§ÛŒÚ© Ù†ÛŒŰ§ Ű”Ű§Ű±Ù ŰŽŰ§Ù…Ù„ ک۱ŰȘے ہیÚș ŰȘو ۧ۳ ێ۟۔ کو Ű§ÙŸÙ†ÛŒ ŰŹÚŻÛ کو ŰȘ۱ŰȘÛŒŰš ŰŻÛŒÙ†Û’ کی Ű¶Ű±ÙˆŰ±ŰȘ ہوŰȘی ہے\n\nÚ©ÙˆŰŠÛŒ ŰšÚŸÛŒ Ű”Ű§Ű±Ù ŰŻÛŒÚŻŰ± ŰłŰšÚŸÛŒ Ű”Ű§Ű±ÙÛŒÙ† Ú©ÛŒÙ„ŰŠÛ’ Ű§ÛŒÙŸŰł کو Ű§ÙŸ ڈیÙč ک۱ ŰłÚ©ŰȘۧ ہے۔"</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"ۧ۳ Ű”Ű§Ű±Ù کو منŰȘŰžÙ… کی Ù…Ű±Ű§ŰčۧŰȘ ŰŻÛŒÚș۟"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"ŰšŰ·ÙˆŰ± منŰȘŰžÙ… وہ ŰŻÛŒÚŻŰ± Ű”Ű§Ű±ÙÛŒÙ† کۧ Ù†ŰžÙ…ŰŒ ŰąÙ„Û کی ŰȘ۱ŰȘÛŒŰšŰ§ŰȘ میÚș ŰȘŰ±Ù…ÛŒÙ… Ű§ÙˆŰ± ŰąÙ„Û کو فیکÙčŰ±ÛŒ Ű±ÛŒ ŰłÛŒÙč ک۱ ÙŸŰ§ŰŠÛŒÚș ÚŻÛ’Û”"</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Ű”Ű§Ű±Ù کو Ű§ŰšÚŸÛŒ ŰłÛŒÙč Ű§ÙŸ Ú©Ű±ÛŒÚș۟"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"یقینی ŰšÙ†Ű§ŰŠÛŒÚș کہ وہ ێ۟۔ ŰąÙ„Û لینے Ű§ÙˆŰ± Ű§ÙŸÙ†ÛŒ ŰŹÚŻÛ کو ŰłÛŒÙč Ű§ÙŸ Ú©Ű±Ù†Û’ Ú©ÛŒÙ„ŰŠÛ’ ŰŻŰłŰȘÛŒŰ§Űš ہے"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ÙŸŰ±ÙˆÙŰ§ŰŠÙ„ کو Ű§ŰšÚŸÛŒ ŰȘ۱ŰȘÛŒŰš ŰŻÛŒÚș۟"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ۧ۳ ŰłÛ’ Ű§ÛŒÚ© Ù†ÛŒŰ§ Ù…ÛÙ…Ű§Ù† ŰłÛŒŰŽÙ† ŰŽŰ±ÙˆŰč ہو گۧ Ű§ÙˆŰ± Ù…ÙˆŰŹÙˆŰŻÛ ŰłÛŒŰŽÙ† ŰłÛ’ ŰȘÙ…Ű§Ù… Ű§ÛŒÙŸŰł Ű§ÙˆŰ± ڈیÙčۧ Ű­Ű°Ù ہو ŰŹŰ§ŰŠÛ’ گۧ"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Ù…ÛÙ…Ű§Ù† ÙˆŰ¶Űč ŰłÛ’ ŰšŰ§ÛŰ± نکلیÚș۟"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"یہ Ù…ÙˆŰŹÙˆŰŻÛ Ù…ÛÙ…Ű§Ù† ŰłÛŒŰŽÙ† ŰłÛ’ Ű§ÛŒÙŸŰł Ű§ÙˆŰ± ڈیÙčۧ کو Ű­Ű°Ù ک۱ ŰŻÛ’ گۧ"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"ۧ۳ Ű”Ű§Ű±Ù کو منŰȘŰžÙ… کی Ù…Ű±Ű§ŰčۧŰȘ ŰŻÛŒÚș"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Ű”Ű§Ű±Ù کو منŰȘŰžÙ… کی Ù…Ű±Ű§ŰčۧŰȘ نہ ŰŻÛŒÚș"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"ŰšŰ§ÛŰ± نکلیÚș"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Ù…ÛÙ…Ű§Ù† کی ŰłŰ±ÚŻŰ±Ù…ÛŒ Ù…Ű­ÙÙˆŰž Ú©Ű±ÛŒÚș۟"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ŰąÙŸ Ù…ÙˆŰŹÙˆŰŻÛ ŰłÛŒŰŽÙ† ŰłÛ’ ŰłŰ±ÚŻŰ±Ù…ÛŒ کو Ù…Ű­ÙÙˆŰž ÛŒŰ§ ŰȘÙ…Ű§Ù… Ű§ÛŒÙŸŰł Ű§ÙˆŰ± ڈیÙčۧ کو Ű­Ű°Ù ک۱ ŰłÚ©ŰȘے ہیÚș"</string>
diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml
index b32222c..93a21b7 100644
--- a/packages/SettingsLib/res/values-uz/strings.xml
+++ b/packages/SettingsLib/res/values-uz/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Ko‘proq vaqt."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Kamroq vaqt."</string>
     <string name="cancel" msgid="5665114069455378395">"Bekor qilish"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Tayyor"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Signal va eslatmalar"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Foydalanuvchi qo‘shilsinmi?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Bu qurilmadan bir necha kishi alohida foydalanuvchilar qo‘shib foydalanishi mumkin. Har bir foydalanuvchiga diskda joy ajratiladi, tayinlangan hajm ilovalar, ekran foni rasmi, va hokazolarga taqsimlanishi mumkin. Foydalanuvchilar Wi-Fi kabi sozlamalarni o‘zgartirsa, qolganlarda ham aks etishi mumkin. \n\nYangi profil qo‘shilgach, uni sozlash lozim.\n\nQurilmaning istalgan foydalanuvchisi ilovalarni barcha hisoblar uchun yangilashi mumkin. Qulayliklar sozlamalari va xizmatlar yangi foydalanuvchiga o‘tkazilmasligi mumkin."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Yangi profil qo‘shilgach, uni sozlash lozim.\n\nQurilmaning istalgan foydalanuvchisi ilovalarni barcha hisoblar uchun yangilashi mumkin."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Foydalanuvchiga admin huquqi berilsinmi?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Administrator sifatida ular boshqa foydalanuvchilarni boshqarish, qurilma sozlamalarini oʻzgartirish va qurilmani zavod sozlamalariga qaytarish huquqiga ega boʻladi."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Profil hozir sozlansinmi?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Agar foydalanuvchi profilini hozir sozlay olmasa, keyinroq ham sozlab olishi mumkin."</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profil hozir sozlansinmi?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Bunda yangi mehmon seansi ishga tushadi va joriy seans ilova va maÊŒlumotlari tozalanadi"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Mehmon rejimidan chiqasizmi?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Bunda joriy mehmon seansidagi ilova va ularning maÊŒlumotlari tozalanadi"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Bu foydalanuvchiga admin huquqlarini berish"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Foydalanuvchiga admin huquqlari berilmasin"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Chiqish"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Mehmon faoliyati saqlansinmi?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Joriy seansdagi faoliyatni saqlash yoki barcha ilova va maʌlumotlarni oʻchirib tashlashingiz mumkin"</string>
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index 0d24ea9..847cfaa 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Nhiều thời gian hÆĄn."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Ít thời gian hÆĄn."</string>
     <string name="cancel" msgid="5665114069455378395">"Há»§y"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"OK"</string>
     <string name="done" msgid="381184316122520313">"Xong"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Chuông báo và lời nháșŻc"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Thêm người dùng mới?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"BáșĄn có thể chia sáș» thiáșżt bị này với người khác báș±ng cách táșĄo thêm người dùng. Mỗi người dùng sáșœ có không gian riêng cá»§a mình. Họ có thể tùy chỉnh không gian riêng đó báș±ng các ứng dỄng, hình nền, v.v. Người dùng cĆ©ng có thể điều chỉnh các tùy chọn cài đáș·t thiáșżt bị có áșŁnh hưởng đáșżn táș„t cáșŁ mọi người, cháșłng háșĄn như Wi‑Fi.\n\nKhi báșĄn thêm người dùng mới, họ cáș§n thiáșżt láș­p không gian cá»§a mình.\n\nMọi người dùng đều có thể cáș­p nháș­t ứng dỄng cho táș„t cáșŁ người dùng khác. Các dịch vỄ và các tùy chọn cài đáș·t hỗ trợ tiáșżp cáș­n có thể không chuyển sang người dùng mới."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Khi báșĄn thêm người dùng mới, họ cáș§n thiáșżt láș­p không gian cá»§a mình.\n\nMọi người dùng đều có thể cáș­p nháș­t ứng dỄng cho táș„t cáșŁ người dùng khác."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Trao đáș·c quyền cá»§a quáșŁn trị viên?"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Với tư cách là quáșŁn trị viên, họ sáșœ có thể quáșŁn lý những người dùng khác, sá»­a đổi cháșż độ cài đáș·t thiáșżt bị cĆ©ng như đáș·t láșĄi thiáșżt bị về tráșĄng thái ban đáș§u."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Thiáșżt láș­p người dùng ngay bây giờ?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"ĐáșŁm báșŁo người dùng có máș·t để tá»± thiáșżt láș­p không gian cá»§a mình trên thiáșżt bị"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Thiáșżt láș­p tiểu sá»­ ngay bây giờ?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Thao tác này sáșœ báșŻt đáș§u một phiên khách mới và xoá mọi ứng dỄng cĆ©ng như dữ liệu trong phiên hiện táșĄi"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Thoát khỏi cháșż độ khách?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Thao tác này sáșœ xoá các ứng dỄng và dữ liệu trong phiên khách hiện táșĄi"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Trao đáș·c quyền quáșŁn trị viên cho người dùng này"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Không trao đáș·c quyền cá»§a quáșŁn trị viên"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Thoát"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Lưu hoáșĄt động ở cháșż độ khách?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"BáșĄn có thể lưu hoáșĄt động trong phiên hiện táșĄi hoáș·c xoá mọi ứng dỄng và dữ liệu"</string>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index 052840d..a2aca7a 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"ćąžćŠ æ—¶é—Žă€‚"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"ć‡ć°‘æ—¶é—Žă€‚"</string>
     <string name="cancel" msgid="5665114069455378395">"ć–æ¶ˆ"</string>
-    <string name="next" msgid="2699398661093607009">"ç»§ç»­"</string>
-    <string name="back" msgid="5554327870352703710">"èż”ć›ž"</string>
-    <string name="save" msgid="3745809743277153149">"保歘"</string>
     <string name="okay" msgid="949938843324579502">"硼漚"</string>
     <string name="done" msgid="381184316122520313">"ćźŒæˆ"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"é—čé’Ÿć’Œæé†’"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"èŠæ·»ćŠ æ–°ç”šæˆ·ć—ïŒŸ"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"戛ć»șæ–°ç”šæˆ·ćŽïŒŒæ‚šć°±èƒœć€ŸäžŽć…¶ä»–äșșć…±ç”šæ­€èźŸć€‡ă€‚æŻäœç”šæˆ·éƒœæœ‰è‡Ș深的䞓汞ç©șé—ŽïŒŒè€Œäž”ćœšè‡Ș深的äžȘäșșç©șé—Žć†…èż˜ćŻä»„è‡ȘèĄŒćź‰èŁ…è‡Șć·±æƒłèŠçš„ćș”ç”šă€èźŸçœźćفçșžç­‰ă€‚æ­€ć€–ïŒŒç”šæˆ·èż˜ćŻä»„è°ƒæ•ŽäŒšćœ±ć“æ‰€æœ‰ç”šæˆ·çš„èźŸć€‡èźŸçœźïŒˆäŸ‹ćŠ‚ WLAN èźŸçœźïŒ‰ă€‚\n\nćœ“æ‚šæ·»ćŠ æ–°ç”šæˆ·ćŽïŒŒèŻ„ç”šæˆ·éœ€èŠè‡ȘèĄŒèźŸçœźäžȘäșșç©ș问。\n\nä»»äœ•ç”šæˆ·éƒœćŻä»„äžșæ‰€æœ‰ć…¶ä»–ç”šæˆ·æ›Žæ–°ćș”ç”šă€‚æ— éšœçąćŠŸèƒœèźŸçœźć’ŒæœćŠĄćŻèƒœæ— æł•èœŹç§»ç»™æ–°ç”šæˆ·ă€‚"</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"ćœ“æ‚šæ·»ćŠ æ–°ç”šæˆ·ćŽïŒŒèŻ„ç”šæˆ·éœ€èŠè‡ȘèĄŒèźŸçœźäžȘäșșç©ș问。\n\nä»»äœ•ç”šæˆ·éƒœćŻä»„äžșæ‰€æœ‰ć…¶ä»–ç”šæˆ·æ›Žæ–°ćș”甚。"</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"ć°†æ­€ç”šæˆ·èźŸäžșçźĄç†ć‘˜ïŒŸ"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"çźĄç†ć‘˜æ‹„æœ‰ć…¶ä»–ç”šæˆ·æČĄæœ‰çš„ç‰čæźŠæƒé™ă€‚çźĄç†ć‘˜ćŻä»„çźĄç†æ‰€æœ‰ç”šæˆ·ă€æ›Žæ–°æˆ–é‡çœźæ­€èźŸć€‡ă€äżźæ”čèźŸçœźă€æŸ„çœ‹æ‰€æœ‰ć·Čćź‰èŁ…çš„ćș”ç”šïŒŒä»„ćŠæŽˆäșˆæˆ–æ’€æ¶ˆć…¶ä»–ç”šæˆ·çš„çźĄç†ć‘˜æƒé™ă€‚"</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"èźŸäžș缡理摘"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"ć‘æ­€ç”šæˆ·æŽˆäșˆçźĄç†ć‘˜æƒé™ïŒŸ"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"èŽ·æŽˆçźĄç†ć‘˜æƒé™çš„ç”šæˆ·ć°†èƒœć€ŸçźĄç†ć…¶ä»–ç”šæˆ·ă€äżźæ”čèźŸć€‡èźŸçœźćŠć°†èŻ„èźŸć€‡æąć€ć‡șćŽ‚èźŸçœźă€‚"</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"èŠçŽ°ćœšèźŸçœźèŻ„ç”šæˆ·ć—ïŒŸ"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"èŻ·èź©ç›žćș”ç”šæˆ·æ“äœœèźŸć€‡ćč¶èźŸçœźä»–仏è‡Ș深的ç©ș问。"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"èŠç«‹ćłèźŸçœźäžȘäșșè”„æ–™ć—ïŒŸ"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"æ­€æ“äœœäŒšćŒ€ć§‹æ–°çš„èźżćźąäŒšèŻïŒŒćč¶ćˆ é™€ćœ“ć‰äŒšèŻäž­çš„æ‰€æœ‰ćș”ç”šć’Œæ•°æź"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"芁退ć‡șèźżćźąæšĄćŒć—ïŒŸ"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"æ­€æ“äœœäŒšćˆ é™€ćœ“ć‰èźżćźąäŒšèŻäž­çš„æ‰€æœ‰ćș”ç”šć’Œæ•°æź"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"æ˜ŻïŒŒć°†ć…¶èźŸäžș缡理摘"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"äžïŒŒäžèŠć°†ć…¶èźŸäžș缡理摘"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"ć‘æ­€ç”šæˆ·æŽˆäșˆçźĄç†ć‘˜æƒé™"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"äžć‘æ­€ç”šæˆ·æŽˆäșˆçźĄç†ć‘˜æƒé™"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"退ć‡ș"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"èŠäżć­˜èźżćźąæŽ»ćŠšèź°ćœ•ć—ïŒŸ"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"æ‚šćŻä»„äżć­˜ćœ“ć‰äŒšèŻäž­çš„æŽ»ćŠšèź°ćœ•ïŒŒäčŸćŻä»„ćˆ é™€æ‰€æœ‰ćș”ç”šć’Œæ•°æź"</string>
diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml
index 3ef92cf..f49932d 100644
--- a/packages/SettingsLib/res/values-zh-rHK/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml
@@ -214,7 +214,7 @@
   </string-array>
     <string name="choose_profile" msgid="343803890897657450">"éžæ“‡èš­ćźšæȘ”"</string>
     <string name="category_personal" msgid="6236798763159385225">"怋äșș"</string>
-    <string name="category_work" msgid="4014193632325996115">"ć·„äœœ"</string>
+    <string name="category_work" msgid="4014193632325996115">"慬揾"</string>
     <string name="development_settings_title" msgid="140296922921597393">"開癌äșș擡遾項"</string>
     <string name="development_settings_enable" msgid="4285094651288242183">"ć•Ÿç”šé–‹ç™Œäșș擡遾項"</string>
     <string name="development_settings_summary" msgid="8718917813868735095">"èš­ćźšæ‡‰ç”šçš‹ćŒé–‹ç™Œéžé …"</string>
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"ćąžćŠ æ™‚é–“ă€‚"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"æž›ć°‘æ™‚é–“ă€‚"</string>
     <string name="cancel" msgid="5665114069455378395">"ć–æ¶ˆ"</string>
-    <string name="next" msgid="2699398661093607009">"çčŒçșŒ"</string>
-    <string name="back" msgid="5554327870352703710">"èż”ć›ž"</string>
-    <string name="save" msgid="3745809743277153149">"ć„Č歘"</string>
     <string name="okay" msgid="949938843324579502">"çąș漚"</string>
     <string name="done" msgid="381184316122520313">"ćźŒæˆ"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"éŹ§é˜ć’Œæé†’"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"æ–°ćąžäœżç”šè€…ïŒŸ"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"æ‚šćŻä»„ć»șç«‹ć…¶ä»–äœżç”šè€…ïŒŒèˆ‡ä»–äșșć…±ç”šé€™éƒšèŁçœźă€‚æŻäœäœżç”šè€…éƒœæœ‰ć±Źæ–Œè‡Ș深的ç©șé–“ïŒŒäžŠćŻä»„è‡Șèš‚æ‡‰ç”šçš‹ćŒă€æĄŒćžƒç­‰ç­‰ă€‚æ­€ć€–ïŒŒäœżç”šè€…äčŸćŻä»„èȘżæ•Žæœƒćœ±éŸżæ‰€æœ‰äșșçš„èŁçœźèš­ćźšïŒŒäŸ‹ćŠ‚ Wi‑Fi èš­ćźšă€‚\n\næ–°ćŠ ć…„çš„äœżç”šè€…éœ€èŠè‡ȘèĄŒèš­ćźšć€‹äșșç©ș間。\n\nä»»äœ•äœżç”šè€…éƒœćŻä»„ç‚șæ‰€æœ‰ć…¶ä»–äœżç”šè€…æ›Žæ–°æ‡‰ç”šçš‹ćŒă€‚ç„Ąéšœç€™ćŠŸèƒœèš­ćźšć’Œæœć‹™ć‰‡æœȘćż…é©ç”šæ–Œæ–°çš„äœżç”šè€…ă€‚"</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"æ–°ćąžçš„äœżç”šè€…éœ€èŠè‡ȘèĄŒèš­ćźšć€‹äșșç©ș間。\n\nä»»äœ•äœżç”šè€…éƒœćŻä»„ç‚șć…¶ä»–æ‰€æœ‰äœżç”šè€…æ›Žæ–°æ‡‰ç”šçš‹ćŒă€‚"</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"èŠć°‡é€™äœäœżç”šè€…èš­ç‚șçźĄç†ć“Ąć—ŽïŒŸ"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"çźĄç†ć“Ąć…·ć‚™ć…¶ä»–äœżç”šè€…æČ’æœ‰çš„æŹŠé™ïŒŒäŸ‹ćŠ‚ćŻçźĄç†æ‰€æœ‰äœżç”šè€…ă€æ›Žæ–°æˆ–é‡èš­é€™éƒšèŁçœźă€äżźæ”čèš­ćźšă€æŸ„çœ‹æ‰€æœ‰ć·Čćź‰èŁçš„æ‡‰ç”šçš‹ćŒïŒŒä»„ćŠć°‡çźĄç†ć“ĄæŹŠé™æŽˆäșˆä»–äșș或撀銷他äșșçš„çźĄç†ć“ĄæŹŠé™ă€‚"</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"èš­ç‚ș缡理擡"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"èŠć‘æ­€äœżç”šè€…æŽˆäșˆçźĄç†ć“ĄæŹŠé™ć—ŽïŒŸ"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"çźĄç†ć“Ąć°‡ćŻçźĄç†ć…¶ä»–äœżç”šè€…ă€äżźæ”čèŁçœźèš­ćźšïŒŒä»„ćŠć°‡èŁçœźć›žćŸ©ćŽŸć» èš­ćźšă€‚"</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"ç«‹ćłèš­ćźšäœżç”šè€…ïŒŸ"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"請çąș保氍æ–čçŸćœšćŻä»„ćœšèŁçœźäžŠèš­ćźšè‡Ș深的ç©ș間"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ç«‹ćłèš­ćźšć€‹äșșæȘ”æĄˆïŒŸ"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"æ­€æ“äœœæœƒé–‹ć§‹æ–°çš„èšȘćźąć·„äœœéšŽæź”ïŒŒäžŠćˆȘé™€ç›źć‰ć·„äœœéšŽæź”çš„æ‰€æœ‰æ‡‰ç”šçš‹ćŒć’Œèł‡æ–™"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"芁甐束èšȘćźąæšĄćŒć—ŽïŒŸ"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"歀操䜜會ćˆȘé™€ç›źć‰èšȘćźąć·„äœœéšŽæź”äž­çš„æ‰€æœ‰æ‡‰ç”šçš‹ćŒć’Œèł‡æ–™"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"æ˜ŻïŒŒć°‡é€™äœäœżç”šè€…èš­ç‚ș缡理擡"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"ćŠïŒŒäžèŠć°‡é€™äœäœżç”šè€…èš­ç‚ș缡理擡"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"ć‘æ­€äœżç”šè€…æŽˆäșˆçźĄç†ć“ĄæŹŠé™"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"äžèŠć‘äœżç”šè€…æŽˆäșˆçźĄç†ć“ĄæŹŠé™"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"甐束"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"芁ć„Č歘èšȘćźąæŽ»ć‹•ć—ŽïŒŸ"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"æ‚šćŻć„Čć­˜ç›źć‰ć·„äœœéšŽæź”äž­çš„æŽ»ć‹•æˆ–ćˆȘé™€æ‰€æœ‰æ‡‰ç”šçš‹ćŒć’Œèł‡æ–™"</string>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index 168a8b7..c381ebd 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -519,9 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"ćąžćŠ æ™‚é–“ă€‚"</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"æž›ć°‘æ™‚é–“ă€‚"</string>
     <string name="cancel" msgid="5665114069455378395">"ć–æ¶ˆ"</string>
-    <string name="next" msgid="2699398661093607009">"çčŒçșŒ"</string>
-    <string name="back" msgid="5554327870352703710">"èż”ć›ž"</string>
-    <string name="save" msgid="3745809743277153149">"ć„Č歘"</string>
     <string name="okay" msgid="949938843324579502">"çąș漚"</string>
     <string name="done" msgid="381184316122520313">"ćźŒæˆ"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"éŹ§é˜èˆ‡æé†’"</string>
@@ -576,9 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"èŠæ–°ćąžäœżç”šè€…ć—ŽïŒŸ"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"äœ ćŻä»„ć»șç«‹ć…¶ä»–äœżç”šè€…ïŒŒè—‰æ­€èˆ‡ä»–äșșć…±ç”šé€™ć€‹èŁçœźă€‚æŻäœäœżç”šè€…éƒœæœ‰è‡Șć·±çš„ć°ˆć±Źç©șé–“ïŒŒäžŠćŻäœżç”šæ‡‰ç”šçš‹ćŒă€æĄŒćžƒç­‰é …ç›źè‡Șèš‚ć€‹äșșç©șé–“ă€‚æ­€ć€–ïŒŒäœżç”šè€…äčŸćŻä»„èȘżæ•Žæœƒćœ±éŸżæ‰€æœ‰äșșçš„èŁçœźèš­ćźšïŒŒäŸ‹ćŠ‚ Wi‑Fi èš­ćźšă€‚\n\næ–°ćąžçš„äœżç”šè€…éœ€èŠè‡ȘèĄŒèš­ćźšć€‹äșșç©ș間。\n\nä»»äœ•äœżç”šè€…éƒœćŻä»„ç‚șæ‰€æœ‰ć…¶ä»–äœżç”šè€…æ›Žæ–°æ‡‰ç”šçš‹ćŒă€‚ç„Ąéšœç€™èš­ćźšć’Œæœć‹™ćŻèƒœç„Ąæł•èœ‰ç§»ćˆ°æ–°çš„äœżç”šè€…ă€‚"</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"æ–°ćąžçš„äœżç”šè€…éœ€èŠè‡ȘèĄŒèš­ćźšć€‹äșșç©ș間。\n\nä»»äœ•äœżç”šè€…çš†ćŻç‚șć…¶ä»–æ‰€æœ‰äœżç”šè€…æ›Žæ–°æ‡‰ç”šçš‹ćŒă€‚"</string>
-    <string name="user_grant_admin_title" msgid="5157031020083343984">"èŠć°‡é€™äœäœżç”šè€…èš­ç‚șçźĄç†ć“Ąć—ŽïŒŸ"</string>
-    <string name="user_grant_admin_message" msgid="1673791931033486709">"çźĄç†ć“Ąć…·ć‚™ć…¶ä»–äœżç”šè€…æČ’æœ‰çš„æŹŠé™ïŒŒäŸ‹ćŠ‚ćŻçźĄç†æ‰€æœ‰äœżç”šè€…ă€æ›Žæ–°æˆ–é‡èš­é€™éƒšèŁçœźă€äżźæ”čèš­ćźšă€æŸ„çœ‹æ‰€æœ‰ć·Čćź‰èŁçš„æ‡‰ç”šçš‹ćŒïŒŒä»„ćŠć°‡çźĄç†ć“ĄæŹŠé™æŽˆäșˆä»–äșș或撀銷他äșșçš„çźĄç†ć“ĄæŹŠé™ă€‚"</string>
-    <string name="user_grant_admin_button" msgid="5441486731331725756">"èš­ç‚ș缡理擡"</string>
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"èŠć°‡çźĄç†ć“ĄæŹŠé™æŽˆäșˆæ­€äœżç”šè€…ć—ŽïŒŸ"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"ć–ćŸ—çźĄç†ć“ĄæŹŠé™ćŸŒïŒŒć°±èƒœçźĄç†ć…¶ä»–äœżç”šè€…ă€äżźæ”čèŁçœźèš­ćźšïŒŒä»„ćŠć°‡èŁçœźæąćŸ©ćŽŸć» èš­ćźšă€‚"</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"ç«‹ćłèš­ćźšäœżç”šè€…ïŒŸ"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"請çąș保氍æ–čćŻä»„äœżç”šèŁçœźäžŠèš­ćźšè‡Ș深的ç©ș間"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ç«‹ćłć»ș立怋äșșèł‡æ–™ïŒŸ"</string>
@@ -610,8 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ćŠ‚æžœé‡èš­ïŒŒçł»ç”±æœƒé–‹ć§‹æ–°çš„èšȘćźąć·„äœœéšŽæź”ïŒŒäžŠćˆȘé™€ç›źć‰ć·„äœœéšŽæź”äž­çš„æ‰€æœ‰æ‡‰ç”šçš‹ćŒć’Œèł‡æ–™"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"芁甐束èšȘćźąæšĄćŒć—ŽïŒŸ"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"ćŠ‚æžœç”æŸïŒŒçł»ç”±æœƒćˆȘé™€ç›źć‰èšȘćźąć·„äœœéšŽæź”äž­çš„æ‰€æœ‰æ‡‰ç”šçš‹ćŒć’Œèł‡æ–™"</string>
-    <string name="grant_admin" msgid="4323199171790522574">"æ˜ŻïŒŒć°‡é€™äœäœżç”šè€…èš­ç‚ș缡理擡"</string>
-    <string name="not_grant_admin" msgid="3557849576157702485">"ćŠïŒŒäžèŠć°‡é€™äœäœżç”šè€…èš­ç‚ș缡理擡"</string>
+    <string name="grant_admin" msgid="4273077214151417783">"ć°‡çźĄç†ć“ĄæŹŠé™æŽˆäșˆé€™äœäœżç”šè€…"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"äžèŠć°‡çźĄç†ć“ĄæŹŠé™æŽˆäșˆäœżç”šè€…"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"甐束"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"芁ć„Č歘èšȘćźąæŽ»ć‹•ć—ŽïŒŸ"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"äœ ćŻä»„ć„Čć­˜ç›źć‰ć·„äœœéšŽæź”äž­çš„æŽ»ć‹•ïŒŒäčŸćŻä»„ćˆȘé™€æ‰€æœ‰æ‡‰ç”šçš‹ćŒć’Œèł‡æ–™"</string>
diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml
index 18d19dd..f80515a 100644
--- a/packages/SettingsLib/res/values-zu/strings.xml
+++ b/packages/SettingsLib/res/values-zu/strings.xml
@@ -519,12 +519,6 @@
     <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Isikhathi esiningi."</string>
     <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Isikhathi esincane."</string>
     <string name="cancel" msgid="5665114069455378395">"Khansela"</string>
-    <!-- no translation found for next (2699398661093607009) -->
-    <skip />
-    <!-- no translation found for back (5554327870352703710) -->
-    <skip />
-    <!-- no translation found for save (3745809743277153149) -->
-    <skip />
     <string name="okay" msgid="949938843324579502">"KULUNGILE"</string>
     <string name="done" msgid="381184316122520313">"Kwenziwe"</string>
     <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Ama-alamu nezikhumbuzi"</string>
@@ -579,12 +573,8 @@
     <string name="user_add_user_title" msgid="5457079143694924885">"Engeza umsebenzisi omusha?"</string>
     <string name="user_add_user_message_long" msgid="1527434966294733380">"Manje ungabelana ngale divayisi nabanye abantu ngokudala abasebenzisi abangeziwe. Umsebenzisi ngamunye unesikhala sakhe, angakwazi ukusenza ngendlela ayifisayo ngezinhlelo zokusebenza, isithombe sangemuva, njalo njalo. Abasebenzisi bangalungisa izilungiselelo zedivayisi ezifana ne-Wi-Fi ezithinta wonke umuntu.\n\nUma ungeza umsebenzisi omusha, loyo muntu kumele asethe isikhala sakhe.\n\nNoma imuphi umsebenzisi angabuyekeza izinhlelo zokusebenza kubo bonke abanye abasebenzisi. Izilungiselelo zokufinyelela kungenzeka zingadluliselwa kumsebenzisi omusha."</string>
     <string name="user_add_user_message_short" msgid="3295959985795716166">"Uma ungeza umsebenzisi omusha, loyo muntu udinga ukusetha isikhala sakhe.\n\nNoma yimuphi umsebenzisi angabuyekeza izinhlelo zokusebenza kubo bonke abasebenzisi."</string>
-    <!-- no translation found for user_grant_admin_title (5157031020083343984) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_message (1673791931033486709) -->
-    <skip />
-    <!-- no translation found for user_grant_admin_button (5441486731331725756) -->
-    <skip />
+    <string name="user_grant_admin_title" msgid="5565796912475193314">"Nika umsebenzi ilungelo lokuphatha"</string>
+    <string name="user_grant_admin_message" msgid="7925257971286380976">"Njengomphathi, bazokwazi ukuphatha abanye abasebenzisi, balungise amasethingi edivayisi futhi basethe kabusha njengasekuqaleni idivayisi."</string>
     <string name="user_setup_dialog_title" msgid="8037342066381939995">"Setha umsebenzisi manje?"</string>
     <string name="user_setup_dialog_message" msgid="269931619868102841">"Qinisekisa ukuthi umuntu uyatholakala ukuze athathe idivayisi futhi asethe isikhala sakhe"</string>
     <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Setha iphrofayela manje?"</string>
@@ -616,10 +606,8 @@
     <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Lokhu kuzoqala isikhathi sesihambeli esisha futhi kusule wonke ama-app nedatha kusuka esikhathini samanje"</string>
     <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Phuma kumodi yesihambeli?"</string>
     <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Lokhu kuzosula ama-app nedatha kusuka esikhathini sesihambeli samanje"</string>
-    <!-- no translation found for grant_admin (4323199171790522574) -->
-    <skip />
-    <!-- no translation found for not_grant_admin (3557849576157702485) -->
-    <skip />
+    <string name="grant_admin" msgid="4273077214151417783">"Nikeza lo msebenzisi amalungelo okuphatha"</string>
+    <string name="not_grant_admin" msgid="6985027675930546850">"Unganiki umsebenzisi amalungelo okuphatha"</string>
     <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Phuma"</string>
     <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Londoloza umsebenzi wesihambeli?"</string>
     <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Ungalondoloza umsebenzi kusuka esikhathini samanje noma usule wonke ama-app nedatha"</string>
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java
index a1c0172..4234fbd 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java
@@ -373,7 +373,7 @@
                 Global.Wearable.WEAR_ACTIVITY_AUTO_RESUME_TIMEOUT_SET_BY_USER,
                 BOOLEAN_VALIDATOR);
         VALIDATORS.put(Global.Wearable.BURN_IN_PROTECTION_ENABLED, BOOLEAN_VALIDATOR);
-        VALIDATORS.put(Global.Wearable.COMBINED_LOCATION_ENABLED, BOOLEAN_VALIDATOR);
+        VALIDATORS.put(Global.Wearable.COMBINED_LOCATION_ENABLE, BOOLEAN_VALIDATOR);
         VALIDATORS.put(Global.Wearable.WRIST_ORIENTATION_MODE,
                        new DiscreteValueValidator(new String[] {"0", "1", "2", "3"}));
         VALIDATORS.put(Global.USER_PREFERRED_REFRESH_RATE, NON_NEGATIVE_FLOAT_VALIDATOR);
@@ -405,7 +405,7 @@
         VALIDATORS.put(Global.Wearable.BEDTIME_MODE, BOOLEAN_VALIDATOR);
         VALIDATORS.put(Global.Wearable.BEDTIME_HARD_MODE, BOOLEAN_VALIDATOR);
         VALIDATORS.put(Global.Wearable.DYNAMIC_COLOR_THEME_ENABLED, BOOLEAN_VALIDATOR);
-	VALIDATORS.put(Global.Wearable.SCREENSHOT_ENABLED, BOOLEAN_VALIDATOR);
+        VALIDATORS.put(Global.Wearable.SCREENSHOT_ENABLED, BOOLEAN_VALIDATOR);
         VALIDATORS.put(Global.Wearable.UPGRADE_DATA_MIGRATION_STATUS,
                        new DiscreteValueValidator(
                         new String[] {
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java
index 4b72063..6e7cdd7 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java
@@ -219,6 +219,7 @@
         VALIDATORS.put(System.SHOW_BATTERY_PERCENT, BOOLEAN_VALIDATOR);
         VALIDATORS.put(System.NOTIFICATION_LIGHT_PULSE, BOOLEAN_VALIDATOR);
         VALIDATORS.put(System.WEAR_ACCESSIBILITY_GESTURE_ENABLED, BOOLEAN_VALIDATOR);
+        VALIDATORS.put(System.WEAR_ACCESSIBILITY_GESTURE_ENABLED_DURING_OOBE, BOOLEAN_VALIDATOR);
         VALIDATORS.put(System.CLOCKWORK_BLUETOOTH_SETTINGS_PREF, BOOLEAN_VALIDATOR);
         VALIDATORS.put(System.UNREAD_NOTIFICATION_DOT_INDICATOR, BOOLEAN_VALIDATOR);
         VALIDATORS.put(System.AUTO_LAUNCH_MEDIA_CONTROLS, BOOLEAN_VALIDATOR);
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
index 11154d1..e427698 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
@@ -246,9 +246,13 @@
         stateChecksums[STATE_LOCK_SETTINGS] =
                 writeIfChanged(stateChecksums[STATE_LOCK_SETTINGS], KEY_LOCK_SETTINGS,
                         lockSettingsData, data);
-        stateChecksums[STATE_SOFTAP_CONFIG] =
+        if (getBaseContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH)) {
+            stateChecksums[STATE_SOFTAP_CONFIG] = 0;
+        } else {
+            stateChecksums[STATE_SOFTAP_CONFIG] =
                 writeIfChanged(stateChecksums[STATE_SOFTAP_CONFIG], KEY_SOFTAP_CONFIG,
-                        softApConfigData, data);
+                    softApConfigData, data);
+        }
         stateChecksums[STATE_NETWORK_POLICIES] =
                 writeIfChanged(stateChecksums[STATE_NETWORK_POLICIES], KEY_NETWORK_POLICIES,
                         netPoliciesData, data);
@@ -364,6 +368,10 @@
                     break;
 
                 case KEY_SOFTAP_CONFIG :
+                    if (getBaseContext().getPackageManager()
+                            .hasSystemFeature(PackageManager.FEATURE_WATCH)) {
+                        break;
+                    }
                     byte[] softapData = new byte[size];
                     data.readEntityData(softapData, 0, size);
                     restoreSoftApConfiguration(softapData);
@@ -504,7 +512,9 @@
                 }
             }
             // softap config
-            if (version >= FULL_BACKUP_ADDED_SOFTAP_CONF) {
+            if (version >= FULL_BACKUP_ADDED_SOFTAP_CONF
+                    && !getBaseContext().getPackageManager()
+                    .hasSystemFeature(PackageManager.FEATURE_WATCH)) {
                 nBytes = in.readInt();
                 if (DEBUG_BACKUP) Log.d(TAG, nBytes + " bytes of softap config data");
                 if (nBytes > buffer.length) buffer = new byte[nBytes];
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index d1bd5e6..5b9e2fb 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -5721,6 +5721,7 @@
                                         R.string.airplane_mode_toggleable_radios),
                                 null, true, SettingsState.SYSTEM_PACKAGE_NAME);
                     }
+
                     currentVersion = 216;
                 }
 
diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
index 36aa2ac..ba44a5f 100644
--- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
+++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
@@ -99,6 +99,7 @@
                     Settings.System.DESKTOP_MODE, // developer setting for internal prototyping
                     Settings.System.FORCE_PEAK_REFRESH_RATE, // depends on hardware capabilities
                     Settings.System.SCREEN_BRIGHTNESS_FLOAT,
+                    Settings.System.WEAR_ACCESSIBILITY_GESTURE_ENABLED_DURING_OOBE,
                     Settings.System.SCREEN_AUTO_BRIGHTNESS_ADJ,
                     Settings.System.MULTI_AUDIO_FOCUS_ENABLED // form-factor/OEM specific
                     );
@@ -603,7 +604,7 @@
                     Settings.Global.MANAGED_PROVISIONING_DEFER_PROVISIONING_TO_ROLE_HOLDER,
                     Settings.Global.REVIEW_PERMISSIONS_NOTIFICATION_STATE,
                     Settings.Global.ENABLE_BACK_ANIMATION, // Temporary for T, dev option only
-                    Settings.Global.Wearable.COMBINED_LOCATION_ENABLED,
+                    Settings.Global.Wearable.COMBINED_LOCATION_ENABLE,
                     Settings.Global.Wearable.HAS_PAY_TOKENS,
                     Settings.Global.Wearable.GMS_CHECKIN_TIMEOUT_MIN,
                     Settings.Global.Wearable.HOTWORD_DETECTION_ENABLED,
diff --git a/packages/SettingsProvider/test/src/com/android/providers/settings/InstallNonMarketAppsDeprecationTest.java b/packages/SettingsProvider/test/src/com/android/providers/settings/InstallNonMarketAppsDeprecationTest.java
index ff11f70..2b33057 100644
--- a/packages/SettingsProvider/test/src/com/android/providers/settings/InstallNonMarketAppsDeprecationTest.java
+++ b/packages/SettingsProvider/test/src/com/android/providers/settings/InstallNonMarketAppsDeprecationTest.java
@@ -19,6 +19,7 @@
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
 
 import android.content.Context;
 import android.content.pm.UserInfo;
@@ -116,6 +117,8 @@
 
     @Test
     public void testValueForNewUser() throws Exception {
+        assumeTrue(mUm.supportsMultipleUsers());
+
         UserInfo newUser = mUm.createUser("TEST_USER", 0);
         mUsersAddedByTest.add(newUser.id);
         String value = getSecureSettingForUserViaShell(newUser.id);
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index a110f56..c01518f 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -834,6 +834,9 @@
 
     <uses-permission android:name="android.permission.LOG_FOREGROUND_RESOURCE_USE"/>
 
+    <!-- Permission required for CTS test - CtsPackageInstallTestCases -->
+    <uses-permission android:name="android.permission.READ_INSTALLED_SESSION_PATHS" />
+
     <application android:label="@string/app_label"
                 android:theme="@android:style/Theme.DeviceDefault.DayNight"
                 android:defaultToDeviceProtectedStorage="true"
diff --git a/packages/Shell/tests/Android.bp b/packages/Shell/tests/Android.bp
index 70e8c10..0dc3314 100644
--- a/packages/Shell/tests/Android.bp
+++ b/packages/Shell/tests/Android.bp
@@ -18,7 +18,7 @@
     static_libs: [
         "androidx.test.rules",
         "mockito-target-minus-junit4",
-        "ub-uiautomator",
+        "androidx.test.uiautomator_uiautomator",
         "junit",
     ],
     platform_apis: true,
diff --git a/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java b/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
index a719d77..4579168 100644
--- a/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
+++ b/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
@@ -59,10 +59,6 @@
 import android.os.SystemClock;
 import android.os.SystemProperties;
 import android.service.notification.StatusBarNotification;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.UiObjectNotFoundException;
 import android.text.TextUtils;
 import android.text.format.DateUtils;
 import android.util.Log;
@@ -71,6 +67,10 @@
 import androidx.test.filters.LargeTest;
 import androidx.test.rule.ServiceTestRule;
 import androidx.test.runner.AndroidJUnit4;
+import androidx.test.uiautomator.UiDevice;
+import androidx.test.uiautomator.UiObject;
+import androidx.test.uiautomator.UiObject2;
+import androidx.test.uiautomator.UiObjectNotFoundException;
 
 import com.android.shell.ActionSendMultipleConsumerActivity.CustomActionSendMultipleListener;
 
diff --git a/packages/Shell/tests/src/com/android/shell/UiBot.java b/packages/Shell/tests/src/com/android/shell/UiBot.java
index 53b124f..ce9f70d 100644
--- a/packages/Shell/tests/src/com/android/shell/UiBot.java
+++ b/packages/Shell/tests/src/com/android/shell/UiBot.java
@@ -19,16 +19,17 @@
 import android.app.Instrumentation;
 import android.app.StatusBarManager;
 import android.os.SystemClock;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.UiObjectNotFoundException;
-import android.support.test.uiautomator.UiSelector;
-import android.support.test.uiautomator.Until;
 import android.text.format.DateUtils;
 import android.util.Log;
 
+import androidx.test.uiautomator.By;
+import androidx.test.uiautomator.UiDevice;
+import androidx.test.uiautomator.UiObject;
+import androidx.test.uiautomator.UiObject2;
+import androidx.test.uiautomator.UiObjectNotFoundException;
+import androidx.test.uiautomator.UiSelector;
+import androidx.test.uiautomator.Until;
+
 import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertNotNull;
 import static junit.framework.Assert.assertTrue;
diff --git a/packages/SoundPicker/Android.bp b/packages/SoundPicker/Android.bp
index 2c89d6d..a33b2be 100644
--- a/packages/SoundPicker/Android.bp
+++ b/packages/SoundPicker/Android.bp
@@ -7,21 +7,24 @@
     default_applicable_licenses: ["frameworks_base_license"],
 }
 
-android_app {
-    name: "SoundPicker",
-    defaults: ["platform_app_defaults"],
-    manifest: "AndroidManifest.xml",
-
-    static_libs: [
-        "androidx.appcompat_appcompat",
+android_library {
+    name: "SoundPickerLib",
+    srcs: [
+        "src/**/*.java",
     ],
     resource_dirs: [
         "res",
     ],
-    srcs: [
-        "src/**/*.java",
+    static_libs: [
+        "androidx.appcompat_appcompat",
     ],
+}
 
+android_app {
+    name: "SoundPicker",
+    defaults: ["platform_app_defaults"],
+    manifest: "AndroidManifest.xml",
+    static_libs: ["SoundPickerLib"],
     platform_apis: true,
     certificate: "media",
     privileged: true,
diff --git a/packages/SoundPicker/AndroidManifest.xml b/packages/SoundPicker/AndroidManifest.xml
index 6cb885f..cdfe2421 100644
--- a/packages/SoundPicker/AndroidManifest.xml
+++ b/packages/SoundPicker/AndroidManifest.xml
@@ -9,6 +9,8 @@
     <uses-permission android:name="android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY" />
     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
 
+    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
+
     <application
             android:allowBackup="false"
             android:label="@string/app_label"
diff --git a/packages/SoundPicker/OWNERS b/packages/SoundPicker/OWNERS
new file mode 100644
index 0000000..5bf46e0
--- /dev/null
+++ b/packages/SoundPicker/OWNERS
@@ -0,0 +1,2 @@
+# Haptics team works on the SoundPicker
+include platform/frameworks/base:/services/core/java/com/android/server/vibrator/OWNERS
diff --git a/packages/SoundPicker/res/values-ky/strings.xml b/packages/SoundPicker/res/values-ky/strings.xml
index 3c95228..aeec7a8 100644
--- a/packages/SoundPicker/res/values-ky/strings.xml
+++ b/packages/SoundPicker/res/values-ky/strings.xml
@@ -22,7 +22,7 @@
     <string name="add_ringtone_text" msgid="6642389991738337529">"ĐšŃ‹ÒŁĐłŃ‹Ń€ ĐșĐŸŃˆŃƒŃƒ"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"ОĐčĐłĐŸŃ‚Đșуч ĐșĐŸŃˆŃƒŃƒ"</string>
     <string name="add_notification_text" msgid="4431129543300614788">"Đ‘ĐžĐ»ĐŽĐžŃ€ĐŒĐ” ĐșĐŸŃˆŃƒŃƒ"</string>
-    <string name="delete_ringtone_text" msgid="201443984070732499">"ÓšŃ‡ÒŻŃ€ÒŻÒŻ"</string>
+    <string name="delete_ringtone_text" msgid="201443984070732499">"Đ–ĐŸĐș ĐșŃ‹Đ»ŃƒŃƒ"</string>
     <string name="unable_to_add_ringtone" msgid="4583511263449467326">"Đ–Đ”ĐșĐ” Ń€ĐžĐœĐłŃ‚ĐŸĐœ ĐșĐŸŃˆŃƒĐ»Đ±Đ°Đč жатат"</string>
     <string name="unable_to_delete_ringtone" msgid="6792301380142859496">"Đ–Đ”ĐșĐ” Ń€ĐžĐœĐłŃ‚ĐŸĐœ Đ¶ĐŸĐș ĐșŃ‹Đ»Ń‹ĐœĐ±Đ°Đč жатат"</string>
     <string name="app_label" msgid="3091611356093417332">"ÒźĐœĐŽÓ©Ń€"</string>
diff --git a/packages/SoundPicker/src/com/android/soundpicker/RingtonePickerActivity.java b/packages/SoundPicker/src/com/android/soundpicker/RingtonePickerActivity.java
index 56b940c..e090c16 100644
--- a/packages/SoundPicker/src/com/android/soundpicker/RingtonePickerActivity.java
+++ b/packages/SoundPicker/src/com/android/soundpicker/RingtonePickerActivity.java
@@ -35,7 +35,6 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.MediaStore;
-import android.provider.Settings;
 import android.util.Log;
 import android.util.TypedValue;
 import android.view.LayoutInflater;
@@ -194,16 +193,7 @@
         mHasDefaultItem = intent.getBooleanExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
         mUriForDefaultItem = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI);
         if (mUriForDefaultItem == null) {
-            if (mType == RingtoneManager.TYPE_NOTIFICATION) {
-                mUriForDefaultItem = Settings.System.DEFAULT_NOTIFICATION_URI;
-            } else if (mType == RingtoneManager.TYPE_ALARM) {
-                mUriForDefaultItem = Settings.System.DEFAULT_ALARM_ALERT_URI;
-            } else if (mType == RingtoneManager.TYPE_RINGTONE) {
-                mUriForDefaultItem = Settings.System.DEFAULT_RINGTONE_URI;
-            } else {
-                // or leave it null for silence.
-                mUriForDefaultItem = Settings.System.DEFAULT_RINGTONE_URI;
-            }
+            mUriForDefaultItem = RingtonePickerViewModel.getDefaultItemUriByType(mType);
         }
 
         // Get whether to show the 'Silent' item
@@ -242,17 +232,9 @@
             p.mPositiveButtonListener = this;
         }
         p.mOnPrepareListViewListener = this;
-
         p.mTitle = intent.getCharSequenceExtra(RingtoneManager.EXTRA_RINGTONE_TITLE);
         if (p.mTitle == null) {
-          if (mType == RingtoneManager.TYPE_ALARM) {
-              p.mTitle = getString(com.android.internal.R.string.ringtone_picker_title_alarm);
-          } else if (mType == RingtoneManager.TYPE_NOTIFICATION) {
-              p.mTitle =
-                  getString(com.android.internal.R.string.ringtone_picker_title_notification);
-          } else {
-              p.mTitle = getString(com.android.internal.R.string.ringtone_picker_title);
-          }
+            p.mTitle = getString(RingtonePickerViewModel.getTitleByType(mType));
         }
 
         setupAlert();
@@ -435,13 +417,8 @@
     }
 
     private int addDefaultRingtoneItem(ListView listView) {
-        if (mType == RingtoneManager.TYPE_NOTIFICATION) {
-            return addStaticItem(listView, R.string.notification_sound_default);
-        } else if (mType == RingtoneManager.TYPE_ALARM) {
-            return addStaticItem(listView, R.string.alarm_sound_default);
-        }
-
-        return addStaticItem(listView, R.string.ringtone_default);
+        return addStaticItem(listView,
+                RingtonePickerViewModel.getDefaultRingtoneItemTextByType(mType));
     }
 
     private int addSilentItem(ListView listView) {
@@ -453,13 +430,8 @@
                 false /* attachToRoot */);
         TextView text = (TextView)view.findViewById(R.id.add_new_sound_text);
 
-        if (mType == RingtoneManager.TYPE_ALARM) {
-            text.setText(R.string.add_alarm_text);
-        } else if (mType == RingtoneManager.TYPE_NOTIFICATION) {
-            text.setText(R.string.add_notification_text);
-        } else {
-            text.setText(R.string.add_ringtone_text);
-        }
+        text.setText(RingtonePickerViewModel.getAddNewItemTextByType(mType));
+
         listView.addFooterView(view);
     }
 
diff --git a/packages/SoundPicker/src/com/android/soundpicker/RingtonePickerViewModel.java b/packages/SoundPicker/src/com/android/soundpicker/RingtonePickerViewModel.java
new file mode 100644
index 0000000..9bc33ab
--- /dev/null
+++ b/packages/SoundPicker/src/com/android/soundpicker/RingtonePickerViewModel.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2023 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.soundpicker;
+
+import android.annotation.StringRes;
+import android.media.RingtoneManager;
+import android.net.Uri;
+import android.provider.Settings;
+
+/**
+ * View model for {@link RingtonePickerActivity}.
+ */
+public final class RingtonePickerViewModel {
+
+    @StringRes
+    static int getTitleByType(int ringtoneType) {
+        switch (ringtoneType) {
+            case RingtoneManager.TYPE_ALARM:
+                return com.android.internal.R.string.ringtone_picker_title_alarm;
+            case RingtoneManager.TYPE_NOTIFICATION:
+                return com.android.internal.R.string.ringtone_picker_title_notification;
+            default:
+                return com.android.internal.R.string.ringtone_picker_title;
+        }
+    }
+
+    static Uri getDefaultItemUriByType(int ringtoneType) {
+        switch (ringtoneType) {
+            case RingtoneManager.TYPE_ALARM:
+                return Settings.System.DEFAULT_ALARM_ALERT_URI;
+            case RingtoneManager.TYPE_NOTIFICATION:
+                return Settings.System.DEFAULT_NOTIFICATION_URI;
+            default:
+                return Settings.System.DEFAULT_RINGTONE_URI;
+        }
+    }
+
+    @StringRes
+    static int getAddNewItemTextByType(int ringtoneType) {
+        switch (ringtoneType) {
+            case RingtoneManager.TYPE_ALARM:
+                return R.string.add_alarm_text;
+            case RingtoneManager.TYPE_NOTIFICATION:
+                return R.string.add_notification_text;
+            default:
+                return R.string.add_ringtone_text;
+        }
+    }
+
+    @StringRes
+    static int getDefaultRingtoneItemTextByType(int ringtoneType) {
+        switch (ringtoneType) {
+            case RingtoneManager.TYPE_ALARM:
+                return R.string.alarm_sound_default;
+            case RingtoneManager.TYPE_NOTIFICATION:
+                return R.string.notification_sound_default;
+            default:
+                return R.string.ringtone_default;
+        }
+    }
+}
diff --git a/packages/SoundPicker/tests/Android.bp b/packages/SoundPicker/tests/Android.bp
new file mode 100644
index 0000000..d6aea48
--- /dev/null
+++ b/packages/SoundPicker/tests/Android.bp
@@ -0,0 +1,36 @@
+// Copyright 2023, 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 {
+    default_applicable_licenses: ["frameworks_base_license"],
+}
+
+android_test {
+    name: "SoundPickerTests",
+    certificate: "platform",
+    libs: [
+        "android.test.runner",
+        "android.test.base",
+    ],
+    static_libs: [
+        "androidx.test.core",
+        "androidx.test.rules",
+        "androidx.test.ext.junit",
+        "mockito-target-minus-junit4",
+        "SoundPickerLib",
+    ],
+    srcs: [
+        "src/**/*.java",
+    ],
+}
diff --git a/packages/SoundPicker/tests/AndroidManifest.xml b/packages/SoundPicker/tests/AndroidManifest.xml
new file mode 100644
index 0000000..295aeb1
--- /dev/null
+++ b/packages/SoundPicker/tests/AndroidManifest.xml
@@ -0,0 +1,11 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.soundpicker.tests">
+
+    <application android:debuggable="true">
+        <uses-library android:name="android.test.runner" />
+    </application>
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+        android:targetPackage="com.android.soundpicker.tests"
+        android:label="Sound picker tests">
+    </instrumentation>
+</manifest>
diff --git a/packages/SoundPicker/tests/src/com/android/soundpicker/RingtonePickerViewModelTest.java b/packages/SoundPicker/tests/src/com/android/soundpicker/RingtonePickerViewModelTest.java
new file mode 100644
index 0000000..a534002
--- /dev/null
+++ b/packages/SoundPicker/tests/src/com/android/soundpicker/RingtonePickerViewModelTest.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2023 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.soundpicker;
+
+import static junit.framework.Assert.assertEquals;
+
+import android.media.RingtoneManager;
+import android.net.Uri;
+import android.provider.Settings;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class RingtonePickerViewModelTest {
+
+    @Test
+    public void testDefaultItemUri_withNotificationIntent_returnDefaultNotificationUri() {
+        Uri uri = RingtonePickerViewModel.getDefaultItemUriByType(
+                RingtoneManager.TYPE_NOTIFICATION);
+        assertEquals(Settings.System.DEFAULT_NOTIFICATION_URI, uri);
+    }
+
+    @Test
+    public void testDefaultItemUri_withAlarmIntent_returnDefaultAlarmUri() {
+        Uri uri = RingtonePickerViewModel.getDefaultItemUriByType(RingtoneManager.TYPE_ALARM);
+        assertEquals(Settings.System.DEFAULT_ALARM_ALERT_URI, uri);
+    }
+
+    @Test
+    public void testDefaultItemUri_withRingtoneIntent_returnDefaultRingtoneUri() {
+        Uri uri = RingtonePickerViewModel.getDefaultItemUriByType(RingtoneManager.TYPE_RINGTONE);
+        assertEquals(Settings.System.DEFAULT_RINGTONE_URI, uri);
+    }
+
+    @Test
+    public void testDefaultItemUri_withInvalidRingtoneType_returnDefaultRingtoneUri() {
+        Uri uri = RingtonePickerViewModel.getDefaultItemUriByType(-1);
+        assertEquals(Settings.System.DEFAULT_RINGTONE_URI, uri);
+    }
+
+    @Test
+    public void testTitle_withNotificationRingtoneType_returnRingtoneNotificationTitle() {
+        int title = RingtonePickerViewModel.getTitleByType(RingtoneManager.TYPE_NOTIFICATION);
+        assertEquals(com.android.internal.R.string.ringtone_picker_title_notification, title);
+    }
+
+    @Test
+    public void testTitle_withAlarmRingtoneType_returnRingtoneAlarmTitle() {
+        int title = RingtonePickerViewModel.getTitleByType(RingtoneManager.TYPE_ALARM);
+        assertEquals(com.android.internal.R.string.ringtone_picker_title_alarm, title);
+    }
+
+    @Test
+    public void testTitle_withInvalidRingtoneType_returnDefaultRingtoneTitle() {
+        int title = RingtonePickerViewModel.getTitleByType(-1);
+        assertEquals(com.android.internal.R.string.ringtone_picker_title, title);
+    }
+
+    @Test
+    public void testAddNewItemText_withAlarmType_returnAlarmAddItemText() {
+        int addNewItemTextResId = RingtonePickerViewModel.getAddNewItemTextByType(
+                RingtoneManager.TYPE_ALARM);
+        assertEquals(R.string.add_alarm_text, addNewItemTextResId);
+    }
+
+    @Test
+    public void testAddNewItemText_withNotificationType_returnNotificationAddItemText() {
+        int addNewItemTextResId = RingtonePickerViewModel.getAddNewItemTextByType(
+                RingtoneManager.TYPE_NOTIFICATION);
+        assertEquals(R.string.add_notification_text, addNewItemTextResId);
+    }
+
+    @Test
+    public void testAddNewItemText_withRingtoneType_returnRingtoneAddItemText() {
+        int addNewItemTextResId = RingtonePickerViewModel.getAddNewItemTextByType(
+                RingtoneManager.TYPE_RINGTONE);
+        assertEquals(R.string.add_ringtone_text, addNewItemTextResId);
+    }
+
+    @Test
+    public void testAddNewItemText_withInvalidType_returnRingtoneAddItemText() {
+        int addNewItemTextResId = RingtonePickerViewModel.getAddNewItemTextByType(-1);
+        assertEquals(R.string.add_ringtone_text, addNewItemTextResId);
+    }
+
+    @Test
+    public void testDefaultItemText_withNotificationType_returnNotificationDefaultItemText() {
+        int defaultRingtoneItemText = RingtonePickerViewModel.getDefaultRingtoneItemTextByType(
+                RingtoneManager.TYPE_NOTIFICATION);
+        assertEquals(R.string.notification_sound_default, defaultRingtoneItemText);
+    }
+
+    @Test
+    public void testDefaultItemText_withAlarmType_returnAlarmDefaultItemText() {
+        int defaultRingtoneItemText = RingtonePickerViewModel.getDefaultRingtoneItemTextByType(
+                RingtoneManager.TYPE_NOTIFICATION);
+        assertEquals(R.string.notification_sound_default, defaultRingtoneItemText);
+    }
+
+    @Test
+    public void testDefaultItemText_withRingtoneType_returnRingtoneDefaultItemText() {
+        int defaultRingtoneItemText = RingtonePickerViewModel.getDefaultRingtoneItemTextByType(
+                RingtoneManager.TYPE_RINGTONE);
+        assertEquals(R.string.ringtone_default, defaultRingtoneItemText);
+    }
+
+    @Test
+    public void testDefaultItemText_withInvalidType_returnRingtoneDefaultItemText() {
+        int defaultRingtoneItemText = RingtonePickerViewModel.getDefaultRingtoneItemTextByType(-1);
+        assertEquals(R.string.ringtone_default, defaultRingtoneItemText);
+    }
+}
diff --git a/packages/StatementService/res/values-en-rCA/strings.xml b/packages/StatementService/res/values-en-rCA/strings.xml
deleted file mode 100644
index deb3d4c..0000000
--- a/packages/StatementService/res/values-en-rCA/strings.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2015 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="service_name" msgid="5049486369463670924">"Intent Filter Verification Service"</string>
-</resources>
diff --git a/packages/StatementService/res/values-en-rXC/strings.xml b/packages/StatementService/res/values-en-rXC/strings.xml
deleted file mode 100644
index 146db34..0000000
--- a/packages/StatementService/res/values-en-rXC/strings.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2015 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="service_name" msgid="5049486369463670924">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‎‎‏‎‎‏‏‎‏‏‎‎‎‎‏‎‎‎‏‏‎‎‏‏‎‎‎‎‏‏‎‎‎‎‎‏‏‏‏‎‎‎‏‏‎‎‎‏‎‎‎‏‏‎‎‎Intent Filter Verification Service‎‏‎‎‏‎"</string>
-</resources>
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt
index 296c2ae..94b3740 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt
@@ -436,8 +436,8 @@
         }
 
         @BinderThread
-        override fun onAnimationCancelled(isKeyguardOccluded: Boolean) {
-            context.mainExecutor.execute { delegate.onAnimationCancelled(isKeyguardOccluded) }
+        override fun onAnimationCancelled() {
+            context.mainExecutor.execute { delegate.onAnimationCancelled() }
         }
     }
 
@@ -744,7 +744,7 @@
         }
 
         @UiThread
-        override fun onAnimationCancelled(isKeyguardOccluded: Boolean) {
+        override fun onAnimationCancelled() {
             if (timedOut) {
                 return
             }
@@ -754,7 +754,7 @@
             removeTimeout()
 
             animation?.cancel()
-            controller.onLaunchAnimationCancelled(newKeyguardOccludedState = isKeyguardOccluded)
+            controller.onLaunchAnimationCancelled()
         }
 
         private fun IRemoteAnimationFinishedCallback.invoke() {
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/RemoteAnimationDelegate.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/RemoteAnimationDelegate.kt
index 337408b..d465962 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/animation/RemoteAnimationDelegate.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/RemoteAnimationDelegate.kt
@@ -26,5 +26,5 @@
     )
 
     /** Called on the UI thread when a signal is received to cancel the animation. */
-    @UiThread fun onAnimationCancelled(isKeyguardOccluded: Boolean)
+    @UiThread fun onAnimationCancelled()
 }
diff --git a/packages/SystemUI/monet/src/com/android/systemui/monet/dynamiccolor/MaterialDynamicColors.java b/packages/SystemUI/monet/src/com/android/systemui/monet/dynamiccolor/MaterialDynamicColors.java
index 5212e8e..106d6e7 100644
--- a/packages/SystemUI/monet/src/com/android/systemui/monet/dynamiccolor/MaterialDynamicColors.java
+++ b/packages/SystemUI/monet/src/com/android/systemui/monet/dynamiccolor/MaterialDynamicColors.java
@@ -16,6 +16,8 @@
 
 package com.android.systemui.monet.dynamiccolor;
 
+import android.os.SystemProperties;
+
 import com.android.systemui.monet.dislike.DislikeAnalyzer;
 import com.android.systemui.monet.hct.Hct;
 import com.android.systemui.monet.hct.ViewingConditions;
@@ -31,7 +33,8 @@
 @SuppressWarnings({"AndroidJdkLibsChecker", "NewApi"})
 public final class MaterialDynamicColors {
     private static final double CONTAINER_ACCENT_TONE_DELTA = 15.0;
-
+    private static final boolean IS_FIDELITY_ON_ALL_VARIANTS = SystemProperties.getBoolean(
+            "persist.fidelity_on_theme_variants", false);
 
     private MaterialDynamicColors() {
     }
@@ -374,6 +377,9 @@
     }
 
     private static boolean isFidelity(DynamicScheme scheme) {
+        if (IS_FIDELITY_ON_ALL_VARIANTS) {
+            return scheme.variant != Variant.NEUTRAL && scheme.variant != Variant.MONOCHROME;
+        }
         return scheme.variant == Variant.FIDELITY || scheme.variant == Variant.CONTENT;
     }
 
diff --git a/packages/SystemUI/res-keyguard/values-ar/strings.xml b/packages/SystemUI/res-keyguard/values-ar/strings.xml
index fa0fb44..7720357 100644
--- a/packages/SystemUI/res-keyguard/values-ar/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ar/strings.xml
@@ -21,11 +21,14 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="keyguard_enter_your_pin" msgid="5429932527814874032">"‏ŰŁŰŻŰźÙ„ Ű±Ù‚Ù… Ű§Ù„ŰȘŰčŰ±ÙŠÙ Ű§Ù„ŰŽŰźŰ”ÙŠ (PIN)"</string>
-    <string name="keyguard_enter_pin" msgid="8114529922480276834">"ŰŁŰŻŰźÙÙ„ Ű±Ù‚Ù… Ű§Ù„ŰȘŰčŰ±ÙŠÙ Ű§Ù„ŰŽŰźŰ”ÙŠ."</string>
+    <!-- no translation found for keyguard_enter_pin (8114529922480276834) -->
+    <skip />
     <string name="keyguard_enter_your_pattern" msgid="351503370332324745">"ŰŁŰŻŰźÙ„ Ű§Ù„Ù†Ù‚ŰŽ"</string>
-    <string name="keyguard_enter_pattern" msgid="7616595160901084119">"Ű§Ű±ŰłÙ… Ű§Ù„Ù†Ù‚ŰŽ."</string>
+    <!-- no translation found for keyguard_enter_pattern (7616595160901084119) -->
+    <skip />
     <string name="keyguard_enter_your_password" msgid="7225626204122735501">"ŰŁŰŻŰźÙ„ ÙƒÙ„Ù…Ű© Ű§Ù„Ù…Ű±ÙˆŰ±"</string>
-    <string name="keyguard_enter_password" msgid="6483623792371009758">"ŰŁŰŻŰźÙÙ„ ÙƒÙ„Ù…Ű© Ű§Ù„Ù…Ű±ÙˆŰ±."</string>
+    <!-- no translation found for keyguard_enter_password (6483623792371009758) -->
+    <skip />
     <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"ŰšŰ·Ű§Ù‚Ű© ŰșÙŠŰ± Ű”Ű§Ù„Ű­Ű©."</string>
     <string name="keyguard_charged" msgid="5478247181205188995">"ŰȘم Ű§Ù„ŰŽŰ­Ù†"</string>
     <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ŰŹŰ§Ű±Ù Ű§Ù„ŰŽŰ­Ù† Ù„Ű§ŰłÙ„ÙƒÙŠÙ‹Ű§"</string>
@@ -55,38 +58,68 @@
     <string name="error_disable_esim_msg" msgid="2441188596467999327">"‏يŰȘŰčŰ°Ù‘Ű± Ű„ÙŠÙ‚Ű§Ù eSIM ۚ۳ۚۚ ۟۷ۣ."</string>
     <string name="keyboardview_keycode_enter" msgid="6727192265631761174">"Enter"</string>
     <string name="kg_wrong_pattern" msgid="5907301342430102842">"Ű§Ù„Ù†Ù‚ŰŽ ŰșÙŠŰ± Ű”Ű­ÙŠŰ­."</string>
-    <string name="kg_wrong_pattern_try_again" msgid="3603524940234151881">"Ù†Ù‚ŰŽ ۟۷ۣ. ŰŁŰčÙŰŻ Ű§Ù„Ù…Ű­Ű§ÙˆÙ„Ű©."</string>
+    <!-- no translation found for kg_wrong_pattern_try_again (3603524940234151881) -->
+    <skip />
     <string name="kg_wrong_password" msgid="4143127991071670512">"ÙƒÙ„Ù…Ű© Ù…Ű±ÙˆŰ± ŰșÙŠŰ± Ű”Ű­ÙŠŰ­Ű©"</string>
-    <string name="kg_wrong_password_try_again" msgid="6602878676125765920">"Ù„Ù‚ŰŻ ŰŁŰŻŰźÙ„ŰȘ ÙƒÙ„Ù…Ű© Ù…Ű±ÙˆŰ± ۟ۧ۷ۊ۩. ÙŠÙŰ±ŰŹÙ‰ Ű„Űčۧۯ۩ Ű§Ù„Ù…Ű­Ű§ÙˆÙ„Ű©."</string>
+    <!-- no translation found for kg_wrong_password_try_again (6602878676125765920) -->
+    <skip />
     <string name="kg_wrong_pin" msgid="4160978845968732624">"Ű±Ù‚Ù… ŰȘŰčŰ±ÙŠÙ ŰŽŰźŰ”ÙŠ ۟ۧ۷ۊ"</string>
-    <string name="kg_wrong_pin_try_again" msgid="3129729383303430190">"Ù„Ù‚ŰŻ ŰŁŰŻŰźÙ„ŰȘ Ű±Ù‚Ù… ŰȘŰčŰ±ÙŠÙ ŰŽŰźŰ”ÙŠ ŰșÙŠŰ± Ű”Ű­ÙŠŰ­. ÙŠÙŰ±ŰŹÙ‰ Ű„Űčۧۯ۩ Ű§Ù„Ù…Ű­Ű§ÙˆÙ„Ű©."</string>
-    <string name="kg_wrong_input_try_fp_suggestion" msgid="3143861542242024833">"ŰŹŰ±Ù‘Űš فŰȘŰ­ Ű§Ù„Ù‚ÙÙ„ ۚۧ۳ŰȘŰźŰŻŰ§Ù… ŰšŰ”Ù…Ű© Ű§Ù„Ű„Ű”ŰšŰč."</string>
-    <string name="kg_fp_not_recognized" msgid="5183108260932029241">"لم يŰȘم Ű§Ù„ŰȘŰčŰ±Ù‘Ù Űčلى Ű§Ù„ŰšŰ”Ù…Ű©."</string>
-    <string name="bouncer_face_not_recognized" msgid="1666128054475597485">"لم يŰȘم Ű§Ù„ŰȘŰčŰ±Ù‘Ù Űčلى Ű§Ù„ÙˆŰŹÙ‡."</string>
-    <string name="kg_bio_try_again_or_pin" msgid="4752168242723808390">"ÙŠÙŰ±ŰŹÙ‰ Ű„Űčۧۯ۩ Ű§Ù„Ù…Ű­Ű§ÙˆÙ„Ű© ŰŁÙˆ Ű„ŰŻŰźŰ§Ù„ Ű±Ù‚Ù… Ű§Ù„ŰȘŰčŰ±ÙŠÙ Ű§Ù„ŰŽŰźŰ”ÙŠ."</string>
-    <string name="kg_bio_try_again_or_password" msgid="1473132729225398039">"ÙŠÙŰ±ŰŹÙ‰ Ű„Űčۧۯ۩ Ű§Ù„Ù…Ű­Ű§ÙˆÙ„Ű© ŰŁÙˆ Ű„ŰŻŰźŰ§Ù„ ÙƒÙ„Ù…Ű© Ű§Ù„Ù…Ű±ÙˆŰ±."</string>
-    <string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"ÙŠÙŰ±ŰŹÙ‰ Ű„Űčۧۯ۩ Ű§Ù„Ù…Ű­Ű§ÙˆÙ„Ű© ŰŁÙˆ Ű±ŰłÙ… Ű§Ù„Ù†Ù‚ŰŽ."</string>
-    <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"‏ÙŠŰŹŰš Ű„ŰŻŰźŰ§Ù„ Ű±Ù‚Ù… PIN Ù„ŰŁÙ†Ù‘Ùƒ ŰŁŰŹŰ±ÙŠŰȘ Ù…Ű­Ű§ÙˆÙ„Ű§ŰȘ ÙƒŰ«ÙŠŰ±Ű© ŰŹŰŻÙ‹Ű§."</string>
-    <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"ÙŠŰŹŰš Ű„ŰŻŰźŰ§Ù„ ÙƒÙ„Ù…Ű© Ű§Ù„Ù…Ű±ÙˆŰ± Ù„ŰŁÙ†Ùƒ ŰŁŰŹŰ±ÙŠŰȘ Ù…Ű­Ű§ÙˆÙ„Ű§ŰȘ ÙƒŰ«ÙŠŰ±Ű© ŰŹŰŻÙ‹Ű§."</string>
-    <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"ÙŠŰŹŰš Ű±ŰłÙ… Ű§Ù„Ù†Ù‚ŰŽ Ù„ŰŁÙ†Ù‘Ùƒ ŰŁŰŹŰ±ÙŠŰȘ Ù…Ű­Ű§ÙˆÙ„Ű§ŰȘ ÙƒŰ«ÙŠŰ±Ű© ŰŹŰŻÙ‹Ű§."</string>
-    <string name="kg_unlock_with_pin_or_fp" msgid="5635161174698729890">"‏Ű§ÙŰȘŰ­ ŰšŰ±Ù‚Ù… PIN ŰŁÙˆ Ű§Ù„ŰšŰ”Ù…Ű©."</string>
-    <string name="kg_unlock_with_password_or_fp" msgid="2251295907826814237">"Ű§ÙŰȘŰ­ Ű§Ù„Ù‚ÙÙ„ ŰšÙƒÙ„Ù…Ű© Ù…Ű±ÙˆŰ± ŰŁÙˆ ŰšŰšŰ”Ù…Ű© ۄ۔ۚŰč."</string>
-    <string name="kg_unlock_with_pattern_or_fp" msgid="2391870539909135046">"Ű§ÙŰȘŰ­ ŰšŰ§Ù„Ù†Ù‚ŰŽ ŰŁÙˆ ŰšŰ”Ù…Ű© Ű§Ù„Ű„Ű”ŰšŰč"</string>
-    <string name="kg_prompt_after_dpm_lock" msgid="6002804765868345917">"لمŰČÙŠŰŻ من Ű§Ù„ŰŁÙ…Ű§Ù†ŰŒ ŰȘم قفل Ű§Ù„ŰŹÙ‡Ű§ŰČ ÙˆÙÙ‚Ù‹Ű§ Ù„ŰłÙŠŰ§ŰłŰ© Ű§Ù„Űčمل."</string>
-    <string name="kg_prompt_after_user_lockdown_pin" msgid="5374732179740050373">"ÙŠŰŹŰš Ű„ŰŻŰźŰ§Ù„ Ű±Ù‚Ù… Ű§Ù„ŰȘŰčŰ±ÙŠÙ Ű§Ù„ŰŽŰźŰ”ÙŠ ŰšŰčŰŻ Ű„Ù„Űșۧۥ Ű§Ù„ŰȘŰŁÙ…ÙŠÙ†."</string>
-    <string name="kg_prompt_after_user_lockdown_password" msgid="9097968458291129795">"ÙŠŰŹŰš Ű„ŰŻŰźŰ§Ù„ ÙƒÙ„Ù…Ű© Ű§Ù„Ù…Ű±ÙˆŰ± ŰšŰčŰŻ Ű„Ù„Űșۧۥ Ű§Ù„ŰȘŰŁÙ…ÙŠÙ†."</string>
-    <string name="kg_prompt_after_user_lockdown_pattern" msgid="215072203613597906">"ÙŠŰŹŰš Ű±ŰłÙ… Ű§Ù„Ù†Ù‚ŰŽ ŰšŰčŰŻ Ű„Ù„Űșۧۥ Ű§Ù„ŰȘŰŁÙ…ÙŠÙ†."</string>
-    <string name="kg_prompt_unattended_update" msgid="8223448855578632202">"ŰłÙŠŰȘم ŰȘŰ«ŰšÙŠŰȘ Ű§Ù„ŰȘŰ­ŰŻÙŠŰ« ŰźÙ„Ű§Ù„ ۳ۧŰčۧŰȘ ŰčŰŻÙ… Ű§Ù„Ù†ŰŽŰ§Ű·."</string>
-    <string name="kg_prompt_pin_auth_timeout" msgid="5868644725126275245">"‏ÙŠŰŹŰš ŰȘŰčŰČيŰČ Ű§Ù„ŰŁÙ…Ű§Ù†. لم ÙŠÙŰłŰȘŰźŰŻÙŽÙ… Ű±Ù‚Ù… PIN Ù„ŰšŰč۶ Ű§Ù„ÙˆÙ‚ŰȘ."</string>
-    <string name="kg_prompt_password_auth_timeout" msgid="5809110458491920871">"ÙŠŰŹŰš ŰȘŰčŰČيŰČ Ű§Ù„ŰŁÙ…Ű§Ù†. لم ŰȘŰłŰȘŰźŰŻÙŽÙ… ÙƒÙ„Ù…Ű© Ű§Ù„Ù…Ű±ÙˆŰ± Ù„ŰšŰč۶ Ű§Ù„ÙˆÙ‚ŰȘ."</string>
-    <string name="kg_prompt_pattern_auth_timeout" msgid="1860605401869262178">"ÙŠŰŹŰš ŰȘŰčŰČيŰČ Ű§Ù„ŰŁÙ…Ű§Ù†. لم ÙŠÙŰłŰȘŰźŰŻÙŽÙ… Ű§Ù„Ù†Ù‚ŰŽ Ù„ŰšŰč۶ Ű§Ù„ÙˆÙ‚ŰȘ."</string>
-    <string name="kg_prompt_auth_timeout" msgid="6620679830980315048">"ÙŠŰŹŰš ŰȘŰčŰČيŰČ Ű§Ù„ŰŁÙ…Ű§Ù†. لم يŰȘم فŰȘŰ­ قفل Ű§Ù„ŰŹÙ‡Ű§ŰČ Ù„ŰšŰč۶ Ű§Ù„ÙˆÙ‚ŰȘ."</string>
-    <string name="kg_face_locked_out" msgid="2751559491287575">"يŰȘŰčŰ°Ù‘Ű± فŰȘŰ­ Ű§Ù„Ù‚ÙÙ„ ŰšŰ§Ù„ÙˆŰŹÙ‡. ŰŁŰŹŰ±ÙŠŰȘ Ù…Ű­Ű§ÙˆÙ„Ű§ŰȘ ÙƒŰ«ÙŠŰ±Ű© ŰŹŰŻÙ‹Ű§."</string>
-    <string name="kg_fp_locked_out" msgid="6228277682396768830">"يŰȘŰčŰ°Ù‘Ű± Ű§Ù„ÙŰȘŰ­ ŰšŰšŰ”Ù…Ű© Ű§Ù„Ű„Ű”ŰšŰč. ŰŁŰŹŰ±ÙŠŰȘ Ù…Ű­Ű§ÙˆÙ„Ű§ŰȘ ÙƒŰ«ÙŠŰ±Ű© ŰŹŰŻÙ‹Ű§."</string>
-    <string name="kg_trust_agent_disabled" msgid="5400691179958727891">"ميŰČŰ© \"Ű§Ù„ÙˆÙƒÙŠÙ„ Ű§Ù„Ù…ŰčŰȘÙ…ŰŻ\" ŰșÙŠŰ± مŰȘۭۧ۩."</string>
-    <string name="kg_primary_auth_locked_out_pin" msgid="5492230176361601475">"ŰŁŰŹŰ±ÙŠŰȘ Ù…Ű­Ű§ÙˆÙ„Ű§ŰȘ ÙƒŰ«ÙŠŰ±Ű© ŰŹŰŻÙ‹Ű§ ŰšŰ„ŰŻŰźŰ§Ù„ Ű±Ù‚Ù… ŰȘŰčŰ±ÙŠÙ ŰŽŰźŰ”ÙŠ ۟ۧ۷ۊ."</string>
-    <string name="kg_primary_auth_locked_out_pattern" msgid="8266214607346180952">"ŰŁŰŹŰ±ÙŠŰȘ Ù…Ű­Ű§ÙˆÙ„Ű§ŰȘ ÙƒŰ«ÙŠŰ±Ű© ŰŹŰŻÙ‹Ű§ ŰšŰ±ŰłÙ… Ù†Ù‚ŰŽ ۟ۧ۷ۊ."</string>
-    <string name="kg_primary_auth_locked_out_password" msgid="6170245108400198659">"ŰŁŰŹŰ±ÙŠŰȘ Ù…Ű­Ű§ÙˆÙ„Ű§ŰȘ ÙƒŰ«ÙŠŰ±Ű© ŰŹŰŻÙ‹Ű§ ŰšŰ„ŰŻŰźŰ§Ù„ ÙƒÙ„Ù…Ű© Ù…Ű±ÙˆŰ± ۟ۧ۷ۊ۩."</string>
+    <!-- no translation found for kg_wrong_pin_try_again (3129729383303430190) -->
+    <skip />
+    <!-- no translation found for kg_wrong_input_try_fp_suggestion (3143861542242024833) -->
+    <skip />
+    <!-- no translation found for kg_fp_not_recognized (5183108260932029241) -->
+    <skip />
+    <!-- no translation found for bouncer_face_not_recognized (1666128054475597485) -->
+    <skip />
+    <!-- no translation found for kg_bio_try_again_or_pin (4752168242723808390) -->
+    <skip />
+    <!-- no translation found for kg_bio_try_again_or_password (1473132729225398039) -->
+    <skip />
+    <!-- no translation found for kg_bio_try_again_or_pattern (4867893307468801501) -->
+    <skip />
+    <!-- no translation found for kg_bio_too_many_attempts_pin (5850845723433047605) -->
+    <skip />
+    <!-- no translation found for kg_bio_too_many_attempts_password (5551690347827728042) -->
+    <skip />
+    <!-- no translation found for kg_bio_too_many_attempts_pattern (736884689355181602) -->
+    <skip />
+    <!-- no translation found for kg_unlock_with_pin_or_fp (5635161174698729890) -->
+    <skip />
+    <!-- no translation found for kg_unlock_with_password_or_fp (2251295907826814237) -->
+    <skip />
+    <!-- no translation found for kg_unlock_with_pattern_or_fp (2391870539909135046) -->
+    <skip />
+    <!-- no translation found for kg_prompt_after_dpm_lock (6002804765868345917) -->
+    <skip />
+    <!-- no translation found for kg_prompt_after_user_lockdown_pin (5374732179740050373) -->
+    <skip />
+    <!-- no translation found for kg_prompt_after_user_lockdown_password (9097968458291129795) -->
+    <skip />
+    <!-- no translation found for kg_prompt_after_user_lockdown_pattern (215072203613597906) -->
+    <skip />
+    <!-- no translation found for kg_prompt_unattended_update (8223448855578632202) -->
+    <skip />
+    <!-- no translation found for kg_prompt_pin_auth_timeout (5868644725126275245) -->
+    <skip />
+    <!-- no translation found for kg_prompt_password_auth_timeout (5809110458491920871) -->
+    <skip />
+    <!-- no translation found for kg_prompt_pattern_auth_timeout (1860605401869262178) -->
+    <skip />
+    <!-- no translation found for kg_prompt_auth_timeout (6620679830980315048) -->
+    <skip />
+    <!-- no translation found for kg_face_locked_out (2751559491287575) -->
+    <skip />
+    <!-- no translation found for kg_fp_locked_out (6228277682396768830) -->
+    <skip />
+    <!-- no translation found for kg_trust_agent_disabled (5400691179958727891) -->
+    <skip />
+    <!-- no translation found for kg_primary_auth_locked_out_pin (5492230176361601475) -->
+    <skip />
+    <!-- no translation found for kg_primary_auth_locked_out_pattern (8266214607346180952) -->
+    <skip />
+    <!-- no translation found for kg_primary_auth_locked_out_password (6170245108400198659) -->
+    <skip />
     <string name="kg_too_many_failed_attempts_countdown" msgid="2038195171919795529">"{count,plural, =1{ŰŁŰčÙŰŻ Ű§Ù„Ù…Ű­Ű§ÙˆÙ„Ű© ŰźÙ„Ű§Ù„ Ű«Ű§Ù†ÙŠŰ© ÙˆŰ§Ű­ŰŻŰ©.}zero{ŰŁŰčÙŰŻ Ű§Ù„Ù…Ű­Ű§ÙˆÙ„Ű© ŰźÙ„Ű§Ù„ # Ű«Ű§Ù†ÙŠŰ©.}two{ŰŁŰčÙŰŻ Ű§Ù„Ù…Ű­Ű§ÙˆÙ„Ű© ŰźÙ„Ű§Ù„ Ű«Ű§Ù†ÙŠŰȘين.}few{ŰŁŰčÙŰŻ Ű§Ù„Ù…Ű­Ű§ÙˆÙ„Ű© ŰźÙ„Ű§Ù„ # Ű«ÙˆŰ§Ù†Ù.}many{ŰŁŰčÙŰŻ Ű§Ù„Ù…Ű­Ű§ÙˆÙ„Ű© ŰźÙ„Ű§Ù„ # Ű«Ű§Ù†ÙŠŰ©.}other{ŰŁŰčÙŰŻ Ű§Ù„Ù…Ű­Ű§ÙˆÙ„Ű© ŰźÙ„Ű§Ù„ # Ű«Ű§Ù†ÙŠŰ©.}}"</string>
     <string name="kg_sim_pin_instructions" msgid="1942424305184242951">"‏ŰŁŰŻŰźÙ„ Ű±Ù‚Ù… Ű§Ù„ŰȘŰčŰ±ÙŠÙ Ű§Ù„ŰŽŰźŰ”ÙŠ Ù„ŰŽŰ±ÙŠŰ­Ű© SIM."</string>
     <string name="kg_sim_pin_instructions_multi" msgid="3639863309953109649">"‏ŰŁŰŻŰźÙ„ Ű±Ù‚Ù… Ű§Ù„ŰȘŰčŰ±ÙŠÙ Ű§Ù„ŰŽŰźŰ”ÙŠ Ù„ŰŽŰ±ÙŠŰ­Ű© SIM Ű§Ù„ŰȘۧۚŰčŰ© Ù„Ù„Ù…ŰŽŰșّل \"<xliff:g id="CARRIER">%1$s</xliff:g>\"."</string>
@@ -109,9 +142,12 @@
     <string name="kg_password_puk_failed" msgid="6778867411556937118">"‏ŰȘŰčŰ°Ù‘Ű± Ű„ŰȘÙ…Ű§Ù… ŰčÙ…Ù„ÙŠŰ© PUK Ù„ŰŽŰ±ÙŠŰ­Ű© SIM"</string>
     <string name="accessibility_ime_switch_button" msgid="9082358310194861329">"ŰȘŰšŰŻÙŠÙ„ ŰŁŰłÙ„ÙˆŰš Ű§Ù„Ű„ŰŻŰźŰ§Ù„"</string>
     <string name="airplane_mode" msgid="2528005343938497866">"ÙˆŰ¶Űč Ű§Ù„Ű·ÙŠŰ±Ű§Ù†"</string>
-    <string name="kg_prompt_reason_restart_pattern" msgid="3321211830602827742">"ÙŠŰŹŰš Ű±ŰłÙ… Ű§Ù„Ù†Ù‚ŰŽ ŰšŰčŰŻ Ű„Űčۧۯ۩ ŰȘŰŽŰșيل Ű§Ù„ŰŹÙ‡Ű§ŰČ."</string>
-    <string name="kg_prompt_reason_restart_pin" msgid="2672166323886110512">"ÙŠŰŹŰš Ű„ŰŻŰźŰ§Ù„ Ű±Ù‚Ù… Ű§Ù„ŰȘŰčŰ±ÙŠÙ Ű§Ù„ŰŽŰźŰ”ÙŠ ŰšŰčŰŻ Ű„Űčۧۯ۩ ŰȘŰŽŰșيل Ű§Ù„ŰŹÙ‡Ű§ŰČ."</string>
-    <string name="kg_prompt_reason_restart_password" msgid="3967993994418885887">"ÙŠŰŹŰš Ű„ŰŻŰźŰ§Ù„ ÙƒÙ„Ù…Ű© Ű§Ù„Ù…Ű±ÙˆŰ± ŰšŰčŰŻ Ű„Űčۧۯ۩ ŰȘŰŽŰșيل Ű§Ù„ŰŹÙ‡Ű§ŰČ."</string>
+    <!-- no translation found for kg_prompt_reason_restart_pattern (3321211830602827742) -->
+    <skip />
+    <!-- no translation found for kg_prompt_reason_restart_pin (2672166323886110512) -->
+    <skip />
+    <!-- no translation found for kg_prompt_reason_restart_password (3967993994418885887) -->
+    <skip />
     <string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"لمŰČÙŠŰŻ من Ű§Ù„ŰŁÙ…Ű§Ù†ŰŒ ۧ۳ŰȘŰźŰŻÙÙ… Ű§Ù„Ù†Ù‚ŰŽ ŰšŰŻÙ„Ű§Ù‹ من Ű°Ù„Ùƒ."</string>
     <string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"لمŰČÙŠŰŻ من Ű§Ù„ŰŁÙ…Ű§Ù†ŰŒ ŰŁŰŻŰźÙÙ„ Ű±Ù‚Ù… Ű§Ù„ŰȘŰčŰ±ÙŠÙ Ű§Ù„ŰŽŰźŰ”ÙŠ ŰšŰŻÙ„Ű§Ù‹ من Ű°Ù„Ùƒ."</string>
     <string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"لمŰČÙŠŰŻ من Ű§Ù„ŰŁÙ…Ű§Ù†ŰŒ ŰŁŰŻŰźÙÙ„ ÙƒÙ„Ù…Ű© Ű§Ù„Ù…Ű±ÙˆŰ± ŰšŰŻÙ„Ű§Ù‹ من Ű°Ù„Ùƒ."</string>
diff --git a/packages/SystemUI/res-keyguard/values-bg/strings.xml b/packages/SystemUI/res-keyguard/values-bg/strings.xml
index 42965f6..483a183 100644
--- a/packages/SystemUI/res-keyguard/values-bg/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-bg/strings.xml
@@ -108,7 +108,7 @@
     <string name="kg_password_pin_failed" msgid="5136259126330604009">"ĐžĐżĐ”Ń€Đ°Ń†ĐžŃŃ‚Đ° с ПИН ĐșĐŸĐŽĐ° за SIM Đșартата ĐœĐ” бД ŃƒŃĐżĐ”ŃˆĐœĐ°!"</string>
     <string name="kg_password_puk_failed" msgid="6778867411556937118">"ĐžĐżĐ”Ń€Đ°Ń†ĐžŃŃ‚Đ° с PUK ĐșĐŸĐŽĐ° за SIM Đșартата ĐœĐ” бД ŃƒŃĐżĐ”ŃˆĐœĐ°!"</string>
     <string name="accessibility_ime_switch_button" msgid="9082358310194861329">"ĐŸŃ€Đ”ĐČĐșлючĐČĐ°ĐœĐ” ĐœĐ° ĐŒĐ”Ń‚ĐŸĐŽĐ° ĐœĐ° ĐČъĐČĐ”Đ¶ĐŽĐ°ĐœĐ”"</string>
-    <string name="airplane_mode" msgid="2528005343938497866">"ĐĄĐ°ĐŒĐŸĐ»Đ”Ń‚Đ”Đœ Ń€Đ”Đ¶ĐžĐŒ"</string>
+    <string name="airplane_mode" msgid="2528005343938497866">"ĐĄĐ°ĐŒĐŸĐ»Đ”Ń‚. Ń€Đ”Đ¶ĐžĐŒ"</string>
     <string name="kg_prompt_reason_restart_pattern" msgid="3321211830602827742">"ХлДЎ Ń€Đ”ŃŃ‚Đ°Ń€Ń‚ĐžŃ€Đ°ĐœĐ”Ń‚ĐŸ ĐœĐ° у-ĐČĐŸŃ‚ĐŸ сД ОзОсĐșĐČа фогура"</string>
     <string name="kg_prompt_reason_restart_pin" msgid="2672166323886110512">"ХлДЎ Ń€Đ”ŃŃ‚Đ°Ń€Ń‚ĐžŃ€Đ°ĐœĐ”Ń‚ĐŸ ĐœĐ° у-ĐČĐŸŃ‚ĐŸ сД ОзОсĐșĐČа ПИН ĐșĐŸĐŽ"</string>
     <string name="kg_prompt_reason_restart_password" msgid="3967993994418885887">"ХлДЎ Ń€Đ”ŃŃ‚Đ°Ń€Ń‚ĐžŃ€Đ°ĐœĐ”Ń‚ĐŸ ĐœĐ° у-ĐČĐŸŃ‚ĐŸ сД ОзОсĐșĐČа ĐżĐ°Ń€ĐŸĐ»Đ°"</string>
diff --git a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
index 4eec915..127588c 100644
--- a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
@@ -21,11 +21,14 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="keyguard_enter_your_pin" msgid="5429932527814874032">"Entrez votre NIP"</string>
-    <string name="keyguard_enter_pin" msgid="8114529922480276834">"Entrez le NIP"</string>
+    <!-- no translation found for keyguard_enter_pin (8114529922480276834) -->
+    <skip />
     <string name="keyguard_enter_your_pattern" msgid="351503370332324745">"Entrez votre schéma"</string>
-    <string name="keyguard_enter_pattern" msgid="7616595160901084119">"Dessinez le schéma"</string>
+    <!-- no translation found for keyguard_enter_pattern (7616595160901084119) -->
+    <skip />
     <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Entrez votre mot de passe"</string>
-    <string name="keyguard_enter_password" msgid="6483623792371009758">"Entrez le mot de passe"</string>
+    <!-- no translation found for keyguard_enter_password (6483623792371009758) -->
+    <skip />
     <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Cette carte n\'est pas valide."</string>
     <string name="keyguard_charged" msgid="5478247181205188995">"Chargé"</string>
     <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • En recharge sans fil"</string>
@@ -55,38 +58,68 @@
     <string name="error_disable_esim_msg" msgid="2441188596467999327">"La carte eSIM ne peut pas être réinitialisée à cause d\'une erreur."</string>
     <string name="keyboardview_keycode_enter" msgid="6727192265631761174">"Entrée"</string>
     <string name="kg_wrong_pattern" msgid="5907301342430102842">"Schéma incorrect"</string>
-    <string name="kg_wrong_pattern_try_again" msgid="3603524940234151881">"Schéma incorrect. Réessayez."</string>
+    <!-- no translation found for kg_wrong_pattern_try_again (3603524940234151881) -->
+    <skip />
     <string name="kg_wrong_password" msgid="4143127991071670512">"Mot de passe incorrect"</string>
-    <string name="kg_wrong_password_try_again" msgid="6602878676125765920">"MDP incorrect. Réessayez."</string>
+    <!-- no translation found for kg_wrong_password_try_again (6602878676125765920) -->
+    <skip />
     <string name="kg_wrong_pin" msgid="4160978845968732624">"NIP incorrect"</string>
-    <string name="kg_wrong_pin_try_again" msgid="3129729383303430190">"NIP erroné. Réessayez."</string>
-    <string name="kg_wrong_input_try_fp_suggestion" msgid="3143861542242024833">"Ou déverrouillez avec l\'empreinte digitale"</string>
-    <string name="kg_fp_not_recognized" msgid="5183108260932029241">"Emp. digitale non reconnue"</string>
-    <string name="bouncer_face_not_recognized" msgid="1666128054475597485">"Visage non reconnu"</string>
-    <string name="kg_bio_try_again_or_pin" msgid="4752168242723808390">"Réessayez ou entrez le NIP"</string>
-    <string name="kg_bio_try_again_or_password" msgid="1473132729225398039">"Réessayez ou entrez le mot de passe"</string>
-    <string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"Réessayez ou dessinez le schéma"</string>
-    <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"Le NIP est requis (trop de tentatives)"</string>
-    <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"Le mot de passe est requis (trop de tentatives)"</string>
-    <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Le schéma est requis (trop de tentatives)"</string>
-    <string name="kg_unlock_with_pin_or_fp" msgid="5635161174698729890">"Déverr. par NIP ou empr. dig."</string>
-    <string name="kg_unlock_with_password_or_fp" msgid="2251295907826814237">"Déverr. par MDP ou empr. dig."</string>
-    <string name="kg_unlock_with_pattern_or_fp" msgid="2391870539909135046">"Déverr. par schéma ou empr. dig."</string>
-    <string name="kg_prompt_after_dpm_lock" msgid="6002804765868345917">"Verr. pour plus de sécurité (politique de travail)"</string>
-    <string name="kg_prompt_after_user_lockdown_pin" msgid="5374732179740050373">"Le NIP est requis après le verrouillage"</string>
-    <string name="kg_prompt_after_user_lockdown_password" msgid="9097968458291129795">"Le mot de passe est requis après le verrouillage"</string>
-    <string name="kg_prompt_after_user_lockdown_pattern" msgid="215072203613597906">"Le schéma est requis après le verrouillage"</string>
-    <string name="kg_prompt_unattended_update" msgid="8223448855578632202">"La MAJ sera installée durant les heures d\'inactivité"</string>
-    <string name="kg_prompt_pin_auth_timeout" msgid="5868644725126275245">"Plus de sécurité requise. NIP non utilisé pour un temps."</string>
-    <string name="kg_prompt_password_auth_timeout" msgid="5809110458491920871">"Plus de sécurité requise. MDP non utilisé pour un temps."</string>
-    <string name="kg_prompt_pattern_auth_timeout" msgid="1860605401869262178">"Plus de sécurité requise. Schéma non utilisé pour un temps."</string>
-    <string name="kg_prompt_auth_timeout" msgid="6620679830980315048">"Plus de sécurité requise. Non déverr. pour un temps."</string>
-    <string name="kg_face_locked_out" msgid="2751559491287575">"Déverr. facial impossible. Trop de tentatives."</string>
-    <string name="kg_fp_locked_out" msgid="6228277682396768830">"Déverr. digital impossible. Trop de tentatives."</string>
-    <string name="kg_trust_agent_disabled" msgid="5400691179958727891">"L\'agent de confiance n\'est pas accessible"</string>
-    <string name="kg_primary_auth_locked_out_pin" msgid="5492230176361601475">"Trop de tentatives avec un NIP incorrect"</string>
-    <string name="kg_primary_auth_locked_out_pattern" msgid="8266214607346180952">"Trop de tentatives avec un schéma incorrect"</string>
-    <string name="kg_primary_auth_locked_out_password" msgid="6170245108400198659">"Trop de tentatives avec un mot de passe incorrect"</string>
+    <!-- no translation found for kg_wrong_pin_try_again (3129729383303430190) -->
+    <skip />
+    <!-- no translation found for kg_wrong_input_try_fp_suggestion (3143861542242024833) -->
+    <skip />
+    <!-- no translation found for kg_fp_not_recognized (5183108260932029241) -->
+    <skip />
+    <!-- no translation found for bouncer_face_not_recognized (1666128054475597485) -->
+    <skip />
+    <!-- no translation found for kg_bio_try_again_or_pin (4752168242723808390) -->
+    <skip />
+    <!-- no translation found for kg_bio_try_again_or_password (1473132729225398039) -->
+    <skip />
+    <!-- no translation found for kg_bio_try_again_or_pattern (4867893307468801501) -->
+    <skip />
+    <!-- no translation found for kg_bio_too_many_attempts_pin (5850845723433047605) -->
+    <skip />
+    <!-- no translation found for kg_bio_too_many_attempts_password (5551690347827728042) -->
+    <skip />
+    <!-- no translation found for kg_bio_too_many_attempts_pattern (736884689355181602) -->
+    <skip />
+    <!-- no translation found for kg_unlock_with_pin_or_fp (5635161174698729890) -->
+    <skip />
+    <!-- no translation found for kg_unlock_with_password_or_fp (2251295907826814237) -->
+    <skip />
+    <!-- no translation found for kg_unlock_with_pattern_or_fp (2391870539909135046) -->
+    <skip />
+    <!-- no translation found for kg_prompt_after_dpm_lock (6002804765868345917) -->
+    <skip />
+    <!-- no translation found for kg_prompt_after_user_lockdown_pin (5374732179740050373) -->
+    <skip />
+    <!-- no translation found for kg_prompt_after_user_lockdown_password (9097968458291129795) -->
+    <skip />
+    <!-- no translation found for kg_prompt_after_user_lockdown_pattern (215072203613597906) -->
+    <skip />
+    <!-- no translation found for kg_prompt_unattended_update (8223448855578632202) -->
+    <skip />
+    <!-- no translation found for kg_prompt_pin_auth_timeout (5868644725126275245) -->
+    <skip />
+    <!-- no translation found for kg_prompt_password_auth_timeout (5809110458491920871) -->
+    <skip />
+    <!-- no translation found for kg_prompt_pattern_auth_timeout (1860605401869262178) -->
+    <skip />
+    <!-- no translation found for kg_prompt_auth_timeout (6620679830980315048) -->
+    <skip />
+    <!-- no translation found for kg_face_locked_out (2751559491287575) -->
+    <skip />
+    <!-- no translation found for kg_fp_locked_out (6228277682396768830) -->
+    <skip />
+    <!-- no translation found for kg_trust_agent_disabled (5400691179958727891) -->
+    <skip />
+    <!-- no translation found for kg_primary_auth_locked_out_pin (5492230176361601475) -->
+    <skip />
+    <!-- no translation found for kg_primary_auth_locked_out_pattern (8266214607346180952) -->
+    <skip />
+    <!-- no translation found for kg_primary_auth_locked_out_password (6170245108400198659) -->
+    <skip />
     <string name="kg_too_many_failed_attempts_countdown" msgid="2038195171919795529">"{count,plural, =1{Réessayez dans # seconde.}one{Réessayez dans # seconde.}many{Réessayez dans # secondes.}other{Réessayez dans # secondes.}}"</string>
     <string name="kg_sim_pin_instructions" msgid="1942424305184242951">"Entrez le NIP de la carte SIM."</string>
     <string name="kg_sim_pin_instructions_multi" msgid="3639863309953109649">"Entrez le NIP de la carte SIM pour « <xliff:g id="CARRIER">%1$s</xliff:g> »."</string>
@@ -109,9 +142,12 @@
     <string name="kg_password_puk_failed" msgid="6778867411556937118">"Le déverrouillage de la carte SIM par code PUK a échoué."</string>
     <string name="accessibility_ime_switch_button" msgid="9082358310194861329">"Changer de méthode d\'entrée"</string>
     <string name="airplane_mode" msgid="2528005343938497866">"Mode Avion"</string>
-    <string name="kg_prompt_reason_restart_pattern" msgid="3321211830602827742">"Schéma requis après le redémarrage de l\'appareil"</string>
-    <string name="kg_prompt_reason_restart_pin" msgid="2672166323886110512">"NIP requis après le redémarrage de l\'appareil"</string>
-    <string name="kg_prompt_reason_restart_password" msgid="3967993994418885887">"MDP requis après le redémarrage de l\'appareil"</string>
+    <!-- no translation found for kg_prompt_reason_restart_pattern (3321211830602827742) -->
+    <skip />
+    <!-- no translation found for kg_prompt_reason_restart_pin (2672166323886110512) -->
+    <skip />
+    <!-- no translation found for kg_prompt_reason_restart_password (3967993994418885887) -->
+    <skip />
     <string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Pour plus de sécurité, utilisez plutôt un schéma"</string>
     <string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Pour plus de sécurité, utilisez plutôt un NIP"</string>
     <string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Pour plus de sécurité, utilisez plutôt un mot de passe"</string>
diff --git a/packages/SystemUI/res-keyguard/values-gl/strings.xml b/packages/SystemUI/res-keyguard/values-gl/strings.xml
index 6f4b667..9496eab 100644
--- a/packages/SystemUI/res-keyguard/values-gl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-gl/strings.xml
@@ -21,11 +21,14 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="keyguard_enter_your_pin" msgid="5429932527814874032">"Introduce o teu PIN"</string>
-    <string name="keyguard_enter_pin" msgid="8114529922480276834">"Insire un PIN"</string>
+    <!-- no translation found for keyguard_enter_pin (8114529922480276834) -->
+    <skip />
     <string name="keyguard_enter_your_pattern" msgid="351503370332324745">"Introduce o padrón"</string>
-    <string name="keyguard_enter_pattern" msgid="7616595160901084119">"Debuxa o padrón"</string>
+    <!-- no translation found for keyguard_enter_pattern (7616595160901084119) -->
+    <skip />
     <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Introduce o contrasinal"</string>
-    <string name="keyguard_enter_password" msgid="6483623792371009758">"Insire un contrasinal"</string>
+    <!-- no translation found for keyguard_enter_password (6483623792371009758) -->
+    <skip />
     <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"A tarxeta non é válida."</string>
     <string name="keyguard_charged" msgid="5478247181205188995">"Cargado"</string>
     <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando sen fíos"</string>
@@ -55,38 +58,68 @@
     <string name="error_disable_esim_msg" msgid="2441188596467999327">"A eSIM non se puido desactivar debido a un erro."</string>
     <string name="keyboardview_keycode_enter" msgid="6727192265631761174">"Intro"</string>
     <string name="kg_wrong_pattern" msgid="5907301342430102842">"O padrón é incorrecto"</string>
-    <string name="kg_wrong_pattern_try_again" msgid="3603524940234151881">"Padrón incorrecto. Téntao."</string>
+    <!-- no translation found for kg_wrong_pattern_try_again (3603524940234151881) -->
+    <skip />
     <string name="kg_wrong_password" msgid="4143127991071670512">"O contrasinal é incorrecto"</string>
-    <string name="kg_wrong_password_try_again" msgid="6602878676125765920">"Contrasinal incorrecto."</string>
+    <!-- no translation found for kg_wrong_password_try_again (6602878676125765920) -->
+    <skip />
     <string name="kg_wrong_pin" msgid="4160978845968732624">"PIN incorrecto"</string>
-    <string name="kg_wrong_pin_try_again" msgid="3129729383303430190">"PIN incorrecto. Téntao."</string>
-    <string name="kg_wrong_input_try_fp_suggestion" msgid="3143861542242024833">"Tamén podes desbloquealo coa impresión dixital"</string>
-    <string name="kg_fp_not_recognized" msgid="5183108260932029241">"Impr. dixital non recoñec."</string>
-    <string name="bouncer_face_not_recognized" msgid="1666128054475597485">"A cara non se recoñeceu"</string>
-    <string name="kg_bio_try_again_or_pin" msgid="4752168242723808390">"Téntao de novo ou pon o PIN"</string>
-    <string name="kg_bio_try_again_or_password" msgid="1473132729225398039">"Téntao de novo ou pon o contrasinal"</string>
-    <string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"Téntao de novo ou debuxa o contrasinal"</string>
-    <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"Requírese o PIN tras realizar demasiados intentos"</string>
-    <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"Requírese o contrasinal tras demasiados intentos"</string>
-    <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"Requírese o padrón tras realizar demasiados intentos"</string>
-    <string name="kg_unlock_with_pin_or_fp" msgid="5635161174698729890">"Desbloquea co PIN ou a impresión dixital"</string>
-    <string name="kg_unlock_with_password_or_fp" msgid="2251295907826814237">"Desbloquea co contrasinal ou a impresión dixital"</string>
-    <string name="kg_unlock_with_pattern_or_fp" msgid="2391870539909135046">"Desbloquea co padrón ou a impresión dixital"</string>
-    <string name="kg_prompt_after_dpm_lock" msgid="6002804765868345917">"O dispositivo bloqueouse cunha política do traballo"</string>
-    <string name="kg_prompt_after_user_lockdown_pin" msgid="5374732179740050373">"Requírese o PIN tras o bloqueo"</string>
-    <string name="kg_prompt_after_user_lockdown_password" msgid="9097968458291129795">"Requírese o contrasinal tras o bloqueo"</string>
-    <string name="kg_prompt_after_user_lockdown_pattern" msgid="215072203613597906">"Requírese o padrón tras o bloqueo"</string>
-    <string name="kg_prompt_unattended_update" msgid="8223448855578632202">"A actualización instalarase durante a inactividade"</string>
-    <string name="kg_prompt_pin_auth_timeout" msgid="5868644725126275245">"Requírese seguranza adicional. O PIN non se usou desde hai tempo."</string>
-    <string name="kg_prompt_password_auth_timeout" msgid="5809110458491920871">"Requírese seguranza adicional. O contrasinal non se usou desde hai tempo."</string>
-    <string name="kg_prompt_pattern_auth_timeout" msgid="1860605401869262178">"Requírese seguranza adicional. O padrón non se usou desde hai tempo."</string>
-    <string name="kg_prompt_auth_timeout" msgid="6620679830980315048">"Requírese seguranza adicional. O dispositivo non se desbloqueou desde hai tempo."</string>
-    <string name="kg_face_locked_out" msgid="2751559491287575">"Imposible desbloquear coa cara. Demasiados intentos."</string>
-    <string name="kg_fp_locked_out" msgid="6228277682396768830">"Imposible des. impresión dix. Demasiados intentos."</string>
-    <string name="kg_trust_agent_disabled" msgid="5400691179958727891">"O axente de confianza non está dispoñible"</string>
-    <string name="kg_primary_auth_locked_out_pin" msgid="5492230176361601475">"Puxeches un PIN incorrecto demasiadas veces"</string>
-    <string name="kg_primary_auth_locked_out_pattern" msgid="8266214607346180952">"Debuxaches un padrón incorrecto demasiadas veces"</string>
-    <string name="kg_primary_auth_locked_out_password" msgid="6170245108400198659">"Puxeches un contrasinal incorrecto demasiadas veces"</string>
+    <!-- no translation found for kg_wrong_pin_try_again (3129729383303430190) -->
+    <skip />
+    <!-- no translation found for kg_wrong_input_try_fp_suggestion (3143861542242024833) -->
+    <skip />
+    <!-- no translation found for kg_fp_not_recognized (5183108260932029241) -->
+    <skip />
+    <!-- no translation found for bouncer_face_not_recognized (1666128054475597485) -->
+    <skip />
+    <!-- no translation found for kg_bio_try_again_or_pin (4752168242723808390) -->
+    <skip />
+    <!-- no translation found for kg_bio_try_again_or_password (1473132729225398039) -->
+    <skip />
+    <!-- no translation found for kg_bio_try_again_or_pattern (4867893307468801501) -->
+    <skip />
+    <!-- no translation found for kg_bio_too_many_attempts_pin (5850845723433047605) -->
+    <skip />
+    <!-- no translation found for kg_bio_too_many_attempts_password (5551690347827728042) -->
+    <skip />
+    <!-- no translation found for kg_bio_too_many_attempts_pattern (736884689355181602) -->
+    <skip />
+    <!-- no translation found for kg_unlock_with_pin_or_fp (5635161174698729890) -->
+    <skip />
+    <!-- no translation found for kg_unlock_with_password_or_fp (2251295907826814237) -->
+    <skip />
+    <!-- no translation found for kg_unlock_with_pattern_or_fp (2391870539909135046) -->
+    <skip />
+    <!-- no translation found for kg_prompt_after_dpm_lock (6002804765868345917) -->
+    <skip />
+    <!-- no translation found for kg_prompt_after_user_lockdown_pin (5374732179740050373) -->
+    <skip />
+    <!-- no translation found for kg_prompt_after_user_lockdown_password (9097968458291129795) -->
+    <skip />
+    <!-- no translation found for kg_prompt_after_user_lockdown_pattern (215072203613597906) -->
+    <skip />
+    <!-- no translation found for kg_prompt_unattended_update (8223448855578632202) -->
+    <skip />
+    <!-- no translation found for kg_prompt_pin_auth_timeout (5868644725126275245) -->
+    <skip />
+    <!-- no translation found for kg_prompt_password_auth_timeout (5809110458491920871) -->
+    <skip />
+    <!-- no translation found for kg_prompt_pattern_auth_timeout (1860605401869262178) -->
+    <skip />
+    <!-- no translation found for kg_prompt_auth_timeout (6620679830980315048) -->
+    <skip />
+    <!-- no translation found for kg_face_locked_out (2751559491287575) -->
+    <skip />
+    <!-- no translation found for kg_fp_locked_out (6228277682396768830) -->
+    <skip />
+    <!-- no translation found for kg_trust_agent_disabled (5400691179958727891) -->
+    <skip />
+    <!-- no translation found for kg_primary_auth_locked_out_pin (5492230176361601475) -->
+    <skip />
+    <!-- no translation found for kg_primary_auth_locked_out_pattern (8266214607346180952) -->
+    <skip />
+    <!-- no translation found for kg_primary_auth_locked_out_password (6170245108400198659) -->
+    <skip />
     <string name="kg_too_many_failed_attempts_countdown" msgid="2038195171919795529">"{count,plural, =1{Téntao de novo dentro de # segundo.}other{Téntao de novo dentro de # segundos.}}"</string>
     <string name="kg_sim_pin_instructions" msgid="1942424305184242951">"Introduce o PIN da SIM."</string>
     <string name="kg_sim_pin_instructions_multi" msgid="3639863309953109649">"Introduce o PIN da SIM para \"<xliff:g id="CARRIER">%1$s</xliff:g>\"."</string>
@@ -109,9 +142,12 @@
     <string name="kg_password_puk_failed" msgid="6778867411556937118">"Produciuse un erro ao tentar desbloquear a tarxeta SIM co código PUK."</string>
     <string name="accessibility_ime_switch_button" msgid="9082358310194861329">"Cambia o método de introdución"</string>
     <string name="airplane_mode" msgid="2528005343938497866">"Modo avión"</string>
-    <string name="kg_prompt_reason_restart_pattern" msgid="3321211830602827742">"Requírese o padrón tras reiniciar o dispositivo"</string>
-    <string name="kg_prompt_reason_restart_pin" msgid="2672166323886110512">"Requírese o PIN tras reiniciar o dispositivo"</string>
-    <string name="kg_prompt_reason_restart_password" msgid="3967993994418885887">"Requírese o contrasinal tras reiniciar o dispositivo"</string>
+    <!-- no translation found for kg_prompt_reason_restart_pattern (3321211830602827742) -->
+    <skip />
+    <!-- no translation found for kg_prompt_reason_restart_pin (2672166323886110512) -->
+    <skip />
+    <!-- no translation found for kg_prompt_reason_restart_password (3967993994418885887) -->
+    <skip />
     <string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Utiliza un padrón para obter maior seguranza"</string>
     <string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Utiliza un PIN para obter maior seguranza"</string>
     <string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Utiliza un contrasinal para obter maior seguranza"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ky/strings.xml b/packages/SystemUI/res-keyguard/values-ky/strings.xml
index 79ef007..8a4e00b 100644
--- a/packages/SystemUI/res-keyguard/values-ky/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ky/strings.xml
@@ -49,7 +49,7 @@
     <string name="keyguard_accessibility_password" msgid="3524161948484801450">"ĐąÒŻĐ·ĐŒÓ©ĐșŃ‚ÒŻĐœ ŃŃ‹Ń€ŃÓ©Đ·ÒŻ"</string>
     <string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM-ĐșĐ°Ń€Ń‚Đ°ĐœŃ‹Đœ PIN-ĐșĐŸĐŽŃƒĐœŃƒĐœ аĐčĐŒĐ°ĐłŃ‹"</string>
     <string name="keyguard_accessibility_sim_puk_area" msgid="5537294043180237374">"SIM-ĐșĐ°Ń€Ń‚Đ°ĐœŃ‹Đœ PUK-ĐșĐŸĐŽŃƒĐœŃƒĐœ аĐčĐŒĐ°ĐłŃ‹"</string>
-    <string name="keyboardview_keycode_delete" msgid="8489719929424895174">"ÓšŃ‡ÒŻŃ€ÒŻÒŻ"</string>
+    <string name="keyboardview_keycode_delete" msgid="8489719929424895174">"Đ–ĐŸĐș ĐșŃ‹Đ»ŃƒŃƒ"</string>
     <string name="disable_carrier_button_text" msgid="7153361131709275746">"eSIM-ĐșĐ°Ń€Ń‚Đ°ĐœŃ‹ Ó©Ń‡ÒŻŃ€ÒŻÒŻ"</string>
     <string name="error_disable_esim_title" msgid="3802652622784813119">"eSIM-ĐșĐ°Ń€Ń‚Đ°ĐœŃ‹ Ó©Ń‡ÒŻŃ€ÒŻÒŻĐłÓ© Đ±ĐŸĐ»Đ±ĐŸĐčт"</string>
     <string name="error_disable_esim_msg" msgid="2441188596467999327">"ĐšĐ°Ń‚Đ°ĐŽĐ°Đœ ŃƒĐ»Đ°ĐŒ eSIM-ĐșĐ°Ń€Ń‚Đ°ĐœŃ‹ Ó©Ń‡ÒŻŃ€ÒŻÒŻĐłÓ© Đ±ĐŸĐ»Đ±ĐŸĐčт."</string>
diff --git a/packages/SystemUI/res-keyguard/values-lo/strings.xml b/packages/SystemUI/res-keyguard/values-lo/strings.xml
index 9e64abe6..4b8bbf0 100644
--- a/packages/SystemUI/res-keyguard/values-lo/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-lo/strings.xml
@@ -108,7 +108,7 @@
     <string name="kg_password_pin_failed" msgid="5136259126330604009">"PIN àș‚àș­àș‡ SIM ເàșźàș±àș”àș§àșœàșàș„àș»à»‰àșĄà»€àș«àșŒàș§!"</string>
     <string name="kg_password_puk_failed" msgid="6778867411556937118">"PUK àș‚àș­àș‡ SIM ເàșźàș±àș”àș§àșœàșàș„àș»à»‰àșĄà»€àș«àșŒàș§!"</string>
     <string name="accessibility_ime_switch_button" msgid="9082358310194861329">"àșȘàș°àș„àș±àșšàșźàșčàșšà»àșšàșšàșàșČàș™àș›à»‰àș­àș™àș‚ໍ້àșĄàșčàș™"</string>
-    <string name="airplane_mode" msgid="2528005343938497866">"ໂໝàș”àșąàșč່ໃàș™àșàș»àș™"</string>
+    <string name="airplane_mode" msgid="2528005343938497866">"ໂໝàș”ໃàș™àșàș»àș™"</string>
     <string name="kg_prompt_reason_restart_pattern" msgid="3321211830602827742">"àș•້àș­àș‡à»àș•້àșĄàșźàșčàșšà»àșšàșšàș«àșŒàș±àș‡àșˆàșČàșàșŁàș”àșȘàș°àș•àșČàș”àș­àșžàș›àș°àșàș­àș™"</string>
     <string name="kg_prompt_reason_restart_pin" msgid="2672166323886110512">"àș•້àș­àș‡à»ƒàșȘ່ PIN àș«àșŒàș±àș‡àșˆàșČàșàșŁàș”àșȘàș°àș•àșČàș”àș­àșžàș›àș°àșàș­àș™"</string>
     <string name="kg_prompt_reason_restart_password" msgid="3967993994418885887">"àș•້àș­àș‡à»ƒàșȘ່àș„àș°àș«àș±àș”àșœà»ˆàșČàș™àș«àșŒàș±àș‡àșˆàșČàșàșŁàș”àșȘàș°àș•àșČàș”àș­àșžàș›àș°àșàș­àș™"</string>
diff --git a/packages/SystemUI/res-keyguard/values-or/strings.xml b/packages/SystemUI/res-keyguard/values-or/strings.xml
index 3e381d2..83dabae 100644
--- a/packages/SystemUI/res-keyguard/values-or/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-or/strings.xml
@@ -108,7 +108,7 @@
     <string name="kg_password_pin_failed" msgid="5136259126330604009">"SIM PIN àŹ•àŹŸàŹź àŹŹàŹżàŹ«àŹł àŹčେàŹČàŹŸ!"</string>
     <string name="kg_password_puk_failed" msgid="6778867411556937118">"SIM PUKàŹ° àŹ•àŹŸàŹź àŹŹàŹżàŹ«àŹł àŹčେàŹČàŹŸ!"</string>
     <string name="accessibility_ime_switch_button" msgid="9082358310194861329">"àŹ‡àŹšàŹȘà­àŹŸà­‌ àŹȘàŹŠà­àŹ§àŹ€àŹż àŹŹàŹŠàŹłàŹŸàŹšà­àŹ€à­"</string>
-    <string name="airplane_mode" msgid="2528005343938497866">"àŹàŹ°à­‹àŹȘ୍àŹČà­‡àŹš àŹźà­‹àŹĄ"</string>
+    <string name="airplane_mode" msgid="2528005343938497866">"àŹàŹ°à­‹àŹȘ୍àŹČà­‡àŹšà­‍ àŹźà­‹àŹĄà­"</string>
     <string name="kg_prompt_reason_restart_pattern" msgid="3321211830602827742">"àŹĄàŹżàŹ­àŹŸàŹ‡àŹž àŹ°àŹżàŹ·à­àŹŸàŹŸàŹ°à­àŹŸ àŹčà­‡àŹŹàŹŸ àŹȘàŹ°à­‡ àŹȘàŹŸàŹŸàŹ°à­àŹš àŹ†àŹŹàŹ¶à­à­ŸàŹ•"</string>
     <string name="kg_prompt_reason_restart_pin" msgid="2672166323886110512">"àŹĄàŹżàŹ­àŹŸàŹ‡àŹž àŹ°àŹżàŹ·à­àŹŸàŹŸàŹ°à­àŹŸ àŹčà­‡àŹŹàŹŸ àŹȘàŹ°à­‡ PIN àŹ†àŹŹàŹ¶à­à­ŸàŹ•"</string>
     <string name="kg_prompt_reason_restart_password" msgid="3967993994418885887">"àŹĄàŹżàŹ­àŹŸàŹ‡àŹž àŹ°àŹżàŹ·à­àŹŸàŹŸàŹ°à­àŹŸ àŹčà­‡àŹŹàŹŸ àŹȘàŹ°à­‡ àŹȘàŹŸàŹžà­±àŹŸàŹ°à­àŹĄ àŹ†àŹŹàŹ¶à­à­ŸàŹ•"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ta/strings.xml b/packages/SystemUI/res-keyguard/values-ta/strings.xml
index 3e64755..db8b8f8 100644
--- a/packages/SystemUI/res-keyguard/values-ta/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ta/strings.xml
@@ -21,11 +21,14 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="keyguard_enter_your_pin" msgid="5429932527814874032">"àźȘàźżàź©àŻàź©àŻˆ àź‰àźłàŻàźłàźżàźŸàŻàź•"</string>
-    <string name="keyguard_enter_pin" msgid="8114529922480276834">"àźȘàźżàź©àŻàź©àŻˆ àź‰àźłàŻàźłàźżàźŸàź”àŻàźźàŻ"</string>
+    <!-- no translation found for keyguard_enter_pin (8114529922480276834) -->
+    <skip />
     <string name="keyguard_enter_your_pattern" msgid="351503370332324745">"àźȘàŻ‡àźŸàŻàźŸàź°àŻàź©àŻˆ àź‰àźłàŻàźłàźżàźŸàŻàź•"</string>
-    <string name="keyguard_enter_pattern" msgid="7616595160901084119">"àźȘàŻ‡àźŸàŻàźŸàź°àŻàź©àŻˆ àź”àź°àŻˆàźŻàź”àŻàźźàŻ"</string>
+    <!-- no translation found for keyguard_enter_pattern (7616595160901084119) -->
+    <skip />
     <string name="keyguard_enter_your_password" msgid="7225626204122735501">"àź•àźŸàź”àŻàźšàŻàźšàŻŠàźČàŻàźČàŻˆ àź‰àźłàŻàźłàźżàźŸàŻàź•"</string>
-    <string name="keyguard_enter_password" msgid="6483623792371009758">"àź•àźŸàź”àŻàźšàŻàźšàŻŠàźČàŻàźČàŻˆ àź‰àźłàŻàźłàźżàźŸàź”àŻàźźàŻ"</string>
+    <!-- no translation found for keyguard_enter_password (6483623792371009758) -->
+    <skip />
     <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"àźšàŻ†àźČàŻàźČàźŸàź€ àźšàźżàźźàŻ àź•àźŸàź°àŻàźŸàŻ."</string>
     <string name="keyguard_charged" msgid="5478247181205188995">"àźšàźŸàź°àŻàźœàŻ àźšàŻ†àźŻàŻàźŻàźȘàŻàźȘàźŸàŻàźŸàź€àŻ"</string>
     <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • àź”àźŻàź°àŻàźČàŻ†àźžàŻ àźźàŻàź±àŻˆàźŻàźżàźČàŻ àźšàźŸàź°àŻàźœàźŸàź•àźżàź±àź€àŻ"</string>
@@ -55,38 +58,68 @@
     <string name="error_disable_esim_msg" msgid="2441188596467999327">"àźȘàźżàźŽàŻˆ àźàź±àŻàźȘàźŸàŻàźŸàź€àźŸàźČàŻ eSIMàź àźźàŻàźŸàź•àŻàź• àźźàŻàźŸàźżàźŻàź”àźżàźČàŻàźČàŻˆ."</string>
     <string name="keyboardview_keycode_enter" msgid="6727192265631761174">"àźŽàź©àŻàźŸàź°àŻ àźȘàźŸàŻàźŸàź©àŻ"</string>
     <string name="kg_wrong_pattern" msgid="5907301342430102842">"àź€àź”àź±àźŸàź© àźȘàŻ‡àźŸàŻàźŸàź°àŻàź©àŻ"</string>
-    <string name="kg_wrong_pattern_try_again" msgid="3603524940234151881">"àź€àź”àź±àŻ. àźźàŻ€àźŁàŻàźŸàŻàźźàŻ àźźàŻàźŻàźČàź”àŻàźźàŻ."</string>
+    <!-- no translation found for kg_wrong_pattern_try_again (3603524940234151881) -->
+    <skip />
     <string name="kg_wrong_password" msgid="4143127991071670512">"àź€àź”àź±àźŸàź© àź•àźŸàź”àŻàźšàŻàźšàŻŠàźČàŻ"</string>
-    <string name="kg_wrong_password_try_again" msgid="6602878676125765920">"àź€àź”àź±àŻ. àźźàŻ€àźŁàŻàźŸàŻàźźàŻ àźźàŻàźŻàźČàź”àŻàźźàŻ."</string>
+    <!-- no translation found for kg_wrong_password_try_again (6602878676125765920) -->
+    <skip />
     <string name="kg_wrong_pin" msgid="4160978845968732624">"àź€àź”àź±àźŸàź© àźȘàźżàź©àŻ"</string>
-    <string name="kg_wrong_pin_try_again" msgid="3129729383303430190">"àź€àź”àź±àŻ. àźźàŻ€àźŁàŻàźŸàŻàźźàŻ àźźàŻàźŻàźČàź”àŻàźźàŻ."</string>
-    <string name="kg_wrong_input_try_fp_suggestion" msgid="3143861542242024833">"àź‡àźČàŻàźČàŻˆàźŻàŻ†àź©àźżàźČàŻ àź•àŻˆàź°àŻ‡àź•àŻˆ àźźàŻ‚àźČàźźàŻ àź…àź©àŻàźČàźŸàź•àŻ àźšàŻ†àźŻàŻàźŻàź”àŻàźźàŻ"</string>
-    <string name="kg_fp_not_recognized" msgid="5183108260932029241">"àź•àŻˆàź°àŻ‡àź•àŻˆ àź…àźŸàŻˆàźŻàźŸàźłàźźàŻ àź‡àźČàŻàźČàŻˆ"</string>
-    <string name="bouncer_face_not_recognized" msgid="1666128054475597485">"àźźàŻàź•àźźàŻ àź•àźŁàŻàźŸàź±àźżàźŻ àźźàŻàźŸàźżàźŻàź”àźżàźČàŻàźČàŻˆ"</string>
-    <string name="kg_bio_try_again_or_pin" msgid="4752168242723808390">"àźźàŻ€àźŁàŻàźŸàŻàźźàŻ àźźàŻàźŻàźČàź”àŻàźźàŻ àź…àźČàŻàźČàź€àŻ àźȘàźżàź©àŻàź©àŻˆ àź‰àźłàŻàźłàźżàźŸàź”àŻàźźàŻ"</string>
-    <string name="kg_bio_try_again_or_password" msgid="1473132729225398039">"àźźàŻ€àźŁàŻàźŸàŻàźźàŻ àźźàŻàźŻàźČàź”àŻàźźàŻ àź…àźČàŻàźČàź€àŻ àź•àźŸàź”àŻàźšàŻàźšàŻŠàźČàŻàźČàŻˆ àź‰àźłàŻàźłàźżàźŸàź”àŻàźźàŻ"</string>
-    <string name="kg_bio_try_again_or_pattern" msgid="4867893307468801501">"àźźàŻ€àźŁàŻàźŸàŻàźźàŻ àźźàŻàźŻàźČàź”àŻàźźàŻ àź…àźČàŻàźČàź€àŻ àźȘàŻ‡àźŸàŻàźŸàź°àŻàź©àŻˆ àź”àź°àŻˆàźŻàź”àŻàźźàŻ"</string>
-    <string name="kg_bio_too_many_attempts_pin" msgid="5850845723433047605">"àźȘàźČàźźàŻàź±àŻˆ àźźàŻàźŻàź©àŻàź±àź€àźŸàźČàŻ àźȘàźżàź©àŻ àź€àŻ‡àź”àŻˆ"</string>
-    <string name="kg_bio_too_many_attempts_password" msgid="5551690347827728042">"àźȘàźČàźźàŻàź±àŻˆ àźźàŻàźŻàź©àŻàź±àź€àźŸàźČàŻ àź•àźŸàź”àŻàźšàŻàźšàŻŠàźČàŻ àź€àŻ‡àź”àŻˆ"</string>
-    <string name="kg_bio_too_many_attempts_pattern" msgid="736884689355181602">"àźȘàźČàźźàŻàź±àŻˆ àźźàŻàźŻàź©àŻàź±àź€àźŸàźČàŻ àźȘàŻ‡àźŸàŻàźŸàź°àŻàź©àŻ àź€àŻ‡àź”àŻˆ"</string>
-    <string name="kg_unlock_with_pin_or_fp" msgid="5635161174698729890">"àźȘàźżàź©àŻ/àź•àŻˆàź°àŻ‡àź•àŻˆàźŻàŻˆ àźźàŻàźŻàźČàź”àŻàźźàŻ"</string>
-    <string name="kg_unlock_with_password_or_fp" msgid="2251295907826814237">"àź•àźŸàź”àŻàźšàŻàźšàŻŠàźČàŻ/àź•àŻˆàź°àŻ‡àź•àŻˆ àźźàŻàźŻàźČàź”àŻàźźàŻ"</string>
-    <string name="kg_unlock_with_pattern_or_fp" msgid="2391870539909135046">"àźȘàŻ‡àźŸàŻàźŸàź°àŻàź©àŻ/àź•àŻˆàź°àŻ‡àź•àŻˆ àźźàŻàźŻàźČàź”àŻàźźàŻ"</string>
-    <string name="kg_prompt_after_dpm_lock" msgid="6002804765868345917">"àźȘàźŸàź€àŻàź•àźŸàźȘàŻàźȘàźżàź±àŻàź•àźŸàź•, àźȘàźŁàźżàź•àŻàź•àŻŠàźłàŻàź•àŻˆ àźźàŻ‚àźČàźźàŻ àź‡àź€àŻ àźȘàŻ‚àźŸàŻàźŸàźȘàŻàźȘàźŸàŻàźŸàź€àŻ"</string>
-    <string name="kg_prompt_after_user_lockdown_pin" msgid="5374732179740050373">"àźźàŻàźŽàŻàźȘàŻ àźȘàŻ‚àźŸàŻàźŸàŻ àź•àźŸàź°àźŁàźźàźŸàź•àźȘàŻ àźȘàźżàź©àŻ àź€àŻ‡àź”àŻˆ"</string>
-    <string name="kg_prompt_after_user_lockdown_password" msgid="9097968458291129795">"àźźàŻàźŽàŻàźȘàŻ àźȘàŻ‚àźŸàŻàźŸàŻ àź•àźŸàź°àźŁàźźàźŸàź•àź•àŻ àź•àźŸàź”àŻàźšàŻàźšàŻŠàźČàŻ àź€àŻ‡àź”àŻˆ"</string>
-    <string name="kg_prompt_after_user_lockdown_pattern" msgid="215072203613597906">"àźźàŻàźŽàŻàźȘàŻ àźȘàŻ‚àźŸàŻàźŸàŻ àź•àźŸàź°àźŁàźźàźŸàź•àźȘàŻ àźȘàŻ‡àźŸàŻàźŸàź°àŻàź©àŻ àź€àŻ‡àź”àŻˆ"</string>
-    <string name="kg_prompt_unattended_update" msgid="8223448855578632202">"àźšàŻ†àźŻàźČàŻàźȘàźŸàźŸàźżàźČàŻàźČàźŸàź€ àźšàŻ‡àź°àź€àŻàź€àźżàźČàŻ àźȘàŻàź€àŻàźȘàŻàźȘàźżàźȘàŻàźȘàŻ àźšàźżàź±àŻàź”àźȘàŻàźȘàźŸàŻàźźàŻ"</string>
-    <string name="kg_prompt_pin_auth_timeout" msgid="5868644725126275245">"àźšàŻ‡àź°àŻàź€àŻàź€ àźȘàźŸàź€àŻàź•àźŸàźȘàŻàźȘàŻ àź€àŻ‡àź”àŻˆ. àźȘàźżàź©àŻ àź‰àźȘàźŻàŻ‹àź•àźżàź•àŻàź•àź”àźżàźČàŻàźČàŻˆ."</string>
-    <string name="kg_prompt_password_auth_timeout" msgid="5809110458491920871">"àźšàŻ‡àź°àŻàź€àŻàź€ àźȘàźŸàź€àŻàź•àźŸàźȘàŻàźȘàŻ àź€àŻ‡àź”àŻˆ. àź•àźŸàź”àŻàźšàŻàźšàŻŠàźČàŻ àź‰àźȘàźŻàŻ‹àź•àźżàź•àŻàź•àź”àźżàźČàŻàźČàŻˆ."</string>
-    <string name="kg_prompt_pattern_auth_timeout" msgid="1860605401869262178">"àźšàŻ‡àź°àŻàź€àŻàź€ àźȘàźŸàź€àŻàź•àźŸàźȘàŻàźȘàŻ àź€àŻ‡àź”àŻˆ. àźȘàŻ‡àźŸàŻàźŸàź°àŻàź©àŻ àź‰àźȘàźŻàŻ‹àź•àźżàź•àŻàź•àź”àźżàźČàŻàźČàŻˆ."</string>
-    <string name="kg_prompt_auth_timeout" msgid="6620679830980315048">"àźšàŻ‡àź°àŻàź€àŻàź€ àźȘàźŸàź€àŻàź•àźŸàźȘàŻàźȘàŻ àź€àŻ‡àź”àŻˆ. àźšàźŸàź€àź©àźźàŻ àź…àź©àŻàźČàźŸàź•àŻàź•àźżàźČàŻ àź‡àźČàŻàźČàŻˆ."</string>
-    <string name="kg_face_locked_out" msgid="2751559491287575">"àźźàŻàź• àź…àź©àŻàźČàźŸàź•àŻ àźźàŻàźŸàźżàźŻàźŸàź€àŻ. àźȘàźČàźźàŻàź±àŻˆ àźźàŻàźŻàź©àŻàź±àŻàź”àźżàźŸàŻàźŸàŻ€àź°àŻàź•àźłàŻ."</string>
-    <string name="kg_fp_locked_out" msgid="6228277682396768830">"àź•àŻˆàź°àŻ‡àź•àŻˆ àź…àź©àŻàźČàźŸàź•àŻ àźźàŻàźŸàźżàźŻàźŸàź€àŻ. àźȘàźČàźźàŻàź±àŻˆ àźźàŻàźŻàź©àŻàź±àŻàź”àźżàźŸàŻàźŸàŻ€àź°àŻàź•àźłàŻ."</string>
-    <string name="kg_trust_agent_disabled" msgid="5400691179958727891">"àźšàźźàŻàźȘàź•àźźàźŸàź© àźàźœàŻ†àźŁàŻàźŸàŻ àź•àźżàźŸàŻˆàź•àŻàź•àź”àźżàźČàŻàźČàŻˆ"</string>
-    <string name="kg_primary_auth_locked_out_pin" msgid="5492230176361601475">"àź€àź”àź±àźŸàź© àźȘàźżàź©àŻ àźźàŻ‚àźČàźźàŻ àźȘàźČàźźàŻàź±àŻˆ àźźàŻàźŻàź©àŻàź±àŻàź”àźżàźŸàŻàźŸàŻ€àź°àŻàź•àźłàŻ"</string>
-    <string name="kg_primary_auth_locked_out_pattern" msgid="8266214607346180952">"àź€àź”àź±àźŸàź© àźȘàŻ‡àźŸàŻàźŸàź°àŻàź©àŻ àźźàŻ‚àźČàźźàŻ àźȘàźČàźźàŻàź±àŻˆ àźźàŻàźŻàź©àŻàź±àŻàź”àźżàźŸàŻàźŸàŻ€àź°àŻàź•àźłàŻ"</string>
-    <string name="kg_primary_auth_locked_out_password" msgid="6170245108400198659">"àź€àź”àź±àźŸàź© àź•àźŸàź”àŻàźšàŻàźšàŻŠàźČàŻ àźźàŻ‚àźČàźźàŻ àźȘàźČàźźàŻàź±àŻˆ àźźàŻàźŻàź©àŻàź±àŻàź”àźżàźŸàŻàźŸàŻ€àź°àŻàź•àźłàŻ"</string>
+    <!-- no translation found for kg_wrong_pin_try_again (3129729383303430190) -->
+    <skip />
+    <!-- no translation found for kg_wrong_input_try_fp_suggestion (3143861542242024833) -->
+    <skip />
+    <!-- no translation found for kg_fp_not_recognized (5183108260932029241) -->
+    <skip />
+    <!-- no translation found for bouncer_face_not_recognized (1666128054475597485) -->
+    <skip />
+    <!-- no translation found for kg_bio_try_again_or_pin (4752168242723808390) -->
+    <skip />
+    <!-- no translation found for kg_bio_try_again_or_password (1473132729225398039) -->
+    <skip />
+    <!-- no translation found for kg_bio_try_again_or_pattern (4867893307468801501) -->
+    <skip />
+    <!-- no translation found for kg_bio_too_many_attempts_pin (5850845723433047605) -->
+    <skip />
+    <!-- no translation found for kg_bio_too_many_attempts_password (5551690347827728042) -->
+    <skip />
+    <!-- no translation found for kg_bio_too_many_attempts_pattern (736884689355181602) -->
+    <skip />
+    <!-- no translation found for kg_unlock_with_pin_or_fp (5635161174698729890) -->
+    <skip />
+    <!-- no translation found for kg_unlock_with_password_or_fp (2251295907826814237) -->
+    <skip />
+    <!-- no translation found for kg_unlock_with_pattern_or_fp (2391870539909135046) -->
+    <skip />
+    <!-- no translation found for kg_prompt_after_dpm_lock (6002804765868345917) -->
+    <skip />
+    <!-- no translation found for kg_prompt_after_user_lockdown_pin (5374732179740050373) -->
+    <skip />
+    <!-- no translation found for kg_prompt_after_user_lockdown_password (9097968458291129795) -->
+    <skip />
+    <!-- no translation found for kg_prompt_after_user_lockdown_pattern (215072203613597906) -->
+    <skip />
+    <!-- no translation found for kg_prompt_unattended_update (8223448855578632202) -->
+    <skip />
+    <!-- no translation found for kg_prompt_pin_auth_timeout (5868644725126275245) -->
+    <skip />
+    <!-- no translation found for kg_prompt_password_auth_timeout (5809110458491920871) -->
+    <skip />
+    <!-- no translation found for kg_prompt_pattern_auth_timeout (1860605401869262178) -->
+    <skip />
+    <!-- no translation found for kg_prompt_auth_timeout (6620679830980315048) -->
+    <skip />
+    <!-- no translation found for kg_face_locked_out (2751559491287575) -->
+    <skip />
+    <!-- no translation found for kg_fp_locked_out (6228277682396768830) -->
+    <skip />
+    <!-- no translation found for kg_trust_agent_disabled (5400691179958727891) -->
+    <skip />
+    <!-- no translation found for kg_primary_auth_locked_out_pin (5492230176361601475) -->
+    <skip />
+    <!-- no translation found for kg_primary_auth_locked_out_pattern (8266214607346180952) -->
+    <skip />
+    <!-- no translation found for kg_primary_auth_locked_out_password (6170245108400198659) -->
+    <skip />
     <string name="kg_too_many_failed_attempts_countdown" msgid="2038195171919795529">"{count,plural, =1{# àź”àźżàź©àźŸàźŸàźżàźŻàźżàźČàŻ àźźàŻ€àźŁàŻàźŸàŻàźźàŻ àźźàŻàźŻàźČàź”àŻàźźàŻ.}other{# àź”àźżàź©àźŸàźŸàźżàź•àźłàźżàźČàŻ àźźàŻ€àźŁàŻàźŸàŻàźźàŻ àźźàŻàźŻàźČàź”àŻàźźàŻ.}}"</string>
     <string name="kg_sim_pin_instructions" msgid="1942424305184242951">"àźšàźżàźźàŻ àźȘàźżàź©àŻàź©àŻˆ àź‰àźłàŻàźłàźżàźŸàź”àŻàźźàŻ."</string>
     <string name="kg_sim_pin_instructions_multi" msgid="3639863309953109649">"\"<xliff:g id="CARRIER">%1$s</xliff:g>\"àź•àŻàź•àźŸàź© àźšàźżàźźàŻ àźȘàźżàź©àŻàź©àŻˆ àź‰àźłàŻàźłàźżàźŸàź”àŻàźźàŻ."</string>
@@ -109,9 +142,12 @@
     <string name="kg_password_puk_failed" msgid="6778867411556937118">"àźšàźżàźźàŻ PUK àźšàŻ†àźŻàźČàŻàźȘàźŸàźŸàŻ àź€àŻ‹àźČàŻàź”àźżàźŻàźŸàŻˆàźšàŻàź€àź€àŻ!"</string>
     <string name="accessibility_ime_switch_button" msgid="9082358310194861329">"àź‰àźłàŻàźłàŻ€àźŸàŻàźŸàŻ àźźàŻàź±àŻˆàźŻàŻˆ àźźàźŸàź±àŻàź±àŻàźźàŻ"</string>
     <string name="airplane_mode" msgid="2528005343938497866">"àź”àźżàźźàźŸàź©àźȘàŻ àźȘàźŻàź©àŻàźźàŻàź±àŻˆ"</string>
-    <string name="kg_prompt_reason_restart_pattern" msgid="3321211830602827742">"àźšàźŸàź€àź©àźźàŻ àźźàŻ€àźŁàŻàźŸàŻàźźàŻ àź€àŻŠàźŸàź™àŻàź•àźżàźŻàź€àźŸàźČàŻ àźȘàŻ‡àźŸàŻàźŸàź°àŻàź©àŻ àź€àŻ‡àź”àŻˆ"</string>
-    <string name="kg_prompt_reason_restart_pin" msgid="2672166323886110512">"àźšàźŸàź€àź©àźźàŻ àźźàŻ€àźŁàŻàźŸàŻàźźàŻ àź€àŻŠàźŸàź™àŻàź•àźżàźŻàź€àźŸàźČàŻ àźȘàźżàź©àŻ àź€àŻ‡àź”àŻˆ"</string>
-    <string name="kg_prompt_reason_restart_password" msgid="3967993994418885887">"àźšàźŸàź€àź©àźźàŻ àźźàŻ€àźŁàŻàźŸàŻàźźàŻ àź€àŻŠàźŸàź™àŻàź•àźżàźŻàź€àźŸàźČàŻ àź•àźŸàź”àŻàźšàŻàźšàŻŠàźČàŻ àź€àŻ‡àź”àŻˆ"</string>
+    <!-- no translation found for kg_prompt_reason_restart_pattern (3321211830602827742) -->
+    <skip />
+    <!-- no translation found for kg_prompt_reason_restart_pin (2672166323886110512) -->
+    <skip />
+    <!-- no translation found for kg_prompt_reason_restart_password (3967993994418885887) -->
+    <skip />
     <string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"àź•àŻ‚àźŸàŻàź€àźČàŻ àźȘàźŸàź€àŻàź•àźŸàźȘàŻàźȘàźżàź±àŻàź•àŻàźȘàŻ àźȘàŻ‡àźŸàŻàźŸàź°àŻàź©àŻˆàźȘàŻ àźȘàźŻàź©àŻàźȘàźŸàŻàź€àŻàź€àź”àŻàźźàŻ"</string>
     <string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"àź•àŻ‚àźŸàŻàź€àźČàŻ àźȘàźŸàź€àŻàź•àźŸàźȘàŻàźȘàźżàź±àŻàź•àŻàźȘàŻ àźȘàźżàź©àŻàź©àŻˆ (PIN) àźȘàźŻàź©àŻàźȘàźŸàŻàź€àŻàź€àź”àŻàźźàŻ"</string>
     <string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"àź•àŻ‚àźŸàŻàź€àźČàŻ àźȘàźŸàź€àŻàź•àźŸàźȘàŻàźȘàźżàź±àŻàź•àŻàź•àŻ àź•àźŸàź”àŻàźšàŻàźšàŻŠàźČàŻàźČàŻˆàźȘàŻ àźȘàźŻàź©àŻàźȘàźŸàŻàź€àŻàź€àź”àŻàźźàŻ"</string>
diff --git a/packages/SystemUI/res-product/values-es/strings.xml b/packages/SystemUI/res-product/values-es/strings.xml
index b13018b..84ebe29 100644
--- a/packages/SystemUI/res-product/values-es/strings.xml
+++ b/packages/SystemUI/res-product/values-es/strings.xml
@@ -40,7 +40,7 @@
     <string name="kg_failed_attempts_now_erasing_profile" product="default" msgid="4682221342671290678">"Has intentado desbloquear el teléfono de forma incorrecta <xliff:g id="NUMBER">%d</xliff:g> veces. Se quitará este perfil de trabajo y se eliminarán todos sus datos."</string>
     <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="1860049973474855672">"Has dibujado un patrón de desbloqueo incorrecto <xliff:g id="NUMBER_0">%1$d</xliff:g> veces. Si se producen <xliff:g id="NUMBER_1">%2$d</xliff:g> intentos incorrectos más, se te pedirá que desbloquees el tablet con una cuenta de correo electrónico.\n\n Vuelve a intentarlo en <xliff:g id="NUMBER_2">%3$d</xliff:g> segundos."</string>
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="44112553371516141">"Has dibujado un patrón de desbloqueo incorrecto <xliff:g id="NUMBER_0">%1$d</xliff:g> veces. Si se producen <xliff:g id="NUMBER_1">%2$d</xliff:g> intentos incorrectos más, se te pedirá que desbloquees el teléfono con una cuenta de correo electrónico.\n\n Vuelve a intentarlo en <xliff:g id="NUMBER_2">%3$d</xliff:g> segundos."</string>
-    <string name="security_settings_sfps_enroll_find_sensor_message" product="tablet" msgid="3726972508570143945">"El sensor de huellas digitales está en el botón de encendido. Es el botón plano situado junto al botón de volumen con relieve cerca de una de la esquinas de la tablet."</string>
+    <string name="security_settings_sfps_enroll_find_sensor_message" product="tablet" msgid="3726972508570143945">"El sensor de huellas digitales está en el botón de encendido. Es el botón plano situado junto al botón de volumen con relieve en el lateral de la tablet."</string>
     <string name="security_settings_sfps_enroll_find_sensor_message" product="device" msgid="2929467060295094725">"El sensor de huellas digitales está en el botón de encendido. Es el botón plano situado junto al botón de volumen con relieve en el lateral del dispositivo."</string>
     <string name="security_settings_sfps_enroll_find_sensor_message" product="default" msgid="8582726566542997639">"El sensor de huellas digitales está en el botón de encendido. Es el botón plano situado junto al botón de volumen con relieve en el lateral del teléfono."</string>
     <string name="global_action_lock_message" product="default" msgid="7092460751050168771">"Desbloquea el teléfono para ver más opciones"</string>
diff --git a/packages/SystemUI/res-product/values-hy/strings.xml b/packages/SystemUI/res-product/values-hy/strings.xml
index acee335..3ebc72f 100644
--- a/packages/SystemUI/res-product/values-hy/strings.xml
+++ b/packages/SystemUI/res-product/values-hy/strings.xml
@@ -40,9 +40,9 @@
     <string name="kg_failed_attempts_now_erasing_profile" product="default" msgid="4682221342671290678">"Ԯվւք ŐŻŐĄŐżŐĄÖ€Ő„ŐŹ Ő„Ö„ Ő°Ő„ŐŒŐĄŐ­ŐžŐœŐ¶ ŐĄŐșŐĄŐŻŐžŐČŐșŐ„ŐŹŐžÖ‚ <xliff:g id="NUMBER">%d</xliff:g> ŐĄŐ¶Ő°ŐĄŐ»ŐžŐČ ÖƒŐžÖ€Ő±: Ô±Ő·Ő­ŐĄŐżŐĄŐ¶Ö„ŐĄŐ”Ő«Ő¶ ŐșÖ€ŐžÖ†Ő«ŐŹŐš ŐŻŐ°Ő„ŐŒŐĄÖŐŸŐ«, և ŐșÖ€ŐžÖ†Ő«ŐŹŐ« ձվլվր ŐżŐŸŐ”ŐĄŐŹŐ¶Ő„Ö€Őš ŐŻŐ»Ő¶Ő»ŐŸŐ„Ő¶:"</string>
     <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="1860049973474855672">"Ԯվւք ŐŻŐĄŐżŐĄÖ€Ő„ŐŹ Ő„Ö„ ŐĄŐșŐĄŐŻŐžŐČŐșŐŽŐĄŐ¶ Ő¶ŐĄŐ­Ő·Őš ŐŽŐžÖ‚ŐżÖ„ŐĄŐŁÖ€Ő„ŐŹŐžÖ‚ <xliff:g id="NUMBER_0">%1$d</xliff:g> ŐĄŐ¶Ő°ŐĄŐ»ŐžŐČ ÖƒŐžÖ€Ő±: Ô”ŐŸŐœ <xliff:g id="NUMBER_1">%2$d</xliff:g> ŐĄŐ¶Ő°ŐĄŐ»ŐžŐČ ÖƒŐžÖ€Ő±Ő«Ö Ő°Ő„ŐżŐž ձՄՊենից ŐŻŐșŐĄŐ°ŐĄŐ¶Ő»ŐŸŐ« ŐĄŐșŐĄŐŻŐžŐČŐșŐ„ŐŹ ŐșŐŹŐĄŐ¶Ő·Ő„ŐżŐš Ő§ŐŹÖƒŐžŐœŐżŐ« Ő°ŐĄŐ·ŐŸŐ« ŐŽŐ«Ő»ŐžÖŐžŐŸÖ‰\n\n ÔœŐ¶Ő€Ö€ŐžÖ‚ŐŽ Ő„Ő¶Ö„ ŐŻÖ€ŐŻŐ«Ő¶ ÖƒŐžÖ€Ő±Ő„ŐŹ <xliff:g id="NUMBER_2">%3$d</xliff:g> ŐŸŐĄŐ”Ö€ŐŻŐ”ŐĄŐ¶Ő«Ö:"</string>
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="44112553371516141">"Ԯվւք <xliff:g id="NUMBER_0">%1$d</xliff:g> ŐĄŐ¶ŐŁŐĄŐŽ ŐœŐ­ŐĄŐŹ Ő„Ö„ Ő°ŐĄŐŸŐĄÖ„Ő„ŐŹ Ő±Ő„Ö€ ŐĄŐșŐĄŐŻŐžŐČŐșŐŽŐĄŐ¶ Ő¶ŐŽŐžÖ‚Ő·Őš: Ô”ŐŸŐœ <xliff:g id="NUMBER_1">%2$d</xliff:g> ŐĄŐ¶Ő°ŐĄŐ»ŐžŐČ ÖƒŐžÖ€Ő±Ő«Ö Ő°Ő„ŐżŐž Ő±Ő„ŐŠ ŐŻŐĄŐŒŐĄŐ»ŐĄÖ€ŐŻŐŸŐ« ŐĄŐșŐĄŐŻŐžŐČŐșŐ„ŐŹ Ő°Ő„ŐŒŐĄŐ­ŐžŐœŐš` Ö…ŐŁŐżŐĄŐŁŐžÖ€ŐźŐ„ŐŹŐžŐŸ Ő§ŐŹÖƒŐžŐœŐżŐ« Ő°ŐĄŐ·Ő«ŐŸ:\n\n ÔżÖ€ŐŻŐ«Ő¶ ÖƒŐžÖ€Ő±Ő„Ö„ <xliff:g id="NUMBER_2">%3$d</xliff:g> ŐŸŐĄŐ”Ö€ŐŻŐ”ŐĄŐ¶Ő«Ö:"</string>
-    <string name="security_settings_sfps_enroll_find_sensor_message" product="tablet" msgid="3726972508570143945">"Ő„ŐĄŐżŐ¶ŐĄŐ°Ő„ŐżÖ„Ő„Ö€Ő« ŐœŐŻŐĄŐ¶Ő„Ö€Őš ŐœŐ¶ŐžÖ‚ÖŐŽŐĄŐ¶ ŐŻŐžŐłŐĄŐŻŐ« ŐŸÖ€ŐĄ է։ Ô±Ő”Ő¶ Ő°ŐĄÖ€Ő© ŐŻŐžŐłŐĄŐŻ Ő§ Ő±ŐĄŐ”Ő¶Ő« վւŐȘŐŁŐ¶ŐžÖ‚Ő©Ő”ŐĄŐ¶ ŐžÖ‚ŐŒŐžÖ‚ÖŐ«ŐŻ ŐŻŐžŐłŐĄŐŻŐ« ŐŻŐžŐČÖ„Ő«Ő¶Ő ŐșŐŹŐĄŐ¶Ő·Ő„ŐżŐ« ŐŻŐžŐČŐĄŐ”Ő«Ő¶ ŐŽŐĄŐœŐžÖ‚ŐŽÖ‰"</string>
-    <string name="security_settings_sfps_enroll_find_sensor_message" product="device" msgid="2929467060295094725">"Ő„ŐĄŐżŐ¶ŐĄŐ°Ő„ŐżÖ„Ő„Ö€Ő« ŐœŐŻŐĄŐ¶Ő„Ö€Őš ŐœŐ¶ŐžÖ‚ÖŐŽŐĄŐ¶ ŐŻŐžŐłŐĄŐŻŐ« ŐŸÖ€ŐĄ է։ Ô±Ő”Ő¶ Ő°ŐĄÖ€Ő© ŐŻŐžŐłŐĄŐŻ Ő§ Ő±ŐĄŐ”Ő¶Ő« վւŐȘŐŁŐ¶ŐžÖ‚Ő©Ő”ŐĄŐ¶ ŐžÖ‚ŐŒŐžÖ‚ÖŐ«ŐŻ ŐŻŐžŐłŐĄŐŻŐ« ŐŻŐžŐČÖ„Ő«Ő¶Ő ŐœŐĄÖ€Ö„Ő« ŐŻŐžŐČŐĄŐ”Ő«Ő¶ ŐŽŐĄŐœŐžÖ‚ŐŽÖ‰"</string>
-    <string name="security_settings_sfps_enroll_find_sensor_message" product="default" msgid="8582726566542997639">"Ő„ŐĄŐżŐ¶ŐĄŐ°Ő„ŐżÖ„Ő„Ö€Ő« ŐœŐŻŐĄŐ¶Ő„Ö€Őš ŐœŐ¶ŐžÖ‚ÖŐŽŐĄŐ¶ ŐŻŐžŐłŐĄŐŻŐ« ŐŸÖ€ŐĄ է։ Ô±Ő”Ő¶ Ő°ŐĄÖ€Ő© ŐŻŐžŐłŐĄŐŻ Ő§ Ő±ŐĄŐ”Ő¶Ő« վւŐȘŐŁŐ¶ŐžÖ‚Ő©Ő”ŐĄŐ¶ ŐžÖ‚ŐŒŐžÖ‚ÖŐ«ŐŻ ŐŻŐžŐłŐĄŐŻŐ« ŐŻŐžŐČÖ„Ő«Ő¶Ő Ő°Ő„ŐŒŐĄŐ­ŐžŐœŐ« ŐŻŐžŐČŐĄŐ”Ő«Ő¶ ŐŽŐĄŐœŐžÖ‚ŐŽÖ‰"</string>
+    <string name="security_settings_sfps_enroll_find_sensor_message" product="tablet" msgid="3726972508570143945">"Ő„ŐĄŐżŐ¶ŐĄŐ°Ő„ŐżÖ„Ő„Ö€Ő« ŐœŐŻŐĄŐ¶Ő„Ö€Őš ŐœŐ¶ŐžÖ‚ÖŐŽŐĄŐ¶ ŐŻŐžŐłŐĄŐŻŐ« ŐŸÖ€ŐĄ է։ Ô±Ő”Ő¶ Ő°ŐĄÖ€Ő© ŐŻŐžŐłŐĄŐŻ Ő§ Ő±ŐĄŐ”Ő¶Ő« վւŐȘŐŁŐ¶ŐžÖ‚Ő©Ő”ŐĄŐ¶ ŐžÖ‚ŐŒŐžÖ‚ÖŐ«ŐŻ ŐŻŐžŐłŐĄŐŻŐ« ŐŻŐžŐČÖ„Ő«Ő¶Ő ŐșŐŹŐĄŐ¶Ő·Ő„ŐżŐ« Ő„ŐŠÖ€ŐĄŐ”Ő«Ő¶ ŐŽŐĄŐœŐžÖ‚ŐŽÖ‰"</string>
+    <string name="security_settings_sfps_enroll_find_sensor_message" product="device" msgid="2929467060295094725">"Ő„ŐĄŐżŐ¶ŐĄŐ°Ő„ŐżÖ„Ő„Ö€Ő« ŐœŐŻŐĄŐ¶Ő„Ö€Őš ŐœŐ¶ŐžÖ‚ÖŐŽŐĄŐ¶ ŐŻŐžŐłŐĄŐŻŐ« ŐŸÖ€ŐĄ է։ Ô±Ő”Ő¶ Ő°ŐĄÖ€Ő© ŐŻŐžŐłŐĄŐŻ Ő§ Ő±ŐĄŐ”Ő¶Ő« վւŐȘŐŁŐ¶ŐžÖ‚Ő©Ő”ŐĄŐ¶ ŐžÖ‚ŐŒŐžÖ‚ÖŐ«ŐŻ ŐŻŐžŐłŐĄŐŻŐ« ŐŻŐžŐČÖ„Ő«Ő¶Ő ŐœŐĄÖ€Ö„Ő« Ő„ŐŠÖ€ŐĄŐ”Ő«Ő¶ ŐŽŐĄŐœŐžÖ‚ŐŽÖ‰"</string>
+    <string name="security_settings_sfps_enroll_find_sensor_message" product="default" msgid="8582726566542997639">"Ő„ŐĄŐżŐ¶ŐĄŐ°Ő„ŐżÖ„Ő„Ö€Ő« ŐœŐŻŐĄŐ¶Ő„Ö€Őš ŐœŐ¶ŐžÖ‚ÖŐŽŐĄŐ¶ ŐŻŐžŐłŐĄŐŻŐ« ŐŸÖ€ŐĄ է։ Ô±Ő”Ő¶ Ő°ŐĄÖ€Ő© ŐŻŐžŐłŐĄŐŻ Ő§ Ő±ŐĄŐ”Ő¶Ő« վւŐȘŐŁŐ¶ŐžÖ‚Ő©Ő”ŐĄŐ¶ ŐžÖ‚ŐŒŐžÖ‚ÖŐ«ŐŻ ŐŻŐžŐłŐĄŐŻŐ« ŐŻŐžŐČÖ„Ő«Ő¶Ő Ő°Ő„ŐŒŐĄŐ­ŐžŐœŐ« Ő„ŐŠÖ€ŐĄŐ”Ő«Ő¶ ŐŽŐĄŐœŐžÖ‚ŐŽÖ‰"</string>
     <string name="global_action_lock_message" product="default" msgid="7092460751050168771">"Ô±ŐșŐĄŐŻŐžŐČŐșŐ„Ö„ Ő±Ő„Ö€ Ő°Ő„ŐŒŐĄŐ­ŐžŐœŐšŐ Տրեց՞ւցիŐč ŐŻŐĄÖ€ŐŁŐĄŐŸŐžÖ€ŐžÖ‚ŐŽŐ¶Ő„Ö€Őš ŐżŐ„ŐœŐ¶Ő„ŐŹŐžÖ‚ հածար"</string>
     <string name="global_action_lock_message" product="tablet" msgid="1024230056230539493">"Ô±ŐșŐĄŐŻŐžŐČŐșŐ„Ö„ Ő±Ő„Ö€ ŐșŐŹŐĄŐ¶Ő·Ő„ŐżŐšŐ Տրեց՞ւցիŐč ŐŻŐĄÖ€ŐŁŐĄŐŸŐžÖ€ŐžÖ‚ŐŽŐ¶Ő„Ö€Őš ŐżŐ„ŐœŐ¶Ő„ŐŹŐžÖ‚ հածար"</string>
     <string name="global_action_lock_message" product="device" msgid="3165224897120346096">"Ô±ŐșŐĄŐŻŐžŐČŐșŐ„Ö„ Ő±Ő„Ö€ ŐœŐĄÖ€Ö„ŐšŐ Տրեց՞ւցիŐč ŐŻŐĄÖ€ŐŁŐĄŐŸŐžÖ€ŐžÖ‚ŐŽŐ¶Ő„Ö€Őš ŐżŐ„ŐœŐ¶Ő„ŐŹŐžÖ‚ հածար"</string>
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 4d43b19..07ad795 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ontmerk as gunsteling"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Skuif na posisie <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Kontroles"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Kies kontroles om toegang vanaf Kitsinstellings te kry"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Hou en sleep om kontroles te herrangskik"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Alle kontroles is verwyder"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Veranderinge is nie gestoor nie"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Jou werkbeleid laat jou toe om slegs van die werkprofiel af foonoproepe te maak"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Skakel oor na werkprofiel"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Maak toe"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Pasmaak sluitskerm"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-fi is nie beskikbaar nie"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera is geblokkeer"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofoon is geblokkeer"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioriteitmodus is aan"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistent-aandag is aan"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 8adb782..cf85656 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ጀምር"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"አቁም"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ዚአንዔ ኄጅ ሁነታ"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"ንጜጜር"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"መደበኛ"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"መካኚለኛ"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"ኹፍተኛ"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"ዹመሣáˆȘያ ማይክሼፎን áŠ„áŒˆá‹ł ይነሳ?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"ዹመሣáˆȘያ ካሜራ áŠ„áŒˆá‹ł ይነሳ?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"ዹመሣáˆȘያ ካሜራ ኄና ማይክሼፎን áŠ„áŒˆá‹ł ይነሳ?"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ተወዳጅ áŠ á‰łá‹”áˆ­áŒ"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"ወደ ቩታ <xliff:g id="NUMBER">%d</xliff:g> ውሰዔ"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"መቆጣጠáˆȘያዎቜ"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ኹፈጣን á‰…áŠ•á‰„áˆźá‰œ ለመዔሚሔ መቆጣጠáˆȘያዎቜን ይምሹጡ"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"መቆጣጠáˆȘያዎቜን ዳግም ለማሔተካኚል ይያዙ ኄና ይጎቔቱ"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"ሁሉም መቆጣጠáˆȘያዎቜ ተወግደዋል"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"ለውጊቜ አልተቀመጡም"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"ዚሄራ መመáˆȘያዎ ኄርሔዎ ኚሄራ መገለጫው ቄቻ ጄáˆȘ ኄንá‹Čያደርጉ á‹­áˆá‰…á‹”áˆá‹Žá‰łáˆ"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"ወደ ዚሄራ መገለጫ ቀይር"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"ዝጋ"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"ማያ ገጜ ቁልፍን አቄጅ"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi አይገኝም"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ካሜራ á‰łáŒá‹·áˆ"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"ማይክሼፎን á‰łáŒá‹·áˆ"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ዚቅዔሚያ ሁነታ በርቷል"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"á‹šáˆšá‹łá‰” ቔኩሚቔ በርቷል"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 29a7c50..49abf5a 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -238,8 +238,8 @@
     <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Ű§Ù„ŰȘŰŻÙˆÙŠŰ± Ű§Ù„ŰȘÙ„Ù‚Ű§ŰŠÙŠ Ù„Ù„ŰŽŰ§ŰŽŰ©"</string>
     <string name="quick_settings_location_label" msgid="2621868789013389163">"Ű§Ù„Ù…ÙˆÙ‚Űč Ű§Ù„ŰŹŰșŰ±Ű§ÙÙŠ"</string>
     <string name="quick_settings_screensaver_label" msgid="1495003469366524120">"ێۧێ۩ Ű§Ù„Ű§ŰłŰȘ۱ۭۧ۩"</string>
-    <string name="quick_settings_camera_label" msgid="5612076679385269339">"Ű§Ù„ÙˆŰ”ÙˆÙ„ Ű„Ù„Ù‰ Ű§Ù„ÙƒŰ§Ù…ÙŠŰ±Ű§"</string>
-    <string name="quick_settings_mic_label" msgid="8392773746295266375">"Ű§Ù„ÙˆŰ”ÙˆÙ„ Ű„Ù„Ù‰ Ű§Ù„Ù…ÙŠÙƒŰ±ÙˆÙÙˆÙ†"</string>
+    <string name="quick_settings_camera_label" msgid="5612076679385269339">"Ű§Ù„ÙƒŰ§Ù…ÙŠŰ±Ű§"</string>
+    <string name="quick_settings_mic_label" msgid="8392773746295266375">"Ű§Ù„Ù…ÙŠÙƒŰ±ÙˆÙÙˆÙ†"</string>
     <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"مŰȘۭۧ"</string>
     <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"Ù…Ű­ŰžÙˆŰ±"</string>
     <string name="quick_settings_media_device_label" msgid="8034019242363789941">"ŰŹÙ‡Ű§ŰČ Ű§Ù„ÙˆŰłŰ§ŰŠŰ·"</string>
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ۚۯۥ"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Ű„ÙŠÙ‚Ű§Ù"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ÙˆŰ¶Űč \"Ű§Ù„ŰȘŰ”ÙŰ­ ŰšÙŠŰŻ ÙˆŰ§Ű­ŰŻŰ©\""</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Ű§Ù„ŰȘŰšŰ§ÙŠÙ†"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"ŰčŰ§ŰŻÙŠ"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"مŰȘÙˆŰłŰ·"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Ù…Ű±ŰȘفŰč"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"هل ŰȘŰ±ÙŠŰŻ Ű„ŰČŰ§Ù„Ű© ۭ۞۱ Ù…ÙŠÙƒŰ±ÙˆÙÙˆÙ† Ű§Ù„ŰŹÙ‡Ű§ŰČ۟"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"هل ŰȘŰ±ÙŠŰŻ Ű„ŰČŰ§Ù„Ű© ۭ۞۱ ÙƒŰ§Ù…ÙŠŰ±Ű§ Ű§Ù„ŰŹÙ‡Ű§ŰČ۟"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"هل ŰȘŰ±ÙŠŰŻ Ű„ŰČŰ§Ù„Ű© ۭ۞۱ Ű§Ù„ÙƒŰ§Ù…ÙŠŰ±Ű§ ÙˆŰ§Ù„Ù…ÙŠÙƒŰ±ÙˆÙÙˆÙ†ŰŸ"</string>
@@ -885,15 +889,17 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"Ű„ŰČŰ§Ù„Ű© من Ű§Ù„Ù…ÙŰ¶Ù‘Ù„Ű©"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"نقل Ű„Ù„Ù‰ Ű§Ù„Ù…ÙˆŰ¶Űč <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"ŰčÙ†Ű§Ű”Ű± Ű§Ù„ŰȘŰ­ÙƒÙ‘Ù…"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ۧ۟ŰȘÙŽŰ± ŰčÙ†Ű§Ű”Ű± Ű§Ù„ŰȘŰ­ÙƒÙ‘Ù… Ű§Ù„ŰȘي يŰȘم Ű§Ù„ÙˆŰ”ÙˆÙ„ Ű„Ù„ÙŠÙ‡Ű§ من \"Ű§Ù„Ű„ŰčۯۧۯۧŰȘ Ű§Ù„ŰłŰ±ÙŠŰčŰ©\"."</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"ۧ۶ŰșŰ· مŰč Ű§Ù„Ű§ŰłŰȘÙ…Ű±Ű§Ű± ÙˆŰ§ŰłŰ­Űš Ù„Ű„Űčۧۯ۩ ŰȘ۱ŰȘÙŠŰš ŰčÙ†Ű§Ű”Ű± Ű§Ù„ŰȘŰ­ÙƒÙ‘Ù…."</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"ŰȘمŰȘ Ű„ŰČŰ§Ù„Ű© كل ŰčÙ†Ű§Ű”Ű± Ű§Ù„ŰȘŰ­ÙƒÙ‘Ù…."</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"لم يŰȘم Ű­ÙŰž Ű§Ù„ŰȘŰșÙŠÙŠŰ±Ű§ŰȘ."</string>
     <string name="controls_favorite_see_other_apps" msgid="7709087332255283460">"Űč۱۶ Ű§Ù„ŰȘŰ·ŰšÙŠÙ‚Ű§ŰȘ Ű§Ù„ŰŁŰźŰ±Ù‰"</string>
-    <string name="controls_favorite_rearrange_button" msgid="2942788904364641185">"Ű„Űčۧۯ۩ Ű§Ù„ŰȘ۱ŰȘÙŠŰš"</string>
-    <string name="controls_favorite_add_controls" msgid="1221420435546694004">"Ű„Ű¶Ű§ÙŰ© ŰčÙ†Ű§Ű”Ű± ŰȘŰ­ÙƒÙ‘Ù…"</string>
-    <string name="controls_favorite_back_to_editing" msgid="184125114090062713">"Ű§Ù„Ű±ŰŹÙˆŰč Ű„Ù„Ù‰ Ű§Ù„ŰȘŰčŰŻÙŠÙ„"</string>
+    <!-- no translation found for controls_favorite_rearrange_button (2942788904364641185) -->
+    <skip />
+    <!-- no translation found for controls_favorite_add_controls (1221420435546694004) -->
+    <skip />
+    <!-- no translation found for controls_favorite_back_to_editing (184125114090062713) -->
+    <skip />
     <string name="controls_favorite_load_error" msgid="5126216176144877419">"ŰȘŰčŰ°ÙŽÙ‘Ű± ŰȘŰ­Ù…ÙŠÙ„ ŰčÙ†Ű§Ű”Ű± Ű§Ù„ŰȘŰ­ÙƒÙ‘Ù…. ŰȘŰ­Ù‚Ù‘Ù‚ من ŰȘŰ·ŰšÙŠÙ‚ <xliff:g id="APP">%s</xliff:g> للŰȘŰŁÙƒÙ‘ŰŻ من ŰŁÙ†Ù‡ لم يŰȘم ŰȘŰșÙŠÙŠŰ± Ű„ŰčۯۧۯۧŰȘ Ű§Ù„ŰȘŰ·ŰšÙŠÙ‚."</string>
     <string name="controls_favorite_load_none" msgid="7687593026725357775">"ŰčÙ†Ű§Ű”Ű± Ű§Ù„ŰȘŰ­ÙƒÙ‘Ù… Ű§Ù„Ù…ŰȘÙˆŰ§ÙÙ‚Ű© ŰșÙŠŰ± مŰȘÙˆÙÙ‘Ű±Ű©"</string>
     <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"ŰșÙŠŰ± Ű°Ù„Ùƒ"</string>
@@ -1123,8 +1129,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"ŰȘŰłÙ…Ű­ لك ŰłÙŠŰ§ŰłŰ© Ű§Ù„Űčمل ۚۄۏ۱ۧۥ Ű§Ù„Ù…ÙƒŰ§Ù„Ù…Ű§ŰȘ Ű§Ù„Ù‡Ű§ŰȘÙÙŠŰ© من Ű§Ù„Ù…Ù„Ù Ű§Ù„ŰŽŰźŰ”ÙŠ للŰčمل ÙÙ‚Ű·."</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Ű§Ù„ŰȘŰšŰŻÙŠÙ„ Ű„Ù„Ù‰ Ű§Ù„Ù…Ù„Ù Ű§Ù„ŰŽŰźŰ”ÙŠ للŰčمل"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Ű„ŰșÙ„Ű§Ù‚"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"ŰȘŰźŰ”ÙŠŰ” ێۧێ۩ Ű§Ù„Ù‚ÙÙ„"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"‏Ù„Ű§ يŰȘÙˆÙÙ‘Ű± ۧŰȘŰ”Ű§Ù„ Wi-Fi."</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ۧ۳ŰȘŰźŰŻŰ§Ù… Ű§Ù„ÙƒŰ§Ù…ÙŠŰ±Ű§ Ù…Ű­ŰžÙˆŰ±."</string>
@@ -1132,6 +1137,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"ۧ۳ŰȘŰźŰŻŰ§Ù… Ű§Ù„Ù…ÙŠÙƒŰ±ÙˆÙÙˆÙ† Ù…Ű­ŰžÙˆŰ±."</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ÙˆŰ¶Űč Ű§Ù„ŰŁÙˆÙ„ÙˆÙŠŰ© مفŰčّل."</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"‏ميŰČŰ© لفŰȘ Ű§Ù†ŰȘŰšŰ§Ù‡ \"Ù…ŰłŰ§ŰčŰŻ Google\" مفŰčÙ‘Ù„Ű©."</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index 775c8d4..8215f51 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"àŠ†à§°àŠźà§àŠ­ àŠ•à§°àŠ•"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"àŠŹàŠšà§àŠ§ àŠ•à§°àŠ•"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"àŠàŠ–àŠš àŠčàŠŸàŠ€à§‡à§°à§‡ àŠŹà§àŠŻà§±àŠčàŠŸà§° àŠ•à§°àŠŸ àŠź’àŠĄ"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"àŠ•àŠšàŠŸà§à§°àŠŸàŠ·à§àŠŸ"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"àŠźàŠŸàŠšàŠ•"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"àŠźàŠ§à§àŠŻàŠźà§€àŠŻàŠŒàŠŸ"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"àŠ‰àŠšà§àŠš"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"àŠĄàŠżàŠ­àŠŸàŠ‡àŠšà§° àŠźàŠŸàŠ‡àŠ•à§à§°\'àŠ«\'àŠš àŠ…à§±à§°à§‹àŠ§à§° àŠȘà§°àŠŸ àŠ†àŠàŠ€à§°àŠŸàŠŹàŠšà§‡?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"àŠĄàŠżàŠ­àŠŸàŠ‡àŠšà§° àŠ•à§‡àŠźà§‡à§°àŠŸ àŠ…à§±à§°à§‹àŠ§à§° àŠȘà§°àŠŸ àŠ†àŠàŠ€à§°àŠŸàŠŹàŠšà§‡?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"àŠĄàŠżàŠ­àŠŸàŠ‡àŠšà§° àŠ•à§‡àŠźà§‡à§°àŠŸ àŠ†à§°à§ àŠźàŠŸàŠ‡àŠ•à§à§°\'àŠ«\'àŠš àŠ…à§±à§°à§‹àŠ§à§° àŠȘà§°àŠŸ àŠ†àŠàŠ€à§°àŠŸàŠŹàŠšà§‡?"</string>
@@ -741,7 +745,7 @@
     <string name="tuner_lock_screen" msgid="2267383813241144544">"àŠČàŠ• àŠžà§àŠ•à§à§°à§€àŠš"</string>
     <string name="thermal_shutdown_title" msgid="2702966892682930264">"àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ«\'àŠšàŠŸà§‹ àŠ—à§°àŠź àŠčà§‹à§±àŠŸà§° àŠ•àŠŸà§°àŠŁà§‡ àŠ…àŠ« àŠ•à§°àŠŸ àŠčà§ˆàŠ›àŠżàŠČ"</string>
     <string name="thermal_shutdown_message" msgid="6142269839066172984">"àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ«’àŠšàŠŸà§‹ àŠàŠ€àŠżàŠŻàŠŒàŠŸ àŠžà§àŠŹàŠŸàŠ­àŠŸà§±àŠżàŠ•àŠ­àŠŸà§±à§‡ àŠšàŠČàŠż àŠ†àŠ›à§‡à„€\nàŠ…àŠ§àŠżàŠ• àŠ€àŠ„à§àŠŻà§° àŠŹàŠŸàŠŹà§‡ àŠŸàŠżàŠȘàŠ•"</string>
-    <string name="thermal_shutdown_dialog_message" msgid="6745684238183492031">"àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ«\'àŠšàŠŸà§‹ àŠ…àŠ€à§àŠŻàŠ§àŠżàŠ• àŠ—à§°àŠź àŠčà§‹à§±àŠŸà§° àŠŹàŠŸàŠŹà§‡ àŠ‡àŠŻàŠŒàŠŸàŠ• àŠ àŠŸàŠŁà§àŠĄàŠŸ àŠ•à§°àŠżàŠŹàŠČৈ àŠ…àŠ« àŠ•à§°àŠŸ àŠčà§ˆàŠ›àŠżàŠČà„€ àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ«\'àŠšàŠŸà§‹ àŠàŠ€àŠżàŠŻàŠŒàŠŸ àŠžà§àŠŹàŠŸàŠ­àŠŸà§±àŠżàŠ•àŠ­àŠŸà§±à§‡ àŠšàŠČàŠż àŠ†àŠ›à§‡à„€\n\nàŠ†àŠȘà§‹àŠšàŠŸà§° àŠ«\'àŠšàŠŸà§‹ àŠ—à§°àŠź àŠč\'àŠŹ àŠȘàŠŸà§°à§‡, àŠŻàŠŠàŠżàŠčে àŠ†àŠȘà§àŠšàŠż:\n	• àŠ«\'àŠšàŠŸà§‹à§° àŠčàŠŸà§°à§àŠĄà§±à§‡à§° àŠ…àŠ€à§àŠŻàŠ§àŠżàŠ• àŠźàŠŸàŠ€à§à§°àŠŸàŠ€ àŠŹà§àŠŻà§±àŠčàŠŸà§° àŠ•à§°àŠŸ àŠàŠȘ্‌àŠžàŠźà§‚àŠč àŠšàŠČàŠŸàŠČে (àŠŻà§‡àŠšà§‡, àŠ­àŠżàŠĄàŠżàŠ…\' àŠ—à§‡àŠ‡àŠź, àŠ­àŠżàŠĄàŠżàŠ…\', àŠŠàŠżàŠ•à§-àŠšàŠżà§°à§àŠŠà§‡àŠ¶àŠšàŠŸ àŠàŠȘ্‌àŠžàŠźà§‚àŠč)\n	• àŠ–à§àŠ‰àŠŹ àŠĄàŠŸàŠ™à§° àŠ†àŠ•àŠŸà§°à§° àŠ«àŠŸàŠ‡àŠČ àŠ†àŠȘàŠČ\'àŠĄ àŠŹàŠŸ àŠĄàŠŸàŠ‰àŠšàŠČ’àŠĄ àŠ•à§°àŠżàŠČে\n	• àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ«\'àŠšàŠŸà§‹ àŠ‰àŠšà§àŠš àŠ€àŠŸàŠȘàŠźàŠŸàŠ€à§à§°àŠŸà§° àŠȘà§°àŠżà§±à§‡àŠ¶àŠ€ àŠŹà§àŠŻà§±àŠčàŠŸà§° àŠ•à§°àŠżàŠČে"</string>
+    <string name="thermal_shutdown_dialog_message" msgid="6745684238183492031">"àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ«\'àŠšàŠŸà§‹ àŠ…àŠ€à§àŠŻàŠ§àŠżàŠ• àŠ—à§°àŠź àŠčà§‹à§±àŠŸà§° àŠŹàŠŸàŠŹà§‡ àŠ‡àŠŻàŠŒàŠŸàŠ• àŠ àŠŸàŠŁà§àŠĄàŠŸ àŠ•à§°àŠżàŠŹàŠČৈ àŠ…àŠ« àŠ•à§°àŠŸ àŠčà§ˆàŠ›àŠżàŠČà„€ àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ«\'àŠšàŠŸà§‹ àŠàŠ€àŠżàŠŻàŠŒàŠŸ àŠžà§àŠŹàŠŸàŠ­àŠŸà§±àŠżàŠ•àŠ­àŠŸà§±à§‡ àŠšàŠČàŠż àŠ†àŠ›à§‡à„€\n\nàŠ†àŠȘà§‹àŠšàŠŸà§° àŠ«\'àŠšàŠŸà§‹ àŠ—à§°àŠź àŠč\'àŠŹ àŠȘàŠŸà§°à§‡, àŠŻàŠŠàŠżàŠčে àŠ†àŠȘà§àŠšàŠż:\n	• àŠ«\'àŠšàŠŸà§‹à§° àŠčàŠŸà§°à§àŠĄà§±à§‡à§° àŠ…àŠ€à§àŠŻàŠ§àŠżàŠ• àŠźàŠŸàŠ€à§à§°àŠŸàŠ€ àŠŹà§àŠŻà§±àŠčàŠŸà§° àŠ•à§°àŠŸ àŠàŠȘàŠžàŠźà§‚àŠč àŠšàŠČàŠŸàŠČে (àŠŻà§‡àŠšà§‡, àŠ­àŠżàŠĄàŠżàŠ…\' àŠ—à§‡àŠ‡àŠź, àŠ­àŠżàŠĄàŠżàŠ…\', àŠŠàŠżàŠ•à§-àŠšàŠżà§°à§àŠŠà§‡àŠ¶àŠšàŠŸ àŠàŠȘàŠžàŠźà§‚àŠč)\n	• àŠ–à§àŠ‰àŠŹ àŠĄàŠŸàŠ™à§° àŠ†àŠ•àŠŸà§°à§° àŠ«àŠŸàŠ‡àŠČ àŠ†àŠȘàŠČ\'àŠĄ àŠŹàŠŸ àŠĄàŠŸàŠ‰àŠšàŠČ’àŠĄ àŠ•à§°àŠżàŠČে\n	• àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ«\'àŠšàŠŸà§‹ àŠ‰àŠšà§àŠš àŠ€àŠŸàŠȘàŠźàŠŸàŠ€à§à§°àŠŸà§° àŠȘà§°àŠżà§±à§‡àŠ¶àŠ€ àŠŹà§àŠŻà§±àŠčàŠŸà§° àŠ•à§°àŠżàŠČে"</string>
     <string name="thermal_shutdown_dialog_help_text" msgid="6413474593462902901">"àŠŻàŠ€à§àŠš àŠČà§‹à§±àŠŸà§° àŠȘàŠŠàŠ•à§àŠ·à§‡àŠȘàŠžàŠźà§‚àŠč àŠšàŠŸàŠ“àŠ•"</string>
     <string name="high_temp_title" msgid="2218333576838496100">"àŠ«\'àŠšàŠŸà§‹ àŠ—à§°àŠź àŠč\'àŠŹàŠČৈ àŠ§à§°àŠżàŠ›à§‡"</string>
     <string name="high_temp_notif_message" msgid="1277346543068257549">"àŠ«’àŠšàŠŸà§‹ àŠ àŠŸàŠŁà§àŠĄàŠŸ àŠčৈ àŠ„àŠ•àŠŸà§° àŠžàŠźàŠŻàŠŒàŠ€ àŠ•àŠżàŠ›à§àŠźàŠŸàŠš àŠžà§àŠŹàŠżàŠ§àŠŸ àŠ‰àŠȘàŠČàŠŹà§àŠ§ àŠšàŠčàŠŻàŠŒà„€\nàŠ…àŠ§àŠżàŠ• àŠ€àŠ„à§àŠŻà§° àŠŹàŠŸàŠŹà§‡ àŠŸàŠżàŠȘàŠ•"</string>
@@ -756,7 +760,7 @@
     <string name="lockscreen_unlock_right" msgid="4658008735541075346">"àŠžà§‹àŠ àŠ¶à§àŠŹà§°à§àŠŸàŠ•àŠŸàŠŸàŠŸà§‹à§±à§‡àŠ“ àŠ†àŠšàŠČàŠ• àŠ•à§°àŠżàŠŹ"</string>
     <string name="lockscreen_none" msgid="4710862479308909198">"àŠàŠ•à§‹ àŠŹàŠŸàŠ›àŠšàŠż àŠ•à§°àŠŸ àŠčà§‹à§±àŠŸ àŠšàŠŸàŠ‡"</string>
     <string name="tuner_launch_app" msgid="3906265365971743305">"<xliff:g id="APP">%1$s</xliff:g>àŠ• àŠČàŠžà§àŠš àŠ•à§°àŠ•"</string>
-    <string name="tuner_other_apps" msgid="7767462881742291204">"àŠ…àŠšà§àŠŻàŠŸàŠšà§àŠŻ àŠàŠȘ্‌àŠžàŠźà§‚àŠč"</string>
+    <string name="tuner_other_apps" msgid="7767462881742291204">"àŠ…àŠšà§àŠŻàŠŸàŠšà§àŠŻ àŠàŠȘàŠžàŠźà§‚àŠč"</string>
     <string name="tuner_circle" msgid="5270591778160525693">"àŠȘà§°àŠżàŠšàŠżàŠ€ àŠźàŠŸàŠšà§àŠčà§° àŠ—à§‹àŠŸ"</string>
     <string name="tuner_plus" msgid="4130366441154416484">"àŠŻà§‹àŠ— àŠšàŠżàŠčà§àŠš"</string>
     <string name="tuner_minus" msgid="5258518368944598545">"àŠŹàŠżàŠŻàŠŒà§‹àŠ— àŠšàŠżàŠčà§àŠš"</string>
@@ -787,7 +791,7 @@
     <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"àŠ…àŠžà§àŠŹàŠżàŠ§àŠŸ àŠšàŠżàŠŠàŠżàŠŹ-àŠ• àŠàŠŸàŠŸ àŠžà§àŠŹàŠŻàŠŒàŠ‚àŠ•à§à§°àŠżàŠŻàŠŒ àŠšàŠżàŠŻàŠŒàŠź (<xliff:g id="ID_1">%s</xliff:g>)àŠ àŠ…àŠš àŠ•à§°àŠżàŠČà§‡à„€"</string>
     <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"àŠ…àŠžà§àŠŹàŠżàŠ§àŠŸ àŠšàŠżàŠŠàŠżàŠŹ-àŠ• àŠ•à§‹àŠšà§‹ àŠàŠȘ্ (<xliff:g id="ID_1">%s</xliff:g>)àŠ àŠ…àŠš àŠ•à§°àŠżàŠČà§‡à„€"</string>
     <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"àŠ…àŠžà§àŠŹàŠżàŠ§àŠŸ àŠšàŠżàŠŠàŠżàŠŹ-àŠ• àŠàŠŸàŠŸ àŠžà§àŠŹàŠŻàŠŒàŠ‚àŠ•à§à§°àŠżàŠŻàŠŒ àŠšàŠżàŠŻàŠŒàŠź àŠŹàŠŸ àŠàŠȘে àŠ…àŠš àŠ•à§°àŠżàŠČà§‡à„€"</string>
-    <string name="running_foreground_services_title" msgid="5137313173431186685">"àŠšà§‡àŠȘàŠ„à§àŠŻàŠ€ àŠšàŠČàŠż àŠ„àŠ•àŠŸ àŠàŠȘ্‌àŠžàŠźà§‚àŠč"</string>
+    <string name="running_foreground_services_title" msgid="5137313173431186685">"àŠšà§‡àŠȘàŠ„à§àŠŻàŠ€ àŠšàŠČàŠż àŠ„àŠ•àŠŸ àŠàŠȘàŠžàŠźà§‚àŠč"</string>
     <string name="running_foreground_services_msg" msgid="3009459259222695385">"àŠŹà§‡àŠŸàŠŸà§°à§€ àŠ†à§°à§ àŠĄà§‡àŠŸàŠŸà§° àŠŹà§àŠŻà§±àŠčàŠŸà§°à§° àŠŹàŠżàŠ·àŠŻàŠŒà§‡ àŠžàŠŹàŠżàŠ¶à§‡àŠ· àŠœàŠŸàŠšàŠżàŠŹàŠČৈ àŠŸàŠżàŠȘàŠ•"</string>
     <string name="mobile_data_disable_title" msgid="5366476131671617790">"àŠź’àŠŹàŠŸàŠ‡àŠČ àŠĄà§‡àŠŸàŠŸ àŠ…àŠ« àŠ•à§°àŠżàŠŹàŠšà§‡?"</string>
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"àŠ†àŠȘà§àŠšàŠż <xliff:g id="CARRIER">%s</xliff:g>à§° àŠœà§°àŠżàŠŻàŠŒàŠ€à§‡ àŠĄà§‡àŠŸàŠŸ àŠžàŠ‚àŠŻà§‹àŠ— àŠŹàŠŸ àŠ‡àŠŁà§àŠŸàŠŸà§°àŠšà§‡àŠŸ àŠžàŠ‚àŠŻà§‹àŠ— àŠšàŠŸàŠȘàŠŸàŠŹà„€ àŠ•à§‡à§±àŠČ à§±àŠŸàŠ‡-àŠ«àŠŸàŠ‡à§° àŠŻà§‹àŠ—à§‡à§°à§‡ àŠ‡àŠŁà§àŠŸàŠŸà§°àŠšà§‡àŠŸ àŠ‰àŠȘàŠČàŠŹà§àŠ§ àŠč\'àŠŹà„€"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"àŠ…àŠȘà§à§°àŠżàŠŻàŠŒ"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g> àŠšàŠźà§àŠŹà§° àŠ…à§±àŠžà§àŠ„àŠŸàŠšàŠČৈ àŠžà§àŠ„àŠŸàŠšàŠŸàŠšà§àŠ€à§°àŠżàŠ€ àŠ•à§°àŠ•"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"àŠšàŠżàŠŻàŠŒàŠšà§àŠ€à§à§°àŠŁàŠžàŠźà§‚àŠč"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"àŠ•à§àŠ·àŠżàŠȘ্ৰ àŠ›à§‡àŠŸàŠżàŠ™à§° àŠȘà§°àŠŸ àŠàŠ•à§àŠžà§‡àŠ› àŠ•à§°àŠżàŠŹàŠČৈ àŠšàŠżàŠŻàŠŒàŠšà§àŠ€à§à§°àŠŁàŠžàŠźà§‚àŠč àŠŹàŠŸàŠ›àŠšàŠż àŠ•à§°àŠ•"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"àŠšàŠżàŠŻàŠŒàŠšà§àŠ€à§à§°àŠŁàŠžàŠźà§‚àŠč àŠȘà§àŠšà§° àŠžàŠœàŠŸàŠŹàŠČৈ àŠ§à§°àŠż à§°àŠŸàŠ–àŠ• àŠ†à§°à§ àŠŸàŠŸàŠšàŠż àŠ†àŠšàŠż àŠà§°àŠ•"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"àŠ†àŠŸàŠŸàŠ‡àŠŹà§‹à§° àŠšàŠżàŠŻàŠŒàŠšà§àŠ€à§à§°àŠŁ àŠ†àŠàŠ€à§°à§‹à§±àŠŸ àŠčà§ˆàŠ›à§‡"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"àŠžàŠŸàŠČàŠžàŠČàŠšàŠżàŠžàŠźà§‚àŠč àŠ›à§‡àŠ­ àŠšàŠč’àŠČ"</string>
@@ -1055,7 +1058,7 @@
     <string name="fgs_manager_footer_label" msgid="8276763570622288231">"{count,plural, =1{# àŠŸàŠŸ àŠàŠȘ্‌ àŠžàŠ•à§à§°àŠżàŠŻàŠŒ àŠčৈ àŠ†àŠ›à§‡}one{# àŠŸàŠŸ àŠàŠȘ্‌ àŠžàŠ•à§à§°àŠżàŠŻàŠŒ àŠčৈ àŠ†àŠ›à§‡}other{# àŠŸàŠŸ àŠàŠȘ্‌ àŠžàŠ•à§à§°àŠżàŠŻàŠŒ àŠčৈ àŠ†àŠ›à§‡}}"</string>
     <string name="fgs_dot_content_description" msgid="2865071539464777240">"àŠšàŠ€à§àŠš àŠ€àŠ„à§àŠŻ"</string>
     <string name="fgs_manager_dialog_title" msgid="5879184257257718677">"àŠžàŠ•à§à§°àŠżàŠŻàŠŒ àŠàŠȘ্‌"</string>
-    <string name="fgs_manager_dialog_message" msgid="2670045017200730076">"àŠ†àŠȘà§àŠšàŠż àŠàŠȘ্‌àŠžàŠźà§‚àŠč àŠŹà§àŠŻà§±àŠčàŠŸà§° àŠšàŠ•à§°àŠŸà§° àŠžàŠźàŠŻàŠŒàŠ€à§‹ àŠàŠ‡àŠžàŠźà§‚àŠč àŠžàŠ•à§à§°àŠżàŠŻàŠŒ àŠčৈ àŠ„àŠŸàŠ•à§‡ àŠ†à§°à§ àŠšàŠČàŠż àŠ„àŠŸàŠ•à§‡à„€ àŠ‡ àŠžà§‡àŠ‡àŠžàŠźà§‚àŠčà§° àŠ•àŠŸà§°à§àŠŻàŠ•à§àŠ·àŠźàŠ€àŠŸ àŠ‰àŠšà§àŠšàŠ€ àŠ•à§°à§‡, àŠ•àŠżàŠšà§àŠ€à§ àŠ‡ àŠŹà§‡àŠŸàŠŸà§°à§€à§° àŠœà§€à§±àŠšàŠ•àŠŸàŠČàŠ€à§‹ àŠȘà§à§°àŠ­àŠŸà§± àŠȘেàŠČàŠŸàŠŹ àŠȘàŠŸà§°à§‡à„€"</string>
+    <string name="fgs_manager_dialog_message" msgid="2670045017200730076">"àŠàŠ‡ àŠàŠȘ্‌àŠžàŠźà§‚àŠč àŠžàŠ•à§à§°àŠżàŠŻàŠŒ àŠ†à§°à§ àŠ†àŠšàŠ•àŠż àŠ†àŠȘà§àŠšàŠż àŠàŠ‡àŠžàŠźà§‚àŠč àŠŹà§àŠŻà§±àŠčàŠŸà§° àŠšàŠ•à§°àŠŸà§° àŠžàŠźàŠŻàŠŒàŠ€à§‹ àŠšàŠČàŠż àŠ„àŠŸàŠ•à§‡à„€ àŠ‡ àŠžà§‡àŠ‡àŠžàŠźà§‚àŠčà§° àŠ•àŠŸà§°à§àŠŻà§àŠŻàŠ•à§àŠ·àŠźàŠ€àŠŸ àŠ‰àŠšà§àŠšàŠ€ àŠ•à§°à§‡, àŠ•àŠżàŠšà§àŠ€à§ àŠ‡ àŠŹà§‡àŠŸàŠŸà§°à§€à§° àŠœà§€à§±àŠšàŠ•àŠŸàŠČàŠ€à§‹ àŠȘà§à§°àŠ­àŠŸà§± àŠȘেàŠČàŠŸàŠŹ àŠȘàŠŸà§°à§‡à„€"</string>
     <string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"àŠŹàŠšà§àŠ§ àŠ•à§°àŠ•"</string>
     <string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"àŠŹàŠšà§àŠ§ àŠč’àŠČ"</string>
     <string name="clipboard_edit_text_done" msgid="4551887727694022409">"àŠč’àŠČ"</string>
@@ -1123,13 +1126,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ•à§°à§àŠźàŠžà§àŠ„àŠŸàŠšà§° àŠšà§€àŠ€àŠżàŠŻàŠŒà§‡ àŠ†àŠȘà§‹àŠšàŠŸàŠ• àŠ•à§‡à§±àŠČ àŠ•à§°à§àŠźàŠžà§àŠ„àŠŸàŠšà§° àŠȘ্ৰ’àŠ«àŠŸàŠ‡àŠČà§° àŠȘà§°àŠŸ àŠ«’àŠš àŠ•àŠČ àŠ•à§°àŠżàŠŹàŠČৈ àŠŠàŠżàŠŻàŠŒà§‡"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"àŠ•à§°à§àŠźàŠžà§àŠ„àŠŸàŠšà§° àŠȘ্ৰ’àŠ«àŠŸàŠ‡àŠČàŠČৈ àŠžàŠČàŠšàŠż àŠ•à§°àŠ•"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"àŠŹàŠšà§àŠ§ àŠ•à§°àŠ•"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"àŠČàŠ• àŠžà§àŠ•à§à§°à§€àŠš àŠ•àŠŸàŠ·à§àŠŸàŠźàŠŸàŠ‡àŠœ àŠ•à§°àŠ•"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"àŠČàŠ• àŠžà§àŠ•à§à§°à§€àŠš àŠ•àŠŸàŠ·à§àŠŸàŠźàŠŸàŠ‡àŠœ àŠ•à§°àŠżàŠŹàŠČৈ àŠ†àŠšàŠČàŠ• àŠ•à§°àŠ•"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"à§±àŠŸàŠ‡-àŠ«àŠŸàŠ‡ àŠ‰àŠȘàŠČàŠŹà§àŠ§ àŠšàŠčàŠŻàŠŒ"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"àŠ•à§‡àŠźà§‡à§°àŠŸ àŠ…à§±à§°à§‹àŠ§ àŠ•à§°àŠŸ àŠ†àŠ›à§‡"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"àŠ•à§‡àŠźà§‡à§°àŠŸ àŠ†à§°à§ àŠźàŠŸàŠ‡àŠ•à§à§°’àŠ«’àŠš àŠ…à§±à§°à§‹àŠ§ àŠ•à§°àŠŸ àŠ†àŠ›à§‡"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"àŠźàŠŸàŠ‡àŠ•à§à§°’àŠ«’àŠš àŠ…à§±à§°à§‹àŠ§ àŠ•à§°àŠŸ àŠ†àŠ›à§‡"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"àŠ…àŠ—à§à§°àŠŸàŠ§àŠżàŠ•àŠŸà§° àŠŠàŠżàŠŻàŠŒàŠŸ àŠź’àŠĄ àŠ…àŠš àŠ†àŠ›à§‡"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"AssistantàŠ àŠ†àŠȘà§‹àŠšàŠŸà§° àŠ•àŠ„àŠŸ àŠ¶à§àŠšàŠż àŠ†àŠ›à§‡"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"àŠ›à§‡àŠŸàŠżàŠ™àŠ€ àŠŸà§‹àŠ•àŠŸà§° àŠĄàŠżàŠ«’àŠČà§àŠŸ àŠàŠȘ্ àŠ›à§‡àŠŸ àŠ•à§°àŠ•"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index c30b283..c907101 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"sevimlilərdən silin"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g> mövqeyinə keçirin"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Nizamlayıcılar"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Sürətli Ayarlardan giriß üçün nizamlayıcıları seçin"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Vidcetləri daßıyaraq yerini dəyißin"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Kontrol vidcetləri silindi"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Dəyißikliklər yadda saxlanmadı"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"İß siyasətiniz yalnız iß profilindən telefon zəngləri etməyə imkan verir"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"İß profilinə keçin"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Bağlayın"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Kilid ekranını fərdiləƟdirin"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi əlçatan deyil"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera bloklanıb"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon bloklanıb"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioritet rejimi aktivdir"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistent aktivdir"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index 81e2eff..dba8823 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"uklonili iz omiljenih"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Premestite na <xliff:g id="NUMBER">%d</xliff:g>. poziciju"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrole"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Odaberite kontrole da biste im pristupili iz Brzih podešavanja"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"ZadrĆŸite i prevucite da biste promenili raspored kontrola"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Sve kontrole su uklonjene"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Promene nisu sačuvane"</string>
@@ -1047,7 +1046,7 @@
     <string name="see_all_networks" msgid="3773666844913168122">"Pogledajte sve"</string>
     <string name="to_switch_networks_disconnect_ethernet" msgid="6698111101156951955">"Da biste promenili mreĆŸu, prekinite eternet vezu"</string>
     <string name="wifi_scan_notify_message" msgid="3753839537448621794">"Radi boljeg doĆŸivljaja uređaja, aplikacije i usluge i dalje mogu da traĆŸe WiFi mreĆŸe u bilo kom trenutku, čak i kada je WiFi isključen. To moĆŸete da promenite u podešavanjima WiFi skeniranja. "<annotation id="link">"Promenite"</annotation></string>
-    <string name="turn_off_airplane_mode" msgid="8425587763226548579">"Isključi reĆŸim rada u avionu"</string>
+    <string name="turn_off_airplane_mode" msgid="8425587763226548579">"Isključite reĆŸim rada u avionu"</string>
     <string name="qs_tile_request_dialog_text" msgid="3501359944139877694">"<xliff:g id="APPNAME">%1$s</xliff:g> ĆŸeli da doda sledeću pločicu u Brza podešavanja"</string>
     <string name="qs_tile_request_dialog_add" msgid="4888460910694986304">"Dodaj pločicu"</string>
     <string name="qs_tile_request_dialog_not_add" msgid="4168716573114067296">"Ne dodaj pločicu"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Smernice za posao vam omogućavaju da telefonirate samo sa poslovnog profila"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Pređi na poslovni profil"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Zatvori"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Prilagodi zaključani ekran"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"WiFi nije dostupan"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera je blokirana"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon je blokiran"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioritetni reĆŸim je uključen"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Pomoćnik je u aktivnom stanju"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index e742c01..76f124d 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Пачаць"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ĐĄĐżŃ‹ĐœŃ–Ń†ŃŒ"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Đ ŃĐ¶Ń‹ĐŒ ĐșіраĐČĐ°ĐœĐœŃ Đ°ĐŽĐœĐŸĐč руĐșĐŸĐč"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"ĐšĐ°ĐœŃ‚Ń€Đ°ŃŃ‚ĐœĐ°ŃŃ†ŃŒ"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"ĐĄŃ‚Đ°ĐœĐŽĐ°Ń€Ń‚ĐœĐ°Ń"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"ĐĄŃŃ€ŃĐŽĐœŃŃ"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Đ’Ń‹ŃĐŸĐșая"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"РазблаĐșіраĐČаць ĐŒŃ–ĐșŃ€Đ°Ń„ĐŸĐœ прылаЎы?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"РазблаĐșіраĐČаць ĐșĐ°ĐŒĐ”Ń€Ńƒ прылаЎы?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"РазблаĐșіраĐČаць ĐșĐ°ĐŒĐ”Ń€Ńƒ і ĐŒŃ–ĐșŃ€Đ°Ń„ĐŸĐœ прылаЎы?"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ĐČŃ‹ĐŽĐ°Đ»Ń–Ń†ŃŒ Đ· Đ°Đ±Ń€Đ°ĐœĐ°ĐłĐ°"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"ĐŸĐ”Ń€Đ°ĐŒŃŃŃ†Ń–Ń†ŃŒ у пазіцыю <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"ĐĄŃ€ĐŸĐŽĐșі ĐșіраĐČĐ°ĐœĐœŃ"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ВыбДрыцД ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Ń‹ ĐșіраĐČĐ°ĐœĐœŃ, Ўа яĐșіх ĐČы Ń…ĐŸŃ‡Đ°Ń†Đ” ĐŒĐ”Ń†ŃŒ ĐŽĐŸŃŃ‚ŃƒĐż Đ· хутĐșіх ĐœĐ°Đ»Đ°ĐŽ"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Каб Đ·ĐŒŃĐœŃ–Ń†ŃŒ параЮаĐș ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Đ°Ńž ĐșіраĐČĐ°ĐœĐœŃ, ŃƒŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаĐčцД і ĐżĐ”Ń€Đ°Ń†ŃĐłĐČаĐčцД іх"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"УсД ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Ń‹ ĐșіраĐČĐ°ĐœĐœŃ ĐČŃ‹ĐŽĐ°Đ»Đ”ĐœŃ‹"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Đ—ĐŒŃĐœĐ”ĐœĐœŃ– ĐœĐ” захаĐČĐ°ĐœŃ‹"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Đ—ĐłĐŸĐŽĐœĐ° Đ· палітыĐșаĐč ĐČашаĐč Đ°Ń€ĐłĐ°ĐœŃ–Đ·Đ°Ń†Ń‹Ń–, Ń€Đ°Đ±Ń–Ń†ŃŒ Ń‚ŃĐ»Đ”Ń„ĐŸĐœĐœŃ‹Ń ĐČыĐșліĐșі ЎазĐČĐŸĐ»Đ”ĐœĐ° Ń‚ĐŸĐ»ŃŒĐșі Đ· ĐżŃ€Đ°Ń†ĐŸŃžĐœĐ°ĐłĐ° ĐżŃ€ĐŸŃ„Ń–Đ»ŃŽ"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"ĐŸĐ”Ń€Đ°Đșлючыцца ĐœĐ° ĐżŃ€Đ°Ń†ĐŸŃžĐœŃ‹ ĐżŃ€ĐŸŃ„Ń–Đ»ŃŒ"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"ЗаĐșрыць"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"ĐĐ°Đ»Đ°ĐŽĐ·Ń–Ń†ŃŒ эĐșŃ€Đ°Đœ блаĐșŃ–Ń€ĐŸŃžĐșі"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"ХДтĐșа Wi-Fi ĐœĐ”ĐŽĐ°ŃŃ‚ŃƒĐżĐœĐ°Ń"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ĐšĐ°ĐŒĐ”Ń€Đ° заблаĐșіраĐČĐ°ĐœĐ°"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"МіĐșŃ€Đ°Ń„ĐŸĐœ заблаĐșіраĐČĐ°ĐœŃ‹"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ĐŸŃ€Ń‹ŃŃ€Ń‹Ń‚ŃŃ‚ĐœŃ‹ Ń€ŃĐ¶Ń‹ĐŒ уĐșĐ»ŃŽŃ‡Đ°ĐœŃ‹"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"ĐŸĐ°ĐŒĐŸŃ‡ĐœŃ–Đș ĐłĐ°Ń‚ĐŸĐČы ĐČыĐșĐŸĐœĐČаць ĐșĐ°ĐŒĐ°ĐœĐŽŃ‹"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 910ecfc..220cbe0 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -254,9 +254,9 @@
     <string name="quick_settings_casting" msgid="1435880708719268055">"ĐŸŃ€Đ”ĐŽĐ°ĐČа сД"</string>
     <string name="quick_settings_cast_device_default_name" msgid="6988469571141331700">"ĐŁŃŃ‚Ń€ĐŸĐčстĐČĐŸ бДз ĐžĐŒĐ”"</string>
     <string name="quick_settings_cast_detail_empty_text" msgid="2846282280014617785">"ĐŃĐŒĐ° ĐœĐ°Đ»ĐžŃ‡ĐœĐž ŃƒŃŃ‚Ń€ĐŸĐčстĐČа"</string>
-    <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"ĐĐ” Đ” ŃƒŃŃ‚Đ°ĐœĐŸĐČĐ”ĐœĐ° ĐČръзĐșа с Wi-Fi"</string>
+    <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"ĐœĐ” Đ” ŃƒŃŃ‚Đ°ĐœĐŸĐČĐ”ĐœĐ° ĐČръзĐșа с Wi-Fi"</string>
     <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"ЯрĐșĐŸŃŃ‚"</string>
-    <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Đ˜ĐœĐČĐ”Ń€Ń‚ĐžŃ€Đ°ĐœĐ” ĐœĐ° цĐČĐ”Ń‚ĐŸĐČДтД"</string>
+    <string name="quick_settings_inversion_label" msgid="3501527749494755688">"ĐŠĐČĐ”Ń‚ĐŸĐČĐ”: ĐžĐœĐČДрт."</string>
     <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"ĐšĐŸŃ€Đ”Đșцоя ĐœĐ° цĐČĐ”Ń‚ĐŸĐČĐ”"</string>
     <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Đ Đ°Đ·ĐŒĐ”Ń€ ĐœĐ° шрофта"</string>
     <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"УпраĐČĐ»Đ”ĐœĐžĐ” ĐœĐ° ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»ĐžŃ‚Đ”"</string>
@@ -279,7 +279,7 @@
     <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"ĐžĐłŃ€Đ°ĐœĐžŃ‡Đ”ĐœĐžĐ” ĐŸŃ‚ <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"ĐŸŃ€Đ”ĐŽŃƒĐżŃ€Đ”Đ¶ĐŽĐ”ĐœĐžĐ”: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
     <string name="quick_settings_work_mode_label" msgid="6440531507319809121">"ĐĄĐ»ŃƒĐ¶Đ”Đ±ĐœĐž ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃ"</string>
-    <string name="quick_settings_night_display_label" msgid="8180030659141778180">"ĐĐŸŃ‰ĐœĐŸ ĐŸŃĐČĐ”Ń‚Đ»Đ”ĐœĐžĐ”"</string>
+    <string name="quick_settings_night_display_label" msgid="8180030659141778180">"ĐĐŸŃ‰ĐœĐŸ ĐŸŃĐČДтл."</string>
     <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"ЩД сД ĐČĐșĐ». ĐżĐŸ залДз"</string>
     <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Đ”ĐŸ ОзгрДĐČ"</string>
     <string name="quick_settings_night_secondary_label_on_at" msgid="3584738542293528235">"ЩД сД ĐČĐșлючО ĐČ <xliff:g id="TIME">%s</xliff:g>"</string>
@@ -517,7 +517,7 @@
     <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"ОтĐșлючĐČĐ°ĐœĐ” с цДл ĐžĐ·ĐżĐŸĐ»Đ·ĐČĐ°ĐœĐ”"</string>
     <string name="wallet_error_generic" msgid="257704570182963611">"Про ОзĐČĐ»ĐžŃ‡Đ°ĐœĐ”Ń‚ĐŸ ĐœĐ° ĐșартОтД ĐČĐž ĐČŃŠĐ·ĐœĐžĐșĐœĐ° ĐżŃ€ĐŸĐ±Đ»Đ”ĐŒ. ĐœĐŸĐ»Ń, ĐŸĐżĐžŃ‚Đ°ĐčтД ĐŸŃ‚ĐœĐŸĐČĐŸ ĐżĐŸ-ĐșŃŠŃĐœĐŸ"</string>
     <string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž за заĐșĐ»ŃŽŃ‡Đ”ĐœĐžŃ Đ”ĐșŃ€Đ°Đœ"</string>
-    <string name="qr_code_scanner_title" msgid="1938155688725760702">"ĐĄĐșĐ”ĐœĐ”Ń€ за QR ĐșĐŸĐŽĐŸĐČĐ”"</string>
+    <string name="qr_code_scanner_title" msgid="1938155688725760702">"сĐșĐ”ĐœĐ”Ń€ за QR ĐșĐŸĐŽĐŸĐČĐ”"</string>
     <string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"АĐșŃ‚ŃƒĐ°Đ»ĐžĐ·ĐžŃ€Đ° сД"</string>
     <string name="status_bar_work" msgid="5238641949837091056">"ĐŸĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»ŃĐșĐž ĐżŃ€ĐŸŃ„ĐžĐ» ĐČ Work"</string>
     <string name="status_bar_airplane" msgid="4848702508684541009">"ĐĄĐ°ĐŒĐŸĐ»Đ”Ń‚Đ”Đœ Ń€Đ”Đ¶ĐžĐŒ"</string>
@@ -669,7 +669,7 @@
     <string name="accessibility_long_click_tile" msgid="210472753156768705">"ОтĐČĐ°Ń€ŃĐœĐ” ĐœĐ° ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșОтД"</string>
     <string name="accessibility_status_bar_headphones" msgid="1304082414912647414">"ХлушалĐșОтД (бДз ĐŒĐžĐșŃ€ĐŸŃ„ĐŸĐœ) са сĐČŃŠŃ€Đ·Đ°ĐœĐž"</string>
     <string name="accessibility_status_bar_headset" msgid="2699275863720926104">"ХлушалĐșОтД са сĐČŃŠŃ€Đ·Đ°ĐœĐž"</string>
-    <string name="data_saver" msgid="3484013368530820763">"ИĐșĐŸĐœĐŸĐŒĐžŃ ĐœĐ° ĐŽĐ°ĐœĐœĐž"</string>
+    <string name="data_saver" msgid="3484013368530820763">"Đ”Đ°ĐœĐœĐž: ĐžĐșĐŸĐœĐŸĐŒĐžŃ"</string>
     <string name="accessibility_data_saver_on" msgid="5394743820189757731">"Đ€ŃƒĐœĐșцоята „ИĐșĐŸĐœĐŸĐŒĐžŃ ĐœĐ° ĐŽĐ°ĐœĐœĐž“ Đ” ĐČĐșĐ»ŃŽŃ‡Đ”ĐœĐ°"</string>
     <string name="switch_bar_on" msgid="1770868129120096114">"ВĐșĐ»."</string>
     <string name="switch_bar_off" msgid="5669805115416379556">"ИзĐșĐ»."</string>
@@ -792,7 +792,7 @@
     <string name="mobile_data_disable_title" msgid="5366476131671617790">"Да сД ОзĐșлючат лО ĐŒĐŸĐ±ĐžĐ»ĐœĐžŃ‚Đ” ĐŽĐ°ĐœĐœĐž?"</string>
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"ĐŃĐŒĐ° Ўа ĐŒĐŸĐ¶Đ”Ń‚Đ” Ўа ĐžĐ·ĐżĐŸĐ»Đ·ĐČатД ĐŽĐ°ĐœĐœĐž ОлО ĐžĐœŃ‚Đ”Ń€ĐœĐ”Ń‚ чрДз <xliff:g id="CARRIER">%s</xliff:g>. ЩД ĐžĐŒĐ°Ń‚Đ” ĐŽĐŸŃŃ‚ŃŠĐż ĐŽĐŸ ĐžĐœŃ‚Đ”Ń€ĐœĐ”Ń‚ ŃĐ°ĐŒĐŸ прДз Wi-Fi."</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"ĐŸĐżĐ”Ń€Đ°Ń‚ĐŸŃ€Đ° сО"</string>
-    <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"ИсĐșатД лО Ўа прДĐČĐșлючОтД ĐŸĐ±Ń€Đ°Ń‚ĐœĐŸ ĐșŃŠĐŒ <xliff:g id="CARRIER">%s</xliff:g>?"</string>
+    <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"ИсĐșатД лО Ўа сД ĐČŃŠŃ€ĐœĐ”Ń‚Đ” ĐșŃŠĐŒ <xliff:g id="CARRIER">%s</xliff:g>?"</string>
     <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"ĐœŃ€Đ”Đ¶Đ°Ń‚Đ° за ĐŒĐŸĐ±ĐžĐ»ĐœĐž ĐŽĐ°ĐœĐœĐž ĐœŃĐŒĐ° Ўа сД прДĐČĐșлючĐČа аĐČŃ‚ĐŸĐŒĐ°Ń‚ĐžŃ‡ĐœĐŸ ĐČŃŠĐ· ĐŸŃĐœĐŸĐČа ĐœĐ° ĐœĐ°Đ»ĐžŃ‡ĐœĐŸŃŃ‚Ń‚Đ°"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"ĐĐ”, Đ±Đ»Đ°ĐłĐŸĐŽĐ°Ń€Ń"</string>
     <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"Да, прДĐČĐșлючĐČĐ°ĐœĐ”"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"за ĐżŃ€Đ”ĐŒĐ°Ń…ĐČĐ°ĐœĐ” ĐœĐ° ĐŸĐ·ĐœĐ°Ń‡Đ°ĐČĐ°ĐœĐ”Ń‚ĐŸ ĐșĐ°Ń‚ĐŸ Đ»ŃŽĐ±ĐžĐŒĐŸ"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"ĐŸŃ€Đ”ĐŒĐ”ŃŃ‚Đ”Ń‚Đ” ĐœĐ° ĐżĐŸĐ·ĐžŃ†ĐžŃ <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"ĐšĐŸĐœŃ‚Ń€ĐŸĐ»Đž"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Đ˜Đ·Đ±Đ”Ń€Đ”Ń‚Đ” ĐșĐŸĐœŃ‚Ń€ĐŸĐ»ĐžŃ‚Đ”, ĐŽĐŸ ĐșĐŸĐžŃ‚ĐŸ Ўа ĐŸŃŃŠŃ‰Đ”ŃŃ‚ĐČяĐČатД ĐŽĐŸŃŃ‚ŃŠĐż ĐŸŃ‚ бързОтД ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"ЗаЎръжтД Đž ĐżĐ»ŃŠĐ·ĐœĐ”Ń‚Đ”, за Ўа ĐżŃ€Đ”ĐœĐ°Ń€Đ”ĐŽĐžŃ‚Đ” ĐșĐŸĐœŃ‚Ń€ĐŸĐ»ĐžŃ‚Đ”"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"ВсочĐșĐž ĐșĐŸĐœŃ‚Ń€ĐŸĐ»Đž са ĐżŃ€Đ”ĐŒĐ°Ń…ĐœĐ°Ń‚Đž"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"ĐŸŃ€ĐŸĐŒĐ”ĐœĐžŃ‚Đ” ĐœĐ” са Đ·Đ°ĐżĐ°Đ·Đ”ĐœĐž"</string>
@@ -1047,7 +1046,7 @@
     <string name="see_all_networks" msgid="3773666844913168122">"ВОжтД ĐČсочĐșĐž"</string>
     <string name="to_switch_networks_disconnect_ethernet" msgid="6698111101156951955">"За Ўа прДĐČĐșлючОтД ĐŒŃ€Đ”Đ¶ĐžŃ‚Đ”, прДĐșŃŠŃĐœĐ”Ń‚Đ” ĐČръзĐșата с Ethernet"</string>
     <string name="wifi_scan_notify_message" msgid="3753839537448621794">"ĐĄ цДл ĐżĐŸĐŽĐŸĐ±Ń€ŃĐČĐ°ĐœĐ” ĐœĐ° праĐșтОчДсĐșата Ń€Đ°Đ±ĐŸŃ‚Đ° с ŃƒŃŃ‚Ń€ĐŸĐčстĐČĐŸŃ‚ĐŸ ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃŃ‚Đ° Đž ŃƒŃĐ»ŃƒĐłĐžŃ‚Đ” паĐș ĐŒĐŸĐłĐ°Ń‚ Ўа сĐșĐ°ĐœĐžŃ€Đ°Ń‚ за Wi‑Fi ĐŒŃ€Đ”Đ¶Đž ĐżĐŸ ĐČсяĐșĐŸ ĐČŃ€Đ”ĐŒĐ” ĐŽĐŸŃ€Đž ĐșĐŸĐłĐ°Ń‚ĐŸ Ń„ŃƒĐœĐșцоята за Wi‑Fi e ОзĐșĐ»ŃŽŃ‡Đ”ĐœĐ°. ĐœĐŸĐ¶Đ”Ń‚Đ” Ўа ĐżŃ€ĐŸĐŒĐ”ĐœĐžŃ‚Đ” ŃŃŠĐŸŃ‚ĐČĐ”Ń‚ĐœĐŸŃ‚ĐŸ ĐżĐŸĐČĐ”ĐŽĐ”ĐœĐžĐ” ĐŸŃ‚ ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșОтД за сĐșĐ°ĐœĐžŃ€Đ°ĐœĐ” за Wi‑Fi. "<annotation id="link">"ĐŸŃ€ĐŸĐŒŃĐœĐ°"</annotation></string>
-    <string name="turn_off_airplane_mode" msgid="8425587763226548579">"ИзĐșлючĐČĐ°ĐœĐ” ĐœĐ° Ń€Đ”Đ¶ĐžĐŒĐ°"</string>
+    <string name="turn_off_airplane_mode" msgid="8425587763226548579">"ИзĐșлючĐČĐ°ĐœĐ” ĐœĐ° ŃĐ°ĐŒĐŸĐ»Đ”Ń‚ĐœĐžŃ Ń€Đ”Đ¶ĐžĐŒ"</string>
     <string name="qs_tile_request_dialog_text" msgid="3501359944139877694">"<xliff:g id="APPNAME">%1$s</xliff:g> ОсĐșа Ўа ĐŽĐŸĐ±Đ°ĐČĐž ŃĐ»Đ”ĐŽĐœĐžŃ ĐżĐ°ĐœĐ”Đ» ĐșŃŠĐŒ бързОтД ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž"</string>
     <string name="qs_tile_request_dialog_add" msgid="4888460910694986304">"Đ”ĐŸĐ±Đ°ĐČŃĐœĐ” ĐœĐ° ĐżĐ°ĐœĐ”Đ»"</string>
     <string name="qs_tile_request_dialog_not_add" msgid="4168716573114067296">"ĐžŃ‚ĐŒŃĐœĐ° ĐœĐ° ĐŽĐŸĐ±Đ°ĐČŃĐœĐ”Ń‚ĐŸ"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"ĐĄĐ»ŃƒĐ¶Đ”Đ±ĐœĐžŃ‚Đ” праĐČОла ĐČĐž ЎаĐČат ĐČŃŠĐ·ĐŒĐŸĐ¶ĐœĐŸŃŃ‚ Ўа ОзĐČършĐČатД Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐœĐž ĐŸĐ±Đ°Đ¶ĐŽĐ°ĐœĐžŃ ŃĐ°ĐŒĐŸ ĐŸŃ‚ ŃĐ»ŃƒĐ¶Đ”Đ±ĐœĐžŃ ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»ŃĐșĐž ĐżŃ€ĐŸŃ„ĐžĐ»"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"ĐŸŃ€Đ”ĐČĐșлючĐČĐ°ĐœĐ” ĐșŃŠĐŒ ŃĐ»ŃƒĐ¶Đ”Đ±ĐœĐžŃ ĐżĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»ŃĐșĐž ĐżŃ€ĐŸŃ„ĐžĐ»"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"ЗатĐČĐ°Ń€ŃĐœĐ”"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"ĐŸĐ”Ń€ŃĐŸĐœĐ°Đ»ĐžĐ·. ĐœĐ° заĐșĐ»ŃŽŃ‡Đ”ĐœĐžŃ Đ”ĐșŃ€Đ°Đœ"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi ĐœĐ” Đ” ĐœĐ°Đ»ĐžŃ†Đ”"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Đ”ĐŸŃŃ‚ŃŠĐżŃŠŃ‚ ĐŽĐŸ ĐșĐ°ĐŒĐ”Ń€Đ°Ń‚Đ° Đ” Đ±Đ»ĐŸĐșĐžŃ€Đ°Đœ"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Đ”ĐŸŃŃ‚ŃŠĐżŃŠŃ‚ ĐŽĐŸ ĐŒĐžĐșŃ€ĐŸŃ„ĐŸĐœĐ° Đ” Đ±Đ»ĐŸĐșĐžŃ€Đ°Đœ"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ĐŸŃ€ĐžĐŸŃ€ĐžŃ‚Đ”Ń‚ĐœĐžŃŃ‚ Ń€Đ”Đ¶ĐžĐŒ Đ” ĐČĐșĐ»ŃŽŃ‡Đ”Đœ"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Đ€ŃƒĐœĐșцоята за аĐșтоĐČĐžŃ€Đ°ĐœĐ” ĐœĐ° ĐŃĐžŃŃ‚Đ”ĐœŃ‚ Đ” ĐČĐșĐ»ŃŽŃ‡Đ”ĐœĐ°"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index 9e029dc..c611e63 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"àŠ¶à§àŠ°à§ àŠ•àŠ°à§àŠš"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"àŠŹàŠšà§àŠ§ àŠ•àŠ°à§àŠš"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"àŠàŠ• àŠčàŠŸàŠ€à§‡ àŠŹà§àŠŻàŠŹàŠčàŠŸàŠ° àŠ•àŠ°àŠŸàŠ° àŠźà§‹àŠĄ"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"àŠ•àŠšàŠŸà§àŠ°àŠŸàŠžà§àŠŸ"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"àŠžà§àŠŸà§àŠŻàŠŸàŠšà§àŠĄàŠŸàŠ°à§àŠĄ"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"àŠźàŠżàŠĄàŠżàŠŻàŠŒàŠŸàŠź"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"àŠčàŠŸàŠ‡"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"àŠĄàŠżàŠ­àŠŸàŠ‡àŠžà§‡àŠ° àŠźàŠŸàŠ‡àŠ•à§àŠ°à§‹àŠ«à§‹àŠš àŠ†àŠšàŠŹà§àŠČàŠ• àŠ•àŠ°àŠ€à§‡ àŠšàŠŸàŠš?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"àŠĄàŠżàŠ­àŠŸàŠ‡àŠžà§‡àŠ° àŠ•à§àŠŻàŠŸàŠźà§‡àŠ°àŠŸ àŠ†àŠšàŠŹà§àŠČàŠ• àŠ•àŠ°àŠ€à§‡ àŠšàŠŸàŠš?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"àŠĄàŠżàŠ­àŠŸàŠ‡àŠžà§‡àŠ° àŠ•à§àŠŻàŠŸàŠźà§‡àŠ°àŠŸ àŠàŠŹàŠ‚ àŠźàŠŸàŠ‡àŠ•à§àŠ°à§‹àŠ«à§‹àŠš àŠ†àŠšàŠŹà§àŠČàŠ• àŠ•àŠ°àŠ€à§‡ àŠšàŠŸàŠš?"</string>
@@ -703,7 +707,7 @@
     <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"àŠŸàŠŸàŠ‡àŠČàŠ—à§àŠČàŠż àŠ†àŠŹàŠŸàŠ° àŠžàŠŸàŠœàŠŸàŠšà§‹àŠ° àŠœàŠšà§àŠŻ àŠ§àŠ°à§‡ àŠ„à§‡àŠ•à§‡ àŠŸà§‡àŠšà§‡ àŠ†àŠšà§àŠš"</string>
     <string name="drag_to_remove_tiles" msgid="4682194717573850385">"àŠžàŠ°àŠŸàŠšà§‹àŠ° àŠœàŠšà§àŠŻ àŠàŠ–àŠŸàŠšà§‡ àŠŸà§‡àŠšà§‡ àŠ†àŠšà§àŠš"</string>
     <string name="drag_to_remove_disabled" msgid="933046987838658850">"àŠ†àŠȘàŠšàŠŸàŠ•à§‡ àŠ•àŠźàŠȘàŠ•à§àŠ·à§‡ <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>àŠŸàŠż àŠŸàŠŸàŠ‡àŠČ àŠ°àŠŸàŠ–àŠ€à§‡ àŠčàŠŹà§‡"</string>
-    <string name="qs_edit" msgid="5583565172803472437">"àŠàŠĄàŠżàŠŸ àŠ•àŠ°à§àŠš"</string>
+    <string name="qs_edit" msgid="5583565172803472437">"àŠžàŠźà§àŠȘàŠŸàŠŠàŠšàŠŸ àŠ•àŠ°à§àŠš"</string>
     <string name="tuner_time" msgid="2450785840990529997">"àŠžàŠźàŠŻàŠŒ"</string>
   <string-array name="clock_options">
     <item msgid="3986445361435142273">"àŠ˜àŠŁà§àŠŸàŠŸ, àŠźàŠżàŠšàŠżàŠŸ, àŠàŠŹàŠ‚ àŠžà§‡àŠ•à§‡àŠšà§àŠĄ àŠŠà§‡àŠ–àŠŸàŠš"</item>
@@ -780,7 +784,7 @@
     <string name="mobile_data" msgid="4564407557775397216">"àŠźà§‹àŠŹàŠŸàŠ‡àŠČ àŠĄà§‡àŠŸàŠŸ"</string>
     <string name="mobile_data_text_format" msgid="6806501540022589786">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="mobile_carrier_text_format" msgid="8912204177152950766">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
-    <string name="wifi_is_off" msgid="5389597396308001471">"àŠ“àŠŻàŠŒàŠŸàŠ‡-àŠ«àŠŸàŠ‡ àŠŹàŠšà§àŠ§ àŠ†àŠ›à§‡"</string>
+    <string name="wifi_is_off" msgid="5389597396308001471">"àŠ“àŠŻàŠŒàŠŸàŠ‡ àŠ«àŠŸàŠ‡ àŠŹàŠšà§àŠ§ àŠ†àŠ›à§‡"</string>
     <string name="bt_is_off" msgid="7436344904889461591">"àŠŹà§àŠČà§àŠŸà§àŠ„ àŠŹàŠšà§àŠ§ àŠ†àŠ›à§‡"</string>
     <string name="dnd_is_off" msgid="3185706903793094463">"àŠŹàŠżàŠ°àŠ•à§àŠ€ àŠ•àŠ°àŠŹà§‡ àŠšàŠŸ àŠŹàŠżàŠ•àŠČ্àŠȘàŠŸàŠż àŠŹàŠšà§àŠ§ àŠ†àŠ›à§‡"</string>
     <string name="dnd_is_on" msgid="7009368176361546279">"\'àŠŹàŠżàŠ°àŠ•à§àŠ€ àŠ•àŠ°àŠŹà§‡ àŠšàŠŸ\' àŠźà§‹àŠĄ àŠšàŠŸàŠČু àŠ†àŠ›à§‡"</string>
@@ -792,7 +796,7 @@
     <string name="mobile_data_disable_title" msgid="5366476131671617790">"àŠźà§‹àŠŹàŠŸàŠ‡àŠČ àŠĄà§‡àŠŸàŠŸ àŠŹàŠšà§àŠ§ àŠ•àŠ°àŠŹà§‡àŠš?"</string>
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"àŠ†àŠȘàŠšàŠż \'<xliff:g id="CARRIER">%s</xliff:g>\'-àŠàŠ° àŠźàŠŸàŠ§à§àŠŻàŠźà§‡ àŠĄà§‡àŠŸàŠŸ àŠ…àŠ„àŠŹàŠŸ àŠ‡àŠšà§àŠŸàŠŸàŠ°àŠšà§‡àŠŸ àŠ…à§àŠŻàŠŸàŠ•à§àŠžà§‡àŠž àŠ•àŠ°àŠ€à§‡ àŠȘàŠŸàŠ°àŠŹà§‡àŠš àŠšàŠŸà„€ àŠ¶à§àŠ§à§àŠźàŠŸàŠ€à§àŠ° àŠ“àŠŻàŠŒàŠŸàŠ‡-àŠ«àŠŸàŠ‡àŠŻàŠŒà§‡àŠ° àŠźàŠŸàŠ§à§àŠŻàŠźà§‡àŠ‡ àŠ‡àŠšà§àŠŸàŠŸàŠ°àŠšà§‡àŠŸ àŠ…à§àŠŻàŠŸàŠ•à§àŠžà§‡àŠž àŠ•àŠ°àŠŸ àŠŻàŠŸàŠŹà§‡à„€"</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"àŠ†àŠȘàŠšàŠŸàŠ° àŠȘàŠ°àŠżàŠ·à§‡àŠŹàŠŸ àŠȘà§àŠ°àŠŠàŠŸàŠšàŠ•àŠŸàŠ°à§€"</string>
-    <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"àŠ†àŠŹàŠŸàŠ° <xliff:g id="CARRIER">%s</xliff:g>-àŠ àŠȘàŠŸàŠČà§àŠŸàŠŸàŠŹà§‡àŠš?"</string>
+    <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"àŠ†àŠŹàŠŸàŠ° <xliff:g id="CARRIER">%s</xliff:g>-àŠàŠ° àŠĄà§‡àŠŸàŠŸàŠŻàŠŒ àŠȘàŠ°àŠżàŠŹàŠ°à§àŠ€àŠš àŠ•àŠ°àŠŹà§‡àŠš?"</string>
     <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"àŠ‰àŠȘàŠČàŠ­à§àŠŻàŠ€àŠŸàŠ° àŠ‰àŠȘàŠ°à§‡ àŠ­àŠżàŠ€à§àŠ€àŠż àŠ•àŠ°à§‡ àŠ…àŠŸà§‹àŠźà§‡àŠŸàŠżàŠ• àŠźà§‹àŠŹàŠŸàŠ‡àŠČ àŠĄà§‡àŠŸàŠŸàŠŻàŠŒ àŠȘàŠ°àŠżàŠŹàŠ°à§àŠ€àŠš àŠ•àŠ°àŠŸ àŠčàŠŹà§‡ àŠšàŠŸ"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"àŠšàŠŸ àŠ„àŠŸàŠ•"</string>
     <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"àŠčà§àŠŻàŠŸàŠ, àŠȘàŠŸàŠČà§àŠŸàŠŸàŠš"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"àŠȘàŠ›àŠšà§àŠŠàŠžàŠ‡ àŠ„à§‡àŠ•à§‡ àŠžàŠ°àŠŸàŠš"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g> àŠ…àŠŹàŠžà§àŠ„àŠŸàŠšà§‡ àŠžàŠ°àŠŸàŠš"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"àŠšàŠżàŠŻàŠŒàŠšà§àŠ€à§àŠ°àŠŁ"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"àŠŻà§‡ àŠ•àŠšà§àŠŸà§àŠ°à§‹àŠČ àŠ…à§àŠŻàŠŸàŠ•à§àŠžà§‡àŠž àŠ•àŠ°àŠ€à§‡ àŠšàŠŸàŠš àŠ€àŠŸ \'àŠŠà§àŠ°à§àŠ€ àŠžà§‡àŠŸàŠżàŠ‚àŠž\' àŠ„à§‡àŠ•à§‡ àŠŹà§‡àŠ›à§‡ àŠšàŠżàŠš"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"àŠ•àŠšà§àŠŸà§àŠ°à§‹àŠČàŠ—à§àŠČàŠżàŠ•à§‡ àŠ†àŠŹàŠŸàŠ° àŠžàŠŸàŠœàŠŸàŠšà§‹àŠ° àŠœàŠšà§àŠŻ àŠ§àŠ°à§‡ àŠ°à§‡àŠ–à§‡ àŠŸà§‡àŠšà§‡ àŠ†àŠšà§àŠš"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"àŠžàŠźàŠžà§àŠ€ àŠ•àŠšà§àŠŸà§àŠ°à§‹àŠČ àŠžàŠ°àŠŸàŠšà§‹ àŠčàŠŻàŠŒà§‡àŠ›à§‡"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"àŠȘàŠ°àŠżàŠŹàŠ°à§àŠ€àŠš àŠžà§‡àŠ­ àŠ•àŠ°àŠŸ àŠčàŠŻàŠŒàŠšàŠż"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"àŠ•àŠŸàŠœ àŠžàŠ‚àŠ•à§àŠ°àŠŸàŠšà§àŠ€ àŠšà§€àŠ€àŠż, àŠ†àŠȘàŠšàŠŸàŠ•à§‡ àŠ¶à§àŠ§à§àŠźàŠŸàŠ€à§àŠ° àŠ…àŠ«àŠżàŠž àŠȘà§àŠ°à§‹àŠ«àŠŸàŠ‡àŠČ àŠ„à§‡àŠ•à§‡ àŠ•àŠČ àŠ•àŠ°àŠŸàŠ° àŠ…àŠšà§àŠźàŠ€àŠż àŠŠà§‡àŠŻàŠŒ"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"àŠ…àŠ«àŠżàŠž àŠȘà§àŠ°à§‹àŠ«àŠŸàŠ‡àŠČে àŠȘàŠŸàŠČà§àŠŸà§‡ àŠšàŠżàŠš"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"àŠŹàŠšà§àŠ§ àŠ•àŠ°à§àŠš"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"àŠČàŠ• àŠžà§àŠ•à§àŠ°àŠżàŠš àŠ•àŠŸàŠžà§àŠŸàŠźàŠŸàŠ‡àŠœ àŠ•àŠ°à§àŠš"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"àŠ“àŠŻàŠŒàŠŸàŠ‡-àŠ«àŠŸàŠ‡ àŠ‰àŠȘàŠČàŠ­à§àŠŻ àŠšàŠŻàŠŒ"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"àŠ•à§àŠŻàŠŸàŠźà§‡àŠ°àŠŸàŠ° àŠ…à§àŠŻàŠŸàŠ•à§àŠžà§‡àŠž àŠŹà§àŠČàŠ• àŠ•àŠ°àŠŸ àŠ†àŠ›à§‡"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"àŠźàŠŸàŠ‡àŠ•à§àŠ°à§‹àŠ«à§‹àŠšà§‡àŠ° àŠ…à§àŠŻàŠŸàŠ•à§àŠžà§‡àŠž àŠŹà§àŠČàŠ• àŠ•àŠ°àŠŸ àŠ†àŠ›à§‡"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"\'àŠȘà§àŠ°àŠŸàŠŻàŠŒà§‹àŠ°àŠżàŠŸàŠż\' àŠźà§‹àŠĄ àŠšàŠŸàŠČু àŠ•àŠ°àŠŸ àŠ†àŠ›à§‡"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"àŠ…à§àŠŻàŠŸàŠžàŠżàŠžà§àŠŸà§àŠŻàŠŸàŠšà§àŠŸ àŠ†àŠȘàŠšàŠŸàŠ° àŠ•àŠ„àŠŸ àŠ¶à§‹àŠšàŠŸàŠ° àŠœàŠšà§àŠŻ àŠšàŠŸàŠČু àŠ•àŠ°àŠŸ àŠ†àŠ›à§‡"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index 34dc7f5..bc8f26c 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -48,7 +48,7 @@
     <string name="always_use_device" msgid="210535878779644679">"Uvijek otvori aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g> kada se poveĆŸe <xliff:g id="USB_DEVICE">%2$s</xliff:g>"</string>
     <string name="always_use_accessory" msgid="1977225429341838444">"Uvijek otvori aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g> kada se poveĆŸe <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>"</string>
     <string name="usb_debugging_title" msgid="8274884945238642726">"Omogućiti otklanjanje grešaka putem USB-a?"</string>
-    <string name="usb_debugging_message" msgid="5794616114463921773">"Digitalni otisak RSA ključa računara je: \n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
+    <string name="usb_debugging_message" msgid="5794616114463921773">"RSA otisak prsta za otključavanje računara je: \n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
     <string name="usb_debugging_always" msgid="4003121804294739548">"Uvijek dozvoli sa ovog računara"</string>
     <string name="usb_debugging_allow" msgid="1722643858015321328">"Dozvoli"</string>
     <string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Otklanjanje grešaka putem USB-a nije dozvoljeno"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"uklonite iz omiljenog"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Premjesti na poziciju <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrole"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Odaberite kontrole kojim ĆŸelite pristupati iz Brzih postavki"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"DrĆŸite i prevucite da preuredite kontrole"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Sve kontrole su uklonjene"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Promjene nisu sačuvane"</string>
@@ -1046,7 +1045,7 @@
     <string name="wifi_wont_autoconnect_for_now" msgid="5782282612749867762">"WiFi se trenutno ne moĆŸe automatski povezati"</string>
     <string name="see_all_networks" msgid="3773666844913168122">"PrikaĆŸi sve"</string>
     <string name="to_switch_networks_disconnect_ethernet" msgid="6698111101156951955">"Da promijenite mreĆŸu, isključite ethernet"</string>
-    <string name="wifi_scan_notify_message" msgid="3753839537448621794">"Radi poboljšanja iskustva s uređajem aplikacije i usluge i dalje mogu traĆŸiti WiFi mreĆŸe bilo kada, čak i kada je WiFi isključen. Ovo moĆŸete promijeniti u Postavkama traĆŸenja WiFi mreĆŸe. "<annotation id="link">"Promijeni"</annotation></string>
+    <string name="wifi_scan_notify_message" msgid="3753839537448621794">"Radi poboljšanja iskustva s uređajem aplikacije i usluge i dalje mogu bilo kada skenirati WiFi mreĆŸe, čak i kada je WiFi isključen. Ovo moĆŸete promijeniti u Postavkama skeniranja WiFi mreĆŸe. "<annotation id="link">"Promijeni"</annotation></string>
     <string name="turn_off_airplane_mode" msgid="8425587763226548579">"Isključi način rada u avionu"</string>
     <string name="qs_tile_request_dialog_text" msgid="3501359944139877694">"<xliff:g id="APPNAME">%1$s</xliff:g> ĆŸeli dodati sljedeću karticu u Brze postavke"</string>
     <string name="qs_tile_request_dialog_add" msgid="4888460910694986304">"Dodaj karticu"</string>
@@ -1123,13 +1122,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Radna pravila vam dozvoljavaju upućivanje telefonskih poziva samo s radnog profila"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Pređite na radni profil"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Zatvori"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Prilagodi zaključavanje ekrana"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"Otključajte da prilagodite zaključavanje ekrana"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"WiFi mreĆŸa nije dostupna"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera je blokirana"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera i mikrofon su blokirani"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon je blokiran"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Način rada Prioriteti je uključen"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"PaĆŸnja Asistenta je uključena"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Postavite zadanu aplikaciju za bilješke u Postavkama"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 1a8239b..bdd72b9 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -239,7 +239,7 @@
     <string name="quick_settings_location_label" msgid="2621868789013389163">"Ubicació"</string>
     <string name="quick_settings_screensaver_label" msgid="1495003469366524120">"Estalvi de pantalla"</string>
     <string name="quick_settings_camera_label" msgid="5612076679385269339">"Accés a la càmera"</string>
-    <string name="quick_settings_mic_label" msgid="8392773746295266375">"Accés al micròfon"</string>
+    <string name="quick_settings_mic_label" msgid="8392773746295266375">"Accés al micro"</string>
     <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"Disponible"</string>
     <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"Bloquejat"</string>
     <string name="quick_settings_media_device_label" msgid="8034019242363789941">"Dispositiu multimèdia"</string>
@@ -250,7 +250,7 @@
     <string name="quick_settings_networks_unavailable" msgid="1167847013337940082">"Xarxes no disponibles"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="483130889414601732">"No hi ha cap xarxa Wi-Fi disponible"</string>
     <string name="quick_settings_wifi_secondary_label_transient" msgid="7501659015509357887">"S\'està activant…"</string>
-    <string name="quick_settings_cast_title" msgid="2279220930629235211">"Emet la pantalla"</string>
+    <string name="quick_settings_cast_title" msgid="2279220930629235211">"Emet pantalla"</string>
     <string name="quick_settings_casting" msgid="1435880708719268055">"En emissió"</string>
     <string name="quick_settings_cast_device_default_name" msgid="6988469571141331700">"Dispositiu sense nom"</string>
     <string name="quick_settings_cast_detail_empty_text" msgid="2846282280014617785">"No hi ha cap dispositiu disponible."</string>
@@ -382,8 +382,8 @@
     <string name="user_remove_user_title" msgid="9124124694835811874">"Vols suprimir l\'usuari?"</string>
     <string name="user_remove_user_message" msgid="6702834122128031833">"Totes les aplicacions i les dades d\'aquest usuari se suprimiran."</string>
     <string name="user_remove_user_remove" msgid="8387386066949061256">"Suprimeix"</string>
-    <string name="media_projection_dialog_text" msgid="1755705274910034772">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> tindrà accés a tota la informació que es mostri a la pantalla o que es reprodueixi al dispositiu mentre graves o emets contingut. Això inclou contrasenyes, dades de pagament, fotos, missatges i àudio."</string>
-    <string name="media_projection_dialog_service_text" msgid="958000992162214611">"El servei que ofereix aquesta funció tindrà accés a tota la informació que es mostri a la pantalla o que es reprodueixi al dispositiu mentre graves o emets contingut. Això inclou contrasenyes, dades de pagament, fotos, missatges i àudio."</string>
+    <string name="media_projection_dialog_text" msgid="1755705274910034772">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> tindrà accés a tota la informació que es veu en pantalla o que es reprodueix al dispositiu mentre graves o emets contingut, com ara contrasenyes, detalls dels pagaments, fotos, missatges i àudio."</string>
+    <string name="media_projection_dialog_service_text" msgid="958000992162214611">"El servei que ofereix aquesta funció tindrà accés a tota la informació visible a la teva pantalla o que es reprodueix al dispositiu mentre graves o emets contingut, com ara contrasenyes, detalls dels pagaments, fotos, missatges i àudio que reprodueixis."</string>
     <string name="media_projection_dialog_service_title" msgid="2888507074107884040">"Vols començar a gravar o emetre contingut?"</string>
     <string name="media_projection_dialog_title" msgid="3316063622495360646">"Vols començar a gravar o emetre contingut amb <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>?"</string>
     <string name="media_projection_permission_dialog_title" msgid="7130975432309482596">"Vols permetre que <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> comparteixi o gravi contingut?"</string>
@@ -517,7 +517,7 @@
     <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Desbloqueja per utilitzar"</string>
     <string name="wallet_error_generic" msgid="257704570182963611">"Hi ha hagut un problema en obtenir les teves targetes; torna-ho a provar més tard"</string>
     <string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Configuració de la pantalla de bloqueig"</string>
-    <string name="qr_code_scanner_title" msgid="1938155688725760702">"Escàner de codis QR"</string>
+    <string name="qr_code_scanner_title" msgid="1938155688725760702">"escàner de codis QR"</string>
     <string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"S\'està actualitzant"</string>
     <string name="status_bar_work" msgid="5238641949837091056">"Perfil de treball"</string>
     <string name="status_bar_airplane" msgid="4848702508684541009">"Mode d\'avió"</string>
@@ -699,8 +699,8 @@
     <string name="right_keycode" msgid="2480715509844798438">"Codi de tecla de la dreta"</string>
     <string name="left_icon" msgid="5036278531966897006">"Icona de l\'esquerra"</string>
     <string name="right_icon" msgid="1103955040645237425">"Icona de la dreta"</string>
-    <string name="drag_to_add_tiles" msgid="8933270127508303672">"Mantén premudes les icones i arrossega-les per afegir-les"</string>
-    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Mantén premudes les icones i arrossega-les per reordenar-les"</string>
+    <string name="drag_to_add_tiles" msgid="8933270127508303672">"Mantén premut i arrossega per afegir icones"</string>
+    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Mantén premut i arrossega per reorganitzar els mosaics"</string>
     <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Arrossega aquí per suprimir"</string>
     <string name="drag_to_remove_disabled" msgid="933046987838658850">"Necessites com a mínim <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> mosaics"</string>
     <string name="qs_edit" msgid="5583565172803472437">"Edita"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"suprimir dels preferits"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Mou a la posició <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Controls"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Tria els controls a què vols accedir des de la configuració ràpida"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Mantén premut i arrossega per reorganitzar els controls"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"S\'han suprimit tots els controls"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Els canvis no s\'han desat"</string>
@@ -1022,7 +1021,7 @@
     <string name="person_available" msgid="2318599327472755472">"Disponible"</string>
     <string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Hi ha hagut un problema en llegir el mesurador de la bateria"</string>
     <string name="battery_state_unknown_notification_text" msgid="13720937839460899">"Toca per obtenir més informació"</string>
-    <string name="qs_alarm_tile_no_alarm" msgid="4826472008616807923">"Cap alarma definida"</string>
+    <string name="qs_alarm_tile_no_alarm" msgid="4826472008616807923">"Cap alarma configurada"</string>
     <string name="accessibility_fingerprint_label" msgid="5255731221854153660">"Sensor d\'empremtes digitals"</string>
     <string name="accessibility_authenticate_hint" msgid="798914151813205721">"autenticar"</string>
     <string name="accessibility_enter_hint" msgid="2617864063504824834">"accedir al dispositiu"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"La teva política de treball et permet fer trucades només des del perfil de treball"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Canvia al perfil de treball"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Tanca"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Personalitza pantalla de bloqueig"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"No hi ha cap Wi‑Fi disponible"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"La càmera està bloquejada"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"El micròfon està bloquejat"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"El mode Prioritat està activat"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"L\'Assistent està activat"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index c26bd88..6d1e37a 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Spustit"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Ukončit"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ReĆŸim jedné ruky"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standardní"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Stƙední"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Vysoká"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Odblokovat mikrofon zaƙízení?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Odblokovat fotoaparát zaƙízení?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Odblokovat fotoaparát a mikrofon zaƙízení?"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"odeberete z oblíbených"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Pƙesunout na pozici <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Ovládací prvky"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Vyberte ovládací prvky, které chcete mít v Rychlém nastavení"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Ovládací prvky mĆŻĆŸete uspoƙádat podrĆŸením a pƙetaĆŸením"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Všechny ovládací prvky byly odstraněny"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Změny nebyly uloĆŸeny"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Vaše pracovní zásady vám umoĆŸĆˆují telefonovat pouze z pracovního profilu"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Pƙepnout na pracovní profil"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Zavƙít"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"PƙizpĆŻsobit zámek obrazovky"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"SíĆ„ Wi-Fi není dostupná"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera je blokována"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon je blokován"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ReĆŸim priority je zapnutý"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Pozornost Asistenta je zapnutá"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index bb3841d..7d2f009 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Start"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stop"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Enhåndstilstand"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Middel"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Høj"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vil du fjerne blokeringen af enhedens mikrofon?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Vil du fjerne blokeringen af enhedens kamera?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Vil du fjerne blokeringen af enhedens kamera og mikrofon?"</string>
@@ -796,7 +800,7 @@
     <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"Mobildata skifter ikke automatisk på baggrund af tilgængelighed"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"Nej tak"</string>
     <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"Ja, skift"</string>
-    <string name="touch_filtered_warning" msgid="8119511393338714836">"Indstillinger kan ikke verificere dit svar, da en app dækker for en anmodning om tilladelse."</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>
     <string name="slice_permission_title" msgid="3262615140094151017">"Vil du give <xliff:g id="APP_0">%1$s</xliff:g> tilladelse til at vise eksempler fra <xliff:g id="APP_2">%2$s</xliff:g>?"</string>
     <string name="slice_permission_text_1" msgid="6675965177075443714">"- Den kan læse oplysninger fra <xliff:g id="APP">%1$s</xliff:g>"</string>
     <string name="slice_permission_text_2" msgid="6758906940360746983">"- Den kan foretage handlinger i <xliff:g id="APP">%1$s</xliff:g>"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"fjern fra favoritter"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Flyt til position <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Betjeningselementer"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Vælg, hvilke styringselementer du vil have adgang til i kvikmenuen"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Flyt et felt ved at holde det nede og trække"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Alle styringselementerne blev fjernet"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Ændringerne blev ikke gemt"</string>
@@ -909,7 +912,7 @@
     <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Nej tak"</string>
     <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Ja"</string>
     <string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"Pinkoden indeholder bogstaver eller symboler"</string>
-    <string name="controls_pin_verify" msgid="3452778292918877662">"Verificer <xliff:g id="DEVICE">%s</xliff:g>"</string>
+    <string name="controls_pin_verify" msgid="3452778292918877662">"Bekræft <xliff:g id="DEVICE">%s</xliff:g>"</string>
     <string name="controls_pin_wrong" msgid="6162694056042164211">"Forkert pinkode"</string>
     <string name="controls_pin_instructions" msgid="6363309783822475238">"Angiv pinkode"</string>
     <string name="controls_pin_instructions_retry" msgid="1566667581012131046">"Prøv en anden pinkode"</string>
@@ -1020,7 +1023,7 @@
     <string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> har sendt et billede"</string>
     <string name="new_status_content_description" msgid="6046637888641308327">"<xliff:g id="NAME">%1$s</xliff:g> har opdateret sin status: <xliff:g id="STATUS">%2$s</xliff:g>"</string>
     <string name="person_available" msgid="2318599327472755472">"Tilgængelig"</string>
-    <string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Der er problemer med at læse dit batteriniveau"</string>
+    <string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Der er problemer med at aflæse dit batteriniveau"</string>
     <string name="battery_state_unknown_notification_text" msgid="13720937839460899">"Tryk for at få flere oplysninger"</string>
     <string name="qs_alarm_tile_no_alarm" msgid="4826472008616807923">"Ingen alarm er indstillet"</string>
     <string name="accessibility_fingerprint_label" msgid="5255731221854153660">"Fingeraftrykssensor"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Din arbejdspolitik tillader kun, at du kan foretage telefonopkald fra arbejdsprofilen"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Skift til arbejdsprofil"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Luk"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Tilpas låseskærm"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi er ikke tilgængeligt"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kameraet er blokeret"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofonen er blokeret"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioritetstilstand er aktiveret"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistent lytter"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 23ba2fe..5ffd063 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Starten"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Beenden"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Einhandmodus"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Mittel"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Hoch"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Blockierung des Gerätemikrofons aufheben?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Blockierung der Gerätekamera aufheben?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Blockierung von Gerätekamera und Gerätemikrofon aufheben?"</string>
@@ -793,7 +797,7 @@
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"Du kannst dann nicht mehr über <xliff:g id="CARRIER">%s</xliff:g> auf Daten und das Internet zugreifen. Das Internet ist nur noch über WLAN verfügbar."</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"deinen Mobilfunkanbieter"</string>
     <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"Zurück zu <xliff:g id="CARRIER">%s</xliff:g> wechseln?"</string>
-    <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"Je nach Verfügbarkeit wechseln mobile Daten möglicherweise nicht automatisch"</string>
+    <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"Mobile Daten werden nicht je nach Verfügbarkeit automatisch gewechselt"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"Nein danke"</string>
     <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"Ja, wechseln"</string>
     <string name="touch_filtered_warning" msgid="8119511393338714836">"Deine Eingabe wird von \"Einstellungen\" nicht erkannt, weil die Berechtigungsanfrage von einer App verdeckt wird."</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"Entfernen aus Favoriten"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Auf Position <xliff:g id="NUMBER">%d</xliff:g> verschieben"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Steuerelemente"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Wähle die Steuerelemente aus, die du über die Schnelleinstellungen aufrufen möchtest"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Zum Verschieben von Steuerelementen halten und ziehen"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Alle Steuerelemente entfernt"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Änderungen nicht gespeichert"</string>
@@ -1126,8 +1129,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Gemäß den Arbeitsrichtlinien darfst du nur über dein Arbeitsprofil telefonieren"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Zum Arbeitsprofil wechseln"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Schließen"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Sperrbildschirm personalisieren"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Kein WLAN verfügbar"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera blockiert"</string>
@@ -1135,6 +1137,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon blockiert"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioritätsmodus an"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant-Aktivierung an"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index b7ad7b9..bd92414 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Έναρξη"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ΔιακοπÎź"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ΛειτουργÎŻα ενός χεριού"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"ΑντÎŻθεση"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"ΤυπικÎź"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Μέτρια"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"ΥψηλÎź"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"ΚατÎŹργηση αποκλεισμού μικροφώνου συσκευÎźς;"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"ΚατÎŹργηση αποκλεισμού κÎŹμερας συσκευÎźς;"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"ΚατÎŹργηση αποκλεισμού κÎŹμερας και μικροφώνου συσκευÎźς;"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"μη αγαπημένο"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"ΜετακÎŻνηση στη θέση <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"ΣτοιχεÎŻα ελέγχου"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Επιλέξτε στοιχεÎŻα ελέγχου στα οποÎŻα θα έχετε πρόσβαση από τις ΓρÎźγορες ρυθμÎŻσεις"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"ΚρατÎźστε και σύρετε για αναδιÎŹταξη των στοιχεÎŻων ελέγχου"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Όλα τα στοιχεÎŻα ελέγχου καταργÎźθηκαν"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Οι αλλαγές δεν αποθηκεύτηκαν"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Η πολιτικÎź εργασÎŻας σÎŹς επιτρέπει να πραγματοποιεÎŻτε τηλεφωνικές κλÎźσεις μόνο από το προφÎŻλ εργασÎŻας σας."</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"ΕναλλαγÎź σε προφÎŻλ εργασÎŻας"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"ΚλεÎŻσιμο"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"ΠροσαρμογÎź οθόνης κλειδώματος"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Δεν υπÎŹρχει διαθέσιμο δÎŻκτυο Wi-Fi"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Η κÎŹμερα έχει αποκλειστεÎŻ"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Το μικρόφωνο έχει αποκλειστεÎŻ"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Η λειτουργÎŻα προτεραιότητας εÎŻναι ενεργοποιημένη"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Ο Βοηθός βρÎŻσκεται σε αναμονÎź"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index bed2089..b0df36a 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"unfavourite"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Move to position <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Controls"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Choose controls to access from Quick Settings"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Hold and drag to rearrange controls"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"All controls removed"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Changes not saved"</string>
@@ -1123,13 +1122,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Your work policy allows you to make phone calls only from the work profile"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Switch to work profile"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Close"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Customise lock screen"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"Unlock to customise lock screen"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi not available"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Camera is blocked"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Camera and microphone blocked"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microphone is blocked"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Priority mode on"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant attention on"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Set default notes app in Settings"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index 01cccac..fe496b6 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -460,7 +460,7 @@
     <string name="volume_odi_captions_content_description" msgid="4172765742046013630">"Captions overlay"</string>
     <string name="volume_odi_captions_hint_enable" msgid="2073091194012843195">"enable"</string>
     <string name="volume_odi_captions_hint_disable" msgid="2518846326748183407">"disable"</string>
-    <string name="sound_settings" msgid="8874581353127418308">"Sound and vibration"</string>
+    <string name="sound_settings" msgid="8874581353127418308">"Sound &amp; vibration"</string>
     <string name="volume_panel_dialog_settings_button" msgid="2513228491513390310">"Settings"</string>
     <string name="csd_lowered_title" product="default" msgid="1786173629015030856">"Lowered to safer volume"</string>
     <string name="csd_system_lowered_text" product="default" msgid="2001603282316829500">"The volume has been high for longer than recommended"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"unfavorite"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Move to position <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Controls"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Choose controls to access from Quick Settings"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Hold &amp; drag to rearrange controls"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"All controls removed"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Changes not saved"</string>
@@ -1124,12 +1123,10 @@
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Switch to work profile"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Close"</string>
     <string name="lock_screen_settings" msgid="6152703934761402399">"Customize lock screen"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"Unlock to customize lock screen"</string>
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi not available"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Camera blocked"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Camera and microphone blocked"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microphone blocked"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Priority mode on"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant attention on"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Set default notes app in Settings"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index bed2089..b0df36a 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"unfavourite"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Move to position <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Controls"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Choose controls to access from Quick Settings"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Hold and drag to rearrange controls"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"All controls removed"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Changes not saved"</string>
@@ -1123,13 +1122,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Your work policy allows you to make phone calls only from the work profile"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Switch to work profile"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Close"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Customise lock screen"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"Unlock to customise lock screen"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi not available"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Camera is blocked"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Camera and microphone blocked"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microphone is blocked"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Priority mode on"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant attention on"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Set default notes app in Settings"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index bed2089..b0df36a 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"unfavourite"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Move to position <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Controls"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Choose controls to access from Quick Settings"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Hold and drag to rearrange controls"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"All controls removed"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Changes not saved"</string>
@@ -1123,13 +1122,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Your work policy allows you to make phone calls only from the work profile"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Switch to work profile"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Close"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Customise lock screen"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"Unlock to customise lock screen"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi not available"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Camera is blocked"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Camera and microphone blocked"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microphone is blocked"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Priority mode on"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant attention on"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Set default notes app in Settings"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml
index 885acd1..3b5c1a5 100644
--- a/packages/SystemUI/res/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res/values-en-rXC/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‎‎‏‎‎‏‏‎‎‎‏‏‏‎‏‏‏‎‏‏‎‏‎‎‎‏‏‎‏‏‏‎‎‎‎‏‎‏‎‏‏‎‎‏‏‏‎unfavorite‎‏‎‎‏‎"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‎‎‎‎‏‎‎‏‎‏‏‏‏‎‏‏‏‏‎‎‏‎‏‏‏‎‎‏‎‏‏‎‎‎‏‎‎‏‏‎‎‎‏‏‎‏‏‏‎‎‎‎‎Move to position ‎‏‎‎‏‏‎<xliff:g id="NUMBER">%d</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‎‏‏‎‏‏‏‎‎‎‎‏‏‏‎‎‎‏‏‎‎‎‏‎‎‏‎‏‏‎‏‎‏‏‏‎‏‎‏‎‏‎‏‏‎‎‎‎‏‎‎‏‏‎‎‏‎Controls‎‏‎‎‏‎"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‏‏‎‎‏‏‏‎‎‎‏‎‎‏‎‎‏‎‏‏‎‎‎‎‎‏‎‎‎‎‎‎‎‎‏‎‏‎‎‏‏‎‏‏‏‎‎‎‏‏‏‎‏‏‎Choose controls to access from Quick Settings‎‏‎‎‏‎"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‏‏‏‎‎‏‏‎‏‏‎‏‏‎‎‎‏‏‏‎‎‏‎‎‎‏‏‎‏‎‏‏‎‏‎‎‎‏‎‏‎‏‎‎‏‎‎‏‏‎‏‏‏‏‏‎Hold &amp; drag to rearrange controls‎‏‎‎‏‎"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‏‏‏‎‏‏‏‎‎‏‎‏‏‏‏‏‏‎‎‏‏‏‎‏‏‎‎‏‏‏‏‏‎‎‏‎‏‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‎‎‎All controls removed‎‏‎‎‏‎"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‏‎‏‎‎‏‎‏‏‎‏‎‎‏‏‏‎‎‏‎‏‏‎‎‎‎‎‏‎‎‎‏‏‏‏‎‎‎‏‎‏‏‎‏‏‎‏‏‎‏‎‏‏‎Changes not saved‎‏‎‎‏‎"</string>
@@ -1124,12 +1123,10 @@
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‏‏‎‎‎‏‎‎‏‏‎‎‏‏‏‏‏‏‎‎‎‏‎‎‎‎‎‏‏‎‏‏‎‏‏‎‏‏‎‎‎‎‎‎‏‎‎‏‎‎‏‎‎‏‎‎‎Switch to work profile‎‏‎‎‏‎"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‎‎‎‏‎‏‎‎‏‏‎‎‏‏‎‎‎‏‎‎‏‎‏‎‎‎‎‎‎‏‎‏‏‏‎‏‏‎‎‎‏‏‏‎‏‎‏‎‎‎‎‏‎‎Close‎‏‎‎‏‎"</string>
     <string name="lock_screen_settings" msgid="6152703934761402399">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‎‎‎‏‎‏‏‎‎‏‎‏‏‏‎‏‎‎‎‎‏‎‏‎‏‎‏‏‏‏‎‎‏‏‎‏‎‎‎‎‎‎‎‎‎‎‎‎‏‏‏‏‏‎Customize lock screen‎‏‎‎‏‎"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‏‎‏‎‎‏‏‏‏‎‎‎‎‎‏‎‎‎‏‎‏‎‎‎‎‎‏‎‎‎‏‎‏‏‎‎‏‎‎‎‎‏‎‎‎‏‏‏‏‏‎‏‏‎Unlock to customize lock screen‎‏‎‎‏‎"</string>
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‎‎‏‎‏‏‏‎‏‎‎‏‎‎‎‎‏‏‏‎‎‏‎‎‎‎‎‏‏‎‎‎‎‏‏‎‏‎‏‏‎‏‎‎‎‎‎‏‏‏‎‎‏‎‎‎Wi-Fi not available‎‏‎‎‏‎"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‎‏‏‎‎‎‏‏‏‎‏‎‎‎‎‏‎‏‎‏‏‏‎‎‏‏‏‏‎‏‏‎‎‎‎‏‎‎‏‏‏‏‏‎‏‎‎‎‏‎‎‏‎‎Camera blocked‎‏‎‎‏‎"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‎‎‎‎‏‎‏‎‏‏‏‏‎‏‏‎‏‏‎‏‏‏‏‎‎‏‏‏‎‎‏‏‏‏‎‎‎‏‎‎‏‏‏‎‎‏‏‎‏‎‎‏‎‎‎Camera and microphone blocked‎‏‎‎‏‎"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‎‏‎‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‎‎‎‏‎‏‎‏‎‏‏‏‏‏‏‏‎‎‏‎Microphone blocked‎‏‎‎‏‎"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‎‎‎‏‎‏‎‎‏‏‎‎‎‎‎‏‏‎‏‎‎‎‏‎‎‏‎‏‏‎‏‎‎‎‏‏‏‎‏‎‏‎‏‏‎‎‏‎‎‏‎‎‎‎Priority mode on‎‏‎‎‏‎"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‏‎‎‏‏‏‎‎‏‏‎‏‎‎‏‎‏‎‏‏‏‎‏‏‏‎‏‏‏‏‏‏‎‎‏‏‎‏‎‏‏‎‎‎‎‎‏‏‏‎‏‏‎Assistant attention on‎‏‎‎‏‎"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‎‎‎‎‎‏‏‏‏‎‎‎‏‏‏‏‏‎‎‎‏‏‎‏‎‏‎‏‏‏‏‎‏‏‏‏‎‏‏‏‏‎‎‏‏‏‎‏‎‏‎‎‎‎‎‏‎Set default notes app in Settings‎‏‎‎‏‎"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index f63abf2..893a392 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -383,7 +383,7 @@
     <string name="user_remove_user_message" msgid="6702834122128031833">"Se borrarán todas las aplicaciones y los datos de este usuario."</string>
     <string name="user_remove_user_remove" msgid="8387386066949061256">"Quitar"</string>
     <string name="media_projection_dialog_text" msgid="1755705274910034772">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> tendrá acceso a toda la información que sea visible en la pantalla o que reproduzcas en tu dispositivo durante una grabación o transmisión. Se incluyen las contraseñas, los detalles del pago, las fotos, los mensajes y el audio que reproduzcas."</string>
-    <string name="media_projection_dialog_service_text" msgid="958000992162214611">"El servicio que brinda esta función tendrá acceso a toda la información que sea visible en la pantalla o que reproduzcas en tu dispositivo durante una grabación o transmisión. Se incluyen contraseñas, detalles de pago, fotos, mensajes y audios que reproduzcas."</string>
+    <string name="media_projection_dialog_service_text" msgid="958000992162214611">"El servicio que brinda esta función tendrá acceso a toda la información que sea visible en la pantalla o que reproduzcas en tu dispositivo durante una grabación o transmisión. Se incluyen las contraseñas, los detalles del pago, las fotos, los mensajes y el audio que reproduzcas."</string>
     <string name="media_projection_dialog_service_title" msgid="2888507074107884040">"¿Deseas comenzar a grabar o transmitir contenido?"</string>
     <string name="media_projection_dialog_title" msgid="3316063622495360646">"¿Deseas iniciar una grabación o transmisión con <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>?"</string>
     <string name="media_projection_permission_dialog_title" msgid="7130975432309482596">"¿Quieres permitir que <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> comparta o grabe contenido?"</string>
@@ -700,7 +700,7 @@
     <string name="left_icon" msgid="5036278531966897006">"Ícono izquierdo"</string>
     <string name="right_icon" msgid="1103955040645237425">"Ícono derecho"</string>
     <string name="drag_to_add_tiles" msgid="8933270127508303672">"Mantén presionado y arrastra para agregar tarjetas"</string>
-    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Mantén presionado y arrastra para reorganizar las tarjetas"</string>
+    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Mantén presionado y arrastra para reorganizar los mosaicos"</string>
     <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Arrastra aquí para quitar"</string>
     <string name="drag_to_remove_disabled" msgid="933046987838658850">"Necesitas al menos <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> tarjetas"</string>
     <string name="qs_edit" msgid="5583565172803472437">"Editar"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"quitar de favoritos"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Mover a la posición <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Controles"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Elige a qué controles accederás desde la Configuración rápida"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Mantén presionado y arrastra un control para reubicarlo"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Se quitaron todos los controles"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"No se guardaron los cambios"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Tu política del trabajo te permite hacer llamadas telefónicas solo desde el perfil de trabajo"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Cambiar al perfil de trabajo"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Cerrar"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Personalizar pantalla de bloqueo"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi no disponible"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"La cámara está bloqueada"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"El micrófono está bloqueado"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"El modo de prioridad está activado"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Asistente está prestando atención"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 3714253..cf38c13 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"quitar de favoritos"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Mover a la posición <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Controles"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Selecciona controles a los que quieras acceder desde los ajustes rápidos"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Mantén pulsado un control y arrástralo para reubicarlo"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Todos los controles quitados"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"No se han guardado los cambios"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Tu política del trabajo solo te permite hacer llamadas telefónicas desde el perfil de trabajo"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Cambiar al perfil de trabajo"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Cerrar"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Personalizar pantalla de bloqueo"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Red Wi-Fi no disponible"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Cámara bloqueada"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Micrófono bloqueado"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Modo Prioridad activado"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"El Asistente está activado"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index bb9b4fc..5028833 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Alustage"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Peatage"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ÜhekäereĆŸiim"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrastsus"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Tavaline"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Keskmine"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Kõrge"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Kas tühistada seadme mikrofoni blokeerimine?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Kas tühistada seadme kaamera blokeerimine?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Kas tühistada seadme kaamera ja mikrofoni blokeerimine?"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"eemalda lemmikute hulgast"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Teisalda asendisse <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Juhtnupud"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Valige juhtelemendid, millele kiirseadete kaudu juurde pääseda"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Juhtelementide ümberpaigutamiseks hoidke neid all ja lohistage"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Kõik juhtelemendid eemaldati"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Muudatusi ei salvestatud"</string>
@@ -1123,13 +1126,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Teie töökoha eeskirjad lubavad teil helistada ainult tööprofiililt"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Lülitu tööprofiilile"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Sule"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Kohanda lukustuskuva"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"Lukustuskuva kohandamiseks avage"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"WiFi pole saadaval"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kaamera on blokeeritud"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kaamera ja mikrofon on blokeeritud"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon on blokeeritud"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioriteetne reĆŸiim on sisse lülitatud"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistent on aktiveeritud"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Määrake seadetes märkmete vaikerakendus."</string>
 </resources>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index 7a6b8f8..5dfcdd9 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"kendu gogokoetatik"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Eraman <xliff:g id="NUMBER">%d</xliff:g>garren postura"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrolatzeko aukerak"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Aukeratu Ezarpen bizkorrak menutik atzitu nahi dituzunak"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Kontrolatzeko aukerak antolatzeko, eduki itzazu sakatuta, eta arrastatu"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Kendu dira kontrolatzeko aukera guztiak"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Ez dira gorde aldaketak"</string>
@@ -1055,7 +1054,7 @@
     <string name="fgs_manager_footer_label" msgid="8276763570622288231">"{count,plural, =1{# aplikazio aktibo dago}other{# aplikazio aktibo daude}}"</string>
     <string name="fgs_dot_content_description" msgid="2865071539464777240">"Informazio berria"</string>
     <string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktibo dauden aplikazioak"</string>
-    <string name="fgs_manager_dialog_message" msgid="2670045017200730076">"Aplikazio hauek aktibo daude eta funtzionatzen ari dira, nahiz eta zu haiek erabiltzen ez aritu. Aukera honek haien funtzionamendua hobetzen du, baina baliteke bateriaren iraupenari ere eragitea."</string>
+    <string name="fgs_manager_dialog_message" msgid="2670045017200730076">"Aplikazio hauek aktibo daude eta funtzionatzen ari dira, nahiz eta zu haiek erabiltzen ez aritu. Aukera honek haien funtzioa hobetzen du, baina baliteke bateriaren iraupenari ere eragitea."</string>
     <string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Gelditu"</string>
     <string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Geldituta"</string>
     <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Eginda"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Deiak laneko profiletik soilik egiteko baimena ematen dizute laneko gidalerroek"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Aldatu laneko profilera"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Itxi"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Pertsonalizatu pantaila blokeatua"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wifi-konexioa ez dago erabilgarri"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera blokeatuta dago"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofonoa blokeatuta dago"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Lehentasun modua aktibatuta dago"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Laguntzailea zerbitzuak arreta jarrita dauka"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index f12ca75..57c0430 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"Ű­Ű°Ù Ú©Ű±ŰŻÙ† ۧŰČ Ù…ÙˆŰ§Ű±ŰŻ ŰŻÙ„ŰźÙˆŰ§Ù‡"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Ű§Ù†ŰȘÙ‚Ű§Ù„ ŰšÙ‡ موقŰčیŰȘ <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"کنŰȘŰ±Ù„‌Ù‡Ű§"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ŰšŰ±Ű§ÛŒ ŰŻŰłŰȘ۱۳ ۧŰČ «ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ ŰłŰ±ÛŒŰč»ŰŒ کنŰȘŰ±Ù„‌Ù‡Ű§ ۱ۧ Ű§Ù†ŰȘ۟ۧۚ Ú©Ù†ÛŒŰŻ"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"ŰšŰ±Ű§ÛŒ ŰȘŰșÛŒÛŒŰ± ŰŻŰ§ŰŻÙ† ŰȘ۱ŰȘÛŒŰš کنŰȘŰ±Ù„‌Ù‡Ű§ŰŒ ŰąÙ†‌Ù‡Ű§ ۱ۧ Ù†ÚŻÙ‡ ŰŻŰ§Ű±ÛŒŰŻ و ŰšÚ©ŰŽÛŒŰŻ"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"همه کنŰȘŰ±Ù„‌Ù‡Ű§ ۚ۱ۯۧێŰȘه ŰŽŰŻÙ‡‌Ű§Ù†ŰŻ"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"ŰȘŰșÛŒÛŒŰ±Ű§ŰȘ Ű°ŰźÛŒŰ±Ù‡ Ù†ŰŽŰŻ"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"۟۷‌Ù…ŰŽÛŒ Ú©Ű§Ű±ÛŒ ŰŽÙ…Ű§ ÙÙ‚Ű· ŰšÙ‡ ŰšŰ±Ù‚Ű±Ű§Ű±ÛŒ ŰȘÙ…Ű§Űł ۧŰČŰ·Ű±ÛŒÙ‚ Ù†Ù…Ű§ÛŒÙ‡ Ú©Ű§Ű±ÛŒ ۧۏۧŰČه می‌ŰŻÙ‡ŰŻ"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Ű±ÙŰȘن ŰšÙ‡ Ù†Ù…Ű§ÛŒÙ‡ Ú©Ű§Ű±ÛŒ"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"ۚ۳ŰȘن"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"ŰłÙŰ§Ű±ŰŽÛŒ‌۳ۧŰČی Ű”ÙŰ­Ù‡ قفل"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"‏Wi-Fi ۯ۱ۯ۳ŰȘ۱۳ Ù†ÛŒŰłŰȘ"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ŰŻÙˆŰ±ŰšÛŒÙ† Ù…ŰłŰŻÙˆŰŻ ŰŽŰŻÙ‡ ۧ۳ŰȘ"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Ù…ÛŒÚ©Ű±ÙˆÙÙˆÙ† Ù…ŰłŰŻÙˆŰŻ ŰŽŰŻÙ‡ ۧ۳ŰȘ"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Ű­Ű§Ù„ŰȘ Ű§ÙˆÙ„ÙˆÛŒŰȘ Ű±ÙˆŰŽÙ† ۧ۳ŰȘ"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"ŰȘÙˆŰŹÙ‡ «ŰŻŰłŰȘÛŒŰ§Ű±» Ű±ÙˆŰŽÙ† ۧ۳ŰȘ"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 435cfc9..767d18e 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Aloita"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Lopeta"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Yhden käden moodi"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrasti"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Tavallinen"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Keskitaso"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Suuri"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Kumotaanko laitteen mikrofonin esto?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Kumotaanko laitteen kameran esto?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Kumotaanko laitteen kameran ja mikrofonin esto?"</string>
@@ -795,7 +799,7 @@
     <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"Palauta käyttöön <xliff:g id="CARRIER">%s</xliff:g>?"</string>
     <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"Mobiilidata ei vaihdu automaattisesti saatavuuden perusteella"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"Ei kiitos"</string>
-    <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"Kyllä, palauta"</string>
+    <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"Kyllä, vaihda"</string>
     <string name="touch_filtered_warning" msgid="8119511393338714836">"Sovellus peittää käyttöoikeuspyynnön, joten Asetukset ei voi vahvistaa valintaasi."</string>
     <string name="slice_permission_title" msgid="3262615140094151017">"Saako <xliff:g id="APP_0">%1$s</xliff:g> näyttää osia sovelluksesta <xliff:g id="APP_2">%2$s</xliff:g>?"</string>
     <string name="slice_permission_text_1" msgid="6675965177075443714">"– Se voi lukea tietoja sovelluksesta <xliff:g id="APP">%1$s</xliff:g>."</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"poista suosikeista"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Siirrä kohtaan <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Säätimet"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Valitse säätimet, joita käytetään pika-asetuksista"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Järjestele säätimiä koskettamalla pitkään ja vetämällä"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Kaikki säätimet poistettu"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Muutoksia ei tallennettu"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Työkäytäntö sallii sinun soittaa puheluita vain työprofiilista"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Vaihda työprofiiliin"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Sulje"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Customize lukitusnäyttöä"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi-yhteys ei ole käytettävissä"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera estetty"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofoni estetty"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Tärkeät-tila on päällä"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant on aktiivinen"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index 71b6ad8..e7a9c87 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Démarrer"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Arrêter"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Mode Une main"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Contraste"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Moyen"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Élevé"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Débloquer le microphone de l\'appareil?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Débloquer l\'appareil photo de l\'appareil?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Débloquer l\'appareil photo et le microphone?"</string>
@@ -517,7 +521,7 @@
     <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Déverrouiller pour utiliser"</string>
     <string name="wallet_error_generic" msgid="257704570182963611">"Un problème est survenu lors de la récupération de vos cartes, veuillez réessayer plus tard"</string>
     <string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Paramètres de l\'écran de verrouillage"</string>
-    <string name="qr_code_scanner_title" msgid="1938155688725760702">"Lecteur de code QR"</string>
+    <string name="qr_code_scanner_title" msgid="1938155688725760702">"lecteur de code QR"</string>
     <string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"Mise à jour en cours…"</string>
     <string name="status_bar_work" msgid="5238641949837091056">"Profil professionnel"</string>
     <string name="status_bar_airplane" msgid="4848702508684541009">"Mode Avion"</string>
@@ -885,15 +889,17 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"supprimer des favoris"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Déplacer l\'élément à la position <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Commandes"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Choisissez les commandes à inclure dans le menu Paramètres rapides"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Maintenez le doigt sur l\'écran, puis glissez-le pour réorganiser les commandes"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Toutes les commandes ont été supprimées"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Modifications non enregistrées"</string>
     <string name="controls_favorite_see_other_apps" msgid="7709087332255283460">"Afficher autres applications"</string>
-    <string name="controls_favorite_rearrange_button" msgid="2942788904364641185">"Réorganiser"</string>
-    <string name="controls_favorite_add_controls" msgid="1221420435546694004">"Ajouter des commandes"</string>
-    <string name="controls_favorite_back_to_editing" msgid="184125114090062713">"Retour à la modification"</string>
+    <!-- no translation found for controls_favorite_rearrange_button (2942788904364641185) -->
+    <skip />
+    <!-- no translation found for controls_favorite_add_controls (1221420435546694004) -->
+    <skip />
+    <!-- no translation found for controls_favorite_back_to_editing (184125114090062713) -->
+    <skip />
     <string name="controls_favorite_load_error" msgid="5126216176144877419">"Impossible de charger les commandes. Vérifiez l\'application <xliff:g id="APP">%s</xliff:g> pour vous assurer que les paramètres de l\'application n\'ont pas changé."</string>
     <string name="controls_favorite_load_none" msgid="7687593026725357775">"Les commandes compatibles ne sont pas accessibles"</string>
     <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Autre"</string>
@@ -1123,8 +1129,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Votre politique de l\'entreprise vous autorise à passer des appels téléphoniques uniquement à partir de votre profil professionnel"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Passer au profil professionnel"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Fermer"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Personn. l\'écran de verrouillage"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi non accessible"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Appareil photo bloqué"</string>
@@ -1132,6 +1137,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microphone bloqué"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Mode Priorité activé"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant à l\'écoute"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 8f96d2c..d20258b 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -238,7 +238,7 @@
     <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rotation automatique de l\'écran"</string>
     <string name="quick_settings_location_label" msgid="2621868789013389163">"Localisation"</string>
     <string name="quick_settings_screensaver_label" msgid="1495003469366524120">"Économiseur d\'écran"</string>
-    <string name="quick_settings_camera_label" msgid="5612076679385269339">"Accès à la caméra"</string>
+    <string name="quick_settings_camera_label" msgid="5612076679385269339">"Accès à l\'appareil photo"</string>
     <string name="quick_settings_mic_label" msgid="8392773746295266375">"Accès au micro"</string>
     <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"Disponible"</string>
     <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"Bloqué"</string>
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Démarrer"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Arrêter"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Mode une main"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Contraste"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Moyen"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Élevé"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Débloquer le micro de l\'appareil ?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Débloquer l\'appareil photo de l\'appareil ?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Débloquer l\'appareil photo et le micro de l\'appareil ?"</string>
@@ -402,7 +406,7 @@
     <string name="manage_notifications_text" msgid="6885645344647733116">"Gérer"</string>
     <string name="manage_notifications_history_text" msgid="57055985396576230">"Historique"</string>
     <string name="notification_section_header_incoming" msgid="850925217908095197">"Nouvelles notifications"</string>
-    <string name="notification_section_header_gentle" msgid="6804099527336337197">"Silencieux"</string>
+    <string name="notification_section_header_gentle" msgid="6804099527336337197">"Notifications silencieuses"</string>
     <string name="notification_section_header_alerting" msgid="5581175033680477651">"Notifications"</string>
     <string name="notification_section_header_conversations" msgid="821834744538345661">"Conversations"</string>
     <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Effacer toutes les notifications silencieuses"</string>
@@ -824,7 +828,7 @@
     <string name="privacy_type_media_projection" msgid="8136723828804251547">"enregistrement écran"</string>
     <string name="music_controls_no_title" msgid="4166497066552290938">"Sans titre"</string>
     <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Mode Veille imminent"</string>
-    <string name="font_scaling_dialog_title" msgid="6273107303850248375">"Taille de la police"</string>
+    <string name="font_scaling_dialog_title" msgid="6273107303850248375">"Taille de police"</string>
     <string name="font_scaling_smaller" msgid="1012032217622008232">"Réduire"</string>
     <string name="font_scaling_larger" msgid="5476242157436806760">"Agrandir"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Fenêtre d\'agrandissement"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"supprimer des favoris"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Déplacer l\'élément à la position <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Commandes"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Sélectionnez les commandes qui seront accessibles depuis Réglages rapides"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Faites glisser les commandes pour les réorganiser"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Toutes les commandes ont été supprimées"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Les modifications n\'ont pas été enregistrées"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Votre règle professionnelle ne vous permet de passer des appels que depuis le profil professionnel"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Passer au profil professionnel"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Fermer"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Personnaliser écran verrouillage"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi non disponible"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Caméra bloquée"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Micro bloqué"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Mode Prioritaire activé"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant à l\'écoute"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-fr/tiles_states_strings.xml b/packages/SystemUI/res/values-fr/tiles_states_strings.xml
index 12fa44d..ce39cd2 100644
--- a/packages/SystemUI/res/values-fr/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-fr/tiles_states_strings.xml
@@ -58,7 +58,7 @@
   </string-array>
   <string-array name="tile_states_flashlight">
     <item msgid="3465257127433353857">"Indisponible"</item>
-    <item msgid="5044688398303285224">"Désactivé"</item>
+    <item msgid="5044688398303285224">"Désactivée"</item>
     <item msgid="8527389108867454098">"Activée"</item>
   </string-array>
   <string-array name="tile_states_rotation">
@@ -78,8 +78,8 @@
   </string-array>
   <string-array name="tile_states_location">
     <item msgid="3316542218706374405">"Indisponible"</item>
-    <item msgid="4813655083852587017">"Désactivé"</item>
-    <item msgid="6744077414775180687">"Activé"</item>
+    <item msgid="4813655083852587017">"Désactivée"</item>
+    <item msgid="6744077414775180687">"Activée"</item>
   </string-array>
   <string-array name="tile_states_hotspot">
     <item msgid="3145597331197351214">"Indisponible"</item>
@@ -88,12 +88,12 @@
   </string-array>
   <string-array name="tile_states_color_correction">
     <item msgid="2840507878437297682">"Indisponible"</item>
-    <item msgid="1909756493418256167">"Désactivé"</item>
+    <item msgid="1909756493418256167">"Désactivée"</item>
     <item msgid="4531508423703413340">"Activée"</item>
   </string-array>
   <string-array name="tile_states_inversion">
     <item msgid="3638187931191394628">"Indisponible"</item>
-    <item msgid="9103697205127645916">"Désactivé"</item>
+    <item msgid="9103697205127645916">"Désactivée"</item>
     <item msgid="8067744885820618230">"Activée"</item>
   </string-array>
   <string-array name="tile_states_saver">
@@ -133,7 +133,7 @@
   </string-array>
   <string-array name="tile_states_reduce_brightness">
     <item msgid="1839836132729571766">"Indisponible"</item>
-    <item msgid="4572245614982283078">"Désactivé"</item>
+    <item msgid="4572245614982283078">"Désactivée"</item>
     <item msgid="6536448410252185664">"Activée"</item>
   </string-array>
   <string-array name="tile_states_cameratoggle">
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index e2f625d..41fee6a 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Iniciar"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Deter"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modo dunha soa man"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Contraste"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Nivel estándar"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Nivel medio"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Nivel alto"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Queres desbloquear o micrófono do dispositivo?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Queres desbloquear a cámara do dispositivo?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Queres desbloquear a cámara e o micrófono do dispositivo?"</string>
@@ -405,7 +409,7 @@
     <string name="notification_section_header_gentle" msgid="6804099527336337197">"Silenciadas"</string>
     <string name="notification_section_header_alerting" msgid="5581175033680477651">"Notificacións"</string>
     <string name="notification_section_header_conversations" msgid="821834744538345661">"Conversas"</string>
-    <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Borrar todas as notificacións silenciadas"</string>
+    <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Borra todas as notificacións silenciadas"</string>
     <string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"O modo Non molestar puxo en pausa as notificacións"</string>
     <string name="media_projection_action_text" msgid="3634906766918186440">"Iniciar agora"</string>
     <string name="empty_shade_text" msgid="8935967157319717412">"Non hai notificacións"</string>
@@ -885,15 +889,17 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"quitar dos controis favoritos"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Mover á posición <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Controis"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Escolle os controis aos que queiras acceder desde Configuración rápida"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Para reorganizar os controis, mantenos premidos e arrástraos"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Quitáronse todos os controis"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Non se gardaron os cambios"</string>
     <string name="controls_favorite_see_other_apps" msgid="7709087332255283460">"Ver outras aplicacións"</string>
-    <string name="controls_favorite_rearrange_button" msgid="2942788904364641185">"Reordenar"</string>
-    <string name="controls_favorite_add_controls" msgid="1221420435546694004">"Engadir controis"</string>
-    <string name="controls_favorite_back_to_editing" msgid="184125114090062713">"Seguir editando"</string>
+    <!-- no translation found for controls_favorite_rearrange_button (2942788904364641185) -->
+    <skip />
+    <!-- no translation found for controls_favorite_add_controls (1221420435546694004) -->
+    <skip />
+    <!-- no translation found for controls_favorite_back_to_editing (184125114090062713) -->
+    <skip />
     <string name="controls_favorite_load_error" msgid="5126216176144877419">"Non se puideron cargar os controis. Comproba a aplicación <xliff:g id="APP">%s</xliff:g> para asegurarte de que non se modificase a súa configuración."</string>
     <string name="controls_favorite_load_none" msgid="7687593026725357775">"Non hai controis compatibles que estean dispoñibles"</string>
     <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Outra"</string>
@@ -1123,8 +1129,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"A política do teu traballo só che permite facer chamadas de teléfono desde o perfil de traballo"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Cambiar ao perfil de traballo"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Pechar"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Personalizar pantalla de bloqueo"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wifi non dispoñible"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"A cámara está bloqueada"</string>
@@ -1132,6 +1137,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"O micrófono está bloqueado"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"O modo de prioridade está activado"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"A atención do Asistente está activada"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index b78d852..1201b79 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -236,12 +236,12 @@
     <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"àȘšàȘŸàȘČુ àȘ•àȘ°à«€ àȘ°àȘč્àȘŻàȘŸàȘ‚ àȘ›à«€àȘ…"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"àȘ‘àȘŸà«‹ àȘ°à«‹àȘŸà«‡àȘŸ"</string>
     <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"àȘ‘àȘŸà«‹ àȘ°à«‹àȘŸà«‡àȘŸ àȘžà«àȘ•્àȘ°à«€àȘš"</string>
-    <string name="quick_settings_location_label" msgid="2621868789013389163">"àȘČોàȘ•ેàȘ¶àȘš"</string>
+    <string name="quick_settings_location_label" msgid="2621868789013389163">"àȘžà«àȘ„àȘŸàȘš"</string>
     <string name="quick_settings_screensaver_label" msgid="1495003469366524120">"àȘžà«àȘ•્àȘ°à«€àȘš àȘžà«‡àȘ”àȘ°"</string>
     <string name="quick_settings_camera_label" msgid="5612076679385269339">"àȘ•à«…àȘźà«‡àȘ°àȘŸàȘšà«‹ àȘàȘ•્àȘžà«‡àȘž"</string>
     <string name="quick_settings_mic_label" msgid="8392773746295266375">"àȘźàȘŸàȘ‡àȘ•àȘšà«‹ àȘàȘ•્àȘžà«‡àȘž"</string>
     <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"àȘ‰àȘȘàȘČàȘŹà«àȘ§ àȘ›à«‡"</string>
-    <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"àȘŹà«àȘČૉàȘ• àȘ•àȘ°à«‡àȘČો àȘ›à«‡"</string>
+    <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"àȘŹà«àȘČૉàȘ• àȘ•àȘ°à«‡àȘČુàȘ‚ àȘ›à«‡"</string>
     <string name="quick_settings_media_device_label" msgid="8034019242363789941">"àȘźà«€àȘĄàȘżàȘŻàȘŸ àȘ‰àȘȘàȘ•àȘ°àȘŁ"</string>
     <string name="quick_settings_user_title" msgid="8673045967216204537">"àȘ”àȘȘàȘ°àȘŸàȘ¶àȘ•àȘ°à«àȘ€àȘŸ"</string>
     <string name="quick_settings_wifi_label" msgid="2879507532983487244">"àȘ”àȘŸàȘ‡-àȘ«àȘŸàȘ‡"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"àȘźàȘšàȘȘàȘžàȘ‚àȘŠàȘźàȘŸàȘ‚àȘ„ી àȘ•àȘŸàȘąà«€ àȘšàȘŸàȘ–à«‹"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"àȘžà«àȘ„àȘŸàȘš <xliff:g id="NUMBER">%d</xliff:g> àȘȘàȘ° àȘ–àȘžà«‡àȘĄà«‹"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"àȘšàȘżàȘŻàȘ‚àȘ€à«àȘ°àȘŁà«‹"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"àȘàȘĄàȘȘી àȘžà«‡àȘŸàȘżàȘ‚àȘ—àȘźàȘŸàȘ‚àȘ„ી àȘàȘ•્àȘžà«‡àȘž àȘ•àȘ°àȘ”àȘŸàȘšàȘŸ àȘšàȘżàȘŻàȘ‚àȘ€à«àȘ°àȘŁà«‹ àȘȘàȘžàȘ‚àȘŠ àȘ•àȘ°à«‹"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"àȘšàȘżàȘŻàȘ‚àȘ€à«àȘ°àȘŁà«‹àȘšà«‡ àȘ«àȘ°à«€àȘ„ી àȘ—à«‹àȘ àȘ”àȘ”àȘŸ àȘźàȘŸàȘŸà«‡ àȘ€à«‡àȘźàȘšà«‡ àȘčોàȘČ્àȘĄ àȘ•àȘ°à«€àȘšà«‡ àȘ–ેàȘ‚àȘšà«‹"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"àȘŹàȘ§àȘŸ àȘšàȘżàȘŻàȘ‚àȘ€à«àȘ°àȘŁà«‹ àȘ•àȘŸàȘąà«€ àȘšàȘŸàȘ–્àȘŻàȘŸ"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"àȘ«à«‡àȘ°àȘ«àȘŸàȘ°à«‹ àȘžàȘŸàȘšàȘ”્àȘŻàȘŸ àȘšàȘ„ી"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"àȘ€àȘźàȘŸàȘ°à«€ àȘ‘àȘ«àȘżàȘžàȘšà«€ àȘȘૉàȘČàȘżàȘžà«€ àȘ€àȘźàȘšà«‡ àȘźàȘŸàȘ€à«àȘ° àȘ‘àȘ«àȘżàȘžàȘšà«€ àȘȘ્àȘ°à«‹àȘ«àȘŸàȘ‡àȘČ àȘȘàȘ°àȘ„ી àȘœ àȘ«à«‹àȘš àȘ•ૉàȘČ àȘ•àȘ°àȘ”àȘŸàȘšà«€ àȘźàȘ‚àȘœà«‚àȘ°à«€ àȘ†àȘȘે àȘ›à«‡"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"àȘ‘àȘ«àȘżàȘžàȘšà«€ àȘȘ્àȘ°à«‹àȘ«àȘŸàȘ‡àȘČ àȘȘàȘ° àȘžà«àȘ”àȘżàȘš àȘ•àȘ°à«‹"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"àȘŹàȘ‚àȘ§ àȘ•àȘ°à«‹"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"àȘČૉàȘ• àȘžà«àȘ•્àȘ°à«€àȘš àȘ•àȘžà«àȘŸàȘźàȘŸàȘ‡àȘ àȘ•àȘ°à«‹"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"àȘ”àȘŸàȘ‡-àȘ«àȘŸàȘ‡ àȘ‰àȘȘàȘČàȘŹà«àȘ§ àȘšàȘ„ી"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"àȘ•à«…àȘźà«‡àȘ°àȘŸ àȘŹà«àȘČૉàȘ• àȘ•àȘ°à«‡àȘČો àȘ›à«‡"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"àȘźàȘŸàȘ‡àȘ•્àȘ°à«‹àȘ«à«‹àȘš àȘŹà«àȘČૉàȘ• àȘ•àȘ°à«‡àȘČો àȘ›à«‡"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"àȘȘ્àȘ°àȘŸàȘ§àȘŸàȘšà«àȘŻàȘ€àȘŸ àȘźà«‹àȘĄ àȘšàȘŸàȘČુ àȘ›à«‡"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant àȘžàȘ•્àȘ°àȘżàȘŻ àȘ›à«‡"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index 946b193..9eb124e2 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -236,7 +236,7 @@
     <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"à€Źà„à€Čà„‚à€Ÿà„‚à€„ à€šà€Ÿà€Čà„‚ à€čà„‹ à€°à€čà€Ÿ à€čà„ˆ…"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"à€‘à€Ÿà„‹-à€°à„‹à€Ÿà„‡à€Ÿ"</string>
     <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"à€žà„à€•à„à€°à„€à€š à€•à€Ÿ à€…à€Șà€šà„‡-à€†à€Ș à€Šà€żà€¶à€Ÿ à€Źà€Šà€Čà€šà€Ÿ (à€‘à€Ÿà„‹-à€°à„‹à€Ÿà„‡à€Ÿ)"</string>
-    <string name="quick_settings_location_label" msgid="2621868789013389163">"à€œà€—à€č à€•à„€ à€œà€Ÿà€šà€•à€Ÿà€°à„€"</string>
+    <string name="quick_settings_location_label" msgid="2621868789013389163">"à€œà€—à€č"</string>
     <string name="quick_settings_screensaver_label" msgid="1495003469366524120">"à€žà„à€•à„à€°à„€à€š à€žà„‡à€”à€°"</string>
     <string name="quick_settings_camera_label" msgid="5612076679385269339">"à€•à„ˆà€źà€°à„‡ à€•à€Ÿ à€à€•à„à€žà„‡à€ž"</string>
     <string name="quick_settings_mic_label" msgid="8392773746295266375">"à€źà€Ÿà€‡à€•à„à€°à„‹à€«à€Œà„‹à€š à€•à€Ÿ à€à€•à„à€žà„‡à€ž"</string>
@@ -383,7 +383,7 @@
     <string name="user_remove_user_message" msgid="6702834122128031833">"à€‡à€ž à€‰à€Șà€Żà„‹à€—à€•à€°à„à€€à€Ÿ à€•à„‡ à€žà€­à„€ à€à€Ș à€”à€° à€Ąà„‡à€Ÿà€Ÿ à€•à„‹ à€čà€Ÿà€Ÿ à€Šà€żà€Żà€Ÿ à€œà€Ÿà€à€—à€Ÿ."</string>
     <string name="user_remove_user_remove" msgid="8387386066949061256">"à€čà€Ÿà€Ÿà€à€‚"</string>
     <string name="media_projection_dialog_text" msgid="1755705274910034772">"à€°à€żà€•à„‰à€°à„à€Ą à€Żà€Ÿ à€•à€Ÿà€žà„à€Ÿ à€•à€°à€€à„‡ à€žà€źà€Ż, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> à€†à€Șà€•à„€ à€žà„à€•à„à€°à„€à€š à€Șà€° à€Šà€żà€– à€°à€čà„€ à€Żà€Ÿ à€†à€Șà€•à„‡ à€Ąà€żà€”à€Ÿà€‡à€ž à€Șà€° à€šà€Čà€Ÿà€ˆ à€œà€Ÿ à€°à€čà„€ à€œà€Ÿà€šà€•à€Ÿà€°à„€ à€à€•à„à€žà„‡à€ž à€•à€° à€žà€•à€€à€Ÿ à€čà„ˆ. à€‡à€žà€źà„‡à€‚ à€Șà€Ÿà€žà€”à€°à„à€Ą, à€Șà„ˆà€žà„‡ à€šà„à€•à€Ÿà€šà„‡ à€•à€Ÿ à€Źà„à€Żà„Œà€°à€Ÿ, à€«à€Œà„‹à€Ÿà„‹, à€źà„ˆà€žà„‡à€œ, à€”à€° à€šà€Čà€Ÿà€ à€—à€ à€‘à€Ąà€żà€Żà„‹ à€œà„ˆà€žà„€ à€œà€Ÿà€šà€•à€Ÿà€°à„€ à€¶à€Ÿà€źà€żà€Č à€čà„ˆ."</string>
-    <string name="media_projection_dialog_service_text" msgid="958000992162214611">"à€‡à€ž à€«à€Œà€‚à€•à„à€¶à€š à€•à„‹ à€‰à€Șà€Čà€Źà„à€§ à€•à€°à€Ÿà€šà„‡ à€”à€Ÿà€Čà„€ à€žà„‡à€”à€Ÿ, à€°à€żà€•à„‰à€°à„à€Ą à€Żà€Ÿ à€•à€Ÿà€žà„à€Ÿ à€•à€°à€€à„‡ à€žà€źà€Ż, à€†à€Șà€•à„€ à€žà„à€•à„à€°à„€à€š à€Șà€° à€Šà€żà€–à€šà„‡ à€”à€Ÿà€Čà„€ à€Żà€Ÿ à€šà€Čà€Ÿà€ˆ à€œà€Ÿà€šà„‡ à€”à€Ÿà€Čà„€ à€œà€Ÿà€šà€•à€Ÿà€°à„€ à€•à„‹ à€à€•à„à€žà„‡à€ž à€•à€° à€žà€•à€€à„€ à€čà„ˆ. à€‡à€žà€źà„‡à€‚ à€Șà€Ÿà€žà€”à€°à„à€Ą, à€Șà„‡à€źà„‡à€‚à€Ÿ à€•à„‡ à€€à€°à„€à€•à„‡ à€•à„€ à€œà€Ÿà€šà€•à€Ÿà€°à„€, à€«à€Œà„‹à€Ÿà„‹, à€źà„ˆà€žà„‡à€œ, à€”à€° à€šà€Čà€Ÿà€ à€œà€Ÿà€šà„‡ à€”à€Ÿà€Čà„‡ à€‘à€Ąà€żà€Żà„‹ à€¶à€Ÿà€źà€żà€Č à€čà„ˆà€‚."</string>
+    <string name="media_projection_dialog_service_text" msgid="958000992162214611">"à€‡à€ž à€«à€Œà€‚à€•à„à€¶à€š à€•à„‹ à€‰à€Șà€Čà€Źà„à€§ à€•à€°à€Ÿà€šà„‡ à€”à€Ÿà€Čà„€ à€žà„‡à€”à€Ÿ, à€°à€żà€•à„‰à€°à„à€Ą à€Żà€Ÿ à€•à€Ÿà€žà„à€Ÿ à€•à€°à€€à„‡ à€žà€źà€Ż, à€†à€Șà€•à„€ à€žà„à€•à„à€°à„€à€š à€Șà€° à€Šà€żà€–à€šà„‡ à€”à€Ÿà€Čà„€ à€Żà€Ÿ à€šà€Čà€Ÿà€ˆ à€œà€Ÿà€šà„‡ à€”à€Ÿà€Čà„€ à€œà€Ÿà€šà€•à€Ÿà€°à„€ à€•à„‹ à€à€•à„à€žà„‡à€ž à€•à€° à€žà€•à€€à„€ à€čà„ˆ. à€‡à€žà€źà„‡à€‚ à€Șà€Ÿà€žà€”à€°à„à€Ą, à€Șà„ˆà€žà„‡ à€šà„à€•à€Ÿà€šà„‡ à€žà„‡ à€œà„à€Ąà€Œà„€ à€œà€Ÿà€šà€•à€Ÿà€°à„€, à€«à€Œà„‹à€Ÿà„‹, à€źà„ˆà€žà„‡à€œ, à€”à€° à€šà€Čà€Ÿà€ à€œà€Ÿà€šà„‡ à€”à€Ÿà€Čà„‡ à€‘à€Ąà€żà€Żà„‹ à€¶à€Ÿà€źà€żà€Č à€čà„ˆà€‚."</string>
     <string name="media_projection_dialog_service_title" msgid="2888507074107884040">"à€°à€żà€•à„‰à€°à„à€Ąà€żà€‚à€— à€Żà€Ÿ à€•à€Ÿà€žà„à€Ÿ à€•à€°à€šà€Ÿ à€¶à„à€°à„‚ à€•à€°à„‡à€‚?"</string>
     <string name="media_projection_dialog_title" msgid="3316063622495360646">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> à€•à€Ÿ à€‡à€žà„à€€à„‡à€źà€Ÿà€Č à€•à€°à€•à„‡ à€°à€żà€•à„‰à€°à„à€Ą à€”à€° à€•à€Ÿà€žà„à€Ÿ à€•à€°à€šà€Ÿ à€¶à„à€°à„‚ à€•à€°à„‡à€‚?"</string>
     <string name="media_projection_permission_dialog_title" msgid="7130975432309482596">"à€•à„à€Żà€Ÿ à€†à€Șà€•à„‹ à€¶à„‡à€Żà€° à€Żà€Ÿ à€°à€żà€•à„‰à€°à„à€Ą à€•à€°à€šà„‡ à€•à„€ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> à€•à„‹ à€…à€šà„à€źà€€à€ż à€Šà„‡à€šà„€ à€čà„ˆ?"</string>
@@ -599,7 +599,7 @@
     <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
     <string name="keyboard_key_backspace" msgid="4095278312039628074">"Backspace"</string>
     <string name="keyboard_key_media_play_pause" msgid="8389984232732277478">"Play/Pause"</string>
-    <string name="keyboard_key_media_stop" msgid="1509943745250377699">"à€°à„‹à€•à„‡à€‚"</string>
+    <string name="keyboard_key_media_stop" msgid="1509943745250377699">"Stop"</string>
     <string name="keyboard_key_media_next" msgid="8502476691227914952">"Next"</string>
     <string name="keyboard_key_media_previous" msgid="5637875709190955351">"Previous"</string>
     <string name="keyboard_key_media_rewind" msgid="3450387734224327577">"Rewind"</string>
@@ -794,7 +794,7 @@
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"à€†à€Șà€•à„‹ à€źà„‹à€Źà€Ÿà€‡à€Č à€”à€° à€‡à€‚à€Ÿà€°à€šà„‡à€Ÿ à€žà„‡à€”à€Ÿ à€Šà„‡à€šà„‡ à€”à€Ÿà€Čà„€ à€•à€‚à€Șà€šà„€"</string>
     <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"à€•à„à€Żà€Ÿ à€†à€Șà€•à„‹ à€źà„‹à€Źà€Ÿà€‡à€Č à€Ąà„‡à€Ÿà€Ÿ, <xliff:g id="CARRIER">%s</xliff:g> à€Șà€° à€”à€Ÿà€Șà€ž à€žà„‡ à€žà„à€”à€żà€š à€•à€°à€šà€Ÿ à€čà„ˆ?"</string>
     <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"à€‰à€Șà€Čà€Źà„à€§ à€čà„‹à€šà„‡ à€Șà€°, à€źà„‹à€Źà€Ÿà€‡à€Č à€Ąà„‡à€Ÿà€Ÿ à€…à€Șà€šà„‡-à€†à€Ș à€žà„à€”à€żà€š à€šà€čà„€à€‚ à€čà„‹à€—à€Ÿ"</string>
-    <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"à€šà€čà„€à€‚, à€°à€čà€šà„‡ à€Šà„‡à€‚"</string>
+    <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"à€žà„à€”à€żà€š à€š à€•à€°à„‡à€‚"</string>
     <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"à€žà„à€”à€żà€š à€•à€°à„‡à€‚"</string>
     <string name="touch_filtered_warning" msgid="8119511393338714836">"à€à€Ș à€•à„€ à€”à€œà€č à€žà„‡ à€źà€‚à€œà€Œà„‚à€°à„€ à€•à„‡ à€…à€šà„à€°à„‹à€§ à€•à„‹ à€žà€źà€à€šà„‡ à€źà„‡à€‚ à€Šà€żà€•à„à€•à€€ à€čà„‹ à€°à€čà„€ à€čà„ˆ, à€‡à€žà€Čà€żà€ à€žà„‡à€Ÿà€żà€‚à€— à€žà„‡ à€†à€Șà€•à„‡ à€œà€”à€Ÿà€Ź à€•à„€ à€Șà„à€·à„à€Ÿà€ż à€šà€čà„€à€‚ à€čà„‹ à€Șà€Ÿ à€°à€čà„€ à€čà„ˆ."</string>
     <string name="slice_permission_title" msgid="3262615140094151017">"<xliff:g id="APP_0">%1$s</xliff:g> à€•à„‹ <xliff:g id="APP_2">%2$s</xliff:g> à€•à„‡ à€čà€żà€žà„à€žà„‡ (à€žà„à€Čà€Ÿà€‡à€ž) à€Šà€żà€–à€Ÿà€šà„‡ à€•à„€ à€źà€‚à€œà€Œà„‚à€°à„€ à€Šà„‡à€‚?"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"à€Șà€žà€‚à€Šà„€à€Šà€Ÿ à€žà„‡ à€čà€Ÿà€Ÿà€à€‚"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"à€‡à€žà„‡ <xliff:g id="NUMBER">%d</xliff:g> à€šà€‚à€Źà€° à€Șà€° à€Čà„‡ à€œà€Ÿà€à€‚"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"à€•à€‚à€Ÿà„à€°à€Ÿà„‡à€Č"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"à€‰à€š à€•à€‚à€Ÿà„à€°à„‹à€Č à€•à„‹ à€šà„à€šà„‡à€‚ à€œà€żà€šà„à€čà„‡à€‚ à€«à€Ÿà€Ÿà€«à€Ÿ à€žà„‡à€Ÿà€żà€‚à€— à€žà„‡ à€à€•à„à€žà„‡à€ž à€•à€°à€šà€Ÿ à€čà„ˆ"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"à€•à€‚à€Ÿà„à€°à„‹à€Č à€•à€Ÿ à€•à„à€°à€ź à€Źà€Šà€Čà€šà„‡ à€•à„‡ à€Čà€żà€ à€‰à€šà„à€čà„‡à€‚ à€Šà€Źà€Ÿà€•à€° à€°à€–à„‡à€‚ à€”à€° à€–à„€à€‚à€šà„‡à€‚"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"à€žà€­à„€ à€•à€‚à€Ÿà„à€°à„‹à€Č à€čà€Ÿà€Ÿ à€Šà€żà€ à€—à€"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"à€Źà€Šà€Čà€Ÿà€” à€žà„‡à€” à€šà€čà„€à€‚ à€•à€żà€ à€—à€"</string>
@@ -1123,13 +1122,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"à€‘à€«à€Œà€żà€ž à€•à„€ à€šà„€à€€à€ż à€•à„‡ à€€à€čà€€, à€”à€°à„à€• à€Șà„à€°à„‹à€«à€Œà€Ÿà€‡à€Č à€čà„‹à€šà„‡ à€Șà€° à€čà„€ à€«à€Œà„‹à€š à€•à„‰à€Č à€•à€żà€ à€œà€Ÿ à€žà€•à€€à„‡ à€čà„ˆà€‚"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"à€”à€°à„à€• à€Șà„à€°à„‹à€«à€Œà€Ÿà€‡à€Č à€Șà€° à€žà„à€”à€żà€š à€•à€°à„‡à€‚"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"à€Źà€‚à€Š à€•à€°à„‡à€‚"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"à€Čà„‰à€• à€žà„à€•à„à€°à„€à€š à€•à„‹ à€•à€žà„à€Ÿà€źà€Ÿà€‡à€œà€Œ à€•à€°à„‡à€‚"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"à€Čà„‰à€• à€žà„à€•à„à€°à„€à€š à€•à„‹ à€Șà€žà€‚à€Š à€•à„‡ à€źà„à€€à€Ÿà€Źà€żà€• à€Źà€šà€Ÿà€šà„‡ à€•à„‡ à€Čà€żà€ à€…à€šà€Čà„‰à€• à€•à€°à„‡à€‚"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"à€”à€Ÿà€ˆ-à€«à€Œà€Ÿà€ˆ à€‰à€Șà€Čà€Źà„à€§ à€šà€čà„€à€‚ à€čà„ˆ"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"à€•à„ˆà€źà€°à„‡ à€•à€Ÿ à€à€•à„à€žà„‡à€ž à€šà€čà„€à€‚ à€čà„ˆ"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"à€•à„ˆà€źà€°à„‡ à€”à€° à€źà€Ÿà€‡à€•à„à€°à„‹à€«à€Œà„‹à€š à€•à€Ÿ à€à€•à„à€žà„‡à€ž à€šà€čà„€à€‚ à€čà„ˆ"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"à€źà€Ÿà€‡à€•à„à€°à„‹à€«à€Œà„‹à€š à€•à€Ÿ à€à€•à„à€žà„‡à€ž à€šà€čà„€à€‚ à€čà„ˆ"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"à€Șà„à€°à€Ÿà€„à€źà€żà€•à€€à€Ÿ à€źà„‹à€Ą à€šà€Ÿà€Čà„‚ à€čà„ˆ"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant à€†à€Șà€•à„€ à€Źà€Ÿà€€à„‡à€‚ à€žà„à€š à€°à€čà„€ à€čà„ˆ"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"à€žà„‡à€Ÿà€żà€‚à€— à€źà„‡à€‚ à€œà€Ÿà€•à€°, à€šà„‹à€Ÿ à€Čà„‡à€šà„‡ à€•à„€ à€žà„à€”à€żà€§à€Ÿ à€Šà„‡à€šà„‡ à€”à€Ÿà€Čà„‡ à€à€Șà„à€Čà€żà€•à„‡à€¶à€š à€•à„‹ à€Ąà€żà€«à€Œà„‰à€Čà„à€Ÿ à€•à„‡ à€€à„Œà€° à€Șà€° à€žà„‡à€Ÿ à€•à€°à„‡à€‚"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 8a13b54..f284bb6 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -99,7 +99,7 @@
     <string name="screenrecord_name" msgid="2596401223859996572">"Snimač zaslona"</string>
     <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Obrada snimanja zaslona"</string>
     <string name="screenrecord_channel_description" msgid="4147077128486138351">"Tekuća obavijest za sesiju snimanja zaslona"</string>
-    <string name="screenrecord_start_label" msgid="1750350278888217473">"Ćœelite li pokrenuti snimanje?"</string>
+    <string name="screenrecord_start_label" msgid="1750350278888217473">"Ćœelite li započeti snimanje?"</string>
     <string name="screenrecord_description" msgid="1123231719680353736">"Za vrijeme snimanja sustav Android moĆŸe snimiti osjetljive podatke koji su vidljivi na vašem zaslonu ili se reproduciraju na vašem uređaju. To uključuje zaporke, podatke o plaćanju, fotografije, poruke i zvuk."</string>
     <string name="screenrecord_option_entire_screen" msgid="1732437834603426934">"Snimi cijeli zaslon"</string>
     <string name="screenrecord_option_single_app" msgid="5954863081500035825">"Snimi jednu aplikaciju"</string>
@@ -384,7 +384,7 @@
     <string name="user_remove_user_remove" msgid="8387386066949061256">"Ukloni"</string>
     <string name="media_projection_dialog_text" msgid="1755705274910034772">"Aplikacija <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> imat će pristup svim podacima koji su vidljivi na vašem zaslonu ili koji se reproduciraju s vašeg uređaja tijekom snimanja ili emitiranja. To uključuje podatke kao što su zaporke, podaci o plaćanju, fotografije, poruke i audiozapisi koje reproducirate."</string>
     <string name="media_projection_dialog_service_text" msgid="958000992162214611">"Usluga koja pruĆŸa ovu funkcionalnost imat će pristup svim podacima koji su vidljivi na vašem zaslonu ili koji se reproduciraju s vašeg uređaja tijekom snimanja ili emitiranja. To uključuje podatke kao što su zaporke, podaci o plaćanju, fotografije, poruke i audiozapisi koje reproducirate."</string>
-    <string name="media_projection_dialog_service_title" msgid="2888507074107884040">"Ćœelite li pokrenuti snimanje ili emitiranje?"</string>
+    <string name="media_projection_dialog_service_title" msgid="2888507074107884040">"Ćœelite li započeti snimanje ili emitiranje?"</string>
     <string name="media_projection_dialog_title" msgid="3316063622495360646">"Ćœelite li započeti snimanje ili emitiranje pomoću aplikacije <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>?"</string>
     <string name="media_projection_permission_dialog_title" msgid="7130975432309482596">"Ćœelite li dopustiti aplikaciji <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> da dijeli ili snima?"</string>
     <string name="media_projection_permission_dialog_option_entire_screen" msgid="392086473225692983">"Cijeli zaslon"</string>
@@ -407,7 +407,7 @@
     <string name="notification_section_header_conversations" msgid="821834744538345661">"Razgovori"</string>
     <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Izbriši sve bešumne obavijesti"</string>
     <string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Značajka Ne uznemiravaj pauzirala je Obavijesti"</string>
-    <string name="media_projection_action_text" msgid="3634906766918186440">"Pokreni"</string>
+    <string name="media_projection_action_text" msgid="3634906766918186440">"Započni"</string>
     <string name="empty_shade_text" msgid="8935967157319717412">"Nema obavijesti"</string>
     <string name="no_unseen_notif_text" msgid="395512586119868682">"Nema novih obavijesti"</string>
     <string name="unlock_to_see_notif_text" msgid="7439033907167561227">"Otključajte za starije obavijesti"</string>
@@ -699,7 +699,7 @@
     <string name="right_keycode" msgid="2480715509844798438">"Desni kôd tipke"</string>
     <string name="left_icon" msgid="5036278531966897006">"Lijeva ikona"</string>
     <string name="right_icon" msgid="1103955040645237425">"Desna ikona"</string>
-    <string name="drag_to_add_tiles" msgid="8933270127508303672">"ZadrĆŸite i povucite da biste dodali pločice"</string>
+    <string name="drag_to_add_tiles" msgid="8933270127508303672">"ZadrĆŸite i povucite za dodavanje pločica"</string>
     <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"ZadrĆŸite i povucite da biste premjestili pločice"</string>
     <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Povucite ovdje za uklanjanje"</string>
     <string name="drag_to_remove_disabled" msgid="933046987838658850">"Potrebno je barem <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> pločica"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"uklonili iz favorita"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Premjestite na poloĆŸaj <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrole"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Odaberite kontrole kojima ĆŸelite pristupati putem izbornika Brze postavke"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"ZadrĆŸite i povucite da biste promijenili raspored kontrola"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Sve su kontrole uklonjene"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Promjene nisu spremljene"</string>
@@ -1046,7 +1045,7 @@
     <string name="wifi_wont_autoconnect_for_now" msgid="5782282612749867762">"Wi-Fi se zasad neće automatski povezivati"</string>
     <string name="see_all_networks" msgid="3773666844913168122">"PrikaĆŸi sve"</string>
     <string name="to_switch_networks_disconnect_ethernet" msgid="6698111101156951955">"Da biste se prebacili na drugu mreĆŸu, odspojite Ethernet"</string>
-    <string name="wifi_scan_notify_message" msgid="3753839537448621794">"Radi boljeg doĆŸivljaja na uređaju, aplikacije i usluge i dalje mogu traĆŸiti Wi-Fi mreĆŸe u bilo kojem trenutku, čak i kada je Wi-Fi isključen. To moĆŸete promijeniti u postavkama traĆŸenja Wi-Fija. "<annotation id="link">"Promijenite"</annotation></string>
+    <string name="wifi_scan_notify_message" msgid="3753839537448621794">"Da bi se poboljšao doĆŸivljaj uređaja, aplikacije i usluge i dalje mogu traĆŸiti Wi-Fi mreĆŸe u bilo kojem trenutku, čak i kada je Wi-Fi isključen. To moĆŸete promijeniti u postavkama traĆŸenja Wi-Fija. "<annotation id="link">"Promijeni"</annotation></string>
     <string name="turn_off_airplane_mode" msgid="8425587763226548579">"Isključi način rada u zrakoplovu"</string>
     <string name="qs_tile_request_dialog_text" msgid="3501359944139877694">"<xliff:g id="APPNAME">%1$s</xliff:g> ĆŸeli dodati sljedeću pločicu u Brze postavke"</string>
     <string name="qs_tile_request_dialog_add" msgid="4888460910694986304">"Dodaj pločicu"</string>
@@ -1055,7 +1054,7 @@
     <string name="fgs_manager_footer_label" msgid="8276763570622288231">"{count,plural, =1{# aplikacija je aktivna}one{# aplikacija je aktivna}few{# aplikacije su aktivne}other{# aplikacija je aktivno}}"</string>
     <string name="fgs_dot_content_description" msgid="2865071539464777240">"Nove informacije"</string>
     <string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktivne aplikacije"</string>
-    <string name="fgs_manager_dialog_message" msgid="2670045017200730076">"Ove su aplikacije aktivne i pokrenute čak i kad ih ne koristite. Time se poboljšava njihova funkcionalnost, ali to moĆŸe utjecati na trajanje baterije."</string>
+    <string name="fgs_manager_dialog_message" msgid="2670045017200730076">"Te su aplikacije aktivne i pokrenute čak i kad ih ne koristite. Time se poboljšava njihova funkcionalnost, ali to moĆŸe utjecati na trajanje baterije."</string>
     <string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Zaustavi"</string>
     <string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Zaustavljeno"</string>
     <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Gotovo"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Vaša pravila za poslovne uređaje omogućuju vam upućivanje poziva samo s poslovnog profila"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Prijeđite na poslovni profil"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Zatvori"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Prilagodi zaključavanje zaslona"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi nije dostupan"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera je blokirana"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon je blokiran"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Uključen je prioritetni način rada"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"PaĆŸnja Asistenta je aktivirana"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 4163cb9..3eb5818 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Indítás"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Leállítás"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Egykezes mód"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontraszt"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Normál"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Közepes"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Nagy"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Feloldja az eszközmikrofon letiltását?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Feloldja az eszközkamera letiltását?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Feloldja az eszközkamera és -mikrofon letiltását?"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"eltávolítás a kedvencek közül"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Áthelyezés a következƑ pozícióba: <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"VezérlƑk"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Válassza ki azokat a vezérlƑelemeket, amelyhez hozzá szeretne férni a Gyorsbeállítások között"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Tartsa lenyomva, és húzza a vezérlƑk átrendezéséhez"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Minden vezérlƑ eltávolítva"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"A rendszer nem mentette a módosításokat"</string>
@@ -1046,7 +1049,7 @@
     <string name="wifi_wont_autoconnect_for_now" msgid="5782282612749867762">"A Wi-Fi-re történƑ csatlakozás jelenleg nem automatikus"</string>
     <string name="see_all_networks" msgid="3773666844913168122">"Megtekintés"</string>
     <string name="to_switch_networks_disconnect_ethernet" msgid="6698111101156951955">"Hálózatváltáshoz válassza le az ethernetet"</string>
-    <string name="wifi_scan_notify_message" msgid="3753839537448621794">"Az eszközhasználati élmény javítása érdekében az alkalmazások és a szolgáltatások továbbra is bármikor kereshetnek Wi-Fi-hálózatokat, még akkor is, ha a Wi-Fi ki van kapcsolva. A funkciót a Wi-Fi-keresési beállításoknál módosíthatja. "<annotation id="link">"Módosítás"</annotation></string>
+    <string name="wifi_scan_notify_message" msgid="3753839537448621794">"Az eszközhasználati élmény javítása érdekében az alkalmazások és a szolgáltatások továbbra is bármikor kereshetnek Wi-Fi-hálózatokat, még akkor is, ha a Wi-Fi ki van kapcsolva. A funkciót a „Wi-Fi scanning settings” (Wi-Fi-keresési beállítások) részben módosíthatja. "<annotation id="link">"Módosítás"</annotation></string>
     <string name="turn_off_airplane_mode" msgid="8425587763226548579">"RepülƑs üzemmód kikapcsolása"</string>
     <string name="qs_tile_request_dialog_text" msgid="3501359944139877694">"A(z) <xliff:g id="APPNAME">%1$s</xliff:g> a következƑ mozaikot szeretné hozzáadni a Gyorsbeállításokhoz"</string>
     <string name="qs_tile_request_dialog_add" msgid="4888460910694986304">"Mozaik hozzáadása"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"A munkahelyi házirend csak munkaprofilból kezdeményezett telefonhívásokat engedélyez"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Váltás munkaprofilra"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Bezárás"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Lezárási képernyƑ testreszabása"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Nem áll rendelkezésre Wi-Fi"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera letiltva"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon letiltva"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioritás mód bekapcsolva"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"A Segéd figyel"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index bdfb8b0..9d872c4 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ŐŐŻŐœŐ„ŐŹ"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ԿենգնՄցնՄՏ"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Ő„Ő„ŐŻ Ő±Ő„ŐŒÖ„Ő« ŐŒŐ„ŐȘŐ«ŐŽ"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"ÔżŐžŐ¶ŐżÖ€ŐĄŐœŐż"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"ŐŐžŐŸŐžÖ€ŐĄŐŻŐĄŐ¶"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Ő„Ő«Ő»Ő«Ő¶"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"ÔČŐĄÖ€Ő±Ö€"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Ô±Ö€ŐŁŐ„ŐŹŐĄŐ°ŐĄŐ¶Ő„ŐžŐŹ ŐœŐĄÖ€Ö„Ő« Ő­ŐžŐœŐĄÖƒŐžŐČŐš"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Ô±Ö€ŐŁŐ„ŐŹŐĄŐ°ŐĄŐ¶Ő„ŐžŐŹ ŐœŐĄÖ€Ö„Ő« ŐżŐ„ŐœŐĄŐ­ÖŐ«ŐŻŐš"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Ô±Ö€ŐŁŐ„ŐŹŐĄŐ°ŐĄŐ¶Ő„ŐžŐŹ ŐœŐĄÖ€Ö„Ő« ŐżŐ„ŐœŐĄŐ­ÖŐ«ŐŻŐš և Ő­ŐžŐœŐĄÖƒŐžŐČŐš"</string>
@@ -382,10 +386,10 @@
     <string name="user_remove_user_title" msgid="9124124694835811874">"Ő€Ő„ŐŒŐĄÖŐ¶Ő„ŐžŐŹ Ö…ŐŁŐżŐĄŐżŐ«Ö€ŐžŐ»Őš:"</string>
     <string name="user_remove_user_message" msgid="6702834122128031833">"Ô±Ő”Őœ Ö…ŐŁŐżŐĄŐżŐ«Ö€ŐžŐ» ձվլվր Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ¶Ő„Ö€Ő¶ վւ ŐżŐŸŐ”ŐĄŐŹŐ¶Ő„Ö€Őš ŐŻŐ»Ő¶Ő»ŐŸŐ„Ő¶:"</string>
     <string name="user_remove_user_remove" msgid="8387386066949061256">"Ő€Ő„ŐŒŐĄÖŐ¶Ő„ŐŹ"</string>
-    <string name="media_projection_dialog_text" msgid="1755705274910034772">"ŐŐ„ŐœŐĄŐŁÖ€ŐŽŐĄŐ¶ և Ő°Ő„ŐŒŐĄÖ€Ő±ŐĄŐŻŐŽŐĄŐ¶ ՚նթեցք՞ւՎ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ«Ő¶ Ő°ŐĄŐœŐĄŐ¶Ő„ŐŹŐ« ŐŻŐŹŐ«Ő¶Ő„Ő¶ Ő±Ő„Ö€ ŐœŐĄÖ€Ö„Ő« Ő§ŐŻÖ€ŐĄŐ¶Ő«Ő¶ ÖŐžÖ‚ÖŐĄŐ€Ö€ŐŸŐžŐČ ŐżŐ„ŐČŐ„ŐŻŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€Őš և Ő±Ő„Ö€ ŐœŐĄÖ€Ö„ŐžŐŸ Ő¶ŐŸŐĄŐŁŐĄÖ€ŐŻŐŸŐžŐČ Ő¶Ő”ŐžÖ‚Ő©Ő„Ö€ŐšÖ‰ Սա Ő¶Ő„Ö€ŐĄŐŒŐžÖ‚ŐŽ Ő§ ŐĄŐ”Ő¶ŐșŐ«ŐœŐ« ŐżŐ„ŐČŐ„ŐŻŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€, Ő«Ő¶ŐčŐșŐ«ŐœŐ«Ö„ Ő„Ő¶, Ö…Ö€Ő«Ő¶ŐĄŐŻ, ŐŁŐĄŐČŐżŐ¶ŐĄŐąŐĄŐŒŐ„Ö€Őš, ŐŸŐłŐĄÖ€ŐĄŐ”Ő«Ő¶ ŐżŐŸŐ”ŐĄŐŹŐ¶Ő„Ö€Őš, ŐŹŐžÖ‚ŐœŐĄŐ¶ŐŻŐĄÖ€Ő¶Ő„Ö€Őš, Ő°ŐĄŐČŐžÖ€Ő€ŐĄŐŁÖ€ŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€Őš և Ő¶ŐŸŐĄŐŁŐĄÖ€ŐŻŐŸŐžŐČ ŐĄŐžÖ‚Ő€Ő«Őž Ö†ŐĄŐ”ŐŹŐ„Ö€ŐšÖ‰"</string>
-    <string name="media_projection_dialog_service_text" msgid="958000992162214611">"ŐŐ„ŐœŐĄŐŁÖ€ŐŽŐĄŐ¶ և Ő°Ő„ŐŒŐĄÖ€Ő±ŐĄŐŻŐŽŐĄŐ¶ ՚նթեցք՞ւՎ ŐźŐĄŐŒŐĄŐ”ŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€Ő« ŐŽŐĄŐżŐĄŐŻŐĄÖ€ŐĄÖ€Ő«Ő¶ Ő°ŐĄŐœŐĄŐ¶Ő„ŐŹŐ« ŐŻŐŹŐ«Ő¶Ő„Ő¶ Ő±Ő„Ö€ ŐœŐĄÖ€Ö„Ő« Ő§ŐŻÖ€ŐĄŐ¶Ő«Ő¶ ÖŐžÖ‚ÖŐĄŐ€Ö€ŐŸŐžŐČ ŐżŐ„ŐČŐ„ŐŻŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€Őš և Ő±Ő„Ö€ ŐœŐĄÖ€Ö„ŐžŐŸ Ő¶ŐŸŐĄŐŁŐĄÖ€ŐŻŐŸŐžŐČ Ő¶Ő”ŐžÖ‚Ő©Ő„Ö€ŐšÖ‰ Սա Ő¶Ő„Ö€ŐĄŐŒŐžÖ‚ŐŽ Ő§ ŐĄŐ”Ő¶ŐșŐ«ŐœŐ« ŐżŐ„ŐČŐ„ŐŻŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€, Ő«Ő¶ŐčŐșŐ«ŐœŐ«Ö„ Ő„Ő¶, Ö…Ö€Ő«Ő¶ŐĄŐŻ, ŐŁŐĄŐČŐżŐ¶ŐĄŐąŐĄŐŒŐ„Ö€Őš, ŐŸŐłŐĄÖ€ŐĄŐ”Ő«Ő¶ ŐżŐŸŐ”ŐĄŐŹŐ¶Ő„Ö€Őš, ŐŹŐžÖ‚ŐœŐĄŐ¶ŐŻŐĄÖ€Ő¶Ő„Ö€Őš, Ő°ŐĄŐČŐžÖ€Ő€ŐĄŐŁÖ€ŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€Őš և Ő¶ŐŸŐĄŐŁŐĄÖ€ŐŻŐŸŐžŐČ ŐĄŐžÖ‚Ő€Ő«Őž Ö†ŐĄŐ”ŐŹŐ„Ö€ŐšÖ‰"</string>
-    <string name="media_projection_dialog_service_title" msgid="2888507074107884040">"ŐŐŻŐœŐ„ŐžŐŹ ŐżŐ„ŐœŐĄŐŁÖ€ŐžÖ‚ŐŽŐš ŐŻŐĄŐŽ Ő°Ő„ŐŒŐĄÖ€Ő±ŐĄŐŻŐžÖ‚ŐŽŐš"</string>
-    <string name="media_projection_dialog_title" msgid="3316063622495360646">"ŐŐŻŐœŐ„ŐžŐŹ ŐżŐ„ŐœŐĄŐŁÖ€ŐžÖ‚ŐŽŐš ŐŻŐĄŐŽ Ő°Ő„ŐŒŐĄÖ€Ő±ŐĄŐŻŐžÖ‚ŐŽŐš <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐžŐŸ"</string>
+    <string name="media_projection_dialog_text" msgid="1755705274910034772">"ՁեՔնեգրՎեն և Ő°Ő„ŐŒŐĄÖ€Ő±ŐĄŐŻŐŽŐĄŐ¶ ՚նթեցք՞ւՎ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ«Ő¶ Ő°ŐĄŐœŐĄŐ¶Ő„ŐŹŐ« ŐŻŐŹŐ«Ő¶Ő„Ő¶ Ő±Ő„Ö€ ŐœŐĄÖ€Ö„Ő« Ő§ŐŻÖ€ŐĄŐ¶Ő«Ő¶ ÖŐžÖ‚ÖŐĄŐ€Ö€ŐŸŐžŐČ ŐżŐ„ŐČŐ„ŐŻŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€Őš և Ő±Ő„Ö€ ŐœŐĄÖ€Ö„ŐžŐŸ Ő¶ŐŸŐĄŐŁŐĄÖ€ŐŻŐŸŐžŐČ Ő¶Ő”ŐžÖ‚Ő©Ő„Ö€ŐšÖ‰ Սա Ő¶Ő„Ö€ŐĄŐŒŐžÖ‚ŐŽ Ő§ ŐĄŐ”Ő¶ŐșŐ«ŐœŐ« ŐżŐ„ŐČŐ„ŐŻŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€, Ő«Ő¶ŐčŐșŐ«ŐœŐ«Ö„ Ő„Ő¶, Ö…Ö€Ő«Ő¶ŐĄŐŻ, ŐŁŐĄŐČŐżŐ¶ŐĄŐąŐĄŐŒŐ„Ö€Őš, ŐŸŐłŐĄÖ€ŐĄŐ”Ő«Ő¶ ŐżŐŸŐ”ŐĄŐŹŐ¶Ő„Ö€Őš, ŐŹŐžÖ‚ŐœŐĄŐ¶ŐŻŐĄÖ€Ő¶Ő„Ö€Őš, Ő°ŐĄŐČŐžÖ€Ő€ŐĄŐŁÖ€ŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€Őš և Ő¶ŐŸŐĄŐŁŐĄÖ€ŐŻŐŸŐžŐČ ŐĄŐžÖ‚Ő€Ő«Őž Ö†ŐĄŐ”ŐŹŐ„Ö€ŐšÖ‰"</string>
+    <string name="media_projection_dialog_service_text" msgid="958000992162214611">"ՁեՔնեգրՎեն և Ő°Ő„ŐŒŐĄÖ€Ő±ŐĄŐŻŐŽŐĄŐ¶ ՚նթեցք՞ւՎ ŐźŐĄŐŒŐĄŐ”ŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€Ő« ŐŽŐĄŐżŐĄŐŻŐĄÖ€ŐĄÖ€Ő«Ő¶ Ő°ŐĄŐœŐĄŐ¶Ő„ŐŹŐ« ŐŻŐŹŐ«Ő¶Ő„Ő¶ Ő±Ő„Ö€ ŐœŐĄÖ€Ö„Ő« Ő§ŐŻÖ€ŐĄŐ¶Ő«Ő¶ ÖŐžÖ‚ÖŐĄŐ€Ö€ŐŸŐžŐČ ŐżŐ„ŐČŐ„ŐŻŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€Őš և Ő±Ő„Ö€ ŐœŐĄÖ€Ö„ŐžŐŸ Ő¶ŐŸŐĄŐŁŐĄÖ€ŐŻŐŸŐžŐČ Ő¶Ő”ŐžÖ‚Ő©Ő„Ö€ŐšÖ‰ Սա Ő¶Ő„Ö€ŐĄŐŒŐžÖ‚ŐŽ Ő§ ŐĄŐ”Ő¶ŐșŐ«ŐœŐ« ŐżŐ„ŐČŐ„ŐŻŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€, Ő«Ő¶ŐčŐșŐ«ŐœŐ«Ö„ Ő„Ő¶, Ö…Ö€Ő«Ő¶ŐĄŐŻ, ŐŁŐĄŐČŐżŐ¶ŐĄŐąŐĄŐŒŐ„Ö€Őš, ŐŸŐłŐĄÖ€ŐĄŐ”Ő«Ő¶ ŐżŐŸŐ”ŐĄŐŹŐ¶Ő„Ö€Őš, ŐŹŐžÖ‚ŐœŐĄŐ¶ŐŻŐĄÖ€Ő¶Ő„Ö€Őš, Ő°ŐĄŐČŐžÖ€Ő€ŐĄŐŁÖ€ŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€Őš և Ő¶ŐŸŐĄŐŁŐĄÖ€ŐŻŐŸŐžŐČ ŐĄŐžÖ‚Ő€Ő«Őž Ö†ŐĄŐ”ŐŹŐ„Ö€ŐšÖ‰"</string>
+    <string name="media_projection_dialog_service_title" msgid="2888507074107884040">"ŐŐŻŐœŐ„ŐžŐŹ Ő±ŐĄŐ”Ő¶ŐĄŐŁÖ€ŐžÖ‚ŐŽŐš ŐŻŐĄŐŽ Ő°Ő„ŐŒŐĄÖ€Ő±ŐĄŐŻŐžÖ‚ŐŽŐš"</string>
+    <string name="media_projection_dialog_title" msgid="3316063622495360646">"ŐŐŻŐœŐ„ŐžŐŹ Ő±ŐĄŐ”Ő¶ŐĄŐŁÖ€ŐžÖ‚ŐŽŐš ŐŻŐĄŐŽ Ő°Ő„ŐŒŐĄÖ€Ő±ŐĄŐŻŐžÖ‚ŐŽŐš <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐžŐŸ"</string>
     <string name="media_projection_permission_dialog_title" msgid="7130975432309482596">"ÔčŐžÖ‚Ő”ŐŹŐĄŐżÖ€Ő„ŐžŐŹ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ«Ő¶ ց՞ւցեՀրՄՏ ŐŻŐĄŐŽ ŐżŐ„ŐœŐĄŐŁÖ€Ő„ŐŹ Ő§ŐŻÖ€ŐĄŐ¶Őš"</string>
     <string name="media_projection_permission_dialog_option_entire_screen" msgid="392086473225692983">"Ô±ŐŽŐąŐžŐČŐ» Ő§ŐŻÖ€ŐĄŐ¶Őš"</string>
     <string name="media_projection_permission_dialog_option_single_app" msgid="1591110238124910521">"Ő„Ő„ŐŻ Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐź"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"՚նտրեն՞ւց Ő°Ő„ŐŒŐĄÖŐ¶Ő„ŐŹŐžÖ‚ հածար"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"ŐŐ„ŐČեփ՞խՄՏ Ő€Ő«Ö€Ö„ <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"ÔżŐĄŐŒŐĄŐŸŐĄÖ€ŐŽŐĄŐ¶ ŐżŐĄÖ€Ö€Ő„Ö€"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ÔžŐ¶ŐżÖ€Ő„Ö„ ŐŻŐĄŐŒŐĄŐŸŐĄÖ€ŐŽŐĄŐ¶ ŐżŐĄÖ€Ö€Ő„Ö€Őš, ŐžÖ€ŐžŐ¶Ö„ ŐșŐ„ŐżÖ„ Ő§ Ő°ŐĄŐœŐĄŐ¶Ő„ŐŹŐ« ŐŹŐ«Ő¶Ő„Ő¶ Ô±Ö€ŐĄŐŁ ŐŻŐĄÖ€ŐŁŐĄŐŸŐžÖ€ŐžÖ‚ŐŽŐ¶Ő„Ö€ŐžÖ‚ŐŽ"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"ŐŠŐĄŐ°Ő„Ö„ և Ö„ŐĄŐ·Ő„Ö„Ő ŐŻŐĄŐŒŐĄŐŸŐĄÖ€ŐŽŐĄŐ¶ ŐżŐĄÖ€Ö€Ő„Ö€Őš ŐŸŐ„Ö€ŐĄŐ€ŐĄŐœŐĄŐŸŐžÖ€Ő„ŐŹŐžÖ‚ հածար"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"ÔżŐĄŐŒŐĄŐŸŐĄÖ€ŐŽŐĄŐ¶ ձվլվր ŐżŐĄÖ€Ö€Ő„Ö€Őš Ő°Ő„ŐŒŐĄÖŐŸŐ„ÖŐ«Ő¶"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Ő“ŐžÖƒŐžŐ­ŐžÖ‚Ő©Ő”ŐžÖ‚Ő¶Ő¶Ő„Ö€Őš ŐčŐ„Ő¶ ŐșŐĄŐ°ŐŸŐ„ŐŹ"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"ՁՄր ŐĄŐ·Ő­ŐĄŐżŐĄŐ¶Ö„ŐĄŐ”Ő«Ő¶ ŐŻŐĄŐ¶ŐžŐ¶Ő¶Ő„Ö€Ő« Ő°ŐĄŐŽŐĄŐ±ŐĄŐ”Ő¶Ő Ő€ŐžÖ‚Ö„ կարվŐČ Ő„Ö„ ŐŠŐĄŐ¶ŐŁŐ„Ö€ ŐŻŐĄŐżŐĄÖ€Ő„ŐŹ ŐĄŐ·Ő­ŐĄŐżŐĄŐ¶Ö„ŐĄŐ”Ő«Ő¶ Őșր՞ֆիՏից"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"ԱնցնՄՏ ŐĄŐ·Ő­ŐĄŐżŐĄŐ¶Ö„ŐĄŐ”Ő«Ő¶ ŐșÖ€ŐžÖ†Ő«ŐŹ"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Ő“ŐĄŐŻŐ„ŐŹ"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"ԱնհետեկենեցնՄՏ ŐŻŐžŐČŐșŐ§ŐŻÖ€ŐĄŐ¶Őš"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi ցենց Ő°ŐĄŐœŐĄŐ¶Ő„ŐŹŐ« ŐčŐ§"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ŐŐ„ŐœŐĄŐ­ÖŐ«ŐŻŐ¶ ŐĄÖ€ŐŁŐ„ŐŹŐĄÖƒŐĄŐŻŐŸŐĄŐź Ő§"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"ÔœŐžŐœŐĄÖƒŐžŐČŐ¶ ŐĄÖ€ŐŁŐ„ŐŹŐĄÖƒŐĄŐŻŐŸŐĄŐź Ő§"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Ô±ŐŒŐĄŐ»Ő¶ŐĄŐ°Ő„Ö€Ő©ŐžÖ‚Ő©Ő”ŐĄŐ¶ ŐŒŐ„ŐȘŐ«ŐŽŐš ŐŽŐ«ŐĄÖŐŸŐĄŐź Ő§"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Ő•ŐŁŐ¶ŐĄŐŻŐĄŐ¶Őš ŐŹŐœŐžÖ‚ŐŽ Ő§"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index ce3e7e3..334cb90 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Mulai"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Berhenti"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Mode satu tangan"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontras"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standar"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Sedang"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Tinggi"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Berhenti memblokir mikrofon perangkat?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Berhenti memblokir kamera perangkat?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Berhenti memblokir kamera dan mikrofon perangkat?"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"batal favoritkan"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Pindah ke posisi <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrol"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Pilih kontrol untuk diakses dari Setelan Cepat"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Tahan &amp; tarik untuk menata ulang kontrol"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Semua kontrol dihapus"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Perubahan tidak disimpan"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Kebijakan kantor mengizinkan Anda melakukan panggilan telepon hanya dari profil kerja"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Beralih ke profil kerja"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Tutup"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Sesuaikan layar kunci"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi tidak tersedia"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera diblokir"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon diblokir"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Mode prioritas diaktifkan"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Asisten sedang memerhatikan"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index 0f29c29..e85621e 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -100,7 +100,7 @@
     <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Vinnur úr skjáupptöku"</string>
     <string name="screenrecord_channel_description" msgid="4147077128486138351">"Áframhaldandi tilkynning fyrir skjáupptökulotu"</string>
     <string name="screenrecord_start_label" msgid="1750350278888217473">"Hefja upptöku?"</string>
-    <string name="screenrecord_description" msgid="1123231719680353736">"Á meðan tekið er upp getur Android-kerfið fangað viðkvæmar upplýsingar sem sjást á skjánum eða spilast í tækinu, þar á meðal aðgangsorð, greiðsluupplýsingar, myndir, skilaboð og hljóð."</string>
+    <string name="screenrecord_description" msgid="1123231719680353736">"Á meðan tekið er upp getur Android kerfið fangað viðkvæmar upplýsingar sem sjást á skjánum eða spilast í tækinu. Þar á meðal eru upplýsingar á borð við aðgangsorð, greiðsluupplýsingar, myndir, skilaboð og hljóð."</string>
     <string name="screenrecord_option_entire_screen" msgid="1732437834603426934">"Taka upp allan skjáinn"</string>
     <string name="screenrecord_option_single_app" msgid="5954863081500035825">"Taka upp eitt forrit"</string>
     <string name="screenrecord_warning_entire_screen" msgid="8141407178104195610">"Þegar þú tekur upp hefur Android aðgang að öllu sem sést á skjánum eða spilast í tækinu. Passaðu því upp á aðgangsorð, greiðsluupplýsingar, skilaboð eða aðrar viðkvæmar upplýsingar."</string>
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Hefja"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stöðva"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Einhent stilling"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Birtuskil"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Staðlað"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Miðlungs"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Mikið"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Opna fyrir hljóðnema tækisins?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Opna fyrir myndavél tækisins?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Opna fyrir myndavél og hljóðnema tækisins?"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"fjarlægja úr eftirlæti"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Færa í stöðu <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Stýringar"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Veldu stýringar til að opna með flýtistillingum"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Haltu og dragðu til að endurraða stýringum"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Allar stýringar fjarlægðar"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Breytingar ekki vistaðar"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Vinnureglur gera þér aðeins kleift að hringja símtöl úr vinnusniði"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Skipta yfir í vinnusnið"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Loka"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Sérsníða lásskjá"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi er ekki til staðar"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Lokað fyrir myndavél"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Lokað fyrir hljóðnema"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Kveikt er á forgangsstillingu"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Hjálparinn er að hlusta"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 908a42d..907c6c1 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Inizia"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Interrompi"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modalità a una mano"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Contrasto"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Medio"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Alto"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vuoi sbloccare il microfono del dispositivo?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Vuoi sbloccare la fotocamera del dispositivo?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Vuoi sbloccare la fotocamera e il microfono del dispositivo?"</string>
@@ -792,7 +796,7 @@
     <string name="mobile_data_disable_title" msgid="5366476131671617790">"Disattivare i dati mobili?"</string>
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"Non avrai accesso ai dati o a Internet tramite <xliff:g id="CARRIER">%s</xliff:g>. Internet sarà disponibile soltanto tramite Wi-Fi."</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"il tuo operatore"</string>
-    <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"Vuoi tornare a <xliff:g id="CARRIER">%s</xliff:g>?"</string>
+    <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"Vuoi passare nuovamente all\'operatore <xliff:g id="CARRIER">%s</xliff:g>?"</string>
     <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"I dati mobili non passeranno automaticamente all\'operatore in base alla disponibilità"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"No, grazie"</string>
     <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"Sì, confermo"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"rimuovere l\'elemento dai preferiti"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Sposta nella posizione <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Controlli"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Scegli i controlli a cui accedere dalle Impostazioni rapide"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Tieni premuto e trascina per riordinare i controlli"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Tutti i controlli sono stati rimossi"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Modifiche non salvate"</string>
@@ -1123,13 +1126,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Le norme di lavoro ti consentono di fare telefonate soltanto dal profilo di lavoro"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Passa al profilo di lavoro"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Chiudi"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Personalizza schermata di blocco"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"Sblocca per personalizzare la schermata di blocco"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi non disponibile"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Videocamera bloccata"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Videocamera e microfono bloccati"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microfono bloccato"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Modalità priorità attivata"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"L\'assistente è attivo"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Imposta l\'app per le note predefinita nelle Impostazioni"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index b632953..044e9ed 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -383,7 +383,7 @@
     <string name="user_remove_user_message" msgid="6702834122128031833">"Ś›Śœ Ś”ŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś•ŚȘ ڕڔڠŚȘŚ•Ś Ś™Ś کڜ Ś”ŚžŚ©ŚȘŚžŚ© ڔږڔ Ś™Ś™ŚžŚ—Ś§Ś•."</string>
     <string name="user_remove_user_remove" msgid="8387386066949061256">"Ś”ŚĄŚšŚ”"</string>
     <string name="media_projection_dialog_text" msgid="1755705274910034772">"‏ŚœŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś™ŚȘ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ŚȘڔڙڔ ڒڙکڔ ŚœŚ›Śœ Ś”ŚžŚ™Ś“Śą Ś”Ś’ŚœŚ•Ś™ Ś‘ŚžŚĄŚš کڜښ Ś•ŚœŚ›Śœ ŚȘŚ•Ś›ŚŸ Ś©ŚžŚ•Ś€ŚąŚœ Ś‘ŚžŚ›Ś©Ś™Śš کڜښ Ś‘Ś–ŚžŚŸ Ś”Ś§ŚœŚ˜Ś” ڐڕ Ś”ŚąŚ‘ŚšŚ” (casting). Ś”ŚžŚ™Ś“Śą ڔږڔ Ś›Ś•ŚœŚœ Ś€ŚšŚ˜Ś™Ś Ś›ŚžŚ• ŚĄŚ™ŚĄŚžŚŚ•ŚȘ, Ś€ŚšŚ˜Ś™ ŚȘŚ©ŚœŚ•Ś, ŚȘŚžŚ•Ś Ś•ŚȘ, Ś”Ś•Ś“ŚąŚ•ŚȘ ڕڐڕړڙڕ Ś©ŚžŚ•Ś©ŚžŚą ŚžŚ”ŚžŚ›Ś©Ś™Śš."</string>
-    <string name="media_projection_dialog_service_text" msgid="958000992162214611">"‏ŚœŚ©Ś™ŚšŚ•ŚȘ Ś©ŚžŚĄŚ€Ś§ ڐŚȘ Ś”Ś€Ś•Ś Ś§ŚŠŚ™Ś” ڔږڕ ŚȘڔڙڔ ڒڙکڔ ŚœŚ›Śœ Ś”ŚžŚ™Ś“Śą Ś©Ś’ŚœŚ•Ś™ Ś‘ŚžŚĄŚš کڜښ ڐڕ ŚžŚ•Ś€ŚąŚœ ŚžŚ”ŚžŚ›Ś©Ś™Śš کڜښ Ś‘Ś–ŚžŚŸ Ś”Ś§ŚœŚ˜Ś” ڐڕ Ś”ŚąŚ‘ŚšŚ” (cast) – Ś›Ś•ŚœŚœ ŚžŚ™Ś“Śą Ś›ŚžŚ• ŚĄŚ™ŚĄŚžŚŚ•ŚȘ, Ś€ŚšŚ˜Ś™ ŚȘŚ©ŚœŚ•Ś, ŚȘŚžŚ•Ś Ś•ŚȘ, Ś”Ś•Ś“ŚąŚ•ŚȘ ڕڐڕړڙڕ Ś©ŚžŚ•Ś©ŚžŚą ŚžŚ”ŚžŚ›Ś©Ś™Śš."</string>
+    <string name="media_projection_dialog_service_text" msgid="958000992162214611">"‏ŚœŚ©Ś™ŚšŚ•ŚȘ Ś©ŚžŚĄŚ€Ś§ ڐŚȘ Ś”Ś€Ś•Ś Ś§ŚŠŚ™Ś” ڔږڕ ŚȘڔڙڔ ڒڙکڔ ŚœŚ›Śœ Ś”Ś€ŚšŚ˜Ś™Ś Ś©Ś’ŚœŚ•Ś™Ś™Ś Ś‘ŚžŚĄŚš کڜښ ڐڕ ŚžŚ•Ś€ŚąŚœŚ™Ś ŚžŚ”ŚžŚ›Ś©Ś™Śš کڜښ Ś‘Ś–ŚžŚŸ Ś”Ś§ŚœŚ˜Ś” ڐڕ Ś”ŚąŚ‘ŚšŚ” (cast) – Ś›Ś•ŚœŚœ Ś€ŚšŚ˜Ś™Ś Ś›ŚžŚ• ŚĄŚ™ŚĄŚžŚŚ•ŚȘ, Ś€ŚšŚ˜Ś™ ŚȘŚ©ŚœŚ•Ś, ŚȘŚžŚ•Ś Ś•ŚȘ, Ś”Ś•Ś“ŚąŚ•ŚȘ ڕڐڕړڙڕ Ś©ŚžŚ•Ś©ŚžŚą ŚžŚ”ŚžŚ›Ś©Ś™Śš."</string>
     <string name="media_projection_dialog_service_title" msgid="2888507074107884040">"‏ŚœŚ”ŚȘŚ—Ś™Śœ ŚœŚ”Ś§ŚœŚ™Ś˜ ڐڕ ŚœŚ”ŚąŚ‘Ś™Śš (cast)?"</string>
     <string name="media_projection_dialog_title" msgid="3316063622495360646">"‏ŚœŚ”ŚȘŚ—Ś™Śœ ŚœŚ”Ś§ŚœŚ™Ś˜ ڐڕ ŚœŚ”ŚąŚ‘Ś™Śš (cast) Ś‘ŚŚžŚŠŚąŚ•ŚȘ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>?"</string>
     <string name="media_projection_permission_dialog_title" msgid="7130975432309482596">"ŚœŚŚ€Ś©Śš ŚœŚŚ€ŚœŚ™Ś§ŚŠŚ™Ś” <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ڜکŚȘŚŁ ڐڕ ŚœŚ”Ś§ŚœŚ™Ś˜?"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ŚœŚ”ŚĄŚ™Śš ŚžŚ”ŚžŚ•ŚąŚ“Ś€Ś™Ś"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Ś”ŚąŚ‘ŚšŚ” ŚœŚžŚ™Ś§Ś•Ś <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Ś€Ś§Ś“Ś™Ś"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ڙک ŚœŚ‘Ś—Ś•Śš Ś€Ś§Ś“Ś™Ś ŚœŚ’Ś™Ś©Ś” ŚžŚ”Ś”Ś’Ś“ŚšŚ•ŚȘ Ś”ŚžŚ”Ś™ŚšŚ•ŚȘ"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"ڙک ŚœŚœŚ—Ś•Ś„ ŚœŚ—Ś™ŚŠŚ” ŚŚšŚ•Ś›Ś” Ś•ŚœŚ’ŚšŚ•Śš ڛړڙ ŚœŚŚšŚ’ŚŸ ŚžŚ—Ś“Ś© ڐŚȘ Ś”Ś€Ś§Ś“Ś™Ś"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Ś›Śœ Ś”Ś€Ś§Ś“Ś™Ś Ś”Ś•ŚĄŚšŚ•"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Ś”Ś©Ś™Ś Ś•Ś™Ś™Ś ڜڐ Ś Ś©ŚžŚšŚ•"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Ś”ŚžŚ“Ś™Ś Ś™Ś•ŚȘ کڜ ŚžŚ§Ś•Ś Ś”ŚąŚ‘Ś•Ś“Ś” ŚžŚŚ€Ś©ŚšŚȘ ڜښ ŚœŚ‘ŚŠŚą کڙڗڕŚȘ Ś˜ŚœŚ€Ś•ŚŸ ŚšŚ§ ŚžŚ€ŚšŚ•Ś€Ś™Śœ Ś”ŚąŚ‘Ś•Ś“Ś”"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"ŚžŚąŚ‘Śš ŚœŚ€ŚšŚ•Ś€Ś™Śœ ŚąŚ‘Ś•Ś“Ś”"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"ŚĄŚ’Ś™ŚšŚ”"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Ś”ŚȘŚŚžŚ” ڐڙکڙŚȘ کڜ ŚžŚĄŚš Ś”Ś ŚąŚ™ŚœŚ”"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"‏Ś”-Wi-Fi ڜڐ Ś–ŚžŚ™ŚŸ"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Ś”ŚžŚŠŚœŚžŚ” Ś—ŚĄŚ•ŚžŚ”"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Ś”ŚžŚ™Ś§ŚšŚ•Ś€Ś•ŚŸ Ś—ŚĄŚ•Ś"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ŚžŚŠŚ‘ \'ŚąŚ“Ś™Ś€Ś•ŚȘ\' ŚžŚ•Ś€ŚąŚœ"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"‏Assistant ŚžŚŚ–Ś™Ś Ś”"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 54b989a1..ed7006e 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -246,8 +246,8 @@
     <string name="quick_settings_user_title" msgid="8673045967216204537">"ăƒŠăƒŒă‚¶ăƒŒ"</string>
     <string name="quick_settings_wifi_label" msgid="2879507532983487244">"Wi-Fi"</string>
     <string name="quick_settings_internet_label" msgid="6603068555872455463">"ă‚€ăƒłă‚żăƒŒăƒăƒƒăƒˆ"</string>
-    <string name="quick_settings_networks_available" msgid="1875138606855420438">"ćˆ©ç”šă§ăă‚‹ăƒăƒƒăƒˆăƒŻăƒŒă‚ŻăŒă‚ă‚ŠăŸă™"</string>
-    <string name="quick_settings_networks_unavailable" msgid="1167847013337940082">"ćˆ©ç”šă§ăă‚‹ăƒăƒƒăƒˆăƒŻăƒŒă‚ŻăŒă‚ă‚ŠăŸă›ă‚“"</string>
+    <string name="quick_settings_networks_available" msgid="1875138606855420438">"ăƒăƒƒăƒˆăƒŻăƒŒă‚ŻăŒćˆ©ç”šă§ăăŸă™"</string>
+    <string name="quick_settings_networks_unavailable" msgid="1167847013337940082">"ăƒăƒƒăƒˆăƒŻăƒŒă‚ŻăŻćˆ©ç”šă§ăăŸă›ă‚“"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="483130889414601732">"Wi-FiăƒăƒƒăƒˆăƒŻăƒŒă‚Żă‚’ćˆ©ç”šă§ăăŸă›ă‚“"</string>
     <string name="quick_settings_wifi_secondary_label_transient" msgid="7501659015509357887">"ON ă«ă—ăŠă„ăŸă™…"</string>
     <string name="quick_settings_cast_title" msgid="2279220930629235211">"ç”»éąăźă‚­ăƒŁă‚čト"</string>
@@ -793,7 +793,7 @@
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"<xliff:g id="CARRIER">%s</xliff:g>ă§ăƒ‡ăƒŒă‚żă‚„ă‚€ăƒłă‚żăƒŒăƒăƒƒăƒˆă«ă‚ąă‚Żă‚»ă‚čできăȘくăȘă‚ŠăŸă™ă€‚ă‚€ăƒłă‚żăƒŒăƒăƒƒăƒˆă«ăŻ Wi-Fi ă‹ă‚‰ăźăżæŽ„ç¶šă§ăăŸă™ă€‚"</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"æșćžŻé€šäżĄäŒšç€Ÿ"</string>
     <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"<xliff:g id="CARRIER">%s</xliff:g> ă«æˆ»ă—ăŸă™ă‹ïŒŸ"</string>
-    <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"ćˆ©ç”šćŻèƒœăȘć Žćˆă§ă‚‚ă€ăƒąăƒă‚€ăƒ«ăƒ‡ăƒŒă‚żé€šäżĄă«è‡Șć‹•çš„ă«ćˆ‡ă‚Šæ›żă‚ă‚‹ă“ăšăŻă‚ă‚ŠăŸă›ă‚“"</string>
+    <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"ćˆ©ç”šćŻèƒœăȘć Žćˆă§ă‚‚ă€ăƒąăƒă‚€ăƒ«ăƒ‡ăƒŒă‚żă‚’ćˆ©ç”šă™ă‚‹ă‚ˆă†è‡Șć‹•çš„ă«ćˆ‡ă‚Šæ›żă‚ă‚‹ă“ăšăŻă‚ă‚ŠăŸă›ă‚“"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"ă‚­ăƒŁăƒłă‚»ăƒ«"</string>
     <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"ćˆ‡ă‚Šæ›żăˆă‚‹"</string>
     <string name="touch_filtered_warning" msgid="8119511393338714836">"ケプăƒȘăŒèš±ćŻăƒȘクスă‚čăƒˆă‚’éš ă—ăŠă„ă‚‹ăŸă‚ă€èš­ćźšćŽă§ăƒŠăƒŒă‚¶ăƒŒăźćżœç­”ă‚’çąșèȘă§ăăŸă›ă‚“。"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ăŠæ°—ă«ć…„ă‚Šă‹ă‚‰ć‰Šé™€"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"ăƒă‚žă‚·ăƒ§ăƒł <xliff:g id="NUMBER">%d</xliff:g> に移拕"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"ă‚łăƒłăƒˆăƒ­ăƒŒăƒ«"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ă‚Żă‚€ăƒƒă‚Żèš­ćźšă‹ă‚‰ă‚ąă‚Żă‚»ă‚čă™ă‚‹ă‚łăƒłăƒˆăƒ­ăƒŒăƒ«ă‚’éžæŠžă—ăŠăă ă•ă„"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"ă‚łăƒłăƒˆăƒ­ăƒŒăƒ«ă‚’äžŠăčæ›żăˆă‚‹ă«ăŻé•·æŠŒă—ă—ăŠăƒ‰ăƒ©ăƒƒă‚°ă—ăŸă™"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"すăčăŠăźă‚łăƒłăƒˆăƒ­ăƒŒăƒ«ă‚’ć‰Šé™€ă—ăŸă—ăŸ"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"ć€‰æ›ŽăŒäżć­˜ă•ă‚ŒăŠă„ăŸă›ă‚“"</string>
@@ -1123,13 +1122,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"仕äș‹ç”šăƒăƒȘă‚·ăƒŒă§ăŻă€é€šè©±ăźç™ș俥を仕äș‹ç”šăƒ—ăƒ­ăƒ•ă‚Ąă‚€ăƒ«ă‹ă‚‰ăźăżă«ćˆ¶é™ă§ăăŸă™"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"仕äș‹ç”šăƒ—ăƒ­ăƒ•ă‚Ąă‚€ăƒ«ă«ćˆ‡ă‚Šæ›żăˆă‚‹"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"閉じる"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"ăƒ­ăƒƒă‚Żç”»éąăźă‚«ă‚čă‚żăƒžă‚€ă‚ș"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"ăƒ­ăƒƒă‚Żç”»éąă‚’ă‚«ă‚čă‚żăƒžă‚€ă‚șă™ă‚‹ă«ăŻăƒ­ăƒƒă‚Żă‚’è§Łé™€ă—ăŠăă ă•ă„"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi ăŻćˆ©ç”šă§ăăŸă›ă‚“"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ă‚«ăƒĄăƒ©ăŻăƒ–ăƒ­ăƒƒă‚Żă•ă‚ŒăŠă„ăŸă™"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"ă‚«ăƒĄăƒ©ăšăƒžă‚€ă‚ŻăŻăƒ–ăƒ­ăƒƒă‚Żă•ă‚ŒăŠă„ăŸă™"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"ăƒžă‚€ă‚ŻăŻăƒ–ăƒ­ăƒƒă‚Żă•ă‚ŒăŠă„ăŸă™"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ć„Șć…ˆăƒąăƒŒăƒ‰ăŻ ON です"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"スシă‚čă‚żăƒłăƒˆăŻè”·ć‹•æžˆăżă§ă™"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"[èš­ćźš] ă§ăƒ‡ăƒ•ă‚©ăƒ«ăƒˆăźăƒĄăƒąă‚ąăƒ—ăƒȘă‚’èš­ćźšă—ăŠăă ă•ă„"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index 9d46a75..3e02cae 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"áƒ áƒ©áƒ”áƒŁáƒšáƒ”áƒ‘áƒ˜áƒ“áƒáƒœ ამოჩება"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"გადაჱანა პოზიáƒȘიაზე <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"მართვის საჹუალებები"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"აირჩიეთ მართვის საჹუალებები ქ჏რაჀი პარამეჱრებიდან წვდომისთვის"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"მართვის საჹუალებების გადაწყობა ლეგიძლიათ მათი ჩავლებით გადაჱანით"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"მართვის ყველა საჹუალება ამოიჹალა"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"áƒȘვლილებები არ ჹენაჼულა"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"თჄვენი სამსაჼურის წესები საჹუალებას გაძლევთ, áƒĄáƒáƒąáƒ”áƒšáƒ”áƒ€áƒáƒœáƒ ზარები განაჼორáƒȘიელოთ მჼოლოდ სამსაჼურის პროჀილიდან"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"სამსაჼურის პროჀილზე გადართვა"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"დაჼურვა"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"ჩაკეთილი ეკრანის მორგება"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi მიუწვდომელია"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"კამერა დაბლოკილია"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"მიკროჀონი დაბლოკილია"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"პრიორიჱეჱული რეჟიმი áƒ©áƒáƒ áƒ—áƒŁáƒšáƒ˜áƒ"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"ასისჱენჱის ყურადჩების áƒ€áƒŁáƒœáƒ„áƒȘია áƒ©áƒáƒ áƒ—áƒŁáƒšáƒ˜áƒ"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index 7eb7a93..7479937 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -100,7 +100,7 @@
     <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Đ­ĐșŃ€Đ°Đœ Đ¶Đ°Đ·Ò“Ń‹Ńˆ бДĐčĐœĐ”ŃŃ–Đœ Ó©ÒŁĐŽĐ”Ńƒ"</string>
     <string name="screenrecord_channel_description" msgid="4147077128486138351">"Đ­ĐșŃ€Đ°ĐœĐŽŃ‹ бДĐčĐœĐ”ĐłĐ” Đ¶Đ°Đ·ŃƒĐŽŃ‹ÒŁ Đ°Ò“Ń‹ĐŒĐŽĐ°Ò“Ń‹ Ń…Đ°Đ±Đ°Ń€Đ»Đ°ĐœĐŽŃ‹Ń€ŃƒŃ‹"</string>
     <string name="screenrecord_start_label" msgid="1750350278888217473">"Đ–Đ°Đ·Ńƒ Đ±Đ°ŃŃ‚Đ°Đ»ŃŃ‹Đœ ба?"</string>
-    <string name="screenrecord_description" msgid="1123231719680353736">"Android Đ¶ÒŻĐčДсі эĐșŃ€Đ°ĐœĐŽĐ° ĐșÓ©Ń€ŃĐ”Ń‚Ń–Đ»Đ”Ń‚Ń–Đœ ĐœĐ”ĐŒĐ”ŃĐ” Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ĐŽĐ° ĐŸĐčĐœĐ°Ń‚Ń‹Đ»Đ°Ń‚Ń‹Đœ Ò›Ò±ĐżĐžŃ Đ°Ò›ĐżĐ°Ń€Đ°Ń‚Ń‚Ń‹ жазып Đ°Đ»ŃƒŃ‹ ĐŒÒŻĐŒĐșŃ–Đœ. ĐžĐœĐŽĐ°Đč Đ°Ò›ĐżĐ°Ń€Đ°Ń‚Ò›Đ° Ò›Ò±ĐżĐžŃ сөзЎДр, Ń‚Ó©Đ»Đ”ĐŒ Đ°Ò›ĐżĐ°Ń€Đ°Ń‚Ń‹, Ń„ĐŸŃ‚ĐŸŃŃƒŃ€Đ”Ń‚Ń‚Đ”Ń€, хабарлар Đ¶Ó™ĐœĐ” Ўыбыстар жатаЎы."</string>
+    <string name="screenrecord_description" msgid="1123231719680353736">"Android Đ¶ÒŻĐčДсі эĐșŃ€Đ°ĐœĐŽĐ° ĐșÓ©Ń€ŃĐ”Ń‚Ń–Đ»Đ”Ń‚Ń–Đœ ĐœĐ”ĐŒĐ”ŃĐ” Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ĐŽĐ° ĐŸĐčĐœĐ°Ń‚Ń‹Đ»Đ°Ń‚Ń‹Đœ Ò›Ò±ĐżĐžŃ Đ°Ò›ĐżĐ°Ń€Đ°Ń‚Ń‚Ń‹ жазып Đ°Đ»ŃƒŃ‹ ĐŒÒŻĐŒĐșŃ–Đœ. ĐžĐœĐŽĐ°Đč Đ°Ò›ĐżĐ°Ń€Đ°Ń‚Ò›Đ° Ò›Ò±ĐżĐžŃ сөзЎДр, Ń‚Ó©Đ»Đ”ĐŒ Đ°Ò›ĐżĐ°Ń€Đ°Ń‚Ń‹, Ń„ĐŸŃ‚ĐŸŃŃƒŃ€Đ”Ń‚Ń‚Đ”Ń€, хабарлар Đ¶Ó™ĐœĐ” Đ°ŃƒĐŽĐžĐŸ жатаЎы."</string>
     <string name="screenrecord_option_entire_screen" msgid="1732437834603426934">"Đ‘ÒŻĐșŃ–Đ» эĐșŃ€Đ°ĐœĐŽŃ‹ жазу"</string>
     <string name="screenrecord_option_single_app" msgid="5954863081500035825">"Đ–Đ°Đ»Ò“Ń‹Đ· Ò›ĐŸĐ»ĐŽĐ°ĐœĐ±Đ°ĐœŃ‹ жазу"</string>
     <string name="screenrecord_warning_entire_screen" msgid="8141407178104195610">"Đ–Đ°Đ·Ńƒ ĐșĐ”Đ·Ń–ĐœĐŽĐ” Android Đ¶ÒŻĐčДсі эĐșŃ€Đ°ĐœŃ‹ÒŁŃ‹Đ·ĐŽĐ° ĐșÓ©Ń€Ń–ĐœĐ”Ń‚Ń–Đœ ĐœĐ” Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹ÒŁŃ‹Đ·ĐŽĐ° ĐŸĐčĐœĐ°Ń‚Ń‹Đ»Đ°Ń‚Ń‹Đœ Đ±Đ°Ń€Đ»Ń‹Ò› ĐœÓ™Ń€ŃĐ”ĐœŃ– паĐčĐŽĐ°Đ»Đ°ĐœĐ° алаЎы. ĐĄĐŸĐœĐŽŃ‹Ò›Ń‚Đ°Đœ Ò›Ò±ĐżĐžŃ сөзЎДрЎі, Ń‚Ó©Đ»Đ”ĐŒ Ń‚ŃƒŃ€Đ°Đ»Ń‹ ĐŒÓ™Đ»Ń–ĐŒĐ”Ń‚Ń‚Ń–, хабарларЎы ĐœĐ”ĐŒĐ”ŃĐ” Đ±Đ°ŃÒ›Đ° Ò›Ò±ĐżĐžŃ Đ°Ò›ĐżĐ°Ń€Đ°Ń‚Ń‚Ń‹ Đ”ĐœĐłŃ–Đ·Ńƒ ĐșĐ”Đ·Ń–ĐœĐŽĐ” ŃĐ°Ò› Đ±ĐŸĐ»Ń‹ÒŁŃ‹Đ·."</string>
@@ -269,7 +269,7 @@
     <string name="quick_settings_hotspot_secondary_label_transient" msgid="7585604088079160564">"ÒšĐŸŃŃ‹Đ»ŃƒĐŽĐ°…"</string>
     <string name="quick_settings_hotspot_secondary_label_data_saver_enabled" msgid="1280433136266439372">"брафоĐșті ÒŻĐœĐ”ĐŒĐŽĐ”Ńƒ Ń€Đ”Đ¶ĐžĐŒŃ– Ò›ĐŸŃŃƒĐ»Ń‹"</string>
     <string name="quick_settings_hotspot_secondary_label_num_devices" msgid="7536823087501239457">"{count,plural, =1{# Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹}other{# Ò›Ò±Ń€Ń‹Đ»Ò“Ń‹}}"</string>
-    <string name="quick_settings_flashlight_label" msgid="4904634272006284185">"ÒšĐŸĐ»ŃˆĐ°ĐŒ"</string>
+    <string name="quick_settings_flashlight_label" msgid="4904634272006284185">"ÒšĐ°Đ»Ń‚Đ° ŃˆĐ°ĐŒ"</string>
     <string name="quick_settings_flashlight_camera_in_use" msgid="4820591564526512571">"ĐšĐ°ĐŒĐ”Ń€Đ° Ò›ĐŸĐ»ĐŽĐ°ĐœŃ‹Đ»Ń‹Đż жатыр"</string>
     <string name="quick_settings_cellular_detail_title" msgid="792977203299358893">"ĐœĐŸĐ±ĐžĐ»ŃŒĐŽŃ–Đș ĐžĐœŃ‚Đ”Ń€ĐœĐ”Ń‚"</string>
     <string name="quick_settings_cellular_detail_data_usage" msgid="6105969068871138427">"ДДрДĐș ŃˆŃ‹Ò“Ń‹ĐœŃ‹"</string>
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Бастау"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ĐąĐŸÒ›Ń‚Đ°Ń‚Ńƒ"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Бір Ò›ĐŸĐ»ĐŒĐ”Đœ Đ±Đ°ŃÒ›Đ°Ń€Ńƒ Ń€Đ”Đ¶ĐžĐŒŃ–"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"ĐšĐŸĐœŃ‚Ń€Đ°ŃŃ‚"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"ĐĄŃ‚Đ°ĐœĐŽĐ°Ń€Ń‚Ń‚Ń‹ Ń€Đ”Đ¶ĐžĐŒ"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Орташа"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Đ–ĐŸÒ“Đ°Ń€Ń‹"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"ÒšÒ±Ń€Ń‹Đ»Ò“Ń‹ ĐŒĐžĐșŃ€ĐŸŃ„ĐŸĐœŃ‹ĐœŃ‹ÒŁ Đ±Ó©ĐłĐ”ŃƒŃ– Đ°Đ»Ń‹ĐœŃŃ‹Đœ ба?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"ÒšÒ±Ń€Ń‹Đ»Ò“Ń‹ ĐșĐ°ĐŒĐ”Ń€Đ°ŃŃ‹ĐœŃ‹ÒŁ Đ±Ó©ĐłĐ”ŃƒŃ– Đ°Đ»Ń‹ĐœŃŃ‹Đœ ба?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"ÒšÒ±Ń€Ń‹Đ»Ò“Ń‹ ĐșĐ°ĐŒĐ”Ń€Đ°ŃŃ‹ ĐŒĐ”Đœ ĐŒĐžĐșŃ€ĐŸŃ„ĐŸĐœŃ‹ĐœŃ‹ÒŁ Đ±Ó©ĐłĐ”ŃƒŃ– Đ°Đ»Ń‹ĐœŃŃ‹Đœ ба?"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"Ń‚Đ°ÒŁĐŽĐ°ŃƒĐ»Ń‹Đ»Đ°Ń€ĐŽĐ°Đœ алып тастау"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g> ĐżĐŸĐ·ĐžŃ†ĐžŃŃŃ‹ĐœĐ° Đ¶Ń‹Đ»Đ¶Ń‹Ń‚Ńƒ"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Đ‘Đ°ŃÒ›Đ°Ń€Ńƒ ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Ń‚Đ”Ń€Ń–"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"\"Đ–Ń‹Đ»ĐŽĐ°ĐŒ ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ»Đ”Ń€\" ĐŒÓ™Đ·Ń–Ń€Ń–ĐœĐ”Đœ паĐčĐŽĐ°Đ»Đ°ĐœŃƒÒ“Đ° Đ±ĐŸĐ»Đ°Ń‚Ń‹Đœ Đ±Đ°ŃÒ›Đ°Ń€Ńƒ ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Ń‚Đ”Ń€Ń–Đœ Ń‚Đ°ÒŁĐŽĐ°ÒŁŃ‹Đ·."</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Đ‘Đ°ŃÒ›Đ°Ń€Ńƒ ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Ń‚Đ”Ń€Ń–ĐœŃ–ÒŁ Ń€Đ”Ń‚Ń–Đœ Ó©Đ·ĐłĐ”Ń€Ń‚Ńƒ ÒŻŃˆŃ–Đœ ĐŸĐ»Đ°Ń€ĐŽŃ‹ басып Ń‚Ò±Ń€Ń‹Đż ŃÒŻĐčŃ€Đ”ÒŁŃ–Đ·."</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Đ‘Đ°Ń€Đ»Ń‹Ò› Đ±Đ°ŃÒ›Đ°Ń€Ńƒ ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Ń‚Đ”Ń€Ń– Đ¶ĐŸĐčылЎы."</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"ӚзгДрістДр ŃĐ°Ò›Ń‚Đ°Đ»ĐŒĐ°ĐŽŃ‹."</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Đ–Ò±ĐŒŃ‹Ń ŃĐ°ŃŃĐ°Ń‚Ń‹ÒŁŃ‹Đ·Ò“Đ° сәĐčĐșДс тДĐș Đ¶Ò±ĐŒŃ‹Ń ĐżŃ€ĐŸŃ„ĐžĐ»Ń–ĐœĐ”Đœ Ò›ĐŸÒŁŃ‹Ń€Đ°Ńƒ ŃˆĐ°Đ»ŃƒÒ“Đ° Đ±ĐŸĐ»Đ°ĐŽŃ‹."</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Đ–Ò±ĐŒŃ‹Ń ĐżŃ€ĐŸŃ„ĐžĐ»Ń–ĐœĐ” ауысу"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Đ–Đ°Đ±Ńƒ"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"ÒšÒ±Đ»Ń‹Đż эĐșŃ€Đ°ĐœŃ‹Đœ бДĐčŃ–ĐŒĐŽĐ”Ńƒ"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi Ò›ĐŸĐ»Đ¶Đ”Ń‚Ń–ĐŒŃŃ–Đ·."</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ĐšĐ°ĐŒĐ”Ń€Đ° Đ±Ó©ĐłĐ”Đ»ĐłĐ”Đœ."</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"МоĐșŃ€ĐŸŃ„ĐŸĐœ Đ±Ó©ĐłĐ”Đ»ĐłĐ”Đœ."</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"\"ĐœĐ°ÒŁŃ‹Đ·ĐŽŃ‹\" Ń€Đ”Đ¶ĐžĐŒŃ– Ò›ĐŸŃŃƒĐ»Ń‹."</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant Ò›ĐŸŃŃƒĐ»Ń‹."</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index 4eafd98..02a453b 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ដកចេញ​ពើ​សំណព្វ"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"ផ្លាស់ទឞ​ទៅតាំងទឞ <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"ការគ្រប់គ្រង"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ជ្រសសរសសការគ្រប់គ្រង ដសម្បឞចឌលប្រសពឞការកំណត់រហ័ស"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"ចុច​ឱ្យ​ជាប់ ážšážœáž…ážąážŒážŸâ€‹ážŠážŸáž˜áŸ’áž”ážžâ€‹ážšáŸ€áž”áž…áŸ†â€‹áž•áŸ’áž‘áž¶áŸ†áž„áž‚áŸ’ážšáž”áŸ‹áž‚áŸ’ážšáž„â€‹ážĄážŸáž„ážœáž·áž‰"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"áž”áž¶áž“â€‹ážŠáž€áž•áŸ’áž‘áž¶áŸ†áž„áž‚áŸ’ážšáž”áŸ‹áž‚áŸ’ážšáž„áž‘áž¶áŸ†áž„ážąážŸáŸ‹áž ážŸáž™"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"មិនបាន​រក្សាទុក​ការផ្លាស់ប្ដឌរទេ"</string>
@@ -1123,13 +1122,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"áž‚áŸ„áž›áž€áž¶ážšážŽáŸáž€áž¶ážšáž„áž¶ážšážšáž”ážŸáŸ‹ážąáŸ’áž“áž€ážąáž“áž»áž‰áŸ’áž‰áž¶ážáž±áŸ’áž™ážąáŸ’áž“áž€áž’áŸ’ážœážŸáž€áž¶ážšáž áŸ…áž‘ážŒážšážŸáž–áŸ’áž‘áž”áž¶áž“ážáŸ‚áž–ážžáž€áž˜áŸ’ážšáž„áž–áŸážáŸŒáž˜áž¶áž“áž€áž¶ážšáž„áž¶ážšáž”áŸ‰áž»ážŽáŸ’ážŽáŸ„áŸ‡"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"ប្ដឌរ​ទៅ​កម្រង​ព័ត៌មាន​ការងារ"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"បិទ"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"áž”áŸ’ážŠážŒážšážąáŸáž€áŸ’ážšáž„áŸ‹áž…áž¶áž€áŸ‹ážŸáŸ„â€‹ážáž¶áž˜áž”áŸ†ážŽáž„"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"ដោះសោ ážŠážŸáž˜áŸ’áž”ážžáž”áŸ’ážŠážŒážšážąáŸáž€áŸ’ážšáž„áŸ‹áž…áž¶áž€áŸ‹ážŸáŸ„ážáž¶áž˜áž”áŸ†ážŽáž„"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"មិនមាន Wi-Fi ទេ"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"បាន​ទប់ស្កាត់​កាមេរ៉ា"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"បានទប់ស្កាត់​កាមេរ៉ា និង​មឞក្រឌហ្វឌន"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"បាន​ទប់ស្កាត់​មឞក្រឌហ្វឌន"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"áž˜áž»ážáž„áž¶ážšâ€‹ážąáž¶áž‘áž·áž—áž¶áž–ážáŸ’ážšážŒážœáž”áž¶áž“áž”ážŸáž€"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"ភាពប្រុងប្រៀប​របស់ Google Assistant ត្រឌវបានបសក"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"កំណត់កម្មវិធឞកំណត់ចំណាំលំនាំដសមនៅក្នុងការកំណត់"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index b0193f0..40497e9 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"àČźàł†àČšàłàȚàČżàČšàČŠàČČàłàČČàČŠàłàČŠàł"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"àČžàłàČ„àČŸàČš <xliff:g id="NUMBER">%d</xliff:g> àČ•àłàČ•àł† àČžàȰàČżàČžàČż"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"àČšàČżàČŻàȂàČ€àłàȰàČŁàȗàČłàł"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"àČ€àłàČ”àȰàČżàČ€ àČžàł†àČŸàłàȟàČżàȂàČ—àł‍àȗàČłàČżàȂàČŠ àČȘàłàȰàČ”àł‡àȶàČżàČžàČČàł àČšàČżàČŻàȂàČ€àłàȰàČŁàȗàČłàČšàłàČšàł àȆàČŻàłàČ•àł†àČźàČŸàČĄàČż"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"àČšàČżàČŻàȂàČ€àłàȰàČŁàȗàČłàČšàłàČšàł àČźàČ°àłàČčàłŠàȂàČŠàČżàČžàČČàł àČčàł‹àČČàłàČĄàł àČźàČŸàČĄàČż àČźàČ€àłàČ€àł àČĄàłàČ°àłàČŻàČŸàČ—àł‌ àČźàČŸàČĄàČż"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"àȎàČČàłàČČàČŸ àČšàČżàČŻàȂàČ€àłàȰàČŁàȗàČłàČšàłàČšàł àČ€àł†àČ—àł†àČŠàłàČčàČŸàȕàČČàČŸàȗàČżàČŠàł†"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"àČŹàČŠàČČàČŸàČ”àČŁàł†àȗàČłàČšàłàČšàł àȉàČłàČżàČžàČČàČŸàȗàČżàČČàłàČČ"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"àČšàČżàČźàłàČź àČ•àł†àČČàČžàČŠ àČšàł€àČ€àČżàČŻàł àȉàČŠàłàČŻàł‹àȗ àČȘàłàČ°àłŠàČ«àłˆàČČàł‌àČšàČżàȂàČŠ àČźàČŸàČ€àłàȰ àČ«àł‹àČšàł àȕàČ°àł†àȗàČłàČšàłàČšàł àČźàČŸàČĄàČČàł àČšàČżàČźàČ—àł† àȅàČšàłàČźàČ€àČżàČžàłàČ€àłàČ€àČŠàł†"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"àȉàČŠàłàČŻàł‹àȗ àČȘàłàČ°àłŠàČ«àłˆàČČàł‌àČ—àł† àČŹàČŠàČČàČżàČžàČż"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"àČźàłàČšàłàȚàČżàȰàČż"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"àČČàČŸàČ•àł àČžàłàČ•àłàČ°àł€àČšàł àȕàČžàłàȟàČźàłˆàČžàł àČźàČŸàČĄàČż"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"àČ”àłˆ-àČ«àłˆ àČČàČ­àłàČŻàČ”àČżàČČàłàČČ"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"àČ•àłàČŻàČŸàČźàȰàČŸàČ”àČšàłàČšàł àČšàČżàČ°àłàČŹàȂàȧàČżàČžàČČàČŸàȗàČżàČŠàł†"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"àČźàłˆàČ•àłàČ°àł‹àČ«àł‹àČšàł àȅàČšàłàČšàł àČšàČżàČ°àłàČŹàȂàȧàČżàČžàČČàČŸàȗàČżàČŠàł†"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"àȆàČŠàłàČŻàČ€àł†àČŻ àČźàł‹àČĄàł‌ àȆàČšàł‌ àȆàȗàČżàČŠàł†"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant àČšàČżàČźàłàČź àČźàČŸàČ€àČšàłàČšàł àȆàČČàČżàČžàłàČ€àłàČ€àČżàČŠàł†"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 32e27ee..3490542 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -793,8 +793,8 @@
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"<xliff:g id="CARRIER">%s</xliff:g>을(넌) 톔핎 데읎터 또는 읞터넷에 ì•Ąì„žìŠ€í•  수 없êȌ 됩니닀. 읞터넷은 Wi-Fi넌 톔핎서만 ì‚Źìš©í•  수 있슔니닀."</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"ìŽë™í†”ì‹ ì‚Ź"</string>
     <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"닀시 <xliff:g id="CARRIER">%s</xliff:g>(윌)로 전환할êčŒìš”?"</string>
-    <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"ëȘšë°”음 데읎터넌 ì‚Źìš©í•  수 있얎도 ìžë™ìœŒëĄœ 전환되지 않슔니닀"</string>
-    <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"아니요"</string>
+    <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"ëȘšë°”음 데읎터가 가용성에 따띌 ìžë™ìœŒëĄœ 전환하지 않슔니닀."</string>
+    <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"나쀑에"</string>
     <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"예, 전환합니닀"</string>
     <string name="touch_filtered_warning" msgid="8119511393338714836">"앱읎 권한 요ìČ­ì„ ê°€ëŠŹêł  있Ʞ ë•ŒëŹžì— 섀정에서 낮 응닔을 확읞할 수 없슔니닀."</string>
     <string name="slice_permission_title" msgid="3262615140094151017">"<xliff:g id="APP_0">%1$s</xliff:g>에서 <xliff:g id="APP_2">%2$s</xliff:g>의 ìŠŹëŒìŽìŠ€ë„Œ í‘œì‹œí•˜ë„ëĄ 허용하시êČ ìŠ”ë‹ˆêčŒ?"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"슐êČšì°Ÿêž°ì—ì„œ 삭제"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"닀음 위ìč˜ëĄœ 읎동: <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"제얎"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ëč ë„ž 섀정에서 ì•Ąì„žìŠ€í•  ì»šíŠžëĄ€ 선택"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"êžžêȌ ëˆ„ë„Žêł  ë“œëž˜ê·ží•˜ì—Ź ì»šíŠžëĄ€ ìžŹì •ë Ź"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"ëȘšë“  ì»šíŠžëĄ€ 삭제됚"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"변êČœì‚Źí•­ìŽ 저임되지 않음"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"직임 정책읎 직임 í”„ëĄœí•„ì—ì„œë§Œ 전화넌 ê±žë„ëĄ 허용합니닀."</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"직임 프로필로 전환"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"ë‹«êž°"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"잠ꞈ 화멎 맞춀 섀정"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi넌 ì‚Źìš©í•  수 없음"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ìčŽë©”띌 찚닚됚"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"ë§ˆìŽíŹ 찚닚됚"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"우선순위 ëȘšë“œ 섀정됚"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"얎시슀턎튞가 대Ʞ 쀑임"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index 6b78db8..23e553c 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -131,7 +131,7 @@
     <string name="accessibility_phone_button" msgid="4256353121703100427">"ĐąĐ”Đ»Đ”Ń„ĐŸĐœ"</string>
     <string name="accessibility_voice_assist_button" msgid="6497706615649754510">"ÒźĐœ Đ¶Đ°Ń€ĐŽĐ°ĐŒŃ‡Ń‹ŃŃ‹"</string>
     <string name="accessibility_wallet_button" msgid="1458258783460555507">"КапчыĐș"</string>
-    <string name="accessibility_qr_code_scanner_button" msgid="7521277927692910795">"QR сĐșĐ°ĐœĐ”Ń€Đž"</string>
+    <string name="accessibility_qr_code_scanner_button" msgid="7521277927692910795">"QR ĐșĐŸĐŽĐŽĐŸŃ€ŃƒĐœŃƒĐœ сĐșĐ°ĐœĐ”Ń€Đž"</string>
     <string name="accessibility_unlock_button" msgid="3613812140816244310">"ĐšŃƒĐ»ĐżŃƒŃŃƒ ачылЎы"</string>
     <string name="accessibility_lock_icon" msgid="661492842417875775">"ĐąÒŻĐ·ĐŒÓ©Đș ĐșŃƒĐ»ĐżŃƒĐ»Đ°ĐœĐŽŃ‹"</string>
     <string name="accessibility_scanning_face" msgid="3093828357921541387">"Đ–ÒŻĐ· сĐșĐ°ĐœĐŽĐ°Đ»ŃƒŃƒĐŽĐ°"</string>
@@ -257,8 +257,8 @@
     <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"Wi-Fi туташĐșĐ°Đœ Đ¶ĐŸĐș"</string>
     <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"ЖарыĐșтыгы"</string>
     <string name="quick_settings_inversion_label" msgid="3501527749494755688">"ĐąÒŻŃŃ‚Ó©Ń€ĐŽÒŻ ĐžĐœĐČĐ”Ń€ŃĐžŃĐ»ĐŸĐŸ"</string>
-    <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"ĐąÒŻŃÒŻĐœ Ń‚ŃƒŃƒŃ€Đ°Đ»ĐŸĐŸ"</string>
-    <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Ароп Ó©Đ»Ń‡Ó©ĐŒÒŻ"</string>
+    <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"ĐąÒŻŃŃ‚Ó©Ń€ĐŽÒŻ Ń‚ŃƒŃƒŃ€Đ°Đ»ĐŸĐŸ"</string>
+    <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"ĐŃ€ĐžĐżŃ‚ĐžĐœ Ó©Đ»Ń‡Ó©ĐŒÒŻ"</string>
     <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"ĐšĐŸĐ»ĐŽĐŸĐœŃƒŃƒŃ‡ŃƒĐ»Đ°Ń€ĐŽŃ‹ тДсĐșÓ©Ó©"</string>
     <string name="quick_settings_done" msgid="2163641301648855793">"Đ‘ÒŻŃ‚Ń‚ÒŻ"</string>
     <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Đ–Đ°Đ±ŃƒŃƒ"</string>
@@ -295,7 +295,7 @@
     <string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
     <string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC Ó©Ń‡ÒŻŃ€ÒŻĐ»ĐłÓ©Đœ"</string>
     <string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC ĐžŃˆŃ‚Đ”Ń‚ĐžĐ»ĐłĐ”Đœ"</string>
-    <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Đ­ĐșŃ€Đ°ĐœĐŽŃ‹ Đ¶Đ°Đ·ĐŽŃ‹Ń€ŃƒŃƒ"</string>
+    <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Đ­ĐșŃ€Đ°ĐœĐŽĐ°Đœ ĐČĐžĐŽĐ”ĐŸ жазЎырып алуу"</string>
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"БаштаЮыĐș"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ĐąĐŸĐșŃ‚ĐŸŃ‚ŃƒŃƒ"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Бор ĐșĐŸĐ» Ń€Đ”Đ¶ĐžĐŒĐž"</string>
@@ -517,7 +517,7 @@
     <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"ĐšĐŸĐ»ĐŽĐŸĐœŃƒŃƒ ÒŻŃ‡ÒŻĐœ ĐșŃƒĐ»ĐżŃƒŃŃƒĐœ Đ°Ń‡Ń‹ÒŁŃ‹Đ·"</string>
     <string name="wallet_error_generic" msgid="257704570182963611">"КыĐčŃ‹Ń‚ĐŒĐ°Đ»Đ°Ń€ĐŽŃ‹ алууЎа Đșата ĐșДттО. Бор Đ°Đ·ĐŽĐ°Đœ ĐșĐžĐčĐžĐœ ĐșаĐčталап ĐșÓ©Ń€ÒŻÒŁÒŻĐ·."</string>
     <string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Đ­ĐșŃ€Đ°ĐœĐŽŃ‹ ĐșŃƒĐ»ĐżŃƒĐ»ĐŸĐŸ ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ»Đ”Ń€Đž"</string>
-    <string name="qr_code_scanner_title" msgid="1938155688725760702">"QR сĐșĐ°ĐœĐ”Ń€Đž"</string>
+    <string name="qr_code_scanner_title" msgid="1938155688725760702">"QR ĐșĐŸĐŽŃƒĐœŃƒĐœ сĐșĐ°ĐœĐ”Ń€Đž"</string>
     <string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"Đ–Đ°ÒŁŃ‹Ń€ŃƒŃƒĐŽĐ°"</string>
     <string name="status_bar_work" msgid="5238641949837091056">"Đ–ŃƒĐŒŃƒŃˆ ĐżŃ€ĐŸŃ„ĐžĐ»Đž"</string>
     <string name="status_bar_airplane" msgid="4848702508684541009">"УчаĐș Ń€Đ”Đ¶ĐžĐŒĐž"</string>
@@ -606,7 +606,7 @@
     <string name="keyboard_key_media_fast_forward" msgid="3572444327046911822">"АлЎыга Ń‚ÒŻŃ€ÒŻÒŻ"</string>
     <string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
     <string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
-    <string name="keyboard_key_forward_del" msgid="5325501825762733459">"ÓšŃ‡ÒŻŃ€ÒŻÒŻ"</string>
+    <string name="keyboard_key_forward_del" msgid="5325501825762733459">"Đ–ĐŸĐș ĐșŃ‹Đ»ŃƒŃƒ"</string>
     <string name="keyboard_key_move_home" msgid="3496502501803911971">"БашĐșы бДт"</string>
     <string name="keyboard_key_move_end" msgid="99190401463834854">"Đ‘ÒŻŃ‚ÒŻŃ€ÒŻÒŻ"</string>
     <string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -795,7 +795,7 @@
     <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"КаĐčра <xliff:g id="CARRIER">%s</xliff:g> баĐčĐ»Đ°ĐœŃ‹Ńˆ ĐŸĐżĐ”Ń€Đ°Ń‚ĐŸŃ€ŃƒĐœĐ° ĐșĐŸŃ‚ĐŸŃ€ŃƒĐ»Đ°ŃŃ‹Đ·Đ±Ń‹?"</string>
     <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"ЖДтĐșОлОĐșŃ‚ÒŻÒŻ Đ±ĐŸĐ»ĐłĐŸĐœĐŽĐŸ ĐŒĐŸĐ±ĐžĐ»ĐŽĐžĐș Đ˜ĐœŃ‚Đ”Ń€ĐœĐ”Ń‚ аĐČŃ‚ĐŸĐŒĐ°Ń‚Ń‚Ń‹Đș Ń‚ÒŻŃ€ĐŽÓ© ĐșĐŸŃ‚ĐŸŃ€ŃƒĐ»Đ±Đ°Đčт"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"Đ–ĐŸĐș, Ń€Đ°Ń…ĐŒĐ°Ń‚"</string>
-    <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"ĐžĐŸĐ±Đ°, ĐșĐŸŃ‚ĐŸŃ€ŃƒĐ»Đ°ĐŒ"</string>
+    <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"ĐžĐŸĐ±Đ°, ĐșĐŸŃ‚ĐŸŃ€ŃƒĐ»ŃƒŃƒ"</string>
     <string name="touch_filtered_warning" msgid="8119511393338714836">"УруĐșсат Đ±Đ”Ń€ÒŻÒŻ ŃŃƒŃ€Đ°ĐŒŃ‹ÒŁŃ‹Đ· ĐșÓ©Ń€ÒŻĐœĐ±Ó©Đč ĐșĐ°Đ»ĐłĐ°ĐœĐŽŃ‹ĐșŃ‚Đ°Đœ, ĐŸĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ»Đ”Ń€ Đ¶ĐŸĐŸĐ±ŃƒÒŁŃƒĐ·ĐŽŃƒ ырастаĐč албаĐč жатат."</string>
     <string name="slice_permission_title" msgid="3262615140094151017">"<xliff:g id="APP_0">%1$s</xliff:g> ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸŃŃƒĐœĐ° <xliff:g id="APP_2">%2$s</xliff:g> ÒŻĐ»ĐłÒŻĐ»Ó©Ń€ÒŻĐœ ĐșÓ©Ń€ŃÓ©Ń‚ÒŻÒŻĐłÓ© уруĐșсат Đ±Đ”Ń€ĐžĐ»ŃĐžĐœĐ±Đž?"</string>
     <string name="slice_permission_text_1" msgid="6675965177075443714">"- <xliff:g id="APP">%1$s</xliff:g> ĐșĐŸĐ»ĐŽĐŸĐœĐŒĐŸŃŃƒĐœŃƒĐœ ĐŒĐ°Đ°Đ»Ń‹ĐŒĐ°Ń‚Ń‹Đœ ĐŸĐșуĐčт"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ŃÒŻĐčÒŻĐșŃ‚ÒŻÒŻĐ»Ó©Ń€ĐŽÓ©Đœ чыгаруу"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g>-ĐżĐŸĐ·ĐžŃ†ĐžŃĐłĐ° Đ¶Ń‹Đ»ĐŽŃ‹Ń€ŃƒŃƒ"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"БашĐșаруу ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Ń‚Đ”Ń€Đž"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Đ«ĐșŃ‡Đ°ĐŒ Đ¶Ó©ĐœĐŽÓ©Ó©Đ»Ó©Ń€ĐŽÓ© жДтĐșОлОĐșŃ‚ÒŻÒŻ Đ±ĐŸĐ»ĐŸ Ń‚ŃƒŃ€ĐłĐ°Đœ башĐșаруу ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Ń‚Đ”Ń€ĐžĐœ Ń‚Đ°ĐœĐŽĐ°ÒŁŃ‹Đ·"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"БашĐșаруу ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Ń‚Đ”Ń€ĐžĐœĐžĐœ ĐžŃ€Đ”Ń‚ĐžĐœ Ó©Đ·ĐłÓ©Ń€Ń‚ÒŻÒŻ ÒŻŃ‡ÒŻĐœ ĐșĐ°Ń€ĐŒĐ°Đż туруп, ŃÒŻĐčŃ€Ó©ÒŁÒŻĐ·"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"БарЮыĐș башĐșаруу ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Ń‚Đ”Ń€Đž Ó©Ń‡ÒŻŃ€ÒŻĐ»ĐŽÒŻ"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"ÓšĐ·ĐłÓ©Ń€Ń‚ÒŻÒŻĐ»Ó©Ń€ саĐșŃ‚Đ°Đ»ĐłĐ°Đœ Đ¶ĐŸĐș"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Đ–ŃƒĐŒŃƒŃˆ ŃĐ°ŃŃĐ°Ń‚Ń‹ÒŁŃ‹Đ·ĐłĐ° ылаĐčыĐș, Đ¶ŃƒĐŒŃƒŃˆ ĐżŃ€ĐŸŃ„ĐžĐ»ĐžĐœĐ”Đœ ĐłĐ°ĐœĐ° Ń‡Đ°Đ»ŃƒŃƒĐ»Đ°Ń€ĐŽŃ‹ атĐșара аласыз"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Đ–ŃƒĐŒŃƒŃˆ ĐżŃ€ĐŸŃ„ĐžĐ»ĐžĐœĐ” ĐșĐŸŃ‚ĐŸŃ€ŃƒĐ»ŃƒŃƒ"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Đ–Đ°Đ±ŃƒŃƒ"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"ĐšŃƒĐ»ĐżŃƒ эĐșŃ€Đ°ĐœŃ‹Đœ Ń‚ŃƒŃƒŃ€Đ°Đ»ĐŸĐŸ"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi жДтĐșОлОĐșŃ‚ÒŻÒŻ ŃĐŒĐ”Ń"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ĐšĐ°ĐŒĐ”Ń€Đ° Đ±Ó©ĐłÓ©Ń‚Ń‚Ó©Đ»ĐŽÒŻ"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"МоĐșŃ€ĐŸŃ„ĐŸĐœ Đ±Ó©ĐłÓ©Ń‚Ń‚Ó©Đ»ĐŽÒŻ"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ĐœĐ°Đ°ĐœĐžĐ»ÒŻÒŻ ŃÒŻĐčĐ»Ó©ŃˆÒŻÒŻĐ»Ó©Ń€ Ń€Đ”Đ¶ĐžĐŒĐž ĐșÒŻĐčÒŻĐș"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Đ–Đ°Ń€ĐŽĐ°ĐŒŃ‡Ń‹ ĐžŃˆŃ‚Đ”Ń‚ĐžĐ»ĐŽĐž"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index 5b01705..9c56eac 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -520,7 +520,7 @@
     <string name="qr_code_scanner_title" msgid="1938155688725760702">"àș•àș»àș§àșȘàș°à»àșàș™àș„àș°àș«àș±àș” QR"</string>
     <string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"àșàșłàș„àș±àș‡àș­àș±àșšà»€àș”àș”"</string>
     <string name="status_bar_work" msgid="5238641949837091056">"​ໂàș›àșŁâ€‹à»„àșŸàș„໌​àșšà»ˆàș­àș™â€‹à»€àșźàș±àș”​àș§àșœàș"</string>
-    <string name="status_bar_airplane" msgid="4848702508684541009">"ໂໝàș”àșąàșč່ໃàș™àșàș»àș™"</string>
+    <string name="status_bar_airplane" msgid="4848702508684541009">"ໂໝàș”ເàșźàș·àș­â€‹àșšàșŽàș™"</string>
     <string name="zen_alarm_warning" msgid="7844303238486849503">"àș—່àșČàș™â€‹àșˆàș°â€‹àșšà»à»ˆâ€‹à»„àș”້​àșàșŽàș™â€‹àșȘàșœàș‡â€‹à»‚àșĄàș‡â€‹àș› <xliff:g id="WHEN">%1$s</xliff:g>"</string>
     <string name="alarm_template" msgid="2234991538018805736">"ເàș§â€‹àș„àșČ <xliff:g id="WHEN">%1$s</xliff:g>"</string>
     <string name="alarm_template_far" msgid="3561752195856839456">"àș§àș±àș™ <xliff:g id="WHEN">%1$s</xliff:g>"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"àșàș»àșà»€àș„àș”àșàș„àșČàșàșàșČàș™àș—àș”່àșĄàș±àș"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"àșà»‰àșČàșà»„àș›àș•àșłà»à»œà»ˆàș‡ <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"àșàșČàș™àș„àș§àșšàș„àșžàșĄ"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ເàș„àș·àș­àșàșàșČàș™àș„àș§àșšàș„àșžàșĄà»€àșžàș·à»ˆàș­à»€àș‚àș»à»‰àșČເàș–àșŽàș‡àșˆàșČàșàșàșČàș™â€‹àș•àș±à»‰àș‡â€‹àș„່àșČ​àș”່àș§àș™"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"àșàș»àș”àș„້àșČàș‡à»„àș§à»‰à»€àșžàș·à»ˆàș­àșˆàș±àș”àșźàșœàș‡àșàșČàș™àș„àș§àșšàș„àșžàșĄàș„àș·àș™à»ƒà»à»ˆ"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"àș„àș¶àșšàșàșČàș™àș„àș§àșšàș„àșžàșĄàș—àș±àș‡à»àș»àș”àș­àș­àșà»àș„້àș§"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"àșšà»à»ˆà»„àș”້àșšàș±àș™àș—àș¶àșàșàșČàș™àș›à»ˆàșœàș™à»àș›àș‡à»„àș§à»‰"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"àș™àș°à»‚àșàșšàșČàșàșšà»ˆàș­àș™à»€àșźàș±àș”àș§àșœàșàș‚àș­àș‡àș—່àșČàș™àș­àș°àș™àșžàșàșČàș”ໃàș«à»‰àș—່àșČàș™à»‚àș—àș„àș°àșȘàș±àșšà»„àș”້àșˆàșČàșà»‚àș›àșŁà»„àșŸàș„໌àșšà»ˆàș­àș™à»€àșźàș±àș”àș§àșœàșà»€àș—àș»à»ˆàșČàș™àș±à»‰àș™"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"àșȘàș°àș«àșŒàș±àșšà»„àș›à»ƒàșŠà»‰à»‚àș›àșŁà»„àșŸàș„໌àșšà»ˆàș­àș™à»€àșźàș±àș”àș§àșœàș"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"àș›àșŽàș”"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"àș›àș±àșšà»àș•່àș‡à»œà»‰àșČàșˆà»àș„àș±àș­àș"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi àșšà»à»ˆàșžà»‰àș­àșĄà»ƒàș«à»‰àș™àșłà»ƒàșŠà»‰"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"àșà»‰àș­àș‡àș–່àșČàșàșźàșčàșšàș–àș·àșàșšàș„àș±àș­àșàșąàșč່"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"ໄàșĄà»‚àș„àșŁà»‚àșŸàș™àș–àș·àșàșšàș„àș±àș­àșàșąàșč່"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ໂໝàș”àș„àș§àșČàșĄàșȘàșłàș„àș±àș™à»€àș›àș”àș”àșąàșč່"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"àșàșČàș™à»€àș­àș”້àș™à»ƒàșŠà»‰àșœàșč້àșŠà»ˆàș§àșà»€àș›àș”àș”àșąàșč່"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index c0de813..3938ae3 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Pradėti"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stabdyti"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Vienos rankos reĆŸimas"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrastas"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Äźprastas"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Vidutinis"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Aukštas"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Panaikinti įrenginio mikrofono blokavimą?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Panaikinti įrenginio fotoaparato blokavimą?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Panaikinti įrenginio fotoaparato ir mikrofono blokavimą?"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"pašalinti iš mėgstamiausiĆł"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Perkelti į <xliff:g id="NUMBER">%d</xliff:g> padėtį"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Valdikliai"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Pasirinkite valdiklius, kad pasiektumėte iš sparčiĆłjĆł nustatymĆł"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Norėdami pertvarkyti valdiklius, vilkite laikydami nuspaudę"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Visi valdikliai pašalinti"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Pakeitimai neišsaugoti"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Pagal jĆ«sĆł darbo politiką galite skambinti telefonu tik iš darbo profilio"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Perjungti ÄŻ darbo profilÄŻ"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"UĆŸdaryti"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"UĆŸrakinimo ekrano tinkinimas"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"„Wi-Fi“ ryšys nepasiekiamas"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Fotoaparatas uĆŸblokuotas"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofonas uĆŸblokuotas"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioriteto reĆŸimas ÄŻjungtas"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Padėjėjas klauso"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 3ec0e20..963744a 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Sākt"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Apturēt"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Vienas rokas reĆŸÄ«ms"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrasts"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standarta"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Vidējs"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Augsts"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vai atbloķēt ierīces mikrofonu?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Vai vēlaties atbloķēt ierīces kameru?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Vai atbloķēt ierīces kameru un mikrofonu?"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"noƆemtu no izlases"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Pārvietot uz <xliff:g id="NUMBER">%d</xliff:g>. pozÄ«ciju"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Vadīklas"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Izvēlieties vadÄ«klas, kam piekÄŒĆ«t no ātrajiem iestatÄ«jumiem."</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Lai pārkārtotu vadīklas, turiet un velciet tās"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Visas vadÄ«klas ir noƆemtas"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"IzmaiƆas nav saglabātas."</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"SaskaƆā ar jĆ«su darba politiku tālruƆa zvanus drÄ«kst veikt tikai no darba profila"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Pārslēgties uz darba profilu"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Aizvērt"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Pielāgot bloķēšanas ekrānu"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi nav pieejams"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera ir bloķēta"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofons ir bloķēts"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioritātes reĆŸÄ«ms ir ieslēgts"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Asistents klausās"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index 09cd589..936552c 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -247,14 +247,14 @@
     <string name="quick_settings_wifi_label" msgid="2879507532983487244">"Wi-Fi"</string>
     <string name="quick_settings_internet_label" msgid="6603068555872455463">"Đ˜ĐœŃ‚Đ”Ń€ĐœĐ”Ń‚"</string>
     <string name="quick_settings_networks_available" msgid="1875138606855420438">"ĐœŃ€Đ”Đ¶ĐžŃ‚Đ” сД ĐŽĐŸŃŃ‚Đ°ĐżĐœĐž"</string>
-    <string name="quick_settings_networks_unavailable" msgid="1167847013337940082">"ĐĐ” сД ĐŽĐŸŃŃ‚Đ°ĐżĐœĐž ĐŒŃ€Đ”Đ¶Đž"</string>
+    <string name="quick_settings_networks_unavailable" msgid="1167847013337940082">"ĐœŃ€Đ”Đ¶ĐžŃ‚Đ” сД ĐœĐ”ĐŽĐŸŃŃ‚Đ°ĐżĐœĐž"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="483130889414601732">"ĐĐ”ĐŒĐ° ĐŽĐŸŃŃ‚Đ°ĐżĐœĐž Wi-Fi ĐŒŃ€Đ”Đ¶Đž"</string>
     <string name="quick_settings_wifi_secondary_label_transient" msgid="7501659015509357887">"ĐĄĐ” ĐČĐșĐ»ŃƒŃ‡ŃƒĐČа…"</string>
-    <string name="quick_settings_cast_title" msgid="2279220930629235211">"Đ•ĐŒĐžŃ‚ŃƒĐČањД Đ”ĐșŃ€Đ°Đœ"</string>
+    <string name="quick_settings_cast_title" msgid="2279220930629235211">"Đ•ĐŒĐžŃ‚ŃƒĐČањД ĐœĐ° Đ”ĐșŃ€Đ°ĐœĐŸŃ‚"</string>
     <string name="quick_settings_casting" msgid="1435880708719268055">"Đ•ĐŒĐžŃ‚ŃƒĐČањД"</string>
     <string name="quick_settings_cast_device_default_name" msgid="6988469571141331700">"ĐĐ”ĐžĐŒĐ”ĐœŃƒĐČĐ°Đœ ŃƒŃ€Đ”ĐŽ"</string>
     <string name="quick_settings_cast_detail_empty_text" msgid="2846282280014617785">"ĐĐ”ĐŒĐ° ĐŽĐŸŃŃ‚Đ°ĐżĐœĐž ŃƒŃ€Đ”ĐŽĐž"</string>
-    <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"ĐĐ”ĐŒĐ° Wi-Fi ĐČрсĐșа"</string>
+    <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"Wi-Fi ĐœĐ” Đ” ĐżĐŸĐČŃ€Đ·Đ°ĐœĐŸ"</string>
     <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"ОсĐČĐ”Ń‚Đ»Đ”ĐœĐŸŃŃ‚"</string>
     <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Đ˜ĐœĐČĐ”Ń€Đ·ĐžŃ˜Đ° ĐœĐ° Đ±ĐŸĐžŃ‚Đ”"</string>
     <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"ĐšĐŸŃ€Đ”Đșцоја ĐœĐ° Đ±ĐŸĐžŃ‚Đ”"</string>
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Đ—Đ°ĐżĐŸŃ‡ĐœĐž"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ĐĄĐŸĐżŃ€Đž"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Đ Đ”Đ¶ĐžĐŒ ŃĐŸ Đ”ĐŽĐœĐ° раĐșа"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"ĐšĐŸĐœŃ‚Ń€Đ°ŃŃ‚"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"ĐĄŃ‚Đ°ĐœĐŽĐ°Ń€ĐŽĐ”Đœ"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"ĐĄŃ€Đ”ĐŽĐ”Đœ"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Đ’ĐžŃĐŸĐș"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Да сД ĐŸĐŽĐ±Đ»ĐŸĐșора ĐżŃ€ĐžŃŃ‚Đ°ĐżĐŸŃ‚ ĐŽĐŸ ĐŒĐžĐșŃ€ĐŸŃ„ĐŸĐœĐŸŃ‚ ĐœĐ° ŃƒŃ€Đ”ĐŽĐŸŃ‚?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Да сД ĐŸĐŽĐ±Đ»ĐŸĐșора ĐżŃ€ĐžŃŃ‚Đ°ĐżĐŸŃ‚ ĐŽĐŸ ĐșĐ°ĐŒĐ”Ń€Đ°Ń‚Đ° ĐœĐ° ŃƒŃ€Đ”ĐŽĐŸŃ‚?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Да сД ĐŸĐŽĐ±Đ»ĐŸĐșора ĐżŃ€ĐžŃŃ‚Đ°ĐżĐŸŃ‚ ĐŽĐŸ ĐșĐ°ĐŒĐ”Ń€Đ°Ń‚Đ° Đž ĐŒĐžĐșŃ€ĐŸŃ„ĐŸĐœĐŸŃ‚ ĐœĐ° ŃƒŃ€Đ”ĐŽĐŸŃ‚?"</string>
@@ -792,7 +796,7 @@
     <string name="mobile_data_disable_title" msgid="5366476131671617790">"Да сД ОсĐșĐ»ŃƒŃ‡Đž ĐŒĐŸĐ±ĐžĐ»ĐœĐžĐŸŃ‚ ĐžĐœŃ‚Đ”Ń€ĐœĐ”Ń‚?"</string>
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"ĐĐ”ĐŒĐ° Ўа ĐžĐŒĐ°Ń‚Đ” простап ĐŽĐŸ ĐżĐŸĐŽĐ°Ń‚ĐŸŃ†ĐžŃ‚Đ” ОлО ĐžĐœŃ‚Đ”Ń€ĐœĐ”Ń‚ĐŸŃ‚ прДĐșу <xliff:g id="CARRIER">%s</xliff:g>. Đ˜ĐœŃ‚Đ”Ń€ĐœĐ”Ń‚ĐŸŃ‚ ŃœĐ” бОЎД ĐŽĐŸŃŃ‚Đ°ĐżĐ”Đœ ŃĐ°ĐŒĐŸ прДĐșу Wi-Fi."</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"ĐČĐ°ŃˆĐžĐŸŃ‚ ĐŸĐżĐ”Ń€Đ°Ń‚ĐŸŃ€"</string>
-    <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"ĐŒĐ” сД ĐČратОтД ĐœĐ° <xliff:g id="CARRIER">%s</xliff:g>?"</string>
+    <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"Да сД прДфрлО ĐœĐ° <xliff:g id="CARRIER">%s</xliff:g>?"</string>
     <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"ĐœĐŸĐ±ĐžĐ»ĐœĐžĐŸŃ‚ ĐžĐœŃ‚Đ”Ń€ĐœĐ”Ń‚ ĐœĐ”ĐŒĐ° аĐČŃ‚ĐŸĐŒĐ°Ń‚ŃĐșĐž Ўа сД прДфрлО ŃĐżĐŸŃ€Đ”ĐŽ ĐŽĐŸŃŃ‚Đ°ĐżĐœĐŸŃŃ‚Đ°"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"ĐĐ”, фала"</string>
     <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"Да, прДфрлО сД"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ĐŸĐ·ĐœĐ°Ń‡ĐžŃ‚Đ” ĐșаĐșĐŸ ĐœĐ”ĐŸĐŒĐžĐ»Đ”ĐœĐ°"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"ĐŸŃ€Đ”ĐŒĐ”ŃŃ‚Đ”Ń‚Đ” ĐœĐ° ĐżĐŸĐ·ĐžŃ†ĐžŃ˜Đ° <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"ĐšĐŸĐœŃ‚Ń€ĐŸĐ»Đž"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Đ˜Đ·Đ±Đ”Ń€Đ”Ń‚Đ” ĐșĐŸĐœŃ‚Ń€ĐŸĐ»Đž ĐŽĐŸ ĐșĐŸĐž ŃœĐ” простапуĐČатД ĐŸĐŽ „БрзОтД ĐżĐŸŃŃ‚Đ°ĐČĐșĐž“"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"ЗаЎржДтД Đž ĐČлДчДтД за Ўа гО ĐżŃ€Đ”ŃƒŃ€Đ”ĐŽĐžŃ‚Đ” ĐșĐŸĐœŃ‚Ń€ĐŸĐ»ĐžŃ‚Đ”"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"ХОтД ĐșĐŸĐœŃ‚Ń€ĐŸĐ»Đž сД ĐŸŃ‚ŃŃ‚Ń€Đ°ĐœĐ”Ń‚Đž"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"ĐŸŃ€ĐŸĐŒĐ”ĐœĐžŃ‚Đ” ĐœĐ” сД Đ·Đ°Ń‡ŃƒĐČĐ°ĐœĐž"</string>
@@ -1047,7 +1050,7 @@
     <string name="see_all_networks" msgid="3773666844913168122">"ПроĐșажО гО сОтД"</string>
     <string name="to_switch_networks_disconnect_ethernet" msgid="6698111101156951955">"За ĐżŃ€ĐŸĐŒĐ”ĐœĐ° ĐœĐ° ĐŒŃ€Đ”Đ¶Đ°Ń‚Đ°, прДĐșĐžĐœĐ”Ń‚Đ” ја ĐČрсĐșата ŃĐŸ Đ”Ń‚Đ”Ń€ĐœĐ”Ń‚ĐŸŃ‚"</string>
     <string name="wifi_scan_notify_message" msgid="3753839537448621794">"За Ўа сД ĐżĐŸĐŽĐŸĐ±Ń€Đž ĐŽĐŸĐ¶ĐžĐČуĐČĐ°ŃšĐ”Ń‚ĐŸ ĐœĐ° ŃƒŃ€Đ”ĐŽĐŸŃ‚, аплОĐșацООтД Đž ŃƒŃĐ»ŃƒĐłĐžŃ‚Đ” ĐŒĐŸĐ¶Đ” сѐ ŃƒŃˆŃ‚Đ” Ўа сĐșĐ”ĐœĐžŃ€Đ°Đ°Ń‚ за Wi‑Fi ĐŒŃ€Đ”Đ¶Đž ĐČĐŸ сДĐșĐŸĐ” ĐČŃ€Đ”ĐŒĐ”, Юуро Đž ĐșĐŸĐłĐ° Wi‑Fi Đ” ОсĐșĐ»ŃƒŃ‡Đ”ĐœĐŸ. ĐœĐŸĐ¶Đ” Ўа ĐłĐŸ ĐżŃ€ĐŸĐŒĐ”ĐœĐžŃ‚Đ” ĐŸĐČа ĐČĐŸ ĐżĐŸŃŃ‚Đ°ĐČĐșОтД за „ĐĄĐșĐ”ĐœĐžŃ€Đ°ŃšĐ” за Wi-Fi“. "<annotation id="link">"ĐŸŃ€ĐŸĐŒĐ”ĐœĐž"</annotation></string>
-    <string name="turn_off_airplane_mode" msgid="8425587763226548579">"ИсĐșĐ»ŃƒŃ‡Đž „АĐČĐžĐŸĐœŃĐșĐž Ń€Đ”Đ¶ĐžĐŒ“"</string>
+    <string name="turn_off_airplane_mode" msgid="8425587763226548579">"ИсĐșĐ»ŃƒŃ‡Đž ĐłĐŸ аĐČĐžĐŸĐœŃĐșĐžĐŸŃ‚ Ń€Đ”Đ¶ĐžĐŒ"</string>
     <string name="qs_tile_request_dialog_text" msgid="3501359944139877694">"<xliff:g id="APPNAME">%1$s</xliff:g> саĐșа Ўа ја ĐŽĐŸĐŽĐ°ĐŽĐ” ŃĐ»Đ”ĐŽĐœĐ°ĐČа ĐżĐ»ĐŸŃ‡Đșа ĐœĐ° „БрзОтД ĐżĐŸŃŃ‚Đ°ĐČĐșĐž“"</string>
     <string name="qs_tile_request_dialog_add" msgid="4888460910694986304">"Đ”ĐŸĐŽĐ°Ń˜Ń‚Đ” ĐżĐ»ĐŸŃ‡Đșа"</string>
     <string name="qs_tile_request_dialog_not_add" msgid="4168716573114067296">"ĐĐ” ĐŽĐŸĐŽĐ°ĐČĐ°Ń˜Ń‚Đ” ĐżĐ»ĐŸŃ‡Đșа"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Đ’Đ°ŃˆĐ”Ń‚ĐŸ Ń€Đ°Đ±ĐŸŃ‚ĐœĐŸ праĐČĐžĐ»ĐŸ ĐČĐž ĐŽĐŸĐ·ĐČĐŸĐ»ŃƒĐČа Ўа упатуĐČатД ĐżĐŸĐČоцо ŃĐ°ĐŒĐŸ ĐŸĐŽ Ń€Đ°Đ±ĐŸŃ‚ĐœĐžĐŸŃ‚ ĐżŃ€ĐŸŃ„ĐžĐ»"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"ĐŸŃ€Đ”Ń„Ń€Đ»Đž сД ĐœĐ° Ń€Đ°Đ±ĐŸŃ‚Đ”Đœ ĐżŃ€ĐŸŃ„ĐžĐ»"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"ЗатĐČĐŸŃ€Đž"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"ĐŸŃ€ĐžŃĐżĐŸŃĐŸĐ±Đ”Ń‚Đ” ĐłĐŸ заĐșĐ»ŃƒŃ‡Đ”ĐœĐžĐŸŃ‚ Đ”ĐșŃ€Đ°Đœ"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi ĐœĐ” Đ” ĐŽĐŸŃŃ‚Đ°ĐżĐœĐŸ"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ĐšĐ°ĐŒĐ”Ń€Đ°Ń‚Đ° Đ” Đ±Đ»ĐŸĐșĐžŃ€Đ°ĐœĐ°"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"МоĐșŃ€ĐŸŃ„ĐŸĐœĐŸŃ‚ Đ” Đ±Đ»ĐŸĐșĐžŃ€Đ°Đœ"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ĐŸŃ€ĐžĐŸŃ€ĐžŃ‚Đ”Ń‚ĐœĐžĐŸŃ‚ Ń€Đ”Đ¶ĐžĐŒ Đ” ĐČĐșĐ»ŃƒŃ‡Đ”Đœ"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Đ’ĐœĐžĐŒĐ°ĐœĐžĐ”Ń‚ĐŸ ĐœĐ° „ĐŸĐŸĐŒĐŸŃˆĐœĐžĐșĐŸŃ‚“ Đ” ĐČĐșĐ»ŃƒŃ‡Đ”ĐœĐŸ"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-mk/tiles_states_strings.xml b/packages/SystemUI/res/values-mk/tiles_states_strings.xml
index 4c302ff..8c4459a 100644
--- a/packages/SystemUI/res/values-mk/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-mk/tiles_states_strings.xml
@@ -88,7 +88,7 @@
   </string-array>
   <string-array name="tile_states_color_correction">
     <item msgid="2840507878437297682">"ĐĐ”ĐŽĐŸŃŃ‚Đ°ĐżĐœĐ°"</item>
-    <item msgid="1909756493418256167">"ИсĐșĐ»ŃƒŃ‡Đ”ĐœĐŸ"</item>
+    <item msgid="1909756493418256167">"ИсĐșĐ»ŃƒŃ‡Đ”ĐœĐ°"</item>
     <item msgid="4531508423703413340">"ВĐșĐ»ŃƒŃ‡Đ”ĐœĐ°"</item>
   </string-array>
   <string-array name="tile_states_inversion">
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index aa61976..bf69050 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"àŽȘà”àŽ°àŽżàŽŻàŽȘà”àŽȘà”†àŽŸà”àŽŸàŽ€àŽČà”àŽČàŽŸàŽ€àŽŸàŽ•à”àŽ•à”àŽ•"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g>-àŽŸàŽ‚ àŽžà”àŽ„àŽŸàŽšàŽ€à”àŽ€à”‡àŽŻà”àŽ•à”àŽ•à” àŽšà”€àŽ•à”àŽ•à”àŽ•"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"àŽšàŽżàŽŻàŽšà”àŽ€à”àŽ°àŽŁàŽ™à”àŽ™à”Ÿ"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"àŽŠà”àŽ°à”àŽ€ àŽ•à”àŽ°àŽźà”€àŽ•àŽ°àŽŁàŽ€à”àŽ€àŽżà”œ àŽšàŽżàŽšà”àŽšà” àŽ†àŽ•à”àŽžàŽžà” àŽšà”†àŽŻà”àŽŻà”‡àŽŁà”àŽŸ àŽšàŽżàŽŻàŽšà”àŽ€à”àŽ°àŽŁàŽ™à”àŽ™à”Ÿ àŽ€àŽżàŽ°àŽžà”àŽžà”†àŽŸà”àŽ•à”àŽ•à”àŽ•"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"àŽšàŽżàŽŻàŽšà”àŽ€à”àŽ°àŽŁàŽ™à”àŽ™à”Ÿ àŽȘà”àŽšàŽƒàŽ•à”àŽ°àŽźà”€àŽ•àŽ°àŽżàŽ•à”àŽ•àŽŸà”» àŽ…àŽźà”ŒàŽ€à”àŽ€àŽżàŽȘà”àŽȘàŽżàŽŸàŽżàŽšà”àŽšà” àŽ”àŽČàŽżàŽšà”àŽšàŽżàŽŸà”àŽ•"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"àŽŽàŽČà”àŽČàŽŸ àŽšàŽżàŽŻàŽšà”àŽ€à”àŽ°àŽŁàŽ™à”àŽ™àŽłà”àŽ‚ àŽšà”€àŽ•à”àŽ•àŽ‚ àŽšà”†àŽŻà”àŽ€à”"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"àŽźàŽŸàŽ±à”àŽ±àŽ™à”àŽ™à”Ÿ àŽžàŽ‚àŽ°àŽ•à”àŽ·àŽżàŽšà”àŽšàŽżàŽŸà”àŽŸàŽżàŽČà”àŽČ"</string>
@@ -1123,13 +1122,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"àŽ”àŽŠà”àŽŻà”‹àŽ—àŽżàŽ• àŽȘà”àŽ°à”ŠàŽ«à”ˆàŽČàŽżà”œ àŽšàŽżàŽšà”àŽšà” àŽźàŽŸàŽ€à”àŽ°àŽ‚ àŽ«à”‹à”ș àŽ•à”‹àŽłà”àŽ•à”Ÿ àŽšà”†àŽŻà”àŽŻàŽŸàŽšàŽŸàŽŁà” àŽšàŽżàŽ™à”àŽ™àŽłà”àŽŸà”† àŽ”àŽŠà”àŽŻà”‹àŽ—àŽżàŽ• àŽšàŽŻàŽ‚ àŽ…àŽšà”àŽ”àŽŠàŽżàŽ•à”àŽ•à”àŽšà”àŽšàŽ€à”"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"àŽ”àŽŠà”àŽŻà”‹àŽ—àŽżàŽ• àŽȘà”àŽ°à”ŠàŽ«à”ˆàŽČàŽżàŽČà”‡àŽ•à”àŽ•à” àŽźàŽŸàŽ±à”àŽ•"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"àŽ…àŽŸàŽŻà”àŽ•à”àŽ•à”àŽ•"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"àŽČà”‹àŽ•à”àŽ•à” àŽžà”‌àŽ•à”àŽ°à”€à”» àŽ‡àŽ·à”àŽŸàŽŸàŽšà”àŽžà”ƒàŽ€àŽźàŽŸàŽ•à”àŽ•à”‚"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"àŽČà”‹àŽ•à”àŽ•à” àŽžà”àŽ•à”àŽ°à”€à”» àŽ‡àŽ·à”àŽŸàŽŸàŽšà”àŽžà”ƒàŽ€àŽźàŽŸàŽ•à”àŽ•àŽŸà”» àŽ…à”șàŽČà”‹àŽ•à”àŽ•à” àŽšà”†àŽŻà”àŽŻà”àŽ•"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"àŽ”à”ˆàŽ«à”ˆ àŽČàŽ­à”àŽŻàŽźàŽČà”àŽČ"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"àŽ•à”àŽŻàŽŸàŽźàŽ± àŽŹà”àŽČà”‹àŽ•à”àŽ•à” àŽšà”†àŽŻà”àŽ€àŽżàŽ°àŽżàŽ•à”àŽ•à”àŽšà”àŽšà”"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"àŽ•à”àŽŻàŽŸàŽźàŽ±àŽŻà”àŽ‚ àŽźà”ˆàŽ•à”àŽ°à”‹àŽ«à”‹àŽŁà”àŽ‚ àŽŹà”àŽČà”‹àŽ•à”àŽ•à” àŽšà”†àŽŻà”àŽ€àŽżàŽ°àŽżàŽ•à”àŽ•à”àŽšà”àŽšà”"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"àŽźà”ˆàŽ•à”àŽ°à”‹àŽ«à”‹à”ș àŽŹà”àŽČà”‹àŽ•à”àŽ•à” àŽšà”†àŽŻà”àŽ€àŽżàŽ°àŽżàŽ•à”àŽ•à”àŽšà”àŽšà”"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"àŽźà”à”»àŽ—àŽŁàŽšàŽŸ àŽźà”‹àŽĄà” àŽ“àŽŁàŽŸàŽŁà”"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant àŽžàŽœà”€àŽ”àŽźàŽŸàŽŁà”"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"àŽ•à”àŽ°àŽźà”€àŽ•àŽ°àŽŁàŽ€à”àŽ€àŽżà”œ àŽ•à”àŽ±àŽżàŽȘà”àŽȘà”àŽ•à”ŸàŽ•à”àŽ•à”àŽłà”àŽł àŽĄàŽżàŽ«à”‹à”ŸàŽŸà”àŽŸà” àŽ†àŽȘà”àŽȘà” àŽžàŽœà”àŽœà”€àŽ•àŽ°àŽżàŽ•à”àŽ•à”àŽ•"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index 7d0d8a2..a1add27 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -700,7 +700,7 @@
     <string name="left_icon" msgid="5036278531966897006">"Đ—ÒŻÒŻĐœ ĐŽÒŻŃ€Ń Ń‚ŃĐŒĐŽŃĐł"</string>
     <string name="right_icon" msgid="1103955040645237425">"Đ‘Đ°Ń€ŃƒŃƒĐœ ĐŽÒŻŃ€Ń Ń‚ŃĐŒĐŽŃĐł"</string>
     <string name="drag_to_add_tiles" msgid="8933270127508303672">"ЄаĐČŃ‚Đ°Đœ ĐœŃĐŒŃŃ…ĐžĐčĐœ Ń‚ŃƒĐ»ĐŽ ЮарааЮ чорэх"</string>
-    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"ЄаĐČŃ‚Đ°ĐœĐłŃƒŃƒĐŽŃ‹Đł ĐŽĐ°Ń…ĐžĐœ Ń†ŃĐłŃ†Đ»ŃŃ…ĐžĐčĐœ Ń‚ŃƒĐ»ĐŽ ЮарааЮ Ń‡ĐžŃ€ĐœŃ ÒŻÒŻ"</string>
+    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"ЄаĐČŃ‚Đ°ĐœĐłŃƒŃƒĐŽŃ‹Đł ĐŽĐ°Ń…ĐžĐœ засĐČĐ°Ń€Đ»Đ°Ń…Ń‹Đœ Ń‚ŃƒĐ»ĐŽ ЮарааЮ Ń‡ĐžŃ€ĐœŃ ÒŻÒŻ"</string>
     <string name="drag_to_remove_tiles" msgid="4682194717573850385">"ĐŁŃŃ‚ĐłĐ°Ń…Ń‹Đœ Ń‚ŃƒĐ»ĐŽ ŃĐœĐŽ Đ·Ó©Ó©ĐœÓ© ÒŻÒŻ"</string>
     <string name="drag_to_remove_disabled" msgid="933046987838658850">"ĐąĐ°ĐœĐŽ Ń…Đ°ĐŒĐłĐžĐčĐœ багаЎаа <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> хаĐČŃ‚Đ°Đœ ŃˆĐ°Đ°Ń€ĐŽĐ»Đ°ĐłĐ°Ń‚Đ°Đč"</string>
     <string name="qs_edit" msgid="5583565172803472437">"Засах"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ĐŽŃƒŃ€ĐłÒŻĐč ĐłŃĐ¶ Ń‚ŃĐŒĐŽŃĐłĐ»ŃŃ…"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g>-р баĐčрлал руу Đ·Ó©Ó©Ń…"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Đ„ŃĐœĐ°Đ»Ń‚"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"йуурхаĐč Ń‚ĐŸŃ…ĐžŃ€ĐłĐŸĐŸĐœĐŸĐŸŃ Ń…Đ°ĐœĐŽĐ°Ń… ŃƒĐŽĐžŃ€ĐŽĐ»Đ°ĐłŃƒŃƒĐŽĐ°Đ° ŃĐŸĐœĐłĐŸĐœĐŸ уу"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Đ„ŃĐœĐ°Đ»Ń‚ŃƒŃƒĐŽŃ‹Đł ĐŽĐ°Ń…ĐžĐœ засĐČĐ°Ń€Đ»Đ°Ń…Ń‹Đœ Ń‚ŃƒĐ»ĐŽ ЮарааЮ Ń‡ĐžŃ€ĐœŃ ÒŻÒŻ"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Đ‘ÒŻŃ… Ń…ŃĐœĐ°Đ»Ń‚Ń‹Đł Ń…Đ°ŃŃĐ°Đœ"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"ӚөрчлөлтОĐčĐł Ń…Đ°ĐŽĐłĐ°Đ»Đ°Đ°ĐłÒŻĐč"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"ĐąĐ°ĐœŃ‹ Đ°Đ¶Đ»Ń‹Đœ Đ±ĐŸĐŽĐ»ĐŸĐłĐŸ Ń‚Đ°ĐœĐŽ Đ·Ó©ĐČŃ…Ó©Đœ Đ°Đ¶Đ»Ń‹Đœ ĐżŃ€ĐŸŃ„Đ°Đčлаас ŃƒŃ‚Đ°ŃĐœŃ‹ ЎууЎлага хоĐčхоĐčĐł Đ·Ó©ĐČŃˆÓ©Ó©Ń€ĐŽÓ©Đł"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"ĐĐ¶Đ»Ń‹Đœ ĐżŃ€ĐŸŃ„Đ°ĐčĐ» руу ŃŃĐ»ĐłŃŃ…"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Єаах"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"ĐąÒŻĐłĐ¶ĐžĐłĐŽŃŃĐœ ĐŽŃĐ»ĐłŃŃ†ĐžĐčĐł өөрчлөх"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi Đ±ĐŸĐ»ĐŸĐŒĐ¶ĐłÒŻĐč баĐčĐœĐ°"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ĐšĐ°ĐŒĐ”Ń€Ń‹Đł Đ±Đ»ĐŸĐșĐ»ĐŸŃĐŸĐœ"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"МоĐșŃ€ĐŸŃ„ĐŸĐœŃ‹Đł Đ±Đ»ĐŸĐșĐ»ĐŸŃĐŸĐœ"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Đ§ŃƒŃ…Đ°Đ» ĐłĐŸŃ€ĐžĐŒ асаалттаĐč баĐčĐœĐ°"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"ĐąŃƒŃĐ»Đ°Ń… Đ°ĐœŃ…Đ°Đ°Ń€Đ»Đ°Đ° Ń…Đ°ĐœĐŽŃƒŃƒĐ»Đ¶ баĐčĐœĐ°"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index 4135188..8f70aaf 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"à€šà€Ÿà€”à€Ąà€€à„‡"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g> à€žà„à€„à€Ÿà€šà€Ÿà€”à€° à€čà€Čà€”à€Ÿ"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"à€šà€żà€Żà€‚à€€à„à€°à€Łà„‡"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"à€•à„à€”à€żà€• à€žà„‡à€Ÿà€żà€‚à€—à„à€œ à€źà€§à„‚à€š à€…‍à„…à€•à„à€žà„‡à€ž à€•à€°à€Łà„à€Żà€Ÿà€žà€Ÿà€ à„€ à€šà€żà€Żà€‚à€€à„à€°à€Łà„‡ à€šà€żà€”à€Ąà€Ÿ"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"à€šà€żà€Żà€‚à€€à„à€°à€Łà€Ÿà€‚à€šà„€ à€Șà„à€šà€°à„à€°à€šà€šà€Ÿ à€•à€°à€Łà„à€Żà€Ÿà€žà€Ÿà€ à„€ à€§à€°à„‚à€š à€ à„‡à€”à€Ÿ à€†à€Łà€ż à€Ąà„à€°à„…à€— à€•à€°à€Ÿ"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"à€žà€°à„à€” à€šà€żà€Żà€‚à€€à„à€°à€Łà„‡ à€•à€Ÿà€ąà„‚à€š à€Ÿà€Ÿà€•à€Čà„€ à€†à€čà„‡à€€"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"à€Źà€Šà€Č à€žà„‡à€”à„à€č à€•à„‡à€Čà„‡ à€—à„‡à€Čà„‡ à€šà€Ÿà€čà„€à€€"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"à€€à„à€źà€šà„‡ à€•à€Ÿà€źà€Ÿà€¶à„€ à€žà€‚à€Źà€‚à€§à€żà€€ à€§à„‹à€°à€Ł à€€à„à€źà„à€čà€Ÿà€Čà€Ÿ à€«à€•à„à€€ à€•à€Ÿà€°à„à€Ż à€Șà„à€°à„‹à€«à€Ÿà€‡à€Čà€”à€°à„‚à€š à€«à„‹à€š à€•à„‰à€Č à€•à€°à€šà„à€Żà€Ÿà€šà„€ à€…à€šà„à€źà€€à„€ à€Šà„‡à€€à„‡"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"à€•à€Ÿà€°à„à€Ż à€Șà„à€°à„‹à€«à€Ÿà€‡à€Čà€”à€° à€žà„à€”à€żà€š à€•à€°à€Ÿ"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"à€Źà€‚à€Š à€•à€°à€Ÿ"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"à€•à€žà„à€Ÿà€źà€Ÿà€‡à€ à€Čà„‰à€• à€žà„‍à€•à„à€°à„€à€š"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"à€”à€Ÿà€Ż-à€«à€Ÿà€Ż à€‰à€Șà€Čà€Źà„à€§ à€šà€Ÿà€čà„€"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"à€•à„…à€źà„‡à€°à€Ÿ à€Źà„à€Čà„‰à€• à€•à„‡à€Čà€Ÿ"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"à€źà€Ÿà€Żà€•à„à€°à„‹à€«à„‹à€š à€Źà„à€Čà„‰à€• à€•à„‡à€Čà€Ÿ"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"à€Șà„à€°à€Ÿà€§à€Ÿà€šà„à€Ż à€źà„‹à€Ą à€žà„à€°à„‚ à€†à€čà„‡"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant à€šà„‡ à€Čà€•à„à€· à€čà„‡ à€†à€€à€Ÿ à€…‍à„…à€•à„à€Ÿà€żà€”à„à€č à€†à€čà„‡"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index dd0a896..24f60fd 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"nyahgemari"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Alih ke kedudukan <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Kawalan"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Pilih kawalan untuk diakses daripada Tetapan Pantas"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Tahan &amp; seret untuk mengatur semula kawalan"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Semua kawalan dialih keluar"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Perubahan tidak disimpan"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Dasar kerja anda membenarkan anda membuat panggilan telefon hanya daripada profil kerja"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Tukar kepada profil kerja"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Tutup"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Sesuaikan skrin kunci"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi tidak tersedia"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera disekat"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon disekat"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Mod keutamaan dihidupkan"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Perhatian pembantu dihidupkan"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index 925fb98..873d488 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"á€Ąá€€á€Œá€­á€Żá€€á€șá€†á€Żá€¶á€žá€™á€Ÿ ဖယá€șá€›á€Ÿá€Źá€žá€›á€”á€ș"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"ဥနေဥထဏသ <xliff:g id="NUMBER">%d</xliff:g> သို့ ရလဟေ့ရနá€ș"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"ထိနá€șသချုပá€șá€™á€Ÿá€Żá€™á€»á€Źá€ž"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"á€Ąá€™á€Œá€”á€ș ဆကá€șတငá€șá€™á€»á€Źá€žá€™á€Ÿ သုံသရနá€ș ထိနá€șသချုပá€șá€™á€Ÿá€Żá€™á€»á€Źá€žá€€á€­á€Ż ရလေသပါ"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"ထိနá€șသချုပá€șá€™á€Ÿá€Żá€™á€»á€Źá€ž ပဌနá€șစြစဉá€șရနá€ș á€–á€­á€•á€Œá€źá€žá€†á€œá€Čပါ"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"ထိနá€șသချုပá€șá€™á€Ÿá€Żá€Ąá€Źá€žá€œá€Żá€¶á€ž ဖယá€șá€›á€Ÿá€Źá€žá€œá€­á€Żá€€á€șသညá€ș"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"á€Ąá€•á€Œá€±á€Źá€„á€șှအလá€Čမျဏသကို သိမá€șသမထဏသပါ"</string>
@@ -1046,7 +1045,7 @@
     <string name="wifi_wont_autoconnect_for_now" msgid="5782282612749867762">"Wi-Fi က á€œá€±á€Źá€œá€±á€Źá€†á€šá€ș á€Ąá€œá€­á€Żá€Ąá€œá€»á€±á€Źá€€á€ș ချိတá€șဆကá€șမညá€șမဟုတá€șပါ"</string>
     <string name="see_all_networks" msgid="3773666844913168122">"á€Ąá€Źá€žá€œá€Żá€¶á€žá€€á€Œá€Šá€·á€șရနá€ș"</string>
     <string name="to_switch_networks_disconnect_ethernet" msgid="6698111101156951955">"ကလနá€șရကá€șá€•á€Œá€±á€Źá€„á€șှရနá€ș အြသာနကá€șကို ချိတá€șဆကá€șá€™á€Ÿá€Żá€–á€Œá€Żá€á€șပါ"</string>
-    <string name="wifi_scan_notify_message" msgid="3753839537448621794">"Wi-Fi ပိတá€șထဏသသည့á€șတိုငá€ș စကá€șပစá€čစညá€șှကို ပိုမိုကေဏငá€șသမလနá€șá€…á€œá€Ź á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€”á€­á€Żá€„á€șရနá€șá€Ąá€á€œá€€á€ș အကá€șပá€șနဟင့á€ș ဝနá€șဆေဏငá€șá€™á€Ÿá€Żá€™á€»á€Źá€žá€€ Wi-Fi ကလနá€șရကá€șမျဏသကို ဥချိနá€șမရလေသ စကငá€șဖတá€șနိုငá€șသညá€ș။ ၎ငá€șှကို Wi-Fi á€›á€Ÿá€Źá€–á€œá€±á€á€Œá€„á€șှ ဆကá€șတငá€șá€™á€»á€Źá€žá€á€œá€„á€ș á€•á€Œá€±á€Źá€„á€șှနိုငá€șသညá€ș။ "<annotation id="link">"á€•á€Œá€±á€Źá€„á€șှရနá€ș"</annotation></string>
+    <string name="wifi_scan_notify_message" msgid="3753839537448621794">"စကá€șပစá€čစညá€șှကို ပိုမိုကေဏငá€șသမလနá€șá€…á€œá€Ź á€Ąá€žá€Żá€¶á€žá€•á€Œá€Żá€”á€­á€Żá€„á€șရနá€ș Wi-Fi ပိတá€șထဏသသည့á€șတိုငá€ș အကá€șပá€șနဟင့á€ș ဝနá€șဆေဏငá€șá€™á€Ÿá€Żá€™á€»á€Źá€žá€€ Wi-Fi ကလနá€șရကá€șမျဏသကို ဥချိနá€șမရလေသ စကငá€șဖတá€șနိုငá€șသညá€ș။ ၎ငá€șှကို Wi-Fi á€›á€Ÿá€Źá€–á€œá€±á€á€Œá€„á€șှ ဆကá€șတငá€șá€™á€»á€Źá€žá€á€œá€„á€ș á€•á€Œá€±á€Źá€„á€șှနိုငá€șသညá€ș။ "<annotation id="link">"á€•á€Œá€±á€Źá€„á€șှရနá€ș"</annotation></string>
     <string name="turn_off_airplane_mode" msgid="8425587763226548579">"á€œá€±á€šá€Źá€‰á€șပျံမုဒá€șကို ပိတá€șရနá€ș"</string>
     <string name="qs_tile_request_dialog_text" msgid="3501359944139877694">"<xliff:g id="APPNAME">%1$s</xliff:g> က ‘á€Ąá€™á€Œá€”á€ș ဆကá€șတငá€șမျဏသ’ တလငá€ș ဥေဏကá€șá€•á€«á€Ąá€€á€œá€€á€șငယá€șကို ထည့á€șလိုသညá€ș"</string>
     <string name="qs_tile_request_dialog_add" msgid="4888460910694986304">"á€Ąá€€á€œá€€á€șငယá€ș ထည့á€șရနá€ș"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"သင့á€șအလုပá€șမူဝါဒသညá€ș သင့á€șအာှ အလုပá€șပရိုဖိုငá€șá€™á€Ÿá€žá€Ź ဖုနá€șသခေါá€șá€†á€­á€Żá€á€œá€„á€·á€ș á€•á€Œá€Żá€žá€Šá€ș"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"အလုပá€șပရိုဖိုငá€șသို့ á€•á€Œá€±á€Źá€„á€șှရနá€ș"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"ပိတá€șရနá€ș"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"á€œá€±á€Źá€·á€á€șမျကá€șá€”á€Ÿá€Źá€•á€Œá€„á€șစိတá€șá€€á€Œá€­á€Żá€€á€șလုပá€șရနá€ș"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi မရနိုငá€șပါ"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ကငá€șမရာကို ပိတá€șထာှသညá€ș"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"မိုကá€șခရိုဖုနá€șှကို ပိတá€șထာှသညá€ș"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ညသစဏသပေသမုဒá€ș ဖလင့á€șထာှသညá€ș"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant နဏသထေဏငá€șနေသညá€ș"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index 72bb06a..b52f611 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Start"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stopp"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Enhåndsmodus"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Middels"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Høy"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vil du oppheve blokkeringen av enhetsmikrofonen?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Vil du oppheve blokkeringen av enhetskameraet?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Vil du oppheve blokkeringen av enhetskameraet og -mikrofonen?"</string>
@@ -793,7 +797,7 @@
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"Du får ikke tilgang til data eller internett via <xliff:g id="CARRIER">%s</xliff:g>. Internett er bare tilgjengelig via Wifi."</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"operatøren din"</string>
     <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"Vil du bytte tilbake til <xliff:g id="CARRIER">%s</xliff:g>?"</string>
-    <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"Mobildataoperatør byttes ikke automatisk basert på tilgjengelighet"</string>
+    <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"Det byttes ikke mobildataoperatør automatisk basert på tilgjengelighet"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"Nei takk"</string>
     <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"Ja, bytt"</string>
     <string name="touch_filtered_warning" msgid="8119511393338714836">"Fordi en app skjuler tillatelsesforespørselen, kan ikke Innstillinger bekrefte svaret ditt."</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"fjerne som favoritt"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Flytt til posisjon <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Kontroller"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Velg kontroller som skal være tilgjengelige fra hurtiginnstillingene"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Hold og dra for å flytte kontroller"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Alle kontroller er fjernet"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Endringene er ikke lagret"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Som følge av jobbreglene dine kan du bare starte telefonanrop fra jobbprofilen."</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Bytt til jobbprofilen"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Lukk"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Tilpass låseskjermen"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wifi er ikke tilgjengelig"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kameraet er blokkert"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofonen er blokkert"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioriteringsmodus er på"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistentoppmerksomhet er på"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index eb5d3db..a583918 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -254,7 +254,7 @@
     <string name="quick_settings_casting" msgid="1435880708719268055">"à€Șà„à€°à€žà€Ÿà€°à€Ł à€—à€°à„à€Šà„ˆ"</string>
     <string name="quick_settings_cast_device_default_name" msgid="6988469571141331700">"à€Źà„‡à€šà€Ÿà€ź à€‰à€Șà€•à€°à€Ł"</string>
     <string name="quick_settings_cast_detail_empty_text" msgid="2846282280014617785">"à€•à„à€šà„ˆ à€‰à€Șà€•à€°à€Łà€čà€°à„‚ à€‰à€Șà€Čà€Źà„à€§ à€›à„ˆà€š"</string>
-    <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"Wi-Fi à€•à€šà„‡à€•à„à€Ÿ à€—à€°à€żà€à€•à„‹ à€›à„ˆà€š"</string>
+    <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"Wi-Fi à€œà€Ąà€Ÿà€š à€—à€°à€żà€à€•à„‹ à€›à„ˆà€š"</string>
     <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"à€‰à€œà„à€Żà€Ÿà€Čà€Șà€š"</string>
     <string name="quick_settings_inversion_label" msgid="3501527749494755688">"à€•à€Čà€° à€‡à€šà„à€­à€°à„à€žà€š"</string>
     <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"à€•à€Čà€° à€•à€°à„‡à€•à„à€žà€š"</string>
@@ -785,8 +785,8 @@
     <string name="dnd_is_off" msgid="3185706903793094463">"à€Źà€Ÿà€§à€Ÿ à€šà€Șà„à€°à„‍à€Żà€Ÿà€‰à€šà„à€čà„‹à€žà„ à€šà€Ÿà€źà€• à€”à€żà€•à€Čà„à€Ș à€šà€żà€·à„à€•à„à€°à€żà€Ż à€›"</string>
     <string name="dnd_is_on" msgid="7009368176361546279">"Do Not Disturb à€…à€š à€›"</string>
     <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"à€•à„à€šà„ˆ à€žà„à€”à€šà€Ÿà€Čà€żà€€ à€šà€żà€Żà€źà€Čà„‡ à€Źà€Ÿà€§à€Ÿ à€šà€Șà„à€±à„à€Żà€Ÿà€‰à€šà„à€čà„‹à€žà„ à€šà€Ÿà€źà€• à€”à€żà€•à€Čà„à€Șà€Čà€Ÿà€ˆ à€žà€•à„à€°à€żà€Żà„‹ à€—à€±à„à€Żà„‹ (<xliff:g id="ID_1">%s</xliff:g>)à„€"</string>
-    <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"à€•à„à€šà„ˆ à€à€Șà€Čà„‡ à€Źà€Ÿà€§à€Ÿ à€šà€Șà„à€±à„à€Żà€Ÿà€‰à€šà„à€čà„‹à€žà„ à€šà€Ÿà€źà€• à€”à€żà€•à€Čà„à€Șà€Čà€Ÿà€ˆ à€žà€•à„à€°à€żà€Ż à€—à€±à„à€Żà„‹ (<xliff:g id="ID_1">%s</xliff:g>)à„€"</string>
-    <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"à€•à„à€šà„ˆ à€žà„à€”à€šà€Ÿà€Čà€żà€€ à€šà€żà€Żà€ź à€”à€Ÿ à€à€Șà€Čà„‡ à€Źà€Ÿà€§à€Ÿ à€šà€Șà„à€±à„à€Żà€Ÿà€‰à€šà„à€čà„‹à€žà„ à€šà€Ÿà€źà€• à€”à€żà€•à€Čà„à€Șà€Čà€Ÿà€ˆ à€žà€•à„à€°à€żà€Ż à€—à€±à„à€Żà„‹à„€"</string>
+    <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"à€•à„à€šà„ˆ à€…à€šà„à€Șà„à€°à€Żà„‹à€—à€Čà„‡ à€Źà€Ÿà€§à€Ÿ à€šà€Șà„à€±à„à€Żà€Ÿà€‰à€šà„à€čà„‹à€žà„ à€šà€Ÿà€źà€• à€”à€żà€•à€Čà„à€Șà€Čà€Ÿà€ˆ à€žà€•à„à€°à€żà€Ż à€—à€±à„à€Żà„‹ (<xliff:g id="ID_1">%s</xliff:g>)à„€"</string>
+    <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"à€•à„à€šà„ˆ à€žà„à€”à€šà€Ÿà€Čà€żà€€ à€šà€żà€Żà€ź à€”à€Ÿ à€…à€šà„à€Șà„à€°à€Żà„‹à€—à€Čà„‡ à€Źà€Ÿà€§à€Ÿ à€šà€Șà„à€±à„à€Żà€Ÿà€‰à€šà„à€čà„‹à€žà„ à€šà€Ÿà€źà€• à€”à€żà€•à€Čà„à€Șà€Čà€Ÿà€ˆ à€žà€•à„à€°à€żà€Ż à€—à€±à„à€Żà„‹à„€"</string>
     <string name="running_foreground_services_title" msgid="5137313173431186685">"à€Șà„ƒà€·à„à€ à€­à„‚à€źà€żà€źà€Ÿ à€šà€Čà„à€šà„‡ à€à€Șà€čà€°à„‚"</string>
     <string name="running_foreground_services_msg" msgid="3009459259222695385">"à€Źà„à€Żà€Ÿà€Ÿà„à€°à„€ à€° à€Ąà„‡à€Ÿà€Ÿà€•à€Ÿ à€Șà„à€°à€Żà„‹à€— à€žà€źà„à€Źà€šà„à€§à„€ à€”à€żà€”à€°à€Łà€čà€°à„‚à€•à€Ÿ à€Čà€Ÿà€—à€ż à€Ÿà„à€Żà€Ÿà€Ș à€—à€°à„à€šà„à€čà„‹à€žà„"</string>
     <string name="mobile_data_disable_title" msgid="5366476131671617790">"à€źà„‹à€Źà€Ÿà€‡à€Č à€Ąà„‡à€Ÿà€Ÿ à€šà€żà€·à„à€•à„à€°à€żà€Ż à€Șà€Ÿà€°à„à€šà„‡ à€čà„‹?"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"à€źà€š à€Șà€°à„à€šà„‡ à€•à„à€°à€Ÿà€čà€°à„‚à€•à„‹ à€žà„‚à€šà„€à€źà€Ÿ à€šà€°à€Ÿà€–à„à€šà„à€čà„‹à€žà„"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g>à€Čà„‡ à€šà€żà€°à„à€Šà„‡à€¶ à€—à€°à„à€šà„‡ à€ à€Ÿà€‰à€à€źà€Ÿ à€žà€Ÿà€°à„à€šà„à€čà„‹à€žà„"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"à€šà€żà€Żà€šà„à€€à„à€°à€Łà€čà€°à„‚"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"à€†à€«à„‚à€Čà„‡ à€Šà„à€°à„à€€ à€žà„‡à€Ÿà€żà€™à€Źà€Ÿà€Ÿ à€Șà„à€°à€Żà„‹à€— à€—à€°à„à€š à€šà€Ÿà€čà„‡à€•à€Ÿ à€•à€šà„à€Ÿà„à€°à„‹à€Č à€›à€Ÿà€šà„à€šà„à€čà„‹à€žà„"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"à€•à€šà„à€Ÿà„à€°à„‹à€Čà€Čà€Ÿà€ˆ à€čà„‹à€Čà„à€Ą à€à€Łà„à€Ą à€Ąà„à€°à„à€Żà€Ÿà€— à€—à€°à„€ à€•à€šà„à€Ÿà„à€°à„‹à€Čà€•à„‹ à€•à„à€°à€ź à€źà€żà€Čà€Ÿà€‰à€šà„à€čà„‹à€žà„"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"à€žà€Źà„ˆ à€•à€šà„à€Ÿà„à€°à„‹à€Č à€čà€Ÿà€Ÿà€‡à€"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"à€Șà€°à€żà€”à€°à„à€€à€šà€čà€°à„‚ à€žà„à€°à€•à„à€·à€żà€€ à€—à€°à€żà€à€•à€Ÿ à€›à„ˆà€šà€šà„"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"à€€à€Șà€Ÿà€ˆà€‚à€•à„‹ à€•à€Ÿà€źà€žà€źà„à€Źà€šà„à€§à„€ à€šà„€à€€à€żà€…à€šà„à€žà€Ÿà€° à€•à€Ÿà€°à„à€Ż à€Șà„à€°à„‹à€«à€Ÿà€‡à€Čà€Źà€Ÿà€Ÿ à€źà€Ÿà€€à„à€° à€«à„‹à€š à€•à€Č à€—à€°à„à€š à€žà€•à€żà€šà„à€›"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"à€•à€Ÿà€°à„à€Ż à€Șà„à€°à„‹à€«à€Ÿà€‡à€Č à€Șà„à€°à€Żà„‹à€— à€—à€°à„à€šà„à€čà„‹à€žà„"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"à€Źà€šà„à€Š à€—à€°à„à€šà„à€čà„‹à€žà„"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"à€Čà€• à€žà„à€•à„à€°à€żà€š à€•à€žà„à€Ÿà€źà€Ÿà€‡à€œ à€—à€°à„à€šà„à€čà„‹à€žà„"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi à€‰à€Șà€Čà€Źà„à€§ à€›à„ˆà€š"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"à€•à„à€Żà€Ÿà€źà„‡à€°à€Ÿ à€Źà„à€Čà€• à€—à€°à€żà€à€•à„‹ à€›"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"à€źà€Ÿà€‡à€•à„à€°à„‹à€«à„‹à€š à€Źà„à€Čà€• à€—à€°à€żà€à€•à„‹ à€›"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"à€Șà„à€°à€Ÿà€„à€źà€żà€•à€€à€Ÿ à€źà„‹à€Ą à€…à€š à€›"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"à€žà€čà€Ÿà€Żà€•à€Čà„‡ à€žà„à€šà€żà€°à€čà„‡à€•à„‹ à€›"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 9589804..19113a0 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"als favoriet verwijderen"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Verplaatsen naar positie <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Bedieningselementen"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Kies welke bedieningselementen je wilt zien in Snelle instellingen"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Houd vast en sleep om de bedieningselementen opnieuw in te delen"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Alle bedieningselementen verwijderd"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Wijzigingen zijn niet opgeslagen"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Op basis van je werkbeleid kun je alleen bellen vanuit het werkprofiel"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Overschakelen naar werkprofiel"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Sluiten"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Vergrendelscherm aanpassen"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wifi niet beschikbaar"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Camera geblokkeerd"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microfoon geblokkeerd"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioriteitsmodus aan"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistent-aandacht aan"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index f298fd3..f65e9db 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -238,7 +238,7 @@
     <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"àŹ…àŹŸà­‹-àŹ°à­‹àŹŸà­‡àŹŸ àŹžà­àŹ•à­àŹ°àŹżàŹš"</string>
     <string name="quick_settings_location_label" msgid="2621868789013389163">"àŹČà­‹àŹ•à­‡àŹžàŹš"</string>
     <string name="quick_settings_screensaver_label" msgid="1495003469366524120">"àŹžà­àŹ•à­àŹ°àŹżàŹš àŹžà­‡àŹ­àŹ°"</string>
-    <string name="quick_settings_camera_label" msgid="5612076679385269339">"àŹ•à­‡àŹźà­‡àŹ°àŹŸ àŹ†àŹ•à­àŹžà­‡àŹž"</string>
+    <string name="quick_settings_camera_label" msgid="5612076679385269339">"àŹ•à­à­ŸàŹŸàŹźà­‡àŹ°àŹŸ àŹ†àŹ•à­àŹžà­‡àŹž"</string>
     <string name="quick_settings_mic_label" msgid="8392773746295266375">"àŹźàŹŸàŹ‡àŹ• àŹ†àŹ•à­àŹžà­‡àŹž"</string>
     <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"àŹ‰àŹȘàŹČàŹŹà­àŹ§"</string>
     <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"àŹŹà­àŹČàŹ•à­ àŹ•àŹ°àŹŸàŹŻàŹŸàŹ‡àŹ›àŹż"</string>
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"àŹ†àŹ°àŹźà­àŹ­ àŹ•àŹ°àŹšà­àŹ€à­"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"àŹŹàŹšà­àŹŠ àŹ•àŹ°àŹšà­àŹ€à­"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"àŹàŹ•-àŹčàŹŸàŹ€ àŹźà­‹àŹĄ"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"àŹ•àŹŁà­àŹŸà­àŹ°àŹŸàŹ·à­àŹŸ"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"àŹ·à­àŹŸàŹŸàŹŁà­àŹĄàŹŸàŹ°à­àŹĄ"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"àŹźàŹ§à­à­ŸàŹź"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"àŹ…àŹ§àŹżàŹ•"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"àŹĄàŹżàŹ­àŹŸàŹ‡àŹžàŹ° àŹźàŹŸàŹ‡àŹ•à­àŹ°à­‹àŹ«à­‹àŹšàŹ•à­ àŹ…àŹšàŹŹà­àŹČàŹ• àŹ•àŹ°àŹżàŹŹà­‡?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"àŹĄàŹżàŹ­àŹŸàŹ‡àŹžàŹ° àŹ•à­à­ŸàŹŸàŹźà­‡àŹ°àŹŸàŹ•à­ àŹ…àŹšàŹŹà­àŹČàŹ• àŹ•àŹ°àŹżàŹŹà­‡?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"àŹĄàŹżàŹ­àŹŸàŹ‡àŹžàŹ° àŹ•à­à­ŸàŹŸàŹźà­‡àŹ°àŹŸ àŹàŹŹàŹ‚ àŹźàŹŸàŹ‡àŹ•à­àŹ°à­‹àŹ«à­‹àŹšàŹ•à­ àŹ…àŹšàŹŹà­àŹČàŹ•à­ àŹ•àŹ°àŹżàŹŹà­‡?"</string>
@@ -700,7 +704,7 @@
     <string name="left_icon" msgid="5036278531966897006">"àŹŹàŹŸàŹź àŹ†àŹ‡àŹ•àŹšà­‍"</string>
     <string name="right_icon" msgid="1103955040645237425">"àŹĄàŹŸàŹčàŹŸàŹŁ àŹ†àŹ‡àŹ•àŹšà­"</string>
     <string name="drag_to_add_tiles" msgid="8933270127508303672">"àŹŸàŹŸàŹ‡àŹČ୍ àŹŻà­‹àŹ— àŹ•àŹ°àŹżàŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ àŹŠàŹŸàŹŹàŹżàŹ§àŹ°àŹż àŹĄà­àŹ°àŹŸàŹ— àŹ•àŹ°àŹšà­àŹ€à­"</string>
-    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"àŹŸàŹŸàŹ‡àŹČ àŹȘà­àŹŁàŹż àŹžàŹœàŹŸàŹ‡àŹŹàŹŸàŹ•à­ àŹŠàŹŸàŹŹàŹżàŹ§àŹ°àŹż àŹŸàŹŸàŹŁàŹšà­àŹ€à­"</string>
+    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"àŹŸàŹŸàŹ‡àŹČ୍‍ àŹȘà­àŹŁàŹż àŹžàŹœàŹŸàŹ‡àŹŹàŹŸàŹ•à­ àŹŠàŹŸàŹŹàŹżàŹ§àŹ°àŹż àŹŸàŹŸàŹŁàŹšà­àŹ€à­"</string>
     <string name="drag_to_remove_tiles" msgid="4682194717573850385">"àŹŹàŹŸàŹčàŹŸàŹ° àŹ•àŹ°àŹżàŹŹàŹŸàŹ•à­ àŹàŹ àŹŸàŹ•à­ àŹĄà­àŹ°àŹŸàŹ—à­‍ àŹ•àŹ°àŹšà­àŹ€à­"</string>
     <string name="drag_to_remove_disabled" msgid="933046987838658850">"àŹ†àŹȘàŹŁàŹ™à­àŹ•àŹ° àŹ…àŹ€àŹżàŹ•àŹźà­‌àŹ°à­‡ <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>àŹŸàŹż àŹŸàŹŸàŹ‡àŹČ୍ àŹ†àŹŹàŹ¶à­à­ŸàŹ•"</string>
     <string name="qs_edit" msgid="5583565172803472437">"àŹàŹĄàŹżàŹŸ àŹ•àŹ°àŹšà­àŹ€à­"</string>
@@ -793,7 +797,7 @@
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"àŹĄàŹŸàŹŸàŹŸ àŹ•àŹżàŹźà­àŹŹàŹŸ àŹ‡àŹŁà­àŹŸàŹ°àŹšà­‡àŹŸà­‌àŹ•à­ <xliff:g id="CARRIER">%s</xliff:g> àŹŠà­àŹ”àŹŸàŹ°àŹŸ àŹ†àŹȘàŹŁàŹ™à­àŹ•àŹ°  àŹ†àŹ•à­àŹžà­‡àŹžà­ àŹ°àŹčàŹżàŹŹ àŹšàŹŸàŹčàŹżàŹà„€ àŹ‡àŹŁà­àŹŸàŹ°àŹšà­‡àŹŸà­‌ àŹ•à­‡àŹŹàŹł à­±àŹŸàŹ‡-àŹ«àŹŸàŹ‡ àŹźàŹŸàŹ§à­à­ŸàŹźàŹ°à­‡ àŹ‰àŹȘàŹČàŹŹà­àŹ§ àŹčà­‡àŹŹà„€"</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"àŹ†àŹȘàŹŁàŹ™à­àŹ• àŹ•à­‡àŹ°àŹżàŹ…àŹ°à­"</string>
     <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"<xliff:g id="CARRIER">%s</xliff:g>àŹ•à­ àŹȘà­àŹŁàŹż àŹžà­à­±àŹżàŹš àŹ•àŹ°àŹżàŹŹà­‡?"</string>
-    <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"àŹ‰àŹȘàŹČàŹŹà­àŹ§àŹ€àŹŸ àŹ†àŹ§àŹŸàŹ°àŹ°à­‡ àŹźà­‹àŹŹàŹŸàŹ‡àŹČ àŹĄàŹŸàŹŸàŹŸ àŹžà­à­±àŹ€àŹƒ àŹžà­à­±àŹżàŹš àŹčà­‡àŹŹ àŹšàŹŸàŹčàŹżàŹ"</string>
+    <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"àŹ‰àŹȘàŹČàŹŹà­àŹ§àŹ€àŹŸ àŹ†àŹ§àŹŸàŹ°àŹ°à­‡ àŹźà­‹àŹŹàŹŸàŹ‡àŹČ àŹĄàŹŸàŹŸàŹŸ àŹžà­à­±àŹšàŹŸàŹłàŹżàŹ€ àŹ­àŹŸàŹŹà­‡ àŹžà­à­±àŹżàŹš àŹčà­‡àŹŹ àŹšàŹŸàŹčàŹżàŹ"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"àŹšàŹŸ, àŹ§àŹšà­à­ŸàŹŹàŹŸàŹŠ"</string>
     <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"àŹčàŹ, àŹžà­à­±àŹżàŹš àŹ•àŹ°àŹšà­àŹ€à­"</string>
     <string name="touch_filtered_warning" msgid="8119511393338714836">"àŹ—à­‹àŹŸàŹżàŹ àŹ†àŹȘ୍‍ àŹàŹ• àŹ…àŹšà­àŹźàŹ€àŹż àŹ…àŹšà­àŹ°à­‹àŹ§àŹ•à­ àŹŠà­‡àŹ–àŹżàŹŹàŹŸàŹ°à­‡ àŹŹàŹŸàŹ§àŹŸ àŹŠà­‡àŹ‰àŹ„àŹżàŹŹàŹŸàŹ°à­, àŹžà­‡àŹŸàŹżàŹ™à­àŹ— àŹ†àŹȘàŹŁàŹ™à­àŹ• àŹ‰àŹ€à­àŹ€àŹ°àŹ•à­ àŹŻàŹŸàŹžà­àŹš àŹ•àŹ°àŹżàŹȘàŹŸàŹ°àŹżàŹŹ àŹšàŹŸàŹčàŹżàŹà„€"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"àŹšàŹŸàŹȘàŹžàŹšà­àŹŠ àŹ•àŹ°àŹšà­àŹ€à­"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g> àŹžà­àŹ„àŹżàŹ€àŹżàŹ•à­ àŹźà­àŹ­à­ àŹ•àŹ°àŹšà­àŹ€à­"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"àŹšàŹżà­ŸàŹšà­àŹ€à­àŹ°àŹŁàŹ—à­àŹĄàŹŒàŹżàŹ•"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"àŹ•à­à­±àŹżàŹ•à­ àŹžà­‡àŹŸàŹżàŹ‚àŹžàŹ°à­ àŹ†àŹ•à­àŹžà­‡àŹžà­ àŹ•àŹ°àŹżàŹŹàŹŸàŹ•à­ àŹšàŹżà­ŸàŹšà­àŹ€à­àŹ°àŹŁàŹ—à­àŹĄàŹŒàŹżàŹ•à­ àŹŹàŹŸàŹ›àŹšà­àŹ€à­"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"àŹšàŹżà­ŸàŹšà­àŹ€à­àŹ°àŹŁàŹ—à­àŹĄàŹŒàŹżàŹ•à­ àŹȘà­àŹŁàŹż àŹŹà­à­ŸàŹŹàŹžà­àŹ„àŹżàŹ€ àŹ•àŹ°àŹżàŹŹàŹŸàŹ•à­ àŹžà­‡àŹ—à­àŹĄàŹŒàŹżàŹ•à­ àŹĄà­àŹ°àŹŸàŹ— àŹ•àŹ°àŹż àŹ§àŹ°àŹż àŹ°àŹ–àŹšà­àŹ€à­"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"àŹžàŹźàŹžà­àŹ€ àŹšàŹżà­ŸàŹšà­àŹ€à­àŹ°àŹŁ àŹ•àŹŸàŹąàŹŒàŹż àŹŠàŹżàŹ†àŹŻàŹŸàŹ‡àŹ›àŹż"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"àŹȘàŹ°àŹżàŹŹàŹ°à­àŹ€à­àŹ€àŹšàŹ—à­àŹĄàŹŒàŹżàŹ• àŹžà­‡àŹ­à­ àŹ•àŹ°àŹŸàŹŻàŹŸàŹ‡àŹšàŹŸàŹčàŹżàŹ"</string>
@@ -1022,7 +1025,7 @@
     <string name="person_available" msgid="2318599327472755472">"àŹ‰àŹȘàŹČàŹŹà­àŹ§"</string>
     <string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"àŹ†àŹȘàŹŁàŹ™à­àŹ• àŹŹà­à­ŸàŹŸàŹŸà­‡àŹ°à­€ àŹźàŹżàŹŸàŹ°à­ àŹȘàŹąàŹŒàŹżàŹŹàŹŸàŹ°à­‡ àŹžàŹźàŹžà­à­ŸàŹŸ àŹčà­‡àŹ‰àŹ›àŹż"</string>
     <string name="battery_state_unknown_notification_text" msgid="13720937839460899">"àŹ…àŹ§àŹżàŹ• àŹžà­‚àŹšàŹšàŹŸ àŹȘàŹŸàŹ‡àŹ àŹŸàŹŸàŹȘ୍ àŹ•àŹ°àŹšà­àŹ€à­"</string>
-    <string name="qs_alarm_tile_no_alarm" msgid="4826472008616807923">"àŹ†àŹČàŹŸàŹ°àŹŸàŹź àŹžà­‡àŹŸ àŹčà­‹àŹ‡àŹšàŹŸàŹčàŹżàŹ"</string>
+    <string name="qs_alarm_tile_no_alarm" msgid="4826472008616807923">"àŹ†àŹČàŹŸàŹ°àŹŸàŹź àŹžà­‡àŹŸà­ àŹčà­‹àŹ‡àŹšàŹŸàŹčàŹżàŹ"</string>
     <string name="accessibility_fingerprint_label" msgid="5255731221854153660">"àŹŸàŹżàŹȘàŹšàŹżàŹčà­àŹš àŹžà­‡àŹšà­àŹžàŹ°à­"</string>
     <string name="accessibility_authenticate_hint" msgid="798914151813205721">"àŹȘà­àŹ°àŹźàŹŸàŹŁà­€àŹ•àŹ°àŹŁ àŹ•àŹ°àŹšà­àŹ€à­"</string>
     <string name="accessibility_enter_hint" msgid="2617864063504824834">"àŹĄàŹżàŹ­àŹŸàŹ‡àŹžà­ àŹŹàŹżàŹ·à­ŸàŹ°à­‡ àŹžà­‚àŹšàŹšàŹŸ àŹČà­‡àŹ–àŹšà­àŹ€à­"</string>
@@ -1039,7 +1042,7 @@
     <string name="non_carrier_network_unavailable" msgid="770049357024492372">"àŹ…àŹšà­à­Ÿ àŹ•à­ŒàŹŁàŹžàŹż àŹšà­‡àŹŸà­±àŹŸàŹ°à­àŹ• àŹ‰àŹȘàŹČàŹŹà­àŹ§ àŹšàŹŸàŹčàŹżàŹ"</string>
     <string name="all_network_unavailable" msgid="4112774339909373349">"àŹ•à­ŒàŹŁàŹžàŹż àŹšà­‡àŹŸà­±àŹŸàŹ°à­àŹ• àŹ‰àŹȘàŹČàŹŹà­àŹ§ àŹšàŹŸàŹčàŹżàŹ"</string>
     <string name="turn_on_wifi" msgid="1308379840799281023">"à­±àŹŸàŹ‡-àŹ«àŹŸàŹ‡"</string>
-    <string name="tap_a_network_to_connect" msgid="1565073330852369558">"àŹ•àŹšà­‡àŹ•à­àŹŸ àŹ•àŹ°àŹżàŹŹàŹŸàŹ•à­ àŹàŹ• àŹšà­‡àŹŸà­±àŹŸàŹ°à­àŹ•àŹ°à­‡ àŹŸàŹŸàŹȘ àŹ•àŹ°àŹšà­àŹ€à­"</string>
+    <string name="tap_a_network_to_connect" msgid="1565073330852369558">"àŹžàŹ‚àŹŻà­‹àŹ— àŹ•àŹ°àŹżàŹŹàŹŸàŹ•à­ àŹàŹ• àŹšà­‡àŹŸà­±àŹŸàŹ°à­àŹ•àŹ°à­‡ àŹŸàŹŸàŹȘ୍ àŹ•àŹ°àŹšà­àŹ€à­"</string>
     <string name="unlock_to_view_networks" msgid="5072880496312015676">"àŹšà­‡àŹŸà­±àŹŸàŹ°à­àŹ•àŹ—à­àŹĄàŹŒàŹżàŹ•à­ àŹŠà­‡àŹ–àŹżàŹŹàŹŸ àŹȘàŹŸàŹ‡àŹ àŹ…àŹšàŹČàŹ•à­ àŹ•àŹ°àŹšà­àŹ€à­"</string>
     <string name="wifi_empty_list_wifi_on" msgid="3864376632067585377">"àŹšà­‡àŹŸà­±àŹŸàŹ°à­àŹ•àŹ—à­àŹĄàŹŒàŹżàŹ• àŹžàŹšà­àŹ§àŹŸàŹš àŹ•àŹ°àŹŸàŹŻàŹŸàŹ‰àŹ›àŹż…"</string>
     <string name="wifi_failed_connect_message" msgid="4161863112079000071">"àŹšà­‡àŹŸà­±àŹŸàŹ°à­àŹ•àŹ•à­ àŹžàŹ‚àŹŻà­‹àŹ— àŹ•àŹ°àŹżàŹŹàŹŸàŹ°à­‡ àŹŹàŹżàŹ«àŹł àŹčà­‹àŹ‡àŹ›àŹż"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"àŹ†àŹȘàŹŁàŹ™à­àŹ• à­±àŹŸàŹ°à­àŹ• àŹšà­€àŹ€àŹż àŹ†àŹȘàŹŁàŹ™à­àŹ•à­ àŹ•à­‡àŹŹàŹł à­±àŹŸàŹ°à­àŹ• àŹȘà­àŹ°à­‹àŹ«àŹŸàŹ‡àŹČàŹ°à­ àŹ«à­‹àŹš àŹ•àŹČ àŹ•àŹ°àŹżàŹŹàŹŸàŹ•à­ àŹ…àŹšà­àŹźàŹ€àŹż àŹŠàŹżàŹ"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"à­±àŹŸàŹ°à­àŹ• àŹȘà­àŹ°à­‹àŹ«àŹŸàŹ‡àŹČàŹ•à­ àŹžà­à­±àŹżàŹš àŹ•àŹ°àŹšà­àŹ€à­"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"àŹŹàŹšà­àŹŠ àŹ•àŹ°àŹšà­àŹ€à­"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"àŹČàŹ• àŹžà­àŹ•à­àŹ°àŹżàŹšàŹ•à­ àŹ•àŹ·à­àŹŸàŹźàŹŸàŹ‡àŹœ àŹ•àŹ°àŹšà­àŹ€à­"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"à­±àŹŸàŹ‡-àŹ«àŹŸàŹ‡ àŹ‰àŹȘàŹČàŹŹà­àŹ§ àŹšàŹŸàŹčàŹżàŹ"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"àŹ•à­‡àŹźà­‡àŹ°àŹŸàŹ•à­ àŹŹà­àŹČàŹ• àŹ•àŹ°àŹŸàŹŻàŹŸàŹ‡àŹ›àŹż"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"àŹźàŹŸàŹ‡àŹ•à­àŹ°à­‹àŹ«à­‹àŹšàŹ•à­ àŹŹà­àŹČàŹ• àŹ•àŹ°àŹŸàŹŻàŹŸàŹ‡àŹ›àŹż"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"àŹȘà­àŹ°àŹŸà­Ÿà­‹àŹ°àŹżàŹŸàŹż àŹźà­‹àŹĄ àŹšàŹŸàŹČୁ àŹ…àŹ›àŹż"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant àŹ†àŹŸà­‡àŹšàŹžàŹš àŹšàŹŸàŹČୁ àŹ…àŹ›àŹż"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index 50e829f..a2a8aac 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -383,7 +383,7 @@
     <string name="user_remove_user_message" msgid="6702834122128031833">"àš‡àšž àš‰àšȘàš­à©‹àš—àš€àšŸ àšŠà©‡ àšžàšŸàš°à©‡ àšàšȘàšž àš…àš€à©‡  àšĄàšŸàšŸàšŸ  àšźàšżàšŸàšŸ àšŠàšżà©±àš€àšŸ àšœàšŸàšàš—àšŸà„€"</string>
     <string name="user_remove_user_remove" msgid="8387386066949061256">"àščàšŸàšŸàš“"</string>
     <string name="media_projection_dialog_text" msgid="1755705274910034772">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> àš•à©‹àšČ àšŹàšŸàš•à©€ àšžàšŸàš°à©€ àšœàšŸàšŁàš•àšŸàš°à©€ àš€à©±àš• àšȘàščà©à©°àšš àščà©‹àš”à©‡àš—à©€ àšœà©‹ àš•àšż àš€à©àščàšŸàšĄà©€ àšžàš•à©àš°à©€àšš \'àš€à©‡ àšŠàšżàš–àšŁàšŻà©‹àš— àščੈ àšœàšŸàš‚ àš°àšżàš•àšŸàš°àšĄàšżà©°àš— àšœàšŸàš‚ àš•àšŸàšžàšŸ àš•àš°àšš àš”à©‡àšČੇ àš€à©àščàšŸàšĄà©‡ àšĄà©€àš”àšŸàšˆàšž \'àš€à©‡ àššàšČàšŸàšˆ àšœàšŸàš‚àšŠà©€ àščà©ˆà„€ àš‡àšž àš”àšżà©±àšš àšȘàšŸàšžàš”àš°àšĄ, àš­à©àš—àš€àšŸàšš àš”à©‡àš°àš”à©‡, àš«àšŒà©‹àšŸà©‹àš†àš‚, àšžà©àššà©‡àščੇ àš…àš€à©‡ àš€à©àščàšŸàšĄà©‡ àš”à©±àšČà©‹àš‚ àššàšČàšŸàš àš†àšĄà©€àš“ àšŠà©€ àšœàšŸàšŁàš•àšŸàš°à©€ àšžàšŒàšŸàšźàšČ àščà©à©°àšŠà©€ àščà©ˆà„€"</string>
-    <string name="media_projection_dialog_service_text" msgid="958000992162214611">"àš‡àšč àš«à©°àš•àšžàšŒàšš àšźà©àščà©±àšˆàš† àš•àš°àš”àšŸàš‰àšŁ àš”àšŸàšČੀ àšžà©‡àš”àšŸ àš•à©‹àšČ, àš°àšżàš•àšŸàš°àšĄ àšœàšŸàš‚ àš•àšŸàšžàšŸ àš•àš°àšš àš”à©‡àšČੇ àš€à©àščàšŸàšĄà©‡ àšĄà©€àš”àšŸàšˆàšž \'àš€à©‡ àšŠàšżàš–àšŁàšŻà©‹àš— àšœàšŸàš‚ àššàšČàšŸàšˆ àšœàšŸàšŁ àš”àšŸàšČੀ àšžàšŸàš°à©€ àšœàšŸàšŁàš•àšŸàš°à©€ àš€à©±àš• àšȘàščà©à©°àšš àščà©‹àš”à©‡àš—à©€ àšœà©‹à„€ àš‡àšž àš”àšżà©±àšš àšȘàšŸàšžàš”àš°àšĄ, àš­à©àš—àš€àšŸàšš àš”à©‡àš°àš”à©‡, àš«àšŒà©‹àšŸà©‹àš†àš‚, àšžà©àššà©‡àščੇ àš…àš€à©‡ àš€à©àščàšŸàšĄà©‡ àš”à©±àšČà©‹àš‚ àššàšČàšŸàšˆ àš†àšĄà©€àš“ àšŠà©€ àšœàšŸàšŁàš•àšŸàš°à©€ àšžàšŒàšŸàšźàšČ àščà©à©°àšŠà©€ àščà©ˆà„€"</string>
+    <string name="media_projection_dialog_service_text" msgid="958000992162214611">"àš‡àšč àš«à©°àš•àšžàšŒàšš àšȘà©àš°àšŠàšŸàšš àš•àš°àšš àš”àšŸàšČੀ àšžà©‡àš”àšŸ àš•à©‹àšČ àšžàšŸàš°à©€ àšœàšŸàšŁàš•àšŸàš°à©€ àš€à©±àš• àšȘàščà©à©°àšš àščà©‹àš”à©‡àš—à©€ àšœà©‹ àš•àšż àš€à©àščàšŸàšĄà©€ àšžàš•à©àš°à©€àšš \'àš€à©‡ àšŠàšżàš–àšŁàšŻà©‹àš— àščà©à©°àšŠà©€ àščੈ àšœàšŸàš‚ àš°àšżàš•àšŸàš°àšĄ àšœàšŸàš‚ àš•àšŸàšžàšŸ àš•àš°àšš àš”à©‡àšČੇ àš€à©àščàšŸàšĄà©‡ àšĄà©€àš”àšŸàšˆàšž \'àš€à©‡ àššàšČàšŸàšˆ àšœàšŸàš‚àšŠà©€ àščà©ˆà„€ àš‡àšž àš”àšżà©±àšš àšȘàšŸàšžàš”àš°àšĄ, àš­à©àš—àš€àšŸàšš àš”à©‡àš°àš”à©‡, àš«àšŒà©‹àšŸà©‹àš†àš‚, àšžà©àššà©‡àščੇ àš…àš€à©‡ àš€à©àščàšŸàšĄà©‡ àš”à©±àšČà©‹àš‚ àššàšČàšŸàš àš†àšĄà©€àš“ àšŠà©€ àšœàšŸàšŁàš•àšŸàš°à©€ àšžàšŒàšŸàšźàšČ àščà©à©°àšŠà©€ àščà©ˆà„€"</string>
     <string name="media_projection_dialog_service_title" msgid="2888507074107884040">"àš•à©€ àš°àšżàš•àšŸàš°àšĄ àšœàšŸàš‚ àš•àšŸàšžàšŸ àš•àš°àššàšŸ àšžàšŒà©àš°à©‚ àš•àš°àššàšŸ àščੈ?"</string>
     <string name="media_projection_dialog_title" msgid="3316063622495360646">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> àššàšŸàšČ àš°àšżàš•àšŸàš°àšĄàšżà©°àš— àšœàšŸàš‚ àš•àšŸàšžàšŸ àš•àš°àššàšŸ àšžàšŒà©àš°à©‚ àš•àš°àššàšŸ àščੈ?"</string>
     <string name="media_projection_permission_dialog_title" msgid="7130975432309482596">"àš•à©€ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> àššà©‚à©° àšžàšŸàš‚àšàšŸ àš•àš°àšš àšœàšŸàš‚ àš°àšżàš•àšŸàš°àšĄ àš•àš°àšš àšČàšˆ àš†àš—àšżàš† àšŠà©‡àšŁà©€ àščੈ?"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"àšźàššàšȘàšžà©°àšŠ àš”àšżà©±àššà©‹àš‚ àščàšŸàšŸàš“"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g> àšžàš„àšŸàšš \'àš€à©‡ àšČàšżàšœàšŸàš“"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"àš•à©°àšŸàš°à©‹àšČ"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"àš€àš€àš•àšŸàšČ àšžà©ˆàšŸàšżà©°àš—àšŸàš‚ àš€à©‹àš‚ àšȘàščà©à©°àšš àš•àš°àšš àšČàšˆ àš•à©°àšŸàš°à©‹àšČ àššà©àšŁà©‹"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"àš•à©°àšŸàš°à©‹àšČàšŸàš‚ àššà©‚à©° àšźà©à©œ-àš”àšżàš”àšžàš„àšżàš€ àš•àš°àšš àšČàšˆ àš«à©œà©àšč àš•à©‡ àš˜àšžà©€àšŸà©‹"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"àšžàšŸàš°à©‡ àš•à©°àšŸàš°à©‹àšČ àščàšŸàšŸàš àš—àš"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"àš€àšŹàšŠà©€àšČà©€àš†àš‚ àššà©‚à©° àš°à©±àš–àšżàš…àš€ àššàščà©€àš‚ àš•à©€àš€àšŸ àš—àšżàš†"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"àš€à©àščàšŸàšĄà©€ àš•àšŸàš°àšœ àššà©€àš€à©€ àš€à©àščàšŸàššà©‚à©° àšžàšżàš°àš«àšŒ àš•àšŸàš°àšœ àšȘà©àš°à©‹àš«àšŸàšˆàšČ àš€à©‹àš‚ àščੀ àš«àšŒà©‹àšš àš•àšŸàšČàšŸàš‚ àš•àš°àšš àšŠà©€ àš†àš—àšżàš† àšŠàšżà©°àšŠà©€ àščੈ"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"àš•àšŸàš°àšœ àšȘà©àš°à©‹àš«àšŸàšˆàšČ \'àš€à©‡ àšœàšŸàš“"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"àšŹà©°àšŠ àš•àš°à©‹"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"àšČàšŸàš• àšžàš•à©àš°à©€àšš àššà©‚à©° àš”àšżàš‰àš‚àš€àšŹà©±àš§ àš•àš°à©‹"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"àš”àšŸàšˆ-àš«àšŸàšˆ àš‰àšȘàšČàšŹàš§ àššàščà©€àš‚"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"àš•à©ˆàšźàš°àšŸ àšŹàšČàšŸàš• àš•à©€àš€àšŸ àš—àšżàš†"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"àšźàšŸàšˆàš•à©àš°à©‹àš«àšŒà©‹àšš àšŹàšČàšŸàš• àš•à©€àš€àšŸ àš—àšżàš†"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"àš€àš°àšœà©€àšč àšźà©‹àšĄ àššàšŸàšČੂ àščੈ"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant àš§àšżàš†àšš àšžà©àš”àšżàš§àšŸ àššà©‚à©° àššàšŸàšČੂ àščੈ"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index 499925a..b8554e1 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Rozpocznij"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Zatrzymaj"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Tryb jednej ręki"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standardowy"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Úredni"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Wysoki"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Odblokować mikrofon urządzenia?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Odblokować aparat urządzenia?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Odblokować aparat i mikrofon urządzenia?"</string>
@@ -699,8 +703,8 @@
     <string name="right_keycode" msgid="2480715509844798438">"Prawy klawisz"</string>
     <string name="left_icon" msgid="5036278531966897006">"Lewa ikona"</string>
     <string name="right_icon" msgid="1103955040645237425">"Prawa ikona"</string>
-    <string name="drag_to_add_tiles" msgid="8933270127508303672">"Aby dodać kafelki, przytrzymaj je i przeciągnij"</string>
-    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Aby przestawić kafelki, przytrzymaj je i przeciągnij"</string>
+    <string name="drag_to_add_tiles" msgid="8933270127508303672">"Przytrzymaj i przeciągnij, by dodać kafelki"</string>
+    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Przytrzymaj i przeciągnij, by przestawić kafelki"</string>
     <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Przeciągnij tutaj, by usunąć"</string>
     <string name="drag_to_remove_disabled" msgid="933046987838658850">"Minimalna liczba kafelków to <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string>
     <string name="qs_edit" msgid="5583565172803472437">"Edytuj"</string>
@@ -792,7 +796,7 @@
     <string name="mobile_data_disable_title" msgid="5366476131671617790">"WyƂączyć mobilną transmisję danych?"</string>
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"Nie będziesz mieć dostępu do transmisji danych ani internetu w <xliff:g id="CARRIER">%s</xliff:g>. Internet będzie dostępny tylko przez Wi‑Fi."</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"Twój operator"</string>
-    <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"Wrócić do <xliff:g id="CARRIER">%s</xliff:g>?"</string>
+    <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"Wrócić do operatora <xliff:g id="CARRIER">%s</xliff:g>?"</string>
     <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"Mobilna transmisja danych nie będzie automatycznie przeƂączana na podstawie dostępnoƛci"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"Nie, dziękuję"</string>
     <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"Tak, wróć"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"usunąć z ulubionych"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Przenieƛ w poƂoĆŒenie <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Elementy sterujące"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Wybierz elementy sterujące dostępne w Szybkich ustawieniach"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Przytrzymaj i przeciągnij, aby przestawić elementy sterujące"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Usunięto wszystkie elementy sterujące"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Zmiany nie zostaƂy zapisane"</string>
@@ -1039,7 +1042,7 @@
     <string name="non_carrier_network_unavailable" msgid="770049357024492372">"Brak innych dostępnych sieci"</string>
     <string name="all_network_unavailable" msgid="4112774339909373349">"Brak dostępnych sieci"</string>
     <string name="turn_on_wifi" msgid="1308379840799281023">"Wi‑Fi"</string>
-    <string name="tap_a_network_to_connect" msgid="1565073330852369558">"Aby się poƂączyć, kliknij sieć"</string>
+    <string name="tap_a_network_to_connect" msgid="1565073330852369558">"Kliknij sieć, aby poƂączyć"</string>
     <string name="unlock_to_view_networks" msgid="5072880496312015676">"Odblokuj, by wyƛwietlić sieci"</string>
     <string name="wifi_empty_list_wifi_on" msgid="3864376632067585377">"Szukam sieci…"</string>
     <string name="wifi_failed_connect_message" msgid="4161863112079000071">"Nie udaƂo się poƂączyć z siecią"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Zasady obowiązujące w firmie zezwalają na nawiązywanie poƂączeƄ telefonicznych tylko w profilu sƂuĆŒbowym"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"PrzeƂącz na profil sƂuĆŒbowy"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Zamknij"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Dostosuj ekran blokady"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Sieć Wi-Fi jest niedostępna"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera jest zablokowana"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon jest zablokowany"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Tryb priorytetowy jest wƂączony"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Asystent jest aktywny"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-pl/tiles_states_strings.xml b/packages/SystemUI/res/values-pl/tiles_states_strings.xml
index fb0bb70..c73cbed 100644
--- a/packages/SystemUI/res/values-pl/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-pl/tiles_states_strings.xml
@@ -113,7 +113,7 @@
   </string-array>
   <string-array name="tile_states_cast">
     <item msgid="6032026038702435350">"Niedostępny"</item>
-    <item msgid="1488620600954313499">"WyƂączone"</item>
+    <item msgid="1488620600954313499">"WyƂączony"</item>
     <item msgid="588467578853244035">"WƂączony"</item>
   </string-array>
   <string-array name="tile_states_night">
@@ -133,7 +133,7 @@
   </string-array>
   <string-array name="tile_states_reduce_brightness">
     <item msgid="1839836132729571766">"Niedostępny"</item>
-    <item msgid="4572245614982283078">"WyƂączone"</item>
+    <item msgid="4572245614982283078">"WyƂączony"</item>
     <item msgid="6536448410252185664">"WƂączony"</item>
   </string-array>
   <string-array name="tile_states_cameratoggle">
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index 2469f2e..17ca232 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"remover dos favoritos"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Mover para a posição <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Controles"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Escolha os controles disponíveis nas Configurações rápidas"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Toque no controle, mantenha-o pressionado e arraste para reorganizar as posições."</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Todos os controles foram removidos"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"As mudanças não foram salvas"</string>
@@ -1123,13 +1122,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Sua política de trabalho só permite fazer ligações pelo perfil de trabalho"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Alternar para o perfil de trabalho"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Fechar"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Personalizar a tela de bloqueio"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"Desbloqueie para personalizar a tela de bloqueio"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi indisponível"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Câmara bloqueada"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Câmera e microfone bloqueados"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microfone bloqueado"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Modo de prioridade ativado"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Atenção do Assistente ativada"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Defina o app de notas padrão nas Configurações"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 07378b9..c181a2c 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -131,7 +131,7 @@
     <string name="accessibility_phone_button" msgid="4256353121703100427">"Telemóvel"</string>
     <string name="accessibility_voice_assist_button" msgid="6497706615649754510">"Assistente de voz"</string>
     <string name="accessibility_wallet_button" msgid="1458258783460555507">"Carteira"</string>
-    <string name="accessibility_qr_code_scanner_button" msgid="7521277927692910795">"Leitor QR"</string>
+    <string name="accessibility_qr_code_scanner_button" msgid="7521277927692910795">"Leitor de códigos QR"</string>
     <string name="accessibility_unlock_button" msgid="3613812140816244310">"Desbloqueado"</string>
     <string name="accessibility_lock_icon" msgid="661492842417875775">"Dispositivo bloqueado"</string>
     <string name="accessibility_scanning_face" msgid="3093828357921541387">"A analisar o rosto…"</string>
@@ -258,7 +258,7 @@
     <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Brilho"</string>
     <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inversão de cores"</string>
     <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Correção da cor"</string>
-    <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Tamanho da letra"</string>
+    <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Tamanho do tipo de letra"</string>
     <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Gerir utilizadores"</string>
     <string name="quick_settings_done" msgid="2163641301648855793">"Concluído"</string>
     <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Fechar"</string>
@@ -517,7 +517,7 @@
     <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Desbloquear para utilizar"</string>
     <string name="wallet_error_generic" msgid="257704570182963611">"Ocorreu um problema ao obter os seus cartões. Tente mais tarde."</string>
     <string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Definições do ecrã de bloqueio"</string>
-    <string name="qr_code_scanner_title" msgid="1938155688725760702">"Leitor QR"</string>
+    <string name="qr_code_scanner_title" msgid="1938155688725760702">"Leitor de códigos QR"</string>
     <string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"A atualizar"</string>
     <string name="status_bar_work" msgid="5238641949837091056">"Perfil de trabalho"</string>
     <string name="status_bar_airplane" msgid="4848702508684541009">"Modo de avião"</string>
@@ -824,7 +824,7 @@
     <string name="privacy_type_media_projection" msgid="8136723828804251547">"gravação de ecrã"</string>
     <string name="music_controls_no_title" msgid="4166497066552290938">"Sem título"</string>
     <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Modo de espera"</string>
-    <string name="font_scaling_dialog_title" msgid="6273107303850248375">"Tamanho da letra"</string>
+    <string name="font_scaling_dialog_title" msgid="6273107303850248375">"Tamanho do tipo de letra"</string>
     <string name="font_scaling_smaller" msgid="1012032217622008232">"Diminuir"</string>
     <string name="font_scaling_larger" msgid="5476242157436806760">"Aumentar"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Janela de ampliação"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"remover dos favoritos"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Mover para a posição <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Controlos"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Escolha os controlos a que pretende aceder a partir das Definições rápidas"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Toque sem soltar e arraste para reorganizar os controlos."</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Todos os controlos foram removidos."</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Alterações não guardadas."</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"A sua Política de Trabalho só lhe permite fazer chamadas telefónicas a partir do perfil de trabalho"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Mudar para perfil de trabalho"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Fechar"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Personalizar o ecrã de bloqueio"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi indisponível"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Câmara bloqueada"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microfone bloqueado"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Modo Prioridade ativado"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Atenção do Assistente ativada"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 2469f2e..17ca232 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"remover dos favoritos"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Mover para a posição <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Controles"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Escolha os controles disponíveis nas Configurações rápidas"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Toque no controle, mantenha-o pressionado e arraste para reorganizar as posições."</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Todos os controles foram removidos"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"As mudanças não foram salvas"</string>
@@ -1123,13 +1122,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Sua política de trabalho só permite fazer ligações pelo perfil de trabalho"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Alternar para o perfil de trabalho"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Fechar"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Personalizar a tela de bloqueio"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"Desbloqueie para personalizar a tela de bloqueio"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi indisponível"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Câmara bloqueada"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Câmera e microfone bloqueados"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microfone bloqueado"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Modo de prioridade ativado"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Atenção do Assistente ativada"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Defina o app de notas padrão nas Configurações"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 6d73152..6810877 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Începe"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Oprește"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modul cu o mână"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Contrast"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Mediu"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Ridicat"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Deblochezi microfonul dispozitivului?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Deblochezi camera dispozitivului?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Deblochezi camera și microfonul dispozitivului?"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"anulează marcarea ca preferată"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Mută pe poziția <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Comenzi"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Alege comenzile de accesat din Setările rapide"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Ține apăsat și trage pentru a rearanja comenzile"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Au fost șterse toate comenzile"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Modificările nu au fost salvate"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Politica privind activitatea îți permite să efectuezi apeluri telefonice numai din profilul de serviciu"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Comută la profilul de serviciu"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Închide"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Personalizează ecranul de blocare"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Conexiune Wi-Fi indisponibilă"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Camera foto a fost blocată"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microfonul a fost blocat"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Modul Cu prioritate este activat"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Asistentul este atent"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 25807f2..8454defe 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Начать"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ĐžŃŃ‚Đ°ĐœĐŸĐČоть"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Đ Đ”Đ¶ĐžĐŒ упраĐČĐ»Đ”ĐœĐžŃ ĐŸĐŽĐœĐŸĐč руĐșĐŸĐč"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"ĐšĐŸĐœŃ‚Ń€Đ°ŃŃ‚ĐœĐŸŃŃ‚ŃŒ"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"ĐĄŃ‚Đ°ĐœĐŽĐ°Ń€Ń‚ĐœĐ°Ń"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"ĐĄŃ€Đ”ĐŽĐœŃŃ"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Đ’Ń‹ŃĐŸĐșая"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Đ Đ°Đ·Đ±Đ»ĐŸĐșĐžŃ€ĐŸĐČать ĐŒĐžĐșŃ€ĐŸŃ„ĐŸĐœ ŃƒŃŃ‚Ń€ĐŸĐčстĐČа?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Đ Đ°Đ·Đ±Đ»ĐŸĐșĐžŃ€ĐŸĐČать ĐșĐ°ĐŒĐ”Ń€Ńƒ ŃƒŃŃ‚Ń€ĐŸĐčстĐČа?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Đ Đ°Đ·Đ±Đ»ĐŸĐșĐžŃ€ĐŸĐČать ĐșĐ°ĐŒĐ”Ń€Ńƒ Đž ĐŒĐžĐșŃ€ĐŸŃ„ĐŸĐœ ŃƒŃŃ‚Ń€ĐŸĐčстĐČа?"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ŃƒĐŽĐ°Đ»ĐžŃ‚ŃŒ Оз ĐžĐ·Đ±Ń€Đ°ĐœĐœĐŸĐłĐŸ"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"ĐŸĐ”Ń€Đ”ĐŒĐ”ŃŃ‚ĐžŃ‚ŃŒ ĐœĐ° ĐżĐŸĐ·ĐžŃ†ĐžŃŽ <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Đ­Đ»Đ”ĐŒĐ”ĐœŃ‚Ń‹ упраĐČĐ»Đ”ĐœĐžŃ"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ВыбДрОтД ĐČОЎжДты упраĐČĐ»Đ”ĐœĐžŃ, ĐșĐŸŃ‚ĐŸŃ€Ń‹Đ” Đ±ŃƒĐŽŃƒŃ‚ ĐŽĐŸŃŃ‚ŃƒĐżĐœŃ‹ ĐČ ĐŒĐ”ĐœŃŽ \"БыстрыД ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž\"."</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Đ§Ń‚ĐŸĐ±Ń‹ ĐžĐ·ĐŒĐ”ĐœĐžŃ‚ŃŒ ĐżĐŸŃ€ŃĐŽĐŸĐș ĐČĐžĐŽĐ¶Đ”Ń‚ĐŸĐČ, пДрДтащОтД ох."</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"ВсД ĐČОЎжДты упраĐČĐ»Đ”ĐœĐžŃ ŃƒĐŽĐ°Đ»Đ”ĐœŃ‹."</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Đ˜Đ·ĐŒĐ”ĐœĐ”ĐœĐžŃ ĐœĐ” ŃĐŸŃ…Ń€Đ°ĐœĐ”ĐœŃ‹."</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"ĐĄĐŸĐłĐ»Đ°ŃĐœĐŸ праĐČĐžĐ»Đ°ĐŒ ĐČашДĐč ĐŸŃ€ĐłĐ°ĐœĐžĐ·Đ°Ń†ĐžĐž ĐČы ĐŒĐŸĐ¶Đ”Ń‚Đ” ŃĐŸĐČĐ”Ń€ŃˆĐ°Ń‚ŃŒ Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐœŃ‹Đ” Đ·ĐČĐŸĐœĐșĐž Ń‚ĐŸĐ»ŃŒĐșĐŸ Оз Ń€Đ°Đ±ĐŸŃ‡Đ”ĐłĐŸ ĐżŃ€ĐŸŃ„ĐžĐ»Ń."</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"ĐŸĐ”Ń€Đ”Đčто ĐČ Ń€Đ°Đ±ĐŸŃ‡ĐžĐč ĐżŃ€ĐŸŃ„ĐžĐ»ŃŒ"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"ЗаĐșрыть"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž Đ·Đ°Đ±Đ»ĐŸĐș. эĐșŃ€Đ°ĐœĐ°"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Đ€ŃƒĐœĐșцоя Wi-Fi ĐœĐ”ĐŽĐŸŃŃ‚ŃƒĐżĐœĐ°"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ĐšĐ°ĐŒĐ”Ń€Đ° Đ·Đ°Đ±Đ»ĐŸĐșĐžŃ€ĐŸĐČĐ°ĐœĐ°"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"МоĐșŃ€ĐŸŃ„ĐŸĐœ Đ·Đ°Đ±Đ»ĐŸĐșĐžŃ€ĐŸĐČĐ°Đœ"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Đ Đ”Đ¶ĐžĐŒ \"ĐąĐŸĐ»ŃŒĐșĐŸ ĐČĐ°Đ¶ĐœŃ‹Đ”\" ĐČĐșĐ»ŃŽŃ‡Đ”Đœ"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"ĐŃŃĐžŃŃ‚Đ”ĐœŃ‚ ĐłĐŸŃ‚ĐŸĐČ ŃĐ»ŃƒŃˆĐ°Ń‚ŃŒ"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index a4e340c..450693e 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ආරඞ්භ කරන්න"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"නතර කරන්න"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"තනි අත් à¶Žà·Š‍රකාරà¶ș"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"අසඞානතාව"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"සඞ්ඞත"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"à¶žà¶°à·Š‍à¶șà¶ž"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"ඉහළ"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"උඎාංග à¶žà¶șික්‍රෆෝනà¶ș අවහිර කිරීඞ ඉවත් à¶šà¶»à¶±à·Šà¶±à¶Ż?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"උඎාංග කැඞරාව අවහිර කිරීඞ ඉවත් à¶šà¶»à¶±à·Šà¶±à¶Ż?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"උඎාංග කැඞරාව සහ à¶žà¶șික්‍රෆෝනà¶ș අවහිර කිරීඞ ඉවත් à¶šà¶»à¶±à·Šà¶±à¶Ż?"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"à¶Žà·Š‍රිà¶șà¶­à¶ž වෙතින් ඉවත් කරන්න"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"à·ƒà·Šà¶źà·à¶± <xliff:g id="NUMBER">%d</xliff:g> වෙත ගෙන à¶șන්න"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"ඎාගන"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ඉක්ඞන් සැකසීඞ් වෙතින් à¶Žà·Š‍රවේශ වීඞට ඎාගන තෝරා ගන්න"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"ඎාගන නැවත à¶Žà·’à·…à·’à¶șෙළ කිරීඞට අග්ගාගෙන සිට à¶…à¶Żà·’à¶±à·Šà¶±"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"සිà¶șගු ඎාගන ඉවත් කර ඇත"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"වෙනස් කිරීඞ් නොසුරැකිණි"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"ඔබේ වැඩ à¶Žà·Š‍රතිඎත්තිà¶ș ඔබට කාර්à¶șාග ඎැතිකඩෙන් à¶Žà¶žà¶«à¶šà·Š à¶Żà·”à¶»à¶šà¶źà¶± ඇඞතුඞ් ගබා ගැනීඞට ඉඩ සගසà¶șි"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"කාර්à¶șාග ඎැතිකඩ වෙත ඞාරු වන්න"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"වසන්න"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"අගුළු තිරà¶ș අභිරුචිකරණà¶ș කරන්න"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi à¶œà¶Ż නොහැක"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"කැඞරාව අවහිරà¶șි"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"à¶žà¶șික්‍රොෆෝනà¶ș අවහිරà¶șි"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"à¶Žà·Š‍රඞුඛතා à¶žà·à¶Żà·’à¶œà·’à¶ș සක්‍රීà¶șà¶șි"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"සහà¶șක අවධානà¶ș à¶șොඞු කරà¶șි"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index d59c6ae..f36fe2a 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"odstránite z obÄŸúbených"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"PresunúĆ„ na pozíciu <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Ovládacie prvky"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Vyberte ovládače, ku ktorému chcete maĆ„ prístup z rýchlych nastavení"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Polohu kaĆŸdého ovládača môĆŸete zmeniĆ„ jeho pridrĆŸaním a presunutím"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Všetky ovládače boli odstránené"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Zmeny neboli uloĆŸené"</string>
@@ -1123,13 +1122,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Pracovné pravidlá vám umoĆŸĆˆujú telefonovaĆ„ iba v pracovnom profile"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"PrepnúĆ„ na pracovný profil"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"ZavrieƄ"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"PrispôsobiĆ„ uzamknutú obrazovku"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"Ak chcete prispôsobiĆ„ uzamknutú obrazovku, odomknite ju"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi‑Fi nie je k dispozícii"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera je blokovaná"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera a mikrofón sú blokované"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofón je blokovaný"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ReĆŸim priority je zapnutý"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"PozornosĆ„ Asistenta je zapnutá"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Nastavte predvolenú aplikáciu na poznámky v Nastaveniach"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index b600337ce..9edaaae 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Začni"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Ustavi"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Enoročni način"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standardni"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Srednji"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Visok"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Ćœelite odblokirati mikrofon v napravi?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Ćœelite odblokirati fotoaparat v napravi?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Ćœelite odblokirati fotoaparat in mikrofon v napravi?"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"odstranitev iz priljubljenih"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Premakni na poloĆŸaj <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrolniki"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Izberite kontrolnike, do katerih ĆŸelite imeti dostop v hitrih nastavitvah."</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"DrĆŸite in povlecite, da prerazporedite kontrolnike."</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Vsi kontrolniki so bili odstranjeni."</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Spremembe niso shranjene"</string>
@@ -1123,13 +1126,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"SluĆŸbeni pravilnik dovoljuje opravljanje telefonskih klicev le iz delovnega profila."</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Preklopi na delovni profil"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Zapri"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Prilagajanje zaklenjenega zaslona"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"Odklenite za prilagajanje zaklenjenega zaslona"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi ni na voljo."</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Fotoaparat je blokiran."</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Fotoaparat in mikrofon sta blokirana."</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon je blokiran."</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prednostni način je vklopljen."</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Zaznavanje pomočnika je vklopljeno."</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Nastavite privzeto aplikacijo za zapiske v nastavitvah."</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index ea380a0..bcb9773 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ta heqësh nga të preferuarat"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Zhvendose te pozicioni <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrollet"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Zgjidh kontrollet për t\'u qasur nga \"Cilësimet e shpejta\""</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Mbaje të shtypur dhe zvarrit për të risistemuar kontrollet"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Të gjitha kontrollet u hoqën"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Ndryshimet nuk u ruajtën"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Politika jote e punës të lejon të bësh telefonata vetëm nga profili i punës"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Kalo te profili i punës"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Mbyll"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Personalizo ekranin e kyçjes"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi nuk ofrohet"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera u bllokua"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofoni u bllokua"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Modaliteti i përparësisë aktiv"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Vëmendja e \"Asistentit\" aktive"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 14dddd68..b2d2b94 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"уĐșĐ»ĐŸĐœĐžĐ»Đž Оз ĐŸĐŒĐžŃ™Đ”ĐœĐžŃ…"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"ĐŸŃ€Đ”ĐŒĐ”ŃŃ‚ĐžŃ‚Đ” ĐœĐ° <xliff:g id="NUMBER">%d</xliff:g>. ĐżĐŸĐ·ĐžŃ†ĐžŃ˜Ńƒ"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"ĐšĐŸĐœŃ‚Ń€ĐŸĐ»Đ”"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ОЎабДрОтД ĐșĐŸĐœŃ‚Ń€ĐŸĐ»Đ” Ўа бОстД ĐžĐŒ ĐżŃ€ĐžŃŃ‚ŃƒĐżĐžĐ»Đž Оз БрзОх ĐżĐŸĐŽĐ”ŃˆĐ°ĐČања"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"ЗаЎржОтД Đž прДĐČŃƒŃ†ĐžŃ‚Đ” Ўа бОстД ĐżŃ€ĐŸĐŒĐ”ĐœĐžĐ»Đž Ń€Đ°ŃĐżĐŸŃ€Đ”ĐŽ ĐșĐŸĐœŃ‚Ń€ĐŸĐ»Đ°"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"ĐĄĐČĐ” ĐșĐŸĐœŃ‚Ń€ĐŸĐ»Đ” су уĐșĐ»ĐŸŃšĐ”ĐœĐ”"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"ĐŸŃ€ĐŸĐŒĐ”ĐœĐ” ĐœĐžŃŃƒ сачуĐČĐ°ĐœĐ”"</string>
@@ -1047,7 +1046,7 @@
     <string name="see_all_networks" msgid="3773666844913168122">"ĐŸĐŸĐłĐ»Đ”ĐŽĐ°Ń˜Ń‚Đ” сĐČĐ”"</string>
     <string name="to_switch_networks_disconnect_ethernet" msgid="6698111101156951955">"Да бОстД ĐżŃ€ĐŸĐŒĐ”ĐœĐžĐ»Đž ĐŒŃ€Đ”Đ¶Ńƒ, прДĐșĐžĐœĐžŃ‚Đ” Đ”Ń‚Đ”Ń€ĐœĐ”Ń‚ ĐČДзу"</string>
     <string name="wifi_scan_notify_message" msgid="3753839537448621794">"РаЎО Đ±ĐŸŃ™Đ”Đł ĐŽĐŸĐ¶ĐžĐČљаја ŃƒŃ€Đ”Ń’Đ°Ń˜Đ°, аплОĐșĐ°Ń†ĐžŃ˜Đ” Đž услугД Đž ЎаљД ĐŒĐŸĐłŃƒ Ўа тражД WiFi ĐŒŃ€Đ”Đ¶Đ” у Đ±ĐžĐ»ĐŸ ĐșĐŸĐŒ Ń‚Ń€Đ”ĐœŃƒŃ‚Đșу, чаĐș Đž ĐșаЎа јД WiFi ОсĐșŃ™ŃƒŃ‡Đ”Đœ. ĐąĐŸ ĐŒĐŸĐ¶Đ”Ń‚Đ” Ўа ĐżŃ€ĐŸĐŒĐ”ĐœĐžŃ‚Đ” у ĐżĐŸĐŽĐ”ŃˆĐ°ĐČĐ°ŃšĐžĐŒĐ° WiFi сĐșĐ”ĐœĐžŃ€Đ°ŃšĐ°. "<annotation id="link">"ĐŸŃ€ĐŸĐŒĐ”ĐœĐžŃ‚Đ”"</annotation></string>
-    <string name="turn_off_airplane_mode" msgid="8425587763226548579">"ИсĐșључо Ń€Đ”Đ¶ĐžĐŒ раЮа у аĐČĐžĐŸĐœŃƒ"</string>
+    <string name="turn_off_airplane_mode" msgid="8425587763226548579">"ИсĐșŃ™ŃƒŃ‡ĐžŃ‚Đ” Ń€Đ”Đ¶ĐžĐŒ раЮа у аĐČĐžĐŸĐœŃƒ"</string>
     <string name="qs_tile_request_dialog_text" msgid="3501359944139877694">"<xliff:g id="APPNAME">%1$s</xliff:g> жДлО Ўа ĐŽĐŸĐŽĐ° ŃĐ»Đ”ĐŽĐ”Ń›Ńƒ ĐżĐ»ĐŸŃ‡ĐžŃ†Ńƒ у Брза ĐżĐŸĐŽĐ”ŃˆĐ°ĐČања"</string>
     <string name="qs_tile_request_dialog_add" msgid="4888460910694986304">"Đ”ĐŸĐŽĐ°Ń˜ ĐżĐ»ĐŸŃ‡ĐžŃ†Ńƒ"</string>
     <string name="qs_tile_request_dialog_not_add" msgid="4168716573114067296">"ĐĐ” ĐŽĐŸĐŽĐ°Ń˜ ĐżĐ»ĐŸŃ‡ĐžŃ†Ńƒ"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"ĐĄĐŒĐ”Ń€ĐœĐžŃ†Đ” за ĐżĐŸŃĐ°ĐŸ ĐČĐ°ĐŒ ĐŸĐŒĐŸĐłŃƒŃ›Đ°ĐČају Ўа Ń‚Đ”Đ»Đ”Ń„ĐŸĐœĐžŃ€Đ°Ń‚Đ” ŃĐ°ĐŒĐŸ са ĐżĐŸŃĐ»ĐŸĐČĐœĐŸĐł ĐżŃ€ĐŸŃ„ĐžĐ»Đ°"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"ĐŸŃ€Đ”Ń’Đž ĐœĐ° ĐżĐŸŃĐ»ĐŸĐČĐœĐž ĐżŃ€ĐŸŃ„ĐžĐ»"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"ЗатĐČĐŸŃ€Đž"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"ĐŸŃ€ĐžĐ»Đ°ĐłĐŸĐŽĐž заĐșŃ™ŃƒŃ‡Đ°ĐœĐž Đ”ĐșŃ€Đ°Đœ"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"WiFi ĐœĐžŃ˜Đ” ĐŽĐŸŃŃ‚ŃƒĐżĐ°Đœ"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ĐšĐ°ĐŒĐ”Ń€Đ° јД Đ±Đ»ĐŸĐșĐžŃ€Đ°ĐœĐ°"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"МоĐșŃ€ĐŸŃ„ĐŸĐœ јД Đ±Đ»ĐŸĐșĐžŃ€Đ°Đœ"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ĐŸŃ€ĐžĐŸŃ€ĐžŃ‚Đ”Ń‚ĐœĐž Ń€Đ”Đ¶ĐžĐŒ јД уĐșŃ™ŃƒŃ‡Đ”Đœ"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"ĐŸĐŸĐŒĐŸŃ›ĐœĐžĐș јД у аĐșтоĐČĐœĐŸĐŒ стању"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 5149bbf..2def56d 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Starta"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stoppa"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Enhandsläge"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"Medelhög"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Hög"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vill du återaktivera enhetens mikrofon?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Vill du återaktivera enhetens kamera?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Vill du återaktivera enhetens kamera och mikrofon?"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ta bort från favoriter"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Flytta till position <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Kontroller"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Välj kontrollerna som ska visas i snabbinställningarna"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Ändra ordning på kontrollerna genom att trycka och dra"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Alla kontroller har tagits bort"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Ändringarna har inte sparats"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Jobbprincipen tillåter endast att du ringer telefonsamtal från jobbprofilen"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Byt till jobbprofilen"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Stäng"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Anpassa låsskärmen"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wifi är inte tillgängligt"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kameran är blockerad"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofonen är blockerad"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioritetsläge är aktiverat"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistenten är aktiverad"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index eb32d9b..6f1fd67 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -792,7 +792,7 @@
     <string name="mobile_data_disable_title" msgid="5366476131671617790">"Ungependa kuzima data ya mtandao wa simu?"</string>
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"Hutaweza kufikia data au intaneti kupitia <xliff:g id="CARRIER">%s</xliff:g>. Intaneti itapatikana kupitia Wi-Fi pekee."</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"mtoa huduma wako"</string>
-    <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"Ungependa kubadili ili utumie <xliff:g id="CARRIER">%s</xliff:g>?"</string>
+    <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"Ungependa kubadilisha ili utumie data ya mtandao wa <xliff:g id="CARRIER">%s</xliff:g>?"</string>
     <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"Data ya mtandao wa simu haitabadilika kiotomatiki kulingana na upatikanaji"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"Hapana"</string>
     <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"Ndiyo, badili"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ondoa kwenye vipendwa"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Sogeza kwenye nafasi ya <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Vidhibiti"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Chagua vidhibiti vya kufikia ukitumia Mipangilio ya Haraka"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Shikilia na uburute ili upange vidhibiti upya"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Umeondoa vidhibiti vyote"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Mabadiliko hayajahifadhiwa"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Sera ya mahali pako pa kazi inakuruhusu upige simu kutoka kwenye wasifu wa kazini pekee"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Tumia wasifu wa kazini"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Funga"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Wekea mapendeleo skrini iliyofungwa"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi haipatikani"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera imezuiwa"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Maikrofoni imezuiwa"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Hali ya kipaumbele imewashwa"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Programu ya Mratibu imewashwa"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index 583ec25..21b7f33 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"àź€àŻŠàźŸàź™àŻàź•àŻ"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"àźšàźżàź±àŻàź€àŻàź€àŻ"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"àź’àź±àŻàź±àŻˆàź•àŻ àź•àŻˆàźȘàŻ àźȘàźŻàź©àŻàźźàŻàź±àŻˆ"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"àź’àźłàźż àźźàźŸàź±àŻàźȘàźŸàźŸàŻ"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"àź‡àźŻàźČàŻàźȘàŻàźšàźżàźČàŻˆ"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"àźšàźŸàŻàź€àŻàź€àź°àźźàŻ"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"àź…àź€àźżàź•àźźàŻ"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"àźšàźŸàź€àź©àź€àŻàź€àźżàź©àŻ àźźàŻˆàź•àŻàź°àŻ‹àźƒàźȘàŻ‹àź©àŻàź•àŻàź•àźŸàź© àź€àźŸàŻàźȘàŻàźȘàŻˆ àźšàŻ€àź•àŻàź•àź”àźŸ?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"àźšàźŸàź€àź©àź€àŻàź€àźżàź©àŻ àź•àŻ‡àźźàź°àźŸàź”àŻàź•àŻàź•àźŸàź© àź€àźŸàŻàźȘàŻàźȘàŻˆ àźšàŻ€àź•àŻàź•àź”àźŸ?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"àźšàźŸàź€àź©àź€àŻàź€àźżàź©àŻ àź•àŻ‡àźźàź°àźŸàź”àŻàź•àŻàź•àŻàźźàŻ àźźàŻˆàź•àŻàź°àŻ‹àźƒàźȘàŻ‹àź©àŻàź•àŻàź•àŻàźźàźŸàź© àź€àźŸàŻàźȘàŻàźȘàŻˆ àźšàŻ€àź•àŻàź•àź”àźŸ?"</string>
@@ -885,15 +889,17 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"àźȘàźżàźŸàźżàź€àŻàź€àź”àź±àŻàź±àźżàźČàźżàź°àŻàźšàŻàź€àŻ àźšàŻ€àź•àŻàź• àź‡àź°àŻàźźàŻàź±àŻˆ àź€àźŸàŻàźŸàź”àŻàźźàŻ"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g>àźźàŻ àźšàźżàźČàŻˆàź•àŻàź•àŻ àźšàź•àź°àŻàź€àŻàź€àŻ"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"àź•àźŸàŻàźŸàŻàźȘàŻàźȘàźŸàźŸàŻàź•àźłàŻ"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"àź”àźżàź°àŻˆàź”àŻ àź…àźźàŻˆàźȘàŻàźȘàŻàź•àźłàźżàźČàźżàź°àŻàźšàŻàź€àŻ àź…àźŁàŻàź•àŻàź”àź€àź±àŻàź•àźŸàź© àź•àźŸàŻàźŸàŻàźȘàŻàźȘàźŸàźŸàŻàź•àźłàŻˆàź€àŻ àź€àŻ‡àź°àŻàźšàŻàź€àŻ†àźŸàŻàź™àŻàź•àźłàŻ"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"àź•àźŸàŻàźŸàŻàźȘàŻàźȘàźŸàźŸàŻàź•àźłàŻˆ àźźàź±àŻàź”àź°àźżàźšàŻˆàźȘàŻàźȘàźŸàŻàź€àŻàź€ àź…àź”àź±àŻàź±àŻˆàźȘàŻ àźȘàźżàźŸàźżàź€àŻàź€àŻ àź‡àźŽàŻàź•àŻàź•àź”àŻàźźàŻ"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"àź•àźŸàŻàźŸàŻàźȘàŻàźȘàźŸàźŸàŻàź•àźłàŻ àź…àź©àŻˆàź€àŻàź€àŻàźźàŻ àź…àź•àź±àŻàź±àźȘàŻàźȘàźŸàŻàźŸàź©"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"àźźàźŸàź±àŻàź±àź™àŻàź•àźłàŻ àźšàŻ‡àźźàźżàź•àŻàź•àźȘàŻàźȘàźŸàź”àźżàźČàŻàźČàŻˆ"</string>
     <string name="controls_favorite_see_other_apps" msgid="7709087332255283460">"àźȘàźżàź± àź†àźȘàŻàźžàŻˆàźŻàŻàźźàŻ àź•àźŸàźŸàŻàźŸàŻ"</string>
-    <string name="controls_favorite_rearrange_button" msgid="2942788904364641185">"àźźàź±àŻàź”àź°àźżàźšàŻˆàźȘàŻàźȘàźŸàŻàź€àŻàź€àŻ"</string>
-    <string name="controls_favorite_add_controls" msgid="1221420435546694004">"àź•àźŸàŻàźŸàŻàźȘàŻàźȘàźŸàźŸàŻàź•àźłàŻˆàźšàŻ àźšàŻ‡àź°àŻ"</string>
-    <string name="controls_favorite_back_to_editing" msgid="184125114090062713">"àź€àźżàź°àŻàź€àŻàź€àŻàź€àźČàŻàź•àŻàź•àŻàźšàŻ àźšàŻ†àźČàŻ"</string>
+    <!-- no translation found for controls_favorite_rearrange_button (2942788904364641185) -->
+    <skip />
+    <!-- no translation found for controls_favorite_add_controls (1221420435546694004) -->
+    <skip />
+    <!-- no translation found for controls_favorite_back_to_editing (184125114090062713) -->
+    <skip />
     <string name="controls_favorite_load_error" msgid="5126216176144877419">"àź•àźŸàŻàźŸàŻàźȘàŻàźȘàźŸàźŸàŻàź•àźłàŻˆ àźàź±àŻàź± àźźàŻàźŸàźżàźŻàź”àźżàźČàŻàźČàŻˆ. àź†àźȘàŻàźžàŻ àź…àźźàŻˆàźȘàŻàźȘàŻàź•àźłàŻ àźźàźŸàź±àź”àźżàźČàŻàźČàŻˆ àźŽàź©àŻàźȘàź€àŻˆ àź‰àź±àŻàź€àźżàźȘàŻàźȘàźŸàŻàź€àŻàź€ <xliff:g id="APP">%s</xliff:g> àź†àźȘàŻàźžàŻˆàźȘàŻ àźȘàźŸàź°àŻàź•àŻàź•àź”àŻàźźàŻ."</string>
     <string name="controls_favorite_load_none" msgid="7687593026725357775">"àź‡àźŁàź•àŻàź•àźźàźŸàź© àź•àźŸàŻàźŸàŻàźȘàŻàźȘàźŸàźŸàŻàź•àźłàŻ àź‡àźČàŻàźČàŻˆ"</string>
     <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"àźȘàźżàź±"</string>
@@ -1039,7 +1045,7 @@
     <string name="non_carrier_network_unavailable" msgid="770049357024492372">"àź”àŻ‡àź±àŻ àźšàŻ†àźŸàŻàź”àŻŠàź°àŻàź•àŻàź•àŻàź•àźłàŻ àźŽàź€àŻàź”àŻàźźàŻ àź•àźżàźŸàŻˆàź•àŻàź•àź”àźżàźČàŻàźČàŻˆ"</string>
     <string name="all_network_unavailable" msgid="4112774339909373349">"àźšàŻ†àźŸàŻàź”àŻŠàź°àŻàź•àŻàź•àŻàź•àźłàŻ àźŽàź€àŻàź”àŻàźźàŻ àź•àźżàźŸàŻˆàź•àŻàź•àź”àźżàźČàŻàźČàŻˆ"</string>
     <string name="turn_on_wifi" msgid="1308379840799281023">"àź”àŻˆàźƒàźȘàŻˆ"</string>
-    <string name="tap_a_network_to_connect" msgid="1565073330852369558">"àź‡àźŁàŻˆàź•àŻàź• àźšàŻ†àźŸàŻàź”àŻŠàź°àŻàź•àŻàź•àŻˆàź€àŻ àź€àźŸàŻàźŸàŻàź™àŻàź•àźłàŻ"</string>
+    <string name="tap_a_network_to_connect" msgid="1565073330852369558">"àź‡àźŁàŻˆàźŻ àźšàŻ†àźŸàŻàź”àŻŠàź°àŻàź•àŻàź•àŻˆàź€àŻ àź€àźŸàŻàźŸàŻàź™àŻàź•àźłàŻ"</string>
     <string name="unlock_to_view_networks" msgid="5072880496312015676">"àźšàŻ†àźŸàŻàź”àŻŠàź°àŻàź•àŻàź•àŻàź•àźłàŻˆàźȘàŻ àźȘàźŸàź°àŻàź•àŻàź• àź…àź©àŻàźČàźŸàź•àŻ àźšàŻ†àźŻàŻàźŻàŻàź™àŻàź•àźłàŻ"</string>
     <string name="wifi_empty_list_wifi_on" msgid="3864376632067585377">"àźšàŻ†àźŸàŻàź”àŻŠàź°àŻàź•àŻàź•àŻàź•àźłàŻˆàź€àŻ àź€àŻ‡àźŸàŻàź•àźżàź±àź€àŻ…"</string>
     <string name="wifi_failed_connect_message" msgid="4161863112079000071">"àźšàŻ†àźŸàŻàź”àŻŠàź°àŻàź•àŻàź•àŻàźŸàź©àŻ àź‡àźŁàŻˆàź•àŻàź• àźźàŻàźŸàźżàźŻàź”àźżàźČàŻàźČàŻˆ"</string>
@@ -1123,8 +1129,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"àź‰àź™àŻàź•àźłàŻ àźȘàźŁàźżàź•àŻ àź•àŻŠàźłàŻàź•àŻˆàźŻàźżàź©àŻàźȘàźŸàźż àźšàŻ€àź™àŻàź•àźłàŻ àźȘàźŁàźżàź•àŻ àź•àźŁàź•àŻàź•àźżàźČàŻ àź‡àź°àŻàźšàŻàź€àŻ àźźàźŸàŻàźŸàŻàźźàŻ‡ àźƒàźȘàŻ‹àź©àŻ àź…àźŽàŻˆàźȘàŻàźȘàŻàź•àźłàŻˆàźšàŻ àźšàŻ†àźŻàŻàźŻ àźźàŻàźŸàźżàźŻàŻàźźàŻ"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"àźȘàźŁàźżàź•àŻ àź•àźŁàź•àŻàź•àźżàź±àŻàź•àŻ àźźàźŸàź±àŻ"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"àźźàŻ‚àźŸàŻàź•"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"àźȘàŻ‚àźŸàŻàźŸàŻàź€àŻ àź€àźżàź°àŻˆàźŻàŻˆ àźȘàźżàź°àź€àŻàź€àźżàźŻàŻ‡àź•àźźàźŸàź•àŻàź•àŻ"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"àź”àŻˆàźƒàźȘàŻˆ àź•àźżàźŸàŻˆàź•àŻàź•àź”àźżàźČàŻàźČàŻˆ"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"àź•àŻ‡àźźàź°àźŸ àź€àźŸàŻàź•àŻàź•àźȘàŻàźȘàźŸàŻàźŸàŻàźłàŻàźłàź€àŻ"</string>
@@ -1132,6 +1137,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"àźźàŻˆàź•àŻàź°àŻ‹àźƒàźȘàŻ‹àź©àŻ àź€àźŸàŻàź•àŻàź•àźȘàŻàźȘàźŸàŻàźŸàŻàźłàŻàźłàź€àŻ"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"àźźàŻàź©àŻàź©àŻàź°àźżàźźàŻˆàźȘàŻ àźȘàźŻàź©àŻàźźàŻàź±àŻˆ àź‡àźŻàź•àŻàź•àź€àŻàź€àźżàźČàŻ àź‰àźłàŻàźłàź€àŻ"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"àź…àźšàźżàźžàŻàźŸàźŁàŻàźŸàŻàźŸàźżàź©àŻ àź•àź”àź©àźźàŻ àź‡àźŻàź•àŻàź•àź€àŻàź€àźżàźČàŻ àź‰àźłàŻàźłàź€àŻ"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index 8ada2ee..0c09493 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -182,7 +182,7 @@
     <string name="accessibility_not_connected" msgid="4061305616351042142">"కచెక్ట్ à°šà±‡à°Żà°Źà°Ąà°Čేఊు."</string>
     <string name="data_connection_roaming" msgid="375650836665414797">"à°°à±‹à°źà°żà°‚à°—à±"</string>
     <string name="cell_data_off" msgid="4886198950247099526">"ఆఫ్ à°šà±‡à°Żà°‚à°Ąà°ż"</string>
-    <string name="accessibility_airplane_mode" msgid="1899529214045998505">"à°”à°żà°źà°Ÿà°šà°‚ à°źà±‹à°Ąà±."</string>
+    <string name="accessibility_airplane_mode" msgid="1899529214045998505">"à°Žà°Żà°żà°°à±‌à°Ș్à°Čేచ్ à°źà±‹à°Ąà±."</string>
     <string name="accessibility_vpn_on" msgid="8037549696057288731">"VPNà°Čో."</string>
     <string name="accessibility_battery_level" msgid="5143715405241138822">"à°Źà±à°Żà°Ÿà°Ÿà°°à±€ <xliff:g id="NUMBER">%d</xliff:g> శటఀం."</string>
     <string name="accessibility_battery_level_with_estimate" msgid="6548654589315074529">"à°Źà±à°Żà°Ÿà°Ÿà°°à±€ <xliff:g id="PERCENTAGE">%1$d</xliff:g> శటఀం, <xliff:g id="TIME">%2$s</xliff:g> à°‰à°‚à°Ÿà±à°‚à°Šà°ż"</string>
@@ -246,7 +246,7 @@
     <string name="quick_settings_user_title" msgid="8673045967216204537">"à°Żà±‚à°œà°°à±"</string>
     <string name="quick_settings_wifi_label" msgid="2879507532983487244">"Wi-Fi"</string>
     <string name="quick_settings_internet_label" msgid="6603068555872455463">"ఇంటర్చెట్"</string>
-    <string name="quick_settings_networks_available" msgid="1875138606855420438">"à°…à°‚à°Šà±à°Źà°Ÿà°Ÿà±à°Čో ఉచ్చ చెట్‌ఔర్క్‌à°Čు"</string>
+    <string name="quick_settings_networks_available" msgid="1875138606855420438">"చెట్‌ఔర్క్‌à°Čు à°…à°‚à°Šà±à°Źà°Ÿà°Ÿà±à°Čో à°‰à°šà±à°šà°Ÿà°Żà°ż"</string>
     <string name="quick_settings_networks_unavailable" msgid="1167847013337940082">"చెట్‌ఔర్క్‌à°Čు à°…à°‚à°Šà±à°Źà°Ÿà°Ÿà±à°Čో à°Čేఔు"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="483130889414601732">"Wi-Fi చెట్‌ఔర్క్‌à°Čు ఏఔీ à°…à°‚à°Šà±à°Źà°Ÿà°Ÿà±à°Čో à°Čేఔు"</string>
     <string name="quick_settings_wifi_secondary_label_transient" msgid="7501659015509357887">"ఆచ్ à°šà±‡à°žà±à°€à±‹à°‚à°Šà°ż…"</string>
@@ -520,7 +520,7 @@
     <string name="qr_code_scanner_title" msgid="1938155688725760702">"QR à°•à±‹à°Ąà± ఞ్కటచర్"</string>
     <string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"అà°Ș్‌à°Ąà±‡à°Ÿà± à°šà±‡à°žà±à°€à±‹à°‚à°Šà°ż"</string>
     <string name="status_bar_work" msgid="5238641949837091056">"ఆఫీఞ్ à°Ș్రొఫైà°Č్‌"</string>
-    <string name="status_bar_airplane" msgid="4848702508684541009">"à°”à°żà°źà°Ÿà°šà°‚ à°źà±‹à°Ąà±"</string>
+    <string name="status_bar_airplane" msgid="4848702508684541009">"à°Žà°Żà°żà°°à±‌à°Ș్à°Čేచ్ à°źà±‹à°Ąà±"</string>
     <string name="zen_alarm_warning" msgid="7844303238486849503">"à°źà±€à°°à± <xliff:g id="WHEN">%1$s</xliff:g> ఞెట్ à°šà±‡à°žà°żà°š à°źà±€ ఀర్ఔటఀ అà°Čà°Ÿà°°à°‚ à°źà±€à°•à± à°”à°żà°šà°żà°Șà°żà°‚à°šà°Šà±"</string>
     <string name="alarm_template" msgid="2234991538018805736">"<xliff:g id="WHEN">%1$s</xliff:g>à°•à°ż"</string>
     <string name="alarm_template_far" msgid="3561752195856839456">"<xliff:g id="WHEN">%1$s</xliff:g>à°•à°ż"</string>
@@ -793,7 +793,7 @@
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"\"<xliff:g id="CARRIER">%s</xliff:g>\" ఊ్ఔటరట à°źà±€à°•à± à°Ąà±‡à°Ÿà°Ÿ à°Čేఊట ఇంటర్చెట్‌కు à°Żà°Ÿà°•à±à°žà±†à°žà± à°‰à°‚à°Ąà°Šà±. Wi-Fi ఊ్ఔటరట à°źà°Ÿà°€à±à°°à°źà±‡ ఇంటర్చెట్ à°…à°‚à°Šà±à°Źà°Ÿà°Ÿà±à°Čో à°‰à°‚à°Ÿà±à°‚à°Šà°ż."</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"à°źà±€ à°•à±à°Żà°Ÿà°°à°żà°Żà°°à±"</string>
     <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"<xliff:g id="CARRIER">%s</xliff:g>à°•à°ż à°€à°żà°°à°żà°—à°ż à°źà°Ÿà°°à°Ÿà°Čà°Ÿ?"</string>
-    <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"à°Čà°­à±à°Żà°€ ఆధటరంగట à°źà±Šà°Źà±ˆà°Č్ à°Ąà±‡à°Ÿà°Ÿ à°†à°Ÿà±‹à°źà±‡à°Ÿà°żà°•à±‌à°—à°Ÿ à°źà°Ÿà°°à°Šà±"</string>
+    <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"à°źà±Šà°Źà±ˆà°Č్ à°Ąà±‡à°Ÿà°Ÿ à°Čà°­à±à°Żà°€ ఆధటరంగట à°†à°Ÿà±‹à°źà±‡à°Ÿà°żà°•à±‌à°—à°Ÿ à°žà±à°”à°żà°šà± అఔ్ఔఊు"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"ఔఊ్ఊు, à°„à±à°Żà°Ÿà°‚à°•à±à°žà±"</string>
     <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"అఔుచు, à°źà°Ÿà°°à±à°šà°‚à°Ąà°ż"</string>
     <string name="touch_filtered_warning" msgid="8119511393338714836">"à°…à°šà±à°źà°€à°ż à°°à°żà°•à±à°”à±†à°žà±à°Ÿà±‌కు ఒక à°Żà°Ÿà°Ș్ à°…à°Ąà±à°Ąà± ఀగుà°Čుఀుచ్చంఊుచ à°žà±†à°Ÿà±à°Ÿà°żà°‚à°—à±‌à°Čు à°źà±€ à°Șà±à°°à°€à°żà°žà±à°Șంఊచచు à°§à±ƒà°”à±€à°•à°°à°żà°‚à°šà°Čేకà°Șà±‹à°Żà°Ÿà°Żà°ż."</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"à°‡à°·à±à°Ÿà°źà±ˆà°šà°Šà°żà°—à°Ÿ à°Șà±†à°Ÿà±à°Ÿà°żà°š గుర్ఀుచు à°€à±€à°žà°żà°”à±‡à°Żà°‚à°Ąà°ż"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g> à°Șà±Šà°œà°żà°·à°šà±‌కు ఀరà°Čà°żà°‚à°šà°‚à°Ąà°ż"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"à°šà°żà°Żà°‚à°€à±à°°à°Łà°Čు"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"à°€à±à°”à°°à°żà°€ à°žà±†à°Ÿà±à°Ÿà°żà°‚à°—à±‌à°Č à°šà±à°‚à°Ąà°ż à°Żà°Ÿà°•à±à°žà±†à°žà± à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż కంట్రోà°Č్ఞ్‌చు à°Žà°‚à°šà±à°•à±‹à°‚à°Ąà°ż"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"కంట్రోà°Č్ఞ్ à°•à±à°°à°źà°‚ à°źà°Ÿà°°à±à°šà°Ąà°Ÿà°šà°żà°•à°ż à°Šà±‡à°šà±à°šà°Żà°żà°šà°Ÿ à°Șà°Ÿà±à°Ÿà±à°•à±à°šà°ż, à°Čà°Ÿà°—à°ż ఔఊà°Čà°‚à°Ąà°ż"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"à°…à°šà±à°šà°ż కంట్రోà°Č్ఞ్ à°€à±€à°žà°żà°”à±‡à°Żà°Źà°Ąà±à°Ąà°Ÿà°Żà°ż"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"à°źà°Ÿà°°à±à°Șుà°Čు ఞేఔ్ à°šà±‡à°Żà°Źà°Ąà°Čేఊు"</string>
@@ -1055,7 +1054,7 @@
     <string name="fgs_manager_footer_label" msgid="8276763570622288231">"{count,plural, =1{# à°Żà°Ÿà°Ș్ à°Żà°Ÿà°•à±à°Ÿà°żà°”à±‌à°—à°Ÿ à°‰à°‚à°Šà°ż}other{# à°Żà°Ÿà°Ș్‌à°Čు à°Żà°Ÿà°•à±à°Ÿà°żà°”à±‌à°—à°Ÿ à°‰à°šà±à°šà°Ÿà°Żà°ż}}"</string>
     <string name="fgs_dot_content_description" msgid="2865071539464777240">"కొఀ్ఀ à°žà°źà°Ÿà°šà°Ÿà°°à°‚"</string>
     <string name="fgs_manager_dialog_title" msgid="5879184257257718677">"à°Żà°Ÿà°•à±à°Ÿà°żà°”à±‌à°—à°Ÿ ఉచ్చ à°Żà°Ÿà°Ș్‌à°Čు"</string>
-    <string name="fgs_manager_dialog_message" msgid="2670045017200730076">"à°źà±€à°°à± à°”à°Ÿà°Ÿà°żà°šà°ż ఉà°Șà°Żà±‹à°—à°żà°‚à°šà°šà°Ș్à°Șà°Ÿà°żà°•à±€, ఈ à°Żà°Ÿà°Ș్‌à°Čు à°Żà°Ÿà°•à±à°Ÿà°żà°”à±‌à°—à°Ÿ à°‰à°‚à°Ÿà°Ÿà°Żà°ż, రచ్ à°…à°”à±à°€à°Ÿà°Żà°ż. à°‡à°Šà°ż à°”à°Ÿà°Ÿà°ż ఫంక్షచటà°Čà°żà°Ÿà±€à°šà°ż à°źà±†à°°à±à°—à±à°Șà°°à±à°žà±à°€à±à°‚à°Šà°ż, à°…à°Żà°żà°€à±‡ à°‡à°Šà°ż à°Źà±à°Żà°Ÿà°Ÿà°°à±€ à°œà±€à°”à°żà°€à°•à°Ÿà°Čà°Ÿà°šà±à°šà°ż à°•à±‚à°Ąà°Ÿ à°Șà±à°°à°­à°Ÿà°”à°żà°€à°‚ à°šà±‡à°Żà°”à°šà±à°šà±."</string>
+    <string name="fgs_manager_dialog_message" msgid="2670045017200730076">"à°źà±€à°°à± à°”à°Ÿà°Ÿà°żà°šà°ż ఉà°Șà°Żà±‹à°—à°żà°‚à°šà°šà°Ș్à°Șà°Ÿà°żà°•à±€, ఈ à°Żà°Ÿà°Ș్‌à°Čు à°Żà°Ÿà°•à±à°Ÿà°żà°”à±‌à°—à°Ÿ à°‰à°‚à°Ÿà°Ÿà°Żà°ż, రచ్ à°…à°”à±à°€à°Ÿà°Żà°ż. à°‡à°Šà°ż à°”à°Ÿà°°à°ż ఫంక్షచటà°Čà°żà°Ÿà±€à°šà°ż à°źà±†à°°à±à°—à±à°Șà°°à±à°žà±à°€à±à°‚à°Šà°ż, à°…à°Żà°żà°€à±‡ à°‡à°Šà°ż à°Źà±à°Żà°Ÿà°Ÿà°°à±€ à°œà±€à°”à°żà°€à°•à°Ÿà°Čà°Ÿà°šà±à°šà°ż à°•à±‚à°Ąà°Ÿ à°Șà±à°°à°­à°Ÿà°”à°żà°€à°‚ à°šà±‡à°Żà°”à°šà±à°šà±."</string>
     <string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"ఆà°Șà°żà°”à±‡à°Żà°‚à°Ąà°ż"</string>
     <string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"ఆà°Șà°żà°”à±‡à°Żà°Źà°Ąà°żà°‚à°Šà°ż"</string>
     <string name="clipboard_edit_text_done" msgid="4551887727694022409">"à°Șà±‚à°°à±à°€à°Żà°żà°‚à°Šà°ż"</string>
@@ -1123,13 +1122,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"à°źà±€ ఔర్క్ à°Șà°Ÿà°Čà°žà±€, à°źà°żà°źà±à°źà°Čà±à°šà°ż ఔర్క్ à°Ș్రొఫైà°Č్ à°šà±à°‚à°Ąà°ż à°źà°Ÿà°€à±à°°à°źà±‡ ఫోచ్ à°•à°Ÿà°Č్ఞ్ à°šà±‡à°Żà°Ąà°Ÿà°šà°żà°•à°ż à°…à°šà±à°źà°€à°żà°žà±à°€à±à°‚à°Šà°ż"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"ఔర్క్ à°Ș్రొఫైà°Č్‌కు à°źà°Ÿà°°à°‚à°Ąà°ż"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"à°źà±‚à°žà°żà°”à±‡à°Żà°‚à°Ąà°ż"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"à°Čటక్ ఞ్క్రీచ్‌చు అచుకూà°Čà±€à°•à°°à°żà°‚à°šà°‚à°Ąà°ż"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"à°Čటక్ ఞ్క్రీచ్‌చు అచుకూà°Čà°‚à°—à°Ÿ à°źà°Ÿà°°à±à°šà±à°•à±‹à°”à°Ąà°Ÿà°šà°żà°•à°ż అచ్‌à°Čటక్ à°šà±‡à°Żà°‚à°Ąà°ż"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi à°…à°‚à°Šà±à°Źà°Ÿà°Ÿà±à°Čో à°Čేఊు"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"à°•à±†à°źà±†à°°à°Ÿ à°Źà±à°Čటక్ à°šà±‡à°Żà°Źà°Ąà°żà°‚à°Šà°ż"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"à°•à±†à°źà±†à°°à°Ÿ, à°źà±ˆà°•à±à°°à±‹à°«à±‹à°šà± à°Źà±à°Čటక్ à°šà±‡à°Żà°Źà°Ąà±à°Ąà°Ÿà°Żà°ż"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"à°źà±ˆà°•à±à°°à±‹à°«à±‹à°šà± à°Źà±à°Čటక్ à°šà±‡à°Żà°Źà°Ąà°żà°‚à°Šà°ż"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"à°Șà±à°°à°Żà°Ÿà°°à°żà°Ÿà±€ à°źà±‹à°Ąà± ఆచ్‌à°Čో à°‰à°‚à°Šà°ż"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistant అటెచ్షచ్ ఆచ్‌à°Čో à°‰à°‚à°Šà°ż"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"à°žà±†à°Ÿà±à°Ÿà°żà°‚à°—à±‌à°Čà°Čో à°†à°Ÿà±‹à°źà±‡à°Ÿà°żà°•à±‌à°—à°Ÿ à°‰à°‚à°Ąà±‡à°Čà°Ÿ ఒక చోట్ఞ్ à°Żà°Ÿà°Ș్‌చు ఞెట్ à°šà±‡à°žà±à°•à±‹à°‚à°Ąà°ż"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-te/tiles_states_strings.xml b/packages/SystemUI/res/values-te/tiles_states_strings.xml
index 9d2b407..6549c56 100644
--- a/packages/SystemUI/res/values-te/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-te/tiles_states_strings.xml
@@ -169,12 +169,12 @@
   <string-array name="tile_states_onehanded">
     <item msgid="8189342855739930015">"à°…à°‚à°Šà±à°Źà°Ÿà°Ÿà±à°Čో à°Čేఊు"</item>
     <item msgid="146088982397753810">"ఆఫ్"</item>
-    <item msgid="460891964396502657">"ఆచ్‌à°Čో à°‰à°‚à°Šà°ż"</item>
+    <item msgid="460891964396502657">"ఆచ్"</item>
   </string-array>
   <string-array name="tile_states_dream">
     <item msgid="6184819793571079513">"à°…à°‚à°Šà±à°Źà°Ÿà°Ÿà±à°Čో à°Čేరు"</item>
     <item msgid="8014986104355098744">"ఆఫ్"</item>
-    <item msgid="5966994759929723339">"ఆచ్‌à°Čో à°‰à°‚à°Šà°ż"</item>
+    <item msgid="5966994759929723339">"ఆచ్"</item>
   </string-array>
   <string-array name="tile_states_font_scaling">
     <item msgid="3173069902082305985">"à°…à°‚à°Šà±à°Źà°Ÿà°Ÿà±à°Čో à°Čేఊు"</item>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index ce35c40..ed8db9c 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -237,10 +237,10 @@
     <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"àž«àžĄàžžàž™àž­àž±àž•àč‚àž™àžĄàž±àž•àžŽ"</string>
     <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"àž«àžĄàžžàž™àž«àž™àč‰àžČàžˆàž­àž­àž±àž•àč‚àž™àžĄàž±àž•àžŽ"</string>
     <string name="quick_settings_location_label" msgid="2621868789013389163">"àž•àžłàčàž«àž™àčˆàž‡"</string>
-    <string name="quick_settings_screensaver_label" msgid="1495003469366524120">"àž àžČàžžàžžàž±àžàž«àž™àč‰àžČàžˆàž­"</string>
+    <string name="quick_settings_screensaver_label" msgid="1495003469366524120">"àč‚àž›àžŁàčàžàžŁàžĄàžŁàž±àžàž©àžČàž«àž™àč‰àžČàžˆàž­"</string>
     <string name="quick_settings_camera_label" msgid="5612076679385269339">"àžȘàžŽàž—àž˜àžŽàčŒàč€àž‚àč‰àžČàž–àž¶àž‡àžàž„àč‰àž­àž‡"</string>
-    <string name="quick_settings_mic_label" msgid="8392773746295266375">"àžȘàžŽàž—àž˜àžŽàčŒàč€àž‚àč‰àžČàž–àž¶àž‡àč„àžĄàž„àčŒ"</string>
-    <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"àžžàžŁàč‰àž­àžĄàčƒàžŠàč‰àž‡àžČàž™"</string>
+    <string name="quick_settings_mic_label" msgid="8392773746295266375">"àžȘàžŽàž—àž˜àžŽàčŒàč€àž‚àč‰àžČàž–àž¶àž‡àč„àžĄàč‚àž„àžŁàč‚àžŸàž™"</string>
+    <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"àžžàžŁàč‰àž­àžĄàčƒàž«àč‰àčƒàžŠàč‰àž‡àžČàž™"</string>
     <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"àž–àžčàžàžšàž„àč‡àž­àž"</string>
     <string name="quick_settings_media_device_label" msgid="8034019242363789941">"àž­àžžàž›àžàžŁàž“àčŒàžȘàž·àčˆàž­"</string>
     <string name="quick_settings_user_title" msgid="8673045967216204537">"àžœàžčàč‰àčƒàžŠàč‰"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"àž™àžłàž­àž­àžàžˆàžČàžàžŁàžČàžąàžàžČàžŁàč‚àž›àžŁàž”"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"àžąàč‰àžČàžąàč„àž›àž—àž”àčˆàž•àžłàčàž«àž™àčˆàž‡ <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"àžàžČàžŁàž„àž§àžšàž„àžžàžĄ"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"àč€àž„àž·àž­àžàž•àž±àž§àž„àž§àžšàž„àžžàžĄàž—àž”àčˆàž•àč‰àž­àž‡àžàžČàžŁàčƒàž«àč‰àč€àž‚àč‰àžČàž–àž¶àž‡àč„àž”àč‰àžˆàžČàžàžàžČàžŁàž•àž±àč‰àž‡àž„àčˆàžČàž”àčˆàž§àž™"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"àčàž•àž°àž•àž±àž§àž„àž§àžšàž„àžžàžĄàž„àč‰àžČàž‡àč„àž§àč‰àčàž„àč‰àž§àž„àžČàžàč€àžžàž·àčˆàž­àžˆàž±àž”àč€àžŁàž”àžąàž‡àčƒàž«àžĄàčˆ"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"àž™àžłàž•àž±àž§àž„àž§àžšàž„àžžàžĄàž—àž±àč‰àž‡àž«àžĄàž”àž­àž­àžàčàž„àč‰àž§"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"àžąàž±àž‡àč„àžĄàčˆàč„àž”àč‰àžšàž±àž™àž—àž¶àžàžàžČàžŁàč€àž›àž„àž”àčˆàžąàž™àčàž›àž„àž‡"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"àž™àč‚àžąàžšàžČàžąàžàžČàžŁàž—àžłàž‡àžČàž™àž­àž™àžžàžàžČàž•àčƒàž«àč‰àž„àžžàž“àč‚àž—àžŁàž­àž­àžàč„àž”àč‰àžˆàžČàžàč‚àž›àžŁàč„àžŸàž„àčŒàž‡àžČàž™àč€àž—àčˆàžČàž™àž±àč‰àž™"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"àžȘàž„àž±àžšàč„àž›àčƒàžŠàč‰àč‚àž›àžŁàč„àžŸàž„àčŒàž‡àžČàž™"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"àž›àžŽàž”"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"àž›àžŁàž±àžšàčàž•àčˆàž‡àž«àž™àč‰àžČàžˆàž­àž„àč‡àž­àž"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi àč„àžĄàčˆàžžàžŁàč‰àž­àžĄàčƒàžŠàč‰àž‡àžČàž™"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"àžàž„àč‰àž­àž‡àž–àžčàžàžšàž„àč‡àž­àžàž­àžąàžčàčˆ"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"àč„àžĄàč‚àž„àžŁàč‚àžŸàž™àž–àžčàžàžšàž„àč‡àž­àžàž­àžąàžčàčˆ"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"àč‚àž«àžĄàž”àž„àžłàž”àž±àžšàž„àž§àžČàžĄàžȘàžłàž„àž±àžàč€àž›àžŽàž”àž­àžąàžčàčˆ"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"àžàžČàžŁàč€àžŁàž”àžąàžàčƒàžŠàč‰àž‡àžČàž™ Assistant àč€àž›àžŽàž”àž­àžąàžčàčˆ"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 527a2f6..ceee606 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"alisin sa paborito"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Ilipat sa posisyong <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Mga Kontrol"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Pumili ng mga kontrol na maa-access mula sa Mga Mabilisang Setting"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"I-hold at i-drag para baguhin ang pagkakaayos ng mga kontrol"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Inalis ang lahat ng kontrol"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Hindi na-save ang mga pagbabago"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Pinapayagan ka ng iyong patakaran sa trabaho na tumawag lang mula sa profile sa trabaho"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Lumipat sa profile sa trabaho"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Isara"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"I-customize ang lock screen"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Hindi available ang Wi-Fi"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Naka-block ang camera"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Naka-block ang mikropono"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Naka-on ang Priority mode"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Naka-on ang atensyon ng Assistant"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index cb50462..1fde899 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -793,7 +793,7 @@
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"<xliff:g id="CARRIER">%s</xliff:g> üzerinden veri veya internet erißiminiz olmayacak. İnternet yalnızca kablosuz bağlantı üzerinden kullanılabilecek."</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"operatörünüz"</string>
     <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"<xliff:g id="CARRIER">%s</xliff:g> operatörüne geri dönülsün mü?"</string>
-    <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"Kullanılabilir olduğunda otomatik olarak mobil veriye geçilmez"</string>
+    <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"Uygunluk durumuna göre otomatik olarak mobil veriye geçilmez"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"Hayır, teßekkürler"</string>
     <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"Evet, geçilsin"</string>
     <string name="touch_filtered_warning" msgid="8119511393338714836">"Bir uygulama bir izin isteğinin anlaßılmasını engellediğinden, Ayarlar, yanıtınızı doğrulayamıyor."</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"favorilerden kaldırın"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g>. konuma taßı"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Kontroller"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Hızlı Ayarlar\'dan erißmek istediğiniz kontrolleri seçin"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Denetimleri yeniden düzenlemek için basılı tutup sürükleyin"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Tüm denetimler kaldırıldı"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Değißiklikler kaydedilmedi"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"İßletme politikanız yalnızca iß profilinden telefon araması yapmanıza izin veriyor"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"İß profiline geç"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Kapat"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Kilit ekranını özelleßtir"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Kablosuz bağlantı kullanılamıyor"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera engellendi"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon engellendi"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Öncelik modu etkin"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Asistan dinliyor"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index d236f50..d61f52e 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ĐŸĐŸŃ‡Đ°Ń‚Đž"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Đ—ŃƒĐżĐžĐœĐžŃ‚Đž"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Đ Đ”Đ¶ĐžĐŒ ĐșĐ”Ń€ŃƒĐČĐ°ĐœĐœŃ ĐŸĐŽĐœŃ–Ń”ŃŽ руĐșĐŸŃŽ"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"ĐšĐŸĐœŃ‚Ń€Đ°ŃŃ‚"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"ĐĄŃ‚Đ°ĐœĐŽĐ°Ń€Ń‚ĐœĐžĐč"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"ĐĄĐ”Ń€Đ”ĐŽĐœŃ–Đč"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"Đ’ĐžŃĐŸĐșĐžĐč"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"НаЮато ĐŽĐŸŃŃ‚ŃƒĐż ĐŽĐŸ ĐŒŃ–ĐșŃ€ĐŸŃ„ĐŸĐœĐ°?"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"НаЮато ĐŽĐŸŃŃ‚ŃƒĐż ĐŽĐŸ ĐșĐ°ĐŒĐ”Ń€Đž ĐżŃ€ĐžŃŃ‚Ń€ĐŸŃŽ?"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"НаЮато ĐŽĐŸŃŃ‚ŃƒĐż ĐŽĐŸ ĐșĐ°ĐŒĐ”Ń€Đž Đč ĐŒŃ–ĐșŃ€ĐŸŃ„ĐŸĐœĐ°?"</string>
@@ -795,7 +799,7 @@
     <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"ĐŸĐ”Ń€Đ”Đčто ĐœĐ° <xliff:g id="CARRIER">%s</xliff:g>?"</string>
     <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"ПростріĐč ĐœĐ” ĐżĐ”Ń€Đ”ĐŒĐžĐșĐ°Ń‚ĐžĐŒĐ”Ń‚ŃŒŃŃ ĐœĐ° ĐŒĐŸĐ±Ń–Đ»ŃŒĐœĐžĐč Đ†ĐœŃ‚Đ”Ń€ĐœĐ”Ń‚ аĐČŃ‚ĐŸĐŒĐ°Ń‚ĐžŃ‡ĐœĐŸ"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"Ні, ЮяĐșую"</string>
-    <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"йаĐș"</string>
+    <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"йаĐș, ĐżĐ”Ń€Đ”ĐŒĐžĐșатося"</string>
     <string name="touch_filtered_warning" msgid="8119511393338714836">"ĐĐ” ĐČЮається піЮтĐČДрЎОтО ĐČашу ĐČŃ–ĐŽĐżĐŸĐČіЮь у ĐœĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃŃ…, ĐŸŃĐșŃ–Đ»ŃŒĐșĐž Ń–ĐœŃˆĐžĐč ĐŽĐŸĐŽĐ°Ń‚ĐŸĐș Đ·Đ°ŃŃ‚ŃƒĐżĐ°Ń” запОт ĐœĐ° ĐŽĐŸĐ·ĐČŃ–Đ»."</string>
     <string name="slice_permission_title" msgid="3262615140094151017">"Đ”ĐŸĐ·ĐČĐŸĐ»ĐžŃ‚Đž ĐŽĐŸĐŽĐ°Ń‚Đșу <xliff:g id="APP_0">%1$s</xliff:g> ĐżĐŸĐșазуĐČато Ń„Ń€Đ°ĐłĐŒĐ”ĐœŃ‚Đž ĐŽĐŸĐŽĐ°Ń‚Đșа <xliff:g id="APP_2">%2$s</xliff:g>?"</string>
     <string name="slice_permission_text_1" msgid="6675965177075443714">"- Має ĐŽĐŸŃŃ‚ŃƒĐż ĐŽĐŸ Ń–ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†Ń–Ń— Đ· ĐŽĐŸĐŽĐ°Ń‚Đșа <xliff:g id="APP">%1$s</xliff:g>"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ĐČОЎалОтО Đ· ĐČĐžĐ±Ń€Đ°ĐœĐŸĐłĐŸ"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"ĐŸĐ”Ń€Đ”ĐŒŃ–ŃŃ‚ĐžŃ‚Đž ĐœĐ° ĐżĐŸĐ·ĐžŃ†Ń–ŃŽ <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Đ•Đ»Đ”ĐŒĐ”ĐœŃ‚Đž ĐșĐ”Ń€ŃƒĐČĐ°ĐœĐœŃ"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Đ’ĐžĐ±Đ”Ń€Ń–Ń‚ŃŒ, яĐșі Đ”Đ»Đ”ĐŒĐ”ĐœŃ‚Đž ĐșĐ”Ń€ŃƒĐČĐ°ĐœĐœŃ ĐŒĐ°ŃŽŃ‚ŃŒ Đ±ŃƒŃ‚Đž ĐŽĐŸŃŃ‚ŃƒĐżĐœŃ– ĐČ ŃˆĐČОЎĐșох ĐœĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃŃ…"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Đ©ĐŸĐ± Đ·ĐŒŃ–ĐœĐžŃ‚Đž ĐżĐŸŃ€ŃĐŽĐŸĐș Đ”Đ»Đ”ĐŒĐ”ĐœŃ‚Ń–ĐČ ĐșĐ”Ń€ŃƒĐČĐ°ĐœĐœŃ, ĐżĐ”Ń€Đ”Ń‚ŃĐłŃƒĐčтД їх"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Усі Đ”Đ»Đ”ĐŒĐ”ĐœŃ‚Đž ĐșĐ”Ń€ŃƒĐČĐ°ĐœĐœŃ ĐČĐžĐ»ŃƒŃ‡Đ”ĐœĐŸ"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Đ—ĐŒŃ–ĐœĐž ĐœĐ” Đ·Đ±Đ”Ń€Đ”Đ¶Đ”ĐœĐŸ"</string>
@@ -1123,8 +1126,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Đ’Ń–ĐŽĐżĐŸĐČŃ–ĐŽĐœĐŸ ĐŽĐŸ праĐČОл ĐŸŃ€ĐłĐ°ĐœŃ–Đ·Đ°Ń†Ń–Ń— ĐČĐž ĐŒĐŸĐ¶Đ”Ń‚Đ” Ń‚Đ”Đ»Đ”Ń„ĐŸĐœŃƒĐČато лОшД Đ· Ń€ĐŸĐ±ĐŸŃ‡ĐŸĐłĐŸ ĐżŃ€ĐŸŃ„Ń–Đ»ŃŽ"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"ĐŸĐ”Ń€Đ”Đčто ĐČ Ń€ĐŸĐ±ĐŸŃ‡ĐžĐč ĐżŃ€ĐŸŃ„Ń–Đ»ŃŒ"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"ЗаĐșрото"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"ĐĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČато Đ·Đ°Đ±Đ»ĐŸĐșĐŸĐČĐ°ĐœĐžĐč Đ”ĐșŃ€Đ°Đœ"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"ĐœĐ”Ń€Đ”Đ¶Đ° Wi-Fi ĐœĐ”ĐŽĐŸŃŃ‚ŃƒĐżĐœĐ°"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ĐšĐ°ĐŒĐ”Ń€Ńƒ Đ·Đ°Đ±Đ»ĐŸĐșĐŸĐČĐ°ĐœĐŸ"</string>
@@ -1132,6 +1134,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"МіĐșŃ€ĐŸŃ„ĐŸĐœ Đ·Đ°Đ±Đ»ĐŸĐșĐŸĐČĐ°ĐœĐŸ"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Đ Đ”Đ¶ĐžĐŒ ĐżŃ€Ń–ĐŸŃ€ĐžŃ‚Đ”Ń‚Ńƒ ĐČĐČŃ–ĐŒĐșĐœĐ”ĐœĐŸ"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"ĐŃĐžŃŃ‚Đ”ĐœŃ‚Đ° аĐșтоĐČĐŸĐČĐ°ĐœĐŸ"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index 92a7652..8a869dd 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -792,7 +792,7 @@
     <string name="mobile_data_disable_title" msgid="5366476131671617790">"Ù…ÙˆŰšŰ§ŰŠÙ„ ڈیÙčۧ ŰąÙ Ú©Ű±ÛŒÚș۟"</string>
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"‏ŰąÙŸ کو <xliff:g id="CARRIER">%s</xliff:g> کے Ű°Ű±ÛŒŰčے ڈیÙčۧ ÛŒŰ§ Ű§Ù†ÙčŰ±Ù†ÛŒÙč ŰȘÚ© Ű±ŰłŰ§ŰŠÛŒ Ű­Ű§Ű”Ù„ نہیÚș ÛÙˆÚŻÛŒÛ” Ű§Ù†ÙčŰ±Ù†ÛŒÙč Ű”Ű±Ù Wi-Fi کے Ű°Ű±ÛŒŰčے ŰŻŰłŰȘÛŒŰ§Űš ÛÙˆÚŻŰ§Û”"</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"ŰąÙŸ کۧ Ú©Ű±ÛŒŰŠŰ±"</string>
-    <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"‫<xliff:g id="CARRIER">%s</xliff:g> ÙŸŰ± ÙˆŰ§ÙŸŰł ŰłÙˆŰŠÚ† Ú©Ű±ÛŒÚș۟"</string>
+    <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"<xliff:g id="CARRIER">%s</xliff:g> ÙŸŰ± ÙˆŰ§ÙŸŰł ŰłÙˆŰŠÚ† Ú©Ű±ÛŒÚș۟"</string>
     <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"ŰŻŰłŰȘÛŒŰ§ŰšÛŒ کی ŰšÙ†ÛŒŰ§ŰŻ ÙŸŰ± Ù…ÙˆŰšŰ§ŰŠÙ„ ڈیÙčۧ ŰźÙˆŰŻÚ©Ű§Ű± Ű·ÙˆŰ± ÙŸŰ± ŰȘŰšŰŻÛŒÙ„ نہیÚș ÛÙˆÚŻŰ§"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"نہیÚș ŰŽÚ©Ű±ÛŒÛ"</string>
     <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"ÛŰ§Úșی ŰłÙˆŰŠÚ† Ú©Ű±ÛŒÚș"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ÙŸŰłÙ†ŰŻÛŒŰŻÚŻÛŒ ŰźŰȘم Ú©Ű±ÛŒÚș"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"ٟوŰČÛŒŰŽÙ† <xliff:g id="NUMBER">%d</xliff:g> میÚș منŰȘقل Ú©Ű±ÛŒÚș"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"کنÙčŰ±ÙˆÙ„ŰČ"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ÙÙˆŰ±ÛŒ ŰȘ۱ŰȘÛŒŰšŰ§ŰȘ ŰłÛ’ Ű±ŰłŰ§ŰŠÛŒ کے لیے کنÙčŰ±ÙˆÙ„ŰČ Ù…Ù†ŰȘ۟ۚ Ú©Ű±ÛŒÚș"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"کنÙčŰ±ÙˆÙ„ŰČ Ú©Ùˆ ŰŻÙˆŰšŰ§Ű±Û ŰȘ۱ŰȘÛŒŰš ŰŻÛŒÙ†Û’ کے ليے ÙŸÚ©Ú‘ÛŒÚș Ű§ÙˆŰ± ÚŻÚŸŰłÛŒÙčیÚș"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"ŰłŰšÚŸÛŒ کنÙčŰ±ÙˆÙ„ŰČ ÛÙčۧ ŰŻÛŒÛ’ ÚŻŰŠÛ’"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"ŰȘŰšŰŻÛŒÙ„ÛŒŰ§Úș Ù…Ű­ÙÙˆŰž نہیÚș ÛÙˆŰŠÛŒÚș"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"ŰąÙŸ کے Ú©Ű§Ù… ŰłÛ’ مŰȘŰčلق ÙŸŰ§Ù„ÛŒŰłÛŒ ŰąÙŸ کو Ű”Ű±Ù ŰŻÙŰȘŰ±ÛŒ ÙŸŰ±ÙˆÙŰ§ŰŠÙ„ ŰłÛ’ فون Ú©Ű§Ù„ŰČ Ú©Ű±Ù†Û’ کی ۧۏۧŰČŰȘ ŰŻÛŒŰȘی ہے"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"ŰŻÙŰȘŰ±ÛŒ ÙŸŰ±ÙˆÙŰ§ŰŠÙ„ ÙŸŰ± ŰłÙˆŰŠÚ† Ú©Ű±ÛŒÚș"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"ŰšÙ†ŰŻ Ú©Ű±ÛŒÚș"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"مقفل Ű§ŰłÚ©Ű±ÛŒÙ† کو ۭ۳ۚ Ű¶Ű±ÙˆŰ±ŰȘ ŰšÙ†Ű§ŰŠÛŒÚș"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"‏Wi-Fi ŰŻŰłŰȘÛŒŰ§Űš نہیÚș ہے"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Ú©ÛŒÙ…Ű±Ű§ Ù…ŰłŰŻÙˆŰŻ ہے"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Ù…Ű§ŰŠÛŒÚ©Ű±ÙˆÙÙˆÙ† Ù…ŰłŰŻÙˆŰŻ ہے"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ŰȘŰ±ŰŹÛŒŰ­ÛŒ موڈ ŰąÙ† ہے"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"ۧ۳۳ÙčنÙč کی ŰȘÙˆŰŹÛ ŰąÙ† ہے"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index 3d148e4..73d40be 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -258,7 +258,7 @@
     <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Yorqinlik"</string>
     <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Ranglarni akslantirish"</string>
     <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Ranglarni tuzatish"</string>
-    <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Shrift hajmi"</string>
+    <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Shrift oʻlchami"</string>
     <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Foydalanuvchilarni boshqarish"</string>
     <string name="quick_settings_done" msgid="2163641301648855793">"Tayyor"</string>
     <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Yopish"</string>
@@ -824,7 +824,7 @@
     <string name="privacy_type_media_projection" msgid="8136723828804251547">"ekranni yozuvi"</string>
     <string name="music_controls_no_title" msgid="4166497066552290938">"Nomsiz"</string>
     <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Kutib turing"</string>
-    <string name="font_scaling_dialog_title" msgid="6273107303850248375">"Shrift hajmi"</string>
+    <string name="font_scaling_dialog_title" msgid="6273107303850248375">"Shrift oʻlchami"</string>
     <string name="font_scaling_smaller" msgid="1012032217622008232">"Kichiklashtirish"</string>
     <string name="font_scaling_larger" msgid="5476242157436806760">"Kattalashtirish"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Kattalashtirish oynasi"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"saralanganlardan olib tashlash"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g>-joyga olish"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Boshqaruv elementlari"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Tezkor sozlamalarda qaysi boshqaruv elementlari chiqishini tanlang"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Boshqaruv elementlarini qayta tartiblash uchun ushlab torting"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Barcha boshqaruv elementlari olib tashlandi"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Oʻzgarishlar saqlanmadi"</string>
@@ -1096,7 +1095,7 @@
     <string name="dream_time_complication_24_hr_time_format" msgid="6248280719733640813">"kk:mm"</string>
     <string name="log_access_confirmation_title" msgid="4843557604739943395">"<xliff:g id="LOG_ACCESS_APP_NAME">%s</xliff:g> uchun qurilmadagi barcha jurnallarga kirish ruxsati berilsinmi?"</string>
     <string name="log_access_confirmation_allow" msgid="752147861593202968">"Bir martalik ruxsat berish"</string>
-    <string name="log_access_confirmation_deny" msgid="2389461495803585795">"Ruxsat berilmasin"</string>
+    <string name="log_access_confirmation_deny" msgid="2389461495803585795">"Rad etish"</string>
     <string name="log_access_confirmation_body" msgid="6883031912003112634">"Qurilma jurnaliga qurilma bilan yuz bergan hodisalar qaydlari yoziladi. Ilovalar bu jurnal qaydlari yordamida muammolarni topishi va bartaraf qilishi mumkin.\n\nAyrim jurnal qaydlarida maxfiy axborotlar yozilishi mumkin, shu sababli qurilmadagi barcha jurnal qaydlariga ruxsatni faqat ishonchli ilovalarga bering. \n\nBu ilovaga qurilmadagi barcha jurnal qaydlariga ruxsat berilmasa ham, u oʻzining jurnalini ocha oladi. Qurilma ishlab chiqaruvchisi ham ayrim jurnallar yoki qurilma haqidagi axborotlarni ocha oladi."</string>
     <string name="log_access_confirmation_learn_more" msgid="3134565480986328004">"Batafsil"</string>
     <string name="log_access_confirmation_learn_more_at" msgid="5635666259505215905">"Batafsil: <xliff:g id="URL">%s</xliff:g>"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Ishga oid siyosatingiz faqat ish profilidan telefon chaqiruvlarini amalga oshirish imkonini beradi"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Ish profiliga almashish"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Yopish"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Ekran qulfini moslash"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Wi-Fi mavjud emas"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera bloklangan"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon bloklangan"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Imtiyozli rejim yoniq"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Assistent diqqati yoniq"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index f9a23ed..ea59988 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -520,7 +520,7 @@
     <string name="qr_code_scanner_title" msgid="1938155688725760702">"Trình quét mã QR"</string>
     <string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"Đang cáș­p nháș­t"</string>
     <string name="status_bar_work" msgid="5238641949837091056">"Hồ sÆĄ công việc"</string>
-    <string name="status_bar_airplane" msgid="4848702508684541009">"Cháșż độ trên máy bay"</string>
+    <string name="status_bar_airplane" msgid="4848702508684541009">"Cháșż độ máy bay"</string>
     <string name="zen_alarm_warning" msgid="7844303238486849503">"BáșĄn sáșœ không nghe tháș„y báo thức tiáșżp theo lúc <xliff:g id="WHEN">%1$s</xliff:g> cá»§a mình"</string>
     <string name="alarm_template" msgid="2234991538018805736">"lúc <xliff:g id="WHEN">%1$s</xliff:g>"</string>
     <string name="alarm_template_far" msgid="3561752195856839456">"vào <xliff:g id="WHEN">%1$s</xliff:g>"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"bỏ yêu thích"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Di chuyển tới vị trí số <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Các tùy chọn điều khiển"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Chọn các tuỳ chọn điều khiển để truy cáș­p từ trình Ä‘ÆĄn Cài đáș·t nhanh"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Giữ và kéo để sáșŻp xáșżp láșĄi các tùy chọn điều khiển"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Đã xóa táș„t cáșŁ tùy chọn điều khiển"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Chưa lưu các thay đổi"</string>
@@ -1052,10 +1051,10 @@
     <string name="qs_tile_request_dialog_add" msgid="4888460910694986304">"Thêm ô"</string>
     <string name="qs_tile_request_dialog_not_add" msgid="4168716573114067296">"Không thêm ô"</string>
     <string name="qs_user_switch_dialog_title" msgid="3045189293587781366">"Chọn người dùng"</string>
-    <string name="fgs_manager_footer_label" msgid="8276763570622288231">"{count,plural, =1{# ứng dỄng đang hoáșĄt động}other{# ứng dỄng đang hoáșĄt động}}"</string>
+    <string name="fgs_manager_footer_label" msgid="8276763570622288231">"{count,plural, =1{Ớng dỄng # đang hoáșĄt động}other{Ớng dỄng # đang hoáșĄt động}}"</string>
     <string name="fgs_dot_content_description" msgid="2865071539464777240">"Thông tin mới"</string>
     <string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Ớng dỄng đang hoáșĄt động"</string>
-    <string name="fgs_manager_dialog_message" msgid="2670045017200730076">"Những ứng dỄng sau váș«n hoáșĄt động và cháșĄy ngay cáșŁ khi báșĄn không sá»­ dỄng chúng. Việc này giúp cáșŁi thiện các chức năng nhưng đồng thời cĆ©ng có thể áșŁnh hưởng đáșżn thời lÆ°á»Łng pin."</string>
+    <string name="fgs_manager_dialog_message" msgid="2670045017200730076">"Các ứng dỄng này váș«n hoáșĄt động và đang cháșĄy ngay cáșŁ khi báșĄn không sá»­ dỄng chúng. Việc này giúp cáșŁi thiện các chức năng nhưng đồng thời cĆ©ng có thể áșŁnh hưởng đáșżn thời lÆ°á»Łng pin."</string>
     <string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Dừng"</string>
     <string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Đã dừng"</string>
     <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Xong"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Chính sách cá»§a nÆĄi làm việc chỉ cho phép báșĄn gọi điện thoáșĄi từ hồ sÆĄ công việc"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Chuyển sang hồ sÆĄ công việc"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Đóng"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Tuỳ chỉnh màn hình khoá"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"Không có Wi-Fi"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Máy áșŁnh bị cháș·n"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Micrô bị cháș·n"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Cháșż độ ưu tiên đang báș­t"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Trợ lý đang báș­t"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 5110027..84c6441f 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -258,7 +258,7 @@
     <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"äșźćșŠ"</string>
     <string name="quick_settings_inversion_label" msgid="3501527749494755688">"鱜è‰ČćèœŹ"</string>
     <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"è‰Čćœ©æ Ąæ­Ł"</string>
-    <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"ć­—äœ“ć€§ć°"</string>
+    <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"ć­—ć·"</string>
     <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"çźĄç†ç”šæˆ·"</string>
     <string name="quick_settings_done" msgid="2163641301648855793">"ćźŒæˆ"</string>
     <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"慳闭"</string>
@@ -700,7 +700,7 @@
     <string name="left_icon" msgid="5036278531966897006">"ć‘ć·Šć›Ÿæ ‡"</string>
     <string name="right_icon" msgid="1103955040645237425">"ć‘ćłć›Ÿæ ‡"</string>
     <string name="drag_to_add_tiles" msgid="8933270127508303672">"按䜏ćč¶æ‹–ćŠšćłćŻæ·»ćŠ ćŠŸèƒœć—"</string>
-    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"按䜏ćč¶æ‹–ćŠšćłćŻé‡æ–°æŽ’ćˆ—ćŠŸèƒœć—"</string>
+    <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"按䜏ćč¶æ‹–ćŠšćłćŻé‡æ–°æŽ’ćˆ—ć›Ÿć—"</string>
     <string name="drag_to_remove_tiles" msgid="4682194717573850385">"æ‹–ćŠšćˆ°æ­€ć€„ćłćŻç§»é™€"</string>
     <string name="drag_to_remove_disabled" msgid="933046987838658850">"æ‚šè‡łć°‘éœ€èŠ <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> äžȘ捡片"</string>
     <string name="qs_edit" msgid="5583565172803472437">"猖蟑"</string>
@@ -792,10 +792,10 @@
     <string name="mobile_data_disable_title" msgid="5366476131671617790">"èŠć…łé—­ç§»ćŠšæ•°æźçœ‘ç»œć—ïŒŸ"</string>
     <string name="mobile_data_disable_message" msgid="8604966027899770415">"æ‚šć°†æ— æł•é€šèż‡<xliff:g id="CARRIER">%s</xliff:g>äœżç”šç§»ćŠšæ•°æźæˆ–äș’联眑ćȘèƒœé€šèż‡ WLAN èżžæŽ„ćˆ°äș’è”çœ‘ă€‚"</string>
     <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"æ‚šçš„èżè„ć•†"</string>
-    <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"æ˜ŻćŠèŠćˆ‡æąć›ž <xliff:g id="CARRIER">%s</xliff:g>"</string>
-    <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"ç§»ćŠšæ”é‡äžäŒšæ čæźçœ‘ç»œćŻç”šæƒ…ć†”è‡ȘćŠšćˆ‡æą"</string>
+    <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"ćˆ‡æąć›ž <xliff:g id="CARRIER">%s</xliff:g>"</string>
+    <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"ç§»ćŠšæ”é‡äžäŒšæ čæźćŻç”šæ€§è‡ȘćŠšćˆ‡æą"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"侍甹äș†"</string>
-    <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"æ˜ŻïŒŒèŻ·ćˆ‡æą"</string>
+    <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"æ˜ŻïŒŒćˆ‡æą"</string>
     <string name="touch_filtered_warning" msgid="8119511393338714836">"由äșŽæŸäžȘćș”ç”šéźæŒĄäș†æƒé™èŻ·æ±‚ç•ŒéąïŒŒć› æ­€“èźŸçœź”ćș”ç”šæ— æł•éȘŒèŻæ‚šçš„ć›žćș”。"</string>
     <string name="slice_permission_title" msgid="3262615140094151017">"èŠć…èźž“<xliff:g id="APP_0">%1$s</xliff:g>”星ç€ș“<xliff:g id="APP_2">%2$s</xliff:g>”ć›Ÿć—ć—ïŒŸ"</string>
     <string name="slice_permission_text_1" msgid="6675965177075443714">"- ćŻä»„èŻ»ć–“<xliff:g id="APP">%1$s</xliff:g>”äž­çš„äżĄæŻ"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ć–æ¶ˆæ”¶è—"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"ç§»è‡łäœçœź <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"æŽ§ćˆ¶"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"选择芁从“ćż«æ·èźŸçœź”èœć•èźżé—źçš„æŽ§ćˆ¶éĄč"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"按䜏ćč¶æ‹–ćŠšćłćŻé‡æ–°æŽ’ćˆ—æŽ§ćˆ¶ć™š"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"ć·Čç§»é™€æ‰€æœ‰æŽ§ćˆ¶ć™š"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"æœȘäżć­˜æ›Žæ”č"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"æ čæźæ‚šçš„ć·„äœœæ”żç­–ïŒŒæ‚šćȘèƒœé€šèż‡ć·„äœœè”„æ–™æ‹šæ‰“ç””èŻ"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"ćˆ‡æąćˆ°ć·„äœœè”„æ–™"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"慳闭"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"è‡Ș漚äč‰é”ć±çŠ¶æ€"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"æČĄæœ‰ WLAN èżžæŽ„"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ć·ČçŠç”šæ‘„ćƒć€Ž"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"ć·Č穁甹éșŠć…‹éŁŽ"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ć·ČćŒ€ćŻäŒ˜ć…ˆæšĄćŒ"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"ć·ČćŒ€ćŻ Google ćŠ©ç†æ„ŸçŸ„ćŠŸèƒœ"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 82f81f6..aceae5e 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -20,14 +20,14 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_label" msgid="4811759950673118541">"çł»ç”±äœżç”šè€…ä»‹éą"</string>
-    <string name="battery_low_title" msgid="5319680173344341779">"èŠé–‹ć•Ÿă€Œæ…łé›»æšĄćŒă€ć—ŽïŒŸ"</string>
-    <string name="battery_low_description" msgid="3282977755476423966">"ć‰©é€˜ <xliff:g id="PERCENTAGE">%s</xliff:g> é›»é‡ă€‚ă€Œæ…łé›»æšĄćŒă€æœƒé–‹ć•Ÿæ·±è‰Čäž»éĄŒèƒŒæ™Żă€é™ćˆ¶èƒŒæ™ŻæŽ»ć‹•ïŒŒäžŠć»¶éČ饯ç€șé€šçŸ„ă€‚"</string>
-    <string name="battery_low_intro" msgid="5148725009653088790">"ă€Œæ…łé›»æšĄćŒă€æœƒé–‹ć•Ÿæ·±è‰Čäž»éĄŒèƒŒæ™Żă€é™ćˆ¶èƒŒæ™ŻæŽ»ć‹•ïŒŒäžŠć»¶éČ饯ç€șé€šçŸ„ă€‚"</string>
+    <string name="battery_low_title" msgid="5319680173344341779">"èŠé–‹ć•Ÿă€Œçœé›»æšĄćŒă€ć—ŽïŒŸ"</string>
+    <string name="battery_low_description" msgid="3282977755476423966">"ć‰©é€˜ <xliff:g id="PERCENTAGE">%s</xliff:g> é›»é‡ă€‚ă€Œçœé›»æšĄćŒă€æœƒé–‹ć•Ÿæ·±è‰Čäž»éĄŒèƒŒæ™Żă€é™ćˆ¶èƒŒæ™ŻæŽ»ć‹•ïŒŒäžŠć»¶éČ饯ç€șé€šçŸ„ă€‚"</string>
+    <string name="battery_low_intro" msgid="5148725009653088790">"ă€Œçœé›»æšĄćŒă€æœƒé–‹ć•Ÿæ·±è‰Čäž»éĄŒèƒŒæ™Żă€é™ćˆ¶èƒŒæ™ŻæŽ»ć‹•ïŒŒäžŠć»¶éČ饯ç€șé€šçŸ„ă€‚"</string>
     <string name="battery_low_percent_format" msgid="4276661262843170964">"ć‰©é€˜ <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
     <string name="invalid_charger_title" msgid="938685362320735167">"ç„Ąæł•é€éŽ USB ć……é›»"</string>
     <string name="invalid_charger_text" msgid="2339310107232691577">"äœżç”šèŁçœźéššé™„çš„ć……é›»ć™š"</string>
-    <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"èŠé–‹ć•Ÿæ…łé›»æšĄćŒć—ŽïŒŸ"</string>
-    <string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"é—œæ–Œă€Œæ…łé›»æšĄćŒă€"</string>
+    <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="8353766979886287140">"開敟"</string>
     <string name="battery_saver_dismiss_action" msgid="7199342621040014738">"侍甹äș†ïŒŒèŹèŹ"</string>
@@ -285,7 +285,7 @@
     <string name="quick_settings_night_secondary_label_on_at" msgid="3584738542293528235">"<xliff:g id="TIME">%s</xliff:g> 開敟"</string>
     <string name="quick_settings_secondary_label_until" msgid="1883981263191927372">"目戰<xliff:g id="TIME">%s</xliff:g>"</string>
     <string name="quick_settings_ui_mode_night_label" msgid="1398928270610780470">"æ·±è‰Čäž»éĄŒèƒŒæ™Ż"</string>
-    <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"æ…łé›»æšĄćŒ"</string>
+    <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"çœé›»æšĄćŒ"</string>
     <string name="quick_settings_dark_mode_secondary_label_on_at_sunset" msgid="6017379738102015710">"ćœšæ—„èœæ™‚é–‹ć•Ÿ"</string>
     <string name="quick_settings_dark_mode_secondary_label_until_sunrise" msgid="4404885070316716472">"ćœšæ—„ć‡ș時關閉"</string>
     <string name="quick_settings_dark_mode_secondary_label_on_at" msgid="5128758823486361279">"æ–Œ<xliff:g id="TIME">%s</xliff:g>開敟"</string>
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"開構"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ぜ"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ć–źæ‰‹æšĄćŒ"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"ć°æŻ”"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"æš™æș–"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"äž­"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"高"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"èŠè§Łé™€ć°éŽ–èŁçœźéș„ć…‹éąšć—ŽïŒŸ"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"èŠè§Łé™€ć°éŽ–èŁçœźç›žæ©Ÿć—ŽïŒŸ"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"èŠè§Łé™€ć°éŽ–èŁçœźç›žæ©Ÿć’Œéș„ć…‹éąšć—ŽïŒŸ"</string>
@@ -585,7 +589,7 @@
     <string name="snoozed_for_time" msgid="7586689374860469469">"ć·Čć»¶ćŸŒ <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string>
     <string name="snoozeHourOptions" msgid="2332819756222425558">"{count,plural, =1{# ć°æ™‚}=2{# ć°æ™‚}other{# ć°æ™‚}}"</string>
     <string name="snoozeMinuteOptions" msgid="2222082405822030979">"{count,plural, =1{# 戆鐘}other{# 戆鐘}}"</string>
-    <string name="battery_detail_switch_title" msgid="6940976502957380405">"æ…łé›»æšĄćŒ"</string>
+    <string name="battery_detail_switch_title" msgid="6940976502957380405">"çœé›»æšĄćŒ"</string>
     <string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> 鍔"</string>
     <string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
     <string name="keyboard_key_back" msgid="4185420465469481999">"èż”ć›ž"</string>
@@ -795,7 +799,7 @@
     <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"èŠćˆ‡æ›ć›žă€Œ<xliff:g id="CARRIER">%s</xliff:g>ă€ć—ŽïŒŸ"</string>
     <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"æ”ć‹•æ•žæ“šäžæœƒæ čæ“šćŻç”šæ€§è‡Șć‹•ćˆ‡æ›"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"侍甹äș†ïŒŒèŹèŹ"</string>
-    <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"æ˜ŻïŒŒè«‹ćˆ‡æ›"</string>
+    <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"æ˜ŻïŒŒćˆ‡æ›ć›ž DDS ć°è©±æĄ†"</string>
     <string name="touch_filtered_warning" msgid="8119511393338714836">"ç”±æ–ŒæŸć€‹æ‡‰ç”šçš‹ćŒć·Čé˜»æ“‹æŹŠé™èŠæ±‚ç•«éąïŒŒć› æ­€ă€Œèš­ćźšă€æ‡‰ç”šçš‹ćŒç„Ąæł•é©—è­‰æ‚šçš„ć›žæ‡‰ă€‚"</string>
     <string name="slice_permission_title" msgid="3262615140094151017">"èŠć…èš±ă€Œ<xliff:g id="APP_0">%1$s</xliff:g>」顯ç€ș「<xliff:g id="APP_2">%2$s</xliff:g>ă€çš„ćż«èšŠć—ŽïŒŸ"</string>
     <string name="slice_permission_text_1" msgid="6675965177075443714">"- ćŻä»„èź€ć–ă€Œ<xliff:g id="APP">%1$s</xliff:g>ă€äž­çš„èł‡æ–™"</string>
@@ -803,8 +807,8 @@
     <string name="slice_permission_checkbox" msgid="4242888137592298523">"ć…èš±ă€Œ<xliff:g id="APP">%1$s</xliff:g>」顯ç€șä»»äœ•æ‡‰ç”šçš‹ćŒçš„ćż«èšŠ"</string>
     <string name="slice_permission_allow" msgid="6340449521277951123">"ć…èš±"</string>
     <string name="slice_permission_deny" msgid="6870256451658176895">"拒甕"</string>
-    <string name="auto_saver_title" msgid="6873691178754086596">"èŒ•æŒ‰ćłćŻé ćźšæ…łé›»æšĄćŒè‡Șć‹•é–‹ć•Ÿæ™‚é–“"</string>
-    <string name="auto_saver_text" msgid="3214960308353838764">"ćœšé›»æ± é›»é‡ćŻèƒœè€—ç›Ąć‰ć•Ÿç”šă€Œæ…łé›»æšĄćŒă€"</string>
+    <string name="auto_saver_title" msgid="6873691178754086596">"èŒ•æŒ‰ćłćŻé ćźšçœé›»æšĄćŒè‡Șć‹•é–‹ć•Ÿæ™‚é–“"</string>
+    <string name="auto_saver_text" msgid="3214960308353838764">"ćœšé›»æ± é›»é‡ćŻèƒœè€—ç›Ąć‰ć•Ÿç”šă€Œçœé›»æšĄćŒă€"</string>
     <string name="no_auto_saver_action" msgid="7467924389609773835">"侍甹äș†ïŒŒèŹèŹ"</string>
     <string name="heap_dump_tile_name" msgid="2464189856478823046">"Dump SysUI Heap"</string>
     <string name="ongoing_privacy_dialog_a11y_title" msgid="2205794093673327974">"äœżç”šäž­"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ć–æ¶ˆæ”¶è—"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"ç§»è‡łäœçœź <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"æŽ§ćˆ¶é …"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"éžæ“‡èŠćŸžă€Œćż«é€Ÿèš­ćźšă€ć­˜ć–çš„æŽ§ćˆ¶é …"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"æŒ‰äœäžŠæ‹–æ›łäŸżćŻé‡æ–°æŽ’ćˆ—æŽ§ćˆ¶é …"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"ć·Čç§»é™€æ‰€æœ‰æŽ§ćˆ¶é …"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"æœȘć„Čć­˜èźŠæ›Ž"</string>
@@ -1123,13 +1126,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"æ‚šçš„ć…Źćžæ”żç­–ćȘć…èš±é€éŽć·„äœœèš­ćźšæȘ”æ’„打電話"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"ćˆ‡æ›è‡łć·„äœœèš­ćźšæȘ”"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"關閉"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"è‡Șèš‚äžŠéŽ–ç•«éą"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"è§ŁéŽ–ćŸŒćłćŻè‡Șèš‚èžąćč•éŽ–ćźšç•«éą"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"ç„Ąæł•é€Łç·šè‡ł Wi-Fi"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ć·Čć°éŽ–ç›žæ©Ÿ"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"ć·Čć°éŽ–ç›žæ©Ÿć’Œéș„態鱹"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"ć·Č氁鎖éș„態鱹"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ć„Șć…ˆæšĄćŒć·Č開敟"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"「Google ćŠ©ç†ă€æ„Ÿæ‡‰ćŠŸèƒœć·Č開敟"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ćœšă€Œèš­ćźšă€äž­æŒ‡ćźšé èš­èš˜äș‹æ‡‰ç”šçš‹ćŒ"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 1652a1c..11e56a2 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -299,10 +299,14 @@
     <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"開構"</string>
     <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ćœæ­ą"</string>
     <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ć–źæ‰‹æšĄćŒ"</string>
-    <string name="quick_settings_contrast_label" msgid="988087460210159123">"ć°æŻ”"</string>
-    <string name="quick_settings_contrast_standard" msgid="2538227821968061832">"æš™æș–"</string>
-    <string name="quick_settings_contrast_medium" msgid="5158352575583902566">"äž­"</string>
-    <string name="quick_settings_contrast_high" msgid="656049259587494499">"高"</string>
+    <!-- no translation found for quick_settings_contrast_label (988087460210159123) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_standard (2538227821968061832) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_medium (5158352575583902566) -->
+    <skip />
+    <!-- no translation found for quick_settings_contrast_high (656049259587494499) -->
+    <skip />
     <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"èŠć°‡èŁçœźéș„ć…‹éąšè§Łé™€ć°éŽ–ć—ŽïŒŸ"</string>
     <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"èŠć°‡èŁçœźç›žæ©Ÿè§Łé™€ć°éŽ–ć—ŽïŒŸ"</string>
     <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"èŠć°‡èŁçœźçš„ç›žæ©Ÿć’Œéș„ć…‹éąšè§Łé™€ć°éŽ–ć—ŽïŒŸ"</string>
@@ -795,7 +799,7 @@
     <string name="auto_data_switch_disable_title" msgid="5146527155665190652">"èŠćˆ‡æ›ć›žă€Œ<xliff:g id="CARRIER">%s</xliff:g>ă€ć—ŽïŒŸ"</string>
     <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"èĄŒć‹•æ•žæ“šäžæœƒäŸæ“šćŻç”šæ€§è‡Șć‹•ćˆ‡æ›"</string>
     <string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"侍甹äș†ïŒŒèŹèŹ"</string>
-    <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"æ˜ŻïŒŒè«‹ćˆ‡æ›"</string>
+    <string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"æ˜ŻïŒŒćˆ‡æ›ć›ž DDS ć°è©±æ–č桊"</string>
     <string name="touch_filtered_warning" msgid="8119511393338714836">"ç”±æ–ŒæŸć€‹æ‡‰ç”šçš‹ćŒèŠ†è“‹äș†æŹŠé™èŠæ±‚ç•«éąïŒŒć› æ­€ă€Œèš­ćźšă€æ‡‰ç”šçš‹ćŒç„Ąæł•é©—è­‰äœ çš„ć›žæ‡‰ă€‚"</string>
     <string name="slice_permission_title" msgid="3262615140094151017">"èŠć…èš±ă€Œ<xliff:g id="APP_0">%1$s</xliff:g>」顯ç€ș「<xliff:g id="APP_2">%2$s</xliff:g>ă€çš„ć€ćĄŠć—ŽïŒŸ"</string>
     <string name="slice_permission_text_1" msgid="6675965177075443714">"- ćźƒćŻä»„èź€ć–ă€Œ<xliff:g id="APP">%1$s</xliff:g>ă€çš„èł‡èšŠ"</string>
@@ -885,8 +889,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ćŸžæ”¶è—äž­ç§»é™€"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"ç§»ćˆ°äœçœź <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"æŽ§ćˆ¶é …"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"éžæ“‡èŠéĄŻç€șćœšă€Œćż«é€Ÿèš­ćźšă€éžć–źäž­çš„æŽ§ćˆ¶é …"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"æŒ‰äœäžŠæ‹–æ›łćłćŻé‡æ–°æŽ’ćˆ—æŽ§ćˆ¶é …"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"æ‰€æœ‰æŽ§ćˆ¶é …éƒœć·Č移陀"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"æœȘć„Čć­˜èźŠæ›Ž"</string>
@@ -1055,7 +1058,7 @@
     <string name="fgs_manager_footer_label" msgid="8276763570622288231">"{count,plural, =1{# ć€‹æ‡‰ç”šçš‹ćŒæ­Łćœšé‹äœœ}other{# ć€‹æ‡‰ç”šçš‹ćŒæ­Łćœšé‹äœœ}}"</string>
     <string name="fgs_dot_content_description" msgid="2865071539464777240">"æ–°èł‡èšŠ"</string>
     <string name="fgs_manager_dialog_title" msgid="5879184257257718677">"é‹äœœäž­çš„æ‡‰ç”šçš‹ćŒ"</string>
-    <string name="fgs_manager_dialog_message" msgid="2670045017200730076">"ćłäœżäœ äžŠæœȘäœżç”šïŒŒé€™äș›æ‡‰ç”šçš‹ćŒä»æœƒæŒçșŒé‹äœœă€‚é€™ćŻæć‡æ‡‰ç”šçš‹ćŒæ•ˆèƒœïŒŒäœ†äčŸćŻèƒœćœ±éŸżé›»æ± çșŒèˆȘ抛。"</string>
+    <string name="fgs_manager_dialog_message" msgid="2670045017200730076">"ćłäœżæ‚šäžŠæœȘäœżç”šïŒŒé€™äș›æ‡‰ç”šçš‹ćŒä»æœƒæŒçșŒé‹äœœă€‚é€™ćŻæć‡æ‡‰ç”šçš‹ćŒæ•ˆèƒœïŒŒäœ†äčŸćŻèƒœćœ±éŸżé›»æ± çșŒèˆȘ抛。"</string>
     <string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"ćœæ­ą"</string>
     <string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"ć·Čćœæ­ą"</string>
     <string name="clipboard_edit_text_done" msgid="4551887727694022409">"ćźŒæˆ"</string>
@@ -1123,13 +1126,12 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"èČŽć…Źćžæ”żç­–ćƒ…ć…èš±é€éŽć·„äœœèł‡æ–™ć€Ÿæ’„æ‰“é›»è©±"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"ćˆ‡æ›è‡łć·„äœœèł‡æ–™ć€Ÿ"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"關閉"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"è‡Șèš‚èžąćč•éŽ–ćźšç•«éą"</string>
-    <string name="keyguard_unlock_to_customize_ls" msgid="2068542308086253819">"è§ŁéŽ–ćŸŒćłćŻè‡Șèš‚èžąćč•éŽ–ćźšç•«éą"</string>
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
+    <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"ç„Ąæł•é€ŁäžŠ Wi-Fi"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ć·Čć°éŽ–æ”ćœ±æ©Ÿ"</string>
     <string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"ć·Čć°éŽ–æ”ćœ±æ©Ÿć’Œéș„態鱹"</string>
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"ć·Č氁鎖éș„態鱹"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ć„Șć…ˆæšĄćŒć·Č開敟"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Google ćŠ©ç†æ„ŸçŸ„ćŠŸèƒœć·Č開敟"</string>
-    <string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ćœšă€Œèš­ćźšă€äž­æŒ‡ćźšé èš­èš˜äș‹æ‡‰ç”šçš‹ćŒ"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index aa6f168..7417a85 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -127,7 +127,7 @@
     <string name="accessibility_accessibility_button" msgid="4089042473497107709">"Ukufinyeleleka"</string>
     <string name="accessibility_rotate_button" msgid="1238584767612362586">"Zungezisa isikrini"</string>
     <string name="accessibility_recent" msgid="901641734769533575">"Buka konke"</string>
-    <string name="accessibility_camera_button" msgid="2938898391716647247">"Ikhamera"</string>
+    <string name="accessibility_camera_button" msgid="2938898391716647247">"Ikhamela"</string>
     <string name="accessibility_phone_button" msgid="4256353121703100427">"Ifoni"</string>
     <string name="accessibility_voice_assist_button" msgid="6497706615649754510">"Isisekeli sezwi"</string>
     <string name="accessibility_wallet_button" msgid="1458258783460555507">"I-wallet"</string>
@@ -885,8 +885,7 @@
     <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"susa ubuntandokazi"</string>
     <string name="accessibility_control_move" msgid="8980344493796647792">"Hambisa ukuze ubeke ku-<xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="controls_favorite_default_title" msgid="967742178688938137">"Izilawuli"</string>
-    <!-- no translation found for controls_favorite_subtitle (5818709315630850796) -->
-    <skip />
+    <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Khetha izilawuli ukuze ufinyelele kusuka Kumasethingi Asheshayo"</string>
     <string name="controls_favorite_rearrange" msgid="5616952398043063519">"Bamba futhi uhudule ukuze uphinde ulungise izilawuli"</string>
     <string name="controls_favorite_removed" msgid="5276978408529217272">"Zonke izilawuli zisusiwe"</string>
     <string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Izinguquko azilondolozwanga"</string>
@@ -1123,8 +1122,7 @@
     <string name="call_from_work_profile_text" msgid="3458704745640229638">"Inqubomgomo yakho yomsebenzi ikuvumela ukuthi wenze amakholi wefoni kuphela ngephrofayela yomsebenzi"</string>
     <string name="call_from_work_profile_action" msgid="2937701298133010724">"Shintshela kuphrofayela yomsebenzi"</string>
     <string name="call_from_work_profile_close" msgid="7927067108901068098">"Vala"</string>
-    <string name="lock_screen_settings" msgid="6152703934761402399">"Yenza ngokwezifiso ukukhiya isikrini"</string>
-    <!-- no translation found for keyguard_unlock_to_customize_ls (2068542308086253819) -->
+    <!-- no translation found for lock_screen_settings (6152703934761402399) -->
     <skip />
     <string name="wifi_unavailable_dream_overlay_content_description" msgid="2024166212194640100">"I-Wi-Fi ayitholakali"</string>
     <string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Ikhamera ivinjiwe"</string>
@@ -1132,6 +1130,4 @@
     <string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Imakrofoni ivinjiwe"</string>
     <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Imodi ebalulekile ivuliwe"</string>
     <string name="assistant_attention_content_description" msgid="6830215897604642875">"Ukunaka kwe-Assistant kuvuliwe"</string>
-    <!-- no translation found for set_default_notes_app_toast_content (2812374329662610753) -->
-    <skip />
 </resources>
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationRunnerCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationRunnerCompat.java
index 1b0dacc..8dcd2aa 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationRunnerCompat.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationRunnerCompat.java
@@ -206,7 +206,7 @@
                 t.close();
                 info.releaseAllSurfaces();
                 if (finishRunnable == null) return;
-                onAnimationCancelled(false /* isKeyguardOccluded */);
+                onAnimationCancelled();
                 finishRunnable.run();
             }
         };
diff --git a/packages/SystemUI/src/com/android/keyguard/logging/KeyguardUpdateMonitorLogger.kt b/packages/SystemUI/src/com/android/keyguard/logging/KeyguardUpdateMonitorLogger.kt
index 1661806..e3ca13e 100644
--- a/packages/SystemUI/src/com/android/keyguard/logging/KeyguardUpdateMonitorLogger.kt
+++ b/packages/SystemUI/src/com/android/keyguard/logging/KeyguardUpdateMonitorLogger.kt
@@ -663,7 +663,7 @@
                     "userId: $int1 " +
                     "old: $bool1, " +
                     "new: $bool2 " +
-                    "context: $context"
+                    "context: $str1"
             }
         )
     }
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/OWNERS b/packages/SystemUI/src/com/android/systemui/accessibility/OWNERS
new file mode 100644
index 0000000..1f66c91
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/OWNERS
@@ -0,0 +1,3 @@
+# Bug component: 44215
+
+include /core/java/android/view/accessibility/OWNERS
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/TEST_MAPPING b/packages/SystemUI/src/com/android/systemui/accessibility/TEST_MAPPING
new file mode 100644
index 0000000..aa2b945
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/TEST_MAPPING
@@ -0,0 +1,12 @@
+{
+  "postsubmit": [
+    {
+      "name": "SystemUITests",
+      "options": [
+        {
+          "include-filter": "com.android.systemui.accessibility"
+        }
+      ]
+    }
+  ]
+}
diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
index 05153b6..6e67786 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
+++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
@@ -614,10 +614,11 @@
     // 2300 - stylus
     @JvmField val TRACK_STYLUS_EVER_USED = releasedFlag(2300, "track_stylus_ever_used")
     @JvmField
-    val ENABLE_STYLUS_CHARGING_UI = releasedFlag(2301, "enable_stylus_charging_ui")
+    val ENABLE_STYLUS_CHARGING_UI =
+        unreleasedFlag(2301, "enable_stylus_charging_ui", teamfood = true)
     @JvmField
     val ENABLE_USI_BATTERY_NOTIFICATIONS =
-        releasedFlag(2302, "enable_usi_battery_notifications")
+        unreleasedFlag(2302, "enable_usi_battery_notifications", teamfood = true)
     @JvmField val ENABLE_STYLUS_EDUCATION =
         unreleasedFlag(2303, "enable_stylus_education", teamfood = true)
 
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
index 107e685..8b6bd24 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
@@ -243,7 +243,7 @@
                         Slog.e(TAG, "Called mergeAnimation, but finish callback is missing");
                         return;
                     }
-                    runner.onAnimationCancelled(false /* isKeyguardOccluded */);
+                    runner.onAnimationCancelled();
                     currentFinishCB.onTransitionFinished(null /* wct */, null /* t */);
                 } catch (RemoteException e) {
                     // nothing, we'll just let it finish on its own I guess.
@@ -418,7 +418,7 @@
         }
 
         @Override // Binder interface
-        public void onAnimationCancelled(boolean isKeyguardOccluded) {
+        public void onAnimationCancelled() {
             mKeyguardViewMediator.cancelKeyguardExitAnimation();
         }
     };
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index 93ddfba..e765a71 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -39,9 +39,9 @@
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ValueAnimator;
-import android.app.ActivityTaskManager;
 import android.app.AlarmManager;
 import android.app.BroadcastOptions;
+import android.app.IActivityTaskManager;
 import android.app.PendingIntent;
 import android.app.StatusBarManager;
 import android.app.WindowConfiguration;
@@ -959,20 +959,15 @@
                 @Nullable private ValueAnimator mOccludeByDreamAnimator;
 
                 @Override
-                public void onAnimationCancelled(boolean isKeyguardOccluded) {
+                public void onAnimationCancelled() {
                     mContext.getMainExecutor().execute(() -> {
                         if (mOccludeByDreamAnimator != null) {
                             mOccludeByDreamAnimator.cancel();
                         }
                     });
-                    // The value of isKeyguardOccluded here may come from mergeAnimation, which
-                    // isn't reliable. In all cases, after running or cancelling this animation,
-                    // keyguard should be occluded.
+
+                    Log.d(TAG, "OccludeByDreamAnimator#onAnimationCancelled. Set occluded = true");
                     setOccluded(true /* isOccluded */, false /* animate */);
-                    if (DEBUG) {
-                        Log.d(TAG, "Occlude by Dream animation cancelled. Occluded state is now: "
-                                + mOccluded);
-                    }
                 }
 
                 @Override
@@ -984,6 +979,7 @@
                         // Usually we rely on animation completion to synchronize occluded status,
                         // but there was no animation to play, so just update it now.
                         setOccluded(true /* isOccluded */, false /* animate */);
+                        finishedCallback.onAnimationFinished();
                     }
                 }
 
@@ -991,11 +987,8 @@
                         RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps,
                         IRemoteAnimationFinishedCallback finishedCallback) throws RemoteException {
                     if (apps == null || apps.length == 0 || apps[0] == null) {
-                        if (DEBUG) {
-                            Log.d(TAG, "No apps provided to the OccludeByDream runner; "
-                                    + "skipping occluding animation.");
-                        }
-                        finishedCallback.onAnimationFinished();
+                        Log.d(TAG, "No apps provided to the OccludeByDream runner; "
+                                + "skipping occluding animation.");
                         return false;
                     }
 
@@ -1005,7 +998,6 @@
                     if (!isDream) {
                         Log.w(TAG, "The occluding app isn't Dream; "
                                 + "finishing up. Please check that the config is correct.");
-                        finishedCallback.onAnimationFinished();
                         return false;
                     }
 
@@ -1071,17 +1063,14 @@
                 private final Matrix mUnoccludeMatrix = new Matrix();
 
                 @Override
-                public void onAnimationCancelled(boolean isKeyguardOccluded) {
+                public void onAnimationCancelled() {
                     mContext.getMainExecutor().execute(() -> {
                         if (mUnoccludeAnimator != null) {
                             mUnoccludeAnimator.cancel();
                         }
                     });
 
-                    setOccluded(isKeyguardOccluded /* isOccluded */, false /* animate */);
-                    Log.d(TAG, "Unocclude animation cancelled. Occluded state is now: "
-                            + mOccluded);
-
+                    Log.d(TAG, "Unocclude animation cancelled.");
                     mInteractionJankMonitor.cancel(CUJ_LOCKSCREEN_OCCLUSION);
                 }
 
@@ -1190,6 +1179,7 @@
 
     private Lazy<ActivityLaunchAnimator> mActivityLaunchAnimator;
     private Lazy<ScrimController> mScrimControllerLazy;
+    private IActivityTaskManager mActivityTaskManagerService;
 
     private FeatureFlags mFeatureFlags;
 
@@ -1224,6 +1214,7 @@
             Lazy<NotificationShadeWindowController> notificationShadeWindowControllerLazy,
             Lazy<ActivityLaunchAnimator> activityLaunchAnimator,
             Lazy<ScrimController> scrimControllerLazy,
+            IActivityTaskManager activityTaskManagerService,
             FeatureFlags featureFlags) {
         mContext = context;
         mUserTracker = userTracker;
@@ -1272,6 +1263,7 @@
 
         mActivityLaunchAnimator = activityLaunchAnimator;
         mScrimControllerLazy = scrimControllerLazy;
+        mActivityTaskManagerService = activityTaskManagerService;
 
         mPowerButtonY = context.getResources().getDimensionPixelSize(
                 R.dimen.physical_power_button_center_screen_location_y);
@@ -1822,12 +1814,17 @@
     }
 
     /**
-     * Is the keyguard currently showing and not being force hidden?
+     * Is the keyguard currently showing, and not occluded (no activity is drawing over the
+     * lockscreen).
      */
     public boolean isShowingAndNotOccluded() {
         return mShowing && !mOccluded;
     }
 
+    public boolean isShowing() {
+        return mShowing;
+    }
+
     public boolean isOccludeAnimationPlaying() {
         return mOccludeAnimationPlaying;
     }
@@ -2446,7 +2443,7 @@
                 Log.d(TAG, "updateActivityLockScreenState(" + showing + ", " + aodShowing + ")");
             }
             try {
-                ActivityTaskManager.getService().setLockScreenShown(showing, aodShowing);
+                mActivityTaskManagerService.setLockScreenShown(showing, aodShowing);
             } catch (RemoteException e) {
             }
         });
@@ -2562,7 +2559,7 @@
             final int keyguardFlag = flags;
             mUiBgExecutor.execute(() -> {
                 try {
-                    ActivityTaskManager.getService().keyguardGoingAway(keyguardFlag);
+                    mActivityTaskManagerService.keyguardGoingAway(keyguardFlag);
                 } catch (RemoteException e) {
                     Log.e(TAG, "Error while calling WindowManager", e);
                 }
@@ -2594,18 +2591,16 @@
         synchronized (KeyguardViewMediator.this) {
             if (DEBUG) Log.d(TAG, "handleHide");
 
-            mHiding = true;
-
             if (mShowing && !mOccluded) {
+                mHiding = true;
                 mKeyguardGoingAwayRunnable.run();
             } else {
-                // TODO(bc-unlock): Fill parameters
-                mNotificationShadeWindowControllerLazy.get().batchApplyWindowLayoutParams(() -> {
-                    handleStartKeyguardExitAnimation(
-                            SystemClock.uptimeMillis() + mHideAnimation.getStartOffset(),
-                            mHideAnimation.getDuration(), null /* apps */, null /* wallpapers */,
-                            null /* nonApps */, null /* finishedCallback */);
-                });
+                Log.d(TAG, "Hiding keyguard while occluded. Just hide the keyguard view and exit.");
+
+                mKeyguardViewControllerLazy.get().hide(
+                        SystemClock.uptimeMillis() + mHideAnimation.getStartOffset(),
+                        mHideAnimation.getDuration());
+                onKeyguardExitFinished();
             }
 
             // It's possible that the device was unlocked (via BOUNCER or Fingerprint) while
@@ -2908,7 +2903,7 @@
                 flags |= KEYGUARD_GOING_AWAY_FLAG_TO_LAUNCHER_CLEAR_SNAPSHOT;
             }
 
-            ActivityTaskManager.getService().keyguardGoingAway(flags);
+            mActivityTaskManagerService.keyguardGoingAway(flags);
             mKeyguardStateController.notifyKeyguardGoingAway(true);
         } catch (RemoteException e) {
             mSurfaceBehindRemoteAnimationRequested = false;
@@ -3404,9 +3399,9 @@
         }
 
         @Override
-        public void onAnimationCancelled(boolean isKeyguardOccluded) throws RemoteException {
+        public void onAnimationCancelled() throws RemoteException {
             if (mRunner != null) {
-                mRunner.onAnimationCancelled(isKeyguardOccluded);
+                mRunner.onAnimationCancelled();
             }
         }
 
@@ -3452,13 +3447,9 @@
         }
 
         @Override
-        public void onAnimationCancelled(boolean isKeyguardOccluded) throws RemoteException {
-            super.onAnimationCancelled(isKeyguardOccluded);
-
-            Log.d(TAG, "Occlude animation cancelled by WM. "
-                    + "Setting occluded state to: " + isKeyguardOccluded);
-            setOccluded(isKeyguardOccluded /* occluded */, false /* animate */);
-
+        public void onAnimationCancelled() throws RemoteException {
+            super.onAnimationCancelled();
+            Log.d(TAG, "Occlude animation cancelled by WM.");
             mInteractionJankMonitor.cancel(CUJ_LOCKSCREEN_OCCLUSION);
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
index 5e71458..fd47104 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
@@ -16,6 +16,7 @@
 
 package com.android.systemui.keyguard.dagger;
 
+import android.app.IActivityTaskManager;
 import android.app.trust.TrustManager;
 import android.content.Context;
 import android.os.PowerManager;
@@ -121,6 +122,7 @@
             Lazy<NotificationShadeWindowController> notificationShadeWindowController,
             Lazy<ActivityLaunchAnimator> activityLaunchAnimator,
             Lazy<ScrimController> scrimControllerLazy,
+            IActivityTaskManager activityTaskManagerService,
             FeatureFlags featureFlags) {
         return new KeyguardViewMediator(
                 context,
@@ -152,6 +154,7 @@
                 notificationShadeWindowController,
                 activityLaunchAnimator,
                 scrimControllerLazy,
+                activityTaskManagerService,
                 featureFlags);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/media/OWNERS b/packages/SystemUI/src/com/android/systemui/media/OWNERS
index 69ea57b..b2d00df 100644
--- a/packages/SystemUI/src/com/android/systemui/media/OWNERS
+++ b/packages/SystemUI/src/com/android/systemui/media/OWNERS
@@ -1 +1,5 @@
 per-file MediaProjectionPermissionActivity.java = michaelwr@google.com
+
+# Haptics team also works on Ringtone
+per-file NotificationPlayer.java = file:/services/core/java/com/android/server/vibrator/OWNERS
+per-file RingtonePlayer.java = file:/services/core/java/com/android/server/vibrator/OWNERS
diff --git a/packages/SystemUI/src/com/android/systemui/media/RingtonePlayer.java b/packages/SystemUI/src/com/android/systemui/media/RingtonePlayer.java
index 2a8168b..d4b30d3 100644
--- a/packages/SystemUI/src/com/android/systemui/media/RingtonePlayer.java
+++ b/packages/SystemUI/src/com/android/systemui/media/RingtonePlayer.java
@@ -96,10 +96,11 @@
                 @Nullable VolumeShaper.Configuration volumeShaperConfig) {
             mToken = token;
 
-            mRingtone = new Ringtone(getContextForUser(user), false);
-            mRingtone.setAudioAttributesField(aa);
-            mRingtone.setUri(uri, volumeShaperConfig);
-            mRingtone.createLocalMediaPlayer();
+            mRingtone = new Ringtone.Builder(getContextForUser(user), Ringtone.MEDIA_SOUND, aa)
+                    .setUri(uri)
+                    .setLocalOnly()
+                    .setVolumeShaperConfig(volumeShaperConfig)
+                    .build();
         }
 
         @Override
@@ -116,11 +117,14 @@
         @Override
         public void play(IBinder token, Uri uri, AudioAttributes aa, float volume, boolean looping)
                 throws RemoteException {
-            playWithVolumeShaping(token, uri, aa, volume, looping, null);
+            playWithVolumeShaping(token, uri, aa, volume, looping, /* hapticGenerator= */ false,
+                    null);
         }
+
         @Override
         public void playWithVolumeShaping(IBinder token, Uri uri, AudioAttributes aa, float volume,
-                boolean looping, @Nullable VolumeShaper.Configuration volumeShaperConfig)
+                boolean looping, boolean isHapticGeneratorEnabled,
+                @Nullable VolumeShaper.Configuration volumeShaperConfig)
                 throws RemoteException {
             if (LOGD) {
                 Log.d(TAG, "play(token=" + token + ", uri=" + uri + ", uid="
@@ -138,6 +142,7 @@
             }
             client.mRingtone.setLooping(looping);
             client.mRingtone.setVolume(volume);
+            client.mRingtone.setHapticGeneratorEnabled(isHapticGeneratorEnabled);
             client.mRingtone.play();
         }
 
@@ -169,18 +174,36 @@
         }
 
         @Override
-        public void setPlaybackProperties(IBinder token, float volume, boolean looping,
-                boolean hapticGeneratorEnabled) {
+        public void setHapticGeneratorEnabled(IBinder token, boolean hapticGeneratorEnabled) {
+            Client client;
+            synchronized (mClients) {
+                client = mClients.get(token);
+            }
+            if (client != null) {
+                client.mRingtone.setHapticGeneratorEnabled(hapticGeneratorEnabled);
+            }
+        }
+
+        @Override
+        public void setLooping(IBinder token, boolean looping) {
+            Client client;
+            synchronized (mClients) {
+                client = mClients.get(token);
+            }
+            if (client != null) {
+                client.mRingtone.setLooping(looping);
+            }
+        }
+
+        @Override
+        public void setVolume(IBinder token, float volume) {
             Client client;
             synchronized (mClients) {
                 client = mClients.get(token);
             }
             if (client != null) {
                 client.mRingtone.setVolume(volume);
-                client.mRingtone.setLooping(looping);
-                client.mRingtone.setHapticGeneratorEnabled(hapticGeneratorEnabled);
             }
-            // else no client for token when setting playback properties but will be set at play()
         }
 
         @Override
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ActionIntentExecutor.kt b/packages/SystemUI/src/com/android/systemui/screenshot/ActionIntentExecutor.kt
index aa8e2c0..187019a 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ActionIntentExecutor.kt
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ActionIntentExecutor.kt
@@ -154,5 +154,5 @@
             }
         }
 
-        override fun onAnimationCancelled(isKeyguardOccluded: Boolean) {}
+        override fun onAnimationCancelled() {}
     }
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
index c9d1da38..77a65b2 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
@@ -150,7 +150,7 @@
                 }
 
                 @Override
-                public void onAnimationCancelled(boolean isKeyguardOccluded) {
+                public void onAnimationCancelled() {
                 }
             };
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/OWNERS b/packages/SystemUI/tests/src/com/android/systemui/accessibility/OWNERS
new file mode 100644
index 0000000..a2001e6
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/OWNERS
@@ -0,0 +1 @@
+include /core/java/android/view/accessibility/OWNERS
\ No newline at end of file
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/TEST_MAPPING b/packages/SystemUI/tests/src/com/android/systemui/accessibility/TEST_MAPPING
new file mode 100644
index 0000000..d3ab4ad
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "imports": [
+    {
+      "path": "packages/SystemUI/src/com/android/systemui/accessibility/TEST_MAPPING"
+    }
+  ]
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityLaunchAnimatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityLaunchAnimatorTest.kt
index 578e1d4..cc00436 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityLaunchAnimatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityLaunchAnimatorTest.kt
@@ -159,22 +159,11 @@
     @Test
     fun doesNotStartIfAnimationIsCancelled() {
         val runner = activityLaunchAnimator.createRunner(controller)
-        runner.onAnimationCancelled(false /* isKeyguardOccluded */)
+        runner.onAnimationCancelled()
         runner.onAnimationStart(0, emptyArray(), emptyArray(), emptyArray(), iCallback)
 
         waitForIdleSync()
-        verify(controller).onLaunchAnimationCancelled(false /* newKeyguardOccludedState */)
-        verify(controller, never()).onLaunchAnimationStart(anyBoolean())
-    }
-
-    @Test
-    fun passesOccludedStateToLaunchAnimationCancelled_ifTrue() {
-        val runner = activityLaunchAnimator.createRunner(controller)
-        runner.onAnimationCancelled(true /* isKeyguardOccluded */)
-        runner.onAnimationStart(0, emptyArray(), emptyArray(), emptyArray(), iCallback)
-
-        waitForIdleSync()
-        verify(controller).onLaunchAnimationCancelled(true /* newKeyguardOccludedState */)
+        verify(controller).onLaunchAnimationCancelled()
         verify(controller, never()).onLaunchAnimationStart(anyBoolean())
     }
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java
index 8f58140..d7767bd 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java
@@ -25,21 +25,28 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.atLeast;
+import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.inOrder;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.app.IActivityManager;
+import android.app.IActivityTaskManager;
 import android.app.admin.DevicePolicyManager;
 import android.app.trust.TrustManager;
 import android.os.PowerManager;
 import android.os.PowerManager.WakeLock;
+import android.os.RemoteException;
 import android.telephony.TelephonyManager;
 import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
@@ -91,9 +98,12 @@
 import com.android.systemui.util.concurrency.FakeExecutor;
 import com.android.systemui.util.time.FakeSystemClock;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.InOrder;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
@@ -133,6 +143,7 @@
     private @Mock DreamOverlayStateController mDreamOverlayStateController;
     private @Mock ActivityLaunchAnimator mActivityLaunchAnimator;
     private @Mock ScrimController mScrimController;
+    private @Mock IActivityTaskManager mActivityTaskManagerService;
     private @Mock SysuiColorExtractor mColorExtractor;
     private @Mock AuthController mAuthController;
     private @Mock ShadeExpansionStateManager mShadeExpansionStateManager;
@@ -144,6 +155,9 @@
 
     private @Mock CentralSurfaces mCentralSurfaces;
 
+    /** Most recent value passed to {@link KeyguardStateController#notifyKeyguardGoingAway}. */
+    private boolean mKeyguardGoingAway = false;
+
     private FakeFeatureFlags mFeatureFlags;
 
     @Before
@@ -169,9 +183,38 @@
 
         DejankUtils.setImmediate(true);
 
+        // Keep track of what we told KeyguardStateController about whether we're going away or
+        // not.
+        mKeyguardGoingAway = false;
+        doAnswer(invocation -> {
+            mKeyguardGoingAway = invocation.getArgument(0);
+            return null;
+        }).when(mKeyguardStateController).notifyKeyguardGoingAway(anyBoolean());
+
         createAndStartViewMediator();
     }
 
+    /**
+     * After each test, verify that System UI's going away/showing state matches the most recent
+     * calls we made to ATMS.
+     *
+     * This will help us catch showing and going away state mismatch issues.
+     */
+    @After
+    public void assertATMSAndKeyguardViewMediatorStatesMatch() {
+        try {
+            if (mKeyguardGoingAway) {
+                assertATMSKeyguardGoingAway();
+            } else {
+                assertATMSLockScreenShowing(mViewMediator.isShowing());
+            }
+
+        } catch (Exception e) {
+            // Just so we don't have to add the exception signature to every test.
+            fail();
+        }
+    }
+
     @Test
     public void testOnGoingToSleep_UpdatesKeyguardGoingAway() {
         mViewMediator.onStartedGoingToSleep(OFF_BECAUSE_OF_USER);
@@ -416,38 +459,7 @@
     public void testStartKeyguardExitAnimation_expectSurfaceBehindRemoteAnimation() {
         startMockKeyguardExitAnimation();
         assertTrue(mViewMediator.isAnimatingBetweenKeyguardAndSurfaceBehind());
-    }
 
-    /**
-     * Configures mocks appropriately, then starts the keyguard exit animation.
-     */
-    private void startMockKeyguardExitAnimation() {
-        mViewMediator.onSystemReady();
-        TestableLooper.get(this).processAllMessages();
-
-        mViewMediator.setShowingLocked(true);
-
-        RemoteAnimationTarget[] apps = new RemoteAnimationTarget[]{
-                mock(RemoteAnimationTarget.class)
-        };
-        RemoteAnimationTarget[] wallpapers = new RemoteAnimationTarget[]{
-                mock(RemoteAnimationTarget.class)
-        };
-        IRemoteAnimationFinishedCallback callback = mock(IRemoteAnimationFinishedCallback.class);
-
-        when(mKeyguardStateController.isKeyguardGoingAway()).thenReturn(true);
-        mViewMediator.startKeyguardExitAnimation(TRANSIT_OLD_KEYGUARD_GOING_AWAY, apps, wallpapers,
-                null, callback);
-        TestableLooper.get(this).processAllMessages();
-    }
-
-    /**
-     * Configures mocks appropriately, then cancels the keyguard exit animation.
-     */
-    private void cancelMockKeyguardExitAnimation() {
-        when(mKeyguardStateController.isKeyguardGoingAway()).thenReturn(false);
-        mViewMediator.cancelKeyguardExitAnimation();
-        TestableLooper.get(this).processAllMessages();
     }
 
     @Test
@@ -523,6 +535,107 @@
 
     @Test
     @TestableLooper.RunWithLooper(setAsMainLooper = true)
+    public void testStartKeyguardExitAnimation_thenCancelImmediately_doesNotResetAndUpdatesWM() {
+        startMockKeyguardExitAnimation();
+        cancelMockKeyguardExitAnimation();
+
+        // This will trigger doKeyguardLocked and we can verify that we ask ATMS to show the
+        // keyguard explicitly, even though we're already showing, because we cancelled immediately.
+        mViewMediator.onSystemReady();
+        reset(mActivityTaskManagerService);
+        processAllMessagesAndBgExecutorMessages();
+
+        verify(mStatusBarKeyguardViewManager, never()).reset(anyBoolean());
+        assertATMSAndKeyguardViewMediatorStatesMatch();
+    }
+
+    /**
+     * Interactions with the ActivityTaskManagerService and others are posted to an executor that
+     * doesn't use the testable looper. Use this method to ensure those are run as well.
+     */
+    private void processAllMessagesAndBgExecutorMessages() {
+        TestableLooper.get(this).processAllMessages();
+        mUiBgExecutor.runAllReady();
+    }
+
+    /**
+     * Configures mocks appropriately, then starts the keyguard exit animation.
+     */
+    private void startMockKeyguardExitAnimation() {
+        mViewMediator.onSystemReady();
+        processAllMessagesAndBgExecutorMessages();
+
+        mViewMediator.setShowingLocked(true);
+
+        RemoteAnimationTarget[] apps = new RemoteAnimationTarget[]{
+                mock(RemoteAnimationTarget.class)
+        };
+        RemoteAnimationTarget[] wallpapers = new RemoteAnimationTarget[]{
+                mock(RemoteAnimationTarget.class)
+        };
+        IRemoteAnimationFinishedCallback callback = mock(IRemoteAnimationFinishedCallback.class);
+
+        when(mKeyguardStateController.isKeyguardGoingAway()).thenReturn(true);
+        mViewMediator.startKeyguardExitAnimation(TRANSIT_OLD_KEYGUARD_GOING_AWAY, apps, wallpapers,
+                null, callback);
+        processAllMessagesAndBgExecutorMessages();
+    }
+
+    /**
+     * Configures mocks appropriately, then cancels the keyguard exit animation.
+     */
+    private void cancelMockKeyguardExitAnimation() {
+        when(mKeyguardStateController.isKeyguardGoingAway()).thenReturn(false);
+        mViewMediator.cancelKeyguardExitAnimation();
+        processAllMessagesAndBgExecutorMessages();
+    }
+    /**
+     * Asserts the last value passed to ATMS#setLockScreenShown. This should be confirmed alongside
+     * {@link KeyguardViewMediator#isShowingAndNotOccluded()} to verify that state is not mismatched
+     * between SysUI and WM.
+     */
+    private void assertATMSLockScreenShowing(boolean showing)
+            throws RemoteException {
+        // ATMS is called via bgExecutor, so make sure to run all of those calls first.
+        processAllMessagesAndBgExecutorMessages();
+
+        final InOrder orderedSetLockScreenShownCalls = inOrder(mActivityTaskManagerService);
+        final ArgumentCaptor<Boolean> showingCaptor = ArgumentCaptor.forClass(Boolean.class);
+        orderedSetLockScreenShownCalls
+                .verify(mActivityTaskManagerService, atLeastOnce())
+                .setLockScreenShown(showingCaptor.capture(), anyBoolean());
+
+        // The captor will have the most recent setLockScreenShown call's value.
+        assertEquals(showing, showingCaptor.getValue());
+
+        // We're now just after the last setLockScreenShown call. If we expect the lockscreen to be
+        // showing, ensure that we didn't subsequently ask for it to go away.
+        if (showing) {
+            orderedSetLockScreenShownCalls.verify(mActivityTaskManagerService, never())
+                    .keyguardGoingAway(anyInt());
+        }
+    }
+
+    /**
+     * Asserts that we eventually called ATMS#keyguardGoingAway and did not subsequently call
+     * ATMS#setLockScreenShown(true) which would cancel the going away.
+     */
+    private void assertATMSKeyguardGoingAway() throws RemoteException {
+        // ATMS is called via bgExecutor, so make sure to run all of those calls first.
+        processAllMessagesAndBgExecutorMessages();
+
+        final InOrder orderedGoingAwayCalls = inOrder(mActivityTaskManagerService);
+        orderedGoingAwayCalls.verify(mActivityTaskManagerService, atLeastOnce())
+                .keyguardGoingAway(anyInt());
+
+        // Advance the inOrder to just past the last goingAway call. Let's make sure we didn't
+        // re-show the lockscreen, which would cancel going away.
+        orderedGoingAwayCalls.verify(mActivityTaskManagerService, never())
+                .setLockScreenShown(eq(true), anyBoolean());
+    }
+
+    @Test
+    @TestableLooper.RunWithLooper(setAsMainLooper = true)
     public void testNotStartingKeyguardWhenFlagIsDisabled() {
         mViewMediator.setShowingLocked(false);
         when(mKeyguardStateController.isShowing()).thenReturn(false);
@@ -574,6 +687,7 @@
                 () -> mNotificationShadeWindowController,
                 () -> mActivityLaunchAnimator,
                 () -> mScrimController,
+                mActivityTaskManagerService,
                 mFeatureFlags);
         mViewMediator.start();
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/OWNERS b/packages/SystemUI/tests/src/com/android/systemui/media/OWNERS
new file mode 100644
index 0000000..142862d
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/OWNERS
@@ -0,0 +1,2 @@
+# Haptics team also works on Ringtones (RingtonePlayer/NotificationPlayer)
+file:/services/core/java/com/android/server/vibrator/OWNERS
diff --git a/rs/jni/Android.bp b/rs/jni/Android.bp
index 8a6897c..f732c21 100644
--- a/rs/jni/Android.bp
+++ b/rs/jni/Android.bp
@@ -22,6 +22,7 @@
 cc_library_shared {
     name: "librs_jni",
 
+    cpp_std: "gnu++2b",
     srcs: ["android_renderscript_RenderScript.cpp"],
 
     shared_libs: [
diff --git a/services/accessibility/TEST_MAPPING b/services/accessibility/TEST_MAPPING
index 2b8fee3..7bc4a0b 100644
--- a/services/accessibility/TEST_MAPPING
+++ b/services/accessibility/TEST_MAPPING
@@ -47,24 +47,16 @@
     {
       "name": "FrameworksCoreTests",
       "options": [
+        // TODO(b/267225211) Include android.accessibilityservice in presubmit after
+        // checking stability in postsubmit (and fixing if necessary)
         {
+          "include-filter": "android.view.accessibility",
           "include-filter": "com.android.internal.accessibility"
         },
         {
           "exclude-annotation": "androidx.test.filters.FlakyTest"
         }
       ]
-    },
-    {
-      "name": "FrameworksCoreTests",
-      "options": [
-        {
-          "include-filter": "android.view.accessibility"
-        },
-        {
-          "exclude-annotation": "androidx.test.filters.FlakyTest"
-        }
-      ]
     }
   ],
   "postsubmit": [
@@ -92,17 +84,11 @@
       "name": "FrameworksCoreTests",
       "options": [
         {
+          "include-filter": "android.accessibilityservice",
+          "include-filter": "android.view.accessibility",
           "include-filter": "com.android.internal.accessibility"
         }
       ]
-    },
-    {
-      "name": "FrameworksCoreTests",
-      "options": [
-        {
-          "include-filter": "android.view.accessibility"
-        }
-      ]
     }
   ]
 }
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index a3b4a0f..34d0240 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -680,6 +680,37 @@
         }
     }
 
+    private void onPackageRemovedLocked(String packageName) {
+        final AccessibilityUserState userState = getCurrentUserState();
+        final Predicate<ComponentName> filter =
+                component -> component != null && component.getPackageName().equals(
+                        packageName);
+        userState.mBindingServices.removeIf(filter);
+        userState.mCrashedServices.removeIf(filter);
+        final Iterator<ComponentName> it = userState.mEnabledServices.iterator();
+        boolean anyServiceRemoved = false;
+        while (it.hasNext()) {
+            final ComponentName comp = it.next();
+            final String compPkg = comp.getPackageName();
+            if (compPkg.equals(packageName)) {
+                it.remove();
+                userState.mTouchExplorationGrantedServices.remove(comp);
+                anyServiceRemoved = true;
+            }
+        }
+        if (anyServiceRemoved) {
+            // Update the enabled services setting.
+            persistComponentNamesToSettingLocked(
+                    Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
+                    userState.mEnabledServices, mCurrentUserId);
+            // Update the touch exploration granted services setting.
+            persistComponentNamesToSettingLocked(
+                    Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES,
+                    userState.mTouchExplorationGrantedServices, mCurrentUserId);
+            onUserStateChangedLocked(userState);
+        }
+    }
+
     private void registerBroadcastReceivers() {
         PackageMonitor monitor = new PackageMonitor() {
             @Override
@@ -752,34 +783,7 @@
                     if (userId != mCurrentUserId) {
                         return;
                     }
-                    final AccessibilityUserState userState = getUserStateLocked(userId);
-                    final Predicate<ComponentName> filter =
-                            component -> component != null && component.getPackageName().equals(
-                                    packageName);
-                    userState.mBindingServices.removeIf(filter);
-                    userState.mCrashedServices.removeIf(filter);
-                    final Iterator<ComponentName> it = userState.mEnabledServices.iterator();
-                    boolean anyServiceRemoved = false;
-                    while (it.hasNext()) {
-                        final ComponentName comp = it.next();
-                        final String compPkg = comp.getPackageName();
-                        if (compPkg.equals(packageName)) {
-                            it.remove();
-                            userState.mTouchExplorationGrantedServices.remove(comp);
-                            anyServiceRemoved = true;
-                        }
-                    }
-                    if (anyServiceRemoved) {
-                        // Update the enabled services setting.
-                        persistComponentNamesToSettingLocked(
-                                Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
-                                userState.mEnabledServices, userId);
-                        // Update the touch exploration granted services setting.
-                        persistComponentNamesToSettingLocked(
-                                Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES,
-                                userState.mTouchExplorationGrantedServices, userId);
-                        onUserStateChangedLocked(userState);
-                    }
+                    onPackageRemovedLocked(packageName);
                 }
             }
 
@@ -842,6 +846,16 @@
                         }
                     }
                 }
+
+                @Override
+                public void onPackageRemoved(String packageName, int uid) {
+                    final int userId = UserHandle.getUserId(uid);
+                    synchronized (mLock) {
+                        if (userId == mCurrentUserId) {
+                            onPackageRemovedLocked(packageName);
+                        }
+                    }
+                }
             });
         }
 
diff --git a/services/backup/TEST_MAPPING b/services/backup/TEST_MAPPING
index 4a8bd8e..e5395831 100644
--- a/services/backup/TEST_MAPPING
+++ b/services/backup/TEST_MAPPING
@@ -1,6 +1,14 @@
 {
   "presubmit": [
     {
+      "name": "FrameworksMockingServicesTests",
+      "options": [
+        {
+          "include-filter": "com.android.server.backup"
+        }
+      ]
+    },
+    {
       "name": "CtsBackupTestCases"
     }
   ],
diff --git a/services/backup/java/com/android/server/backup/FullBackupJob.java b/services/backup/java/com/android/server/backup/FullBackupJob.java
index fe0e1c6..bab65ad 100644
--- a/services/backup/java/com/android/server/backup/FullBackupJob.java
+++ b/services/backup/java/com/android/server/backup/FullBackupJob.java
@@ -24,6 +24,7 @@
 import android.app.job.JobService;
 import android.content.ComponentName;
 import android.content.Context;
+import android.content.pm.PackageManager;
 import android.os.Bundle;
 import android.util.SparseArray;
 
@@ -52,13 +53,15 @@
         JobInfo.Builder builder = new JobInfo.Builder(getJobIdForUserId(userId), sIdleService);
         final BackupManagerConstants constants = userBackupManagerService.getConstants();
         synchronized (constants) {
-            builder.setRequiresDeviceIdle(true)
-                    .setRequiredNetworkType(constants.getFullBackupRequiredNetworkType())
+            builder.setRequiredNetworkType(constants.getFullBackupRequiredNetworkType())
                     .setRequiresCharging(constants.getFullBackupRequireCharging());
         }
         if (minDelay > 0) {
             builder.setMinimumLatency(minDelay);
         }
+        if (!ctx.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH)) {
+            builder.setRequiresDeviceIdle(true);
+        }
 
         Bundle extraInfo = new Bundle();
         extraInfo.putInt(USER_ID_EXTRA_KEY, userId);
@@ -114,7 +117,8 @@
         return false;
     }
 
-    private static int getJobIdForUserId(int userId) {
+    @VisibleForTesting
+    static int getJobIdForUserId(int userId) {
         return JobIdManager.getJobIdForUserId(MIN_JOB_ID, MAX_JOB_ID, userId);
     }
 }
diff --git a/services/backup/java/com/android/server/backup/KeyValueBackupJob.java b/services/backup/java/com/android/server/backup/KeyValueBackupJob.java
index 164bbea..9a788be 100644
--- a/services/backup/java/com/android/server/backup/KeyValueBackupJob.java
+++ b/services/backup/java/com/android/server/backup/KeyValueBackupJob.java
@@ -169,7 +169,8 @@
         sNextScheduledForUserId.delete(userId);
     }
 
-    private static int getJobIdForUserId(int userId) {
+    @VisibleForTesting
+    static int getJobIdForUserId(int userId) {
         return JobIdManager.getJobIdForUserId(MIN_JOB_ID, MAX_JOB_ID, userId);
     }
 }
diff --git a/services/backup/java/com/android/server/backup/UserBackupManagerService.java b/services/backup/java/com/android/server/backup/UserBackupManagerService.java
index 7261709..324f6d7c 100644
--- a/services/backup/java/com/android/server/backup/UserBackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/UserBackupManagerService.java
@@ -36,6 +36,7 @@
 import static com.android.server.backup.internal.BackupHandler.MSG_RUN_RESTORE;
 import static com.android.server.backup.internal.BackupHandler.MSG_SCHEDULE_BACKUP_PACKAGE;
 
+import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.UserIdInt;
 import android.app.ActivityManager;
@@ -507,7 +508,8 @@
 
     @VisibleForTesting
     UserBackupManagerService(Context context, PackageManager packageManager,
-            LifecycleOperationStorage operationStorage, TransportManager transportManager) {
+            LifecycleOperationStorage operationStorage, TransportManager transportManager,
+            BackupHandler backupHandler, BackupManagerConstants backupManagerConstants) {
         mContext = context;
 
         mUserId = 0;
@@ -515,6 +517,9 @@
         mPackageManager = packageManager;
         mOperationStorage = operationStorage;
         mTransportManager = transportManager;
+        mFullBackupQueue = new ArrayList<>();
+        mBackupHandler = backupHandler;
+        mConstants = backupManagerConstants;
 
         mBaseStateDir = null;
         mDataDir = null;
@@ -526,9 +531,7 @@
         mAgentTimeoutParameters = null;
         mActivityManagerInternal = null;
         mAlarmManager = null;
-        mConstants = null;
         mWakelock = null;
-        mBackupHandler = null;
         mBackupPreferences = null;
         mBackupPasswordManager = null;
         mPackageManagerBinder = null;
@@ -973,6 +976,7 @@
                 /* scheduler */ null);
     }
 
+    @NonNull
     private ArrayList<FullBackupEntry> readFullBackupSchedule() {
         boolean changed = false;
         ArrayList<FullBackupEntry> schedule = null;
@@ -986,11 +990,11 @@
                  DataInputStream in = new DataInputStream(bufStream)) {
                 int version = in.readInt();
                 if (version != SCHEDULE_FILE_VERSION) {
-                    Slog.e(
-                            TAG,
-                            addUserIdToLogMessage(
-                                    mUserId, "Unknown backup schedule version " + version));
-                    return null;
+                    // The file version doesn't match the expected value.
+                    // Since this is within a "try" block, this exception will be treated like
+                    // any other exception, and caught below.
+                    throw new IllegalArgumentException("Unknown backup schedule version "
+                            + version);
                 }
 
                 final int numPackages = in.readInt();
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
index d8fbd08..89a938f 100644
--- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
+++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
@@ -17,7 +17,10 @@
 
 package com.android.server.companion;
 
+import static android.Manifest.permission.ASSOCIATE_COMPANION_DEVICES;
+import static android.Manifest.permission.DELIVER_COMPANION_MESSAGES;
 import static android.Manifest.permission.MANAGE_COMPANION_DEVICES;
+import static android.Manifest.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE;
 import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE;
 import static android.companion.AssociationRequest.DEVICE_PROFILE_AUTOMOTIVE_PROJECTION;
 import static android.content.pm.PackageManager.CERT_INPUT_SHA256;
@@ -34,7 +37,6 @@
 import static com.android.server.companion.PackageUtils.getPackageInfo;
 import static com.android.server.companion.PermissionsUtils.checkCallerCanManageCompanionDevice;
 import static com.android.server.companion.PermissionsUtils.enforceCallerCanManageAssociationsForPackage;
-import static com.android.server.companion.PermissionsUtils.enforceCallerCanManageCompanionDevice;
 import static com.android.server.companion.PermissionsUtils.enforceCallerIsSystemOr;
 import static com.android.server.companion.PermissionsUtils.enforceCallerIsSystemOrCanInteractWithUserId;
 import static com.android.server.companion.PermissionsUtils.sanitizeWithCallerChecks;
@@ -44,6 +46,7 @@
 import static java.util.concurrent.TimeUnit.DAYS;
 import static java.util.concurrent.TimeUnit.MINUTES;
 
+import android.annotation.EnforcePermission;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SuppressLint;
@@ -576,29 +579,33 @@
         }
 
         @Override
+        @EnforcePermission(MANAGE_COMPANION_DEVICES)
         public List<AssociationInfo> getAllAssociationsForUser(int userId) throws RemoteException {
+            getAllAssociationsForUser_enforcePermission();
+
             enforceCallerIsSystemOrCanInteractWithUserId(getContext(), userId);
-            enforceCallerCanManageCompanionDevice(getContext(), "getAllAssociationsForUser");
 
             return mAssociationStore.getAssociationsForUser(userId);
         }
 
         @Override
+        @EnforcePermission(MANAGE_COMPANION_DEVICES)
         public void addOnAssociationsChangedListener(IOnAssociationsChangedListener listener,
                 int userId) {
+            addOnAssociationsChangedListener_enforcePermission();
+
             enforceCallerIsSystemOrCanInteractWithUserId(getContext(), userId);
-            enforceCallerCanManageCompanionDevice(getContext(),
-                    "addOnAssociationsChangedListener");
 
             mListeners.register(listener, userId);
         }
 
         @Override
+        @EnforcePermission(MANAGE_COMPANION_DEVICES)
         public void removeOnAssociationsChangedListener(IOnAssociationsChangedListener listener,
                 int userId) {
+            removeOnAssociationsChangedListener_enforcePermission();
+
             enforceCallerIsSystemOrCanInteractWithUserId(getContext(), userId);
-            enforceCallerCanManageCompanionDevice(
-                    getContext(), "removeOnAssociationsChangedListener");
 
             mListeners.unregister(listener);
         }
@@ -630,6 +637,10 @@
             mTransportManager.removeListener(messageType, listener);
         }
 
+        /**
+         * @deprecated use {@link #disassociate(int)} instead
+         */
+        @Deprecated
         @Override
         public void legacyDisassociate(String deviceMacAddress, String packageName, int userId) {
             Log.i(TAG, "legacyDisassociate() pkg=u" + userId + "/" + packageName
@@ -686,10 +697,10 @@
         }
 
         @Override
+        @EnforcePermission(MANAGE_COMPANION_DEVICES)
         public boolean isDeviceAssociatedForWifiConnection(String packageName, String macAddress,
                 int userId) {
-            getContext().enforceCallingOrSelfPermission(
-                    MANAGE_COMPANION_DEVICES, "isDeviceAssociated");
+            isDeviceAssociatedForWifiConnection_enforcePermission();
 
             boolean bypassMacPermission = getContext().getPackageManager().checkPermission(
                     android.Manifest.permission.COMPANION_APPROVE_WIFI_CONNECTIONS, packageName)
@@ -703,15 +714,19 @@
         }
 
         @Override
+        @EnforcePermission(REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE)
         public void registerDevicePresenceListenerService(String deviceAddress,
                 String callingPackage, int userId) throws RemoteException {
+            registerDevicePresenceListenerService_enforcePermission();
             // TODO: take the userId into account.
             registerDevicePresenceListenerActive(callingPackage, deviceAddress, true);
         }
 
         @Override
+        @EnforcePermission(REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE)
         public void unregisterDevicePresenceListenerService(String deviceAddress,
                 String callingPackage, int userId) throws RemoteException {
+            unregisterDevicePresenceListenerService_enforcePermission();
             // TODO: take the userId into account.
             registerDevicePresenceListenerActive(callingPackage, deviceAddress, false);
         }
@@ -731,14 +746,20 @@
         }
 
         @Override
+        @EnforcePermission(DELIVER_COMPANION_MESSAGES)
         public void attachSystemDataTransport(String packageName, int userId, int associationId,
                 ParcelFileDescriptor fd) {
+            attachSystemDataTransport_enforcePermission();
+
             getAssociationWithCallerChecks(associationId);
             mTransportManager.attachSystemDataTransport(packageName, userId, associationId, fd);
         }
 
         @Override
+        @EnforcePermission(DELIVER_COMPANION_MESSAGES)
         public void detachSystemDataTransport(String packageName, int userId, int associationId) {
+            detachSystemDataTransport_enforcePermission();
+
             getAssociationWithCallerChecks(associationId);
             mTransportManager.detachSystemDataTransport(packageName, userId, associationId);
         }
@@ -807,9 +828,6 @@
                         + " deviceAddress=" + deviceAddress);
             }
 
-            getContext().enforceCallingOrSelfPermission(
-                    android.Manifest.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE,
-                    "[un]registerDevicePresenceListenerService");
             final int userId = getCallingUserId();
             enforceCallerIsSystemOr(userId, packageName);
 
@@ -852,17 +870,17 @@
         }
 
         @Override
+        @EnforcePermission(ASSOCIATE_COMPANION_DEVICES)
         public void createAssociation(String packageName, String macAddress, int userId,
                 byte[] certificate) {
+            createAssociation_enforcePermission();
+
             if (!getContext().getPackageManager().hasSigningCertificate(
                     packageName, certificate, CERT_INPUT_SHA256)) {
                 Slog.e(TAG, "Given certificate doesn't match the package certificate.");
                 return;
             }
 
-            getContext().enforceCallingOrSelfPermission(
-                    android.Manifest.permission.ASSOCIATE_COMPANION_DEVICES, "createAssociation");
-
             final MacAddress macAddressObj = MacAddress.fromString(macAddress);
             createNewAssociation(userId, packageName, macAddressObj, null, null, false);
         }
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java b/services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java
index 669686ad..1c92579 100644
--- a/services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java
+++ b/services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java
@@ -199,7 +199,7 @@
         pw.println("  remove-inactive-associations");
         pw.println("      Remove self-managed associations that have not been active ");
         pw.println("      for a long time (90 days or as configured via ");
-        pw.println("      \"debug.cdm.cdmservice.cleanup_time_window\" system property). ");
+        pw.println("      \"debug.cdm.cdmservice.removal_time_window\" system property). ");
         pw.println("      USE FOR DEBUGGING AND/OR TESTING PURPOSES ONLY.");
 
         pw.println("  create-dummy-transport <ASSOCIATION_ID>");
diff --git a/services/companion/java/com/android/server/companion/PermissionsUtils.java b/services/companion/java/com/android/server/companion/PermissionsUtils.java
index 0ff3fb7..f4e14df 100644
--- a/services/companion/java/com/android/server/companion/PermissionsUtils.java
+++ b/services/companion/java/com/android/server/companion/PermissionsUtils.java
@@ -163,13 +163,6 @@
         return context.checkCallingPermission(MANAGE_COMPANION_DEVICES) == PERMISSION_GRANTED;
     }
 
-    static void enforceCallerCanManageCompanionDevice(@NonNull Context context,
-            @Nullable String message) {
-        if (getCallingUid() == SYSTEM_UID) return;
-
-        context.enforceCallingPermission(MANAGE_COMPANION_DEVICES, message);
-    }
-
     static void enforceCallerCanManageAssociationsForPackage(@NonNull Context context,
             @UserIdInt int userId, @NonNull String packageName,
             @Nullable String actionDescription) {
diff --git a/services/companion/java/com/android/server/companion/transport/CompanionTransportManager.java b/services/companion/java/com/android/server/companion/transport/CompanionTransportManager.java
index a3e095e..9d2ff6a 100644
--- a/services/companion/java/com/android/server/companion/transport/CompanionTransportManager.java
+++ b/services/companion/java/com/android/server/companion/transport/CompanionTransportManager.java
@@ -16,8 +16,6 @@
 
 package com.android.server.companion.transport;
 
-import static android.Manifest.permission.DELIVER_COMPANION_MESSAGES;
-
 import static com.android.server.companion.transport.Transport.MESSAGE_REQUEST_PERMISSION_RESTORE;
 import static com.android.server.companion.transport.Transport.MESSAGE_REQUEST_PLATFORM_INFO;
 
@@ -174,8 +172,6 @@
      * third-party companion apps.
      */
     private void enforceCallerCanTransportSystemData(String packageName, int userId) {
-        mContext.enforceCallingOrSelfPermission(DELIVER_COMPANION_MESSAGES, TAG);
-
         try {
             final ApplicationInfo info = mContext.getPackageManager().getApplicationInfoAsUser(
                     packageName, 0, userId);
diff --git a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
index de0f68c..439ecfe 100644
--- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
+++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
@@ -49,6 +49,7 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
 import android.graphics.PointF;
 import android.hardware.display.DisplayManager;
 import android.hardware.display.DisplayManagerGlobal;
@@ -505,13 +506,7 @@
     public void createVirtualDpad(VirtualDpadConfig config, @NonNull IBinder deviceToken) {
         super.createVirtualDpad_enforcePermission();
         Objects.requireNonNull(config);
-        synchronized (mVirtualDeviceLock) {
-            if (!mVirtualDisplays.contains(config.getAssociatedDisplayId())) {
-                throw new SecurityException(
-                        "Cannot create a virtual dpad for a display not associated with "
-                                + "this virtual device");
-            }
-        }
+        checkVirtualInputDeviceDisplayIdAssociation(config.getAssociatedDisplayId());
         final long ident = Binder.clearCallingIdentity();
         try {
             mInputController.createDpad(config.getInputDeviceName(), config.getVendorId(),
@@ -526,12 +521,8 @@
     public void createVirtualKeyboard(VirtualKeyboardConfig config, @NonNull IBinder deviceToken) {
         super.createVirtualKeyboard_enforcePermission();
         Objects.requireNonNull(config);
+        checkVirtualInputDeviceDisplayIdAssociation(config.getAssociatedDisplayId());
         synchronized (mVirtualDeviceLock) {
-            if (!mVirtualDisplays.contains(config.getAssociatedDisplayId())) {
-                throw new SecurityException(
-                        "Cannot create a virtual keyboard for a display not associated with "
-                                + "this virtual device");
-            }
             mLocaleList = LocaleList.forLanguageTags(config.getLanguageTag());
         }
         final long ident = Binder.clearCallingIdentity();
@@ -549,13 +540,7 @@
     public void createVirtualMouse(VirtualMouseConfig config, @NonNull IBinder deviceToken) {
         super.createVirtualMouse_enforcePermission();
         Objects.requireNonNull(config);
-        synchronized (mVirtualDeviceLock) {
-            if (!mVirtualDisplays.contains(config.getAssociatedDisplayId())) {
-                throw new SecurityException(
-                        "Cannot create a virtual mouse for a display not associated with this "
-                                + "virtual device");
-            }
-        }
+        checkVirtualInputDeviceDisplayIdAssociation(config.getAssociatedDisplayId());
         final long ident = Binder.clearCallingIdentity();
         try {
             mInputController.createMouse(config.getInputDeviceName(), config.getVendorId(),
@@ -571,13 +556,7 @@
             @NonNull IBinder deviceToken) {
         super.createVirtualTouchscreen_enforcePermission();
         Objects.requireNonNull(config);
-        synchronized (mVirtualDeviceLock) {
-            if (!mVirtualDisplays.contains(config.getAssociatedDisplayId())) {
-                throw new SecurityException(
-                        "Cannot create a virtual touchscreen for a display not associated with "
-                                + "this virtual device");
-            }
-        }
+        checkVirtualInputDeviceDisplayIdAssociation(config.getAssociatedDisplayId());
         int screenHeight = config.getHeight();
         int screenWidth = config.getWidth();
         if (screenHeight <= 0 || screenWidth <= 0) {
@@ -602,13 +581,7 @@
             @NonNull IBinder deviceToken) {
         super.createVirtualNavigationTouchpad_enforcePermission();
         Objects.requireNonNull(config);
-        synchronized (mVirtualDeviceLock) {
-            if (!mVirtualDisplays.contains(config.getAssociatedDisplayId())) {
-                throw new SecurityException(
-                        "Cannot create a virtual navigation touchpad for a display not associated "
-                                + "with this virtual device");
-            }
-        }
+        checkVirtualInputDeviceDisplayIdAssociation(config.getAssociatedDisplayId());
         int touchpadHeight = config.getHeight();
         int touchpadWidth = config.getWidth();
         if (touchpadHeight <= 0 || touchpadWidth <= 0) {
@@ -989,7 +962,21 @@
         }
 
         releaseOwnedVirtualDisplayResources(virtualDisplayWrapper);
+    }
 
+    private void checkVirtualInputDeviceDisplayIdAssociation(int displayId) {
+        if (mContext.checkCallingPermission(android.Manifest.permission.INJECT_EVENTS)
+                    == PackageManager.PERMISSION_GRANTED) {
+            // The INJECT_EVENTS permission allows for injecting input to any window / display.
+            return;
+        }
+        synchronized (mVirtualDeviceLock) {
+            if (!mVirtualDisplays.contains(displayId)) {
+                throw new SecurityException(
+                        "Cannot create a virtual input device for display " + displayId
+                                + " which not associated with this virtual device");
+            }
+        }
     }
 
     /**
diff --git a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
index ad4c0bf..7bad631 100644
--- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
+++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
@@ -309,6 +309,7 @@
                     }
                 };
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE)
         @Override // Binder call
         public IVirtualDevice createVirtualDevice(
                 IBinder token,
@@ -317,9 +318,7 @@
                 @NonNull VirtualDeviceParams params,
                 @NonNull IVirtualDeviceActivityListener activityListener,
                 @NonNull IVirtualDeviceSoundEffectListener soundEffectListener) {
-            getContext().enforceCallingOrSelfPermission(
-                    android.Manifest.permission.CREATE_VIRTUAL_DEVICE,
-                    "createVirtualDevice");
+            createVirtualDevice_enforcePermission();
             final int callingUid = getCallingUid();
             if (!PermissionUtils.validateCallingPackageName(getContext(), packageName)) {
                 throw new SecurityException(
diff --git a/services/core/Android.bp b/services/core/Android.bp
index f8d19ec..4d148c6 100644
--- a/services/core/Android.bp
+++ b/services/core/Android.bp
@@ -74,8 +74,8 @@
         "{ ! (diff $(out) $(location :services.core.protolog.json) | grep -q '^<') || " +
         "{ echo -e '\\n\\n################################################################\\n#\\n" +
         "#  ERROR: ProtoLog viewer config is stale.  To update it, run:\\n#\\n" +
-        "#  cp $(location :generate-protolog.json) " +
-        "$(location :services.core.protolog.json)\\n#\\n" +
+        "#  cp $${ANDROID_BUILD_TOP}/$(location :generate-protolog.json) " +
+        "$${ANDROID_BUILD_TOP}/$(location :services.core.protolog.json)\\n#\\n" +
         "################################################################\\n\\n' >&2 && false; } }",
     out: ["services.core.protolog.json"],
 }
@@ -202,9 +202,9 @@
     srcs: [":services.core.unboosted"],
     tools: ["lockedregioncodeinjection"],
     cmd: "$(location lockedregioncodeinjection) " +
-        "  --targets \"Lcom/android/server/am/ActivityManagerService;,Lcom/android/server/am/ActivityManagerGlobalLock;,Lcom/android/server/wm/WindowManagerGlobalLock;\" " +
-        "  --pre \"com/android/server/am/ActivityManagerService.boostPriorityForLockedSection,com/android/server/am/ActivityManagerService.boostPriorityForProcLockedSection,com/android/server/wm/WindowManagerService.boostPriorityForLockedSection\" " +
-        "  --post \"com/android/server/am/ActivityManagerService.resetPriorityAfterLockedSection,com/android/server/am/ActivityManagerService.resetPriorityAfterProcLockedSection,com/android/server/wm/WindowManagerService.resetPriorityAfterLockedSection\" " +
+        "  --targets \"Lcom/android/server/am/ActivityManagerService;,Lcom/android/server/am/ActivityManagerGlobalLock;,Lcom/android/server/wm/WindowManagerGlobalLock;,Lcom/android/server/pm/PackageManagerTracedLock;\" " +
+        "  --pre \"com/android/server/am/ActivityManagerService.boostPriorityForLockedSection,com/android/server/am/ActivityManagerService.boostPriorityForProcLockedSection,com/android/server/wm/WindowManagerService.boostPriorityForLockedSection,com/android/server/pm/PackageManagerService.boostPriorityForPackageManagerTracedLockedSection\" " +
+        "  --post \"com/android/server/am/ActivityManagerService.resetPriorityAfterLockedSection,com/android/server/am/ActivityManagerService.resetPriorityAfterProcLockedSection,com/android/server/wm/WindowManagerService.resetPriorityAfterLockedSection,com/android/server/pm/PackageManagerService.resetPriorityAfterPackageManagerTracedLockedSection\" " +
         "  -o $(out) " +
         "  -i $(in)",
     out: ["services.core.priorityboosted.jar"],
diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java
index 22ac22d..cbf6724 100644
--- a/services/core/java/android/content/pm/PackageManagerInternal.java
+++ b/services/core/java/android/content/pm/PackageManagerInternal.java
@@ -44,11 +44,13 @@
 import android.util.SparseArray;
 
 import com.android.internal.util.function.pooled.PooledLambda;
+import com.android.permission.persistence.RuntimePermissionsState;
 import com.android.server.pm.Installer.LegacyDexoptDisabledException;
 import com.android.server.pm.KnownPackages;
 import com.android.server.pm.PackageList;
 import com.android.server.pm.PackageSetting;
 import com.android.server.pm.dex.DynamicCodeLogger;
+import com.android.server.pm.permission.LegacyPermissionSettings;
 import com.android.server.pm.pkg.AndroidPackage;
 import com.android.server.pm.pkg.PackageStateInternal;
 import com.android.server.pm.pkg.SharedUserApi;
@@ -1075,6 +1077,23 @@
     public abstract void writePermissionSettings(@NonNull @UserIdInt int[] userIds, boolean async);
 
     /**
+     * Read legacy permission definitions for permissions migration to new permission subsystem.
+     * Note that this api is supposed to be used for permissions migration only.
+     */
+    public abstract LegacyPermissionSettings getLegacyPermissions();
+
+    /**
+     * Read legacy permission states for permissions migration to new permission subsystem.
+     * Note that this api is supposed to be used for permissions state migration only.
+     */
+    public abstract RuntimePermissionsState getLegacyPermissionsState(@UserIdInt int userId);
+
+    /**
+     * @return permissions file version for the given user.
+     */
+    public abstract int getLegacyPermissionsVersion(@UserIdInt int userId);
+
+    /**
      * Returns {@code true} if the caller is the installer of record for the given package.
      * Otherwise, {@code false}.
      */
diff --git a/services/core/java/com/android/server/DockObserver.java b/services/core/java/com/android/server/DockObserver.java
index 5156c54..e2fd37e 100644
--- a/services/core/java/com/android/server/DockObserver.java
+++ b/services/core/java/com/android/server/DockObserver.java
@@ -20,9 +20,8 @@
 import android.content.Context;
 import android.content.Intent;
 import android.database.ContentObserver;
-import android.media.AudioManager;
+import android.media.AudioAttributes;
 import android.media.Ringtone;
-import android.media.RingtoneManager;
 import android.net.Uri;
 import android.os.Binder;
 import android.os.Handler;
@@ -304,11 +303,16 @@
                     if (soundPath != null) {
                         final Uri soundUri = Uri.parse("file://" + soundPath);
                         if (soundUri != null) {
-                            final Ringtone sfx = RingtoneManager.getRingtone(
-                                    getContext(), soundUri);
+                            AudioAttributes audioAttributes = new AudioAttributes.Builder()
+                                    .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
+                                    .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
+                                    .build();
+                            final Ringtone sfx = new Ringtone.Builder(getContext(),
+                                    Ringtone.MEDIA_SOUND, audioAttributes)
+                                    .setUri(soundUri)
+                                    .setPreferBuiltinDevice()
+                                    .build();
                             if (sfx != null) {
-                                sfx.setStreamType(AudioManager.STREAM_SYSTEM);
-                                sfx.preferBuiltinDevice(true);
                                 sfx.play();
                             }
                         }
diff --git a/services/core/java/com/android/server/SystemUpdateManagerService.java b/services/core/java/com/android/server/SystemUpdateManagerService.java
index 811a780..d5e7be5 100644
--- a/services/core/java/com/android/server/SystemUpdateManagerService.java
+++ b/services/core/java/com/android/server/SystemUpdateManagerService.java
@@ -86,9 +86,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.RECOVERY)
     @Override
     public void updateSystemUpdateInfo(PersistableBundle infoBundle) {
-        mContext.enforceCallingOrSelfPermission(Manifest.permission.RECOVERY, TAG);
+        updateSystemUpdateInfo_enforcePermission();
 
         int status = infoBundle.getInt(KEY_STATUS, STATUS_UNKNOWN);
         if (status == STATUS_UNKNOWN) {
diff --git a/services/core/java/com/android/server/TEST_MAPPING b/services/core/java/com/android/server/TEST_MAPPING
index c3dda71..cb4f561 100644
--- a/services/core/java/com/android/server/TEST_MAPPING
+++ b/services/core/java/com/android/server/TEST_MAPPING
@@ -54,23 +54,7 @@
         },
         {
             "name": "BinaryTransparencyHostTest",
-            "file_patterns": [
-                "BinaryTransparencyService\\.java"
-            ]
-        },
-        {
-            "name": "CtsMediaProjectionTestCases",
-            "options": [
-                {
-                    "exclude-annotation": "android.platform.test.annotations.FlakyTest"
-                },
-                {
-                    "exclude-annotation": "androidx.test.filters.FlakyTest"
-                },
-                {
-                    "exclude-annotation": "org.junit.Ignore"
-                }
-            ]
+            "file_patterns": ["BinaryTransparencyService\\.java"]
         }
     ],
     "presubmit-large": [
diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java
index 578f520..647b702 100644
--- a/services/core/java/com/android/server/accounts/AccountManagerService.java
+++ b/services/core/java/com/android/server/accounts/AccountManagerService.java
@@ -482,14 +482,13 @@
         Bundle.setDefusable(extras, true);
         int callingUid = Binder.getCallingUid();
         int userId = UserHandle.getCallingUserId();
-        if (Log.isLoggable(TAG, Log.VERBOSE)) {
-            Log.v(TAG, "addAccountExplicitly: " + account + ", caller's uid " + callingUid
-                    + ", pid " + Binder.getCallingPid());
-        }
         Objects.requireNonNull(account, "account cannot be null");
+        Log.v(TAG, "addAccountExplicitly: caller's uid=" + callingUid + ", pid="
+                + Binder.getCallingPid() + ", packageName=" + opPackageName + ", accountType="
+                + account.type);
         if (!isAccountManagedByCaller(account.type, callingUid, userId)) {
-            String msg = String.format("uid %s cannot explicitly add accounts of type: %s",
-                    callingUid, account.type);
+            String msg = String.format("uid=%s, package=%s cannot explicitly add "
+                    + "accounts of type: %s", callingUid, opPackageName, account.type);
             throw new SecurityException(msg);
         }
         /*
@@ -2311,6 +2310,7 @@
                 response.onError(AccountManager.ERROR_CODE_MANAGEMENT_DISABLED_FOR_ACCOUNT_TYPE,
                         "User cannot modify accounts of this type (policy).");
             } catch (RemoteException re) {
+                Log.w(TAG, "RemoteException while removing account", re);
             }
             return;
         }
@@ -5053,7 +5053,7 @@
                 Log.v(TAG, "initiating bind to authenticator type " + mAccountType);
             }
             if (!bindToAuthenticator(mAccountType)) {
-                Log.d(TAG, "bind attempt failed for " + toDebugString());
+                Log.w(TAG, "bind attempt failed for " + toDebugString());
                 onError(AccountManager.ERROR_CODE_REMOTE_EXCEPTION, "bind failure");
             }
         }
@@ -5248,10 +5248,9 @@
             authenticatorInfo = mAuthenticatorCache.getServiceInfo(
                     AuthenticatorDescription.newKey(authenticatorType), mAccounts.userId);
             if (authenticatorInfo == null) {
-                if (Log.isLoggable(TAG, Log.VERBOSE)) {
-                    Log.v(TAG, "there is no authenticator for " + authenticatorType
-                            + ", bailing out");
-                }
+                Log.w(TAG, "there is no authenticator for " + authenticatorType
+                        + ", bailing out");
+
                 return false;
             }
 
@@ -5273,9 +5272,9 @@
                 flags |= Context.BIND_ALLOW_INSTANT;
             }
             if (!mContext.bindServiceAsUser(intent, this, flags, UserHandle.of(mAccounts.userId))) {
-                if (Log.isLoggable(TAG, Log.VERBOSE)) {
-                    Log.v(TAG, "bindService to " + authenticatorInfo.componentName + " failed");
-                }
+                Log.w(TAG, "bindService to " + authenticatorInfo.componentName + " failed");
+                // Perform unbind as per documentation at Context.bindServiceAsUser
+                mContext.unbindService(this);
                 return false;
             }
 
diff --git a/services/core/java/com/android/server/am/ActiveInstrumentation.java b/services/core/java/com/android/server/am/ActiveInstrumentation.java
index 61ccf11..49685b95 100644
--- a/services/core/java/com/android/server/am/ActiveInstrumentation.java
+++ b/services/core/java/com/android/server/am/ActiveInstrumentation.java
@@ -40,6 +40,9 @@
     // The application being instrumented
     ApplicationInfo mTargetInfo;
 
+    // Whether the application is instrumented as an sdk running in the sdk_sandbox.
+    boolean mIsSdkInSandbox;
+
     // Where to save profiling
     String mProfileFile;
 
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index df3c95b..34608f9 100644
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -6786,8 +6786,9 @@
                     mAm.mHandler.removeCallbacks(mLastAnrDumpClearer);
                     mAm.mHandler.postDelayed(mLastAnrDumpClearer,
                             LAST_ANR_LIFETIME_DURATION_MSECS);
-                    String anrMessage = "executing service " + timeout.shortInstanceName;
-                    timeoutRecord = TimeoutRecord.forServiceExec(anrMessage);
+                    long waitedMillis = now - timeout.executingStart;
+                    timeoutRecord = TimeoutRecord.forServiceExec(timeout.shortInstanceName,
+                            waitedMillis);
                 } else {
                     Message msg = mAm.mHandler.obtainMessage(
                             ActivityManagerService.SERVICE_TIMEOUT_MSG);
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index def2a2f..5da0d91 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -4668,6 +4668,7 @@
             } else if (instr2 != null) {
                 thread.bindApplication(processName, appInfo,
                         app.sdkSandboxClientAppVolumeUuid, app.sdkSandboxClientAppPackage,
+                        instr2.mIsSdkInSandbox,
                         providerList,
                         instr2.mClass,
                         profilerInfo, instr2.mArguments,
@@ -4684,6 +4685,7 @@
             } else {
                 thread.bindApplication(processName, appInfo,
                         app.sdkSandboxClientAppVolumeUuid, app.sdkSandboxClientAppPackage,
+                        /* isSdkInSandbox= */ false,
                         providerList, null, profilerInfo, null, null, null, testMode,
                         mBinderTransactionTrackingEnabled, enableTrackAllocation,
                         isRestrictedBackupMode || !normalMode, app.isPersistent(),
@@ -15322,7 +15324,8 @@
                         ai,
                         noRestart,
                         disableHiddenApiChecks,
-                        disableTestApiChecks);
+                        disableTestApiChecks,
+                        (flags & ActivityManager.INSTR_FLAG_INSTRUMENT_SDK_IN_SANDBOX) != 0);
             }
 
             ActiveInstrumentation activeInstr = new ActiveInstrumentation(this);
@@ -15419,7 +15422,8 @@
             ApplicationInfo sdkSandboxClientAppInfo,
             boolean noRestart,
             boolean disableHiddenApiChecks,
-            boolean disableTestApiChecks) {
+            boolean disableTestApiChecks,
+            boolean isSdkInSandbox) {
 
         if (noRestart) {
             reportStartInstrumentationFailureLocked(
@@ -15429,16 +15433,6 @@
             return false;
         }
 
-        final ApplicationInfo sdkSandboxInfo;
-        try {
-            final PackageManager pm = mContext.getPackageManager();
-            sdkSandboxInfo = pm.getApplicationInfoAsUser(pm.getSdkSandboxPackageName(), 0, userId);
-        } catch (NameNotFoundException e) {
-            reportStartInstrumentationFailureLocked(
-                    watcher, className, "Can't find SdkSandbox package");
-            return false;
-        }
-
         final SdkSandboxManagerLocal sandboxManagerLocal =
                 LocalManagerRegistry.getManager(SdkSandboxManagerLocal.class);
         if (sandboxManagerLocal == null) {
@@ -15447,13 +15441,22 @@
             return false;
         }
 
-        final String processName = sandboxManagerLocal.getSdkSandboxProcessNameForInstrumentation(
-                sdkSandboxClientAppInfo);
+        final ApplicationInfo sdkSandboxInfo;
+        try {
+            sdkSandboxInfo =
+                    sandboxManagerLocal.getSdkSandboxApplicationInfoForInstrumentation(
+                            sdkSandboxClientAppInfo, userId, isSdkInSandbox);
+        } catch (NameNotFoundException e) {
+            reportStartInstrumentationFailureLocked(
+                    watcher, className, "Can't find SdkSandbox package");
+            return false;
+        }
 
         ActiveInstrumentation activeInstr = new ActiveInstrumentation(this);
         activeInstr.mClass = className;
-        activeInstr.mTargetProcesses = new String[]{processName};
+        activeInstr.mTargetProcesses = new String[]{sdkSandboxInfo.processName};
         activeInstr.mTargetInfo = sdkSandboxInfo;
+        activeInstr.mIsSdkInSandbox = isSdkInSandbox;
         activeInstr.mProfileFile = profileFile;
         activeInstr.mArguments = arguments;
         activeInstr.mWatcher = watcher;
@@ -15470,7 +15473,6 @@
             sandboxManagerLocal.notifyInstrumentationStarted(
                     sdkSandboxClientAppInfo.packageName, sdkSandboxClientAppInfo.uid);
             synchronized (mProcLock) {
-                int sdkSandboxUid = Process.toSdkSandboxUid(sdkSandboxClientAppInfo.uid);
                 // Kill the package sdk sandbox process belong to. At this point sdk sandbox is
                 // already killed.
                 forceStopPackageLocked(
@@ -15486,10 +15488,10 @@
 
                 ProcessRecord app = addAppLocked(
                         sdkSandboxInfo,
-                        processName,
+                        sdkSandboxInfo.processName,
                         /* isolated= */ false,
                         /* isSdkSandbox= */ true,
-                        sdkSandboxUid,
+                        sdkSandboxInfo.uid,
                         sdkSandboxClientAppInfo.packageName,
                         disableHiddenApiChecks,
                         disableTestApiChecks,
diff --git a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
index 8735f8a..37802d2 100644
--- a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
+++ b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
@@ -1444,13 +1444,15 @@
 
     @Override
     public boolean isDelayBehindServices() {
-        // TODO: implement
+        // Modern queue does not alter the broadcasts delivery behavior based on background
+        // services, so ignore.
         return false;
     }
 
     @Override
     public void backgroundServicesFinishedLocked(int userId) {
-        // TODO: implement
+        // Modern queue does not alter the broadcasts delivery behavior based on background
+        // services, so ignore.
     }
 
     private void checkHealth() {
diff --git a/services/core/java/com/android/server/am/ContentProviderHelper.java b/services/core/java/com/android/server/am/ContentProviderHelper.java
index d8cb094..fe45a95 100644
--- a/services/core/java/com/android/server/am/ContentProviderHelper.java
+++ b/services/core/java/com/android/server/am/ContentProviderHelper.java
@@ -252,7 +252,6 @@
                 if (r != null && cpr.canRunHere(r)) {
                     checkAssociationAndPermissionLocked(r, cpi, callingUid, userId, checkCrossUser,
                             cpr.name.flattenToShortString(), startTime);
-                    enforceContentProviderRestrictionsForSdkSandbox(cpi);
 
                     // This provider has been published or is in the process
                     // of being published...  but it is also allowed to run
@@ -449,7 +448,6 @@
                     // info and allow the caller to instantiate it.  Only do
                     // this if the provider is the same user as the caller's
                     // process, or can run as root (so can be in any process).
-                    enforceContentProviderRestrictionsForSdkSandbox(cpi);
                     return cpr.newHolder(null, true);
                 }
 
@@ -599,8 +597,6 @@
                 // Return a holder instance even if we are waiting for the publishing of the
                 // provider, client will check for the holder.provider to see if it needs to wait
                 // for it.
-                //todo(b/265965249) Need to perform cleanup before calling enforce method here
-                enforceContentProviderRestrictionsForSdkSandbox(cpi);
                 return cpr.newHolder(conn, false);
             }
         }
@@ -662,7 +658,6 @@
                     + " caller=" + callerName + "/" + Binder.getCallingUid());
             return null;
         }
-        enforceContentProviderRestrictionsForSdkSandbox(cpi);
         return cpr.newHolder(conn, false);
     }
 
@@ -1140,7 +1135,6 @@
             appName = r.toString();
         }
 
-        enforceContentProviderRestrictionsForSdkSandbox(cpi);
         return checkContentProviderPermission(cpi, callingPid, Binder.getCallingUid(),
                 userId, checkUser, appName);
     }
@@ -1514,11 +1508,17 @@
 
     /**
      * Check if {@link ProcessRecord} has a possible chance at accessing the
-     * given {@link ProviderInfo}. Final permission checking is always done
+     * given {@link ProviderInfo}. First permission checking is for enforcing
+     * ContentProvider Restrictions from SdkSandboxManager.
+     * Final permission checking is always done
      * in {@link ContentProvider}.
      */
     private String checkContentProviderPermission(ProviderInfo cpi, int callingPid, int callingUid,
             int userId, boolean checkUser, String appName) {
+        if (!canAccessContentProviderFromSdkSandbox(cpi, callingUid)) {
+            return "ContentProvider access not allowed from sdk sandbox UID. "
+                    + "ProviderInfo: " + cpi.toString();
+        }
         boolean checkedGrants = false;
         if (checkUser) {
             // Looking for cross-user grants before enforcing the typical cross-users permissions
@@ -1908,11 +1908,10 @@
         }
     }
 
-    // Binder.clearCallingIdentity() shouldn't be called before this method
-    // as Binder should have its original callingUid for the check
-    private void enforceContentProviderRestrictionsForSdkSandbox(ProviderInfo cpi) {
-        if (!Process.isSdkSandboxUid(Binder.getCallingUid())) {
-            return;
+    private boolean canAccessContentProviderFromSdkSandbox(ProviderInfo cpi,
+                                                                    int callingUid) {
+        if (!Process.isSdkSandboxUid(callingUid)) {
+            return true;
         }
         final SdkSandboxManagerLocal sdkSandboxManagerLocal =
                 LocalManagerRegistry.getManager(SdkSandboxManagerLocal.class);
@@ -1921,11 +1920,7 @@
                     + "when checking whether SDK sandbox uid may "
                     + "access the contentprovider.");
         }
-        if (!sdkSandboxManagerLocal
-                .canAccessContentProviderFromSdkSandbox(cpi)) {
-            throw new SecurityException(
-                    "SDK sandbox uid may not access contentprovider " + cpi.name);
-        }
+        return sdkSandboxManagerLocal.canAccessContentProviderFromSdkSandbox(cpi);
     }
 
     /**
diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java
index 1e5f187..85a0185 100644
--- a/services/core/java/com/android/server/am/OomAdjuster.java
+++ b/services/core/java/com/android/server/am/OomAdjuster.java
@@ -837,7 +837,7 @@
      */
     @GuardedBy("mService")
     void enqueueOomAdjTargetLocked(ProcessRecord app) {
-        if (app != null) {
+        if (app != null && app.mState.getMaxAdj() > FOREGROUND_APP_ADJ) {
             mPendingProcessSet.add(app);
         }
     }
diff --git a/services/core/java/com/android/server/am/OomAdjuster.md b/services/core/java/com/android/server/am/OomAdjuster.md
index febc37b..16091d1 100644
--- a/services/core/java/com/android/server/am/OomAdjuster.md
+++ b/services/core/java/com/android/server/am/OomAdjuster.md
@@ -17,10 +17,10 @@
 
 ## Purpose of Oom Adjuster
 
-The Android OS runs with limited hardware resources, i.e. CPU/RAM/Power. To strive for the better performance, Oom Ajuster is introduced to tweak the following 3 major factors:
+The Android OS runs with limited hardware resources, i.e. CPU/RAM/Power. To strive for the better performance, Oom Adjuster is introduced to tweak the following 3 major factors:
 
  * Process State
-   * Wildly used by the System Server, i.e., determine if it's foreground or not, change the GC behavior, etc.
+   * Widely used by the System Server, i.e., determine if it's foreground or not, change the GC behavior, etc.
    * Defined in `ActivityManager#PROCESS_STATE_*`
  * Oom Adj score
    * Used by the lmkd to determine which process should be expunged on memory pressure.
@@ -31,36 +31,36 @@
 
 ## Process Capabilities
 
-Besides the above 3 major factors, Android R introduced the Process Capabilities `ActivityManager#PROCESS_CAPABILITY_*`.  It's a new attribute to process record, mainly designed for supporting the "while-in-use" permission model - in additional to the traditional Android permissions, wheather or not a process has access to a given API, will be guarded by its current process state as well. The OomAdjuster will compute the process capabilities during updating the oom adj. Meanwhile, the flag `ActivityManager#BIND_INCLUDE_CAPABILITIES` enables to possiblity to "transfer" the capability from a client process to the service process it binds to.
+Besides the above 3 major factors, Android R introduced the Process Capabilities `ActivityManager#PROCESS_CAPABILITY_*`.  It's a new attribute to process record, mainly designed for supporting the "while-in-use" permission model - in addition to the traditional Android permissions, whether or not a process has access to a given API, will be guarded by its current process state as well. The OomAdjuster will compute the process capabilities during updating the oom adj. Meanwhile, the flag `ActivityManager#BIND_INCLUDE_CAPABILITIES` enables the possibility to "transfer" the capability from a client process to the service process it binds to.
 
 ## Rationale of Oom Adjuster
 
-System server keeps a list of recent used app processes. Given the 4 types of entities that an Android processes could have: Activity, Service, Content Provider and Broadcast Receiver, the System Server has to adjust the above 3 factors to give the users the best performance according to the states of the entities. A typical case would be that: foreground app A binds into a background service B in order to serve the user, in the case of memory pressure, the background service B should be avoided from being expunged since it would result user-perceptible interruption of service. The Oom Adjuster is to tweak the aforementioned 3 factors for those app processes.
+System server keeps a list of recent used app processes. Given the 4 types of entities that an Android processes could have: Activity, Service, Content Provider and Broadcast Receiver, the System Server has to adjust the above 3 factors to give the users the best performance according to the states of the entities. A typical case would be that: foreground app A binds into a background service B in order to serve the user, in the case of memory pressure, the background service B should be avoided from being expunged since it would result in user-perceptible interruption of service. The Oom Adjuster is to tweak the aforementioned 3 factors for those app processes.
 
 The timing of updating the Oom Adj score is vital: assume a camera process in background gets launched into foreground, launching camera typically incurs high memory pressure, which could incur low memory kills - if the camera process isn't moved out of the background adj group, it could get killed by lmkd. Therefore the updates have to be called pretty frequently: in case there is an activity start, service binding, etc.
 
 The update procedure basically consists of 3 parts:
   * Find out the process record to be updated
-    * There are two categories of updateOomAdjLocked: one with the target process record to be updated, while the other one is to update all process record.
+    * There are two categories of updateOomAdjLocked: one with the target process record to be updated, while the other one is to update all process records.
     * Besides that, while computing the Oom Aj score, the clients of service connections or content providers of the present process record, which forms a process dependency graph actually, will be evaluated as well.
-    * Starting from Android R, when updating for a specific process record, an optimization is made that, only the reachable process records starting from this process record in the process dependency graph, will be re-evaluated.
+    * Starting from Android R, when updating a specific process record, an optimization is made that only the reachable process records starting from this process record in the process dependency graph will be re-evaluated.
     * The `cached` Oom Adj scores are grouped in `bucket`, which is used in the isolated processes: they could be correlated - assume one isolated Chrome process is at Oom Adj score 920 and another one is 980; the later one could get expunged much earlier than the former one, which doesn't make sense; grouping them would be a big relief for this case.
   * Compute Oom Adj score
     * This procedure returns true if there is a score change, false if there is no.
     * The curAdj field in the process record is used as an intermediate value during the computation.
     * Initialize the Process State to `PROCESS_STATE_CACHED_EMPTY`, which is the lowest importance.
     * Calculate the scores based on various factors:
-      * If it's not allowed to be lower than `ProcessList#FOREGROUND_APP_ADJ`, meaning it's propbably a persistent process, there is no too much to do here.
+      * If it's not allowed to be lower than `ProcessList#FOREGROUND_APP_ADJ`, meaning it's probably a persistent process, there is no too much to do here.
       * Exame if the process is the top app, running remote animation, running instrumentation, receiving broadcast, executing services, running on top but sleeping (screen off), update the intermediate values.
       * Ask Window Manager (yes, ActivityTaskManager is with WindowManager now) to tell each activity's visibility information.
-      * Check if the process has recent tasks, check if it's hosting a foreground service, overlay UI, toast etc. Note for the foreground service, if it was in foreground status, allow it to stay in higher rank in memory for a while: Assuming a camera captureing case, where the camera app is still processing the picture while being switched out of foreground - keep it stay in higher rank in memory would ensure the pictures are persisted correctly.
-      * Check if the process is the heavy weight process, whose launching/exiting would be slow and it's better to keep it in the memory. Note there should be only one heavy weight process across the system.
+      * Check if the process has recent tasks, check if it's hosting a foreground service, overlay UI, toast etc. Note for the foreground service, if it was in foreground status, allow it to stay in higher rank in memory for a while: Assuming a camera capturing case, where the camera app is still processing the picture while being switched out of foreground - keep it stay in higher rank in memory would ensure the pictures are persisted correctly.
+      * Check if the process is the heavyweight process, whose launching/exiting would be slow and it's better to keep it in the memory. Note there should be only one heavyweight process across the system.
       * For sure the Home process shouldn't be expunged frequently as well.
       * The next two factors are either it was the previous process with visible UI to the user, or it's a backup agent.
       * And then it goes to the massive searches against the service connections and the content providers, each of the clients will be evaluated, and the Oom Adj score could get updated according to its clients' scores. However there are a bunch of service binding flags which could impact the result:
         * Below table captures the results with given various service binding states:
 
-        | Conditon #1                     | Condition #2                                               | Condition #3                                 | Condition #4                                      | Result                   |
+        | Condition #1                    | Condition #2                                               | Condition #3                                 | Condition #4                                      | Result                   |
         |---------------------------------|------------------------------------------------------------|----------------------------------------------|---------------------------------------------------|--------------------------|
         | `BIND_WAIVE_PRIORITY` not set   | `BIND_ALLOW_OOM_MANAGEMENT` set                            | Shown UI && Not Home                         |                                                   | Use the app's own Adj    |
         |                                 |                                                            | Inactive for a while                         |                                                   | Use the app's own Adj    |
@@ -85,7 +85,7 @@
         |                                 |                                                            |                                              | `BIND_IMPORTANT` is NOT set                       | Sched = default          |
         * Below table captures the results with given various content provider binding states:
 
-        | Conditon #1                     | Condition #2                                               | Condition #3                                 | Result                   |
+        | Condition #1                    | Condition #2                                               | Condition #3                                 | Result                   |
         |---------------------------------|------------------------------------------------------------|----------------------------------------------|--------------------------|
         | Client's process state >= cached|                                                            |                                              | Client ProcState = empty |
         | Adj > Client Adj                | Not shown UI or is Home, or Client's Adj <= perceptible    | Client's Adj <= foreground Adj               | Try foreground Adj       |
@@ -94,11 +94,11 @@
         |                                 | Client's process state is NOT top                          |                                              | ProcState = bound fg svc |
         | Has external dependencies       | Adj > fg app                                               |                                              | adj = fg app             |
         |                                 | Process state > important foreground                       |                                              | ProcState = important fg |
-        | Still within retain time        | Adj > previous app Adj                                     |                                              | adj = previuos app adj   |
+        | Still within retain time        | Adj > previous app Adj                                     |                                              | adj = previous app adj   |
         |                                 | Process state > last activity                              |                                              | ProcState = last activity|
         * Some additional tweaks after the above ones:
 
-        | Conditon #1                     | Condition #2                                               | Condition #3                                 | Result                             |
+        | Condition #1                    | Condition #2                                               | Condition #3                                 | Result                             |
         |---------------------------------|------------------------------------------------------------|----------------------------------------------|------------------------------------|
         | Process state >= cached empty   | Has client activities                                      |                                              | ProcState = cached activity client |
         |                                 | treat like activity (IME)                                  |                                              | ProcState = cached activity        |
@@ -108,7 +108,7 @@
 
 ## Cycles, Cycles, Cycles
 
-Another interesting aspect of the Oom Adjuster is the cycles of the dependencies. A simple example would be like below illustration, process A is hosting a service which is bound by process B; meanwhile the process B is hosting a service which is bound by process A.
+Another interesting aspect of the Oom Adjuster is the cycles of the dependencies. A simple example would be like the illustration below, process A is hosting a service which is bound by process B; meanwhile process B is hosting a service which is bound by process A.
 <pre>
   +-------------+           +-------------+
   |  Process A  | <-------- |  Process B  |
@@ -116,7 +116,7 @@
   +-------------+           +-------------+
 </pre>
 
-There could be very complicated cases, which could involve multiple cycles, and in the dependency graph, each of the process record node could have different importance.
+There could be very complicated cases, which could involve multiple cycles, and in the dependency graph, each of the process record nodes could have different importance.
 <pre>
   +-------------+           +-------------+           +-------------+           +-------------+           +-------------+
   |  Process D  | --------> |  Process A  | <-------- |  Process B  | <-------- |  Process C  | <-------- |  Process A  |
@@ -124,9 +124,9 @@
   +-------------+           +-------------+           +-------------+           +-------------+           +-------------+
 </pre>
 
-The Oom Adjuster maintains a global sequence ID `mAdjSeq` to track the current Oom Adjuster calling. And each of the process record has a field to track in which sequence the process record is evaluated. If during the Oom Adj computation, a process record with sequence ID as same as the current global sequence ID, this would mean that a cycle is detected; in this case:
+The Oom Adjuster maintains a global sequence ID `mAdjSeq` to track the current Oom Adjuster calling. And each of the process records has a field to track in which sequence the process record is evaluated. If during the Oom Adj computation, a process record with sequence ID as same as the current global sequence ID, this would mean that a cycle is detected; in this case:
   * Decrement the sequence ID of each process if there is a cycle.
-  * Re-evaluate each of the process record within the cycle until nothing was promoted.
+  * Re-evaluate each of the process records within the cycle until nothing was promoted.
   * Iterate the processes from least important to most important ones.
   * A maximum retries of 10 is enforced, while in practice, the maximum retries could reach only 2 to 3.
 
diff --git a/services/core/java/com/android/server/am/ProcessErrorStateRecord.java b/services/core/java/com/android/server/am/ProcessErrorStateRecord.java
index e498384..5f8e211 100644
--- a/services/core/java/com/android/server/am/ProcessErrorStateRecord.java
+++ b/services/core/java/com/android/server/am/ProcessErrorStateRecord.java
@@ -321,11 +321,13 @@
         }
 
         final boolean isSilentAnr;
-        final int pid = mApp.getPid();
+        final int pid;
         final UUID errorId;
         latencyTracker.waitingOnAMSLockStarted();
         synchronized (mService) {
             latencyTracker.waitingOnAMSLockEnded();
+            // Get the process's pid after obtaining the global lock.
+            pid = mApp.getPid();
             // Store annotation here as instance above will not be hit on all paths.
             setAnrAnnotation(annotation);
 
diff --git a/services/core/java/com/android/server/am/StackTracesDumpHelper.java b/services/core/java/com/android/server/am/StackTracesDumpHelper.java
index 01fb0d1..d9553a3 100644
--- a/services/core/java/com/android/server/am/StackTracesDumpHelper.java
+++ b/services/core/java/com/android/server/am/StackTracesDumpHelper.java
@@ -104,8 +104,8 @@
     public static File dumpStackTraces(ArrayList<Integer> firstPids,
             ProcessCpuTracker processCpuTracker, SparseBooleanArray lastPids,
             Future<ArrayList<Integer>> nativePidsFuture, StringWriter logExceptionCreatingFile,
-            String subject, String criticalEventSection,
-            @NonNull Executor auxiliaryTaskExecutor, AnrLatencyTracker latencyTracker) {
+            String subject, String criticalEventSection, @NonNull Executor auxiliaryTaskExecutor,
+            AnrLatencyTracker latencyTracker) {
         return dumpStackTraces(firstPids, processCpuTracker, lastPids, nativePidsFuture,
                 logExceptionCreatingFile, null, subject, criticalEventSection,
                 /* memoryHeaders= */ null, auxiliaryTaskExecutor, null, latencyTracker);
@@ -120,7 +120,7 @@
             Future<ArrayList<Integer>> nativePidsFuture, StringWriter logExceptionCreatingFile,
             AtomicLong firstPidEndOffset, String subject, String criticalEventSection,
             String memoryHeaders, @NonNull Executor auxiliaryTaskExecutor,
-            Future<File> firstPidFilePromise, AnrLatencyTracker latencyTracker) {
+           Future<File> firstPidFilePromise, AnrLatencyTracker latencyTracker) {
         try {
 
             if (latencyTracker != null) {
diff --git a/services/core/java/com/android/server/ambientcontext/AmbientContextManagerService.java b/services/core/java/com/android/server/ambientcontext/AmbientContextManagerService.java
index a9a77bf..46e6001 100644
--- a/services/core/java/com/android/server/ambientcontext/AmbientContextManagerService.java
+++ b/services/core/java/com/android/server/ambientcontext/AmbientContextManagerService.java
@@ -56,6 +56,7 @@
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Objects;
@@ -128,7 +129,7 @@
                 PACKAGE_UPDATE_POLICY_REFRESH_EAGER
                         | /*To avoid high latency*/ PACKAGE_RESTART_POLICY_REFRESH_EAGER);
         mContext = context;
-        mExistingClientRequests = new ArraySet<>();
+        mExistingClientRequests = ConcurrentHashMap.newKeySet();
     }
 
     @Override
@@ -157,18 +158,22 @@
             String callingPackage, IAmbientContextObserver observer) {
         Slog.d(TAG, "New client added: " + callingPackage);
 
-        // Remove any existing ClientRequest for this user and package.
-        mExistingClientRequests.removeAll(
-                findExistingRequests(userId, callingPackage));
+        synchronized (mExistingClientRequests) {
+            // Remove any existing ClientRequest for this user and package.
+            mExistingClientRequests.removeAll(
+                    findExistingRequests(userId, callingPackage));
 
-        // Add to existing ClientRequests
-        mExistingClientRequests.add(
-                new ClientRequest(userId, request, callingPackage, observer));
+            // Add to existing ClientRequests
+            mExistingClientRequests.add(
+                    new ClientRequest(userId, request, callingPackage, observer));
+        }
     }
 
     void clientRemoved(int userId, String packageName) {
         Slog.d(TAG, "Remove client: " + packageName);
-        mExistingClientRequests.removeAll(findExistingRequests(userId, packageName));
+        synchronized (mExistingClientRequests) {
+            mExistingClientRequests.removeAll(findExistingRequests(userId, packageName));
+        }
     }
 
     private Set<ClientRequest> findExistingRequests(int userId, String packageName) {
@@ -183,9 +188,11 @@
 
     @Nullable
     IAmbientContextObserver getClientRequestObserver(int userId, String packageName) {
-        for (ClientRequest clientRequest : mExistingClientRequests) {
-            if (clientRequest.hasUserIdAndPackageName(userId, packageName)) {
-                return clientRequest.getObserver();
+        synchronized (mExistingClientRequests) {
+            for (ClientRequest clientRequest : mExistingClientRequests) {
+                if (clientRequest.hasUserIdAndPackageName(userId, packageName)) {
+                    return clientRequest.getObserver();
+                }
             }
         }
         return null;
@@ -587,10 +594,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_AMBIENT_CONTEXT_EVENT)
         @Override
         public void unregisterObserver(String callingPackage) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.ACCESS_AMBIENT_CONTEXT_EVENT, TAG);
+            unregisterObserver_enforcePermission();
             assertCalledByPackageOwner(callingPackage);
 
             synchronized (mLock) {
diff --git a/services/core/java/com/android/server/appop/AppOpMigrationHelper.java b/services/core/java/com/android/server/appop/AppOpMigrationHelper.java
new file mode 100644
index 0000000..7919370
--- /dev/null
+++ b/services/core/java/com/android/server/appop/AppOpMigrationHelper.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2023 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.server.appop;
+
+import android.annotation.NonNull;
+
+import java.util.Map;
+
+/**
+ * In-process api for app-ops migration.
+ *
+ * @hide
+ */
+public interface AppOpMigrationHelper {
+
+    /**
+     * @return a map of app ID to app-op modes (op name -> mode) for a given user.
+     */
+    @NonNull
+    Map<Integer, Map<String, Integer>> getLegacyAppIdAppOpModes(int userId);
+
+    /**
+     * @return a map of package name to app-op modes (op name -> mode) for a given user.
+     */
+    @NonNull
+    Map<String, Map<String, Integer>> getLegacyPackageAppOpModes(int userId);
+
+    /**
+     * @return AppOps file version, the version is same for all the user.
+     */
+    int getLegacyAppOpVersion();
+
+    /**
+     * @return Whether app-op state exists or not.
+     */
+    boolean hasLegacyAppOpState();
+}
diff --git a/services/core/java/com/android/server/appop/AppOpMigrationHelperImpl.java b/services/core/java/com/android/server/appop/AppOpMigrationHelperImpl.java
new file mode 100644
index 0000000..1728f25
--- /dev/null
+++ b/services/core/java/com/android/server/appop/AppOpMigrationHelperImpl.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2023 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.server.appop;
+
+import android.annotation.NonNull;
+import android.app.AppOpsManager;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+import android.util.AtomicFile;
+import android.util.SparseArray;
+import android.util.SparseIntArray;
+
+import com.android.internal.annotations.GuardedBy;
+import com.android.server.SystemServiceManager;
+
+import java.io.File;
+import java.util.Collections;
+import java.util.Map;
+
+/**
+ * Provider of legacy app-ops data for new permission subsystem.
+ *
+ * @hide
+ */
+public class AppOpMigrationHelperImpl implements AppOpMigrationHelper {
+    private SparseArray<Map<Integer, Map<String, Integer>>> mAppIdAppOpModes = null;
+    private SparseArray<Map<String, Map<String, Integer>>> mPackageAppOpModes = null;
+    private int mVersionAtBoot;
+
+    private final Object mLock = new Object();
+
+    @Override
+    @GuardedBy("mLock")
+    @NonNull
+    public Map<Integer, Map<String, Integer>> getLegacyAppIdAppOpModes(int userId) {
+        synchronized (mLock) {
+            if (mAppIdAppOpModes == null) {
+                readLegacyAppOpState();
+            }
+        }
+        return mAppIdAppOpModes.get(userId, Collections.emptyMap());
+    }
+
+    @Override
+    @GuardedBy("mLock")
+    @NonNull
+    public Map<String, Map<String, Integer>> getLegacyPackageAppOpModes(int userId) {
+        synchronized (mLock) {
+            if (mPackageAppOpModes == null) {
+                readLegacyAppOpState();
+            }
+        }
+        return mPackageAppOpModes.get(userId, Collections.emptyMap());
+    }
+
+    @GuardedBy("mLock")
+    private void readLegacyAppOpState() {
+        final File systemDir = SystemServiceManager.ensureSystemDir();
+        AtomicFile appOpFile = new AtomicFile(new File(systemDir, "appops.xml"));
+
+        final SparseArray<SparseIntArray> uidAppOpModes = new SparseArray<>();
+        final SparseArray<ArrayMap<String, SparseIntArray>> packageAppOpModes =
+                new SparseArray<>();
+
+        LegacyAppOpStateParser parser = new LegacyAppOpStateParser();
+        final int version = parser.readState(appOpFile, uidAppOpModes, packageAppOpModes);
+        // -1 No app ops data available
+        // 0 appops.xml exist w/o any version
+        switch (version) {
+            case -2:
+                mVersionAtBoot = -1;
+                break;
+            case -1:
+                mVersionAtBoot = 0;
+                break;
+            default:
+                mVersionAtBoot = version;
+        }
+        mAppIdAppOpModes = getAppIdAppOpModes(uidAppOpModes);
+        mPackageAppOpModes = getPackageAppOpModes(packageAppOpModes);
+    }
+
+    private SparseArray<Map<Integer, Map<String, Integer>>> getAppIdAppOpModes(
+            SparseArray<SparseIntArray> uidAppOpModes) {
+        SparseArray<Map<Integer, Map<String, Integer>>> userAppIdAppOpModes = new SparseArray<>();
+
+        int size = uidAppOpModes.size();
+        for (int uidIndex = 0; uidIndex < size; uidIndex++) {
+            int uid = uidAppOpModes.keyAt(uidIndex);
+            int userId = UserHandle.getUserId(uid);
+            Map<Integer, Map<String, Integer>> appIdAppOpModes = userAppIdAppOpModes.get(userId);
+            if (appIdAppOpModes == null) {
+                appIdAppOpModes = new ArrayMap<>();
+                userAppIdAppOpModes.put(userId, appIdAppOpModes);
+            }
+
+            SparseIntArray appOpModes = uidAppOpModes.valueAt(uidIndex);
+            appIdAppOpModes.put(UserHandle.getAppId(uid), getAppOpModesForOpName(appOpModes));
+        }
+        return userAppIdAppOpModes;
+    }
+
+    private SparseArray<Map<String, Map<String, Integer>>> getPackageAppOpModes(
+            SparseArray<ArrayMap<String, SparseIntArray>> legacyPackageAppOpModes) {
+        SparseArray<Map<String, Map<String, Integer>>> userPackageAppOpModes = new SparseArray<>();
+
+        int usersSize = legacyPackageAppOpModes.size();
+        for (int userIndex = 0; userIndex < usersSize; userIndex++) {
+            int userId = legacyPackageAppOpModes.keyAt(userIndex);
+            Map<String, Map<String, Integer>> packageAppOpModes = userPackageAppOpModes.get(userId);
+            if (packageAppOpModes == null) {
+                packageAppOpModes = new ArrayMap<>();
+                userPackageAppOpModes.put(userId, packageAppOpModes);
+            }
+
+            ArrayMap<String, SparseIntArray> legacyPackagesModes =
+                    legacyPackageAppOpModes.valueAt(userIndex);
+
+            int packagesSize = legacyPackagesModes.size();
+            for (int packageIndex = 0; packageIndex < packagesSize; packageIndex++) {
+                String packageName = legacyPackagesModes.keyAt(packageIndex);
+                SparseIntArray modes = legacyPackagesModes.valueAt(packageIndex);
+                packageAppOpModes.put(packageName, getAppOpModesForOpName(modes));
+            }
+        }
+        return userPackageAppOpModes;
+    }
+
+    /**
+     * Converts the map from op code -> mode to op name -> mode.
+     */
+    private Map<String, Integer> getAppOpModesForOpName(SparseIntArray appOpCodeModes) {
+        int modesSize = appOpCodeModes.size();
+        Map<String, Integer> appOpNameModes = new ArrayMap<>(modesSize);
+
+        for (int modeIndex = 0; modeIndex < modesSize; modeIndex++) {
+            int opCode = appOpCodeModes.keyAt(modeIndex);
+            int opMode = appOpCodeModes.valueAt(modeIndex);
+            appOpNameModes.put(AppOpsManager.opToName(opCode), opMode);
+        }
+        return appOpNameModes;
+    }
+
+    @Override
+    public int getLegacyAppOpVersion() {
+        synchronized (mLock) {
+            if (mAppIdAppOpModes == null || mPackageAppOpModes == null) {
+                readLegacyAppOpState();
+            }
+        }
+        return mVersionAtBoot;
+    }
+
+    @Override
+    public boolean hasLegacyAppOpState() {
+        return getLegacyAppOpVersion() > -1;
+    }
+}
diff --git a/services/core/java/com/android/server/appop/AppOpsCheckingServiceImpl.java b/services/core/java/com/android/server/appop/AppOpsCheckingServiceImpl.java
index f520f6a..012dd9b 100644
--- a/services/core/java/com/android/server/appop/AppOpsCheckingServiceImpl.java
+++ b/services/core/java/com/android/server/appop/AppOpsCheckingServiceImpl.java
@@ -17,32 +17,19 @@
 package com.android.server.appop;
 
 import static android.app.AppOpsManager.MODE_ALLOWED;
-import static android.app.AppOpsManager.OP_NONE;
+import static android.app.AppOpsManager.MODE_FOREGROUND;
 import static android.app.AppOpsManager.OP_SCHEDULE_EXACT_ALARM;
-import static android.app.AppOpsManager.WATCH_FOREGROUND_CHANGES;
-import static android.app.AppOpsManager.opRestrictsRead;
-import static android.app.AppOpsManager.opToDefaultMode;
 
-import static com.android.server.appop.AppOpsService.ModeCallback.ALL_OPS;
-
-import android.Manifest;
 import android.annotation.NonNull;
-import android.annotation.Nullable;
 import android.annotation.UserIdInt;
-import android.app.AppGlobals;
 import android.app.AppOpsManager;
 import android.app.AppOpsManager.Mode;
 import android.content.Context;
-import android.content.pm.PackageManager;
 import android.content.pm.PackageManagerInternal;
 import android.content.pm.UserPackage;
 import android.os.AsyncTask;
-import android.os.Binder;
 import android.os.Handler;
-import android.os.RemoteException;
-import android.os.UserHandle;
 import android.util.ArrayMap;
-import android.util.ArraySet;
 import android.util.AtomicFile;
 import android.util.Slog;
 import android.util.SparseArray;
@@ -52,30 +39,16 @@
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.XmlUtils;
-import com.android.internal.util.function.pooled.PooledLambda;
-import com.android.modules.utils.TypedXmlPullParser;
 import com.android.modules.utils.TypedXmlSerializer;
 import com.android.server.LocalServices;
 import com.android.server.pm.UserManagerInternal;
 import com.android.server.pm.permission.PermissionManagerServiceInternal;
 
-import libcore.util.EmptyArray;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.PrintWriter;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
-import java.util.Objects;
-
 
 /**
  * Legacy implementation for App-ops service's app-op mode (uid and package) storage and access.
@@ -128,9 +101,9 @@
     @GuardedBy("mLock")
     final SparseArray<ArrayMap<String, SparseIntArray>> mUserPackageModes = new SparseArray<>();
 
-    final SparseArray<ArraySet<OnOpModeChangedListener>> mOpModeWatchers = new SparseArray<>();
-    final ArrayMap<String, ArraySet<OnOpModeChangedListener>> mPackageModeWatchers =
-            new ArrayMap<>();
+    private final LegacyAppOpStateParser mAppOpsStateParser = new LegacyAppOpStateParser();
+    @GuardedBy("mLock")
+    private List<AppOpsModeChangedListener> mModeChangedListeners = new ArrayList<>();
 
     final AtomicFile mFile;
     final Runnable mWriteRunner = new Runnable() {
@@ -153,10 +126,6 @@
     boolean mWriteScheduled;
     boolean mFastWriteScheduled;
 
-
-    // Constant meaning that any UID should be matched when dispatching callbacks
-    private static final int UID_ANY = -2;
-
     AppOpsCheckingServiceImpl(File storageFile,
             @NonNull Object lock, Handler handler, Context context,
             SparseArray<int[]> switchedOps) {
@@ -216,31 +185,39 @@
     @Override
     public boolean setUidMode(int uid, int op, int mode) {
         final int defaultMode = AppOpsManager.opToDefaultMode(op);
+        List<AppOpsModeChangedListener> listenersCopy;
         synchronized (mLock) {
             SparseIntArray opModes = mUidModes.get(uid, null);
-            if (opModes == null) {
-                if (mode != defaultMode) {
-                    opModes = new SparseIntArray();
-                    mUidModes.put(uid, opModes);
-                    opModes.put(op, mode);
-                    scheduleWriteLocked();
+
+            int previousMode = defaultMode;
+            if (opModes != null) {
+                previousMode = opModes.get(op, defaultMode);
+            }
+            if (mode == previousMode) {
+                return false;
+            }
+
+            if (mode == defaultMode) {
+                opModes.delete(op);
+                if (opModes.size() == 0) {
+                    mUidModes.remove(uid);
                 }
             } else {
-                if (opModes.indexOfKey(op) >= 0 && opModes.get(op) == mode) {
-                    return false;
+                if (opModes == null) {
+                    opModes = new SparseIntArray();
+                    mUidModes.put(uid, opModes);
                 }
-                if (mode == defaultMode) {
-                    opModes.delete(op);
-                    if (opModes.size() <= 0) {
-                        opModes = null;
-                        mUidModes.delete(uid);
-                    }
-                } else {
-                    opModes.put(op, mode);
-                }
-                scheduleWriteLocked();
+                opModes.put(op, mode);
             }
+
+            scheduleWriteLocked();
+            listenersCopy = new ArrayList<>(mModeChangedListeners);
         }
+
+        for (int i = 0; i < listenersCopy.size(); i++) {
+            listenersCopy.get(i).onUidModeChanged(uid, op, mode);
+        }
+
         return true;
     }
 
@@ -262,35 +239,52 @@
     @Override
     public void setPackageMode(String packageName, int op, @Mode int mode, @UserIdInt int userId) {
         final int defaultMode = AppOpsManager.opToDefaultMode(op);
+        List<AppOpsModeChangedListener> listenersCopy;
         synchronized (mLock) {
             ArrayMap<String, SparseIntArray> packageModes = mUserPackageModes.get(userId, null);
-            if (packageModes == null) {
+            if (packageModes == null && mode != defaultMode) {
                 packageModes = new ArrayMap<>();
                 mUserPackageModes.put(userId, packageModes);
             }
-            SparseIntArray opModes = packageModes.get(packageName);
-            if (opModes == null) {
-                if (mode != defaultMode) {
-                    opModes = new SparseIntArray();
-                    packageModes.put(packageName, opModes);
-                    opModes.put(op, mode);
-                    scheduleWriteLocked();
+            SparseIntArray opModes = null;
+            int previousMode = defaultMode;
+            if (packageModes != null) {
+                opModes = packageModes.get(packageName);
+                if (opModes != null) {
+                    previousMode = opModes.get(op, defaultMode);
+                }
+            }
+
+            if (mode == previousMode) {
+                return;
+            }
+
+            if (mode == defaultMode) {
+                opModes.delete(op);
+                if (opModes.size() == 0) {
+                    packageModes.remove(packageName);
+                    if (packageModes.size() == 0) {
+                        mUserPackageModes.remove(userId);
+                    }
                 }
             } else {
-                if (opModes.indexOfKey(op) >= 0 && opModes.get(op) == mode) {
-                    return;
+                if (packageModes == null) {
+                    packageModes = new ArrayMap<>();
+                    mUserPackageModes.put(userId, packageModes);
                 }
-                if (mode == defaultMode) {
-                    opModes.delete(op);
-                    if (opModes.size() <= 0) {
-                        opModes = null;
-                        packageModes.remove(packageName);
-                    }
-                } else {
-                    opModes.put(op, mode);
+                if (opModes == null) {
+                    opModes = new SparseIntArray();
+                    packageModes.put(packageName, opModes);
                 }
-                scheduleWriteLocked();
+                opModes.put(op, mode);
             }
+
+            scheduleFastWriteLocked();
+            listenersCopy = new ArrayList<>(mModeChangedListeners);
+        }
+
+        for (int i = 0; i < listenersCopy.size(); i++) {
+            listenersCopy.get(i).onPackageModeChanged(packageName, userId, op, mode);
         }
     }
 
@@ -351,348 +345,43 @@
     }
 
     @Override
-    public void startWatchingOpModeChanged(@NonNull OnOpModeChangedListener changedListener,
-            int op) {
-        Objects.requireNonNull(changedListener);
+    public SparseBooleanArray getForegroundOps(int uid) {
+        SparseBooleanArray result = new SparseBooleanArray();
         synchronized (mLock) {
-            ArraySet<OnOpModeChangedListener> modeWatcherSet = mOpModeWatchers.get(op);
-            if (modeWatcherSet == null) {
-                modeWatcherSet = new ArraySet<>();
-                mOpModeWatchers.put(op, modeWatcherSet);
+            SparseIntArray modes = mUidModes.get(uid);
+            if (modes == null) {
+                return result;
             }
-            modeWatcherSet.add(changedListener);
+            for (int i = 0; i < modes.size(); i++) {
+                if (modes.valueAt(i) == MODE_FOREGROUND) {
+                    result.put(modes.keyAt(i), true);
+                }
+            }
         }
+
+        return result;
     }
 
     @Override
-    public void startWatchingPackageModeChanged(@NonNull OnOpModeChangedListener changedListener,
-            @NonNull String packageName) {
-        Objects.requireNonNull(changedListener);
-        Objects.requireNonNull(packageName);
+    public SparseBooleanArray getForegroundOps(String packageName, int userId) {
+        SparseBooleanArray result = new SparseBooleanArray();
         synchronized (mLock) {
-            ArraySet<OnOpModeChangedListener> modeWatcherSet =
-                    mPackageModeWatchers.get(packageName);
-            if (modeWatcherSet == null) {
-                modeWatcherSet = new ArraySet<>();
-                mPackageModeWatchers.put(packageName, modeWatcherSet);
+            ArrayMap<String, SparseIntArray> packageModes = mUserPackageModes.get(userId);
+            if (packageModes == null) {
+                return result;
             }
-            modeWatcherSet.add(changedListener);
-        }
-    }
-
-    @Override
-    public void removeListener(@NonNull OnOpModeChangedListener changedListener) {
-        Objects.requireNonNull(changedListener);
-
-        synchronized (mLock) {
-            for (int i = mOpModeWatchers.size() - 1; i >= 0; i--) {
-                ArraySet<OnOpModeChangedListener> cbs = mOpModeWatchers.valueAt(i);
-                cbs.remove(changedListener);
-                if (cbs.size() <= 0) {
-                    mOpModeWatchers.removeAt(i);
-                }
+            SparseIntArray modes = packageModes.get(packageName);
+            if (modes == null) {
+                return result;
             }
-
-            for (int i = mPackageModeWatchers.size() - 1; i >= 0; i--) {
-                ArraySet<OnOpModeChangedListener> cbs = mPackageModeWatchers.valueAt(i);
-                cbs.remove(changedListener);
-                if (cbs.size() <= 0) {
-                    mPackageModeWatchers.removeAt(i);
-                }
-            }
-        }
-    }
-
-    @Override
-    public ArraySet<OnOpModeChangedListener> getOpModeChangedListeners(int op) {
-        synchronized (mLock) {
-            ArraySet<OnOpModeChangedListener> modeChangedListenersSet = mOpModeWatchers.get(op);
-            if (modeChangedListenersSet == null) {
-                return new ArraySet<>();
-            }
-            return new ArraySet<>(modeChangedListenersSet);
-        }
-    }
-
-    @Override
-    public ArraySet<OnOpModeChangedListener> getPackageModeChangedListeners(
-            @NonNull String packageName) {
-        Objects.requireNonNull(packageName);
-
-        synchronized (mLock) {
-            ArraySet<OnOpModeChangedListener> modeChangedListenersSet =
-                    mPackageModeWatchers.get(packageName);
-            if (modeChangedListenersSet == null) {
-                return new ArraySet<>();
-            }
-            return new ArraySet<>(modeChangedListenersSet);
-        }
-    }
-
-    @Override
-    public void notifyWatchersOfChange(int code, int uid) {
-        ArraySet<OnOpModeChangedListener> listenerSet = getOpModeChangedListeners(code);
-        if (listenerSet == null) {
-            return;
-        }
-        for (int i = 0; i < listenerSet.size(); i++) {
-            final OnOpModeChangedListener listener = listenerSet.valueAt(i);
-            notifyOpChanged(listener, code, uid, null);
-        }
-    }
-
-    @Override
-    public void notifyOpChanged(@NonNull OnOpModeChangedListener onModeChangedListener, int code,
-            int uid, @Nullable String packageName) {
-        Objects.requireNonNull(onModeChangedListener);
-
-        if (uid != UID_ANY && onModeChangedListener.getWatchingUid() >= 0
-                && onModeChangedListener.getWatchingUid() != uid) {
-            return;
-        }
-
-        // See CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE
-        int[] switchedCodes;
-        if (onModeChangedListener.getWatchedOpCode() == ALL_OPS) {
-            switchedCodes = mSwitchedOps.get(code);
-        } else if (onModeChangedListener.getWatchedOpCode() == OP_NONE) {
-            switchedCodes = new int[]{code};
-        } else {
-            switchedCodes = new int[]{onModeChangedListener.getWatchedOpCode()};
-        }
-
-        for (int switchedCode : switchedCodes) {
-            // There are features watching for mode changes such as window manager
-            // and location manager which are in our process. The callbacks in these
-            // features may require permissions our remote caller does not have.
-            final long identity = Binder.clearCallingIdentity();
-            try {
-                if (shouldIgnoreCallback(switchedCode, onModeChangedListener.getCallingPid(),
-                        onModeChangedListener.getCallingUid())) {
-                    continue;
-                }
-                onModeChangedListener.onOpModeChanged(switchedCode, uid, packageName);
-            } catch (RemoteException e) {
-                /* ignore */
-            } finally {
-                Binder.restoreCallingIdentity(identity);
-            }
-        }
-    }
-
-    private boolean shouldIgnoreCallback(int op, int watcherPid, int watcherUid) {
-        // If it's a restricted read op, ignore it if watcher doesn't have manage ops permission,
-        // as watcher should not use this to signal if the value is changed.
-        return opRestrictsRead(op) && mContext.checkPermission(Manifest.permission.MANAGE_APPOPS,
-                watcherPid, watcherUid) != PackageManager.PERMISSION_GRANTED;
-    }
-
-    @Override
-    public void notifyOpChangedForAllPkgsInUid(int code, int uid, boolean onlyForeground,
-            @Nullable OnOpModeChangedListener callbackToIgnore) {
-        String[] uidPackageNames = getPackagesForUid(uid);
-        ArrayMap<OnOpModeChangedListener, ArraySet<String>> callbackSpecs = null;
-
-        synchronized (mLock) {
-            ArraySet<OnOpModeChangedListener> callbacks = mOpModeWatchers.get(code);
-            if (callbacks != null) {
-                final int callbackCount = callbacks.size();
-                for (int i = 0; i < callbackCount; i++) {
-                    OnOpModeChangedListener callback = callbacks.valueAt(i);
-
-                    if (onlyForeground && (callback.getFlags()
-                            & WATCH_FOREGROUND_CHANGES) == 0) {
-                        continue;
-                    }
-
-                    ArraySet<String> changedPackages = new ArraySet<>();
-                    Collections.addAll(changedPackages, uidPackageNames);
-                    if (callbackSpecs == null) {
-                        callbackSpecs = new ArrayMap<>();
-                    }
-                    callbackSpecs.put(callback, changedPackages);
-                }
-            }
-
-            for (String uidPackageName : uidPackageNames) {
-                callbacks = mPackageModeWatchers.get(uidPackageName);
-                if (callbacks != null) {
-                    if (callbackSpecs == null) {
-                        callbackSpecs = new ArrayMap<>();
-                    }
-                    final int callbackCount = callbacks.size();
-                    for (int i = 0; i < callbackCount; i++) {
-                        OnOpModeChangedListener callback = callbacks.valueAt(i);
-
-                        if (onlyForeground && (callback.getFlags()
-                                & WATCH_FOREGROUND_CHANGES) == 0) {
-                            continue;
-                        }
-
-                        ArraySet<String> changedPackages = callbackSpecs.get(callback);
-                        if (changedPackages == null) {
-                            changedPackages = new ArraySet<>();
-                            callbackSpecs.put(callback, changedPackages);
-                        }
-                        changedPackages.add(uidPackageName);
-                    }
-                }
-            }
-
-            if (callbackSpecs != null && callbackToIgnore != null) {
-                callbackSpecs.remove(callbackToIgnore);
-            }
-        }
-
-        if (callbackSpecs == null) {
-            return;
-        }
-
-        for (int i = 0; i < callbackSpecs.size(); i++) {
-            final OnOpModeChangedListener callback = callbackSpecs.keyAt(i);
-            final ArraySet<String> reportedPackageNames = callbackSpecs.valueAt(i);
-            if (reportedPackageNames == null) {
-                mHandler.sendMessage(PooledLambda.obtainMessage(
-                        AppOpsCheckingServiceImpl::notifyOpChanged,
-                        this, callback, code, uid, (String) null));
-
-            } else {
-                final int reportedPackageCount = reportedPackageNames.size();
-                for (int j = 0; j < reportedPackageCount; j++) {
-                    final String reportedPackageName = reportedPackageNames.valueAt(j);
-                    mHandler.sendMessage(PooledLambda.obtainMessage(
-                            AppOpsCheckingServiceImpl::notifyOpChanged,
-                            this, callback, code, uid, reportedPackageName));
-                }
-            }
-        }
-    }
-
-    private static String[] getPackagesForUid(int uid) {
-        String[] packageNames = null;
-
-        // Very early during boot the package manager is not yet or not yet fully started. At this
-        // time there are no packages yet.
-        if (AppGlobals.getPackageManager() != null) {
-            try {
-                packageNames = AppGlobals.getPackageManager().getPackagesForUid(uid);
-            } catch (RemoteException e) {
-                /* ignore - local call */
-            }
-        }
-        if (packageNames == null) {
-            return EmptyArray.STRING;
-        }
-        return packageNames;
-    }
-
-    @Override
-    public SparseBooleanArray evalForegroundUidOps(int uid, SparseBooleanArray foregroundOps) {
-        synchronized (mLock) {
-            return evalForegroundOps(mUidModes.get(uid), foregroundOps);
-        }
-    }
-
-    @Override
-    public SparseBooleanArray evalForegroundPackageOps(String packageName,
-            SparseBooleanArray foregroundOps, @UserIdInt int userId) {
-        synchronized (mLock) {
-            ArrayMap<String, SparseIntArray> packageModes = mUserPackageModes.get(userId, null);
-            return evalForegroundOps(packageModes == null ? null : packageModes.get(packageName),
-                    foregroundOps);
-        }
-    }
-
-    private SparseBooleanArray evalForegroundOps(SparseIntArray opModes,
-            SparseBooleanArray foregroundOps) {
-        SparseBooleanArray tempForegroundOps = foregroundOps;
-        if (opModes != null) {
-            for (int i = opModes.size() - 1; i >= 0; i--) {
-                if (opModes.valueAt(i) == AppOpsManager.MODE_FOREGROUND) {
-                    if (tempForegroundOps == null) {
-                        tempForegroundOps = new SparseBooleanArray();
-                    }
-                    evalForegroundWatchers(opModes.keyAt(i), tempForegroundOps);
-                }
-            }
-        }
-        return tempForegroundOps;
-    }
-
-    private void evalForegroundWatchers(int op, SparseBooleanArray foregroundOps) {
-        boolean curValue = foregroundOps.get(op, false);
-        ArraySet<OnOpModeChangedListener> listenerSet = mOpModeWatchers.get(op);
-        if (listenerSet != null) {
-            for (int cbi = listenerSet.size() - 1; !curValue && cbi >= 0; cbi--) {
-                if ((listenerSet.valueAt(cbi).getFlags()
-                        & AppOpsManager.WATCH_FOREGROUND_CHANGES) != 0) {
-                    curValue = true;
-                }
-            }
-        }
-        foregroundOps.put(op, curValue);
-    }
-
-    @Override
-    public boolean dumpListeners(int dumpOp, int dumpUid, String dumpPackage,
-            PrintWriter printWriter) {
-        boolean needSep = false;
-        if (mOpModeWatchers.size() > 0) {
-            boolean printedHeader = false;
-            for (int i = 0; i < mOpModeWatchers.size(); i++) {
-                if (dumpOp >= 0 && dumpOp != mOpModeWatchers.keyAt(i)) {
-                    continue;
-                }
-                boolean printedOpHeader = false;
-                ArraySet<OnOpModeChangedListener> modeChangedListenerSet =
-                        mOpModeWatchers.valueAt(i);
-                for (int j = 0; j < modeChangedListenerSet.size(); j++) {
-                    final OnOpModeChangedListener listener = modeChangedListenerSet.valueAt(j);
-                    if (dumpPackage != null
-                            && dumpUid != UserHandle.getAppId(listener.getWatchingUid())) {
-                        continue;
-                    }
-                    needSep = true;
-                    if (!printedHeader) {
-                        printWriter.println("  Op mode watchers:");
-                        printedHeader = true;
-                    }
-                    if (!printedOpHeader) {
-                        printWriter.print("    Op ");
-                        printWriter.print(AppOpsManager.opToName(mOpModeWatchers.keyAt(i)));
-                        printWriter.println(":");
-                        printedOpHeader = true;
-                    }
-                    printWriter.print("      #"); printWriter.print(j); printWriter.print(": ");
-                    printWriter.println(listener.toString());
+            for (int i = 0; i < modes.size(); i++) {
+                if (modes.valueAt(i) == MODE_FOREGROUND) {
+                    result.put(modes.keyAt(i), true);
                 }
             }
         }
 
-        if (mPackageModeWatchers.size() > 0 && dumpOp < 0) {
-            boolean printedHeader = false;
-            for (int i = 0; i < mPackageModeWatchers.size(); i++) {
-                if (dumpPackage != null
-                        && !dumpPackage.equals(mPackageModeWatchers.keyAt(i))) {
-                    continue;
-                }
-                needSep = true;
-                if (!printedHeader) {
-                    printWriter.println("  Package mode watchers:");
-                    printedHeader = true;
-                }
-                printWriter.print("    Pkg "); printWriter.print(mPackageModeWatchers.keyAt(i));
-                printWriter.println(":");
-                ArraySet<OnOpModeChangedListener> modeChangedListenerSet =
-                        mPackageModeWatchers.valueAt(i);
-
-                for (int j = 0; j < modeChangedListenerSet.size(); j++) {
-                    printWriter.print("      #"); printWriter.print(j); printWriter.print(": ");
-                    printWriter.println(modeChangedListenerSet.valueAt(j).toString());
-                }
-            }
-        }
-        return needSep;
+        return result;
     }
 
     private void scheduleWriteLocked() {
@@ -832,58 +521,7 @@
     public void readState() {
         synchronized (mFile) {
             synchronized (mLock) {
-                FileInputStream stream;
-                try {
-                    stream = mFile.openRead();
-                } catch (FileNotFoundException e) {
-                    Slog.i(TAG, "No existing app ops " + mFile.getBaseFile() + "; starting empty");
-                    mVersionAtBoot = NO_FILE_VERSION;
-                    return;
-                }
-
-                try {
-                    TypedXmlPullParser parser = Xml.resolvePullParser(stream);
-                    int type;
-                    while ((type = parser.next()) != XmlPullParser.START_TAG
-                            && type != XmlPullParser.END_DOCUMENT) {
-                        // Parse next until we reach the start or end
-                    }
-
-                    if (type != XmlPullParser.START_TAG) {
-                        throw new IllegalStateException("no start tag found");
-                    }
-
-                    mVersionAtBoot = parser.getAttributeInt(null, "v", NO_VERSION);
-
-                    int outerDepth = parser.getDepth();
-                    while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
-                            && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
-                        if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
-                            continue;
-                        }
-
-                        String tagName = parser.getName();
-                        if (tagName.equals("pkg")) {
-                            // version 2 has the structure pkg -> uid -> op ->
-                            // in version 3, since pkg and uid states are kept completely
-                            // independent we switch to user -> pkg -> op
-                            readPackage(parser);
-                        } else if (tagName.equals("uid")) {
-                            readUidOps(parser);
-                        } else if (tagName.equals("user")) {
-                            readUser(parser);
-                        } else {
-                            Slog.w(TAG, "Unknown element under <app-ops>: "
-                                    + parser.getName());
-                            XmlUtils.skipCurrentTag(parser);
-                        }
-                    }
-                    return;
-                } catch (XmlPullParserException e) {
-                    throw new RuntimeException(e);
-                } catch (IOException e) {
-                    throw new RuntimeException(e);
-                }
+                mVersionAtBoot = mAppOpsStateParser.readState(mFile, mUidModes, mUserPackageModes);
             }
         }
     }
@@ -905,162 +543,6 @@
     }
 
     @GuardedBy("mLock")
-    private void readUidOps(TypedXmlPullParser parser) throws NumberFormatException,
-            XmlPullParserException, IOException {
-        final int uid = parser.getAttributeInt(null, "n");
-        SparseIntArray modes = mUidModes.get(uid);
-        if (modes == null) {
-            modes = new SparseIntArray();
-            mUidModes.put(uid, modes);
-        }
-
-        int outerDepth = parser.getDepth();
-        int type;
-        while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
-                && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
-            if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
-                continue;
-            }
-
-            String tagName = parser.getName();
-            if (tagName.equals("op")) {
-                final int code = parser.getAttributeInt(null, "n");
-                final int mode = parser.getAttributeInt(null, "m");
-
-                if (mode != opToDefaultMode(code)) {
-                    modes.put(code, mode);
-                }
-            } else {
-                Slog.w(TAG, "Unknown element under <uid>: "
-                        + parser.getName());
-                XmlUtils.skipCurrentTag(parser);
-            }
-        }
-    }
-
-    /*
-     * Used for migration when pkg is the depth=1 tag
-     */
-    @GuardedBy("mLock")
-    private void readPackage(TypedXmlPullParser parser)
-            throws NumberFormatException, XmlPullParserException, IOException {
-        String pkgName = parser.getAttributeValue(null, "n");
-        int outerDepth = parser.getDepth();
-        int type;
-        while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
-                && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
-            if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
-                continue;
-            }
-
-            String tagName = parser.getName();
-            if (tagName.equals("uid")) {
-                readUid(parser, pkgName);
-            } else {
-                Slog.w(TAG, "Unknown element under <pkg>: "
-                        + parser.getName());
-                XmlUtils.skipCurrentTag(parser);
-            }
-        }
-    }
-
-    /*
-     * Used for migration when uid is the depth=2 tag
-     */
-    @GuardedBy("mLock")
-    private void readUid(TypedXmlPullParser parser, String pkgName)
-            throws NumberFormatException, XmlPullParserException, IOException {
-        int userId = UserHandle.getUserId(parser.getAttributeInt(null, "n"));
-        int outerDepth = parser.getDepth();
-        int type;
-        while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
-                && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
-            if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
-                continue;
-            }
-
-            String tagName = parser.getName();
-            if (tagName.equals("op")) {
-                readOp(parser, userId, pkgName);
-            } else {
-                Slog.w(TAG, "Unknown element under <pkg>: "
-                        + parser.getName());
-                XmlUtils.skipCurrentTag(parser);
-            }
-        }
-    }
-
-    @GuardedBy("mLock")
-    private void readUser(TypedXmlPullParser parser)
-            throws NumberFormatException, XmlPullParserException, IOException {
-        int userId = parser.getAttributeInt(null, "n");
-        int outerDepth = parser.getDepth();
-        int type;
-        while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
-                && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
-            if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
-                continue;
-            }
-
-            String tagName = parser.getName();
-            if (tagName.equals("pkg")) {
-                readPackage(parser, userId);
-            } else {
-                Slog.w(TAG, "Unknown element under <user>: "
-                        + parser.getName());
-                XmlUtils.skipCurrentTag(parser);
-            }
-        }
-    }
-
-    @GuardedBy("mLock")
-    private void readPackage(TypedXmlPullParser parser, int userId)
-            throws NumberFormatException, XmlPullParserException, IOException {
-        String pkgName = parser.getAttributeValue(null, "n");
-        int outerDepth = parser.getDepth();
-        int type;
-        while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
-                && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
-            if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
-                continue;
-            }
-
-            String tagName = parser.getName();
-            if (tagName.equals("op")) {
-                readOp(parser, userId, pkgName);
-            } else {
-                Slog.w(TAG, "Unknown element under <pkg>: "
-                        + parser.getName());
-                XmlUtils.skipCurrentTag(parser);
-            }
-        }
-    }
-
-    @GuardedBy("mLock")
-    private void readOp(TypedXmlPullParser parser, int userId, @NonNull String pkgName)
-            throws NumberFormatException, XmlPullParserException {
-        final int opCode = parser.getAttributeInt(null, "n");
-        final int defaultMode = AppOpsManager.opToDefaultMode(opCode);
-        final int mode = parser.getAttributeInt(null, "m", defaultMode);
-
-        if (mode != defaultMode) {
-            ArrayMap<String, SparseIntArray> packageModes = mUserPackageModes.get(userId);
-            if (packageModes == null) {
-                packageModes = new ArrayMap<>();
-                mUserPackageModes.put(userId, packageModes);
-            }
-
-            SparseIntArray modes = packageModes.get(pkgName);
-            if (modes == null) {
-                modes = new SparseIntArray();
-                packageModes.put(pkgName, modes);
-            }
-
-            modes.put(opCode, mode);
-        }
-    }
-
-    @GuardedBy("mLock")
     private void upgradeLocked(int oldVersion) {
         if (oldVersion == NO_FILE_VERSION || oldVersion >= CURRENT_VERSION) {
             return;
@@ -1178,4 +660,18 @@
 
         return result;
     }
-}
\ No newline at end of file
+
+    @Override
+    public boolean addAppOpsModeChangedListener(AppOpsModeChangedListener listener) {
+        synchronized (mLock) {
+            return mModeChangedListeners.add(listener);
+        }
+    }
+
+    @Override
+    public boolean removeAppOpsModeChangedListener(AppOpsModeChangedListener listener) {
+        synchronized (mLock) {
+            return mModeChangedListeners.remove(listener);
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/appop/AppOpsCheckingServiceInterface.java b/services/core/java/com/android/server/appop/AppOpsCheckingServiceInterface.java
index 9096898..60d17cd 100644
--- a/services/core/java/com/android/server/appop/AppOpsCheckingServiceInterface.java
+++ b/services/core/java/com/android/server/appop/AppOpsCheckingServiceInterface.java
@@ -16,17 +16,13 @@
 package com.android.server.appop;
 
 import android.annotation.NonNull;
-import android.annotation.Nullable;
 import android.annotation.UserIdInt;
 import android.app.AppOpsManager.Mode;
-import android.util.ArraySet;
 import android.util.SparseBooleanArray;
 import android.util.SparseIntArray;
 
 import com.android.internal.annotations.VisibleForTesting;
 
-import java.io.PrintWriter;
-
 /**
  * Interface for accessing and modifying modes for app-ops i.e. package and uid modes.
  * This interface also includes functions for added and removing op mode watchers.
@@ -148,99 +144,60 @@
     void clearAllModes();
 
     /**
-     * Registers changedListener to listen to op's mode change.
-     * @param changedListener the listener that must be trigger on the op's mode change.
-     * @param op op representing the app-op whose mode change needs to be listened to.
+     * @param uid UID to query foreground ops for.
+     * @return SparseBooleanArray where the keys are the op codes for which their modes are
+     * MODE_FOREGROUND for the passed UID.
      */
-    void startWatchingOpModeChanged(@NonNull OnOpModeChangedListener changedListener, int op);
+    SparseBooleanArray getForegroundOps(int uid);
 
     /**
-     * Registers changedListener to listen to package's app-op's mode change.
-     * @param changedListener the listener that must be trigger on the mode change.
-     * @param packageName of the package whose app-op's mode change needs to be listened to.
+     *
+     * @param packageName Package name to check for.
+     * @param userId User ID to check for.
+     * @return SparseBooleanArray where the keys are the op codes for which their modes are
+     * MODE_FOREGROUND for the passed package name and user ID.
      */
-    void startWatchingPackageModeChanged(@NonNull OnOpModeChangedListener changedListener,
-            @NonNull String packageName);
+    SparseBooleanArray getForegroundOps(String packageName, int userId);
 
     /**
-     * Stop the changedListener from triggering on any mode change.
-     * @param changedListener the listener that needs to be removed.
+     * Adds a listener for changes in appop modes. These callbacks should be dispatched
+     * synchronously.
+     *
+     * @param listener The listener to be added.
+     * @return true if the listener was added.
      */
-    void removeListener(@NonNull OnOpModeChangedListener changedListener);
+    boolean addAppOpsModeChangedListener(@NonNull AppOpsModeChangedListener listener);
 
     /**
-     * Temporary API which will be removed once we can safely untangle the methods that use this.
-     * Returns a set of OnOpModeChangedListener that are listening for op's mode changes.
-     * @param op app-op whose mode change is being listened to.
+     * Removes a listener for changes in appop modes.
+     *
+     * @param listener The listener to be removed.
+     * @return true if the listener was removed.
      */
-    ArraySet<OnOpModeChangedListener> getOpModeChangedListeners(int op);
+    boolean removeAppOpsModeChangedListener(@NonNull AppOpsModeChangedListener listener);
 
     /**
-     * Temporary API which will be removed once we can safely untangle the methods that use this.
-     * Returns a set of OnOpModeChangedListener that are listening for package's op's mode changes.
-     * @param packageName of package whose app-op's mode change is being listened to.
+     * A listener for changes to the AppOps mode.
      */
-    ArraySet<OnOpModeChangedListener> getPackageModeChangedListeners(@NonNull String packageName);
+    interface AppOpsModeChangedListener {
 
-    /**
-     * Temporary API which will be removed once we can safely untangle the methods that use this.
-     * Notify that the app-op's mode is changed by triggering the change listener.
-     * @param op App-op whose mode has changed
-     * @param uid user id associated with the app-op (or, if UID_ANY, notifies all users)
-     */
-    void notifyWatchersOfChange(int op, int uid);
+        /**
+         * Invoked when a UID's appop mode is changed.
+         *
+         * @param uid The UID whose appop mode was changed.
+         * @param code The op code that was changed.
+         * @param mode The new mode.
+         */
+        void onUidModeChanged(int uid, int code, int mode);
 
-    /**
-     * Temporary API which will be removed once we can safely untangle the methods that use this.
-     * Notify that the app-op's mode is changed by triggering the change listener.
-     * @param changedListener the change listener.
-     * @param op App-op whose mode has changed
-     * @param uid user id associated with the app-op
-     * @param packageName package name that is associated with the app-op
-     */
-    void notifyOpChanged(@NonNull OnOpModeChangedListener changedListener, int op, int uid,
-            @Nullable String packageName);
-
-    /**
-     * Temporary API which will be removed once we can safely untangle the methods that use this.
-     * Notify that the app-op's mode is changed to all packages associated with the uid by
-     * triggering the appropriate change listener.
-     * @param op App-op whose mode has changed
-     * @param uid user id associated with the app-op
-     * @param onlyForeground true if only watchers that
-     * @param callbackToIgnore callback that should be ignored.
-     */
-    void notifyOpChangedForAllPkgsInUid(int op, int uid, boolean onlyForeground,
-            @Nullable OnOpModeChangedListener callbackToIgnore);
-
-    /**
-     * TODO: Move hasForegroundWatchers and foregroundOps into this.
-     * Go over the list of app-ops for the uid and mark app-ops with MODE_FOREGROUND in
-     * foregroundOps.
-     * @param uid for which the app-op's mode needs to be marked.
-     * @param foregroundOps boolean array where app-ops that have MODE_FOREGROUND are marked true.
-     * @return  foregroundOps.
-     */
-    SparseBooleanArray evalForegroundUidOps(int uid, SparseBooleanArray foregroundOps);
-
-    /**
-     * Go over the list of app-ops for the package name and mark app-ops with MODE_FOREGROUND in
-     * foregroundOps.
-     * @param packageName for which the app-op's mode needs to be marked.
-     * @param foregroundOps boolean array where app-ops that have MODE_FOREGROUND are marked true.
-     * @param userId user id associated with the package.
-     * @return foregroundOps.
-     */
-    SparseBooleanArray evalForegroundPackageOps(String packageName,
-            SparseBooleanArray foregroundOps, @UserIdInt int userId);
-
-    /**
-     * Dump op mode and package mode listeners and their details.
-     * @param dumpOp if -1 then op mode listeners for all app-ops are dumped. If it's set to an
-     *               app-op, only the watchers for that app-op are dumped.
-     * @param dumpUid uid for which we want to dump op mode watchers.
-     * @param dumpPackage if not null and if dumpOp is -1, dumps watchers for the package name.
-     * @param printWriter writer to dump to.
-     */
-    boolean dumpListeners(int dumpOp, int dumpUid, String dumpPackage, PrintWriter printWriter);
+        /**
+         * Invoked when a package's appop mode is changed.
+         *
+         * @param packageName The package name whose appop mode was changed.
+         * @param userId The user ID for the package.
+         * @param code The op code that was changed.
+         * @param mode The new mode.
+         */
+        void onPackageModeChanged(@NonNull String packageName, int userId, int code, int mode);
+    }
 }
diff --git a/services/core/java/com/android/server/appop/AppOpsCheckingServiceLoggingDecorator.java b/services/core/java/com/android/server/appop/AppOpsCheckingServiceLoggingDecorator.java
index 0094b86..3fee59b 100644
--- a/services/core/java/com/android/server/appop/AppOpsCheckingServiceLoggingDecorator.java
+++ b/services/core/java/com/android/server/appop/AppOpsCheckingServiceLoggingDecorator.java
@@ -17,14 +17,10 @@
 package com.android.server.appop;
 
 import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.util.ArraySet;
 import android.util.Log;
 import android.util.SparseBooleanArray;
 import android.util.SparseIntArray;
 
-import java.io.PrintWriter;
-
 /**
  * Logging decorator for {@link AppOpsCheckingServiceInterface}.
  */
@@ -134,83 +130,27 @@
     }
 
     @Override
-    public void startWatchingOpModeChanged(@NonNull OnOpModeChangedListener changedListener,
-            int op) {
-        Log.i(LOG_TAG, "startWatchingOpModeChanged(changedListener = " + changedListener + ", op = "
-                + op + ")");
-        mService.startWatchingOpModeChanged(changedListener, op);
+    public SparseBooleanArray getForegroundOps(int uid) {
+        Log.i(LOG_TAG, "getForegroundOps(uid = " + uid + ")");
+        return mService.getForegroundOps(uid);
     }
 
     @Override
-    public void startWatchingPackageModeChanged(@NonNull OnOpModeChangedListener changedListener,
-            @NonNull String packageName) {
-        Log.i(LOG_TAG, "startWatchingPackageModeChanged(changedListener = " + changedListener
-                + ", packageName = " + packageName + ")");
-        mService.startWatchingPackageModeChanged(changedListener, packageName);
-    }
-
-    @Override
-    public void removeListener(@NonNull OnOpModeChangedListener changedListener) {
-        Log.i(LOG_TAG, "removeListener(changedListener = " + changedListener + ")");
-        mService.removeListener(changedListener);
-    }
-
-    @Override
-    public ArraySet<OnOpModeChangedListener> getOpModeChangedListeners(int op) {
-        Log.i(LOG_TAG, "getOpModeChangedListeners(op = " + op + ")");
-        return mService.getOpModeChangedListeners(op);
-    }
-
-    @Override
-    public ArraySet<OnOpModeChangedListener> getPackageModeChangedListeners(
-            @NonNull String packageName) {
-        Log.i(LOG_TAG, "getPackageModeChangedListeners(packageName = " + packageName + ")");
-        return mService.getPackageModeChangedListeners(packageName);
-    }
-
-    @Override
-    public void notifyWatchersOfChange(int op, int uid) {
-        Log.i(LOG_TAG, "notifyWatchersOfChange(op = " + op + ", uid = " + uid + ")");
-        mService.notifyWatchersOfChange(op, uid);
-    }
-
-    @Override
-    public void notifyOpChanged(@NonNull OnOpModeChangedListener changedListener, int op, int uid,
-            @Nullable String packageName) {
-        Log.i(LOG_TAG, "notifyOpChanged(changedListener = " + changedListener + ", op = " + op
-                + ", uid = " + uid + ", packageName = " + packageName + ")");
-        mService.notifyOpChanged(changedListener, op, uid, packageName);
-    }
-
-    @Override
-    public void notifyOpChangedForAllPkgsInUid(int op, int uid, boolean onlyForeground,
-            @Nullable OnOpModeChangedListener callbackToIgnore) {
-        Log.i(LOG_TAG, "notifyOpChangedForAllPkgsInUid(op = " + op + ", uid = " + uid
-                + ", onlyForeground = " + onlyForeground + ", callbackToIgnore = "
-                + callbackToIgnore + ")");
-        mService.notifyOpChangedForAllPkgsInUid(op, uid, onlyForeground, callbackToIgnore);
-    }
-
-    @Override
-    public SparseBooleanArray evalForegroundUidOps(int uid, SparseBooleanArray foregroundOps) {
-        Log.i(LOG_TAG, "evalForegroundUidOps(uid = " + uid + ", foregroundOps = " + foregroundOps
+    public SparseBooleanArray getForegroundOps(String packageName, int userId) {
+        Log.i(LOG_TAG, "getForegroundOps(packageName = " + packageName + ", userId = " + userId
                 + ")");
-        return mService.evalForegroundUidOps(uid, foregroundOps);
+        return mService.getForegroundOps(packageName, userId);
     }
 
     @Override
-    public SparseBooleanArray evalForegroundPackageOps(String packageName,
-            SparseBooleanArray foregroundOps, int userId) {
-        Log.i(LOG_TAG, "evalForegroundPackageOps(packageName = " + packageName
-                + ", foregroundOps = " + foregroundOps + ", userId = " + userId + ")");
-        return mService.evalForegroundPackageOps(packageName, foregroundOps, userId);
+    public boolean addAppOpsModeChangedListener(AppOpsModeChangedListener listener) {
+        Log.i(LOG_TAG, "addAppOpsModeChangedListener(listener = " + listener + ")");
+        return mService.addAppOpsModeChangedListener(listener);
     }
 
     @Override
-    public boolean dumpListeners(int dumpOp, int dumpUid, String dumpPackage,
-            PrintWriter printWriter) {
-        Log.i(LOG_TAG, "dumpListeners(dumpOp = " + dumpOp + ", dumpUid = " + dumpUid
-                + ", dumpPackage = " + dumpPackage + ", printWriter = " + printWriter + ")");
-        return mService.dumpListeners(dumpOp, dumpUid, dumpPackage, printWriter);
+    public boolean removeAppOpsModeChangedListener(AppOpsModeChangedListener listener) {
+        Log.i(LOG_TAG, "removeAppOpsModeChangedListener(listener = " + listener + ")");
+        return mService.removeAppOpsModeChangedListener(listener);
     }
 }
diff --git a/services/core/java/com/android/server/appop/AppOpsCheckingServiceTracingDecorator.java b/services/core/java/com/android/server/appop/AppOpsCheckingServiceTracingDecorator.java
index a028ae1..c0cc8b1 100644
--- a/services/core/java/com/android/server/appop/AppOpsCheckingServiceTracingDecorator.java
+++ b/services/core/java/com/android/server/appop/AppOpsCheckingServiceTracingDecorator.java
@@ -17,16 +17,12 @@
 package com.android.server.appop;
 
 import android.annotation.NonNull;
-import android.annotation.Nullable;
 import android.annotation.UserIdInt;
 import android.app.AppOpsManager;
 import android.os.Trace;
-import android.util.ArraySet;
 import android.util.SparseBooleanArray;
 import android.util.SparseIntArray;
 
-import java.io.PrintWriter;
-
 /**
  * Surrounds all AppOpsCheckingServiceInterface method calls with Trace.traceBegin and
  * Trace.traceEnd. These traces are used for performance testing.
@@ -205,128 +201,44 @@
     }
 
     @Override
-    public void startWatchingOpModeChanged(@NonNull OnOpModeChangedListener changedListener,
-            int op) {
+    public SparseBooleanArray getForegroundOps(int uid) {
         Trace.traceBegin(TRACE_TAG,
-                "TaggedTracingAppOpsCheckingServiceInterfaceImpl#startWatchingOpModeChanged");
+                "TaggedTracingAppOpsCheckingServiceInterfaceImpl#getForegroundOps");
         try {
-            mService.startWatchingOpModeChanged(changedListener, op);
+            return mService.getForegroundOps(uid);
         } finally {
             Trace.traceEnd(TRACE_TAG);
         }
     }
 
     @Override
-    public void startWatchingPackageModeChanged(@NonNull OnOpModeChangedListener changedListener,
-            @NonNull String packageName) {
+    public SparseBooleanArray getForegroundOps(String packageName, int userId) {
         Trace.traceBegin(TRACE_TAG,
-                "TaggedTracingAppOpsCheckingServiceInterfaceImpl#startWatchingPackageModeChanged");
+                "TaggedTracingAppOpsCheckingServiceInterfaceImpl#getForegroundOps");
         try {
-            mService.startWatchingPackageModeChanged(changedListener, packageName);
+            return mService.getForegroundOps(packageName, userId);
         } finally {
             Trace.traceEnd(TRACE_TAG);
         }
     }
 
     @Override
-    public void removeListener(@NonNull OnOpModeChangedListener changedListener) {
+    public boolean addAppOpsModeChangedListener(AppOpsModeChangedListener listener) {
         Trace.traceBegin(TRACE_TAG,
-                "TaggedTracingAppOpsCheckingServiceInterfaceImpl#removeListener");
+                "TaggedTracingAppOpsCheckingServiceInterfaceImpl#addAppOpsModeChangedListener");
         try {
-            mService.removeListener(changedListener);
+            return mService.addAppOpsModeChangedListener(listener);
         } finally {
             Trace.traceEnd(TRACE_TAG);
         }
     }
 
     @Override
-    public ArraySet<OnOpModeChangedListener> getOpModeChangedListeners(int op) {
+    public boolean removeAppOpsModeChangedListener(AppOpsModeChangedListener listener) {
         Trace.traceBegin(TRACE_TAG,
-                "TaggedTracingAppOpsCheckingServiceInterfaceImpl#getOpModeChangedListeners");
+                "TaggedTracingAppOpsCheckingServiceInterfaceImpl#removeAppOpsModeChangedListener");
         try {
-            return mService.getOpModeChangedListeners(op);
-        } finally {
-            Trace.traceEnd(TRACE_TAG);
-        }
-    }
-
-    @Override
-    public ArraySet<OnOpModeChangedListener> getPackageModeChangedListeners(
-            @NonNull String packageName) {
-        Trace.traceBegin(TRACE_TAG,
-                "TaggedTracingAppOpsCheckingServiceInterfaceImpl#getPackageModeChangedListeners");
-        try {
-            return mService.getPackageModeChangedListeners(packageName);
-        } finally {
-            Trace.traceEnd(TRACE_TAG);
-        }
-    }
-
-    @Override
-    public void notifyWatchersOfChange(int op, int uid) {
-        Trace.traceBegin(TRACE_TAG,
-                "TaggedTracingAppOpsCheckingServiceInterfaceImpl#notifyWatchersOfChange");
-        try {
-            mService.notifyWatchersOfChange(op, uid);
-        } finally {
-            Trace.traceEnd(TRACE_TAG);
-        }
-    }
-
-    @Override
-    public void notifyOpChanged(@NonNull OnOpModeChangedListener changedListener, int op, int uid,
-            @Nullable String packageName) {
-        Trace.traceBegin(TRACE_TAG,
-                "TaggedTracingAppOpsCheckingServiceInterfaceImpl#notifyOpChanged");
-        try {
-            mService.notifyOpChanged(changedListener, op, uid, packageName);
-        } finally {
-            Trace.traceEnd(TRACE_TAG);
-        }
-    }
-
-    @Override
-    public void notifyOpChangedForAllPkgsInUid(int op, int uid, boolean onlyForeground,
-            @Nullable OnOpModeChangedListener callbackToIgnore) {
-        Trace.traceBegin(TRACE_TAG,
-                "TaggedTracingAppOpsCheckingServiceInterfaceImpl#notifyOpChangedForAllPkgsInUid");
-        try {
-            mService.notifyOpChangedForAllPkgsInUid(op, uid, onlyForeground, callbackToIgnore);
-        } finally {
-            Trace.traceEnd(TRACE_TAG);
-        }
-    }
-
-    @Override
-    public SparseBooleanArray evalForegroundUidOps(int uid, SparseBooleanArray foregroundOps) {
-        Trace.traceBegin(TRACE_TAG,
-                "TaggedTracingAppOpsCheckingServiceInterfaceImpl#evalForegroundUidOps");
-        try {
-            return mService.evalForegroundUidOps(uid, foregroundOps);
-        } finally {
-            Trace.traceEnd(TRACE_TAG);
-        }
-    }
-
-    @Override
-    public SparseBooleanArray evalForegroundPackageOps(String packageName,
-            SparseBooleanArray foregroundOps, @UserIdInt int userId) {
-        Trace.traceBegin(TRACE_TAG,
-                "TaggedTracingAppOpsCheckingServiceInterfaceImpl#evalForegroundPackageOps");
-        try {
-            return mService.evalForegroundPackageOps(packageName, foregroundOps, userId);
-        } finally {
-            Trace.traceEnd(TRACE_TAG);
-        }
-    }
-
-    @Override
-    public boolean dumpListeners(int dumpOp, int dumpUid, String dumpPackage,
-            PrintWriter printWriter) {
-        Trace.traceBegin(TRACE_TAG,
-                "TaggedTracingAppOpsCheckingServiceInterfaceImpl#dumpListeners");
-        try {
-            return mService.dumpListeners(dumpOp, dumpUid, dumpPackage, printWriter);
+            return mService.removeAppOpsModeChangedListener(listener);
         } finally {
             Trace.traceEnd(TRACE_TAG);
         }
diff --git a/services/core/java/com/android/server/appop/AppOpsRestrictions.java b/services/core/java/com/android/server/appop/AppOpsRestrictions.java
index f7ccd34..0241d02 100644
--- a/services/core/java/com/android/server/appop/AppOpsRestrictions.java
+++ b/services/core/java/com/android/server/appop/AppOpsRestrictions.java
@@ -144,4 +144,11 @@
      */
     void dumpRestrictions(PrintWriter printWriter, int dumpOp, String dumpPackage,
             boolean showUserRestrictions);
+
+    /**
+     * Listener for when an appop restriction is removed.
+     */
+    interface AppOpsRestrictionRemovedListener {
+        void onAppOpsRestrictionRemoved(int code);
+    }
 }
diff --git a/services/core/java/com/android/server/appop/AppOpsRestrictionsImpl.java b/services/core/java/com/android/server/appop/AppOpsRestrictionsImpl.java
index f51200f2..ae93991 100644
--- a/services/core/java/com/android/server/appop/AppOpsRestrictionsImpl.java
+++ b/services/core/java/com/android/server/appop/AppOpsRestrictionsImpl.java
@@ -42,7 +42,8 @@
 
     private Context mContext;
     private Handler mHandler;
-    private AppOpsCheckingServiceInterface mAppOpsCheckingServiceInterface;
+
+    private AppOpsRestrictionRemovedListener mAppOpsRestrictionRemovedListener;
 
     // Map from (Object token) to (int code) to (boolean restricted)
     private final ArrayMap<Object, SparseBooleanArray> mGlobalRestrictions = new ArrayMap<>();
@@ -56,10 +57,10 @@
             mUserRestrictionExcludedPackageTags = new ArrayMap<>();
 
     public AppOpsRestrictionsImpl(Context context, Handler handler,
-            AppOpsCheckingServiceInterface appOpsCheckingServiceInterface) {
+            AppOpsRestrictionRemovedListener appOpsRestrictionRemovedListener) {
         mContext = context;
         mHandler = handler;
-        mAppOpsCheckingServiceInterface = appOpsCheckingServiceInterface;
+        mAppOpsRestrictionRemovedListener = appOpsRestrictionRemovedListener;
     }
 
     @Override
@@ -211,15 +212,11 @@
         return allRestrictedCodes;
     }
 
-    // TODO: For clearUserRestrictions, we are calling notifyOpChanged from within the
-    //  LegacyAppOpsServiceInterfaceImpl class. But, for all other changes to restrictions, we're
-    //  calling it from within AppOpsService. This is awkward, and we should probably do it one
-    //  way or the other.
     private void notifyAllUserRestrictions(SparseBooleanArray allUserRestrictedCodes) {
         int restrictedCodesSize = allUserRestrictedCodes.size();
         for (int j = 0; j < restrictedCodesSize; j++) {
             int code = allUserRestrictedCodes.keyAt(j);
-            mHandler.post(() -> mAppOpsCheckingServiceInterface.notifyWatchersOfChange(code, UID_ANY));
+            mHandler.post(() -> mAppOpsRestrictionRemovedListener.onAppOpsRestrictionRemoved(code));
         }
     }
 
diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java
index a110169..111cbfd 100644
--- a/services/core/java/com/android/server/appop/AppOpsService.java
+++ b/services/core/java/com/android/server/appop/AppOpsService.java
@@ -54,6 +54,7 @@
 import static android.app.AppOpsManager.SAMPLING_STRATEGY_UNIFORM;
 import static android.app.AppOpsManager.SAMPLING_STRATEGY_UNIFORM_OPS;
 import static android.app.AppOpsManager.SECURITY_EXCEPTION_ON_INVALID_ATTRIBUTION_TAG_CHANGE;
+import static android.app.AppOpsManager.WATCH_FOREGROUND_CHANGES;
 import static android.app.AppOpsManager._NUM_OP;
 import static android.app.AppOpsManager.extractFlagsFromKey;
 import static android.app.AppOpsManager.extractUidStateFromKey;
@@ -232,6 +233,15 @@
     private static final int MAX_UNUSED_POOLED_OBJECTS = 3;
     private static final int RARELY_USED_PACKAGES_INITIALIZATION_DELAY_MILLIS = 300000;
 
+    /* Temporary solution before Uidstate class is removed. These uids get their modes set. */
+    private static final int[] NON_PACKAGE_UIDS = new int[]{
+            Process.ROOT_UID,
+            Process.PHONE_UID,
+            Process.BLUETOOTH_UID,
+            Process.NFC_UID,
+            Process.NETWORK_STACK_UID,
+            Process.SHELL_UID};
+
     final Context mContext;
     final AtomicFile mStorageFile;
     final AtomicFile mRecentAccessesFile;
@@ -286,6 +296,11 @@
     private final ArrayMap<Pair<String, Integer>, ArrayList<AsyncNotedAppOp>>
             mUnforwardedAsyncNotedOps = new ArrayMap<>();
 
+    private final SparseArray<ArraySet<OnOpModeChangedListener>> mOpModeWatchers =
+            new SparseArray<>();
+    private final ArrayMap<String, ArraySet<OnOpModeChangedListener>> mPackageModeWatchers =
+            new ArrayMap<>();
+
     boolean mWriteNoteOpsScheduled;
 
     boolean mWriteScheduled;
@@ -309,6 +324,8 @@
     @GuardedBy("this")
     @VisibleForTesting
     final SparseArray<UidState> mUidStates = new SparseArray<>();
+    @GuardedBy("this")
+    private boolean mUidStatesInitialized;
 
     volatile @NonNull HistoricalRegistry mHistoricalRegistry = new HistoricalRegistry(this);
 
@@ -335,8 +352,6 @@
       */
     private final SparseArray<int[]> mSwitchedOps = new SparseArray<>();
 
-    private ActivityManagerInternal mActivityManagerInternal;
-
     /** Package sampled for message collection in the current session */
     @GuardedBy("this")
     private String mSampledPackage = null;
@@ -384,6 +399,10 @@
 
     private AppOpsUidStateTracker mUidStateTracker;
 
+    /** Callback to skip on next appop update.*/
+    @GuardedBy("this")
+    private IAppOpsCallback mIgnoredCallback = null;
+
     /** Hands the definition of foreground and uid states */
     @GuardedBy("this")
     public AppOpsUidStateTracker getUidStateTracker() {
@@ -499,11 +518,6 @@
         @NonNull
         public final ArrayMap<String, Ops> pkgOps = new ArrayMap<>();
 
-        // true indicates there is an interested observer, false there isn't but it has such an op
-        //TODO: Move foregroundOps and hasForegroundWatchers into the AppOpsServiceInterface.
-        public SparseBooleanArray foregroundOps;
-        public boolean hasForegroundWatchers;
-
         public UidState(int uid) {
             this.uid = uid;
         }
@@ -534,25 +548,6 @@
             return getUidStateTracker().evalMode(uid, op, mode);
         }
 
-        public void evalForegroundOps() {
-            foregroundOps = null;
-            foregroundOps = mAppOpsCheckingService.evalForegroundUidOps(uid, foregroundOps);
-            for (int i = pkgOps.size() - 1; i >= 0; i--) {
-                foregroundOps = mAppOpsCheckingService
-                        .evalForegroundPackageOps(pkgOps.valueAt(i).packageName, foregroundOps,
-                                UserHandle.getUserId(uid));
-            }
-            hasForegroundWatchers = false;
-            if (foregroundOps != null) {
-                for (int i = 0;  i < foregroundOps.size(); i++) {
-                    if (foregroundOps.valueAt(i)) {
-                        hasForegroundWatchers = true;
-                        break;
-                    }
-                }
-            }
-        }
-
         @SuppressWarnings("GuardedBy")
         public int getState() {
             return getUidStateTracker().getUidState(uid);
@@ -932,9 +927,63 @@
         mAppOpsCheckingService = new AppOpsCheckingServiceTracingDecorator(
                 new AppOpsCheckingServiceImpl(
                         storageFile, this, handler, context,  mSwitchedOps));
+        mAppOpsCheckingService.addAppOpsModeChangedListener(
+                new AppOpsCheckingServiceInterface.AppOpsModeChangedListener() {
+                    @Override
+                    public void onUidModeChanged(int uid, int code, int mode) {
+                        notifyOpChangedForAllPkgsInUid(code, uid, false);
+                    }
+
+                    @Override
+                    public void onPackageModeChanged(String packageName, int userId, int code,
+                            int mode) {
+                        ArraySet<OnOpModeChangedListener> repCbs = null;
+                        int uid = -1;
+                        synchronized (AppOpsService.this) {
+                            ArraySet<OnOpModeChangedListener> cbs =
+                                    mOpModeWatchers.get(code);
+                            if (cbs != null) {
+                                if (repCbs == null) {
+                                    repCbs = new ArraySet<>();
+                                }
+                                repCbs.addAll(cbs);
+                            }
+                            cbs = mPackageModeWatchers.get(packageName);
+                            if (cbs != null) {
+                                if (repCbs == null) {
+                                    repCbs = new ArraySet<>();
+                                }
+                                repCbs.addAll(cbs);
+                            }
+                            if (repCbs != null && mIgnoredCallback != null) {
+                                repCbs.remove(mModeWatchers.get(mIgnoredCallback.asBinder()));
+                            }
+                            uid = getPackageManagerInternal().getPackageUid(packageName,
+                                    PackageManager.MATCH_KNOWN_PACKAGES, userId);
+                            Op op = getOpLocked(code, uid, packageName, null, false, null,
+                                    /* edit */ false);
+                            if (op != null && mode == AppOpsManager.opToDefaultMode(op.op)) {
+                                // If going into the default mode, prune this op
+                                // if there is nothing else interesting in it.
+                                pruneOpLocked(op, uid, packageName);
+                            }
+                            scheduleFastWriteLocked();
+                            if (mode != MODE_ERRORED) {
+                                updateStartedOpModeForUidLocked(code, mode == MODE_IGNORED, uid);
+                            }
+                        }
+
+                        if (repCbs != null && uid != -1) {
+                            mHandler.sendMessage(PooledLambda.obtainMessage(
+                                    AppOpsService::notifyOpChanged,
+                                    AppOpsService.this, repCbs, code, uid, packageName));
+                        }
+                    }
+                });
         //mAppOpsCheckingService = new AppOpsCheckingServiceLoggingDecorator(
         //        LocalServices.getService(AppOpsCheckingServiceInterface.class));
-        mAppOpsRestrictions = new AppOpsRestrictionsImpl(context, handler, mAppOpsCheckingService);
+        mAppOpsRestrictions = new AppOpsRestrictionsImpl(context, handler,
+                code -> notifyWatchersOfChange(code, UID_ANY));
 
         LockGuard.installLock(this, LockGuard.INDEX_APP_OPS);
         mStorageFile = new AtomicFile(storageFile, "appops_legacy");
@@ -1059,7 +1108,7 @@
                 UidState uidState = mUidStates.valueAt(uidNum);
 
                 String[] pkgsInUid = getPackagesForUid(uidState.uid);
-                if (ArrayUtils.isEmpty(pkgsInUid)) {
+                if (ArrayUtils.isEmpty(pkgsInUid) && uid >= Process.FIRST_APPLICATION_UID) {
                     uidState.clear();
                     mUidStates.removeAt(uidNum);
                     scheduleFastWriteLocked();
@@ -1088,6 +1137,64 @@
             }
         }
 
+        prepareInternalCallbacks();
+
+        final IntentFilter packageSuspendFilter = new IntentFilter();
+        packageSuspendFilter.addAction(Intent.ACTION_PACKAGES_UNSUSPENDED);
+        packageSuspendFilter.addAction(Intent.ACTION_PACKAGES_SUSPENDED);
+        mContext.registerReceiverAsUser(new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                final int[] changedUids = intent.getIntArrayExtra(Intent.EXTRA_CHANGED_UID_LIST);
+                final String[] changedPkgs = intent.getStringArrayExtra(
+                        Intent.EXTRA_CHANGED_PACKAGE_LIST);
+                for (int code : OPS_RESTRICTED_ON_SUSPEND) {
+                    ArraySet<OnOpModeChangedListener> onModeChangedListeners;
+                    synchronized (AppOpsService.this) {
+                        onModeChangedListeners = mOpModeWatchers.get(code);
+                        if (onModeChangedListeners == null) {
+                            continue;
+                        }
+                    }
+                    for (int i = 0; i < changedUids.length; i++) {
+                        final int changedUid = changedUids[i];
+                        final String changedPkg = changedPkgs[i];
+                        // We trust packagemanager to insert matching uid and packageNames in the
+                        // extras
+                        notifyOpChanged(onModeChangedListeners, code, changedUid, changedPkg);
+                    }
+                }
+            }
+        }, UserHandle.ALL, packageSuspendFilter, null, null);
+
+        mHandler.postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                List<String> packageNames = getPackageListAndResample();
+                initializeRarelyUsedPackagesList(new ArraySet<>(packageNames));
+            }
+        }, RARELY_USED_PACKAGES_INITIALIZATION_DELAY_MILLIS);
+
+        getPackageManagerInternal().setExternalSourcesPolicy(
+                new PackageManagerInternal.ExternalSourcesPolicy() {
+                    @Override
+                    public int getPackageTrustedToInstallApps(String packageName, int uid) {
+                        int appOpMode = checkOperation(AppOpsManager.OP_REQUEST_INSTALL_PACKAGES,
+                                uid, packageName);
+                        switch (appOpMode) {
+                            case AppOpsManager.MODE_ALLOWED:
+                                return PackageManagerInternal.ExternalSourcesPolicy.USER_TRUSTED;
+                            case AppOpsManager.MODE_ERRORED:
+                                return PackageManagerInternal.ExternalSourcesPolicy.USER_BLOCKED;
+                            default:
+                                return PackageManagerInternal.ExternalSourcesPolicy.USER_DEFAULT;
+                        }
+                    }
+                });
+    }
+
+    @VisibleForTesting
+    void prepareInternalCallbacks() {
         getUserManagerInternal().addUserLifecycleListener(
                 new UserManagerInternal.UserLifecycleListener() {
                     @Override
@@ -1133,62 +1240,6 @@
                         }
                     }
                 });
-
-        final IntentFilter packageSuspendFilter = new IntentFilter();
-        packageSuspendFilter.addAction(Intent.ACTION_PACKAGES_UNSUSPENDED);
-        packageSuspendFilter.addAction(Intent.ACTION_PACKAGES_SUSPENDED);
-        mContext.registerReceiverAsUser(new BroadcastReceiver() {
-            @Override
-            public void onReceive(Context context, Intent intent) {
-                final int[] changedUids = intent.getIntArrayExtra(Intent.EXTRA_CHANGED_UID_LIST);
-                final String[] changedPkgs = intent.getStringArrayExtra(
-                        Intent.EXTRA_CHANGED_PACKAGE_LIST);
-                for (int code : OPS_RESTRICTED_ON_SUSPEND) {
-                    ArraySet<OnOpModeChangedListener> onModeChangedListeners;
-                    synchronized (AppOpsService.this) {
-                        onModeChangedListeners =
-                                mAppOpsCheckingService.getOpModeChangedListeners(code);
-                        if (onModeChangedListeners == null) {
-                            continue;
-                        }
-                    }
-                    for (int i = 0; i < changedUids.length; i++) {
-                        final int changedUid = changedUids[i];
-                        final String changedPkg = changedPkgs[i];
-                        // We trust packagemanager to insert matching uid and packageNames in the
-                        // extras
-                        notifyOpChanged(onModeChangedListeners, code, changedUid, changedPkg);
-                    }
-                }
-            }
-        }, UserHandle.ALL, packageSuspendFilter, null, null);
-
-        mHandler.postDelayed(new Runnable() {
-            @Override
-            public void run() {
-                List<String> packageNames = getPackageListAndResample();
-                initializeRarelyUsedPackagesList(new ArraySet<>(packageNames));
-            }
-        }, RARELY_USED_PACKAGES_INITIALIZATION_DELAY_MILLIS);
-
-        getPackageManagerInternal().setExternalSourcesPolicy(
-                new PackageManagerInternal.ExternalSourcesPolicy() {
-                    @Override
-                    public int getPackageTrustedToInstallApps(String packageName, int uid) {
-                        int appOpMode = checkOperation(AppOpsManager.OP_REQUEST_INSTALL_PACKAGES,
-                                uid, packageName);
-                        switch (appOpMode) {
-                            case AppOpsManager.MODE_ALLOWED:
-                                return PackageManagerInternal.ExternalSourcesPolicy.USER_TRUSTED;
-                            case AppOpsManager.MODE_ERRORED:
-                                return PackageManagerInternal.ExternalSourcesPolicy.USER_BLOCKED;
-                            default:
-                                return PackageManagerInternal.ExternalSourcesPolicy.USER_DEFAULT;
-                        }
-                    }
-                });
-
-        mActivityManagerInternal = LocalServices.getService(ActivityManagerInternal.class);
     }
 
     /**
@@ -1207,6 +1258,11 @@
                     initializeUserUidStatesLocked(userId, packageStates);
                 }
             }
+
+            for (int uid : NON_PACKAGE_UIDS) {
+                mUidStates.put(uid, new UidState(uid));
+            }
+            mUidStatesInitialized = true;
         }
     }
 
@@ -1250,8 +1306,6 @@
                 ops.put(code, new Op(uidState, packageName, code, uid));
             }
         }
-
-        uidState.evalForegroundOps();
     }
 
     /**
@@ -1325,23 +1379,51 @@
     // The callback method from AppOpsUidStateTracker
     private void onUidStateChanged(int uid, int state, boolean foregroundModeMayChange) {
         synchronized (this) {
-            UidState uidState = getUidStateLocked(uid, true);
+            UidState uidState = getUidStateLocked(uid, false);
 
-            if (uidState != null && foregroundModeMayChange && uidState.hasForegroundWatchers) {
-                for (int fgi = uidState.foregroundOps.size() - 1; fgi >= 0; fgi--) {
-                    if (!uidState.foregroundOps.valueAt(fgi)) {
+            boolean hasForegroundWatchers = false;
+
+            for (int i = 0; i < mModeWatchers.size(); i++) {
+                ModeCallback cb = mModeWatchers.valueAt(i);
+                if (cb.isWatchingUid(uid) && (cb.getFlags() & WATCH_FOREGROUND_CHANGES) != 0) {
+                    hasForegroundWatchers = true;
+                    break;
+                }
+            }
+
+            if (uidState != null && foregroundModeMayChange && hasForegroundWatchers) {
+
+                SparseBooleanArray foregroundOps = new SparseBooleanArray();
+
+                SparseBooleanArray uidForegroundOps = mAppOpsCheckingService.getForegroundOps(uid);
+                for (int i = 0; i < uidForegroundOps.size(); i++) {
+                    foregroundOps.put(uidForegroundOps.keyAt(i), true);
+                }
+                String[] uidPackageNames = getPackagesForUid(uid);
+
+                int userId = UserHandle.getUserId(uid);
+                for (String packageName : uidPackageNames) {
+                    SparseBooleanArray packageForegroundOps =
+                            mAppOpsCheckingService.getForegroundOps(packageName, userId);
+                    for (int i = 0; i < packageForegroundOps.size(); i++) {
+                        foregroundOps.put(packageForegroundOps.keyAt(i), true);
+                    }
+                }
+
+                for (int fgi = foregroundOps.size() - 1; fgi >= 0; fgi--) {
+                    if (!foregroundOps.valueAt(fgi)) {
                         continue;
                     }
-                    final int code = uidState.foregroundOps.keyAt(fgi);
+                    final int code = foregroundOps.keyAt(fgi);
 
                     if (uidState.getUidMode(code) != AppOpsManager.opToDefaultMode(code)
                             && uidState.getUidMode(code) == AppOpsManager.MODE_FOREGROUND) {
                         mHandler.sendMessage(PooledLambda.obtainMessage(
                                 AppOpsService::notifyOpChangedForAllPkgsInUid,
-                                this, code, uidState.uid, true, null));
+                                this, code, uidState.uid, true));
                     } else if (!uidState.pkgOps.isEmpty()) {
                         final ArraySet<OnOpModeChangedListener> listenerSet =
-                                mAppOpsCheckingService.getOpModeChangedListeners(code);
+                                mOpModeWatchers.get(code);
                         if (listenerSet != null) {
                             for (int cbi = listenerSet.size() - 1; cbi >= 0; cbi--) {
                                 final OnOpModeChangedListener listener = listenerSet.valueAt(cbi);
@@ -1398,12 +1480,6 @@
             @ActivityManager.ProcessCapability int capability) {
         synchronized (this) {
             getUidStateTracker().updateUidProcState(uid, procState, capability);
-            if (!mUidStates.contains(uid)) {
-                UidState uidState = new UidState(uid);
-                mUidStates.put(uid, uidState);
-                onUidStateChanged(uid,
-                        AppOpsUidStateTracker.processStateToUidState(procState), false);
-            }
         }
     }
 
@@ -1538,7 +1614,7 @@
                 return null;
             }
             ArrayList<AppOpsManager.OpEntry> resOps = collectOps(pkgOps, ops);
-            if (resOps == null) {
+            if (resOps == null || resOps.size() == 0) {
                 return null;
             }
             ArrayList<AppOpsManager.PackageOps> res = new ArrayList<AppOpsManager.PackageOps>();
@@ -1795,6 +1871,12 @@
                 if (mode == defaultMode) {
                     return;
                 }
+                if (uid >= Process.FIRST_APPLICATION_UID) {
+                    // TODO change to a throw; no crashing for now.
+                    Slog.e(TAG, "Trying to set mode for unknown uid " + uid + ".");
+                }
+                // I suppose we'll support setting these uids. Shouldn't matter later when UidState
+                // is removed.
                 uidState = new UidState(uid);
                 mUidStates.put(uid, uidState);
             }
@@ -1805,17 +1887,16 @@
                 previousMode = MODE_DEFAULT;
             }
 
+            mIgnoredCallback = permissionPolicyCallback;
             if (!uidState.setUidMode(code, mode)) {
                 return;
             }
-            uidState.evalForegroundOps();
             if (mode != MODE_ERRORED && mode != previousMode) {
                 updateStartedOpModeForUidLocked(code, mode == MODE_IGNORED, uid);
             }
         }
 
-        notifyOpChangedForAllPkgsInUid(code, uid, false, permissionPolicyCallback);
-        notifyOpChangedSync(code, uid, null, mode, previousMode);
+        notifyStorageManagerOpModeChangedSync(code, uid, null, mode, previousMode);
     }
 
     /**
@@ -1825,12 +1906,86 @@
      * @param uid The uid the op was changed for
      * @param onlyForeground Only notify watchers that watch for foreground changes
      */
-    private void notifyOpChangedForAllPkgsInUid(int code, int uid, boolean onlyForeground,
-            @Nullable IAppOpsCallback callbackToIgnore) {
-        ModeCallback listenerToIgnore = callbackToIgnore != null
-                ? mModeWatchers.get(callbackToIgnore.asBinder()) : null;
-        mAppOpsCheckingService.notifyOpChangedForAllPkgsInUid(code, uid, onlyForeground,
-                listenerToIgnore);
+    private void notifyOpChangedForAllPkgsInUid(int code, int uid, boolean onlyForeground) {
+        String[] uidPackageNames = getPackagesForUid(uid);
+        ArrayMap<OnOpModeChangedListener, ArraySet<String>> callbackSpecs = null;
+        synchronized (this) {
+            ArraySet<OnOpModeChangedListener> callbacks = mOpModeWatchers.get(code);
+            if (callbacks != null) {
+                final int callbackCount = callbacks.size();
+                for (int i = 0; i < callbackCount; i++) {
+                    OnOpModeChangedListener callback = callbacks.valueAt(i);
+
+                    if (!callback.isWatchingUid(uid)) {
+                        continue;
+                    }
+
+                    if (onlyForeground && (callback.getFlags()
+                            & WATCH_FOREGROUND_CHANGES) == 0) {
+                        continue;
+                    }
+
+                    ArraySet<String> changedPackages = new ArraySet<>();
+                    Collections.addAll(changedPackages, uidPackageNames);
+                    if (callbackSpecs == null) {
+                        callbackSpecs = new ArrayMap<>();
+                    }
+                    callbackSpecs.put(callback, changedPackages);
+                }
+            }
+
+            for (String uidPackageName : uidPackageNames) {
+                callbacks = mPackageModeWatchers.get(uidPackageName);
+                if (callbacks != null) {
+                    if (callbackSpecs == null) {
+                        callbackSpecs = new ArrayMap<>();
+                    }
+                    final int callbackCount = callbacks.size();
+                    for (int i = 0; i < callbackCount; i++) {
+                        OnOpModeChangedListener callback = callbacks.valueAt(i);
+
+                        if (onlyForeground && (callback.getFlags()
+                                & WATCH_FOREGROUND_CHANGES) == 0) {
+                            continue;
+                        }
+
+                        ArraySet<String> changedPackages = callbackSpecs.get(callback);
+                        if (changedPackages == null) {
+                            changedPackages = new ArraySet<>();
+                            callbackSpecs.put(callback, changedPackages);
+                        }
+                        changedPackages.add(uidPackageName);
+                    }
+                }
+            }
+
+            if (callbackSpecs != null && mIgnoredCallback != null) {
+                callbackSpecs.remove(mModeWatchers.get(mIgnoredCallback.asBinder()));
+            }
+        }
+
+        if (callbackSpecs == null) {
+            return;
+        }
+
+        for (int i = 0; i < callbackSpecs.size(); i++) {
+            final OnOpModeChangedListener callback = callbackSpecs.keyAt(i);
+            final ArraySet<String> reportedPackageNames = callbackSpecs.valueAt(i);
+            if (reportedPackageNames == null) {
+                mHandler.sendMessage(PooledLambda.obtainMessage(
+                        AppOpsService::notifyOpChanged,
+                        this, callback, code, uid, (String) null));
+
+            } else {
+                final int reportedPackageCount = reportedPackageNames.size();
+                for (int j = 0; j < reportedPackageCount; j++) {
+                    final String reportedPackageName = reportedPackageNames.valueAt(j);
+                    mHandler.sendMessage(PooledLambda.obtainMessage(
+                            AppOpsService::notifyOpChanged,
+                            this, callback, code, uid, reportedPackageName));
+                }
+            }
+        }
     }
 
     private void updatePermissionRevokedCompat(int uid, int switchCode, int mode) {
@@ -1924,8 +2079,8 @@
         }
     }
 
-    private void notifyOpChangedSync(int code, int uid, @NonNull String packageName, int mode,
-            int previousMode) {
+    private void notifyStorageManagerOpModeChangedSync(int code, int uid,
+            @NonNull String packageName, int mode, int previousMode) {
         final StorageManagerInternal storageManagerInternal =
                 LocalServices.getService(StorageManagerInternal.class);
         if (storageManagerInternal != null) {
@@ -1954,7 +2109,6 @@
             return;
         }
 
-        ArraySet<OnOpModeChangedListener> repCbs = null;
         code = AppOpsManager.opToSwitch(code);
 
         PackageVerificationResult pvr;
@@ -1971,53 +2125,17 @@
 
         int previousMode = MODE_DEFAULT;
         synchronized (this) {
-            UidState uidState = getUidStateLocked(uid, false);
             Op op = getOpLocked(code, uid, packageName, null, false, pvr.bypass, /* edit */ true);
             if (op != null) {
                 if (op.getMode() != mode) {
                     previousMode = op.getMode();
+                    mIgnoredCallback = permissionPolicyCallback;
                     op.setMode(mode);
-
-                    if (uidState != null) {
-                        uidState.evalForegroundOps();
-                    }
-                    ArraySet<OnOpModeChangedListener> cbs =
-                            mAppOpsCheckingService.getOpModeChangedListeners(code);
-                    if (cbs != null) {
-                        if (repCbs == null) {
-                            repCbs = new ArraySet<>();
-                        }
-                        repCbs.addAll(cbs);
-                    }
-                    cbs = mAppOpsCheckingService.getPackageModeChangedListeners(packageName);
-                    if (cbs != null) {
-                        if (repCbs == null) {
-                            repCbs = new ArraySet<>();
-                        }
-                        repCbs.addAll(cbs);
-                    }
-                    if (repCbs != null && permissionPolicyCallback != null) {
-                        repCbs.remove(mModeWatchers.get(permissionPolicyCallback.asBinder()));
-                    }
-                    if (mode == AppOpsManager.opToDefaultMode(op.op)) {
-                        // If going into the default mode, prune this op
-                        // if there is nothing else interesting in it.
-                        pruneOpLocked(op, uid, packageName);
-                    }
-                    scheduleFastWriteLocked();
-                    if (mode != MODE_ERRORED) {
-                        updateStartedOpModeForUidLocked(code, mode == MODE_IGNORED, uid);
-                    }
                 }
             }
         }
-        if (repCbs != null) {
-            mHandler.sendMessage(PooledLambda.obtainMessage(
-                    AppOpsService::notifyOpChanged,
-                    this, repCbs, code, uid, packageName));
-        }
 
-        notifyOpChangedSync(code, uid, packageName, mode, previousMode);
+        notifyStorageManagerOpModeChangedSync(code, uid, packageName, mode, previousMode);
     }
 
     private void notifyOpChanged(ArraySet<OnOpModeChangedListener> callbacks, int code,
@@ -2028,9 +2146,42 @@
         }
     }
 
-    private void notifyOpChanged(OnOpModeChangedListener callback, int code,
+    private void notifyOpChanged(OnOpModeChangedListener onModeChangedListener, int code,
             int uid, String packageName) {
-        mAppOpsCheckingService.notifyOpChanged(callback, code, uid, packageName);
+        Objects.requireNonNull(onModeChangedListener);
+
+        if (uid != UID_ANY && onModeChangedListener.getWatchingUid() >= 0
+                && onModeChangedListener.getWatchingUid() != uid) {
+            return;
+        }
+
+        // See CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE
+        int[] switchedCodes;
+        if (onModeChangedListener.getWatchedOpCode() == ALL_OPS) {
+            switchedCodes = mSwitchedOps.get(code);
+        } else if (onModeChangedListener.getWatchedOpCode() == OP_NONE) {
+            switchedCodes = new int[]{code};
+        } else {
+            switchedCodes = new int[]{onModeChangedListener.getWatchedOpCode()};
+        }
+
+        for (int switchedCode : switchedCodes) {
+            // There are features watching for mode changes such as window manager
+            // and location manager which are in our process. The callbacks in these
+            // features may require permissions our remote caller does not have.
+            final long identity = Binder.clearCallingIdentity();
+            try {
+                if (shouldIgnoreCallback(switchedCode, onModeChangedListener.getCallingPid(),
+                        onModeChangedListener.getCallingUid())) {
+                    continue;
+                }
+                onModeChangedListener.onOpModeChanged(switchedCode, uid, packageName);
+            } catch (RemoteException e) {
+                /* ignore */
+            } finally {
+                Binder.restoreCallingIdentity(identity);
+            }
+        }
     }
 
     private static ArrayList<ChangeRec> addChange(ArrayList<ChangeRec> reports,
@@ -2129,11 +2280,9 @@
                             uidState.setUidMode(code, newMode);
                             for (String packageName : getPackagesForUid(uidState.uid)) {
                                 callbacks = addCallbacks(callbacks, code, uidState.uid, packageName,
-                                        previousMode,
-                                        mAppOpsCheckingService.getOpModeChangedListeners(code));
+                                        previousMode, mOpModeWatchers.get(code));
                                 callbacks = addCallbacks(callbacks, code, uidState.uid, packageName,
-                                        previousMode, mAppOpsCheckingService
-                                                .getPackageModeChangedListeners(packageName));
+                                        previousMode, mPackageModeWatchers.get(packageName));
 
                                 allChanges = addChange(allChanges, code, uidState.uid,
                                         packageName, previousMode);
@@ -2182,11 +2331,9 @@
                             uidChanged = true;
                             final int uid = curOp.uidState.uid;
                             callbacks = addCallbacks(callbacks, curOp.op, uid, packageName,
-                                    previousMode,
-                                    mAppOpsCheckingService.getOpModeChangedListeners(curOp.op));
+                                    previousMode, mOpModeWatchers.get(curOp.op));
                             callbacks = addCallbacks(callbacks, curOp.op, uid, packageName,
-                                    previousMode, mAppOpsCheckingService
-                                            .getPackageModeChangedListeners(packageName));
+                                    previousMode, mPackageModeWatchers.get(packageName));
 
                             allChanges = addChange(allChanges, curOp.op, uid, packageName,
                                     previousMode);
@@ -2202,9 +2349,6 @@
                                 UserHandle.getUserId(uidState.uid));
                     }
                 }
-                if (uidChanged) {
-                    uidState.evalForegroundOps();
-                }
             }
 
             if (changed) {
@@ -2228,7 +2372,7 @@
         int numChanges = allChanges.size();
         for (int i = 0; i < numChanges; i++) {
             ChangeRec change = allChanges.get(i);
-            notifyOpChangedSync(change.op, change.uid, change.pkg,
+            notifyStorageManagerOpModeChangedSync(change.op, change.uid, change.pkg,
                     AppOpsManager.opToDefaultMode(change.op), change.previous_mode);
         }
     }
@@ -2281,15 +2425,6 @@
         dpmi.resetOp(op, packageName, userId);
     }
 
-    private void evalAllForegroundOpsLocked() {
-        for (int uidi = mUidStates.size() - 1; uidi >= 0; uidi--) {
-            final UidState uidState = mUidStates.valueAt(uidi);
-            if (uidState.foregroundOps != null) {
-                uidState.evalForegroundOps();
-            }
-        }
-    }
-
     @Override
     public void startWatchingMode(int op, String packageName, IAppOpsCallback callback) {
         startWatchingModeWithFlags(op, packageName, 0, callback);
@@ -2333,12 +2468,21 @@
                 mModeWatchers.put(callback.asBinder(), cb);
             }
             if (switchOp != AppOpsManager.OP_NONE) {
-                mAppOpsCheckingService.startWatchingOpModeChanged(cb, switchOp);
+                ArraySet<OnOpModeChangedListener> cbs = mOpModeWatchers.get(switchOp);
+                if (cbs == null) {
+                    cbs = new ArraySet<>();
+                    mOpModeWatchers.put(switchOp, cbs);
+                }
+                cbs.add(cb);
             }
             if (mayWatchPackageName) {
-                mAppOpsCheckingService.startWatchingPackageModeChanged(cb, packageName);
+                ArraySet<OnOpModeChangedListener> cbs = mPackageModeWatchers.get(packageName);
+                if (cbs == null) {
+                    cbs = new ArraySet<>();
+                    mPackageModeWatchers.put(packageName, cbs);
+                }
+                cbs.add(cb);
             }
-            evalAllForegroundOpsLocked();
         }
     }
 
@@ -2351,10 +2495,21 @@
             ModeCallback cb = mModeWatchers.remove(callback.asBinder());
             if (cb != null) {
                 cb.unlinkToDeath();
-                mAppOpsCheckingService.removeListener(cb);
+                for (int i = mOpModeWatchers.size() - 1; i >= 0; i--) {
+                    ArraySet<OnOpModeChangedListener> cbs = mOpModeWatchers.valueAt(i);
+                    cbs.remove(cb);
+                    if (cbs.size() <= 0) {
+                        mOpModeWatchers.removeAt(i);
+                    }
+                }
+                for (int i = mPackageModeWatchers.size() - 1; i >= 0; i--) {
+                    ArraySet<OnOpModeChangedListener> cbs = mPackageModeWatchers.valueAt(i);
+                    cbs.remove(cb);
+                    if (cbs.size() <= 0) {
+                        mPackageModeWatchers.removeAt(i);
+                    }
+                }
             }
-
-            evalAllForegroundOpsLocked();
         }
     }
 
@@ -3719,7 +3874,7 @@
     /**
      * Create a restriction description matching the properties of the package.
      *
-     * @param pkg The package to create the restriction description for
+     * @param packageState The package to create the restriction description for
      *
      * @return The restriction matching the package
      */
@@ -3923,7 +4078,7 @@
      */
     private Ops getOpsLocked(int uid, String packageName, @Nullable String attributionTag,
             boolean isAttributionTagValid, @Nullable RestrictionBypass bypass, boolean edit) {
-        UidState uidState = getUidStateLocked(uid, edit);
+        UidState uidState = getUidStateLocked(uid, false);
         if (uidState == null) {
             return null;
         }
@@ -5149,8 +5304,55 @@
                 pw.println();
             }
 
-            if (!dumpHistory) {
-                needSep |= mAppOpsCheckingService.dumpListeners(dumpOp, dumpUid, dumpPackage, pw);
+            if (mOpModeWatchers.size() > 0 && !dumpHistory) {
+                boolean printedHeader = false;
+                for (int i = 0; i < mOpModeWatchers.size(); i++) {
+                    if (dumpOp >= 0 && dumpOp != mOpModeWatchers.keyAt(i)) {
+                        continue;
+                    }
+                    boolean printedOpHeader = false;
+                    ArraySet<OnOpModeChangedListener> callbacks = mOpModeWatchers.valueAt(i);
+                    for (int j = 0; j < callbacks.size(); j++) {
+                        final OnOpModeChangedListener cb = callbacks.valueAt(j);
+                        if (dumpPackage != null
+                                && dumpUid != UserHandle.getAppId(cb.getWatchingUid())) {
+                            continue;
+                        }
+                        needSep = true;
+                        if (!printedHeader) {
+                            pw.println("  Op mode watchers:");
+                            printedHeader = true;
+                        }
+                        if (!printedOpHeader) {
+                            pw.print("    Op ");
+                            pw.print(AppOpsManager.opToName(mOpModeWatchers.keyAt(i)));
+                            pw.println(":");
+                            printedOpHeader = true;
+                        }
+                        pw.print("      #"); pw.print(j); pw.print(": ");
+                        pw.println(cb);
+                    }
+                }
+            }
+            if (mPackageModeWatchers.size() > 0 && dumpOp < 0 && !dumpHistory) {
+                boolean printedHeader = false;
+                for (int i = 0; i < mPackageModeWatchers.size(); i++) {
+                    if (dumpPackage != null && !dumpPackage.equals(mPackageModeWatchers.keyAt(i))) {
+                        continue;
+                    }
+                    needSep = true;
+                    if (!printedHeader) {
+                        pw.println("  Package mode watchers:");
+                        printedHeader = true;
+                    }
+                    pw.print("    Pkg "); pw.print(mPackageModeWatchers.keyAt(i));
+                    pw.println(":");
+                    ArraySet<OnOpModeChangedListener> callbacks = mPackageModeWatchers.valueAt(i);
+                    for (int j = 0; j < callbacks.size(); j++) {
+                        pw.print("      #"); pw.print(j); pw.print(": ");
+                        pw.println(callbacks.valueAt(j));
+                    }
+                }
             }
 
             if (mModeWatchers.size() > 0 && dumpOp < 0 && !dumpHistory) {
@@ -5350,11 +5552,6 @@
                             }
                         }
                     }
-                    if (uidState.foregroundOps != null && !hasOp) {
-                        if (uidState.foregroundOps.indexOfKey(dumpOp) > 0) {
-                            hasOp = true;
-                        }
-                    }
                     if (!hasOp || !hasPackage || !hasMode) {
                         continue;
                     }
@@ -5362,21 +5559,6 @@
 
                 pw.print("  Uid "); UserHandle.formatUid(pw, uidState.uid); pw.println(":");
                 uidState.dump(pw, nowElapsed);
-                if (uidState.foregroundOps != null && (dumpMode < 0
-                        || dumpMode == AppOpsManager.MODE_FOREGROUND)) {
-                    pw.println("    foregroundOps:");
-                    for (int j = 0; j < uidState.foregroundOps.size(); j++) {
-                        if (dumpOp >= 0 && dumpOp != uidState.foregroundOps.keyAt(j)) {
-                            continue;
-                        }
-                        pw.print("      ");
-                        pw.print(AppOpsManager.opToName(uidState.foregroundOps.keyAt(j)));
-                        pw.print(": ");
-                        pw.println(uidState.foregroundOps.valueAt(j) ? "WATCHER" : "SILENT");
-                    }
-                    pw.print("    hasForegroundWatchers=");
-                    pw.println(uidState.hasForegroundWatchers);
-                }
                 needSep = true;
 
                 if (opModes != null) {
@@ -5578,7 +5760,7 @@
     private void notifyWatchersOfChange(int code, int uid) {
         final ArraySet<OnOpModeChangedListener> modeChangedListenerSet;
         synchronized (this) {
-            modeChangedListenerSet = mAppOpsCheckingService.getOpModeChangedListeners(code);
+            modeChangedListenerSet = mOpModeWatchers.get(code);
             if (modeChangedListenerSet == null) {
                 return;
             }
@@ -5665,10 +5847,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_APPOPS)
     @Override
     public void resetPackageOpsNoHistory(@NonNull String packageName) {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_APPOPS,
-                "resetPackageOpsNoHistory");
+        resetPackageOpsNoHistory_enforcePermission();
         synchronized (AppOpsService.this) {
             final int uid = mPackageManagerInternal.getPackageUid(packageName, 0,
                     UserHandle.getCallingUserId());
@@ -5687,52 +5869,52 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_APPOPS)
     @Override
     public void setHistoryParameters(@AppOpsManager.HistoricalMode int mode,
             long baseSnapshotInterval, int compressionStep) {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_APPOPS,
-                "setHistoryParameters");
+        setHistoryParameters_enforcePermission();
         // Must not hold the appops lock
         mHistoricalRegistry.setHistoryParameters(mode, baseSnapshotInterval, compressionStep);
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_APPOPS)
     @Override
     public void offsetHistory(long offsetMillis) {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_APPOPS,
-                "offsetHistory");
+        offsetHistory_enforcePermission();
         // Must not hold the appops lock
         mHistoricalRegistry.offsetHistory(offsetMillis);
         mHistoricalRegistry.offsetDiscreteHistory(offsetMillis);
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_APPOPS)
     @Override
     public void addHistoricalOps(HistoricalOps ops) {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_APPOPS,
-                "addHistoricalOps");
+        addHistoricalOps_enforcePermission();
         // Must not hold the appops lock
         mHistoricalRegistry.addHistoricalOps(ops);
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_APPOPS)
     @Override
     public void resetHistoryParameters() {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_APPOPS,
-                "resetHistoryParameters");
+        resetHistoryParameters_enforcePermission();
         // Must not hold the appops lock
         mHistoricalRegistry.resetHistoryParameters();
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_APPOPS)
     @Override
     public void clearHistory() {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_APPOPS,
-                "clearHistory");
+        clearHistory_enforcePermission();
         // Must not hold the appops lock
         mHistoricalRegistry.clearAllHistory();
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_APPOPS)
     @Override
     public void rebootHistory(long offlineDurationMillis) {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_APPOPS,
-                "rebootHistory");
+        rebootHistory_enforcePermission();
 
         Preconditions.checkArgument(offlineDurationMillis >= 0);
 
diff --git a/services/core/java/com/android/server/appop/AppOpsServiceTestingShim.java b/services/core/java/com/android/server/appop/AppOpsServiceTestingShim.java
new file mode 100644
index 0000000..de73a55
--- /dev/null
+++ b/services/core/java/com/android/server/appop/AppOpsServiceTestingShim.java
@@ -0,0 +1,228 @@
+/*
+ * Copyright (C) 2022 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.server.appop;
+
+import android.util.SparseBooleanArray;
+import android.util.SparseIntArray;
+
+import java.util.Objects;
+
+/**
+ * A testing shim, which supports running two variants of an AppOpsServiceInterface at once,
+ * and checking the results of both.
+ */
+public class AppOpsServiceTestingShim implements AppOpsCheckingServiceInterface {
+
+    private AppOpsCheckingServiceInterface mOldImplementation;
+    private AppOpsCheckingServiceInterface mNewImplementation;
+
+    public AppOpsServiceTestingShim(AppOpsCheckingServiceInterface oldValImpl,
+            AppOpsCheckingServiceInterface newImpl) {
+        mOldImplementation = oldValImpl;
+        mNewImplementation = newImpl;
+    }
+
+    private void signalImplDifference(String message) {
+        //TODO b/252886104 implement
+    }
+
+    @Override
+    public void writeState() {
+        mOldImplementation.writeState();
+        mNewImplementation.writeState();
+    }
+
+    @Override
+    public void readState() {
+        mOldImplementation.readState();
+        mNewImplementation.readState();
+    }
+
+    @Override
+    public void shutdown() {
+        mOldImplementation.shutdown();
+        mNewImplementation.shutdown();
+    }
+
+    @Override
+    public void systemReady() {
+        mOldImplementation.systemReady();
+        mNewImplementation.systemReady();
+    }
+
+    @Override
+    public SparseIntArray getNonDefaultUidModes(int uid) {
+        SparseIntArray oldVal = mOldImplementation.getNonDefaultUidModes(uid);
+        SparseIntArray newVal = mNewImplementation.getNonDefaultUidModes(uid);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getNonDefaultUidModes");
+        }
+
+        return newVal;
+    }
+
+    @Override
+    public SparseIntArray getNonDefaultPackageModes(String packageName, int userId) {
+        SparseIntArray oldVal = mOldImplementation.getNonDefaultPackageModes(packageName, userId);
+        SparseIntArray newVal = mNewImplementation.getNonDefaultPackageModes(packageName, userId);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getNonDefaultPackageModes");
+        }
+
+        return newVal;
+    }
+
+    @Override
+    public int getUidMode(int uid, int op) {
+        int oldVal = mOldImplementation.getUidMode(uid, op);
+        int newVal = mNewImplementation.getUidMode(uid, op);
+
+        if (oldVal != newVal) {
+            signalImplDifference("getUidMode");
+        }
+
+        return newVal;
+    }
+
+    @Override
+    public boolean setUidMode(int uid, int op, int mode) {
+        boolean oldVal = mOldImplementation.setUidMode(uid, op, mode);
+        boolean newVal = mNewImplementation.setUidMode(uid, op, mode);
+
+        if (oldVal != newVal) {
+            signalImplDifference("setUidMode");
+        }
+
+        return newVal;
+    }
+
+    @Override
+    public int getPackageMode(String packageName, int op, int userId) {
+        int oldVal = mOldImplementation.getPackageMode(packageName, op, userId);
+        int newVal = mNewImplementation.getPackageMode(packageName, op, userId);
+
+        if (oldVal != newVal) {
+            signalImplDifference("getPackageMode");
+        }
+
+        return newVal;
+    }
+
+    @Override
+    public void setPackageMode(String packageName, int op, int mode, int userId) {
+        mOldImplementation.setPackageMode(packageName, op, mode, userId);
+        mNewImplementation.setPackageMode(packageName, op, mode, userId);
+    }
+
+    @Override
+    public boolean removePackage(String packageName, int userId) {
+        boolean oldVal = mOldImplementation.removePackage(packageName, userId);
+        boolean newVal = mNewImplementation.removePackage(packageName, userId);
+
+        if (oldVal != newVal) {
+            signalImplDifference("removePackage");
+        }
+
+        return newVal;
+    }
+
+    @Override
+    public void removeUid(int uid) {
+        mOldImplementation.removeUid(uid);
+        mNewImplementation.removeUid(uid);
+    }
+
+    @Override
+    public boolean areUidModesDefault(int uid) {
+        boolean oldVal = mOldImplementation.areUidModesDefault(uid);
+        boolean newVal = mNewImplementation.areUidModesDefault(uid);
+
+        if (oldVal != newVal) {
+            signalImplDifference("areUidModesDefault");
+        }
+
+        return newVal;
+    }
+
+    @Override
+    public boolean arePackageModesDefault(String packageName, int userId) {
+        boolean oldVal = mOldImplementation.arePackageModesDefault(packageName, userId);
+        boolean newVal = mNewImplementation.arePackageModesDefault(packageName, userId);
+
+        if (oldVal != newVal) {
+            signalImplDifference("arePackageModesDefault");
+        }
+
+        return newVal;
+    }
+
+    @Override
+    public void clearAllModes() {
+        mOldImplementation.clearAllModes();
+        mNewImplementation.clearAllModes();
+    }
+
+    @Override
+    public SparseBooleanArray getForegroundOps(int uid) {
+        SparseBooleanArray oldVal = mOldImplementation.getForegroundOps(uid);
+        SparseBooleanArray newVal = mNewImplementation.getForegroundOps(uid);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getForegroundOps");
+        }
+
+        return newVal;
+    }
+
+    @Override
+    public SparseBooleanArray getForegroundOps(String packageName, int userId) {
+        SparseBooleanArray oldVal = mOldImplementation.getForegroundOps(packageName, userId);
+        SparseBooleanArray newVal = mNewImplementation.getForegroundOps(packageName, userId);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getForegroundOps");
+        }
+
+        return newVal;
+    }
+
+    @Override
+    public boolean addAppOpsModeChangedListener(AppOpsModeChangedListener listener) {
+        boolean oldVal = mOldImplementation.addAppOpsModeChangedListener(listener);
+        boolean newVal = mNewImplementation.addAppOpsModeChangedListener(listener);
+
+        if (oldVal != newVal) {
+            signalImplDifference("addAppOpsModeChangedListener");
+        }
+
+        return newVal;
+    }
+
+    @Override
+    public boolean removeAppOpsModeChangedListener(AppOpsModeChangedListener listener) {
+        boolean oldVal = mOldImplementation.removeAppOpsModeChangedListener(listener);
+        boolean newVal = mNewImplementation.removeAppOpsModeChangedListener(listener);
+
+        if (oldVal != newVal) {
+            signalImplDifference("removeAppOpsModeChangedListener");
+        }
+
+        return newVal;
+    }
+}
diff --git a/services/core/java/com/android/server/appop/LegacyAppOpStateParser.java b/services/core/java/com/android/server/appop/LegacyAppOpStateParser.java
new file mode 100644
index 0000000..a6d5050
--- /dev/null
+++ b/services/core/java/com/android/server/appop/LegacyAppOpStateParser.java
@@ -0,0 +1,255 @@
+/*
+ * Copyright (C) 2023 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.server.appop;
+
+import static android.app.AppOpsManager.opToDefaultMode;
+
+import android.annotation.NonNull;
+import android.app.AppOpsManager;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+import android.util.AtomicFile;
+import android.util.Slog;
+import android.util.SparseArray;
+import android.util.SparseIntArray;
+import android.util.Xml;
+
+import com.android.internal.util.XmlUtils;
+import com.android.modules.utils.TypedXmlPullParser;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+class LegacyAppOpStateParser {
+    static final String TAG = LegacyAppOpStateParser.class.getSimpleName();
+
+    private static final int NO_FILE_VERSION = -2;
+    private static final int NO_VERSION = -1;
+
+    /**
+     * Reads legacy app-ops data into given maps.
+     */
+    public int readState(AtomicFile file, SparseArray<SparseIntArray> uidModes,
+            SparseArray<ArrayMap<String, SparseIntArray>> userPackageModes) {
+        FileInputStream stream;
+        try {
+            stream = file.openRead();
+        } catch (FileNotFoundException e) {
+            Slog.i(TAG, "No existing app ops " + file.getBaseFile() + "; starting empty");
+            return NO_FILE_VERSION;
+        }
+
+        try {
+            TypedXmlPullParser parser = Xml.resolvePullParser(stream);
+            int type;
+            while ((type = parser.next()) != XmlPullParser.START_TAG
+                    && type != XmlPullParser.END_DOCUMENT) {
+                // Parse next until we reach the start or end
+            }
+
+            if (type != XmlPullParser.START_TAG) {
+                throw new IllegalStateException("no start tag found");
+            }
+
+            int versionAtBoot = parser.getAttributeInt(null, "v", NO_VERSION);
+
+            int outerDepth = parser.getDepth();
+            while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
+                    && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
+                if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
+                    continue;
+                }
+
+                String tagName = parser.getName();
+                if (tagName.equals("pkg")) {
+                    // version 2 has the structure pkg -> uid -> op ->
+                    // in version 3, since pkg and uid states are kept completely
+                    // independent we switch to user -> pkg -> op
+                    readPackage(parser, userPackageModes);
+                } else if (tagName.equals("uid")) {
+                    readUidOps(parser, uidModes);
+                } else if (tagName.equals("user")) {
+                    readUser(parser, userPackageModes);
+                } else {
+                    Slog.w(TAG, "Unknown element under <app-ops>: "
+                            + parser.getName());
+                    XmlUtils.skipCurrentTag(parser);
+                }
+            }
+            return versionAtBoot;
+        } catch (XmlPullParserException e) {
+            throw new RuntimeException(e);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private void readPackage(TypedXmlPullParser parser,
+            SparseArray<ArrayMap<String, SparseIntArray>> userPackageModes)
+            throws NumberFormatException, XmlPullParserException, IOException {
+        String pkgName = parser.getAttributeValue(null, "n");
+        int outerDepth = parser.getDepth();
+        int type;
+        while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
+                && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
+            if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
+                continue;
+            }
+
+            String tagName = parser.getName();
+            if (tagName.equals("uid")) {
+                readPackageUid(parser, pkgName, userPackageModes);
+            } else {
+                Slog.w(TAG, "Unknown element under <pkg>: "
+                        + parser.getName());
+                XmlUtils.skipCurrentTag(parser);
+            }
+        }
+    }
+
+    private void readPackageUid(TypedXmlPullParser parser, String pkgName,
+            SparseArray<ArrayMap<String, SparseIntArray>> userPackageModes)
+            throws NumberFormatException, XmlPullParserException, IOException {
+        int userId = UserHandle.getUserId(parser.getAttributeInt(null, "n"));
+        int outerDepth = parser.getDepth();
+        int type;
+        while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
+                && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
+            if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
+                continue;
+            }
+
+            String tagName = parser.getName();
+            if (tagName.equals("op")) {
+                readOp(parser, userId, pkgName, userPackageModes);
+            } else {
+                Slog.w(TAG, "Unknown element under <pkg>: "
+                        + parser.getName());
+                XmlUtils.skipCurrentTag(parser);
+            }
+        }
+    }
+
+    private void readUidOps(TypedXmlPullParser parser, SparseArray<SparseIntArray> uidModes)
+            throws NumberFormatException,
+            XmlPullParserException, IOException {
+        final int uid = parser.getAttributeInt(null, "n");
+        SparseIntArray modes = uidModes.get(uid);
+        if (modes == null) {
+            modes = new SparseIntArray();
+            uidModes.put(uid, modes);
+        }
+
+        int outerDepth = parser.getDepth();
+        int type;
+        while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
+                && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
+            if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
+                continue;
+            }
+
+            String tagName = parser.getName();
+            if (tagName.equals("op")) {
+                final int code = parser.getAttributeInt(null, "n");
+                final int mode = parser.getAttributeInt(null, "m");
+
+                if (mode != opToDefaultMode(code)) {
+                    modes.put(code, mode);
+                }
+            } else {
+                Slog.w(TAG, "Unknown element under <uid>: "
+                        + parser.getName());
+                XmlUtils.skipCurrentTag(parser);
+            }
+        }
+    }
+
+    private void readUser(TypedXmlPullParser parser,
+            SparseArray<ArrayMap<String, SparseIntArray>> userPackageModes)
+            throws NumberFormatException, XmlPullParserException, IOException {
+        int userId = parser.getAttributeInt(null, "n");
+        int outerDepth = parser.getDepth();
+        int type;
+        while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
+                && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
+            if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
+                continue;
+            }
+
+            String tagName = parser.getName();
+            if (tagName.equals("pkg")) {
+                readPackageOp(parser, userId, userPackageModes);
+            } else {
+                Slog.w(TAG, "Unknown element under <user>: "
+                        + parser.getName());
+                XmlUtils.skipCurrentTag(parser);
+            }
+        }
+    }
+
+    // read package tag refactored in Android U
+    private void readPackageOp(TypedXmlPullParser parser, int userId,
+            SparseArray<ArrayMap<String, SparseIntArray>> userPackageModes)
+            throws NumberFormatException, XmlPullParserException, IOException {
+        String pkgName = parser.getAttributeValue(null, "n");
+        int outerDepth = parser.getDepth();
+        int type;
+        while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
+                && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
+            if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
+                continue;
+            }
+
+            String tagName = parser.getName();
+            if (tagName.equals("op")) {
+                readOp(parser, userId, pkgName, userPackageModes);
+            } else {
+                Slog.w(TAG, "Unknown element under <pkg>: "
+                        + parser.getName());
+                XmlUtils.skipCurrentTag(parser);
+            }
+        }
+    }
+
+    private void readOp(TypedXmlPullParser parser, int userId, @NonNull String pkgName,
+            SparseArray<ArrayMap<String, SparseIntArray>> userPackageModes)
+            throws NumberFormatException, XmlPullParserException {
+        final int opCode = parser.getAttributeInt(null, "n");
+        final int defaultMode = AppOpsManager.opToDefaultMode(opCode);
+        final int mode = parser.getAttributeInt(null, "m", defaultMode);
+
+        if (mode != defaultMode) {
+            ArrayMap<String, SparseIntArray> packageModes = userPackageModes.get(userId);
+            if (packageModes == null) {
+                packageModes = new ArrayMap<>();
+                userPackageModes.put(userId, packageModes);
+            }
+
+            SparseIntArray modes = packageModes.get(pkgName);
+            if (modes == null) {
+                modes = new SparseIntArray();
+                packageModes.put(pkgName, modes);
+            }
+
+            modes.put(opCode, mode);
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/attention/AttentionManagerService.java b/services/core/java/com/android/server/attention/AttentionManagerService.java
index 658e38b..5edbaa9 100644
--- a/services/core/java/com/android/server/attention/AttentionManagerService.java
+++ b/services/core/java/com/android/server/attention/AttentionManagerService.java
@@ -96,12 +96,15 @@
     @VisibleForTesting
     static final String KEY_SERVICE_ENABLED = "service_enabled";
 
-    /** Default value in absence of {@link DeviceConfig} override. */
+    /** Default service enabled value in absence of {@link DeviceConfig} override. */
     private static final boolean DEFAULT_SERVICE_ENABLED = true;
 
     @VisibleForTesting
     boolean mIsServiceEnabled;
 
+    @VisibleForTesting
+    boolean mIsProximityEnabled;
+
     /**
      * DeviceConfig flag name, describes how much time we consider a result fresh; if the check
      * attention called within that period - cached value will be returned.
@@ -180,6 +183,9 @@
             DeviceConfig.addOnPropertiesChangedListener(NAMESPACE_ATTENTION_MANAGER_SERVICE,
                     ActivityThread.currentApplication().getMainExecutor(),
                     (properties) -> onDeviceConfigChange(properties.getKeyset()));
+            mIsProximityEnabled = mContext.getResources()
+                    .getBoolean(com.android.internal.R.bool.config_enableProximityService);
+            Slog.i(LOG_TAG, "mIsProximityEnabled is: " + mIsProximityEnabled);
         }
     }
 
@@ -351,7 +357,7 @@
     @VisibleForTesting
     boolean onStartProximityUpdates(ProximityUpdateCallbackInternal callbackInternal) {
         Objects.requireNonNull(callbackInternal);
-        if (!mIsServiceEnabled) {
+        if (!mIsProximityEnabled) {
             Slog.w(LOG_TAG, "Trying to call onProximityUpdate() on an unsupported device.");
             return false;
         }
@@ -488,6 +494,7 @@
     private void dumpInternal(IndentingPrintWriter ipw) {
         ipw.println("Attention Manager Service (dumpsys attention) state:\n");
         ipw.println("isServiceEnabled=" + mIsServiceEnabled);
+        ipw.println("mIsProximityEnabled=" + mIsProximityEnabled);
         ipw.println("mStaleAfterMillis=" + mStaleAfterMillis);
         ipw.println("AttentionServicePackageName=" + getServiceConfigPackage(mContext));
         ipw.println("Resolved component:");
@@ -519,6 +526,11 @@
         }
 
         @Override
+        public boolean isProximitySupported() {
+            return AttentionManagerService.this.mIsProximityEnabled;
+        }
+
+        @Override
         public boolean checkAttention(long timeout, AttentionCallbackInternal callbackInternal) {
             return AttentionManagerService.this.checkAttention(timeout, callbackInternal);
         }
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 3487fc2..2a8e881 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -2476,13 +2476,11 @@
         return true;
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.WRITE_SETTINGS)
     /** @see AudioManager#setEncodedSurroundMode(int) */
     @Override
     public boolean setEncodedSurroundMode(@AudioManager.EncodedSurroundOutputMode int mode) {
-        if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.WRITE_SETTINGS)
-                != PackageManager.PERMISSION_GRANTED) {
-            throw new SecurityException("Missing WRITE_SETTINGS permission");
-        }
+        setEncodedSurroundMode_enforcePermission();
 
         final long token = Binder.clearCallingIdentity();
         try {
@@ -7544,15 +7542,13 @@
     public @interface BtProfile {}
 
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.BLUETOOTH_STACK)
     /**
      * See AudioManager.handleBluetoothActiveDeviceChanged(...)
      */
     public void handleBluetoothActiveDeviceChanged(BluetoothDevice newDevice,
             BluetoothDevice previousDevice, @NonNull BluetoothProfileConnectionInfo info) {
-        if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.BLUETOOTH_STACK)
-                != PackageManager.PERMISSION_GRANTED) {
-            throw new SecurityException("Bluetooth is the only caller allowed");
-        }
+        handleBluetoothActiveDeviceChanged_enforcePermission();
         if (info == null) {
             throw new IllegalArgumentException("Illegal null BluetoothProfileConnectionInfo for"
                     + " device " + previousDevice + " -> " + newDevice);
@@ -10544,9 +10540,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.REMOTE_AUDIO_PLAYBACK)
     @Override
     public void setRingtonePlayer(IRingtonePlayer player) {
-        mContext.enforceCallingOrSelfPermission(REMOTE_AUDIO_PLAYBACK, null);
+        setRingtonePlayer_enforcePermission();
         mRingtonePlayer = player;
     }
 
diff --git a/services/core/java/com/android/server/clipboard/ClipboardService.java b/services/core/java/com/android/server/clipboard/ClipboardService.java
index fab138b..85b4f75 100644
--- a/services/core/java/com/android/server/clipboard/ClipboardService.java
+++ b/services/core/java/com/android/server/clipboard/ClipboardService.java
@@ -470,6 +470,7 @@
                     callingPackage);
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.SET_CLIP_SOURCE)
         @Override
         public void setPrimaryClipAsPackage(
                 ClipData clip,
@@ -478,8 +479,7 @@
                 @UserIdInt int userId,
                 int deviceId,
                 String sourcePackage) {
-            getContext().enforceCallingOrSelfPermission(Manifest.permission.SET_CLIP_SOURCE,
-                    "Requires SET_CLIP_SOURCE permission");
+            setPrimaryClipAsPackage_enforcePermission();
             checkAndSetPrimaryClip(clip, callingPackage, attributionTag, userId, deviceId,
                     sourcePackage);
         }
@@ -765,11 +765,11 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.SET_CLIP_SOURCE)
         @Override
         public String getPrimaryClipSource(
                 String callingPackage, String attributionTag, int userId, int deviceId) {
-            getContext().enforceCallingOrSelfPermission(Manifest.permission.SET_CLIP_SOURCE,
-                    "Requires SET_CLIP_SOURCE permission");
+            getPrimaryClipSource_enforcePermission();
             final int intendingUid = getIntendingUid(callingPackage, userId);
             final int intendingUserId = UserHandle.getUserId(intendingUid);
             final int intendingDeviceId = getIntendingDeviceId(deviceId, intendingUid);
diff --git a/services/core/java/com/android/server/content/ContentService.java b/services/core/java/com/android/server/content/ContentService.java
index 781920c..1b48e3c 100644
--- a/services/core/java/com/android/server/content/ContentService.java
+++ b/services/core/java/com/android/server/content/ContentService.java
@@ -1150,10 +1150,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.READ_SYNC_STATS)
     @Override
     public boolean isSyncActive(Account account, String authority, ComponentName cname) {
-        mContext.enforceCallingOrSelfPermission(Manifest.permission.READ_SYNC_STATS,
-                "no permission to read the sync stats");
+        isSyncActive_enforcePermission();
 
         final int callingUid = Binder.getCallingUid();
         final int userId = UserHandle.getCallingUserId();
@@ -1254,11 +1254,11 @@
         return isSyncPendingAsUser(account, authority, cname, UserHandle.getCallingUserId());
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.READ_SYNC_STATS)
     @Override
     public boolean isSyncPendingAsUser(Account account, String authority, ComponentName cname,
                                        int userId) {
-        mContext.enforceCallingOrSelfPermission(Manifest.permission.READ_SYNC_STATS,
-                "no permission to read the sync stats");
+        isSyncPendingAsUser_enforcePermission();
         enforceCrossUserPermission(userId,
                 "no permission to retrieve the sync settings for user " + userId);
 
diff --git a/services/core/java/com/android/server/devicestate/DeviceStateManagerService.java b/services/core/java/com/android/server/devicestate/DeviceStateManagerService.java
index 9645690..8f9a1fd 100644
--- a/services/core/java/com/android/server/devicestate/DeviceStateManagerService.java
+++ b/services/core/java/com/android/server/devicestate/DeviceStateManagerService.java
@@ -1185,12 +1185,11 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONTROL_DEVICE_STATE)
         @Override // Binder call
         public void onStateRequestOverlayDismissed(boolean shouldCancelRequest) {
 
-            getContext().enforceCallingOrSelfPermission(CONTROL_DEVICE_STATE,
-                    "CONTROL_DEVICE_STATE permission required to control the state request "
-                            + "overlay");
+            onStateRequestOverlayDismissed_enforcePermission();
 
             final long callingIdentity = Binder.clearCallingIdentity();
             try {
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 26b6cb0..450253b 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -1987,20 +1987,7 @@
         final Point userPreferredResolution =
                 mPersistentDataStore.getUserPreferredResolution(device);
         final float refreshRate = mPersistentDataStore.getUserPreferredRefreshRate(device);
-        // If value in persistentDataStore is null, preserving the mode from systemPreferredMode.
-        // This is required because in some devices, user-preferred mode was not stored in
-        // persistentDataStore, but was stored in a config which is returned through
-        // systemPreferredMode.
-        if ((userPreferredResolution == null && Float.isNaN(refreshRate))
-                || (userPreferredResolution.equals(0, 0) && refreshRate == 0.0f)) {
-            Display.Mode systemPreferredMode = device.getSystemPreferredDisplayModeLocked();
-            if (systemPreferredMode == null) {
-                return;
-            }
-            storeModeInPersistentDataStoreLocked(
-                    display.getDisplayIdLocked(), systemPreferredMode.getPhysicalWidth(),
-                    systemPreferredMode.getPhysicalHeight(), systemPreferredMode.getRefreshRate());
-            device.setUserPreferredDisplayModeLocked(systemPreferredMode);
+        if (userPreferredResolution == null && Float.isNaN(refreshRate)) {
             return;
         }
         Display.Mode.Builder modeBuilder = new Display.Mode.Builder();
@@ -3456,10 +3443,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY)
         @Override // Binder call
         public void startWifiDisplayScan() {
-            mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
-                    "Permission required to start wifi display scans");
+            startWifiDisplayScan_enforcePermission();
 
             final int callingPid = Binder.getCallingPid();
             final long token = Binder.clearCallingIdentity();
@@ -3470,10 +3457,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY)
         @Override // Binder call
         public void stopWifiDisplayScan() {
-            mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
-                    "Permission required to stop wifi display scans");
+            stopWifiDisplayScan_enforcePermission();
 
             final int callingPid = Binder.getCallingPid();
             final long token = Binder.clearCallingIdentity();
@@ -3547,10 +3534,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY)
         @Override // Binder call
         public void pauseWifiDisplay() {
-            mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
-                    "Permission required to pause a wifi display session");
+            pauseWifiDisplay_enforcePermission();
 
             final long token = Binder.clearCallingIdentity();
             try {
@@ -3560,10 +3547,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY)
         @Override // Binder call
         public void resumeWifiDisplay() {
-            mContext.enforceCallingOrSelfPermission(Manifest.permission.CONFIGURE_WIFI_DISPLAY,
-                    "Permission required to resume a wifi display session");
+            resumeWifiDisplay_enforcePermission();
 
             final long token = Binder.clearCallingIdentity();
             try {
@@ -3586,11 +3573,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.WRITE_SECURE_SETTINGS)
         @Override // Binder call
         public void setUserDisabledHdrTypes(int[] userDisabledFormats) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.WRITE_SECURE_SETTINGS,
-                    "Permission required to write the user settings.");
+            setUserDisabledHdrTypes_enforcePermission();
 
             final long token = Binder.clearCallingIdentity();
             try {
@@ -3613,11 +3599,10 @@
             DisplayControl.overrideHdrTypes(displayToken, modes);
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.WRITE_SECURE_SETTINGS)
         @Override // Binder call
         public void setAreUserDisabledHdrTypesAllowed(boolean areUserDisabledHdrTypesAllowed) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.WRITE_SECURE_SETTINGS,
-                    "Permission required to write the user settings.");
+            setAreUserDisabledHdrTypesAllowed_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 setAreUserDisabledHdrTypesAllowedInternal(areUserDisabledHdrTypesAllowed);
@@ -3640,11 +3625,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONFIGURE_DISPLAY_COLOR_MODE)
         @Override // Binder call
         public void requestColorMode(int displayId, int colorMode) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.CONFIGURE_DISPLAY_COLOR_MODE,
-                    "Permission required to change the display color mode");
+            requestColorMode_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 requestColorModeInternal(displayId, colorMode);
@@ -3721,11 +3705,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.BRIGHTNESS_SLIDER_USAGE)
         @Override // Binder call
         public ParceledListSlice<BrightnessChangeEvent> getBrightnessEvents(String callingPackage) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.BRIGHTNESS_SLIDER_USAGE,
-                    "Permission to read brightness events.");
+            getBrightnessEvents_enforcePermission();
 
             final int callingUid = Binder.getCallingUid();
             AppOpsManager appOpsManager = mContext.getSystemService(AppOpsManager.class);
@@ -3754,11 +3737,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_AMBIENT_LIGHT_STATS)
         @Override // Binder call
         public ParceledListSlice<AmbientBrightnessDayStats> getAmbientBrightnessStats() {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.ACCESS_AMBIENT_LIGHT_STATS,
-                    "Permission required to to access ambient light stats.");
+            getAmbientBrightnessStats_enforcePermission();
             final int callingUid = Binder.getCallingUid();
             final int userId = UserHandle.getUserId(callingUid);
             final long token = Binder.clearCallingIdentity();
@@ -3772,12 +3754,11 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS)
         @Override // Binder call
         public void setBrightnessConfigurationForUser(
                 BrightnessConfiguration c, @UserIdInt int userId, String packageName) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS,
-                    "Permission required to change the display's brightness configuration");
+            setBrightnessConfigurationForUser_enforcePermission();
             if (userId != UserHandle.getCallingUserId()) {
                 mContext.enforceCallingOrSelfPermission(
                         Manifest.permission.INTERACT_ACROSS_USERS,
@@ -3802,12 +3783,11 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS)
         @Override // Binder call
         public void setBrightnessConfigurationForDisplay(BrightnessConfiguration c,
                 String uniqueId, int userId, String packageName) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS,
-                    "Permission required to change the display's brightness configuration");
+            setBrightnessConfigurationForDisplay_enforcePermission();
             if (userId != UserHandle.getCallingUserId()) {
                 mContext.enforceCallingOrSelfPermission(
                         Manifest.permission.INTERACT_ACROSS_USERS,
@@ -3822,12 +3802,11 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS)
         @Override // Binder call
         public BrightnessConfiguration getBrightnessConfigurationForDisplay(String uniqueId,
                 int userId) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS,
-                    "Permission required to read the display's brightness configuration");
+            getBrightnessConfigurationForDisplay_enforcePermission();
             if (userId != UserHandle.getCallingUserId()) {
                 mContext.enforceCallingOrSelfPermission(
                         Manifest.permission.INTERACT_ACROSS_USERS,
@@ -3871,11 +3850,10 @@
 
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS)
         @Override // Binder call
         public BrightnessConfiguration getDefaultBrightnessConfiguration() {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS,
-                    "Permission required to read the display's default brightness configuration");
+            getDefaultBrightnessConfiguration_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mSyncRoot) {
@@ -3887,11 +3865,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONTROL_DISPLAY_BRIGHTNESS)
         @Override
         public BrightnessInfo getBrightnessInfo(int displayId) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.CONTROL_DISPLAY_BRIGHTNESS,
-                    "Permission required to read the display's brightness info.");
+            getBrightnessInfo_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mSyncRoot) {
@@ -3919,11 +3896,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONTROL_DISPLAY_BRIGHTNESS)
         @Override // Binder call
         public void setTemporaryBrightness(int displayId, float brightness) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.CONTROL_DISPLAY_BRIGHTNESS,
-                    "Permission required to set the display's brightness");
+            setTemporaryBrightness_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mSyncRoot) {
@@ -3935,11 +3911,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONTROL_DISPLAY_BRIGHTNESS)
         @Override // Binder call
         public void setBrightness(int displayId, float brightness) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.CONTROL_DISPLAY_BRIGHTNESS,
-                    "Permission required to set the display's brightness");
+            setBrightness_enforcePermission();
             if (!isValidBrightness(brightness)) {
                 Slog.w(TAG, "Attempted to set invalid brightness" + brightness);
                 return;
@@ -3978,11 +3953,10 @@
             return brightness;
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONTROL_DISPLAY_BRIGHTNESS)
         @Override // Binder call
         public void setTemporaryAutoBrightnessAdjustment(float adjustment) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.CONTROL_DISPLAY_BRIGHTNESS,
-                    "Permission required to set the display's auto brightness adjustment");
+            setTemporaryAutoBrightnessAdjustment_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 synchronized (mSyncRoot) {
@@ -4022,11 +3996,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_USER_PREFERRED_DISPLAY_MODE)
         @Override // Binder call
         public void setUserPreferredDisplayMode(int displayId, Display.Mode mode) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.MODIFY_USER_PREFERRED_DISPLAY_MODE,
-                    "Permission required to set the user preferred display mode.");
+            setUserPreferredDisplayMode_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 setUserPreferredDisplayModeInternal(displayId, mode);
@@ -4111,11 +4084,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.OVERRIDE_DISPLAY_MODE_REQUESTS)
         @Override // Binder call
         public void setShouldAlwaysRespectAppRequestedMode(boolean enabled) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.OVERRIDE_DISPLAY_MODE_REQUESTS,
-                    "Permission required to override display mode requests.");
+            setShouldAlwaysRespectAppRequestedMode_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 setShouldAlwaysRespectAppRequestedModeInternal(enabled);
@@ -4124,11 +4096,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.OVERRIDE_DISPLAY_MODE_REQUESTS)
         @Override // Binder call
         public boolean shouldAlwaysRespectAppRequestedMode() {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.OVERRIDE_DISPLAY_MODE_REQUESTS,
-                    "Permission required to override display mode requests.");
+            shouldAlwaysRespectAppRequestedMode_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 return shouldAlwaysRespectAppRequestedModeInternal();
@@ -4137,11 +4108,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_REFRESH_RATE_SWITCHING_TYPE)
         @Override // Binder call
         public void setRefreshRateSwitchingType(int newValue) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.MODIFY_REFRESH_RATE_SWITCHING_TYPE,
-                    "Permission required to modify refresh rate switching type.");
+            setRefreshRateSwitchingType_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 setRefreshRateSwitchingTypeInternal(newValue);
diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
index 79984c9..5e36eff 100644
--- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
@@ -70,7 +70,7 @@
 
     private static final String UNIQUE_ID_PREFIX = "local:";
 
-    private static final String PROPERTY_EMULATOR_CIRCULAR = "ro.emulator.circular";
+    private static final String PROPERTY_EMULATOR_CIRCULAR = "ro.boot.emulator.circular";
 
     private final LongSparseArray<LocalDisplayDevice> mDevices = new LongSparseArray<>();
 
diff --git a/services/core/java/com/android/server/display/TEST_MAPPING b/services/core/java/com/android/server/display/TEST_MAPPING
index c4a566f..57c2e01 100644
--- a/services/core/java/com/android/server/display/TEST_MAPPING
+++ b/services/core/java/com/android/server/display/TEST_MAPPING
@@ -16,20 +16,6 @@
                 {"exclude-annotation": "androidx.test.filters.FlakyTest"},
                 {"exclude-annotation": "org.junit.Ignore"}
             ]
-        },
-        {
-            "name": "CtsMediaProjectionTestCases",
-            "options": [
-                {
-                    "exclude-annotation": "android.platform.test.annotations.FlakyTest"
-                },
-                {
-                    "exclude-annotation": "androidx.test.filters.FlakyTest"
-                },
-                {
-                    "exclude-annotation": "org.junit.Ignore"
-                }
-            ]
         }
     ]
 }
\ No newline at end of file
diff --git a/services/core/java/com/android/server/display/color/ColorDisplayService.java b/services/core/java/com/android/server/display/color/ColorDisplayService.java
index 0284d9c..a1a10eb 100644
--- a/services/core/java/com/android/server/display/color/ColorDisplayService.java
+++ b/services/core/java/com/android/server/display/color/ColorDisplayService.java
@@ -1621,11 +1621,10 @@
     @VisibleForTesting
     final class BinderService extends IColorDisplayManager.Stub {
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
         @Override
         public void setColorMode(int colorMode) {
-            getContext().enforceCallingOrSelfPermission(
-                    Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS,
-                    "Permission required to set display color mode");
+            setColorMode_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 setColorModeInternal(colorMode);
@@ -1715,11 +1714,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
         @Override
         public boolean setNightDisplayActivated(boolean activated) {
-            getContext().enforceCallingOrSelfPermission(
-                    Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS,
-                    "Permission required to set night display activated");
+            setNightDisplayActivated_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 mNightDisplayTintController.setActivated(activated);
@@ -1739,11 +1737,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
         @Override
         public boolean setNightDisplayColorTemperature(int temperature) {
-            getContext().enforceCallingOrSelfPermission(
-                    Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS,
-                    "Permission required to set night display temperature");
+            setNightDisplayColorTemperature_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 return mNightDisplayTintController.setColorTemperature(temperature);
@@ -1762,11 +1759,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
         @Override
         public boolean setNightDisplayAutoMode(int autoMode) {
-            getContext().enforceCallingOrSelfPermission(
-                    Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS,
-                    "Permission required to set night display auto mode");
+            setNightDisplayAutoMode_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 return setNightDisplayAutoModeInternal(autoMode);
@@ -1775,11 +1771,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
         @Override
         public int getNightDisplayAutoMode() {
-            getContext().enforceCallingOrSelfPermission(
-                    Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS,
-                    "Permission required to get night display auto mode");
+            getNightDisplayAutoMode_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 return getNightDisplayAutoModeInternal();
@@ -1798,11 +1793,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
         @Override
         public boolean setNightDisplayCustomStartTime(Time startTime) {
-            getContext().enforceCallingOrSelfPermission(
-                    Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS,
-                    "Permission required to set night display custom start time");
+            setNightDisplayCustomStartTime_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 return setNightDisplayCustomStartTimeInternal(startTime);
@@ -1821,11 +1815,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
         @Override
         public boolean setNightDisplayCustomEndTime(Time endTime) {
-            getContext().enforceCallingOrSelfPermission(
-                    Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS,
-                    "Permission required to set night display custom end time");
+            setNightDisplayCustomEndTime_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 return setNightDisplayCustomEndTimeInternal(endTime);
@@ -1844,11 +1837,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
         @Override
         public boolean setDisplayWhiteBalanceEnabled(boolean enabled) {
-            getContext().enforceCallingOrSelfPermission(
-                    Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS,
-                    "Permission required to set night display activated");
+            setDisplayWhiteBalanceEnabled_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 return setDisplayWhiteBalanceSettingEnabled(enabled);
@@ -1877,11 +1869,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
         @Override
         public boolean setReduceBrightColorsActivated(boolean activated) {
-            getContext().enforceCallingOrSelfPermission(
-                    Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS,
-                    "Permission required to set reduce bright colors activation state");
+            setReduceBrightColorsActivated_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 return setReduceBrightColorsActivatedInternal(activated);
@@ -1910,11 +1901,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
         @Override
         public boolean setReduceBrightColorsStrength(int strength) {
-            getContext().enforceCallingOrSelfPermission(
-                    Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS,
-                    "Permission required to set reduce bright colors strength");
+            setReduceBrightColorsStrength_enforcePermission();
             final long token = Binder.clearCallingIdentity();
             try {
                 return setReduceBrightColorsStrengthInternal(strength);
diff --git a/services/core/java/com/android/server/inputmethod/HandwritingModeController.java b/services/core/java/com/android/server/inputmethod/HandwritingModeController.java
index effef47..3cd97ff 100644
--- a/services/core/java/com/android/server/inputmethod/HandwritingModeController.java
+++ b/services/core/java/com/android/server/inputmethod/HandwritingModeController.java
@@ -16,8 +16,6 @@
 
 package com.android.server.inputmethod;
 
-import static android.view.InputDevice.SOURCE_STYLUS;
-
 import android.Manifest;
 import android.annotation.AnyThread;
 import android.annotation.NonNull;
@@ -95,15 +93,6 @@
         mInkWindowInitRunnable = inkWindowInitRunnable;
     }
 
-    // TODO(b/210039666): Consider moving this to MotionEvent
-    private static boolean isStylusEvent(MotionEvent event) {
-        if (!event.isFromSource(SOURCE_STYLUS)) {
-            return false;
-        }
-        final int tool = event.getToolType(0);
-        return tool == MotionEvent.TOOL_TYPE_STYLUS || tool == MotionEvent.TOOL_TYPE_ERASER;
-    }
-
     /**
      * Initializes the handwriting spy on the given displayId.
      *
@@ -329,7 +318,7 @@
             return false;
         }
         final MotionEvent event = (MotionEvent) ev;
-        if (!isStylusEvent(event)) {
+        if (!event.isStylusPointer()) {
             return false;
         }
         if (event.getDisplayId() != mCurrentDisplayId) {
diff --git a/services/core/java/com/android/server/location/LocationManagerService.java b/services/core/java/com/android/server/location/LocationManagerService.java
index 115421d..4d020aa 100644
--- a/services/core/java/com/android/server/location/LocationManagerService.java
+++ b/services/core/java/com/android/server/location/LocationManagerService.java
@@ -297,6 +297,8 @@
                 refreshAppOpsRestrictions(userId);
             }
         });
+        mInjector.getEmergencyHelper().addOnEmergencyStateChangedListener(
+                this::onEmergencyStateChanged);
 
         // set up passive provider first since it will be required for all other location providers,
         // which are loaded later once the system is ready.
@@ -361,9 +363,13 @@
             if (realProvider != null) {
                 // custom logic wrapping all non-passive providers
                 if (manager != mPassiveManager) {
+                    int defaultStationaryThrottlingSetting =
+                            mContext.getPackageManager().hasSystemFeature(
+                                PackageManager.FEATURE_WATCH) ? 0 : 1;
                     boolean enableStationaryThrottling = Settings.Global.getInt(
                             mContext.getContentResolver(),
-                            Settings.Global.LOCATION_ENABLE_STATIONARY_THROTTLE, 1) != 0;
+                            Settings.Global.LOCATION_ENABLE_STATIONARY_THROTTLE,
+                            defaultStationaryThrottlingSetting) != 0;
                     if (enableStationaryThrottling) {
                         realProvider = new StationaryThrottlingLocationProvider(manager.getName(),
                                 mInjector, realProvider);
@@ -568,6 +574,11 @@
         refreshAppOpsRestrictions(userId);
     }
 
+    private void onEmergencyStateChanged() {
+        boolean isInEmergency = mInjector.getEmergencyHelper().isInEmergency(Long.MIN_VALUE);
+        mInjector.getLocationUsageLogger().logEmergencyStateChanged(isInEmergency);
+    }
+
     private void logLocationEnabledState() {
         boolean locationEnabled = false;
         // Location setting is considered on if it is enabled for any one user
@@ -598,10 +609,11 @@
         return mGnssManagerService == null ? 0 : mGnssManagerService.getGnssBatchSize();
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.LOCATION_HARDWARE)
     @Override
     public void startGnssBatch(long periodNanos, ILocationListener listener, String packageName,
             @Nullable String attributionTag, String listenerId) {
-        mContext.enforceCallingOrSelfPermission(Manifest.permission.LOCATION_HARDWARE, null);
+        startGnssBatch_enforcePermission();
 
         if (mGnssManagerService == null) {
             return;
@@ -627,9 +639,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.LOCATION_HARDWARE)
     @Override
     public void flushGnssBatch() {
-        mContext.enforceCallingOrSelfPermission(Manifest.permission.LOCATION_HARDWARE, null);
+        flushGnssBatch_enforcePermission();
 
         if (mGnssManagerService == null) {
             return;
@@ -642,9 +655,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.LOCATION_HARDWARE)
     @Override
     public void stopGnssBatch() {
-        mContext.enforceCallingOrSelfPermission(Manifest.permission.LOCATION_HARDWARE, null);
+        stopGnssBatch_enforcePermission();
 
         if (mGnssManagerService == null) {
             return;
@@ -1110,10 +1124,11 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
     @Override
     @RequiresPermission(INTERACT_ACROSS_USERS)
     public void addProviderRequestListener(IProviderRequestListener listener) {
-        mContext.enforceCallingOrSelfPermission(INTERACT_ACROSS_USERS, null);
+        addProviderRequestListener_enforcePermission();
         for (LocationProviderManager manager : mProviderManagers) {
             if (manager.isVisibleToCaller()) {
                 manager.addProviderRequestListener(listener);
@@ -1194,10 +1209,11 @@
         return manager.getProperties();
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.READ_DEVICE_CONFIG)
     @Override
     public boolean isProviderPackage(@Nullable String provider, String packageName,
             @Nullable String attributionTag) {
-        mContext.enforceCallingOrSelfPermission(permission.READ_DEVICE_CONFIG, null);
+        isProviderPackage_enforcePermission();
 
         for (LocationProviderManager manager : mProviderManagers) {
             if (provider != null && !provider.equals(manager.getName())) {
@@ -1216,9 +1232,10 @@
         return false;
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.READ_DEVICE_CONFIG)
     @Override
     public List<String> getProviderPackages(String provider) {
-        mContext.enforceCallingOrSelfPermission(permission.READ_DEVICE_CONFIG, null);
+        getProviderPackages_enforcePermission();
 
         LocationProviderManager manager = getLocationProviderManager(provider);
         if (manager == null) {
@@ -1549,6 +1566,18 @@
         }
         ipw.decreaseIndent();
 
+        ipw.println("Historical Aggregate Gnss Measurement Provider Data:");
+        ipw.increaseIndent();
+        ArrayMap<CallerIdentity, LocationEventLog.GnssMeasurementAggregateStats>
+                gnssAggregateStats = EVENT_LOG.copyGnssMeasurementAggregateStats();
+        for (int i = 0; i < gnssAggregateStats.size(); i++) {
+            ipw.print(gnssAggregateStats.keyAt(i));
+            ipw.print(": ");
+            gnssAggregateStats.valueAt(i).updateTotals();
+            ipw.println(gnssAggregateStats.valueAt(i));
+        }
+        ipw.decreaseIndent();
+
         if (mGnssManagerService != null) {
             ipw.println("GNSS Manager:");
             ipw.increaseIndent();
diff --git a/services/core/java/com/android/server/location/eventlog/LocationEventLog.java b/services/core/java/com/android/server/location/eventlog/LocationEventLog.java
index cb952ed..87e193f 100644
--- a/services/core/java/com/android/server/location/eventlog/LocationEventLog.java
+++ b/services/core/java/com/android/server/location/eventlog/LocationEventLog.java
@@ -30,6 +30,7 @@
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 
 import android.annotation.Nullable;
+import android.location.GnssMeasurementRequest;
 import android.location.LocationRequest;
 import android.location.provider.ProviderRequest;
 import android.location.util.identity.CallerIdentity;
@@ -58,21 +59,25 @@
 
     private static int getLocationsLogSize() {
         if (D) {
-            return 200;
+            return 400;
         } else {
-            return 100;
+            return 200;
         }
     }
 
     @GuardedBy("mAggregateStats")
     private final ArrayMap<String, ArrayMap<CallerIdentity, AggregateStats>> mAggregateStats;
 
+    @GuardedBy("mGnssMeasAggregateStats")
+    private final ArrayMap<CallerIdentity, GnssMeasurementAggregateStats> mGnssMeasAggregateStats;
+
     @GuardedBy("this")
     private final LocationsEventLog mLocationsLog;
 
     private LocationEventLog() {
         super(getLogSize(), Object.class);
         mAggregateStats = new ArrayMap<>(4);
+        mGnssMeasAggregateStats = new ArrayMap<>();
         mLocationsLog = new LocationsEventLog(getLocationsLogSize());
     }
 
@@ -105,6 +110,29 @@
         }
     }
 
+    /** Copies out gnss measurement aggregated stats. */
+    public ArrayMap<CallerIdentity, GnssMeasurementAggregateStats>
+            copyGnssMeasurementAggregateStats() {
+        synchronized (mGnssMeasAggregateStats) {
+            ArrayMap<CallerIdentity, GnssMeasurementAggregateStats> copy = new ArrayMap<>(
+                    mGnssMeasAggregateStats);
+            return copy;
+        }
+    }
+
+    private GnssMeasurementAggregateStats getGnssMeasurementAggregateStats(
+            CallerIdentity identity) {
+        synchronized (mGnssMeasAggregateStats) {
+            CallerIdentity aggregate = CallerIdentity.forAggregation(identity);
+            GnssMeasurementAggregateStats stats = mGnssMeasAggregateStats.get(aggregate);
+            if (stats == null) {
+                stats = new GnssMeasurementAggregateStats();
+                mGnssMeasAggregateStats.put(aggregate, stats);
+            }
+            return stats;
+        }
+    }
+
     /** Logs a user switched event. */
     public void logUserSwitched(int userIdFrom, int userIdTo) {
         addLog(new UserSwitchedEvent(userIdFrom, userIdTo));
@@ -221,6 +249,29 @@
         addLog(new LocationPowerSaveModeEvent(locationPowerSaveMode));
     }
 
+    /** Logs a new client registration for a GNSS Measurement. */
+    public void logGnssMeasurementClientRegistered(CallerIdentity identity,
+            GnssMeasurementRequest request) {
+        addLog(new GnssMeasurementClientRegisterEvent(true, identity, request));
+        getGnssMeasurementAggregateStats(identity).markRequestAdded(request.getIntervalMillis(),
+                request.isFullTracking());
+    }
+
+    /** Logs a new client unregistration for a GNSS Measurement. */
+    public void logGnssMeasurementClientUnregistered(CallerIdentity identity) {
+        addLog(new GnssMeasurementClientRegisterEvent(false, identity, null));
+        getGnssMeasurementAggregateStats(identity).markRequestRemoved();
+    }
+
+    /** Logs a GNSS measurement event deliver for a client. */
+    public void logGnssMeasurementsDelivered(int numGnssMeasurements,
+            CallerIdentity identity) {
+        synchronized (this) {
+            mLocationsLog.logDeliveredGnssMeasurements(numGnssMeasurements, identity);
+        }
+        getGnssMeasurementAggregateStats(identity).markGnssMeasurementDelivered();
+    }
+
     private void addLog(Object logEvent) {
         addLog(SystemClock.elapsedRealtime(), logEvent);
     }
@@ -528,6 +579,50 @@
         }
     }
 
+    private static final class GnssMeasurementClientRegisterEvent{
+
+        private final boolean mRegistered;
+        private final CallerIdentity mIdentity;
+        @Nullable
+        private final GnssMeasurementRequest mGnssMeasurementRequest;
+
+        GnssMeasurementClientRegisterEvent(boolean registered,
+                CallerIdentity identity, @Nullable GnssMeasurementRequest measurementRequest) {
+            mRegistered = registered;
+            mIdentity = identity;
+            mGnssMeasurementRequest = measurementRequest;
+        }
+
+        @Override
+        public String toString() {
+            if (mRegistered) {
+                return "gnss measurements +registration " + mIdentity + " -> "
+                        + mGnssMeasurementRequest;
+            } else {
+                return "gnss measurements -registration " + mIdentity;
+            }
+        }
+    }
+
+    private static final class GnssMeasurementDeliverEvent {
+
+        private final int mNumGnssMeasurements;
+        @Nullable
+        private final CallerIdentity mIdentity;
+
+        GnssMeasurementDeliverEvent(int numGnssMeasurements,
+                @Nullable CallerIdentity identity) {
+            mNumGnssMeasurements = numGnssMeasurements;
+            mIdentity = identity;
+        }
+
+        @Override
+        public String toString() {
+            return "gnss measurements delivered GnssMeasurements[" + mNumGnssMeasurements + "]"
+                    + " to " + mIdentity;
+        }
+    }
+
     private static final class LocationsEventLog extends LocalEventLog<Object> {
 
         LocationsEventLog(int size) {
@@ -538,6 +633,11 @@
             addLog(new ProviderReceiveLocationEvent(provider, numLocations));
         }
 
+        public void logDeliveredGnssMeasurements(int numGnssMeasurements,
+                CallerIdentity identity) {
+            addLog(new GnssMeasurementDeliverEvent(numGnssMeasurements, identity));
+        }
+
         public void logProviderDeliveredLocations(String provider, int numLocations,
                 CallerIdentity identity) {
             addLog(new ProviderDeliverLocationEvent(provider, numLocations, identity));
@@ -668,4 +768,89 @@
             }
         }
     }
+
+    /**
+     * Aggregate statistics for GNSS measurements.
+     */
+    public static final class GnssMeasurementAggregateStats {
+        @GuardedBy("this")
+        private int mAddedRequestCount;
+        @GuardedBy("this")
+        private int mReceivedMeasurementEventCount;
+        @GuardedBy("this")
+        private long mAddedTimeTotalMs;
+        @GuardedBy("this")
+        private long mAddedTimeLastUpdateRealtimeMs;
+        @GuardedBy("this")
+        private long mFastestIntervalMs = Long.MAX_VALUE;
+        @GuardedBy("this")
+        private long mSlowestIntervalMs = 0;
+        @GuardedBy("this")
+        private boolean mHasFullTracking;
+        @GuardedBy("this")
+        private boolean mHasDutyCycling;
+
+        GnssMeasurementAggregateStats() {
+        }
+
+        synchronized void markRequestAdded(long intervalMillis, boolean fullTracking) {
+            if (mAddedRequestCount++ == 0) {
+                mAddedTimeLastUpdateRealtimeMs = SystemClock.elapsedRealtime();
+            }
+            if (fullTracking) {
+                mHasFullTracking = true;
+            } else {
+                mHasDutyCycling = true;
+            }
+            mFastestIntervalMs = min(intervalMillis, mFastestIntervalMs);
+            mSlowestIntervalMs = max(intervalMillis, mSlowestIntervalMs);
+        }
+
+        synchronized void markRequestRemoved() {
+            updateTotals();
+            --mAddedRequestCount;
+            Preconditions.checkState(mAddedRequestCount >= 0);
+        }
+
+        synchronized void markGnssMeasurementDelivered() {
+            mReceivedMeasurementEventCount++;
+        }
+
+        public synchronized void updateTotals() {
+            if (mAddedRequestCount > 0) {
+                long realtimeMs = SystemClock.elapsedRealtime();
+                mAddedTimeTotalMs += realtimeMs - mAddedTimeLastUpdateRealtimeMs;
+                mAddedTimeLastUpdateRealtimeMs = realtimeMs;
+            }
+        }
+
+        @Override
+        public synchronized String toString() {
+            return "min/max interval = "
+                    + intervalToString(mFastestIntervalMs) + "/"
+                    + intervalToString(mSlowestIntervalMs)
+                    + ", total duration = " + formatDuration(mAddedTimeTotalMs)
+                    + ", tracking mode = " + trackingModeToString() + ", GNSS measurement events = "
+                    + mReceivedMeasurementEventCount;
+        }
+
+        private static String intervalToString(long intervalMs) {
+            if (intervalMs == GnssMeasurementRequest.PASSIVE_INTERVAL) {
+                return "passive";
+            } else {
+                return MILLISECONDS.toSeconds(intervalMs) + "s";
+            }
+        }
+
+        @GuardedBy("this")
+        private String trackingModeToString() {
+            if (mHasFullTracking && mHasDutyCycling) {
+                return "mixed tracking mode";
+            } else if (mHasFullTracking) {
+                return "always full-tracking";
+            } else {
+                return "always duty-cycling";
+            }
+        }
+    }
 }
diff --git a/services/core/java/com/android/server/location/gnss/GnssMeasurementsProvider.java b/services/core/java/com/android/server/location/gnss/GnssMeasurementsProvider.java
index 041f11d..d02b6f4 100644
--- a/services/core/java/com/android/server/location/gnss/GnssMeasurementsProvider.java
+++ b/services/core/java/com/android/server/location/gnss/GnssMeasurementsProvider.java
@@ -18,6 +18,7 @@
 
 import static android.app.AppOpsManager.OP_MONITOR_HIGH_POWER_LOCATION;
 
+import static com.android.server.location.eventlog.LocationEventLog.EVENT_LOG;
 import static com.android.server.location.gnss.GnssManagerService.D;
 import static com.android.server.location.gnss.GnssManagerService.TAG;
 
@@ -62,11 +63,17 @@
         @Override
         protected void onRegister() {
             super.onRegister();
-
+            EVENT_LOG.logGnssMeasurementClientRegistered(getIdentity(), getRequest());
             executeOperation(listener -> listener.onStatusChanged(
                     GnssMeasurementsEvent.Callback.STATUS_READY));
         }
 
+        @Override
+        protected void onUnregister() {
+            EVENT_LOG.logGnssMeasurementClientUnregistered(getIdentity());
+            super.onUnregister();
+        }
+
         @Nullable
         @Override
         protected void onActive() {
@@ -250,6 +257,8 @@
         deliverToListeners(registration -> {
             if (mAppOpsHelper.noteOpNoThrow(AppOpsManager.OP_FINE_LOCATION,
                     registration.getIdentity())) {
+                EVENT_LOG.logGnssMeasurementsDelivered(event.getMeasurements().size(),
+                        registration.getIdentity());
                 return listener -> listener.onGnssMeasurementsReceived(event);
             } else {
                 return null;
diff --git a/services/core/java/com/android/server/location/gnss/NetworkTimeHelper.java b/services/core/java/com/android/server/location/gnss/NetworkTimeHelper.java
index f5114b7..01c108b 100644
--- a/services/core/java/com/android/server/location/gnss/NetworkTimeHelper.java
+++ b/services/core/java/com/android/server/location/gnss/NetworkTimeHelper.java
@@ -37,7 +37,7 @@
      * a platform bug. This switch will be removed in a future release. If there are problems with
      * the new impl we'd like to hear about them.
      */
-    static final boolean USE_TIME_DETECTOR_IMPL = false;
+    static final boolean USE_TIME_DETECTOR_IMPL = true;
 
     /**
      * The callback interface used by {@link NetworkTimeHelper} to report the time to {@link
diff --git a/services/core/java/com/android/server/location/injector/EmergencyHelper.java b/services/core/java/com/android/server/location/injector/EmergencyHelper.java
index be4bf50..10cf714 100644
--- a/services/core/java/com/android/server/location/injector/EmergencyHelper.java
+++ b/services/core/java/com/android/server/location/injector/EmergencyHelper.java
@@ -16,14 +16,55 @@
 
 package com.android.server.location.injector;
 
+import java.util.concurrent.CopyOnWriteArrayList;
+
 /**
  * Provides helpers for emergency sessions.
  */
 public abstract class EmergencyHelper {
 
+    private final CopyOnWriteArrayList<EmergencyStateChangedListener> mListeners;
+
+    protected EmergencyHelper() {
+        mListeners = new CopyOnWriteArrayList<>();
+    }
+
+    /**
+     * Listener for emergency state changes.
+     */
+    public interface EmergencyStateChangedListener {
+        /**
+         * Called when state changes.
+         */
+        void onStateChanged();
+    }
+
     /**
      * Returns true if the device is in an emergency session, or if an emergency session ended
      * within the given extension time.
      */
     public abstract boolean isInEmergency(long extensionTimeMs);
+
+    /**
+     * Add a listener for changes to the emergency location state.
+     */
+    public void addOnEmergencyStateChangedListener(EmergencyStateChangedListener listener) {
+        mListeners.add(listener);
+    }
+
+    /**
+     * Remove a listener for changes to the emergency location state.
+     */
+    public void removeOnEmergencyStateChangedListener(EmergencyStateChangedListener listener) {
+        mListeners.remove(listener);
+    }
+
+    /**
+     * Notify listeners for emergency state of state change
+     */
+    protected final void dispatchEmergencyStateChanged() {
+        for (EmergencyStateChangedListener listener : mListeners) {
+            listener.onStateChanged();
+        }
+    }
 }
diff --git a/services/core/java/com/android/server/location/injector/Injector.java b/services/core/java/com/android/server/location/injector/Injector.java
index b2c8672..4a0c4b2 100644
--- a/services/core/java/com/android/server/location/injector/Injector.java
+++ b/services/core/java/com/android/server/location/injector/Injector.java
@@ -16,13 +16,11 @@
 
 package com.android.server.location.injector;
 
-import com.android.internal.annotations.VisibleForTesting;
 import com.android.server.location.settings.LocationSettings;
 
 /**
  * Injects various location dependencies so that they may be controlled by tests.
  */
-@VisibleForTesting
 public interface Injector {
 
     /** Returns a UserInfoHelper. */
diff --git a/services/core/java/com/android/server/location/injector/LocationUsageLogger.java b/services/core/java/com/android/server/location/injector/LocationUsageLogger.java
index a9701b3..9319e89 100644
--- a/services/core/java/com/android/server/location/injector/LocationUsageLogger.java
+++ b/services/core/java/com/android/server/location/injector/LocationUsageLogger.java
@@ -129,6 +129,13 @@
         FrameworkStatsLog.write(FrameworkStatsLog.LOCATION_ENABLED_STATE_CHANGED, enabled);
     }
 
+    /**
+     * Log emergency location state change event
+     */
+    public synchronized void logEmergencyStateChanged(boolean isInEmergency) {
+        FrameworkStatsLog.write(FrameworkStatsLog.EMERGENCY_STATE_CHANGED, isInEmergency);
+    }
+
     private static int bucketizeProvider(String provider) {
         if (LocationManager.NETWORK_PROVIDER.equals(provider)) {
             return LocationStatsEnums.PROVIDER_NETWORK;
diff --git a/services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java b/services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java
index 1fb00ef..c772e08 100644
--- a/services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java
+++ b/services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java
@@ -27,6 +27,7 @@
 import android.telephony.TelephonyManager;
 import android.util.Log;
 
+import com.android.internal.telephony.TelephonyIntents;
 import com.android.server.FgThread;
 
 import java.util.Objects;
@@ -73,12 +74,25 @@
                     try {
                         mIsInEmergencyCall = mTelephonyManager.isEmergencyNumber(
                                 intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER));
+                        dispatchEmergencyStateChanged();
                     } catch (IllegalStateException e) {
                         Log.w(TAG, "Failed to call TelephonyManager.isEmergencyNumber().", e);
                     }
                 }
             }
         }, new IntentFilter(Intent.ACTION_NEW_OUTGOING_CALL));
+
+        mContext.registerReceiver(new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                if (!TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED.equals(
+                        intent.getAction())) {
+                    return;
+                }
+
+                dispatchEmergencyStateChanged();
+            }
+        }, new IntentFilter(TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED));
     }
 
     @Override
@@ -108,6 +122,7 @@
                     if (mIsInEmergencyCall) {
                         mEmergencyCallEndRealtimeMs = SystemClock.elapsedRealtime();
                         mIsInEmergencyCall = false;
+                        dispatchEmergencyStateChanged();
                     }
                 }
             }
diff --git a/services/core/java/com/android/server/location/provider/LocationProviderManager.java b/services/core/java/com/android/server/location/provider/LocationProviderManager.java
index 925ab65..a5a1351 100644
--- a/services/core/java/com/android/server/location/provider/LocationProviderManager.java
+++ b/services/core/java/com/android/server/location/provider/LocationProviderManager.java
@@ -64,6 +64,7 @@
 import android.location.LocationManagerInternal.ProviderEnabledListener;
 import android.location.LocationRequest;
 import android.location.LocationResult;
+import android.location.altitude.AltitudeConverter;
 import android.location.provider.IProviderRequestListener;
 import android.location.provider.ProviderProperties;
 import android.location.provider.ProviderRequest;
@@ -81,6 +82,7 @@
 import android.os.SystemClock;
 import android.os.UserHandle;
 import android.os.WorkSource;
+import android.provider.DeviceConfig;
 import android.stats.location.LocationStatsEnums;
 import android.text.TextUtils;
 import android.util.ArraySet;
@@ -94,6 +96,7 @@
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.util.Preconditions;
 import com.android.server.FgThread;
+import com.android.server.IoThread;
 import com.android.server.LocalServices;
 import com.android.server.location.LocationPermissions;
 import com.android.server.location.LocationPermissions.PermissionLevel;
@@ -122,6 +125,7 @@
 import com.android.server.location.settings.LocationUserSettings;
 
 import java.io.FileDescriptor;
+import java.io.IOException;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
@@ -1441,6 +1445,10 @@
     @GuardedBy("mMultiplexerLock")
     @Nullable private StateChangedListener mStateChangedListener;
 
+    /** Enables missing MSL altitudes to be added on behalf of the provider. */
+    private final AltitudeConverter mAltitudeConverter = new AltitudeConverter();
+    private volatile boolean mIsAltitudeConverterIdle = true;
+
     public LocationProviderManager(Context context, Injector injector,
             String name, @Nullable PassiveLocationProviderManager passiveManager) {
         this(context, injector, name, passiveManager, Collections.emptyList());
@@ -2512,33 +2520,18 @@
     @GuardedBy("mMultiplexerLock")
     @Override
     public void onReportLocation(LocationResult locationResult) {
-        LocationResult filtered;
+        LocationResult processed;
         if (mPassiveManager != null) {
-            filtered = locationResult.filter(location -> {
-                if (!location.isMock()) {
-                    if (location.getLatitude() == 0 && location.getLongitude() == 0) {
-                        Log.e(TAG, "blocking 0,0 location from " + mName + " provider");
-                        return false;
-                    }
-                }
-
-                if (!location.isComplete()) {
-                    Log.e(TAG, "blocking incomplete location from " + mName + " provider");
-                    return false;
-                }
-
-                return true;
-            });
-
-            if (filtered == null) {
+            processed = processReportedLocation(locationResult);
+            if (processed == null) {
                 return;
             }
 
             // don't log location received for passive provider because it's spammy
-            EVENT_LOG.logProviderReceivedLocations(mName, filtered.size());
+            EVENT_LOG.logProviderReceivedLocations(mName, processed.size());
         } else {
-            // passive provider should get already filtered results as input
-            filtered = locationResult;
+            // passive provider should get already processed results as input
+            processed = locationResult;
         }
 
         // check for non-monotonic locations if we're not the passive manager. the passive manager
@@ -2554,20 +2547,78 @@
         }
 
         // update last location
-        setLastLocation(filtered.getLastLocation(), UserHandle.USER_ALL);
+        setLastLocation(processed.getLastLocation(), UserHandle.USER_ALL);
 
         // attempt listener delivery
         deliverToListeners(registration -> {
-            return registration.acceptLocationChange(filtered);
+            return registration.acceptLocationChange(processed);
         });
 
         // notify passive provider
         if (mPassiveManager != null) {
-            mPassiveManager.updateLocation(filtered);
+            mPassiveManager.updateLocation(processed);
         }
     }
 
     @GuardedBy("mMultiplexerLock")
+    @Nullable
+    private LocationResult processReportedLocation(LocationResult locationResult) {
+        LocationResult processed = locationResult.filter(location -> {
+            if (!location.isMock()) {
+                if (location.getLatitude() == 0 && location.getLongitude() == 0) {
+                    Log.e(TAG, "blocking 0,0 location from " + mName + " provider");
+                    return false;
+                }
+            }
+
+            if (!location.isComplete()) {
+                Log.e(TAG, "blocking incomplete location from " + mName + " provider");
+                return false;
+            }
+
+            return true;
+        });
+        if (processed == null) {
+            return null;
+        }
+
+        // Attempt to add a missing MSL altitude on behalf of the provider.
+        if (DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_LOCATION,
+                "enable_location_provider_manager_msl", true)) {
+            return processed.map(location -> {
+                if (!location.hasMslAltitude() && location.hasAltitude()) {
+                    try {
+                        Location locationCopy = new Location(location);
+                        if (mAltitudeConverter.addMslAltitudeToLocation(locationCopy)) {
+                            return locationCopy;
+                        }
+                        // Only queue up one IO thread runnable.
+                        if (mIsAltitudeConverterIdle) {
+                            mIsAltitudeConverterIdle = false;
+                            IoThread.getExecutor().execute(() -> {
+                                try {
+                                    // Results added to the location copy are essentially discarded.
+                                    // We only rely on the side effect of loading altitude assets
+                                    // into the converter's memory cache.
+                                    mAltitudeConverter.addMslAltitudeToLocation(mContext,
+                                            locationCopy);
+                                } catch (IOException e) {
+                                    Log.e(TAG, "not loading MSL altitude assets: " + e);
+                                }
+                                mIsAltitudeConverterIdle = true;
+                            });
+                        }
+                    } catch (IllegalArgumentException e) {
+                        Log.e(TAG, "not adding MSL altitude to location: " + e);
+                    }
+                }
+                return location;
+            });
+        }
+        return processed;
+    }
+
+    @GuardedBy("mMultiplexerLock")
     private void onUserStarted(int userId) {
         if (userId == UserHandle.USER_NULL) {
             return;
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java
index 20f0697..be7067d 100644
--- a/services/core/java/com/android/server/locksettings/LockSettingsService.java
+++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java
@@ -2196,17 +2196,6 @@
                 // credential has matched
                 mBiometricDeferredQueue.addPendingLockoutResetForUser(userId,
                         authResult.syntheticPassword.deriveGkPassword());
-
-                // perform verifyChallenge with synthetic password which generates the real GK auth
-                // token and response for the current user
-                response = mSpManager.verifyChallenge(getGateKeeperService(),
-                        authResult.syntheticPassword, 0L /* challenge */, userId);
-                if (response.getResponseCode() != VerifyCredentialResponse.RESPONSE_OK) {
-                    // This shouldn't really happen: the unwrapping of SP succeeds, but SP doesn't
-                    // match the recorded GK password handle.
-                    Slog.wtf(TAG, "verifyChallenge with SP failed.");
-                    return VerifyCredentialResponse.ERROR;
-                }
             }
         }
         if (response.getResponseCode() == VerifyCredentialResponse.RESPONSE_OK) {
@@ -2840,7 +2829,7 @@
      *
      * Also maintains the invariants described in {@link SyntheticPasswordManager} by
      * setting/clearing the protection (by the SP) on the user's auth-bound Keystore keys when the
-     * LSKF is added/removed, respectively.  If the new LSKF is nonempty, then the Gatekeeper auth
+     * LSKF is added/removed, respectively.  If an LSKF is being added, then the Gatekeeper auth
      * token is also refreshed.
      */
     @GuardedBy("mSpManager")
@@ -2857,9 +2846,7 @@
             // not needed by synchronizeUnifiedWorkChallengeForProfiles()
             profilePasswords = null;
 
-            if (mSpManager.hasSidForUser(userId)) {
-                mSpManager.verifyChallenge(getGateKeeperService(), sp, 0L, userId);
-            } else {
+            if (!mSpManager.hasSidForUser(userId)) {
                 mSpManager.newSidForUser(getGateKeeperService(), sp, userId);
                 mSpManager.verifyChallenge(getGateKeeperService(), sp, 0L, userId);
                 setKeystorePassword(sp.deriveKeyStorePassword(), userId);
diff --git a/services/core/java/com/android/server/media/MediaFeatureFlagManager.java b/services/core/java/com/android/server/media/MediaFeatureFlagManager.java
index 70ee38f..f555505 100644
--- a/services/core/java/com/android/server/media/MediaFeatureFlagManager.java
+++ b/services/core/java/com/android/server/media/MediaFeatureFlagManager.java
@@ -17,6 +17,8 @@
 package com.android.server.media;
 
 import android.annotation.StringDef;
+import android.app.ActivityThread;
+import android.app.Application;
 import android.provider.DeviceConfig;
 
 import java.lang.annotation.ElementType;
@@ -31,10 +33,13 @@
      */
     private static final String NAMESPACE_MEDIA_BETTER_TOGETHER = "media_better_together";
 
-    @StringDef(prefix = "FEATURE_", value = {
-            FEATURE_AUDIO_STRATEGIES_IS_USING_LEGACY_CONTROLLER
-    })
-    @Target({ ElementType.TYPE_USE, ElementType.TYPE_PARAMETER })
+    @StringDef(
+            prefix = "FEATURE_",
+            value = {
+                FEATURE_AUDIO_STRATEGIES_IS_USING_LEGACY_CONTROLLER,
+                FEATURE_SCANNING_MINIMUM_PACKAGE_IMPORTANCE
+            })
+    @Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
     @Retention(RetentionPolicy.SOURCE)
     /* package */ @interface MediaFeatureFlag {}
 
@@ -46,6 +51,13 @@
             FEATURE_AUDIO_STRATEGIES_IS_USING_LEGACY_CONTROLLER =
             "BluetoothRouteController__enable_legacy_bluetooth_routes_controller";
 
+    /**
+     * Whether to use IMPORTANCE_FOREGROUND (i.e. 100) or IMPORTANCE_FOREGROUND_SERVICE (i.e. 125)
+     * as the minimum package importance for scanning.
+     */
+    /* package */ static final @MediaFeatureFlag String
+            FEATURE_SCANNING_MINIMUM_PACKAGE_IMPORTANCE = "scanning_package_minimum_importance";
+
     private static final MediaFeatureFlagManager sInstance = new MediaFeatureFlagManager();
 
     private MediaFeatureFlagManager() {
@@ -63,4 +75,29 @@
     public boolean getBoolean(@MediaFeatureFlag String key, boolean defaultValue) {
         return DeviceConfig.getBoolean(NAMESPACE_MEDIA_BETTER_TOGETHER, key, defaultValue);
     }
+
+    /**
+     * Returns an int value from {@link DeviceConfig} from the system_time namespace, or {@code
+     * defaultValue} if there is no explicit value set.
+     */
+    public int getInt(@MediaFeatureFlag String key, int defaultValue) {
+        return DeviceConfig.getInt(NAMESPACE_MEDIA_BETTER_TOGETHER, key, defaultValue);
+    }
+
+    /**
+     * Adds a listener to react for changes in media feature flags values. Future calls to this
+     * method with the same listener will replace the old namespace and executor.
+     *
+     * @param onPropertiesChangedListener The listener to add.
+     */
+    public void addOnPropertiesChangedListener(
+            DeviceConfig.OnPropertiesChangedListener onPropertiesChangedListener) {
+        Application currentApplication = ActivityThread.currentApplication();
+        if (currentApplication != null) {
+            DeviceConfig.addOnPropertiesChangedListener(
+                    NAMESPACE_MEDIA_BETTER_TOGETHER,
+                    currentApplication.getMainExecutor(),
+                    onPropertiesChangedListener);
+        }
+    }
 }
diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
index 2d3b97b..aea5b1a 100644
--- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
+++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
@@ -24,12 +24,12 @@
 import static android.media.MediaRouter2Utils.getProviderId;
 
 import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
+import static com.android.server.media.MediaFeatureFlagManager.FEATURE_SCANNING_MINIMUM_PACKAGE_IMPORTANCE;
 
 import android.Manifest;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.ActivityManager;
-import android.app.ActivityThread;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
@@ -92,15 +92,11 @@
     //       in MediaRouter2, remove this constant and replace the usages with the real request IDs.
     private static final long DUMMY_REQUEST_ID = -1;
 
-    private static final String MEDIA_BETTER_TOGETHER_NAMESPACE = "media_better_together";
-
-    private static final String KEY_SCANNING_PACKAGE_MINIMUM_IMPORTANCE =
-            "scanning_package_minimum_importance";
-
-    private static int sPackageImportanceForScanning = DeviceConfig.getInt(
-            MEDIA_BETTER_TOGETHER_NAMESPACE,
-            /* name */ KEY_SCANNING_PACKAGE_MINIMUM_IMPORTANCE,
-            /* defaultValue */ IMPORTANCE_FOREGROUND_SERVICE);
+    private static int sPackageImportanceForScanning =
+            MediaFeatureFlagManager.getInstance()
+                    .getInt(
+                            FEATURE_SCANNING_MINIMUM_PACKAGE_IMPORTANCE,
+                            IMPORTANCE_FOREGROUND_SERVICE);
 
     private final Context mContext;
     private final UserManagerInternal mUserManagerInternal;
@@ -156,9 +152,8 @@
 
         mContext.registerReceiver(mScreenOnOffReceiver, screenOnOffIntentFilter);
 
-        DeviceConfig.addOnPropertiesChangedListener(MEDIA_BETTER_TOGETHER_NAMESPACE,
-                ActivityThread.currentApplication().getMainExecutor(),
-                this::onDeviceConfigChange);
+        MediaFeatureFlagManager.getInstance()
+                .addOnPropertiesChangedListener(this::onDeviceConfigChange);
     }
 
     // Start of methods that implement MediaRouter2 operations.
@@ -1002,9 +997,11 @@
             return;
         }
 
-        Slog.i(TAG, TextUtils.formatSimple(
-                "setSessionVolumeWithRouter2 | router: %d, session: %s, volume: %d",
-                routerRecord.mRouterId,  uniqueSessionId, volume));
+        Slog.i(
+                TAG,
+                TextUtils.formatSimple(
+                        "setSessionVolumeWithRouter2 | router: %d, session: %s, volume: %d",
+                        routerRecord.mRouterId, uniqueSessionId, volume));
 
         routerRecord.mUserRecord.mHandler.sendMessage(
                 obtainMessage(UserHandler::setSessionVolumeOnHandler,
@@ -1021,9 +1018,11 @@
             return;
         }
 
-        Slog.i(TAG, TextUtils.formatSimple(
-                "releaseSessionWithRouter2 | router: %d, session: %s",
-                routerRecord.mRouterId,  uniqueSessionId));
+        Slog.i(
+                TAG,
+                TextUtils.formatSimple(
+                        "releaseSessionWithRouter2 | router: %d, session: %s",
+                        routerRecord.mRouterId, uniqueSessionId));
 
         routerRecord.mUserRecord.mHandler.sendMessage(
                 obtainMessage(UserHandler::releaseSessionOnHandler,
@@ -1100,8 +1099,11 @@
             // TODO: UserRecord <-> routerRecord, why do they reference each other?
             // How about removing mUserRecord from routerRecord?
             routerRecord.mUserRecord.mHandler.sendMessage(
-                    obtainMessage(UserHandler::notifyDiscoveryPreferenceChangedToManager,
-                        routerRecord.mUserRecord.mHandler, routerRecord, manager));
+                    obtainMessage(
+                            UserHandler::notifyDiscoveryPreferenceChangedToManager,
+                            routerRecord.mUserRecord.mHandler,
+                            routerRecord,
+                            manager));
         }
 
         userRecord.mHandler.sendMessage(
@@ -1381,9 +1383,10 @@
     // End of locked methods that are used by both MediaRouter2 and MediaRouter2Manager.
 
     private void onDeviceConfigChange(@NonNull DeviceConfig.Properties properties) {
-        sPackageImportanceForScanning = properties.getInt(
-                /* name */ KEY_SCANNING_PACKAGE_MINIMUM_IMPORTANCE,
-                /* defaultValue */ IMPORTANCE_FOREGROUND_SERVICE);
+        sPackageImportanceForScanning =
+                properties.getInt(
+                        /* name */ FEATURE_SCANNING_MINIMUM_PACKAGE_IMPORTANCE,
+                        /* defaultValue */ IMPORTANCE_FOREGROUND_SERVICE);
     }
 
     static long toUniqueRequestId(int requesterId, int originalRequestId) {
@@ -1734,10 +1737,10 @@
             }
             boolean isUidRelevant;
             synchronized (service.mLock) {
-                isUidRelevant = mUserRecord.mRouterRecords.stream().anyMatch(
-                        router -> router.mUid == uid)
-                        | mUserRecord.mManagerRecords.stream().anyMatch(
-                            manager -> manager.mUid == uid);
+                isUidRelevant =
+                        mUserRecord.mRouterRecords.stream().anyMatch(router -> router.mUid == uid)
+                                | mUserRecord.mManagerRecords.stream()
+                                        .anyMatch(manager -> manager.mUid == uid);
             }
             if (isUidRelevant) {
                 sendMessage(PooledLambda.obtainMessage(
@@ -2401,7 +2404,7 @@
         private static void notifyRoutesUpdatedToRouterRecords(
                 @NonNull List<RouterRecord> routerRecords,
                 @NonNull List<MediaRoute2Info> routes) {
-            for (RouterRecord routerRecord: routerRecords) {
+            for (RouterRecord routerRecord : routerRecords) {
                 List<MediaRoute2Info> filteredRoutes = getFilteredRoutesForPackageName(routes,
                         routerRecord.mPackageName);
                 try {
@@ -2413,15 +2416,15 @@
         }
 
         /**
-         * Filters list of routes to return only public routes or routes provided by
-         * the same package name or routes containing this package name in its allow list.
+         * Filters list of routes to return only public routes or routes provided by the same
+         * package name or routes containing this package name in its allow list.
+         *
          * @param routes initial list of routes to be filtered.
          * @param packageName router's package name to filter routes for it.
          * @return only the routes that this package name is allowed to see.
          */
         private static List<MediaRoute2Info> getFilteredRoutesForPackageName(
-                @NonNull List<MediaRoute2Info> routes,
-                @NonNull String packageName) {
+                @NonNull List<MediaRoute2Info> routes, @NonNull String packageName) {
             List<MediaRoute2Info> filteredRoutes = new ArrayList<>();
             for (MediaRoute2Info route : routes) {
                 if (route.isVisibleTo(packageName)) {
@@ -2610,11 +2613,15 @@
                             .map(record -> record.mDiscoveryPreference)
                             .collect(Collectors.toList());
                 } else {
-                    discoveryPreferences = routerRecords.stream().filter(record ->
-                            service.mActivityManager.getPackageImportance(record.mPackageName)
-                                    <= sPackageImportanceForScanning)
-                            .map(record -> record.mDiscoveryPreference)
-                            .collect(Collectors.toList());
+                    discoveryPreferences =
+                            routerRecords.stream()
+                                    .filter(
+                                            record ->
+                                                    service.mActivityManager.getPackageImportance(
+                                                                    record.mPackageName)
+                                                            <= sPackageImportanceForScanning)
+                                    .map(record -> record.mDiscoveryPreference)
+                                    .collect(Collectors.toList());
                 }
             }
 
@@ -2659,6 +2666,7 @@
             return null;
         }
     }
+
     static final class SessionCreationRequest {
         public final RouterRecord mRouterRecord;
         public final long mUniqueRequestId;
diff --git a/services/core/java/com/android/server/media/projection/TEST_MAPPING b/services/core/java/com/android/server/media/projection/TEST_MAPPING
index 4324930..a792498 100644
--- a/services/core/java/com/android/server/media/projection/TEST_MAPPING
+++ b/services/core/java/com/android/server/media/projection/TEST_MAPPING
@@ -13,20 +13,6 @@
           "exclude-annotation": "org.junit.Ignore"
         }
       ]
-    },
-    {
-      "name": "CtsMediaProjectionTestCases",
-      "options": [
-        {
-          "exclude-annotation": "android.platform.test.annotations.FlakyTest"
-        },
-        {
-          "exclude-annotation": "androidx.test.filters.FlakyTest"
-        },
-        {
-          "exclude-annotation": "org.junit.Ignore"
-        }
-      ]
     }
   ]
 }
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index d1d6f5f..1d6ba60 100755
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -4331,6 +4331,7 @@
             return getActiveNotificationsWithAttribution(callingPkg, null);
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_NOTIFICATIONS)
         /**
          * System-only API for getting a list of current (i.e. not cleared) notifications.
          *
@@ -4341,9 +4342,7 @@
         public StatusBarNotification[] getActiveNotificationsWithAttribution(String callingPkg,
                 String callingAttributionTag) {
             // enforce() will ensure the calling uid has the correct permission
-            getContext().enforceCallingOrSelfPermission(
-                    android.Manifest.permission.ACCESS_NOTIFICATIONS,
-                    "NotificationManagerService.getActiveNotifications");
+            getActiveNotificationsWithAttribution_enforcePermission();
 
             ArrayList<StatusBarNotification> tmp = new ArrayList<>();
             int uid = Binder.getCallingUid();
@@ -4459,6 +4458,7 @@
                     includeSnoozed);
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_NOTIFICATIONS)
         /**
          * System-only API for getting a list of recent (cleared, no longer shown) notifications.
          */
@@ -4467,9 +4467,7 @@
         public StatusBarNotification[] getHistoricalNotificationsWithAttribution(String callingPkg,
                 String callingAttributionTag, int count, boolean includeSnoozed) {
             // enforce() will ensure the calling uid has the correct permission
-            getContext().enforceCallingOrSelfPermission(
-                    android.Manifest.permission.ACCESS_NOTIFICATIONS,
-                    "NotificationManagerService.getHistoricalNotifications");
+            getHistoricalNotificationsWithAttribution_enforcePermission();
 
             StatusBarNotification[] tmp = null;
             int uid = Binder.getCallingUid();
@@ -4485,6 +4483,7 @@
             return tmp;
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_NOTIFICATIONS)
         /**
          * System-only API for getting a list of historical notifications. May contain multiple days
          * of notifications.
@@ -4495,9 +4494,7 @@
         public NotificationHistory getNotificationHistory(String callingPkg,
                 String callingAttributionTag) {
             // enforce() will ensure the calling uid has the correct permission
-            getContext().enforceCallingOrSelfPermission(
-                    android.Manifest.permission.ACCESS_NOTIFICATIONS,
-                    "NotificationManagerService.getNotificationHistory");
+            getNotificationHistory_enforcePermission();
             int uid = Binder.getCallingUid();
 
             // noteOp will check to make sure the callingPkg matches the uid
diff --git a/services/core/java/com/android/server/pm/AppsFilterLocked.java b/services/core/java/com/android/server/pm/AppsFilterLocked.java
index 29bb14e..e29f2b9 100644
--- a/services/core/java/com/android/server/pm/AppsFilterLocked.java
+++ b/services/core/java/com/android/server/pm/AppsFilterLocked.java
@@ -28,21 +28,28 @@
     /**
      * The following locks guard the accesses for the list/set class members
      */
-    protected final Object mForceQueryableLock = new Object();
-    protected final Object mQueriesViaPackageLock = new Object();
-    protected final Object mQueriesViaComponentLock = new Object();
+    protected final PackageManagerTracedLock mForceQueryableLock =
+            new PackageManagerTracedLock();
+    protected final PackageManagerTracedLock mQueriesViaPackageLock =
+            new PackageManagerTracedLock();
+    protected final PackageManagerTracedLock mQueriesViaComponentLock =
+            new PackageManagerTracedLock();
     /**
      * This lock covers both {@link #mImplicitlyQueryable} and {@link #mRetainedImplicitlyQueryable}
      */
-    protected final Object mImplicitlyQueryableLock = new Object();
-    protected final Object mQueryableViaUsesLibraryLock = new Object();
-    protected final Object mProtectedBroadcastsLock = new Object();
-    protected final Object mQueryableViaUsesPermissionLock = new Object();
+    protected final PackageManagerTracedLock mImplicitlyQueryableLock =
+        new PackageManagerTracedLock();
+    protected final PackageManagerTracedLock mQueryableViaUsesLibraryLock =
+        new PackageManagerTracedLock();
+    protected final PackageManagerTracedLock mProtectedBroadcastsLock =
+        new PackageManagerTracedLock();
+    protected final PackageManagerTracedLock mQueryableViaUsesPermissionLock =
+        new PackageManagerTracedLock();
 
     /**
      * Guards the access for {@link AppsFilterBase#mShouldFilterCache};
      */
-    protected final Object mCacheLock = new Object();
+    protected final PackageManagerTracedLock mCacheLock = new PackageManagerTracedLock();
 
     @Override
     protected boolean isForceQueryable(int appId) {
diff --git a/services/core/java/com/android/server/pm/Computer.java b/services/core/java/com/android/server/pm/Computer.java
index 9748aba..1e9a15d 100644
--- a/services/core/java/com/android/server/pm/Computer.java
+++ b/services/core/java/com/android/server/pm/Computer.java
@@ -60,7 +60,6 @@
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
-import java.util.Collection;
 import java.util.List;
 import java.util.Set;
 
@@ -679,5 +678,5 @@
     UserInfo[] getUserInfos();
 
     @NonNull
-    Collection<SharedUserSetting> getAllSharedUsers();
+    ArrayMap<String, ? extends SharedUserApi> getSharedUsers();
 }
diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java
index 1aa1fd1..561d4da 100644
--- a/services/core/java/com/android/server/pm/ComputerEngine.java
+++ b/services/core/java/com/android/server/pm/ComputerEngine.java
@@ -301,8 +301,8 @@
         }
 
         @NonNull
-        public Collection<SharedUserSetting> getAllSharedUsers() {
-            return mSettings.getAllSharedUsersLPw();
+        ArrayMap<String, ? extends SharedUserApi> getSharedUsers() {
+            return mSettings.getSharedUsersLocked().untrackedStorage();
         }
 
         @Nullable
@@ -5499,8 +5499,8 @@
     @Override
     public SparseArray<String> getAppsWithSharedUserIds() {
         final SparseArray<String> sharedUserIds = new SparseArray<>();
-        for (SharedUserSetting setting : mSettings.getAllSharedUsers()) {
-            sharedUserIds.put(UserHandle.getAppId(setting.mAppId), setting.name);
+        for (SharedUserApi sharedUser : mSettings.getSharedUsers().values()) {
+            sharedUserIds.put(UserHandle.getAppId(sharedUser.getAppId()), sharedUser.getName());
         }
         return sharedUserIds;
     }
@@ -5800,8 +5800,8 @@
 
     @Override
     @NonNull
-    public Collection<SharedUserSetting> getAllSharedUsers() {
-        return mSettings.getAllSharedUsers();
+    public ArrayMap<String, ? extends SharedUserApi> getSharedUsers() {
+        return mSettings.getSharedUsers();
     }
 
     @Override
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index f358ce7..c40895d 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -1297,9 +1297,10 @@
                 installReason, allowListedPermissions, statusReceiver);
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.INSTALL_PACKAGES)
     @Override
     public void setPermissionsResult(int sessionId, boolean accepted) {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACKAGES, TAG);
+        setPermissionsResult_enforcePermission();
 
         synchronized (mSessions) {
             PackageInstallerSession session = mSessions.get(sessionId);
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index 006d7c8..72a0b57 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -1148,8 +1148,13 @@
             info.userId = userId;
             info.installerPackageName = mInstallSource.mInstallerPackageName;
             info.installerAttributionTag = mInstallSource.mInstallerAttributionTag;
-            info.resolvedBaseCodePath = (mResolvedBaseFile != null) ?
-                    mResolvedBaseFile.getAbsolutePath() : null;
+            if (mContext.checkCallingOrSelfPermission(
+                    Manifest.permission.READ_INSTALLED_SESSION_PATHS)
+                            == PackageManager.PERMISSION_GRANTED && mResolvedBaseFile != null) {
+                info.resolvedBaseCodePath = mResolvedBaseFile.getAbsolutePath();
+            } else {
+                info.resolvedBaseCodePath = null;
+            }
             info.progress = progress;
             info.sealed = mSealed;
             info.isCommitted = isCommitted();
@@ -2754,11 +2759,6 @@
                         : PackageInstaller.ACTION_CONFIRM_INSTALL);
         intent.setPackage(mPm.getPackageInstallerPackageName());
         intent.putExtra(PackageInstaller.EXTRA_SESSION_ID, sessionId);
-        synchronized (mLock) {
-            intent.putExtra(PackageInstaller.EXTRA_RESOLVED_BASE_PATH,
-                    mResolvedBaseFile != null ? mResolvedBaseFile.getAbsolutePath() : null);
-        }
-
         sendOnUserActionRequired(mContext, target, sessionId, intent);
     }
 
@@ -4086,16 +4086,18 @@
         return params.installFlags;
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.USE_INSTALLER_V2)
     @Override
     public DataLoaderParamsParcel getDataLoaderParams() {
-        mContext.enforceCallingOrSelfPermission(Manifest.permission.USE_INSTALLER_V2, null);
+        getDataLoaderParams_enforcePermission();
         return params.dataLoaderParams != null ? params.dataLoaderParams.getData() : null;
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.USE_INSTALLER_V2)
     @Override
     public void addFile(int location, String name, long lengthBytes, byte[] metadata,
             byte[] signature) {
-        mContext.enforceCallingOrSelfPermission(Manifest.permission.USE_INSTALLER_V2, null);
+        addFile_enforcePermission();
         if (!isDataLoaderInstallation()) {
             throw new IllegalStateException(
                     "Cannot add files to non-data loader installation session.");
@@ -4126,9 +4128,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.USE_INSTALLER_V2)
     @Override
     public void removeFile(int location, String name) {
-        mContext.enforceCallingOrSelfPermission(Manifest.permission.USE_INSTALLER_V2, null);
+        removeFile_enforcePermission();
         if (!isDataLoaderInstallation()) {
             throw new IllegalStateException(
                     "Cannot add files to non-data loader installation session.");
diff --git a/services/core/java/com/android/server/pm/PackageManagerLocal.java b/services/core/java/com/android/server/pm/PackageManagerLocal.java
index 935c4dd..6266ef3 100644
--- a/services/core/java/com/android/server/pm/PackageManagerLocal.java
+++ b/services/core/java/com/android/server/pm/PackageManagerLocal.java
@@ -24,6 +24,7 @@
 import android.os.UserHandle;
 
 import com.android.server.pm.pkg.PackageState;
+import com.android.server.pm.pkg.SharedUserApi;
 
 import java.io.IOException;
 import java.lang.annotation.Retention;
@@ -150,6 +151,16 @@
         Map<String, PackageState> getPackageStates();
 
         /**
+         * Returns a map of all {@link SharedUserApi SharedUsers} on the device.
+         *
+         * @return Mapping of shared user name to {@link SharedUserApi}.
+         *
+         * @hide Pending API
+         */
+        @NonNull
+        Map<String, SharedUserApi> getSharedUsers();
+
+        /**
          * Returns a map of all disabled system {@link PackageState PackageStates} on the device.
          *
          * @return Mapping of package name to disabled system {@link PackageState}.
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index b5108af..8a17b98 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -189,6 +189,7 @@
 import com.android.modules.utils.TypedXmlPullParser;
 import com.android.modules.utils.TypedXmlSerializer;
 import com.android.permission.persistence.RuntimePermissionsPersistence;
+import com.android.permission.persistence.RuntimePermissionsState;
 import com.android.server.EventLogTags;
 import com.android.server.FgThread;
 import com.android.server.LocalManagerRegistry;
@@ -197,6 +198,7 @@
 import com.android.server.PackageWatchdog;
 import com.android.server.ServiceThread;
 import com.android.server.SystemConfig;
+import com.android.server.ThreadPriorityBooster;
 import com.android.server.Watchdog;
 import com.android.server.apphibernation.AppHibernationManagerInternal;
 import com.android.server.art.DexUseManagerLocal;
@@ -219,6 +221,7 @@
 import com.android.server.pm.parsing.pkg.ParsedPackage;
 import com.android.server.pm.permission.LegacyPermissionManagerInternal;
 import com.android.server.pm.permission.LegacyPermissionManagerService;
+import com.android.server.pm.permission.LegacyPermissionSettings;
 import com.android.server.pm.permission.PermissionManagerService;
 import com.android.server.pm.permission.PermissionManagerServiceInternal;
 import com.android.server.pm.pkg.AndroidPackage;
@@ -994,6 +997,32 @@
     private final DistractingPackageHelper mDistractingPackageHelper;
     private final StorageEventHelper mStorageEventHelper;
 
+    private static final boolean ENABLE_BOOST = false;
+
+    private static ThreadPriorityBooster sThreadPriorityBooster = new ThreadPriorityBooster(
+            Process.THREAD_PRIORITY_FOREGROUND, LockGuard.INDEX_PACKAGES);
+
+    /**
+     * Boost the priority of the thread before holding PM traced lock.
+     * @hide
+     */
+    public static void boostPriorityForPackageManagerTracedLockedSection() {
+        if (ENABLE_BOOST) {
+            sThreadPriorityBooster.boost();
+        }
+    }
+
+
+    /**
+     * Restore the priority of the thread after release the PM traced lock.
+     * @hide
+     */
+    public static void resetPriorityAfterPackageManagerTracedLockedSection() {
+        if (ENABLE_BOOST) {
+            sThreadPriorityBooster.reset();
+        }
+    }
+
     /**
      * Invalidate the package info cache, which includes updating the cached computer.
      * @hide
@@ -2393,13 +2422,6 @@
 
         mInjector.getSystemWrapper().enablePackageCaches();
 
-        // Now after opening every single application zip, make sure they
-        // are all flushed.  Not really needed, but keeps things nice and
-        // tidy.
-        t.traceBegin("GC");
-        VMRuntime.getRuntime().requestConcurrentGC();
-        t.traceEnd();
-
         // The initial scanning above does many calls into installd while
         // holding the mPackages lock, but we're mostly interested in yelling
         // once we have a booted system.
@@ -4688,11 +4710,11 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CLEAR_APP_USER_DATA)
         @Override
         public void clearApplicationUserData(final String packageName,
                 final IPackageDataObserver observer, final int userId) {
-            mContext.enforceCallingOrSelfPermission(
-                    android.Manifest.permission.CLEAR_APP_USER_DATA, null);
+            clearApplicationUserData_enforcePermission();
 
             final int callingUid = Binder.getCallingUid();
             final Computer snapshot = snapshotComputer();
@@ -4764,10 +4786,10 @@
             });
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL)
         @Override
         public void clearCrossProfileIntentFilters(int sourceUserId, String ownerPackage) {
-            mContext.enforceCallingOrSelfPermission(
-                    android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, null);
+            clearCrossProfileIntentFilters_enforcePermission();
             final int callingUid = Binder.getCallingUid();
             final Computer snapshot = snapshotComputer();
             enforceOwnerRights(snapshot, ownerPackage, callingUid);
@@ -4779,13 +4801,13 @@
             scheduleWritePackageRestrictions(sourceUserId);
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL)
         @Override
         public boolean removeCrossProfileIntentFilter(IntentFilter intentFilter,
                 String ownerPackage,
                 int sourceUserId,
                 int targetUserId, int flags) {
-            mContext.enforceCallingOrSelfPermission(
-                    android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, null);
+            removeCrossProfileIntentFilter_enforcePermission();
             final int callingUid = Binder.getCallingUid();
             enforceOwnerRights(snapshotComputer(), ownerPackage, callingUid);
             mUserManager.enforceCrossProfileIntentFilterAccess(sourceUserId, targetUserId,
@@ -4953,11 +4975,11 @@
         }
 
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CLEAR_APP_CACHE)
         @Override
         public void freeStorage(final String volumeUuid, final long freeStorageSize,
                 final @StorageManager.AllocateFlags int flags, final IntentSender pi) {
-            mContext.enforceCallingOrSelfPermission(
-                    android.Manifest.permission.CLEAR_APP_CACHE, TAG);
+            freeStorage_enforcePermission();
             mHandler.post(() -> {
                 boolean success = false;
                 try {
@@ -4980,11 +5002,11 @@
             });
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.CLEAR_APP_CACHE)
         @Override
         public void freeStorageAndNotify(final String volumeUuid, final long freeStorageSize,
                 final @StorageManager.AllocateFlags int flags, final IPackageDataObserver observer) {
-            mContext.enforceCallingOrSelfPermission(
-                    android.Manifest.permission.CLEAR_APP_CACHE, null);
+            freeStorageAndNotify_enforcePermission();
             mHandler.post(() -> {
                 boolean success = false;
                 try {
@@ -5069,10 +5091,10 @@
             return token;
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_INSTANT_APPS)
         @Override
         public String getInstantAppAndroidId(String packageName, int userId) {
-            mContext.enforceCallingOrSelfPermission(
-                    android.Manifest.permission.ACCESS_INSTANT_APPS, "getInstantAppAndroidId");
+            getInstantAppAndroidId_enforcePermission();
             final Computer snapshot = snapshotComputer();
             snapshot.enforceCrossUserPermission(Binder.getCallingUid(), userId,
                     true /* requireFullPermission */, false /* checkShell */,
@@ -5164,16 +5186,17 @@
             return getMimeGroupInternal(snapshot, packageName, mimeGroup);
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS)
         @Override
         public int getMoveStatus(int moveId) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS, null);
+            getMoveStatus_enforcePermission();
             return mMoveCallbacks.mLastStatus.get(moveId);
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.GET_APP_METADATA)
         @Override
         public ParcelFileDescriptor getAppMetadataFd(String packageName, int userId) {
-            mContext.enforceCallingOrSelfPermission(GET_APP_METADATA, "getAppMetadataFd");
+            getAppMetadataFd_enforcePermission();
             final int callingUid = Binder.getCallingUid();
             final Computer snapshot = snapshotComputer();
             final PackageStateInternal ps = snapshot.getPackageStateForInstalledAndFiltered(
@@ -5274,11 +5297,10 @@
                     packageNames, userId, callingUid);
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.PACKAGE_VERIFICATION_AGENT)
         @Override
         public VerifierDeviceIdentity getVerifierDeviceIdentity() throws RemoteException {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.PACKAGE_VERIFICATION_AGENT,
-                    "Only package verification agents can read the verifier device identity");
+            getVerifierDeviceIdentity_enforcePermission();
 
             synchronized (mLock) {
                 return mSettings.getVerifierDeviceIdentityLPw(mLiveComputer);
@@ -5300,10 +5322,10 @@
                     false /*direct*/, false /* retainOnUpdate */);
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.MAKE_UID_VISIBLE)
         @Override
         public void makeUidVisible(int recipientUid, int visibleUid) {
-            mContext.enforceCallingOrSelfPermission(
-                    android.Manifest.permission.MAKE_UID_VISIBLE, "makeUidVisible");
+            makeUidVisible_enforcePermission();
             final int callingUid = Binder.getCallingUid();
             final int recipientUserId = UserHandle.getUserId(recipientUid);
             final int visibleUserId = UserHandle.getUserId(visibleUid);
@@ -5402,9 +5424,10 @@
                     processName, uid, seinfo, pid);
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.MOVE_PACKAGE)
         @Override
         public int movePackage(final String packageName, final String volumeUuid) {
-            mContext.enforceCallingOrSelfPermission(Manifest.permission.MOVE_PACKAGE, null);
+            movePackage_enforcePermission();
 
             final int callingUid = Binder.getCallingUid();
             final UserHandle user = new UserHandle(UserHandle.getUserId(callingUid));
@@ -5423,9 +5446,10 @@
             return moveId;
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.MOVE_PACKAGE)
         @Override
         public int movePrimaryStorage(String volumeUuid) throws RemoteException {
-            mContext.enforceCallingOrSelfPermission(Manifest.permission.MOVE_PACKAGE, null);
+            movePrimaryStorage_enforcePermission();
 
             final int realMoveId = mNextMoveId.getAndIncrement();
             final Bundle extras = new Bundle();
@@ -5613,10 +5637,10 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS)
         @Override
         public void registerMoveCallback(IPackageMoveObserver callback) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS, null);
+            registerMoveCallback_enforcePermission();
             mMoveCallbacks.register(callback);
         }
 
@@ -5718,10 +5742,11 @@
                     userId, callingPackage);
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USERS)
         @Override
         public boolean setApplicationHiddenSettingAsUser(String packageName, boolean hidden,
                 int userId) {
-            mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USERS, null);
+            setApplicationHiddenSettingAsUser_enforcePermission();
             final int callingUid = Binder.getCallingUid();
             final Computer snapshot = snapshotComputer();
             snapshot.enforceCrossUserPermission(callingUid, userId, true /* requireFullPermission */,
@@ -5805,11 +5830,11 @@
             }
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.DELETE_PACKAGES)
         @Override
         public boolean setBlockUninstallForUser(String packageName, boolean blockUninstall,
                 int userId) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.DELETE_PACKAGES, null);
+            setBlockUninstallForUser_enforcePermission();
             final Computer snapshot = snapshotComputer();
             PackageStateInternal packageState = snapshot.getPackageStateInternal(packageName);
             if (packageState != null && packageState.getPkg() != null) {
@@ -5901,10 +5926,10 @@
             scheduleWritePackageRestrictions(userId);
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.WRITE_SECURE_SETTINGS)
         @Override
         public boolean setInstallLocation(int loc) {
-            mContext.enforceCallingOrSelfPermission(Manifest.permission.WRITE_SECURE_SETTINGS,
-                    null);
+            setInstallLocation_enforcePermission();
             if (getInstallLocation() == loc) {
                 return true;
             }
@@ -6215,17 +6240,18 @@
                     state.userState(userId).setSplashScreenTheme(themeId));
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.INSTALL_PACKAGES)
         @Override
         public void setUpdateAvailable(String packageName, boolean updateAvailable) {
-            mContext.enforceCallingOrSelfPermission(Manifest.permission.INSTALL_PACKAGES, null);
+            setUpdateAvailable_enforcePermission();
             commitPackageStateMutation(null, packageName, state ->
                     state.setUpdateAvailable(updateAvailable));
         }
 
+        @android.annotation.EnforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS)
         @Override
         public void unregisterMoveCallback(IPackageMoveObserver callback) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS, null);
+            unregisterMoveCallback_enforcePermission();
             mMoveCallbacks.unregister(callback);
         }
 
@@ -6766,6 +6792,30 @@
         }
 
         @Override
+        public LegacyPermissionSettings getLegacyPermissions() {
+            synchronized (mLock) {
+                return mSettings.mPermissions;
+            }
+        }
+
+        /**
+         * Read legacy permission states for permissions migration to new permission subsystem.
+         */
+        @Override
+        public RuntimePermissionsState getLegacyPermissionsState(int userId) {
+            synchronized (mLock) {
+                return mSettings.getLegacyPermissionsState(userId);
+            }
+        }
+
+        @Override
+        public int getLegacyPermissionsVersion(@UserIdInt int userId) {
+            synchronized (mLock) {
+                return mSettings.getDefaultRuntimePermissionsVersion(userId);
+            }
+        }
+
+        @Override
         @SuppressWarnings("GuardedBy")
         public boolean isPermissionUpgradeNeeded(int userId) {
             return mSettings.isPermissionUpgradeNeeded(userId);
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index e8f89d3..9ffe17c 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -110,6 +110,7 @@
 import com.android.server.pm.pkg.PackageStateInternal;
 import com.android.server.pm.pkg.PackageUserState;
 import com.android.server.pm.pkg.PackageUserStateInternal;
+import com.android.server.pm.pkg.SharedUserApi;
 import com.android.server.pm.pkg.SuspendParams;
 import com.android.server.pm.pkg.component.ParsedComponent;
 import com.android.server.pm.pkg.component.ParsedIntentInfo;
@@ -696,7 +697,7 @@
         mHandler = handler;
         mLock = lock;
         mAppIds = new AppIdSettingMap();
-        mPermissions = new LegacyPermissionSettings(lock);
+        mPermissions = new LegacyPermissionSettings();
         mRuntimePermissionsPersistence = new RuntimePermissionPersistence(
                 runtimePermissionsPersistence, new Consumer<Integer>() {
             @Override
@@ -867,6 +868,10 @@
         return s;
     }
 
+    WatchedArrayMap<String, ? extends SharedUserApi> getSharedUsersLocked() {
+        return mSharedUsers;
+    }
+
     Collection<SharedUserSetting> getAllSharedUsersLPw() {
         return mSharedUsers.values();
     }
@@ -3296,6 +3301,11 @@
                 mPackages, mSharedUsers, getUserRuntimePermissionsFile(userId));
     }
 
+    RuntimePermissionsState getLegacyPermissionsState(@UserIdInt int userId) {
+        return mRuntimePermissionsPersistence.getLegacyPermissionsState(
+                userId, mPackages, mSharedUsers);
+    }
+
     void applyDefaultPreferredAppsLPw(int userId) {
         // First pull data from any pre-installed apps.
         final PackageManagerInternal pmInternal =
@@ -5724,7 +5734,7 @@
                 legacyPermissionDataProvider,
                 @NonNull WatchedArrayMap<String, ? extends PackageStateInternal> packageStates,
                 @NonNull WatchedArrayMap<String, SharedUserSetting> sharedUsers,
-                @Nullable Handler pmHandler, @NonNull Object pmLock,
+                @Nullable Handler pmHandler, @NonNull PackageManagerTracedLock pmLock,
                 boolean sync) {
             synchronized (mLock) {
                 mAsyncHandler.removeMessages(userId);
@@ -5734,44 +5744,16 @@
             Runnable writer = () -> {
                 boolean isLegacyPermissionStateStale = mIsLegacyPermissionStateStale.getAndSet(
                         false);
+                Map<String, List<RuntimePermissionsState.PermissionState>> packagePermissions;
+                Map<String, List<RuntimePermissionsState.PermissionState>> sharedUserPermissions;
 
-                final Map<String, List<RuntimePermissionsState.PermissionState>>
-                        packagePermissions = new ArrayMap<>();
-                final Map<String, List<RuntimePermissionsState.PermissionState>>
-                        sharedUserPermissions = new ArrayMap<>();
                 synchronized (pmLock) {
                     if (sync || isLegacyPermissionStateStale) {
                         legacyPermissionDataProvider.writeLegacyPermissionStateTEMP();
                     }
 
-                    int packagesSize = packageStates.size();
-                    for (int i = 0; i < packagesSize; i++) {
-                        String packageName = packageStates.keyAt(i);
-                        PackageStateInternal packageState = packageStates.valueAt(i);
-                        if (!packageState.hasSharedUser()) {
-                            List<RuntimePermissionsState.PermissionState> permissions =
-                                    getPermissionsFromPermissionsState(
-                                            packageState.getLegacyPermissionState(), userId);
-                            if (permissions.isEmpty()
-                                    && !packageState.isInstallPermissionsFixed()) {
-                                // Storing an empty state means the package is known to the
-                                // system and its install permissions have been granted and fixed.
-                                // If this is not the case, we should not store anything.
-                                continue;
-                            }
-                            packagePermissions.put(packageName, permissions);
-                        }
-                    }
-
-                    final int sharedUsersSize = sharedUsers.size();
-                    for (int i = 0; i < sharedUsersSize; i++) {
-                        String sharedUserName = sharedUsers.keyAt(i);
-                        SharedUserSetting sharedUserSetting = sharedUsers.valueAt(i);
-                        List<RuntimePermissionsState.PermissionState> permissions =
-                                getPermissionsFromPermissionsState(
-                                        sharedUserSetting.getLegacyPermissionState(), userId);
-                        sharedUserPermissions.put(sharedUserName, permissions);
-                    }
+                    packagePermissions = getPackagePermissions(userId, packageStates);
+                    sharedUserPermissions = getShareUsersPermissions(userId, sharedUsers);
                 }
                 synchronized (mLock) {
                     int version = mVersions.get(userId, INITIAL_VERSION);
@@ -5799,6 +5781,68 @@
             }
         }
 
+        @NonNull
+        RuntimePermissionsState getLegacyPermissionsState(int userId,
+                @NonNull WatchedArrayMap<String, ? extends PackageStateInternal> packageStates,
+                @NonNull WatchedArrayMap<String, SharedUserSetting> sharedUsers) {
+            int version;
+            String fingerprint;
+            synchronized (mLock) {
+                version = mVersions.get(userId, INITIAL_VERSION);
+                fingerprint = mFingerprints.get(userId);
+            }
+
+            return new RuntimePermissionsState(
+                    version, fingerprint, getPackagePermissions(userId, packageStates),
+                    getShareUsersPermissions(userId, sharedUsers));
+        }
+
+        @NonNull
+        private Map<String, List<RuntimePermissionsState.PermissionState>> getPackagePermissions(
+                int userId,
+                @NonNull WatchedArrayMap<String, ? extends PackageStateInternal> packageStates) {
+            final Map<String, List<RuntimePermissionsState.PermissionState>>
+                    packagePermissions = new ArrayMap<>();
+
+            final int packagesSize = packageStates.size();
+            for (int i = 0; i < packagesSize; i++) {
+                String packageName = packageStates.keyAt(i);
+                PackageStateInternal packageState = packageStates.valueAt(i);
+                if (!packageState.hasSharedUser()) {
+                    List<RuntimePermissionsState.PermissionState> permissions =
+                            getPermissionsFromPermissionsState(
+                                    packageState.getLegacyPermissionState(), userId);
+                    if (permissions.isEmpty()
+                            && !packageState.isInstallPermissionsFixed()) {
+                        // Storing an empty state means the package is known to the
+                        // system and its install permissions have been granted and fixed.
+                        // If this is not the case, we should not store anything.
+                        continue;
+                    }
+                    packagePermissions.put(packageName, permissions);
+                }
+            }
+            return packagePermissions;
+        }
+
+        @NonNull
+        private Map<String, List<RuntimePermissionsState.PermissionState>> getShareUsersPermissions(
+                int userId, @NonNull WatchedArrayMap<String, SharedUserSetting> sharedUsers) {
+            final Map<String, List<RuntimePermissionsState.PermissionState>>
+                    sharedUserPermissions = new ArrayMap<>();
+
+            final int sharedUsersSize = sharedUsers.size();
+            for (int i = 0; i < sharedUsersSize; i++) {
+                String sharedUserName = sharedUsers.keyAt(i);
+                SharedUserSetting sharedUserSetting = sharedUsers.valueAt(i);
+                List<RuntimePermissionsState.PermissionState> permissions =
+                        getPermissionsFromPermissionsState(
+                                sharedUserSetting.getLegacyPermissionState(), userId);
+                sharedUserPermissions.put(sharedUserName, permissions);
+            }
+            return sharedUserPermissions;
+        }
+
         private void writePendingStates() {
             while (true) {
                 final RuntimePermissionsState runtimePermissions;
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 5f8efe2..af603e0 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -2260,7 +2260,7 @@
     @Override
     public boolean isRestricted(@UserIdInt int userId) {
         if (userId != UserHandle.getCallingUserId()) {
-            checkCreateUsersPermission("query isRestricted for user " + userId);
+            checkQueryOrCreateUsersPermission("query isRestricted for user " + userId);
         }
         synchronized (mUsersLock) {
             final UserInfo userInfo = getUserInfoLU(userId);
@@ -2481,41 +2481,58 @@
     @Override
     public boolean setUserEphemeral(@UserIdInt int userId, boolean enableEphemeral) {
         checkCreateUsersPermission("update ephemeral user flag");
-        UserData userToUpdate = null;
+        return enableEphemeral
+                ? UserManager.isRemoveResultSuccessful(setUserEphemeralUnchecked(userId))
+                : setUserNonEphemeralUnchecked(userId);
+    }
+
+    private boolean setUserNonEphemeralUnchecked(@UserIdInt int userId) {
         synchronized (mPackagesLock) {
+            final UserData userData;
             synchronized (mUsersLock) {
-                final UserData userData = mUsers.get(userId);
+                userData = mUsers.get(userId);
                 if (userData == null) {
-                    Slog.e(LOG_TAG, "User not found for setting ephemeral mode: u" + userId);
+                    Slog.e(LOG_TAG, TextUtils.formatSimple(
+                            "Cannot set user %d non-ephemeral, invalid user id provided.", userId));
                     return false;
                 }
-                boolean isEphemeralUser = (userData.info.flags & UserInfo.FLAG_EPHEMERAL) != 0;
-                boolean isEphemeralOnCreateUser =
-                        (userData.info.flags & UserInfo.FLAG_EPHEMERAL_ON_CREATE) != 0;
-                // when user is created in ephemeral mode via FLAG_EPHEMERAL
-                // its state cannot be changed to non ephemeral.
-                // FLAG_EPHEMERAL_ON_CREATE is used to keep track of this state
-                if (isEphemeralOnCreateUser && !enableEphemeral) {
-                    Slog.e(LOG_TAG, "Failed to change user state to non-ephemeral for user "
-                            + userId);
+                if (!userData.info.isEphemeral()) {
+                    return true;
+                }
+
+                if ((userData.info.flags & UserInfo.FLAG_EPHEMERAL_ON_CREATE) != 0) {
+                    // when user is created in ephemeral mode via FLAG_EPHEMERAL
+                    // its state cannot be changed to non-ephemeral.
+                    // FLAG_EPHEMERAL_ON_CREATE is used to keep track of this state
+                    Slog.e(LOG_TAG, TextUtils.formatSimple("User %d can not be changed to "
+                            + "non-ephemeral because it was set ephemeral on create.", userId));
                     return false;
                 }
-                if (isEphemeralUser != enableEphemeral) {
-                    if (enableEphemeral) {
-                        userData.info.flags |= UserInfo.FLAG_EPHEMERAL;
-                    } else {
-                        userData.info.flags &= ~UserInfo.FLAG_EPHEMERAL;
-                    }
-                    userToUpdate = userData;
-                }
             }
-            if (userToUpdate != null) {
-                writeUserLP(userToUpdate);
-            }
+            userData.info.flags &= ~UserInfo.FLAG_EPHEMERAL;
+            writeUserLP(userData);
         }
         return true;
     }
 
+    private @UserManager.RemoveResult int setUserEphemeralUnchecked(@UserIdInt int userId) {
+        synchronized (mPackagesLock) {
+            final UserData userData;
+            synchronized (mUsersLock) {
+                final int userRemovability = getUserRemovabilityLocked(userId, "set as ephemeral");
+                if (userRemovability != UserManager.REMOVE_RESULT_USER_IS_REMOVABLE) {
+                    return userRemovability;
+                }
+                userData = mUsers.get(userId);
+            }
+            userData.info.flags |= UserInfo.FLAG_EPHEMERAL;
+            writeUserLP(userData);
+        }
+        Slog.i(LOG_TAG, TextUtils.formatSimple(
+                "User %d is set ephemeral and will be removed on user switch or reboot.", userId));
+        return UserManager.REMOVE_RESULT_DEFERRED;
+    }
+
     @Override
     public void setUserIcon(@UserIdInt int userId, Bitmap bitmap) {
         try {
@@ -5523,23 +5540,37 @@
     }
 
     private boolean removeUserWithProfilesUnchecked(@UserIdInt int userId) {
-        UserInfo userInfo = getUserInfoNoChecks(userId);
-
-        if (userInfo == null) {
-            Slog.e(LOG_TAG, TextUtils.formatSimple(
-                    "Cannot remove user %d, invalid user id provided.", userId));
-            return false;
+        final UserData userData;
+        final boolean isProfile;
+        final IntArray profileIds;
+        synchronized (mUsersLock) {
+            final int userRemovability = getUserRemovabilityLocked(userId, "removed");
+            if (userRemovability != UserManager.REMOVE_RESULT_USER_IS_REMOVABLE) {
+                return UserManager.isRemoveResultSuccessful(userRemovability);
+            }
+            userData = mUsers.get(userId);
+            isProfile = userData.info.isProfile();
+            profileIds = isProfile ? null : getProfileIdsLU(userId, null, false);
         }
 
-        if (!userInfo.isProfile()) {
-            int[] profileIds = getProfileIds(userId, false);
-            for (int profileId : profileIds) {
+        if (!isProfile) {
+            Pair<Integer, Integer> currentAndTargetUserIds = getCurrentAndTargetUserIds();
+            if (userId == currentAndTargetUserIds.first) {
+                Slog.w(LOG_TAG, "Current user cannot be removed.");
+                return false;
+            }
+            if (userId == currentAndTargetUserIds.second) {
+                Slog.w(LOG_TAG, "Target user of an ongoing user switch cannot be removed.");
+                return false;
+            }
+            for (int i = profileIds.size() - 1; i >= 0; i--) {
+                int profileId = profileIds.get(i);
                 if (profileId == userId) {
                     //Remove the associated profiles first and then remove the user
                     continue;
                 }
                 Slog.i(LOG_TAG, "removing profile:" + profileId
-                        + "associated with user:" + userId);
+                        + " associated with user:" + userId);
                 if (!removeUserUnchecked(profileId)) {
                     // If the profile was not immediately removed, make sure it is marked as
                     // ephemeral. Don't mark as disabled since, per UserInfo.FLAG_DISABLED
@@ -5586,45 +5617,16 @@
         final long ident = Binder.clearCallingIdentity();
         try {
             final UserData userData;
-            Pair<Integer, Integer> currentAndTargetUserIds = getCurrentAndTargetUserIds();
-            if (userId == currentAndTargetUserIds.first) {
-                Slog.w(LOG_TAG, "Current user cannot be removed.");
-                return false;
-            }
-            if (userId == currentAndTargetUserIds.second) {
-                Slog.w(LOG_TAG, "Target user of an ongoing user switch cannot be removed.");
-                return false;
-            }
             synchronized (mPackagesLock) {
                 synchronized (mUsersLock) {
+                    final int userRemovability = getUserRemovabilityLocked(userId, "removed");
+                    if (userRemovability != UserManager.REMOVE_RESULT_USER_IS_REMOVABLE) {
+                        return UserManager.isRemoveResultSuccessful(userRemovability);
+                    }
                     userData = mUsers.get(userId);
-                    if (userId == UserHandle.USER_SYSTEM) {
-                        Slog.e(LOG_TAG, "System user cannot be removed.");
-                        return false;
-                    }
-
-                    if (userData == null) {
-                        Slog.e(LOG_TAG, TextUtils.formatSimple(
-                                "Cannot remove user %d, invalid user id provided.", userId));
-                        return false;
-                    }
-
-                    if (isNonRemovableMainUser(userData.info)) {
-                        Slog.e(LOG_TAG, "Main user cannot be removed when "
-                                + "it's a permanent admin user.");
-                        return false;
-                    }
-
-                    if (mRemovingUserIds.get(userId)) {
-                        Slog.e(LOG_TAG, TextUtils.formatSimple(
-                                "User %d is already scheduled for removal.", userId));
-                        return false;
-                    }
-
                     Slog.i(LOG_TAG, "Removing user " + userId);
                     addRemovingUserIdLocked(userId);
                 }
-
                 // Set this to a partially created user, so that the user will be purged
                 // on next startup, in case the runtime stops now before stopping and
                 // removing the user completely.
@@ -5693,6 +5695,7 @@
     @Override
     public @UserManager.RemoveResult int removeUserWhenPossible(@UserIdInt int userId,
             boolean overrideDevicePolicy) {
+        Slog.i(LOG_TAG, "removeUserWhenPossible u" + userId);
         checkCreateUsersPermission("Only the system can remove users");
 
         if (!overrideDevicePolicy) {
@@ -5702,65 +5705,47 @@
                 return UserManager.REMOVE_RESULT_ERROR_USER_RESTRICTION;
             }
         }
+        Slog.i(LOG_TAG, "Attempting to immediately remove user " + userId);
+        if (removeUserWithProfilesUnchecked(userId)) {
+            return UserManager.REMOVE_RESULT_REMOVED;
+        }
+        Slog.i(LOG_TAG, TextUtils.formatSimple(
+                "Unable to immediately remove user %d. Now trying to set it ephemeral.", userId));
+        return setUserEphemeralUnchecked(userId);
+    }
+
+    /**
+     * Returns the user's removability status.
+     * User is removable if the return value is {@link UserManager#REMOVE_RESULT_USER_IS_REMOVABLE}.
+     * If the user is not removable this method also prints the reason.
+     * See also {@link UserManager#isRemoveResultSuccessful}.
+     */
+    @GuardedBy("mUsersLock")
+    private @UserManager.RemoveResult int getUserRemovabilityLocked(@UserIdInt int userId,
+            String msg) {
+        String prefix = TextUtils.formatSimple("User %d can not be %s, ", userId, msg);
         if (userId == UserHandle.USER_SYSTEM) {
-            Slog.e(LOG_TAG, "System user cannot be removed.");
+            Slog.e(LOG_TAG, prefix + "system user cannot be removed.");
             return UserManager.REMOVE_RESULT_ERROR_SYSTEM_USER;
         }
-
-        final long ident = Binder.clearCallingIdentity();
-        try {
-            final UserData userData;
-            synchronized (mPackagesLock) {
-                synchronized (mUsersLock) {
-                    userData = mUsers.get(userId);
-                    if (userData == null) {
-                        Slog.e(LOG_TAG,
-                                "Cannot remove user " + userId + ", invalid user id provided.");
-                        return UserManager.REMOVE_RESULT_ERROR_USER_NOT_FOUND;
-                    }
-
-                    if (isNonRemovableMainUser(userData.info)) {
-                        Slog.e(LOG_TAG, "Main user cannot be removed when "
-                                + "it's a permanent admin user.");
-                        return UserManager.REMOVE_RESULT_ERROR_MAIN_USER_PERMANENT_ADMIN;
-                    }
-
-                    if (mRemovingUserIds.get(userId)) {
-                        Slog.e(LOG_TAG, "User " + userId + " is already scheduled for removal.");
-                        return UserManager.REMOVE_RESULT_ALREADY_BEING_REMOVED;
-                    }
-                }
-
-                // Attempt to immediately remove a non-current and non-target user
-                Pair<Integer, Integer> currentAndTargetUserIds = getCurrentAndTargetUserIds();
-                if (userId != currentAndTargetUserIds.first
-                        && userId != currentAndTargetUserIds.second) {
-                    // Attempt to remove the user. This will fail if the user is the current user
-                    if (removeUserWithProfilesUnchecked(userId)) {
-                        return UserManager.REMOVE_RESULT_REMOVED;
-                    }
-                }
-                // If the user was not immediately removed, make sure it is marked as ephemeral.
-                // Don't mark as disabled since, per UserInfo.FLAG_DISABLED documentation, an
-                // ephemeral user should only be marked as disabled when its removal is in progress.
-                Slog.i(LOG_TAG, TextUtils.formatSimple("Unable to immediately remove user %d "
-                                + "(%s is %d). User is set as ephemeral and will be removed on "
-                                + "user switch or reboot.",
-                        userId,
-                        userId == currentAndTargetUserIds.first
-                                ? "current user"
-                                : "target user of an ongoing user switch",
-                        userId));
-                userData.info.flags |= UserInfo.FLAG_EPHEMERAL;
-                writeUserLP(userData);
-
-                return UserManager.REMOVE_RESULT_DEFERRED;
-            }
-        } finally {
-            Binder.restoreCallingIdentity(ident);
+        final UserData userData = mUsers.get(userId);
+        if (userData == null) {
+            Slog.e(LOG_TAG, prefix + "invalid user id provided.");
+            return UserManager.REMOVE_RESULT_ERROR_USER_NOT_FOUND;
         }
+        if (isNonRemovableMainUser(userData.info)) {
+            Slog.e(LOG_TAG, prefix
+                    + "main user cannot be removed when it's a permanent admin user.");
+            return UserManager.REMOVE_RESULT_ERROR_MAIN_USER_PERMANENT_ADMIN;
+        }
+        if (mRemovingUserIds.get(userId)) {
+            Slog.w(LOG_TAG, prefix + "it is already scheduled for removal.");
+            return UserManager.REMOVE_RESULT_ALREADY_BEING_REMOVED;
+        }
+        return UserManager.REMOVE_RESULT_USER_IS_REMOVABLE;
     }
 
+
     private void finishRemoveUser(final @UserIdInt int userId) {
         Slog.i(LOG_TAG, "finishRemoveUser " + userId);
 
diff --git a/services/core/java/com/android/server/pm/local/PackageManagerLocalImpl.java b/services/core/java/com/android/server/pm/local/PackageManagerLocalImpl.java
index 4e0a11d..8d05450 100644
--- a/services/core/java/com/android/server/pm/local/PackageManagerLocalImpl.java
+++ b/services/core/java/com/android/server/pm/local/PackageManagerLocalImpl.java
@@ -28,6 +28,7 @@
 import com.android.server.pm.PackageManagerLocal;
 import com.android.server.pm.PackageManagerService;
 import com.android.server.pm.pkg.PackageState;
+import com.android.server.pm.pkg.SharedUserApi;
 import com.android.server.pm.snapshot.PackageDataSnapshot;
 
 import java.io.IOException;
@@ -105,6 +106,9 @@
         private Map<String, PackageState> mCachedUnmodifiablePackageStates;
 
         @Nullable
+        private Map<String, SharedUserApi> mCachedUnmodifiableSharedUsers;
+
+        @Nullable
         private Map<String, PackageState> mCachedUnmodifiableDisabledSystemPackageStates;
 
         private UnfilteredSnapshotImpl(@NonNull PackageDataSnapshot snapshot) {
@@ -132,6 +136,19 @@
         @SuppressWarnings("RedundantSuppression")
         @NonNull
         @Override
+        public Map<String, SharedUserApi> getSharedUsers() {
+            checkClosed();
+
+            if (mCachedUnmodifiableSharedUsers == null) {
+                mCachedUnmodifiableSharedUsers =
+                        Collections.unmodifiableMap(mSnapshot.getSharedUsers());
+            }
+            return mCachedUnmodifiableSharedUsers;
+        }
+
+        @SuppressWarnings("RedundantSuppression")
+        @NonNull
+        @Override
         public Map<String, PackageState> getDisabledSystemPackageStates() {
             checkClosed();
 
diff --git a/services/core/java/com/android/server/pm/permission/AccessTestingShimFactory.java b/services/core/java/com/android/server/pm/permission/AccessTestingShimFactory.java
new file mode 100644
index 0000000..0682e92
--- /dev/null
+++ b/services/core/java/com/android/server/pm/permission/AccessTestingShimFactory.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2022 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.server.pm.permission;
+
+import static android.provider.DeviceConfig.NAMESPACE_PRIVACY;
+
+import android.content.Context;
+import android.provider.DeviceConfig;
+
+import com.android.server.appop.AppOpsCheckingServiceInterface;
+import com.android.server.appop.AppOpsServiceTestingShim;
+
+import java.util.function.Supplier;
+
+/**
+ * A factory which will select one or both implementations of a PermissionManagerServiceInterface or
+ * AppOpsCheckingServiceInterface, based upon either a DeviceConfig value, or a hard coded config.
+ */
+public class AccessTestingShimFactory {
+
+    private static final int RUN_OLD_SUBSYSTEM = 0;
+    private static final int RUN_NEW_SUBSYSTEM = 1;
+    private static final int RUN_BOTH_SUBSYSTEMS = 2;
+    public static final String DEVICE_CONFIG_SETTING = "selected_access_subsystem";
+
+    /**
+     * Get the PermissionManagerServiceInterface, based upon the current config state.
+     */
+    public static PermissionManagerServiceInterface getPms(Context context,
+            Supplier<PermissionManagerServiceInterface> oldImpl,
+            Supplier<PermissionManagerServiceInterface> newImpl) {
+        int selectedSystem = DeviceConfig.getInt(NAMESPACE_PRIVACY,
+                DEVICE_CONFIG_SETTING, RUN_OLD_SUBSYSTEM);
+        switch (selectedSystem) {
+            case RUN_BOTH_SUBSYSTEMS:
+                return new PermissionManagerServiceTestingShim(oldImpl.get(), newImpl.get());
+            case RUN_NEW_SUBSYSTEM:
+                return newImpl.get();
+            default:
+                return oldImpl.get();
+        }
+    }
+
+    /**
+     * Get the AppOpsCheckingServiceInterface, based upon the current config state.
+     */
+    public static AppOpsCheckingServiceInterface getAos(Context context,
+            Supplier<AppOpsCheckingServiceInterface> oldImpl,
+            Supplier<AppOpsCheckingServiceInterface> newImpl) {
+        int selectedSystem = DeviceConfig.getInt(NAMESPACE_PRIVACY,
+                DEVICE_CONFIG_SETTING, RUN_OLD_SUBSYSTEM);
+        switch (selectedSystem) {
+            case RUN_BOTH_SUBSYSTEMS:
+                return new AppOpsServiceTestingShim(oldImpl.get(), newImpl.get());
+            case RUN_NEW_SUBSYSTEM:
+                return newImpl.get();
+            default:
+                return oldImpl.get();
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/pm/permission/LegacyPermissionSettings.java b/services/core/java/com/android/server/pm/permission/LegacyPermissionSettings.java
index fc6d202..fe6cd4d 100644
--- a/services/core/java/com/android/server/pm/permission/LegacyPermissionSettings.java
+++ b/services/core/java/com/android/server/pm/permission/LegacyPermissionSettings.java
@@ -28,10 +28,10 @@
 import com.android.modules.utils.TypedXmlSerializer;
 import com.android.server.pm.DumpState;
 import com.android.server.pm.PackageManagerService;
+import com.android.server.pm.PackageManagerTracedLock;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
-import org.xmlpull.v1.XmlSerializer;
 
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -59,11 +59,7 @@
     private final ArrayMap<String, LegacyPermission> mPermissionTrees = new ArrayMap<>();
 
     @NonNull
-    private final Object mLock;
-
-    public LegacyPermissionSettings(@NonNull Object lock) {
-        mLock = lock;
-    }
+    private final PackageManagerTracedLock mLock = new PackageManagerTracedLock();
 
     @NonNull
     public List<LegacyPermission> getPermissions() {
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 297ad73..813c7f4 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -390,13 +390,11 @@
         return oneTimePermissionUserManager;
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS)
     @Override
     public void startOneTimePermissionSession(String packageName, @UserIdInt int userId,
             long timeoutMillis, long revokeAfterKilledDelayMillis) {
-        mContext.enforceCallingOrSelfPermission(
-                Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS,
-                "Must hold " + Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS
-                        + " to register permissions as one time.");
+        startOneTimePermissionSession_enforcePermission();
         Objects.requireNonNull(packageName);
 
         final long token = Binder.clearCallingIdentity();
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
index 3492b26..5e52120 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
@@ -135,6 +135,7 @@
 import com.android.server.pm.ApexManager;
 import com.android.server.pm.KnownPackages;
 import com.android.server.pm.PackageInstallerService;
+import com.android.server.pm.PackageManagerTracedLock;
 import com.android.server.pm.UserManagerInternal;
 import com.android.server.pm.UserManagerService;
 import com.android.server.pm.parsing.PackageInfoUtils;
@@ -253,7 +254,7 @@
             new ArraySet<>();
 
     /** Lock to protect internal data access */
-    private final Object mLock = new Object();
+    private final PackageManagerTracedLock mLock = new PackageManagerTracedLock();
 
     /** Internal connection to the package manager */
     private final PackageManagerInternal mPackageManagerInt;
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTestingShim.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTestingShim.java
new file mode 100644
index 0000000..3db08de
--- /dev/null
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTestingShim.java
@@ -0,0 +1,565 @@
+/*
+ * Copyright (C) 2022 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.server.pm.permission;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.UserIdInt;
+import android.content.pm.PermissionGroupInfo;
+import android.content.pm.PermissionInfo;
+import android.content.pm.permission.SplitPermissionInfoParcelable;
+import android.permission.IOnPermissionsChangeListener;
+
+import com.android.server.pm.pkg.AndroidPackage;
+import com.android.server.pm.pkg.PackageState;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+
+/**
+ * A testing shim, which supports running two variants of a PermissionManagerServiceInterface at
+ * once, and checking the results of both.
+ */
+public class PermissionManagerServiceTestingShim implements PermissionManagerServiceInterface {
+
+    private PermissionManagerServiceInterface mOldImplementation;
+    private PermissionManagerServiceInterface mNewImplementation;
+
+    public PermissionManagerServiceTestingShim(PermissionManagerServiceInterface oldImpl,
+            PermissionManagerServiceInterface newImpl) {
+        mOldImplementation = oldImpl;
+        mNewImplementation = newImpl;
+    }
+
+    private void signalImplDifference(String message) {
+        //TODO b/252886104 implement
+    }
+
+
+    @Nullable
+    @Override
+    public byte[] backupRuntimePermissions(int userId) {
+        byte[] oldVal = mOldImplementation.backupRuntimePermissions(userId);
+        byte[] newVal = mNewImplementation.backupRuntimePermissions(userId);
+        if (!Arrays.equals(oldVal, newVal)) {
+            signalImplDifference("backupRuntimePermissions");
+        }
+
+        return newVal;
+    }
+
+    @Override
+    public void restoreRuntimePermissions(@NonNull byte[] backup, int userId) {
+        mOldImplementation.backupRuntimePermissions(userId);
+        mNewImplementation.backupRuntimePermissions(userId);
+    }
+
+    @Override
+    public void restoreDelayedRuntimePermissions(@NonNull String packageName, int userId) {
+        mOldImplementation.restoreDelayedRuntimePermissions(packageName, userId);
+        mNewImplementation.restoreDelayedRuntimePermissions(packageName, userId);
+
+    }
+
+    @Override
+    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+        mOldImplementation.dump(fd, pw, args);
+        mNewImplementation.dump(fd, pw, args);
+    }
+
+    @Override
+    public List<PermissionGroupInfo> getAllPermissionGroups(int flags) {
+        List<PermissionGroupInfo> oldVal = mOldImplementation.getAllPermissionGroups(flags);
+        List<PermissionGroupInfo> newVal = mNewImplementation.getAllPermissionGroups(flags);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getAllPermissionGroups");
+        }
+        return newVal;
+    }
+
+    @Override
+    public PermissionGroupInfo getPermissionGroupInfo(String groupName, int flags) {
+        PermissionGroupInfo oldVal = mOldImplementation.getPermissionGroupInfo(groupName, flags);
+        PermissionGroupInfo newVal = mNewImplementation.getPermissionGroupInfo(groupName, flags);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getPermissionGroupInfo");
+        }
+        return newVal;
+    }
+
+    @Override
+    public PermissionInfo getPermissionInfo(@NonNull String permName, int flags,
+            @NonNull String opPackageName) {
+        PermissionInfo oldVal = mOldImplementation.getPermissionInfo(permName, flags,
+                opPackageName);
+        PermissionInfo newVal = mNewImplementation.getPermissionInfo(permName, flags,
+                opPackageName);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getPermissionInfo");
+        }
+        return newVal;
+    }
+
+    @Override
+    public List<PermissionInfo> queryPermissionsByGroup(String groupName, int flags) {
+        List<PermissionInfo> oldVal = mOldImplementation.queryPermissionsByGroup(groupName,
+                flags);
+        List<PermissionInfo> newVal = mNewImplementation.queryPermissionsByGroup(groupName, flags);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("queryPermissionsByGroup");
+        }
+        return newVal;
+    }
+
+    @Override
+    public boolean addPermission(PermissionInfo info, boolean async) {
+        boolean oldVal = mOldImplementation.addPermission(info, async);
+        boolean newVal = mNewImplementation.addPermission(info, async);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("addPermission");
+        }
+        return newVal;
+    }
+
+    @Override
+    public void removePermission(String permName) {
+        mOldImplementation.removePermission(permName);
+        mNewImplementation.removePermission(permName);
+    }
+
+    @Override
+    public int getPermissionFlags(String packageName, String permName, int userId) {
+        int oldVal = mOldImplementation.getPermissionFlags(packageName, permName, userId);
+        int newVal = mNewImplementation.getPermissionFlags(packageName, permName, userId);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getPermissionFlags");
+        }
+        return newVal;
+    }
+
+    @Override
+    public void updatePermissionFlags(String packageName, String permName, int flagMask,
+            int flagValues, boolean checkAdjustPolicyFlagPermission, int userId) {
+        mOldImplementation.updatePermissionFlags(packageName, permName, flagMask, flagValues,
+                checkAdjustPolicyFlagPermission, userId);
+        mNewImplementation.updatePermissionFlags(packageName, permName, flagMask, flagValues,
+                checkAdjustPolicyFlagPermission, userId);
+    }
+
+    @Override
+    public void updatePermissionFlagsForAllApps(int flagMask, int flagValues, int userId) {
+        mOldImplementation.updatePermissionFlagsForAllApps(flagMask, flagValues, userId);
+        mNewImplementation.updatePermissionFlagsForAllApps(flagMask, flagValues, userId);
+    }
+
+    @Override
+    public void addOnPermissionsChangeListener(IOnPermissionsChangeListener listener) {
+        mOldImplementation.addOnPermissionsChangeListener(listener);
+        mNewImplementation.addOnPermissionsChangeListener(listener);
+    }
+
+    @Override
+    public void removeOnPermissionsChangeListener(IOnPermissionsChangeListener listener) {
+        mOldImplementation.removeOnPermissionsChangeListener(listener);
+        mNewImplementation.removeOnPermissionsChangeListener(listener);
+    }
+
+    @Override
+    public boolean addAllowlistedRestrictedPermission(@NonNull String packageName,
+            @NonNull String permName, int flags, int userId) {
+        boolean oldVal = mOldImplementation.addAllowlistedRestrictedPermission(packageName,
+                permName,
+                flags, userId);
+        boolean newVal = mNewImplementation.addAllowlistedRestrictedPermission(packageName,
+                permName, flags, userId);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("addAllowlistedRestrictedPermission");
+        }
+        return newVal;
+    }
+
+    @Override
+    public List<String> getAllowlistedRestrictedPermissions(@NonNull String packageName, int flags,
+            int userId) {
+        List<String> oldVal = mOldImplementation.getAllowlistedRestrictedPermissions(packageName,
+                flags, userId);
+        List<String> newVal = mNewImplementation.getAllowlistedRestrictedPermissions(packageName,
+                flags, userId);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getAllowlistedRestrictedPermissions");
+        }
+        return newVal;
+    }
+
+    @Override
+    public boolean removeAllowlistedRestrictedPermission(@NonNull String packageName,
+            @NonNull String permName, int flags, int userId) {
+        boolean oldVal = mOldImplementation.removeAllowlistedRestrictedPermission(packageName,
+                permName, flags, userId);
+        boolean newVal = mNewImplementation.removeAllowlistedRestrictedPermission(packageName,
+                permName, flags, userId);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("removeAllowlistedRestrictedPermission");
+        }
+        return newVal;
+    }
+
+    @Override
+    public void grantRuntimePermission(String packageName, String permName, int userId) {
+        mOldImplementation.grantRuntimePermission(packageName, permName, userId);
+        mNewImplementation.grantRuntimePermission(packageName, permName, userId);
+    }
+
+    @Override
+    public void revokeRuntimePermission(String packageName, String permName, int userId,
+            String reason) {
+        mOldImplementation.grantRuntimePermission(packageName, permName, userId);
+        mNewImplementation.grantRuntimePermission(packageName, permName, userId);
+    }
+
+    @Override
+    public void revokePostNotificationPermissionWithoutKillForTest(String packageName, int userId) {
+        mOldImplementation.revokePostNotificationPermissionWithoutKillForTest(packageName,
+                userId);
+        mNewImplementation.revokePostNotificationPermissionWithoutKillForTest(packageName, userId);
+    }
+
+    @Override
+    public boolean shouldShowRequestPermissionRationale(String packageName, String permName,
+            int userId) {
+        boolean oldVal = mOldImplementation
+                .shouldShowRequestPermissionRationale(packageName, permName, userId);
+        boolean newVal = mNewImplementation
+                .shouldShowRequestPermissionRationale(packageName, permName, userId);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("shouldShowRequestPermissionRationale");
+        }
+        return newVal;
+    }
+
+    @Override
+    public boolean isPermissionRevokedByPolicy(String packageName, String permName, int userId) {
+        boolean oldVal = mOldImplementation
+                .isPermissionRevokedByPolicy(packageName, permName, userId);
+        boolean newVal = mNewImplementation.isPermissionRevokedByPolicy(packageName, permName,
+                userId);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("isPermissionRevokedByPolicy");
+        }
+        return newVal;
+    }
+
+    @Override
+    public List<SplitPermissionInfoParcelable> getSplitPermissions() {
+        List<SplitPermissionInfoParcelable> oldVal = mOldImplementation.getSplitPermissions();
+        List<SplitPermissionInfoParcelable> newVal = mNewImplementation.getSplitPermissions();
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getSplitPermissions");
+        }
+        return newVal;
+    }
+
+    @Override
+    public int checkPermission(String pkgName, String permName, int userId) {
+        int oldVal = mOldImplementation.checkPermission(pkgName, permName, userId);
+        int newVal = mNewImplementation.checkPermission(pkgName, permName, userId);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("checkPermission");
+        }
+        return newVal;
+    }
+
+    @Override
+    public int checkUidPermission(int uid, String permName) {
+        int oldVal = mOldImplementation.checkUidPermission(uid, permName);
+        int newVal = mNewImplementation.checkUidPermission(uid, permName);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("checkUidPermission");
+        }
+        return newVal;
+    }
+
+    @Override
+    public void addOnRuntimePermissionStateChangedListener(@NonNull
+            PermissionManagerServiceInternal.OnRuntimePermissionStateChangedListener listener) {
+        mOldImplementation.addOnRuntimePermissionStateChangedListener(listener);
+        mNewImplementation.addOnRuntimePermissionStateChangedListener(listener);
+    }
+
+    @Override
+    public void removeOnRuntimePermissionStateChangedListener(@NonNull
+            PermissionManagerServiceInternal.OnRuntimePermissionStateChangedListener listener) {
+        mOldImplementation.removeOnRuntimePermissionStateChangedListener(listener);
+        mNewImplementation.removeOnRuntimePermissionStateChangedListener(listener);
+    }
+
+    @Override
+    public Map<String, Set<String>> getAllAppOpPermissionPackages() {
+        Map<String, Set<String>> oldVal = mOldImplementation.getAllAppOpPermissionPackages();
+        Map<String, Set<String>> newVal = mNewImplementation.getAllAppOpPermissionPackages();
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getAllAppOpPermissionPackages");
+        }
+        return newVal;
+    }
+
+    @Override
+    public boolean isPermissionsReviewRequired(@NonNull String packageName, int userId) {
+        boolean oldVal = mOldImplementation.isPermissionsReviewRequired(packageName, userId);
+        boolean newVal = mNewImplementation.isPermissionsReviewRequired(packageName, userId);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("isPermissionsReviewRequired");
+        }
+        return newVal;
+    }
+
+    @Override
+    public void resetRuntimePermissions(@NonNull AndroidPackage pkg, @UserIdInt int userId) {
+        mOldImplementation.resetRuntimePermissions(pkg, userId);
+        mNewImplementation.resetRuntimePermissions(pkg, userId);
+    }
+
+    @Override
+    public void resetRuntimePermissionsForUser(int userId) {
+        mOldImplementation.resetRuntimePermissionsForUser(userId);
+        mNewImplementation.resetRuntimePermissionsForUser(userId);
+    }
+
+    @Override
+    public void readLegacyPermissionStateTEMP() {
+        mOldImplementation.readLegacyPermissionStateTEMP();
+        mNewImplementation.readLegacyPermissionStateTEMP();
+    }
+
+    @Override
+    public void writeLegacyPermissionStateTEMP() {
+        mOldImplementation.writeLegacyPermissionStateTEMP();
+        mNewImplementation.writeLegacyPermissionStateTEMP();
+    }
+
+    @Override
+    public Set<String> getInstalledPermissions(String packageName) {
+        Set<String> oldVal = mOldImplementation.getInstalledPermissions(packageName);
+        Set<String> newVal = mNewImplementation.getInstalledPermissions(packageName);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getInstalledPermissions");
+        }
+        return newVal;
+    }
+
+    @NonNull
+    @Override
+    public Set<String> getGrantedPermissions(@NonNull String packageName, int userId) {
+        Set<String> oldVal = mOldImplementation.getGrantedPermissions(packageName, userId);
+        Set<String> newVal = mNewImplementation.getGrantedPermissions(packageName, userId);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getGrantedPermissions");
+        }
+        return newVal;
+    }
+
+    @NonNull
+    @Override
+    public int[] getPermissionGids(@NonNull String permissionName, int userId) {
+        int[] oldVal = mOldImplementation.getPermissionGids(permissionName, userId);
+        int[] newVal = mNewImplementation.getPermissionGids(permissionName, userId);
+
+        if (!Arrays.equals(oldVal, newVal)) {
+            signalImplDifference("getPermissionGids");
+        }
+        return newVal;
+    }
+
+    @NonNull
+    @Override
+    public String[] getAppOpPermissionPackages(@NonNull String permissionName) {
+        String[] oldVal = mOldImplementation.getAppOpPermissionPackages(permissionName);
+        String[] newVal = mNewImplementation.getAppOpPermissionPackages(permissionName);
+
+        if (!Arrays.equals(oldVal, newVal)) {
+            signalImplDifference("getAppOpPermissionPackages");
+        }
+        return newVal;
+    }
+
+    @Nullable
+    @Override
+    public Permission getPermissionTEMP(@NonNull String permName) {
+        Permission oldVal = mOldImplementation.getPermissionTEMP(permName);
+        Permission newVal = mNewImplementation.getPermissionTEMP(permName);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getPermissionTEMP");
+        }
+        return newVal;
+    }
+
+    @NonNull
+    @Override
+    public List<PermissionInfo> getAllPermissionsWithProtection(int protection) {
+        List<PermissionInfo> oldVal = mOldImplementation.getAllPermissionsWithProtection(
+                protection);
+        List<PermissionInfo> newVal = mNewImplementation.getAllPermissionsWithProtection(
+                protection);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getAllPermissionsWithProtection");
+        }
+        return newVal;
+    }
+
+    @NonNull
+    @Override
+    public List<PermissionInfo> getAllPermissionsWithProtectionFlags(int protectionFlags) {
+        List<PermissionInfo> oldVal = mOldImplementation
+                .getAllPermissionsWithProtectionFlags(protectionFlags);
+        List<PermissionInfo> newVal = mNewImplementation.getAllPermissionsWithProtectionFlags(
+                protectionFlags);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getAllPermissionsWithProtectionFlags");
+        }
+        return newVal;
+    }
+
+    @NonNull
+    @Override
+    public List<LegacyPermission> getLegacyPermissions() {
+        List<LegacyPermission> oldVal = mOldImplementation.getLegacyPermissions();
+        List<LegacyPermission> newVal = mNewImplementation.getLegacyPermissions();
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getLegacyPermissions");
+        }
+        return newVal;
+    }
+
+    @NonNull
+    @Override
+    public LegacyPermissionState getLegacyPermissionState(int appId) {
+        LegacyPermissionState oldVal = mOldImplementation.getLegacyPermissionState(appId);
+        LegacyPermissionState newVal = mNewImplementation.getLegacyPermissionState(appId);
+
+        if (!Objects.equals(oldVal, newVal)) {
+            signalImplDifference("getLegacyPermissionState");
+        }
+        return newVal;
+    }
+
+    @Override
+    public void readLegacyPermissionsTEMP(
+            @NonNull LegacyPermissionSettings legacyPermissionSettings) {
+        mOldImplementation.readLegacyPermissionsTEMP(legacyPermissionSettings);
+        mNewImplementation.readLegacyPermissionsTEMP(legacyPermissionSettings);
+    }
+
+    @Override
+    public void writeLegacyPermissionsTEMP(
+            @NonNull LegacyPermissionSettings legacyPermissionSettings) {
+        mOldImplementation.writeLegacyPermissionsTEMP(legacyPermissionSettings);
+        mNewImplementation.writeLegacyPermissionsTEMP(legacyPermissionSettings);
+    }
+
+    @Override
+    public void onSystemReady() {
+        mOldImplementation.onSystemReady();
+        mNewImplementation.onSystemReady();
+    }
+
+    @Override
+    public void onStorageVolumeMounted(@NonNull String volumeUuid, boolean fingerprintChanged) {
+        mOldImplementation.onStorageVolumeMounted(volumeUuid, fingerprintChanged);
+        mNewImplementation.onStorageVolumeMounted(volumeUuid, fingerprintChanged);
+    }
+
+    @NonNull
+    @Override
+    public int[] getGidsForUid(int uid) {
+        int[] oldVal = mOldImplementation.getGidsForUid(uid);
+        int[] newVal = mNewImplementation.getGidsForUid(uid);
+
+        if (!Arrays.equals(oldVal, newVal)) {
+            signalImplDifference("getGidsForUid");
+        }
+        return newVal;
+    }
+
+    @Override
+    public void onUserCreated(int userId) {
+        mOldImplementation.onUserCreated(userId);
+        mNewImplementation.onUserCreated(userId);
+    }
+
+    @Override
+    public void onUserRemoved(int userId) {
+        mOldImplementation.onUserRemoved(userId);
+        mNewImplementation.onUserRemoved(userId);
+    }
+
+    @Override
+    public void onPackageAdded(@NonNull PackageState pkg, boolean isInstantApp,
+            @Nullable AndroidPackage oldPkg) {
+        mOldImplementation.onPackageAdded(pkg, isInstantApp, oldPkg);
+        mNewImplementation.onPackageAdded(pkg, isInstantApp, oldPkg);
+    }
+
+    @Override
+    public void onPackageInstalled(@NonNull AndroidPackage pkg, int previousAppId,
+            @NonNull PermissionManagerServiceInternal.PackageInstalledParams params, int userId) {
+        mOldImplementation.onPackageInstalled(pkg, previousAppId, params, userId);
+        mNewImplementation.onPackageInstalled(pkg, previousAppId, params, userId);
+    }
+
+    @Override
+    public void onPackageRemoved(@NonNull AndroidPackage pkg) {
+        mOldImplementation.onPackageRemoved(pkg);
+        mNewImplementation.onPackageRemoved(pkg);
+    }
+
+    @Override
+    public void onPackageUninstalled(@NonNull String packageName, int appId,
+            @NonNull PackageState packageState, @Nullable AndroidPackage pkg,
+            @NonNull List<AndroidPackage> sharedUserPkgs, int userId) {
+        mOldImplementation.onPackageUninstalled(packageName, appId, packageState, pkg,
+                sharedUserPkgs, userId);
+        mNewImplementation.onPackageUninstalled(packageName, appId, packageState, pkg,
+                sharedUserPkgs, userId);
+    }
+}
diff --git a/services/core/java/com/android/server/pm/permission/PermissionMigrationHelper.java b/services/core/java/com/android/server/pm/permission/PermissionMigrationHelper.java
new file mode 100644
index 0000000..9eb6fde
--- /dev/null
+++ b/services/core/java/com/android/server/pm/permission/PermissionMigrationHelper.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2023 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.server.pm.permission;
+
+import android.annotation.NonNull;
+import android.content.pm.PermissionInfo;
+
+import java.util.Map;
+
+/**
+ * In-process api for permissions migration.
+ *
+ * @hide
+ */
+public interface PermissionMigrationHelper {
+    /**
+     * Whether legacy permission definitions/trees exist or not.
+     */
+    boolean hasLegacyPermission();
+
+    /**
+     * @return legacy permission definitions.
+     */
+    @NonNull
+    Map<String, LegacyPermission> getLegacyPermissions();
+
+    /**
+     * @return legacy permission trees.
+     */
+    @NonNull
+    Map<String, LegacyPermission> getLegacyPermissionTrees();
+
+    /**
+     * @return legacy permissions state for a user.
+     */
+    @NonNull
+    Map<Integer, Map<String, LegacyPermissionState>> getLegacyPermissionStates(int userId);
+
+    /**
+     * @return permissions file version for the given user.
+     */
+    int getLegacyPermissionStateVersion(int userId);
+
+    /**
+     * @return true if permissions state exists or not.
+     */
+    boolean hasLegacyPermissionState(int userId);
+
+    /**
+     * Legacy permission definition.
+     */
+    final class LegacyPermission {
+        private final PermissionInfo mPermissionInfo;
+        private final int mType;
+
+        LegacyPermission(PermissionInfo permissionInfo, int type) {
+            mPermissionInfo = permissionInfo;
+            mType = type;
+        }
+
+        @NonNull
+        public PermissionInfo getPermissionInfo() {
+            return mPermissionInfo;
+        }
+
+        public int getType() {
+            return mType;
+        }
+    }
+
+    /**
+     * State of a legacy permission.
+     */
+    final class LegacyPermissionState {
+        private final boolean mGranted;
+        private final int mFlags;
+
+        LegacyPermissionState(boolean granted, int flags) {
+            mGranted = granted;
+            mFlags = flags;
+        }
+
+        /**
+         * @return Whether the permission is granted or not.
+         */
+        public boolean isGranted() {
+            return mGranted;
+        }
+
+        /**
+         * @return Permission flags.
+         */
+        public int getFlags() {
+            return mFlags;
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/pm/permission/PermissionMigrationHelperImpl.java b/services/core/java/com/android/server/pm/permission/PermissionMigrationHelperImpl.java
new file mode 100644
index 0000000..dbf4047
--- /dev/null
+++ b/services/core/java/com/android/server/pm/permission/PermissionMigrationHelperImpl.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2023 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.server.pm.permission;
+
+import android.annotation.NonNull;
+import android.content.pm.PackageManagerInternal;
+import android.util.ArrayMap;
+import android.util.Log;
+
+import com.android.permission.persistence.RuntimePermissionsState;
+import com.android.server.LocalManagerRegistry;
+import com.android.server.LocalServices;
+import com.android.server.pm.PackageManagerLocal;
+import com.android.server.pm.pkg.PackageState;
+import com.android.server.pm.pkg.SharedUserApi;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Provider of legacy permissions data for new permission subsystem.
+ *
+ * @hide
+ */
+public class PermissionMigrationHelperImpl implements PermissionMigrationHelper {
+    private static final String LOG_TAG = PermissionMigrationHelperImpl.class.getSimpleName();
+
+    @Override
+    public boolean hasLegacyPermission() {
+        PackageManagerInternal packageManagerInternal =
+                LocalServices.getService(PackageManagerInternal.class);
+        LegacyPermissionSettings legacySettings = packageManagerInternal.getLegacyPermissions();
+        return !(legacySettings.getPermissions().isEmpty()
+                && legacySettings.getPermissionTrees().isEmpty());
+    }
+
+    /**
+     * @return legacy permission definitions.
+     */
+    @NonNull
+    public Map<String, LegacyPermission> getLegacyPermissions() {
+        PackageManagerInternal mPackageManagerInternal =
+                LocalServices.getService(PackageManagerInternal.class);
+        return toLegacyPermissions(
+                mPackageManagerInternal.getLegacyPermissions().getPermissions());
+    }
+
+    /**
+     * @return legacy permission trees.
+     */
+    @NonNull
+    public Map<String, LegacyPermission> getLegacyPermissionTrees() {
+        PackageManagerInternal mPackageManagerInternal =
+                LocalServices.getService(PackageManagerInternal.class);
+        return toLegacyPermissions(
+                mPackageManagerInternal.getLegacyPermissions().getPermissionTrees());
+    }
+
+    @NonNull
+    private Map<String, LegacyPermission> toLegacyPermissions(
+            List<com.android.server.pm.permission.LegacyPermission> legacyPermissions) {
+        Map<String, LegacyPermission> permissions = new ArrayMap<>();
+        legacyPermissions.forEach(legacyPermission -> {
+            LegacyPermission permission = new LegacyPermission(legacyPermission.getPermissionInfo(),
+                    legacyPermission.getType());
+            permissions.put(legacyPermission.getPermissionInfo().name, permission);
+        });
+
+        return permissions;
+    }
+
+    /**
+     * @return permissions state for a user, i.e. map of appId to map of permission name and state.
+     */
+    @NonNull
+    public Map<Integer, Map<String, LegacyPermissionState>> getLegacyPermissionStates(int userId) {
+        PackageManagerInternal mPackageManagerInternal =
+                LocalServices.getService(PackageManagerInternal.class);
+        Map<Integer, Map<String, LegacyPermissionState>> appIdPermissionStates = new ArrayMap<>();
+
+        RuntimePermissionsState legacyState =
+                mPackageManagerInternal.getLegacyPermissionsState(userId);
+        PackageManagerLocal packageManagerLocal =
+                LocalManagerRegistry.getManager(PackageManagerLocal.class);
+
+        try (PackageManagerLocal.UnfilteredSnapshot snapshot =
+                     packageManagerLocal.withUnfilteredSnapshot()) {
+            Map<String, PackageState> packageStates = snapshot.getPackageStates();
+            legacyState.getPackagePermissions().forEach((packageName, permissionStates) -> {
+                if (!permissionStates.isEmpty()) {
+                    PackageState packageState = packageStates.get(packageName);
+                    if (packageState != null) {
+                        int appId = packageState.getAppId();
+                        appIdPermissionStates.put(appId,
+                                toLegacyPermissionStates(permissionStates));
+                    } else {
+                        Log.w(LOG_TAG, "Package " + packageName + " not found.");
+                    }
+                }
+            });
+
+            Map<String, SharedUserApi> sharedUsers = snapshot.getSharedUsers();
+            legacyState.getSharedUserPermissions().forEach((sharedUserName, permissionStates) -> {
+                if (!permissionStates.isEmpty()) {
+                    SharedUserApi sharedUser = sharedUsers.get(sharedUserName);
+                    if (sharedUser != null) {
+                        int appId = sharedUser.getAppId();
+                        appIdPermissionStates.put(appId,
+                                toLegacyPermissionStates(permissionStates));
+                    } else {
+                        Log.w(LOG_TAG, "Shared user " + sharedUserName + " not found.");
+                    }
+                }
+            });
+        }
+        return appIdPermissionStates;
+    }
+
+    @Override
+    public int getLegacyPermissionStateVersion(int userId) {
+        PackageManagerInternal packageManagerInternal =
+                LocalServices.getService(PackageManagerInternal.class);
+        int version = packageManagerInternal.getLegacyPermissionsVersion(userId);
+        // -1 No permission data available
+        // 0 runtime-permissions.xml exist w/o any version
+        switch (version) {
+            case -1:
+                return 0;
+            case 0:
+                return -1;
+            default:
+                return version;
+        }
+    }
+
+    @Override
+    public boolean hasLegacyPermissionState(int userId) {
+        return getLegacyPermissionStateVersion(userId) > -1;
+    }
+
+    @NonNull
+    private Map<String, LegacyPermissionState> toLegacyPermissionStates(
+            List<RuntimePermissionsState.PermissionState> permissions) {
+        Map<String, LegacyPermissionState> legacyPermissions = new ArrayMap<>();
+
+        final int size = permissions.size();
+        for (int i = 0; i < size; i++) {
+            RuntimePermissionsState.PermissionState permState = permissions.get(i);
+            legacyPermissions.put(permState.getName(), new LegacyPermissionState(
+                    permState.isGranted(), permState.getFlags()));
+        }
+
+        return legacyPermissions;
+    }
+}
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index aeadcd5..a5de2a4 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -68,6 +68,7 @@
 import static android.view.WindowManagerGlobal.ADD_PERMISSION_DENIED;
 
 import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.SCREENSHOT_KEYCHORD_DELAY;
+import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__A11Y_WEAR_TRIPLE_PRESS_GESTURE;
 import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.CAMERA_LENS_COVERED;
 import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.CAMERA_LENS_COVER_ABSENT;
 import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.CAMERA_LENS_UNCOVERED;
@@ -190,6 +191,7 @@
 
 import com.android.internal.R;
 import com.android.internal.accessibility.AccessibilityShortcutController;
+import com.android.internal.accessibility.util.AccessibilityStatsLogUtils;
 import com.android.internal.accessibility.util.AccessibilityUtils;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.app.AssistUtils;
@@ -1412,7 +1414,18 @@
                 if (DEBUG_INPUT) {
                     Slog.d(TAG, "Executing stem primary triple press action behavior.");
                 }
-                toggleTalkBack();
+
+                if (Settings.System.getIntForUser(mContext.getContentResolver(),
+                        Settings.System.WEAR_ACCESSIBILITY_GESTURE_ENABLED,
+                        /* def= */ 0, UserHandle.USER_CURRENT) == 1) {
+                    /** Toggle talkback begin */
+                    ComponentName componentName = getTalkbackComponent();
+                    if (componentName != null && toggleTalkBack(componentName)) {
+                        /** log stem triple press telemetry if it's a talkback enabled event */
+                        logStemTriplePressAccessibilityTelemetry(componentName);
+                    }
+                    /** Toggle talkback end */
+                }
                 break;
         }
     }
@@ -1431,17 +1444,39 @@
         }
     }
 
-    private void toggleTalkBack() {
-        final ComponentName componentName = getTalkbackComponent();
-        if (componentName == null) {
-            return;
-        }
-
+    /**
+     * A function that toggles talkback service
+     *
+     * @return {@code true} if talkback is enabled, {@code false} if talkback is disabled
+     */
+    private boolean toggleTalkBack(ComponentName componentName) {
         final Set<ComponentName> enabledServices =
                 AccessibilityUtils.getEnabledServicesFromSettings(mContext, mCurrentUserId);
 
+        boolean isTalkbackAlreadyEnabled = enabledServices.contains(componentName);
         AccessibilityUtils.setAccessibilityServiceState(mContext, componentName,
-                !enabledServices.contains(componentName));
+                !isTalkbackAlreadyEnabled);
+        /** if isTalkbackAlreadyEnabled is true, then it's a disabled event so return false
+         * and if isTalkbackAlreadyEnabled is false, return true as it's an enabled event */
+        return !isTalkbackAlreadyEnabled;
+    }
+
+    /**
+     * A function that logs stem triple press accessibility telemetry
+     * If the user setup (Oobe) is not completed, set the
+     * WEAR_ACCESSIBILITY_GESTURE_ENABLED_DURING_OOBE
+     * setting which will be later logged via Settings Snapshot
+     * else, log ACCESSIBILITY_SHORTCUT_REPORTED atom
+     */
+    private void logStemTriplePressAccessibilityTelemetry(ComponentName componentName) {
+        if (!AccessibilityUtils.isUserSetupCompleted(mContext)) {
+            Settings.Secure.putInt(mContext.getContentResolver(),
+                    Settings.System.WEAR_ACCESSIBILITY_GESTURE_ENABLED_DURING_OOBE, 1);
+        } else {
+            AccessibilityStatsLogUtils.logAccessibilityShortcutActivated(mContext, componentName,
+                    ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__A11Y_WEAR_TRIPLE_PRESS_GESTURE,
+                    /* serviceEnabled= */ true);
+        }
     }
 
     private ComponentName getTalkbackComponent() {
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index e392c24..0d0ccc9 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -6642,6 +6642,13 @@
         }
     }
 
+    @VisibleForTesting
+    int getPowerGroupSize() {
+        synchronized (mLock) {
+            return mPowerGroups.size();
+        }
+    }
+
     @GoToSleepReason
     private int getLastSleepReasonInternal() {
         synchronized (mLock) {
diff --git a/services/core/java/com/android/server/power/ShutdownCheckPoints.java b/services/core/java/com/android/server/power/ShutdownCheckPoints.java
index 546dc81..dafaa7d 100644
--- a/services/core/java/com/android/server/power/ShutdownCheckPoints.java
+++ b/services/core/java/com/android/server/power/ShutdownCheckPoints.java
@@ -121,23 +121,25 @@
 
     @VisibleForTesting
     void recordCheckPointInternal(@Nullable String reason) {
-        recordCheckPointInternal(new SystemServerCheckPoint(mInjector, reason));
+        recordCheckPointInternal(new SystemServerCheckPoint(mInjector.currentTimeMillis(), reason));
         Slog.v(TAG, "System server shutdown checkpoint recorded");
     }
 
     @VisibleForTesting
     void recordCheckPointInternal(int callerProcessId, @Nullable String reason) {
+        long timestamp = mInjector.currentTimeMillis();
         recordCheckPointInternal(callerProcessId == Process.myPid()
-                ? new SystemServerCheckPoint(mInjector, reason)
-                : new BinderCheckPoint(mInjector, callerProcessId, reason));
+                ? new SystemServerCheckPoint(timestamp, reason)
+                : new BinderCheckPoint(timestamp, callerProcessId, reason));
         Slog.v(TAG, "Binder shutdown checkpoint recorded with pid=" + callerProcessId);
     }
 
     @VisibleForTesting
     void recordCheckPointInternal(String intentName, String packageName, @Nullable String reason) {
+        long timestamp = mInjector.currentTimeMillis();
         recordCheckPointInternal("android".equals(packageName)
-                ? new SystemServerCheckPoint(mInjector, reason)
-                : new IntentCheckPoint(mInjector, intentName, packageName, reason));
+                ? new SystemServerCheckPoint(timestamp, reason)
+                : new IntentCheckPoint(timestamp, intentName, packageName, reason));
         Slog.v(TAG, String.format("Shutdown intent checkpoint recorded intent=%s from package=%s",
                 intentName, packageName));
     }
@@ -156,7 +158,7 @@
             records = new ArrayList<>(mCheckPoints);
         }
         for (CheckPoint record : records) {
-            record.dump(printWriter);
+            record.dump(mInjector, printWriter);
             printWriter.println();
         }
     }
@@ -185,12 +187,12 @@
         private final long mTimestamp;
         @Nullable private final String mReason;
 
-        CheckPoint(Injector injector, @Nullable String reason) {
-            mTimestamp = injector.currentTimeMillis();
+        CheckPoint(long timestamp, @Nullable String reason) {
+            mTimestamp = timestamp;
             mReason = reason;
         }
 
-        final void dump(PrintWriter printWriter) {
+        final void dump(Injector injector, PrintWriter printWriter) {
             printWriter.print("Shutdown request from ");
             printWriter.print(getOrigin());
             if (mReason != null) {
@@ -200,12 +202,12 @@
             printWriter.print(" at ");
             printWriter.print(DATE_FORMAT.format(new Date(mTimestamp)));
             printWriter.println(" (epoch=" + mTimestamp + ")");
-            dumpDetails(printWriter);
+            dumpDetails(injector, printWriter);
         }
 
         abstract String getOrigin();
 
-        abstract void dumpDetails(PrintWriter printWriter);
+        abstract void dumpDetails(Injector injector, PrintWriter printWriter);
     }
 
     /** Representation of a shutdown call from the system server, with stack trace. */
@@ -213,8 +215,8 @@
 
         private final StackTraceElement[] mStackTraceElements;
 
-        SystemServerCheckPoint(Injector injector, @Nullable String reason) {
-            super(injector, reason);
+        SystemServerCheckPoint(long timestamp, @Nullable String reason) {
+            super(timestamp, reason);
             mStackTraceElements = Thread.currentThread().getStackTrace();
         }
 
@@ -224,14 +226,14 @@
         }
 
         @Override
-        void dumpDetails(PrintWriter printWriter) {
-            String methodName = getMethodName();
+        void dumpDetails(Injector injector, PrintWriter printWriter) {
+            String methodName = findMethodName();
             printWriter.println(methodName == null ? "Failed to get method name" : methodName);
             printStackTrace(printWriter);
         }
 
         @Nullable
-        String getMethodName() {
+        String findMethodName() {
             int idx = findCallSiteIndex();
             if (idx < mStackTraceElements.length) {
                 StackTraceElement element = mStackTraceElements[idx];
@@ -241,7 +243,7 @@
         }
 
         void printStackTrace(PrintWriter printWriter) {
-            // Skip the call site line, as it's already considered with getMethodName.
+            // Skip the call site line, as it's already considered with findMethodName.
             for (int i = findCallSiteIndex() + 1; i < mStackTraceElements.length; i++) {
                 printWriter.print(" at ");
                 printWriter.println(mStackTraceElements[i]);
@@ -268,12 +270,10 @@
     /** Representation of a shutdown call to {@link android.os.Binder}, with caller process id. */
     private static class BinderCheckPoint extends SystemServerCheckPoint {
         private final int mCallerProcessId;
-        private final IActivityManager mActivityManager;
 
-        BinderCheckPoint(Injector injector, int callerProcessId, @Nullable String reason) {
-            super(injector, reason);
+        BinderCheckPoint(long timestamp, int callerProcessId, @Nullable String reason) {
+            super(timestamp, reason);
             mCallerProcessId = callerProcessId;
-            mActivityManager = injector.activityManager();
         }
 
         @Override
@@ -282,25 +282,25 @@
         }
 
         @Override
-        void dumpDetails(PrintWriter printWriter) {
-            String methodName = getMethodName();
+        void dumpDetails(Injector injector, PrintWriter printWriter) {
+            String methodName = findMethodName();
             printWriter.println(methodName == null ? "Failed to get method name" : methodName);
 
-            String processName = getProcessName();
+            String processName = findProcessName(injector.activityManager());
             printWriter.print("From process ");
             printWriter.print(processName == null ? "?" : processName);
             printWriter.println(" (pid=" + mCallerProcessId + ")");
         }
 
         @Nullable
-        String getProcessName() {
+        private String findProcessName(@Nullable IActivityManager activityManager) {
             try {
                 List<ActivityManager.RunningAppProcessInfo> runningProcesses = null;
-                if (mActivityManager != null) {
-                    runningProcesses = mActivityManager.getRunningAppProcesses();
+                if (activityManager != null) {
+                    runningProcesses = activityManager.getRunningAppProcesses();
                 } else {
-                    Slog.v(TAG, "No ActivityManager available to find process name with pid="
-                            + mCallerProcessId);
+                    Slog.v(TAG, "No ActivityManager to find name of process with pid="
+                        + mCallerProcessId);
                 }
                 if (runningProcesses != null) {
                     for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) {
@@ -322,8 +322,8 @@
         private final String mPackageName;
 
         IntentCheckPoint(
-                Injector injector, String intentName, String packageName, @Nullable String reason) {
-            super(injector, reason);
+                long timestamp, String intentName, String packageName, @Nullable String reason) {
+            super(timestamp, reason);
             mIntentName = intentName;
             mPackageName = packageName;
         }
@@ -334,7 +334,7 @@
         }
 
         @Override
-        void dumpDetails(PrintWriter printWriter) {
+        void dumpDetails(Injector injector, PrintWriter printWriter) {
             printWriter.print("Intent: ");
             printWriter.println(mIntentName);
             printWriter.print("Package: ");
diff --git a/services/core/java/com/android/server/power/ShutdownThread.java b/services/core/java/com/android/server/power/ShutdownThread.java
index b1430e7..f34cbbc 100644
--- a/services/core/java/com/android/server/power/ShutdownThread.java
+++ b/services/core/java/com/android/server/power/ShutdownThread.java
@@ -30,7 +30,6 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.pm.PackageManagerInternal;
-import android.media.AudioAttributes;
 import android.os.Bundle;
 import android.os.FileUtils;
 import android.os.Handler;
@@ -44,6 +43,8 @@
 import android.os.Trace;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.os.VibrationAttributes;
+import android.os.VibrationEffect;
 import android.os.Vibrator;
 import android.telephony.TelephonyManager;
 import android.util.ArrayMap;
@@ -101,11 +102,6 @@
     // static instance of this thread
     private static final ShutdownThread sInstance = new ShutdownThread();
 
-    private static final AudioAttributes VIBRATION_ATTRIBUTES = new AudioAttributes.Builder()
-            .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
-            .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
-            .build();
-
     // Metrics that will be reported to tron after reboot
     private static final ArrayMap<String, Long> TRON_METRICS = new ArrayMap<>();
 
@@ -704,12 +700,16 @@
             Vibrator vibrator = new SystemVibrator(context);
             try {
                 if (vibrator.hasVibrator()) {
-                    vibrator.vibrate(SHUTDOWN_VIBRATE_MS, VIBRATION_ATTRIBUTES);
-                    // vibrator is asynchronous so we need to wait to avoid shutting down too soon.
+                    vibrator.vibrate(
+                            VibrationEffect.createOneShot(
+                                    SHUTDOWN_VIBRATE_MS, VibrationEffect.DEFAULT_AMPLITUDE),
+                            VibrationAttributes.createForUsage(VibrationAttributes.USAGE_TOUCH));
+
+                    // vibrator is asynchronous so we have to wait to avoid shutting down too soon.
                     try {
                         Thread.sleep(SHUTDOWN_VIBRATE_MS);
                     } catch (InterruptedException unused) {
-                        // this is not critical and does not require logging
+                        // this is not critical and does not require logging.
                     }
                 }
             } catch (Exception e) {
diff --git a/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java b/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java
index 9d5173a..86c4985 100644
--- a/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java
+++ b/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java
@@ -906,10 +906,11 @@
         return RESUME_ON_REBOOT_REBOOT_ERROR_UNSPECIFIED;
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.RECOVERY)
     @Override // Binder call for the legacy rebootWithLskf
     public @ResumeOnRebootRebootErrorCode int rebootWithLskfAssumeSlotSwitch(String packageName,
             String reason) {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.RECOVERY, null);
+        rebootWithLskfAssumeSlotSwitch_enforcePermission();
         return rebootWithLskfImpl(packageName, reason, true);
     }
 
@@ -970,9 +971,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.RECOVERY)
     @Override
     public boolean allocateSpaceForUpdate(String packageFile) {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.RECOVERY, null);
+        allocateSpaceForUpdate_enforcePermission();
         if (!isUpdatableApexSupported()) {
             Log.i(TAG, "Updatable Apex not supported, "
                     + "allocateSpaceForUpdate does nothing.");
diff --git a/services/core/java/com/android/server/security/FileIntegrity.java b/services/core/java/com/android/server/security/FileIntegrity.java
index 7b87d99..b8f187e 100644
--- a/services/core/java/com/android/server/security/FileIntegrity.java
+++ b/services/core/java/com/android/server/security/FileIntegrity.java
@@ -16,6 +16,8 @@
 
 package com.android.server.security;
 
+import static android.os.ParcelFileDescriptor.MODE_READ_ONLY;
+
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
 import android.os.ParcelFileDescriptor;
@@ -36,18 +38,26 @@
     private FileIntegrity() {}
 
     /**
-     * Enables fs-verity, if supported by the filesystem.
+     * Enables fs-verity, if supported by the filesystem. This operation is atomic, i.e. it's either
+     * enabled or not, even in case of power failure during or after the call.
      * @see <a href="https://www.kernel.org/doc/html/latest/filesystems/fsverity.html">
+     *
      * @hide
      */
     @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
     public static void setUpFsVerity(@NonNull File file) throws IOException {
-        VerityUtils.setUpFsverity(file.getAbsolutePath());
+        try (ParcelFileDescriptor pfd = ParcelFileDescriptor.open(file, MODE_READ_ONLY)) {
+            setUpFsVerity(pfd);
+        }
     }
 
     /**
-     * Enables fs-verity, if supported by the filesystem.
+     * Enables fs-verity, if supported by the filesystem. This operation is atomic, i.e. it's either
+     * enabled or not, even in case of power failure during or after the call.
      * @see <a href="https://www.kernel.org/doc/html/latest/filesystems/fsverity.html">
+     *
+     * @param parcelFileDescriptor an FD opened in {@link ParcelFileDescriptor#MODE_READ_ONLY}.
+     *
      * @hide
      */
     @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
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 6eded1a..36c4fb6 100644
--- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
+++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
@@ -3089,6 +3089,7 @@
     }
 
     // read high watermark for section
+    @GuardedBy("mProcStatsLock")
     private long readProcStatsHighWaterMark(int atomTag) {
         try {
             File[] files =
diff --git a/services/core/java/com/android/server/timedetector/NetworkTimeUpdateService.java b/services/core/java/com/android/server/timedetector/NetworkTimeUpdateService.java
index e7c073c..49dec05 100644
--- a/services/core/java/com/android/server/timedetector/NetworkTimeUpdateService.java
+++ b/services/core/java/com/android/server/timedetector/NetworkTimeUpdateService.java
@@ -21,13 +21,9 @@
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.app.AlarmManager;
-import android.app.PendingIntent;
 import android.app.time.UnixEpochTime;
-import android.content.BroadcastReceiver;
 import android.content.ContentResolver;
 import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
 import android.database.ContentObserver;
 import android.net.ConnectivityManager;
 import android.net.Network;
@@ -73,10 +69,6 @@
     private static final String TAG = "NetworkTimeUpdateService";
     private static final boolean DBG = false;
 
-    private static final String ACTION_POLL =
-            "com.android.server.timedetector.NetworkTimeUpdateService.action.POLL";
-    private static final int POLL_REQUEST = 0;
-
     private final Object mLock = new Object();
     private final Context mContext;
     private final ConnectivityManager mCM;
@@ -113,16 +105,19 @@
         AlarmManager alarmManager = mContext.getSystemService(AlarmManager.class);
         TimeDetectorInternal timeDetectorInternal =
                 LocalServices.getService(TimeDetectorInternal.class);
-        // Broadcast alarms sent by system are immutable
-        Intent pollIntent = new Intent(ACTION_POLL, null).setPackage("android");
-        PendingIntent pendingPollIntent = PendingIntent.getBroadcast(mContext, POLL_REQUEST,
-                pollIntent, PendingIntent.FLAG_IMMUTABLE);
         mRefreshCallbacks = new Engine.RefreshCallbacks() {
+            private final AlarmManager.OnAlarmListener mOnAlarmListener =
+                    new ScheduledRefreshAlarmListener();
+
             @Override
             public void scheduleNextRefresh(@ElapsedRealtimeLong long elapsedRealtimeMillis) {
-                alarmManager.cancel(pendingPollIntent);
+                alarmManager.cancel(mOnAlarmListener);
+
+                String alarmTag = "NetworkTimeUpdateService.POLL";
+                Handler handler = null; // Use the main thread
                 alarmManager.set(
-                        AlarmManager.ELAPSED_REALTIME, elapsedRealtimeMillis, pendingPollIntent);
+                        AlarmManager.ELAPSED_REALTIME, elapsedRealtimeMillis, alarmTag,
+                        mOnAlarmListener, handler);
             }
 
             @Override
@@ -138,10 +133,6 @@
 
     /** Initialize the receivers and initiate the first NTP request */
     public void systemRunning() {
-        // Listen for scheduled refreshes.
-        ScheduledRefreshBroadcastReceiver receiver = new ScheduledRefreshBroadcastReceiver();
-        mContext.registerReceiver(receiver, new IntentFilter(ACTION_POLL));
-
         // Listen for network connectivity changes.
         NetworkConnectivityCallback networkConnectivityCallback = new NetworkConnectivityCallback();
         mCM.registerDefaultNetworkCallback(networkConnectivityCallback, mHandler);
@@ -214,13 +205,13 @@
         }
     }
 
-    private class ScheduledRefreshBroadcastReceiver extends BroadcastReceiver implements Runnable {
+    private class ScheduledRefreshAlarmListener implements AlarmManager.OnAlarmListener, Runnable {
 
         @Override
-        public void onReceive(Context context, Intent intent) {
-            // The BroadcastReceiver has to complete quickly or an ANR will be triggered by the
+        public void onAlarm() {
+            // The OnAlarmListener has to complete quickly or an ANR will be triggered by the
             // platform regardless of the receiver thread used. Instead of blocking the receiver
-            // thread, the long-running / blocking work is posted to mHandler to allow onReceive()
+            // thread, the long-running / blocking work is posted to mHandler to allow onAlarm()
             // to return immediately.
             mHandler.post(this);
         }
@@ -424,8 +415,14 @@
             logToDebugAndDumpsys("forceRefreshForTests: refreshSuccessful=" + refreshSuccessful);
 
             if (refreshSuccessful) {
-                makeNetworkTimeSuggestion(mNtpTrustedTime.getCachedTimeResult(),
-                        "EngineImpl.forceRefreshForTests()", refreshCallbacks);
+                TimeResult cachedTimeResult = mNtpTrustedTime.getCachedTimeResult();
+                if (cachedTimeResult == null) {
+                    logToDebugAndDumpsys(
+                            "forceRefreshForTests: cachedTimeResult unexpectedly null");
+                } else {
+                    makeNetworkTimeSuggestion(cachedTimeResult,
+                            "EngineImpl.forceRefreshForTests()", refreshCallbacks);
+                }
             }
             return refreshSuccessful;
         }
diff --git a/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneProviderController.java b/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneProviderController.java
index ed7ea00..36658b2 100644
--- a/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneProviderController.java
+++ b/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneProviderController.java
@@ -303,8 +303,7 @@
     private void reportSuggestionEvent(
             @NonNull GeolocationTimeZoneSuggestion suggestion, @NonNull String reason) {
         LocationTimeZoneAlgorithmStatus algorithmStatus = generateCurrentAlgorithmStatus();
-        LocationAlgorithmEvent event = new LocationAlgorithmEvent(
-                algorithmStatus, suggestion);
+        LocationAlgorithmEvent event = new LocationAlgorithmEvent(algorithmStatus, suggestion);
         event.addDebugInfo(reason);
         reportEvent(event);
     }
@@ -728,20 +727,35 @@
         // Start the uncertainty timeout if needed to ensure the controller will eventually make an
         // uncertain suggestion if no success event arrives in time to counteract it.
         if (!mUncertaintyTimeoutQueue.hasQueued()) {
-            debugLog("Starting uncertainty timeout: reason=" + reason);
+            if (STATE_UNCERTAIN.equals(mState.get())) {
+                // If the controller is already uncertain, there's no reason to start a timeout;
+                // just forward the suggestion immediately to make it obvious in the logs what has
+                // happened. Making a new suggestion potentially captures new LTZP status info.
+                GeolocationTimeZoneSuggestion suggestion =
+                        GeolocationTimeZoneSuggestion.createUncertainSuggestion(
+                                uncertaintyStartedElapsedMillis);
+                String debugInfo = "Uncertainty received from " + provider.getName() + ":"
+                        + " primary=" + mPrimaryProvider
+                        + ", secondary=" + mSecondaryProvider
+                        + ", uncertaintyStarted="
+                        + Duration.ofMillis(uncertaintyStartedElapsedMillis);
+                reportSuggestionEvent(suggestion, debugInfo);
+            } else {
+                debugLog("Starting uncertainty timeout: reason=" + reason);
 
-            Duration uncertaintyDelay = mEnvironment.getUncertaintyDelay();
-            mUncertaintyTimeoutQueue.runDelayed(
-                    () -> onProviderUncertaintyTimeout(
-                            provider, uncertaintyStartedElapsedMillis, uncertaintyDelay),
-                    uncertaintyDelay.toMillis());
+                Duration uncertaintyDelay = mEnvironment.getUncertaintyDelay();
+                mUncertaintyTimeoutQueue.runDelayed(
+                        () -> onProviderUncertaintyTimeout(
+                                provider, uncertaintyStartedElapsedMillis, uncertaintyDelay),
+                        uncertaintyDelay.toMillis());
+            }
         }
 
         if (provider == mPrimaryProvider) {
             // (Try to) start the secondary. It could already be started, or enabling might not
             // succeed if the provider has previously reported it is perm failed. The uncertainty
-            // timeout (set above) is used to ensure that an uncertain suggestion will be made if
-            // the secondary cannot generate a success event in time.
+            // timeout (may be set above) is used to ensure that an uncertain suggestion will be
+            // made if the secondary cannot generate a success event in time.
             tryStartProvider(mSecondaryProvider, mCurrentUserConfiguration);
         }
     }
diff --git a/services/core/java/com/android/server/vibrator/VibratorManagerService.java b/services/core/java/com/android/server/vibrator/VibratorManagerService.java
index cb7e54d..350a55d 100644
--- a/services/core/java/com/android/server/vibrator/VibratorManagerService.java
+++ b/services/core/java/com/android/server/vibrator/VibratorManagerService.java
@@ -298,20 +298,18 @@
         return controller.isVibratorInfoLoadSuccessful() ? info : null;
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE)
     @Override // Binder call
     public boolean isVibrating(int vibratorId) {
-        mContext.enforceCallingOrSelfPermission(
-                android.Manifest.permission.ACCESS_VIBRATOR_STATE,
-                "isVibrating");
+        isVibrating_enforcePermission();
         VibratorController controller = mVibrators.get(vibratorId);
         return controller != null && controller.isVibrating();
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE)
     @Override // Binder call
     public boolean registerVibratorStateListener(int vibratorId, IVibratorStateListener listener) {
-        mContext.enforceCallingOrSelfPermission(
-                android.Manifest.permission.ACCESS_VIBRATOR_STATE,
-                "registerVibratorStateListener");
+        registerVibratorStateListener_enforcePermission();
         VibratorController controller = mVibrators.get(vibratorId);
         if (controller == null) {
             return false;
@@ -319,12 +317,11 @@
         return controller.registerVibratorStateListener(listener);
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE)
     @Override // Binder call
     public boolean unregisterVibratorStateListener(int vibratorId,
             IVibratorStateListener listener) {
-        mContext.enforceCallingOrSelfPermission(
-                android.Manifest.permission.ACCESS_VIBRATOR_STATE,
-                "unregisterVibratorStateListener");
+        unregisterVibratorStateListener_enforcePermission();
         VibratorController controller = mVibrators.get(vibratorId);
         if (controller == null) {
             return false;
@@ -412,7 +409,7 @@
             if (attrs.isFlagSet(VibrationAttributes.FLAG_INVALIDATE_SETTINGS_CACHE)) {
                 // Force update of user settings before checking if this vibration effect should
                 // be ignored or scaled.
-                mVibrationSettings.mSettingObserver.onChange(false);
+                mVibrationSettings.update();
             }
 
             synchronized (mLock) {
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperDataParser.java b/services/core/java/com/android/server/wallpaper/WallpaperDataParser.java
index 53861c8..3e498d7 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperDataParser.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperDataParser.java
@@ -38,6 +38,7 @@
 import android.content.res.Resources;
 import android.graphics.Color;
 import android.os.FileUtils;
+import android.os.SystemProperties;
 import android.util.Slog;
 import android.util.SparseArray;
 import android.util.Xml;
@@ -85,8 +86,8 @@
         mWallpaperCropper = wallpaperCropper;
         mImageWallpaper = ComponentName.unflattenFromString(
                 context.getResources().getString(R.string.image_wallpaper_component));
-        mIsLockscreenLiveWallpaperEnabled = context.getSystemService(WallpaperManager.class)
-                .isLockscreenLiveWallpaperEnabled();
+        mIsLockscreenLiveWallpaperEnabled =
+                SystemProperties.getBoolean("persist.wm.debug.lockscreen_live_wallpaper", false);
     }
 
     private JournaledFile makeJournaledFile(int userId) {
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index a27f3e4..94cc6da 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -104,7 +104,6 @@
 import android.app.WaitResult;
 import android.app.WindowConfiguration;
 import android.compat.annotation.ChangeId;
-import android.compat.annotation.Disabled;
 import android.compat.annotation.EnabledSince;
 import android.content.IIntentSender;
 import android.content.Intent;
@@ -189,7 +188,7 @@
      * Feature flag for go/activity-security rules
      */
     @ChangeId
-    @Disabled
+    @EnabledSince(targetSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
     static final long ASM_RESTRICTIONS = 230590090L;
 
     private final ActivityTaskManagerService mService;
diff --git a/services/core/java/com/android/server/wm/RemoteAnimationController.java b/services/core/java/com/android/server/wm/RemoteAnimationController.java
index b879d1a..eb639b6 100644
--- a/services/core/java/com/android/server/wm/RemoteAnimationController.java
+++ b/services/core/java/com/android/server/wm/RemoteAnimationController.java
@@ -362,15 +362,8 @@
 
     private void invokeAnimationCancelled(String reason) {
         ProtoLog.d(WM_DEBUG_REMOTE_ANIMATIONS, "cancelAnimation(): reason=%s", reason);
-        final boolean isKeyguardOccluded = mDisplayContent.isKeyguardOccluded();
-
         try {
-            EventLogTags.writeWmSetKeyguardOccluded(
-                    isKeyguardOccluded ? 1 : 0,
-                    0 /* animate */,
-                    0 /* transit */,
-                    "onAnimationCancelled");
-            mRemoteAnimationAdapter.getRunner().onAnimationCancelled(isKeyguardOccluded);
+            mRemoteAnimationAdapter.getRunner().onAnimationCancelled();
         } catch (RemoteException e) {
             Slog.e(TAG, "Failed to notify cancel", e);
         }
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 8822193..ab574781 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -413,7 +413,7 @@
     private static final String DENSITY_OVERRIDE = "ro.config.density_override";
     private static final String SIZE_OVERRIDE = "ro.config.size_override";
 
-    private static final String PROPERTY_EMULATOR_CIRCULAR = "ro.emulator.circular";
+    private static final String PROPERTY_EMULATOR_CIRCULAR = "ro.boot.emulator.circular";
 
     static final int MY_PID = myPid();
     static final int MY_UID = myUid();
@@ -3237,15 +3237,13 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.DISABLE_KEYGUARD)
     /**
      * @see android.app.KeyguardManager#exitKeyguardSecurely
      */
     @Override
     public void exitKeyguardSecurely(final IOnKeyguardExitResult callback) {
-        if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DISABLE_KEYGUARD)
-            != PackageManager.PERMISSION_GRANTED) {
-            throw new SecurityException("Requires DISABLE_KEYGUARD permission");
-        }
+        exitKeyguardSecurely_enforcePermission();
 
         if (callback == null) {
             throw new IllegalArgumentException("callback == null");
@@ -4426,13 +4424,11 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_APP_TOKENS)
     @Override
     public SurfaceControl addShellRoot(int displayId, IWindow client,
             @WindowManager.ShellRootLayer int shellRootLayer) {
-        if (mContext.checkCallingOrSelfPermission(MANAGE_APP_TOKENS)
-                != PackageManager.PERMISSION_GRANTED) {
-            throw new SecurityException("Must hold permission " + MANAGE_APP_TOKENS);
-        }
+        addShellRoot_enforcePermission();
         final long origId = Binder.clearCallingIdentity();
         try {
             synchronized (mGlobalLock) {
@@ -4447,13 +4443,11 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_APP_TOKENS)
     @Override
     public void setShellRootAccessibilityWindow(int displayId,
             @WindowManager.ShellRootLayer int shellRootLayer, IWindow target) {
-        if (mContext.checkCallingOrSelfPermission(MANAGE_APP_TOKENS)
-                != PackageManager.PERMISSION_GRANTED) {
-            throw new SecurityException("Must hold permission " + MANAGE_APP_TOKENS);
-        }
+        setShellRootAccessibilityWindow_enforcePermission();
         final long origId = Binder.clearCallingIdentity();
         try {
             synchronized (mGlobalLock) {
@@ -4472,13 +4466,11 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_APP_TOKENS)
     @Override
     public void setDisplayWindowInsetsController(
             int displayId, IDisplayWindowInsetsController insetsController) {
-        if (mContext.checkCallingOrSelfPermission(MANAGE_APP_TOKENS)
-                != PackageManager.PERMISSION_GRANTED) {
-            throw new SecurityException("Must hold permission " + MANAGE_APP_TOKENS);
-        }
+        setDisplayWindowInsetsController_enforcePermission();
         final long origId = Binder.clearCallingIdentity();
         try {
             synchronized (mGlobalLock) {
@@ -4493,13 +4485,11 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_APP_TOKENS)
     @Override
     public void updateDisplayWindowRequestedVisibleTypes(
             int displayId, @InsetsType int requestedVisibleTypes) {
-        if (mContext.checkCallingOrSelfPermission(MANAGE_APP_TOKENS)
-                != PackageManager.PERMISSION_GRANTED) {
-            throw new SecurityException("Must hold permission " + MANAGE_APP_TOKENS);
-        }
+        updateDisplayWindowRequestedVisibleTypes_enforcePermission();
         final long origId = Binder.clearCallingIdentity();
         try {
             synchronized (mGlobalLock) {
@@ -5708,12 +5698,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.WRITE_SECURE_SETTINGS)
     @Override
     public void setForcedDisplaySize(int displayId, int width, int height) {
-        if (mContext.checkCallingOrSelfPermission(WRITE_SECURE_SETTINGS)
-                != PackageManager.PERMISSION_GRANTED) {
-            throw new SecurityException("Must hold permission " + WRITE_SECURE_SETTINGS);
-        }
+        setForcedDisplaySize_enforcePermission();
 
         final long ident = Binder.clearCallingIdentity();
         try {
@@ -5728,12 +5716,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.WRITE_SECURE_SETTINGS)
     @Override
     public void setForcedDisplayScalingMode(int displayId, int mode) {
-        if (mContext.checkCallingOrSelfPermission(WRITE_SECURE_SETTINGS)
-                != PackageManager.PERMISSION_GRANTED) {
-            throw new SecurityException("Must hold permission " + WRITE_SECURE_SETTINGS);
-        }
+        setForcedDisplayScalingMode_enforcePermission();
 
         final long ident = Binder.clearCallingIdentity();
         try {
@@ -5816,12 +5802,10 @@
         return changed;
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.WRITE_SECURE_SETTINGS)
     @Override
     public void clearForcedDisplaySize(int displayId) {
-        if (mContext.checkCallingOrSelfPermission(WRITE_SECURE_SETTINGS)
-                != PackageManager.PERMISSION_GRANTED) {
-            throw new SecurityException("Must hold permission " + WRITE_SECURE_SETTINGS);
-        }
+        clearForcedDisplaySize_enforcePermission();
 
         final long ident = Binder.clearCallingIdentity();
         try {
@@ -5881,12 +5865,10 @@
         return -1;
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.WRITE_SECURE_SETTINGS)
     @Override
     public void setForcedDisplayDensityForUser(int displayId, int density, int userId) {
-        if (mContext.checkCallingOrSelfPermission(WRITE_SECURE_SETTINGS)
-                != PackageManager.PERMISSION_GRANTED) {
-            throw new SecurityException("Must hold permission " + WRITE_SECURE_SETTINGS);
-        }
+        setForcedDisplayDensityForUser_enforcePermission();
 
         final int targetUserId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
                 Binder.getCallingUid(), userId, false, true, "setForcedDisplayDensityForUser",
@@ -5909,12 +5891,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.WRITE_SECURE_SETTINGS)
     @Override
     public void clearForcedDisplayDensityForUser(int displayId, int userId) {
-        if (mContext.checkCallingOrSelfPermission(WRITE_SECURE_SETTINGS)
-                != PackageManager.PERMISSION_GRANTED) {
-            throw new SecurityException("Must hold permission " + WRITE_SECURE_SETTINGS);
-        }
+        clearForcedDisplayDensityForUser_enforcePermission();
 
         final int callingUserId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
                 Binder.getCallingUid(), userId, false, true, "clearForcedDisplayDensityForUser",
@@ -6409,12 +6389,9 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.STATUS_BAR)
     public void setNavBarVirtualKeyHapticFeedbackEnabled(boolean enabled) {
-        if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.STATUS_BAR)
-                != PackageManager.PERMISSION_GRANTED) {
-            throw new SecurityException("Caller does not hold permission "
-                    + android.Manifest.permission.STATUS_BAR);
-        }
+        setNavBarVirtualKeyHapticFeedbackEnabled_enforcePermission();
 
         synchronized (mGlobalLock) {
             mPolicy.setNavBarVirtualKeyHapticFeedbackEnabledLw(enabled);
@@ -6454,11 +6431,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.RESTRICTED_VR_ACCESS)
     @Override
     public Region getCurrentImeTouchRegion() {
-        if (mContext.checkCallingOrSelfPermission(RESTRICTED_VR_ACCESS) != PERMISSION_GRANTED) {
-            throw new SecurityException("getCurrentImeTouchRegion is restricted to VR services");
-        }
+        getCurrentImeTouchRegion_enforcePermission();
         synchronized (mGlobalLock) {
             final Region r = new Region();
             // TODO(b/111080190): this method is only return the recent focused IME touch region,
diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java
index cd42528..c04a80c 100644
--- a/services/core/java/com/android/server/wm/WindowOrganizerController.java
+++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java
@@ -18,7 +18,7 @@
 
 import static android.Manifest.permission.START_TASKS_FROM_RECENTS;
 import static android.app.ActivityManager.isStartResultSuccessful;
-import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
+import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
 import static android.app.WindowConfiguration.WINDOW_CONFIG_BOUNDS;
 import static android.view.Display.DEFAULT_DISPLAY;
 import static android.window.TaskFragmentOperation.OP_TYPE_CLEAR_ADJACENT_TASK_FRAGMENTS;
@@ -526,9 +526,9 @@
                 // setWindowingMode call in force-hidden.
                 boolean forceHiddenForPip = false;
                 if (wc.asTask() != null && wc.inPinnedWindowingMode()
-                        && entry.getValue().getWindowingMode() == WINDOWING_MODE_UNDEFINED) {
-                    // We are in pip and going to undefined. Now search hierarchy ops to determine
-                    // whether we are removing pip or expanding pip.
+                        && entry.getValue().getWindowingMode() != WINDOWING_MODE_PINNED) {
+                    // We are going out of pip. Now search hierarchy ops to determine whether we
+                    // are removing pip or expanding pip.
                     for (int i = 0; i < hopSize; ++i) {
                         final WindowContainerTransaction.HierarchyOp hop = hops.get(i);
                         if (hop.getType() != HIERARCHY_OP_TYPE_REORDER) continue;
@@ -665,7 +665,7 @@
                 return effects;
             }
 
-            if (windowingMode == WindowConfiguration.WINDOWING_MODE_PINNED) {
+            if (windowingMode == WINDOWING_MODE_PINNED) {
                 // Do not directly put the container into PINNED mode as it may not support it or
                 // the app may not want to enter it. Instead, send a signal to request PIP
                 // mode to the app if they wish to support it below in #applyTaskChanges.
@@ -718,7 +718,7 @@
             tr.mDisplayContent.mPinnedTaskController.setEnterPipBounds(enterPipBounds);
         }
 
-        if (c.getWindowingMode() == WindowConfiguration.WINDOWING_MODE_PINNED
+        if (c.getWindowingMode() == WINDOWING_MODE_PINNED
                 && !tr.inPinnedWindowingMode()) {
             final ActivityRecord activity = tr.getTopNonFinishingActivity();
             if (activity != null) {
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index f6bc93a..14ea884 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -17036,9 +17036,6 @@
         if (!mUserManager.isUserRunning(new UserHandle(deviceOwnerUserId))) {
             return STATUS_USER_NOT_RUNNING;
         }
-        if (mIsWatch && hasPaired(UserHandle.USER_SYSTEM)) {
-            return STATUS_HAS_PAIRED;
-        }
 
         boolean isHeadlessSystemUserMode = mInjector.userManagerIsHeadlessSystemUserMode();
 
@@ -17062,7 +17059,7 @@
 
         if (isAdb) {
             // If shell command runs after user setup completed check device status. Otherwise, OK.
-            if (mIsWatch || hasUserSetupCompleted(UserHandle.USER_SYSTEM)) {
+            if (hasUserSetupCompleted(UserHandle.USER_SYSTEM)) {
                 // DO can be setup only if there are no users which are neither created by default
                 // nor marked as FOR_TESTING
 
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index b1d6131..e895a44 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -108,6 +108,8 @@
 import com.android.server.am.ActivityManagerService;
 import com.android.server.ambientcontext.AmbientContextManagerService;
 import com.android.server.appbinding.AppBindingService;
+import com.android.server.appop.AppOpMigrationHelper;
+import com.android.server.appop.AppOpMigrationHelperImpl;
 import com.android.server.art.ArtModuleServiceInitializer;
 import com.android.server.art.DexUseManagerLocal;
 import com.android.server.attention.AttentionManagerService;
@@ -174,6 +176,8 @@
 import com.android.server.pm.ShortcutService;
 import com.android.server.pm.UserManagerService;
 import com.android.server.pm.dex.OdsignStatsLogger;
+import com.android.server.pm.permission.PermissionMigrationHelper;
+import com.android.server.pm.permission.PermissionMigrationHelperImpl;
 import com.android.server.pm.verify.domain.DomainVerificationService;
 import com.android.server.policy.AppOpsPolicy;
 import com.android.server.policy.PermissionPolicyService;
@@ -332,6 +336,8 @@
             "com.android.clockwork.time.WearTimeService";
     private static final String WEAR_GLOBAL_ACTIONS_SERVICE_CLASS =
             "com.android.clockwork.globalactions.GlobalActionsService";
+    private static final String WEAR_SETTINGS_SERVICE_CLASS =
+            "com.android.clockwork.settings.WearSettingsService";
     private static final String ACCOUNT_SERVICE_CLASS =
             "com.android.server.accounts.AccountManagerService$Lifecycle";
     private static final String CONTENT_SERVICE_CLASS =
@@ -1133,6 +1139,10 @@
 
         // Start AccessCheckingService which provides new implementation for permission and app op.
         t.traceBegin("StartAccessCheckingService");
+        LocalServices.addService(PermissionMigrationHelper.class,
+                new PermissionMigrationHelperImpl());
+        LocalServices.addService(AppOpMigrationHelper.class,
+                new AppOpMigrationHelperImpl());
         mSystemServiceManager.startService(AccessCheckingService.class);
         t.traceEnd();
 
@@ -2596,6 +2606,10 @@
             t.traceBegin("StartWearGlobalActionsService");
             mSystemServiceManager.startService(WEAR_GLOBAL_ACTIONS_SERVICE_CLASS);
             t.traceEnd();
+
+            t.traceBegin("StartWearSettingsService");
+            mSystemServiceManager.startService(WEAR_SETTINGS_SERVICE_CLASS);
+            t.traceEnd();
         }
 
         if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_SLICES_DISABLED)) {
diff --git a/services/permission/java/com/android/server/permission/access/AccessCheckingService.kt b/services/permission/java/com/android/server/permission/access/AccessCheckingService.kt
index e416718..90cb352 100644
--- a/services/permission/java/com/android/server/permission/access/AccessCheckingService.kt
+++ b/services/permission/java/com/android/server/permission/access/AccessCheckingService.kt
@@ -29,6 +29,7 @@
 import com.android.server.appop.AppOpsCheckingServiceInterface
 import com.android.server.permission.access.appop.AppOpService
 import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.immutable.* // ktlint-disable no-wildcard-imports
 import com.android.server.permission.access.permission.PermissionService
 import com.android.server.pm.KnownPackages
 import com.android.server.pm.PackageManagerLocal
@@ -72,7 +73,7 @@
         userManagerService = UserManagerService.getInstance()
         systemConfig = SystemConfig.getInstance()
 
-        val userIds = IntSet(userManagerService.userIdsIncludingPreCreated)
+        val userIds = MutableIntSet(userManagerService.userIdsIncludingPreCreated)
         val (packageStates, disabledSystemPackageStates) = packageManagerLocal.allPackageStates
         val knownPackages = packageManagerInternal.knownPackages
         val isLeanback = systemConfig.isLeanback
@@ -82,7 +83,7 @@
         val permissionAllowlist = systemConfig.permissionAllowlist
         val implicitToSourcePermissions = systemConfig.implicitToSourcePermissions
 
-        val state = AccessState()
+        val state = MutableAccessState()
         policy.initialize(
             state, userIds, packageStates, disabledSystemPackageStates, knownPackages, isLeanback,
             configPermissions, privilegedPermissionAllowlistPackages, permissionAllowlist,
@@ -104,7 +105,7 @@
         get() = PackageManager.FEATURE_LEANBACK in availableFeatures
 
     private val SystemConfig.privilegedPermissionAllowlistPackages: IndexedListSet<String>
-        get() = IndexedListSet<String>().apply {
+        get() = MutableIndexedListSet<String>().apply {
             this += "android"
             if (PackageManager.FEATURE_AUTOMOTIVE in availableFeatures) {
                 // Note that SystemProperties.get(String, String) forces returning an empty string
@@ -117,14 +118,16 @@
         }
 
     private val SystemConfig.implicitToSourcePermissions: IndexedMap<String, IndexedListSet<String>>
-        get() = IndexedMap<String, IndexedListSet<String>>().apply {
+        @Suppress("UNCHECKED_CAST")
+        get() = MutableIndexedMap<String, MutableIndexedListSet<String>>().apply {
             splitPermissions.forEach { splitPermissionInfo ->
                 val sourcePermissionName = splitPermissionInfo.splitPermission
                 splitPermissionInfo.newPermissions.forEach { implicitPermissionName ->
-                    getOrPut(implicitPermissionName) { IndexedListSet() } += sourcePermissionName
+                    getOrPut(implicitPermissionName) { MutableIndexedListSet() } +=
+                        sourcePermissionName
                 }
             }
-        }
+        } as IndexedMap<String, IndexedListSet<String>>
 
     fun getDecision(subject: AccessUri, `object`: AccessUri): Int =
         getState {
@@ -222,7 +225,7 @@
         get() = withUnfilteredSnapshot().use { it.packageStates to it.disabledSystemPackageStates }
 
     private val PackageManagerInternal.knownPackages: IntMap<Array<String>>
-        get() = IntMap<Array<String>>().apply {
+        get() = MutableIntMap<Array<String>>().apply {
             this[KnownPackages.PACKAGE_INSTALLER] = getKnownPackageNames(
                 KnownPackages.PACKAGE_INSTALLER, UserHandle.USER_SYSTEM
             )
@@ -269,7 +272,7 @@
         contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }
         synchronized(stateLock) {
             val oldState = state
-            val newState = oldState.copy()
+            val newState = oldState.toMutable()
             MutateStateScope(oldState, newState).action()
             persistence.write(newState)
             state = newState
diff --git a/services/permission/java/com/android/server/permission/access/AccessPersistence.kt b/services/permission/java/com/android/server/permission/access/AccessPersistence.kt
index a25b720..5108a04 100644
--- a/services/permission/java/com/android/server/permission/access/AccessPersistence.kt
+++ b/services/permission/java/com/android/server/permission/access/AccessPersistence.kt
@@ -23,16 +23,18 @@
 import android.os.UserHandle
 import android.util.AtomicFile
 import android.util.Log
+import android.util.SparseLongArray
 import com.android.internal.annotations.GuardedBy
 import com.android.internal.os.BackgroundThread
 import com.android.modules.utils.BinaryXmlPullParser
 import com.android.modules.utils.BinaryXmlSerializer
 import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.immutable.* // ktlint-disable no-wildcard-imports
 import com.android.server.permission.access.util.PermissionApex
 import com.android.server.permission.access.util.parseBinaryXml
-import com.android.server.permission.access.util.read
+import com.android.server.permission.access.util.readWithReserveCopy
 import com.android.server.permission.access.util.serializeBinaryXml
-import com.android.server.permission.access.util.writeInlined
+import com.android.server.permission.access.util.writeWithReserveCopy
 import java.io.File
 import java.io.FileNotFoundException
 
@@ -41,9 +43,9 @@
 ) {
     private val scheduleLock = Any()
     @GuardedBy("scheduleLock")
-    private val pendingMutationTimesMillis = IntLongMap()
+    private val pendingMutationTimesMillis = SparseLongArray()
     @GuardedBy("scheduleLock")
-    private val pendingStates = IntMap<AccessState>()
+    private val pendingStates = MutableIntMap<AccessState>()
     @GuardedBy("scheduleLock")
     private lateinit var writeHandler: WriteHandler
 
@@ -53,36 +55,54 @@
         writeHandler = WriteHandler(BackgroundThread.getHandler().looper)
     }
 
-    fun read(state: AccessState) {
+    /**
+     * Reads the state either from the disk or migrate legacy data when the data files are missing.
+     */
+    fun read(state: MutableAccessState) {
         readSystemState(state)
         state.systemState.userIds.forEachIndexed { _, userId ->
             readUserState(state, userId)
         }
     }
 
-    private fun readSystemState(state: AccessState) {
-        systemFile.parse {
+    private fun readSystemState(state: MutableAccessState) {
+        val fileExists = systemFile.parse {
             // This is the canonical way to call an extension function in a different class.
             // TODO(b/259469752): Use context receiver for this when it becomes stable.
             with(policy) { parseSystemState(state) }
         }
-    }
 
-    private fun readUserState(state: AccessState, userId: Int) {
-        getUserFile(userId).parse {
-            with(policy) { parseUserState(state, userId) }
+        if (!fileExists) {
+            policy.migrateSystemState(state)
+            state.systemState.write(state, UserHandle.USER_ALL)
         }
     }
 
-    private inline fun File.parse(block: BinaryXmlPullParser.() -> Unit) {
+    private fun readUserState(state: MutableAccessState, userId: Int) {
+        val fileExists = getUserFile(userId).parse {
+            with(policy) { parseUserState(state, userId) }
+        }
+
+        if (!fileExists) {
+            policy.migrateUserState(state, userId)
+            state.userStates[userId]!!.write(state, userId)
+        }
+    }
+
+    /**
+     * @return {@code true} if the file is successfully read from the disk; {@code false} if
+     * the file doesn't exist yet.
+     */
+    private inline fun File.parse(block: BinaryXmlPullParser.() -> Unit): Boolean =
         try {
-            AtomicFile(this).read { it.parseBinaryXml(block) }
+            AtomicFile(this).readWithReserveCopy { it.parseBinaryXml(block) }
+            true
         } catch (e: FileNotFoundException) {
             Log.i(LOG_TAG, "$this not found")
+            false
         } catch (e: Exception) {
             throw IllegalStateException("Failed to read $this", e)
         }
-    }
 
     fun write(state: AccessState) {
         state.systemState.write(state, UserHandle.USER_ALL)
@@ -94,11 +114,7 @@
     private fun WritableState.write(state: AccessState, userId: Int) {
         when (val writeMode = writeMode) {
             WriteMode.NONE -> {}
-            WriteMode.SYNC -> {
-                synchronized(scheduleLock) { pendingStates[userId] = state }
-                writePendingState(userId)
-            }
-            WriteMode.ASYNC -> {
+            WriteMode.ASYNCHRONOUS -> {
                 synchronized(scheduleLock) {
                     writeHandler.removeMessages(userId)
                     pendingStates[userId] = state
@@ -117,6 +133,10 @@
                     }
                 }
             }
+            WriteMode.SYNCHRONOUS -> {
+                synchronized(scheduleLock) { pendingStates[userId] = state }
+                writePendingState(userId)
+            }
             else -> error(writeMode)
         }
     }
@@ -126,7 +146,7 @@
             val state: AccessState?
             synchronized(scheduleLock) {
                 pendingMutationTimesMillis -= userId
-                state = pendingStates.removeReturnOld(userId)
+                state = pendingStates.remove(userId)
                 writeHandler.removeMessages(userId)
             }
             if (state == null) {
@@ -154,7 +174,7 @@
 
     private inline fun File.serialize(block: BinaryXmlSerializer.() -> Unit) {
         try {
-            AtomicFile(this).writeInlined { it.serializeBinaryXml(block) }
+            AtomicFile(this).writeWithReserveCopy { it.serializeBinaryXml(block) }
         } catch (e: Exception) {
             Log.e(LOG_TAG, "Failed to serialize $this", e)
         }
@@ -176,16 +196,6 @@
     }
 
     private inner class WriteHandler(looper: Looper) : Handler(looper) {
-        fun writeAtTime(userId: Int, timeMillis: Long) {
-            removeMessages(userId)
-            val message = obtainMessage(userId)
-            sendMessageDelayed(message, timeMillis)
-        }
-
-        fun cancelWrite(userId: Int) {
-            removeMessages(userId)
-        }
-
         override fun handleMessage(message: Message) {
             val userId = message.what
             writePendingState(userId)
diff --git a/services/permission/java/com/android/server/permission/access/AccessPolicy.kt b/services/permission/java/com/android/server/permission/access/AccessPolicy.kt
index 07a5e72..9b33043 100644
--- a/services/permission/java/com/android/server/permission/access/AccessPolicy.kt
+++ b/services/permission/java/com/android/server/permission/access/AccessPolicy.kt
@@ -20,11 +20,17 @@
 import com.android.modules.utils.BinaryXmlPullParser
 import com.android.modules.utils.BinaryXmlSerializer
 import com.android.server.SystemConfig
+import com.android.server.permission.access.appop.AppIdAppOpPolicy
 import com.android.server.permission.access.appop.PackageAppOpPolicy
-import com.android.server.permission.access.appop.UidAppOpPolicy
 import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports
-import com.android.server.permission.access.permission.UidPermissionPolicy
+import com.android.server.permission.access.immutable.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.immutable.IndexedMap
+import com.android.server.permission.access.permission.AppIdPermissionPolicy
+import com.android.server.permission.access.util.attributeInt
+import com.android.server.permission.access.util.attributeInterned
 import com.android.server.permission.access.util.forEachTag
+import com.android.server.permission.access.util.getAttributeIntOrThrow
+import com.android.server.permission.access.util.getAttributeValueOrThrow
 import com.android.server.permission.access.util.tag
 import com.android.server.permission.access.util.tagName
 import com.android.server.pm.permission.PermissionAllowlist
@@ -33,14 +39,16 @@
 class AccessPolicy private constructor(
     private val schemePolicies: IndexedMap<String, IndexedMap<String, SchemePolicy>>
 ) {
+    @Suppress("UNCHECKED_CAST")
     constructor() : this(
-        IndexedMap<String, IndexedMap<String, SchemePolicy>>().apply {
-            fun addPolicy(policy: SchemePolicy) =
-                getOrPut(policy.subjectScheme) { IndexedMap() }.put(policy.objectScheme, policy)
-            addPolicy(UidPermissionPolicy())
-            addPolicy(UidAppOpPolicy())
+        MutableIndexedMap<String, MutableIndexedMap<String, SchemePolicy>>().apply {
+            fun addPolicy(policy: SchemePolicy) {
+                getOrPut(policy.subjectScheme) { MutableIndexedMap() }[policy.objectScheme] = policy
+            }
+            addPolicy(AppIdPermissionPolicy())
+            addPolicy(AppIdAppOpPolicy())
             addPolicy(PackageAppOpPolicy())
-        }
+        } as IndexedMap<String, IndexedMap<String, SchemePolicy>>
     )
 
     fun getSchemePolicy(subjectScheme: String, objectScheme: String): SchemePolicy =
@@ -49,14 +57,14 @@
         }
 
     fun GetStateScope.getDecision(subject: AccessUri, `object`: AccessUri): Int =
-        with(getSchemePolicy(subject, `object`)){ getDecision(subject, `object`) }
+        with(getSchemePolicy(subject, `object`)) { getDecision(subject, `object`) }
 
     fun MutateStateScope.setDecision(subject: AccessUri, `object`: AccessUri, decision: Int) {
         with(getSchemePolicy(subject, `object`)) { setDecision(subject, `object`, decision) }
     }
 
     fun initialize(
-        state: AccessState,
+        state: MutableAccessState,
         userIds: IntSet,
         packageStates: Map<String, PackageState>,
         disabledSystemPackageStates: Map<String, PackageState>,
@@ -67,25 +75,24 @@
         permissionAllowlist: PermissionAllowlist,
         implicitToSourcePermissions: IndexedMap<String, IndexedListSet<String>>
     ) {
-        state.systemState.apply {
-            this.userIds += userIds
-            this.packageStates = packageStates
-            this.disabledSystemPackageStates = disabledSystemPackageStates
+        state.mutateSystemState(WriteMode.NONE).apply {
+            mutateUserIds() += userIds
+            setPackageStates(packageStates)
+            setDisabledSystemPackageStates(disabledSystemPackageStates)
             packageStates.forEach { (_, packageState) ->
-                appIds.getOrPut(packageState.appId) { IndexedListSet() }
+                mutateAppIdPackageNames()
+                    .mutateOrPut(packageState.appId) { MutableIndexedListSet() }
                     .add(packageState.packageName)
             }
-            this.knownPackages = knownPackages
-            this.isLeanback = isLeanback
-            this.configPermissions = configPermissions
-            this.privilegedPermissionAllowlistPackages = privilegedPermissionAllowlistPackages
-            this.permissionAllowlist = permissionAllowlist
-            this.implicitToSourcePermissions = implicitToSourcePermissions
+            setKnownPackages(knownPackages)
+            setLeanback(isLeanback)
+            setConfigPermissions(configPermissions)
+            setPrivilegedPermissionAllowlistPackages(privilegedPermissionAllowlistPackages)
+            setPermissionAllowlist(permissionAllowlist)
+            setImplicitToSourcePermissions(implicitToSourcePermissions)
         }
-        state.userStates.apply {
-            userIds.forEachIndexed { _, userId ->
-                this[userId] = UserState()
-            }
+        state.mutateUserStatesNoWrite().apply {
+            userIds.forEachIndexed { _, userId -> this[userId] = MutableUserState() }
         }
     }
 
@@ -102,16 +109,19 @@
     }
 
     fun MutateStateScope.onUserAdded(userId: Int) {
-        newState.systemState.userIds += userId
-        newState.userStates[userId] = UserState()
+        newState.mutateSystemState(WriteMode.NONE).mutateUserIds() += userId
+        newState.mutateUserStatesNoWrite()[userId] = MutableUserState()
         forEachSchemePolicy {
             with(it) { onUserAdded(userId) }
         }
+        newState.systemState.packageStates.forEach { (_, packageState) ->
+            upgradePackageVersion(packageState, userId)
+        }
     }
 
     fun MutateStateScope.onUserRemoved(userId: Int) {
-        newState.systemState.userIds -= userId
-        newState.userStates -= userId
+        newState.mutateSystemState(WriteMode.NONE).mutateUserIds() -= userId
+        newState.mutateUserStatesNoWrite() -= userId
         forEachSchemePolicy {
             with(it) { onUserRemoved(userId) }
         }
@@ -124,20 +134,20 @@
         volumeUuid: String?,
         isSystemUpdated: Boolean
     ) {
-        val addedAppIds = IntSet()
-        newState.systemState.apply {
-            this.packageStates = packageStates
-            this.disabledSystemPackageStates = disabledSystemPackageStates
+        val addedAppIds = MutableIntSet()
+        newState.mutateSystemState(WriteMode.NONE).apply {
+            setPackageStates(packageStates)
+            setDisabledSystemPackageStates(disabledSystemPackageStates)
             packageStates.forEach { (packageName, packageState) ->
                 if (packageState.volumeUuid == volumeUuid) {
                     val appId = packageState.appId
-                    appIds.getOrPut(appId) {
+                    mutateAppIdPackageNames().mutateOrPut(appId) {
                         addedAppIds += appId
-                        IndexedListSet()
+                        MutableIndexedListSet()
                     } += packageName
                 }
             }
-            this.knownPackages = knownPackages
+            setKnownPackages(knownPackages)
         }
         addedAppIds.forEachIndexed { _, appId ->
             forEachSchemePolicy {
@@ -147,6 +157,13 @@
         forEachSchemePolicy {
             with(it) { onStorageVolumeMounted(volumeUuid, isSystemUpdated) }
         }
+        packageStates.forEach { (_, packageState) ->
+            if (packageState.volumeUuid == volumeUuid) {
+                newState.systemState.userIds.forEachIndexed { _, userId ->
+                    upgradePackageVersion(packageState, userId)
+                }
+            }
+        }
     }
 
     fun MutateStateScope.onPackageAdded(
@@ -156,20 +173,19 @@
         packageName: String
     ) {
         val packageState = packageStates[packageName]
-        // TODO(zhanghai): STOPSHIP: Remove check before feature enable.
         checkNotNull(packageState) {
             "Added package $packageName isn't found in packageStates in onPackageAdded()"
         }
         val appId = packageState.appId
         var isAppIdAdded = false
-        newState.systemState.apply {
-            this.packageStates = packageStates
-            this.disabledSystemPackageStates = disabledSystemPackageStates
-            appIds.getOrPut(appId) {
+        newState.mutateSystemState(WriteMode.NONE).apply {
+            setPackageStates(packageStates)
+            setDisabledSystemPackageStates(disabledSystemPackageStates)
+            mutateAppIdPackageNames().mutateOrPut(appId) {
                 isAppIdAdded = true
-                IndexedListSet()
+                MutableIndexedListSet()
             } += packageName
-            this.knownPackages = knownPackages
+            setKnownPackages(knownPackages)
         }
         if (isAppIdAdded) {
             forEachSchemePolicy {
@@ -179,6 +195,9 @@
         forEachSchemePolicy {
             with(it) { onPackageAdded(packageState) }
         }
+        newState.systemState.userIds.forEachIndexed { _, userId ->
+            upgradePackageVersion(packageState, userId)
+        }
     }
 
     fun MutateStateScope.onPackageRemoved(
@@ -188,22 +207,21 @@
         packageName: String,
         appId: Int
     ) {
-        // TODO(zhanghai): STOPSHIP: Remove check before feature enable.
         check(packageName !in packageStates) {
             "Removed package $packageName is still in packageStates in onPackageRemoved()"
         }
         var isAppIdRemoved = false
-        newState.systemState.apply {
-            this.packageStates = packageStates
-            this.disabledSystemPackageStates = disabledSystemPackageStates
-            appIds[appId]?.apply {
+        newState.mutateSystemState(WriteMode.NONE).apply {
+            setPackageStates(packageStates)
+            setDisabledSystemPackageStates(disabledSystemPackageStates)
+            mutateAppIdPackageNames().mutate(appId)?.apply {
                 this -= packageName
                 if (isEmpty()) {
-                    appIds -= appId
+                    mutateAppIdPackageNames() -= appId
                     isAppIdRemoved = true
                 }
             }
-            this.knownPackages = knownPackages
+            setKnownPackages(knownPackages)
         }
         forEachSchemePolicy {
             with(it) { onPackageRemoved(packageName, appId) }
@@ -213,6 +231,11 @@
                 with(it) { onAppIdRemoved(appId) }
             }
         }
+        newState.userStates.forEachIndexed { userStateIndex, _, userState ->
+            if (packageName in userState.packageVersions) {
+                newState.mutateUserStateAt(userStateIndex).mutatePackageVersions() -= packageName
+            }
+        }
     }
 
     fun MutateStateScope.onPackageInstalled(
@@ -222,13 +245,12 @@
         packageName: String,
         userId: Int
     ) {
-        newState.systemState.apply {
-            this.packageStates = packageStates
-            this.disabledSystemPackageStates = disabledSystemPackageStates
-            this.knownPackages = knownPackages
+        newState.mutateSystemState(WriteMode.NONE).apply {
+            setPackageStates(packageStates)
+            setDisabledSystemPackageStates(disabledSystemPackageStates)
+            setKnownPackages(knownPackages)
         }
         val packageState = packageStates[packageName]
-        // TODO(zhanghai): STOPSHIP: Remove check before feature enable.
         checkNotNull(packageState) {
             "Installed package $packageName isn't found in packageStates in onPackageInstalled()"
         }
@@ -245,10 +267,10 @@
         appId: Int,
         userId: Int
     ) {
-        newState.systemState.apply {
-            this.packageStates = packageStates
-            this.disabledSystemPackageStates = disabledSystemPackageStates
-            this.knownPackages = knownPackages
+        newState.mutateSystemState(WriteMode.NONE).apply {
+            setPackageStates(packageStates)
+            setDisabledSystemPackageStates(disabledSystemPackageStates)
+            setKnownPackages(knownPackages)
         }
         forEachSchemePolicy {
             with(it) { onPackageUninstalled(packageName, appId, userId) }
@@ -256,13 +278,53 @@
     }
 
     fun MutateStateScope.onSystemReady() {
-        newState.systemState.isSystemReady = true
+        newState.mutateSystemState(WriteMode.NONE).setSystemReady(true)
         forEachSchemePolicy {
             with(it) { onSystemReady() }
         }
     }
 
-    fun BinaryXmlPullParser.parseSystemState(state: AccessState) {
+    fun migrateSystemState(state: MutableAccessState) {
+        forEachSchemePolicy {
+            with(it) { migrateSystemState(state) }
+        }
+    }
+
+    fun migrateUserState(state: MutableAccessState, userId: Int) {
+        forEachSchemePolicy {
+            with(it) { migrateUserState(state, userId) }
+        }
+    }
+
+    private fun MutateStateScope.upgradePackageVersion(packageState: PackageState, userId: Int) {
+        if (packageState.androidPackage == null) {
+            return
+        }
+
+        val packageName = packageState.packageName
+        // The version would be latest when the package is new to the system, e.g. newly
+        // installed, first boot, or system apps added via OTA.
+        val version = newState.userStates[userId]!!.packageVersions[packageName]
+        when {
+            version == null ->
+                newState.mutateUserState(userId)!!.mutatePackageVersions()[packageName] =
+                    VERSION_LATEST
+            version < VERSION_LATEST -> {
+                forEachSchemePolicy {
+                    with(it) { upgradePackageState(packageState, userId, version) }
+                }
+                newState.mutateUserState(userId)!!.mutatePackageVersions()[packageName] =
+                    VERSION_LATEST
+            }
+            version == VERSION_LATEST -> {}
+            else -> Log.w(
+                LOG_TAG, "Unexpected version $version for package $packageName," +
+                    "latest version is $VERSION_LATEST"
+            )
+        }
+    }
+
+    fun BinaryXmlPullParser.parseSystemState(state: MutableAccessState) {
         forEachTag {
             when (tagName) {
                 TAG_ACCESS -> {
@@ -285,13 +347,18 @@
         }
     }
 
-    fun BinaryXmlPullParser.parseUserState(state: AccessState, userId: Int) {
+    fun BinaryXmlPullParser.parseUserState(state: MutableAccessState, userId: Int) {
         forEachTag {
             when (tagName) {
                 TAG_ACCESS -> {
                     forEachTag {
-                        forEachSchemePolicy {
-                            with(it) { parseUserState(state, userId) }
+                        when (tagName) {
+                            TAG_PACKAGE_VERSIONS -> parsePackageVersions(state, userId)
+                            else -> {
+                                forEachSchemePolicy {
+                                    with(it) { parseUserState(state, userId) }
+                                }
+                            }
                         }
                     }
                 }
@@ -305,11 +372,51 @@
         }
     }
 
+    private fun BinaryXmlPullParser.parsePackageVersions(state: MutableAccessState, userId: Int) {
+        val userState = state.mutateUserState(userId, WriteMode.NONE)!!
+        val packageVersions = userState.mutatePackageVersions()
+        forEachTag {
+            when (tagName) {
+                TAG_PACKAGE -> parsePackageVersion(packageVersions)
+                else -> Log.w(LOG_TAG, "Ignoring unknown tag $name when parsing package versions")
+            }
+        }
+        packageVersions.forEachReversedIndexed { packageVersionIndex, packageName, _ ->
+            if (packageName !in state.systemState.packageStates) {
+                Log.w(LOG_TAG, "Dropping unknown $packageName when parsing package versions")
+                packageVersions.removeAt(packageVersionIndex)
+                userState.requestWriteMode(WriteMode.ASYNCHRONOUS)
+            }
+        }
+    }
+
+    private fun BinaryXmlPullParser.parsePackageVersion(
+        packageVersions: MutableIndexedMap<String, Int>
+    ) {
+        val packageName = getAttributeValueOrThrow(ATTR_NAME).intern()
+        val version = getAttributeIntOrThrow(ATTR_VERSION)
+        packageVersions[packageName] = version
+    }
+
     fun BinaryXmlSerializer.serializeUserState(state: AccessState, userId: Int) {
         tag(TAG_ACCESS) {
             forEachSchemePolicy {
                 with(it) { serializeUserState(state, userId) }
             }
+            serializePackageVersions(state.userStates[userId]!!.packageVersions)
+        }
+    }
+
+    private fun BinaryXmlSerializer.serializePackageVersions(
+        packageVersions: IndexedMap<String, Int>
+    ) {
+        tag(TAG_PACKAGE_VERSIONS) {
+            packageVersions.forEachIndexed { _, packageName, version ->
+                tag(TAG_PACKAGE) {
+                    attributeInterned(ATTR_NAME, packageName)
+                    attributeInt(ATTR_VERSION, version)
+                }
+            }
         }
     }
 
@@ -317,8 +424,8 @@
         getSchemePolicy(subject.scheme, `object`.scheme)
 
     private inline fun forEachSchemePolicy(action: (SchemePolicy) -> Unit) {
-        schemePolicies.forEachValueIndexed { _, objectSchemePolicies ->
-            objectSchemePolicies.forEachValueIndexed { _, schemePolicy ->
+        schemePolicies.forEachIndexed { _, _, objectSchemePolicies ->
+            objectSchemePolicies.forEachIndexed { _, _, schemePolicy ->
                 action(schemePolicy)
             }
         }
@@ -327,7 +434,14 @@
     companion object {
         private val LOG_TAG = AccessPolicy::class.java.simpleName
 
+        internal const val VERSION_LATEST = 14
+
         private const val TAG_ACCESS = "access"
+        private const val TAG_PACKAGE_VERSIONS = "package-versions"
+        private const val TAG_PACKAGE = "package"
+
+        private const val ATTR_NAME = "name"
+        private const val ATTR_VERSION = "version"
     }
 }
 
@@ -371,11 +485,21 @@
 
     open fun MutateStateScope.onSystemReady() {}
 
-    open fun BinaryXmlPullParser.parseSystemState(state: AccessState) {}
+    open fun migrateSystemState(state: MutableAccessState) {}
+
+    open fun migrateUserState(state: MutableAccessState, userId: Int) {}
+
+    open fun MutateStateScope.upgradePackageState(
+        packageState: PackageState,
+        userId: Int,
+        version: Int
+    ) {}
+
+    open fun BinaryXmlPullParser.parseSystemState(state: MutableAccessState) {}
 
     open fun BinaryXmlSerializer.serializeSystemState(state: AccessState) {}
 
-    open fun BinaryXmlPullParser.parseUserState(state: AccessState, userId: Int) {}
+    open fun BinaryXmlPullParser.parseUserState(state: MutableAccessState, userId: Int) {}
 
     open fun BinaryXmlSerializer.serializeUserState(state: AccessState, userId: Int) {}
 }
diff --git a/services/permission/java/com/android/server/permission/access/AccessState.kt b/services/permission/java/com/android/server/permission/access/AccessState.kt
index 5532311..976dfe9 100644
--- a/services/permission/java/com/android/server/permission/access/AccessState.kt
+++ b/services/permission/java/com/android/server/permission/access/AccessState.kt
@@ -18,124 +18,398 @@
 
 import android.content.pm.PermissionGroupInfo
 import com.android.server.SystemConfig
-import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.immutable.* // ktlint-disable no-wildcard-imports
 import com.android.server.permission.access.permission.Permission
 import com.android.server.pm.permission.PermissionAllowlist
 import com.android.server.pm.pkg.PackageState
 
-class AccessState private constructor(
-    val systemState: SystemState,
-    val userStates: IntMap<UserState>
+private typealias SystemStateReference = MutableReference<SystemState, MutableSystemState>
+
+typealias UserStates = IntReferenceMap<UserState, MutableUserState>
+typealias MutableUserStates = MutableIntReferenceMap<UserState, MutableUserState>
+private typealias UserStatesReference = MutableReference<UserStates, MutableUserStates>
+
+sealed class AccessState(
+    internal val systemStateReference: SystemStateReference,
+    internal val userStatesReference: UserStatesReference
+) : Immutable<MutableAccessState> {
+    val systemState: SystemState
+        get() = systemStateReference.get()
+
+    val userStates: UserStates
+        get() = userStatesReference.get()
+
+    override fun toMutable(): MutableAccessState = MutableAccessState(this)
+}
+
+class MutableAccessState private constructor(
+    systemStateReference: SystemStateReference,
+    userStatesReference: UserStatesReference
+) : AccessState(
+    systemStateReference,
+    userStatesReference
 ) {
     constructor() : this(
-        SystemState(),
-        IntMap()
+        SystemStateReference(MutableSystemState()),
+        UserStatesReference(MutableUserStates())
     )
 
-    fun copy(): AccessState = AccessState(
-        systemState.copy(),
-        userStates.copy { it.copy() }
+    internal constructor(accessState: AccessState) : this(
+        accessState.systemStateReference.toImmutable(),
+        accessState.userStatesReference.toImmutable()
     )
+
+    fun mutateSystemState(writeMode: Int = WriteMode.ASYNCHRONOUS): MutableSystemState =
+        systemStateReference.mutate().apply { requestWriteMode(writeMode) }
+
+    fun mutateUserStatesNoWrite(): MutableUserStates = userStatesReference.mutate()
+
+    fun mutateUserState(userId: Int, writeMode: Int = WriteMode.ASYNCHRONOUS): MutableUserState? =
+        mutateUserStatesNoWrite().mutate(userId)?.apply { requestWriteMode(writeMode) }
+
+    fun mutateUserStateAt(index: Int, writeMode: Int = WriteMode.ASYNCHRONOUS): MutableUserState =
+        mutateUserStatesNoWrite().mutateAt(index).apply { requestWriteMode(writeMode) }
 }
 
-class SystemState private constructor(
-    val userIds: IntSet,
-    var packageStates: Map<String, PackageState>,
-    var disabledSystemPackageStates: Map<String, PackageState>,
-    val appIds: IntMap<IndexedListSet<String>>,
-    // Mapping from KnownPackages keys to package names.
-    var knownPackages: IntMap<Array<String>>,
-    var isLeanback: Boolean,
-    var configPermissions: Map<String, SystemConfig.PermissionEntry>,
-    var privilegedPermissionAllowlistPackages: IndexedListSet<String>,
-    var permissionAllowlist: PermissionAllowlist,
-    var implicitToSourcePermissions: IndexedMap<String, IndexedListSet<String>>,
-    var isSystemReady: Boolean,
-    // TODO: Get and watch the state for deviceAndProfileOwners
-    // Mapping from user ID to package name.
-    var deviceAndProfileOwners: IntMap<String>,
-    val permissionGroups: IndexedMap<String, PermissionGroupInfo>,
-    val permissionTrees: IndexedMap<String, Permission>,
+private typealias UserIdsReference = MutableReference<IntSet, MutableIntSet>
+
+typealias AppIdPackageNames = IntReferenceMap<IndexedListSet<String>, MutableIndexedListSet<String>>
+typealias MutableAppIdPackageNames =
+    MutableIntReferenceMap<IndexedListSet<String>, MutableIndexedListSet<String>>
+private typealias AppIdPackageNamesReference =
+    MutableReference<AppIdPackageNames, MutableAppIdPackageNames>
+
+private typealias PermissionGroupsReference = MutableReference<
+    IndexedMap<String, PermissionGroupInfo>, MutableIndexedMap<String, PermissionGroupInfo>
+>
+
+private typealias PermissionTreesReference =
+    MutableReference<IndexedMap<String, Permission>, MutableIndexedMap<String, Permission>>
+
+private typealias PermissionsReference =
+    MutableReference<IndexedMap<String, Permission>, MutableIndexedMap<String, Permission>>
+
+sealed class SystemState(
+    val userIdsReference: UserIdsReference,
+    packageStates: Map<String, PackageState>,
+    disabledSystemPackageStates: Map<String, PackageState>,
+    val appIdPackageNamesReference: AppIdPackageNamesReference,
+    knownPackages: IntMap<Array<String>>,
+    isLeanback: Boolean,
+    configPermissions: Map<String, SystemConfig.PermissionEntry>,
+    privilegedPermissionAllowlistPackages: IndexedListSet<String>,
+    permissionAllowlist: PermissionAllowlist,
+    implicitToSourcePermissions: IndexedMap<String, IndexedListSet<String>>,
+    isSystemReady: Boolean,
+    // TODO: STOPSHIP: Get and watch the state for deviceAndProfileOwners
+    deviceAndProfileOwners: IntMap<String>,
+    val permissionGroupsReference: PermissionGroupsReference,
+    val permissionTreesReference: PermissionTreesReference,
+    val permissionsReference: PermissionsReference,
+    writeMode: Int
+) : WritableState, Immutable<MutableSystemState> {
+    val userIds: IntSet
+        get() = userIdsReference.get()
+
+    var packageStates: Map<String, PackageState> = packageStates
+        protected set
+
+    var disabledSystemPackageStates: Map<String, PackageState> = disabledSystemPackageStates
+        protected set
+
+    val appIdPackageNames: AppIdPackageNames
+        get() = appIdPackageNamesReference.get()
+
+    var knownPackages: IntMap<Array<String>> = knownPackages
+        protected set
+
+    var isLeanback: Boolean = isLeanback
+        protected set
+
+    var configPermissions: Map<String, SystemConfig.PermissionEntry> = configPermissions
+        protected set
+
+    var privilegedPermissionAllowlistPackages: IndexedListSet<String> =
+        privilegedPermissionAllowlistPackages
+        protected set
+
+    var permissionAllowlist: PermissionAllowlist = permissionAllowlist
+        protected set
+
+    var implicitToSourcePermissions: IndexedMap<String, IndexedListSet<String>> =
+        implicitToSourcePermissions
+        protected set
+
+    var isSystemReady: Boolean = isSystemReady
+        protected set
+
+    var deviceAndProfileOwners: IntMap<String> = deviceAndProfileOwners
+        protected set
+
+    val permissionGroups: IndexedMap<String, PermissionGroupInfo>
+        get() = permissionGroupsReference.get()
+
+    val permissionTrees: IndexedMap<String, Permission>
+        get() = permissionTreesReference.get()
+
     val permissions: IndexedMap<String, Permission>
-) : WritableState() {
-    constructor() : this(
-        IntSet(),
-        emptyMap(),
-        emptyMap(),
-        IntMap(),
-        IntMap(),
-        false,
-        emptyMap(),
-        IndexedListSet(),
-        PermissionAllowlist(),
-        IndexedMap(),
-        false,
-        IntMap(),
-        IndexedMap(),
-        IndexedMap(),
-        IndexedMap()
-    )
+        get() = permissionsReference.get()
 
-    fun copy(): SystemState =
-        SystemState(
-            userIds.copy(),
-            packageStates,
-            disabledSystemPackageStates,
-            appIds.copy { it.copy() },
-            knownPackages,
-            isLeanback,
-            configPermissions,
-            privilegedPermissionAllowlistPackages,
-            permissionAllowlist,
-            implicitToSourcePermissions,
-            isSystemReady,
-            deviceAndProfileOwners,
-            permissionGroups.copy { it },
-            permissionTrees.copy { it },
-            permissions.copy { it }
-        )
+    override var writeMode: Int = writeMode
+        protected set
+
+    override fun toMutable(): MutableSystemState = MutableSystemState(this)
 }
 
-class UserState private constructor(
-    // A map of (appId to a map of (permissionName to permissionFlags))
-    val uidPermissionFlags: IntMap<IndexedMap<String, Int>>,
-    // appId -> opName -> opCode
-    val uidAppOpModes: IntMap<IndexedMap<String, Int>>,
-    // packageName -> opName -> opCode
-    val packageAppOpModes: IndexedMap<String, IndexedMap<String, Int>>
-) : WritableState() {
+class MutableSystemState private constructor(
+    userIdsReference: UserIdsReference,
+    packageStates: Map<String, PackageState>,
+    disabledSystemPackageStates: Map<String, PackageState>,
+    appIdPackageNamesReference: AppIdPackageNamesReference,
+    knownPackages: IntMap<Array<String>>,
+    isLeanback: Boolean,
+    configPermissions: Map<String, SystemConfig.PermissionEntry>,
+    privilegedPermissionAllowlistPackages: IndexedListSet<String>,
+    permissionAllowlist: PermissionAllowlist,
+    implicitToSourcePermissions: IndexedMap<String, IndexedListSet<String>>,
+    isSystemReady: Boolean,
+    deviceAndProfileOwners: IntMap<String>,
+    permissionGroupsReference: PermissionGroupsReference,
+    permissionTreesReference: PermissionTreesReference,
+    permissionsReference: PermissionsReference,
+    writeMode: Int
+) : SystemState(
+    userIdsReference,
+    packageStates,
+    disabledSystemPackageStates,
+    appIdPackageNamesReference,
+    knownPackages,
+    isLeanback,
+    configPermissions,
+    privilegedPermissionAllowlistPackages,
+    permissionAllowlist,
+    implicitToSourcePermissions,
+    isSystemReady,
+    deviceAndProfileOwners,
+    permissionGroupsReference,
+    permissionTreesReference,
+    permissionsReference,
+    writeMode
+), MutableWritableState {
     constructor() : this(
-        IntMap(),
-        IntMap(),
-        IndexedMap()
+        UserIdsReference(MutableIntSet()),
+        emptyMap(),
+        emptyMap(),
+        AppIdPackageNamesReference(MutableAppIdPackageNames()),
+        MutableIntMap(),
+        false,
+        emptyMap(),
+        MutableIndexedListSet(),
+        PermissionAllowlist(),
+        MutableIndexedMap(),
+        false,
+        MutableIntMap(),
+        PermissionGroupsReference(MutableIndexedMap()),
+        PermissionTreesReference(MutableIndexedMap()),
+        PermissionsReference(MutableIndexedMap()),
+        WriteMode.NONE
     )
 
-    fun copy(): UserState = UserState(
-        uidPermissionFlags.copy { it.copy { it } },
-        uidAppOpModes.copy { it.copy { it } },
-        packageAppOpModes.copy { it.copy { it } }
+    internal constructor(systemState: SystemState) : this(
+        systemState.userIdsReference.toImmutable(),
+        systemState.packageStates,
+        systemState.disabledSystemPackageStates,
+        systemState.appIdPackageNamesReference.toImmutable(),
+        systemState.knownPackages,
+        systemState.isLeanback,
+        systemState.configPermissions,
+        systemState.privilegedPermissionAllowlistPackages,
+        systemState.permissionAllowlist,
+        systemState.implicitToSourcePermissions,
+        systemState.isSystemReady,
+        systemState.deviceAndProfileOwners,
+        systemState.permissionGroupsReference.toImmutable(),
+        systemState.permissionTreesReference.toImmutable(),
+        systemState.permissionsReference.toImmutable(),
+        WriteMode.NONE
     )
+
+    fun mutateUserIds(): MutableIntSet = userIdsReference.mutate()
+
+    @JvmName("setPackageStatesPublic")
+    fun setPackageStates(packageStates: Map<String, PackageState>) {
+        this.packageStates = packageStates
+    }
+
+    @JvmName("setDisabledSystemPackageStatesPublic")
+    fun setDisabledSystemPackageStates(disabledSystemPackageStates: Map<String, PackageState>) {
+        this.disabledSystemPackageStates = disabledSystemPackageStates
+    }
+
+    fun mutateAppIdPackageNames(): MutableAppIdPackageNames = appIdPackageNamesReference.mutate()
+
+    @JvmName("setKnownPackagesPublic")
+    fun setKnownPackages(knownPackages: IntMap<Array<String>>) {
+        this.knownPackages = knownPackages
+    }
+
+    @JvmName("setLeanbackPublic")
+    fun setLeanback(isLeanback: Boolean) {
+        this.isLeanback = isLeanback
+    }
+
+    @JvmName("setConfigPermissionsPublic")
+    fun setConfigPermissions(configPermissions: Map<String, SystemConfig.PermissionEntry>) {
+        this.configPermissions = configPermissions
+    }
+
+    @JvmName("setPrivilegedPermissionAllowlistPackagesPublic")
+    fun setPrivilegedPermissionAllowlistPackages(
+        privilegedPermissionAllowlistPackages: IndexedListSet<String>
+    ) {
+        this.privilegedPermissionAllowlistPackages = privilegedPermissionAllowlistPackages
+    }
+
+    @JvmName("setPermissionAllowlistPublic")
+    fun setPermissionAllowlist(permissionAllowlist: PermissionAllowlist) {
+        this.permissionAllowlist = permissionAllowlist
+    }
+
+    @JvmName("setImplicitToSourcePermissionsPublic")
+    fun setImplicitToSourcePermissions(
+        implicitToSourcePermissions: IndexedMap<String, IndexedListSet<String>>
+    ) {
+        this.implicitToSourcePermissions = implicitToSourcePermissions
+    }
+
+    @JvmName("setSystemReadyPublic")
+    fun setSystemReady(isSystemReady: Boolean) {
+        this.isSystemReady = isSystemReady
+    }
+
+    @JvmName("setDeviceAndProfileOwnersPublic")
+    fun setDeviceAndProfileOwners(deviceAndProfileOwners: IntMap<String>) {
+        this.deviceAndProfileOwners = deviceAndProfileOwners
+    }
+
+    fun mutatePermissionGroups(): MutableIndexedMap<String, PermissionGroupInfo> =
+        permissionGroupsReference.mutate()
+
+    fun mutatePermissionTrees(): MutableIndexedMap<String, Permission> =
+        permissionTreesReference.mutate()
+
+    fun mutatePermissions(): MutableIndexedMap<String, Permission> =
+        permissionsReference.mutate()
+
+    override fun requestWriteMode(writeMode: Int) {
+        this.writeMode = maxOf(this.writeMode, writeMode)
+    }
+}
+
+private typealias PackageVersionsReference =
+    MutableReference<IndexedMap<String, Int>, MutableIndexedMap<String, Int>>
+
+typealias AppIdPermissionFlags =
+    IntReferenceMap<IndexedMap<String, Int>, MutableIndexedMap<String, Int>>
+typealias MutableAppIdPermissionFlags =
+    MutableIntReferenceMap<IndexedMap<String, Int>, MutableIndexedMap<String, Int>>
+private typealias AppIdPermissionFlagsReference =
+    MutableReference<AppIdPermissionFlags, MutableAppIdPermissionFlags>
+
+typealias AppIdAppOpModes =
+    IntReferenceMap<IndexedMap<String, Int>, MutableIndexedMap<String, Int>>
+typealias MutableAppIdAppOpModes =
+    MutableIntReferenceMap<IndexedMap<String, Int>, MutableIndexedMap<String, Int>>
+private typealias AppIdAppOpModesReference =
+    MutableReference<AppIdAppOpModes, MutableAppIdAppOpModes>
+
+typealias PackageAppOpModes =
+    IndexedReferenceMap<String, IndexedMap<String, Int>, MutableIndexedMap<String, Int>>
+typealias MutablePackageAppOpModes =
+    MutableIndexedReferenceMap<String, IndexedMap<String, Int>, MutableIndexedMap<String, Int>>
+private typealias PackageAppOpModesReference =
+    MutableReference<PackageAppOpModes, MutablePackageAppOpModes>
+
+sealed class UserState(
+    internal val packageVersionsReference: PackageVersionsReference,
+    internal val appIdPermissionFlagsReference: AppIdPermissionFlagsReference,
+    internal val appIdAppOpModesReference: AppIdAppOpModesReference,
+    internal val packageAppOpModesReference: PackageAppOpModesReference,
+    writeMode: Int
+) : WritableState, Immutable<MutableUserState> {
+    val packageVersions: IndexedMap<String, Int>
+        get() = packageVersionsReference.get()
+
+    val appIdPermissionFlags: AppIdPermissionFlags
+        get() = appIdPermissionFlagsReference.get()
+
+    val appIdAppOpModes: AppIdAppOpModes
+        get() = appIdAppOpModesReference.get()
+
+    val packageAppOpModes: PackageAppOpModes
+        get() = packageAppOpModesReference.get()
+
+    override var writeMode: Int = writeMode
+        protected set
+
+    override fun toMutable(): MutableUserState = MutableUserState(this)
+}
+
+class MutableUserState private constructor(
+    packageVersionsReference: PackageVersionsReference,
+    appIdPermissionFlagsReference: AppIdPermissionFlagsReference,
+    appIdAppOpModesReference: AppIdAppOpModesReference,
+    packageAppOpModesReference: PackageAppOpModesReference,
+    writeMode: Int
+) : UserState(
+    packageVersionsReference,
+    appIdPermissionFlagsReference,
+    appIdAppOpModesReference,
+    packageAppOpModesReference,
+    writeMode
+), MutableWritableState {
+    constructor() : this(
+        PackageVersionsReference(MutableIndexedMap<String, Int>()),
+        AppIdPermissionFlagsReference(MutableAppIdPermissionFlags()),
+        AppIdAppOpModesReference(MutableAppIdAppOpModes()),
+        PackageAppOpModesReference(MutablePackageAppOpModes()),
+        WriteMode.NONE
+    )
+
+    internal constructor(userState: UserState) : this(
+        userState.packageVersionsReference.toImmutable(),
+        userState.appIdPermissionFlagsReference.toImmutable(),
+        userState.appIdAppOpModesReference.toImmutable(),
+        userState.packageAppOpModesReference.toImmutable(),
+        WriteMode.NONE
+    )
+
+    fun mutatePackageVersions(): MutableIndexedMap<String, Int> = packageVersionsReference.mutate()
+
+    fun mutateAppIdPermissionFlags(): MutableAppIdPermissionFlags =
+        appIdPermissionFlagsReference.mutate()
+
+    fun mutateAppIdAppOpModes(): MutableAppIdAppOpModes = appIdAppOpModesReference.mutate()
+
+    fun mutatePackageAppOpModes(): MutablePackageAppOpModes = packageAppOpModesReference.mutate()
+
+    override fun requestWriteMode(writeMode: Int) {
+        this.writeMode = maxOf(this.writeMode, writeMode)
+    }
 }
 
 object WriteMode {
     const val NONE = 0
-    const val SYNC = 1
-    const val ASYNC = 2
+    const val ASYNCHRONOUS = 1
+    const val SYNCHRONOUS = 2
 }
 
-abstract class WritableState {
-    var writeMode: Int = WriteMode.NONE
-        private set
+interface WritableState {
+    val writeMode: Int
+}
 
-    fun requestWrite(sync: Boolean = false) {
-        if (sync) {
-            writeMode = WriteMode.SYNC
-        } else {
-            if (writeMode != WriteMode.SYNC) {
-                writeMode = WriteMode.ASYNC
-            }
-        }
-    }
+interface MutableWritableState : WritableState {
+    fun requestWriteMode(writeMode: Int)
 }
 
 open class GetStateScope(
@@ -144,5 +418,5 @@
 
 class MutateStateScope(
     val oldState: AccessState,
-    val newState: AccessState
+    val newState: MutableAccessState
 ) : GetStateScope(newState)
diff --git a/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpMigration.kt b/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpMigration.kt
new file mode 100644
index 0000000..eb94a44
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpMigration.kt
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.appop
+
+import android.os.Process
+import android.util.Log
+import com.android.server.LocalServices
+import com.android.server.appop.AppOpMigrationHelper
+import com.android.server.permission.access.MutableAccessState
+import com.android.server.permission.access.immutable.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.util.PackageVersionMigration
+
+class AppIdAppOpMigration {
+    fun migrateUserState(state: MutableAccessState, userId: Int) {
+        val legacyAppOpsManager = LocalServices.getService(AppOpMigrationHelper::class.java)!!
+        if (!legacyAppOpsManager.hasLegacyAppOpState()) {
+            return
+        }
+
+        val legacyAppIdAppOpModes = legacyAppOpsManager.getLegacyAppIdAppOpModes(userId)
+        val version = PackageVersionMigration.getVersion(userId)
+
+        val userState = state.mutateUserState(userId)!!
+        val appIdAppOpModes = userState.mutateAppIdAppOpModes()
+        legacyAppIdAppOpModes.forEach { (appId, legacyAppOpModes) ->
+            val packageNames = state.systemState.appIdPackageNames[appId]
+            // Non-application UIDs may not have an Android package but may still have app op state.
+            if (packageNames == null && appId >= Process.FIRST_APPLICATION_UID) {
+                Log.w(LOG_TAG, "Dropping unknown app ID $appId when migrating app op state")
+                return@forEach
+            }
+
+            val appOpModes = MutableIndexedMap<String, Int>()
+            appIdAppOpModes[appId] = appOpModes
+            legacyAppOpModes.forEach { (appOpName, appOpMode) ->
+                appOpModes[appOpName] = appOpMode
+            }
+
+            if (packageNames != null) {
+                val packageVersions = userState.mutatePackageVersions()
+                packageNames.forEachIndexed { _, packageName ->
+                    packageVersions[packageName] = version
+                }
+            }
+        }
+    }
+
+    companion object {
+        private val LOG_TAG = AppIdAppOpMigration::class.java.simpleName
+    }
+}
diff --git a/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpPersistence.kt b/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpPersistence.kt
new file mode 100644
index 0000000..b6cb17a
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpPersistence.kt
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2022 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.server.permission.access.appop
+
+import android.os.Process
+import android.util.Log
+import com.android.modules.utils.BinaryXmlPullParser
+import com.android.modules.utils.BinaryXmlSerializer
+import com.android.server.permission.access.AccessState
+import com.android.server.permission.access.AppIdAppOpModes
+import com.android.server.permission.access.MutableAccessState
+import com.android.server.permission.access.MutableAppIdAppOpModes
+import com.android.server.permission.access.WriteMode
+import com.android.server.permission.access.immutable.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.util.attributeInt
+import com.android.server.permission.access.util.forEachTag
+import com.android.server.permission.access.util.getAttributeIntOrThrow
+import com.android.server.permission.access.util.tag
+import com.android.server.permission.access.util.tagName
+
+class AppIdAppOpPersistence : BaseAppOpPersistence() {
+    override fun BinaryXmlPullParser.parseUserState(state: MutableAccessState, userId: Int) {
+        when (tagName) {
+            TAG_APP_ID_APP_OPS -> parseAppIdAppOps(state, userId)
+            else -> {}
+        }
+    }
+
+    private fun BinaryXmlPullParser.parseAppIdAppOps(state: MutableAccessState, userId: Int) {
+        val userState = state.mutateUserState(userId, WriteMode.NONE)!!
+        val appIdAppOpModes = userState.mutateAppIdAppOpModes()
+        forEachTag {
+            when (tagName) {
+                TAG_APP_ID -> parseAppId(appIdAppOpModes)
+                else -> Log.w(LOG_TAG, "Ignoring unknown tag $name when parsing app-op state")
+            }
+        }
+        userState.appIdAppOpModes.forEachReversedIndexed { appIdIndex, appId, _ ->
+            // Non-application UIDs may not have an Android package but may still have app op state.
+            if (appId !in state.systemState.appIdPackageNames &&
+                appId >= Process.FIRST_APPLICATION_UID) {
+                Log.w(LOG_TAG, "Dropping unknown app ID $appId when parsing app-op state")
+                appIdAppOpModes.removeAt(appIdIndex)
+                userState.requestWriteMode(WriteMode.ASYNCHRONOUS)
+            }
+        }
+    }
+
+    private fun BinaryXmlPullParser.parseAppId(appIdAppOpModes: MutableAppIdAppOpModes) {
+        val appId = getAttributeIntOrThrow(ATTR_ID)
+        val appOpModes = MutableIndexedMap<String, Int>()
+        appIdAppOpModes[appId] = appOpModes
+        parseAppOps(appOpModes)
+    }
+
+    override fun BinaryXmlSerializer.serializeUserState(state: AccessState, userId: Int) {
+        serializeAppIdAppOps(state.userStates[userId]!!.appIdAppOpModes)
+    }
+
+    private fun BinaryXmlSerializer.serializeAppIdAppOps(appIdAppOpModes: AppIdAppOpModes) {
+        tag(TAG_APP_ID_APP_OPS) {
+            appIdAppOpModes.forEachIndexed { _, appId, appOpModes ->
+                serializeAppId(appId, appOpModes)
+            }
+        }
+    }
+
+    private fun BinaryXmlSerializer.serializeAppId(
+        appId: Int,
+        appOpModes: IndexedMap<String, Int>
+    ) {
+        tag(TAG_APP_ID) {
+            attributeInt(ATTR_ID, appId)
+            serializeAppOps(appOpModes)
+        }
+    }
+
+    companion object {
+        private val LOG_TAG = AppIdAppOpPersistence::class.java.simpleName
+
+        private const val TAG_APP_ID = "app-id"
+        private const val TAG_APP_ID_APP_OPS = "app-id-app-ops"
+
+        private const val ATTR_ID = "id"
+    }
+}
diff --git a/services/permission/java/com/android/server/permission/access/appop/UidAppOpPolicy.kt b/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpPolicy.kt
similarity index 68%
rename from services/permission/java/com/android/server/permission/access/appop/UidAppOpPolicy.kt
rename to services/permission/java/com/android/server/permission/access/appop/AppIdAppOpPolicy.kt
index 0ba9a1e..d783fc8 100644
--- a/services/permission/java/com/android/server/permission/access/appop/UidAppOpPolicy.kt
+++ b/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpPolicy.kt
@@ -20,13 +20,21 @@
 import com.android.server.permission.access.AccessUri
 import com.android.server.permission.access.AppOpUri
 import com.android.server.permission.access.GetStateScope
+import com.android.server.permission.access.MutableAccessState
 import com.android.server.permission.access.MutateStateScope
 import com.android.server.permission.access.UidUri
 import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.immutable.* // ktlint-disable no-wildcard-imports
+import com.android.server.pm.pkg.PackageState
 
-class UidAppOpPolicy : BaseAppOpPolicy(UidAppOpPersistence()) {
+class AppIdAppOpPolicy : BaseAppOpPolicy(AppIdAppOpPersistence()) {
+    private val migration = AppIdAppOpMigration()
+
+    private val upgrade = AppIdAppOpUpgrade(this)
+
     @Volatile
-    private var onAppOpModeChangedListeners = IndexedListSet<OnAppOpModeChangedListener>()
+    private var onAppOpModeChangedListeners: IndexedListSet<OnAppOpModeChangedListener> =
+        MutableIndexedListSet()
     private val onAppOpModeChangedListenersLock = Any()
 
     override val subjectScheme: String
@@ -53,27 +61,30 @@
     }
 
     override fun MutateStateScope.onAppIdRemoved(appId: Int) {
-        newState.userStates.forEachIndexed { _, _, userState ->
-            userState.uidAppOpModes -= appId
-            userState.requestWrite()
-            // Skip notifying the change listeners since the app ID no longer exists.
+        newState.userStates.forEachIndexed { userStateIndex, _, userState ->
+            val appIdIndex = userState.appIdAppOpModes.indexOfKey(appId)
+            if (appIdIndex >= 0) {
+                newState.mutateUserStateAt(userStateIndex).mutateAppIdAppOpModes()
+                    .removeAt(appIdIndex)
+                // Skip notifying the change listeners since the app ID no longer exists.
+            }
         }
     }
 
     fun GetStateScope.getAppOpModes(appId: Int, userId: Int): IndexedMap<String, Int>? =
-        state.userStates[userId].uidAppOpModes[appId]
+        state.userStates[userId]!!.appIdAppOpModes[appId]
 
     fun MutateStateScope.removeAppOpModes(appId: Int, userId: Int): Boolean {
-        val userState = newState.userStates[userId]
-        val isChanged = userState.uidAppOpModes.removeReturnOld(appId) != null
-        if (isChanged) {
-            userState.requestWrite()
+        val appIdIndex = newState.userStates[userId]!!.appIdAppOpModes.indexOfKey(appId)
+        if (appIdIndex < 0) {
+            return false
         }
-        return isChanged
+        newState.mutateUserState(userId)!!.mutateAppIdAppOpModes().removeAt(appIdIndex)
+        return true
     }
 
     fun GetStateScope.getAppOpMode(appId: Int, userId: Int, appOpName: String): Int =
-        state.userStates[userId].uidAppOpModes[appId]
+        state.userStates[userId]!!.appIdAppOpModes[appId]
             .getWithDefault(appOpName, AppOpsManager.opToDefaultMode(appOpName))
 
     fun MutateStateScope.setAppOpMode(
@@ -82,23 +93,18 @@
         appOpName: String,
         mode: Int
     ): Boolean {
-        val userState = newState.userStates[userId]
-        val uidAppOpModes = userState.uidAppOpModes
-        var appOpModes = uidAppOpModes[appId]
         val defaultMode = AppOpsManager.opToDefaultMode(appOpName)
-        val oldMode = appOpModes.getWithDefault(appOpName, defaultMode)
+        val oldMode = newState.userStates[userId]!!.appIdAppOpModes[appId]
+            .getWithDefault(appOpName, defaultMode)
         if (oldMode == mode) {
             return false
         }
-        if (appOpModes == null) {
-            appOpModes = IndexedMap()
-            uidAppOpModes[appId] = appOpModes
-        }
+        val appIdAppOpModes = newState.mutateUserState(userId)!!.mutateAppIdAppOpModes()
+        val appOpModes = appIdAppOpModes.mutateOrPut(appId) { MutableIndexedMap() }
         appOpModes.putWithDefault(appOpName, mode, defaultMode)
         if (appOpModes.isEmpty()) {
-            uidAppOpModes -= appId
+            appIdAppOpModes -= appId
         }
-        userState.requestWrite()
         onAppOpModeChangedListeners.forEachIndexed { _, it ->
             it.onAppOpModeChanged(appId, userId, appOpName, oldMode, mode)
         }
@@ -117,6 +123,18 @@
         }
     }
 
+    override fun migrateUserState(state: MutableAccessState, userId: Int) {
+        with(migration) { migrateUserState(state, userId) }
+    }
+
+    override fun MutateStateScope.upgradePackageState(
+        packageState: PackageState,
+        userId: Int,
+        version: Int,
+    ) {
+        with(upgrade) { upgradePackageState(packageState, userId, version) }
+    }
+
     /**
      * Listener for app op mode changes.
      */
diff --git a/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpUpgrade.kt b/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpUpgrade.kt
new file mode 100644
index 0000000..12df95e
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpUpgrade.kt
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.appop
+
+import android.app.AppOpsManager
+import com.android.server.permission.access.MutateStateScope
+import com.android.server.pm.pkg.PackageState
+
+class AppIdAppOpUpgrade(private val policy: AppIdAppOpPolicy) {
+    fun MutateStateScope.upgradePackageState(
+        packageState: PackageState,
+        userId: Int,
+        version: Int,
+    ) {
+        if (version <= 2) {
+            with(policy) {
+                val appOpMode = getAppOpMode(
+                    packageState.appId, userId, AppOpsManager.OPSTR_RUN_IN_BACKGROUND
+                )
+                setAppOpMode(
+                    packageState.appId, userId, AppOpsManager.OPSTR_RUN_ANY_IN_BACKGROUND, appOpMode
+                )
+            }
+        }
+        if (version <= 13) {
+            val permissionName = AppOpsManager.opToPermission(AppOpsManager.OP_SCHEDULE_EXACT_ALARM)
+            if (permissionName in packageState.androidPackage!!.requestedPermissions) {
+                with(policy) {
+                    val appOpMode = getAppOpMode(
+                        packageState.appId, userId, AppOpsManager.OPSTR_SCHEDULE_EXACT_ALARM
+                    )
+                    val defaultAppOpMode =
+                        AppOpsManager.opToDefaultMode(AppOpsManager.OP_SCHEDULE_EXACT_ALARM)
+                    if (appOpMode == defaultAppOpMode) {
+                        setAppOpMode(
+                            packageState.appId, userId, AppOpsManager.OPSTR_SCHEDULE_EXACT_ALARM,
+                            AppOpsManager.MODE_ALLOWED
+                        )
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/services/permission/java/com/android/server/permission/access/appop/AppOpService.kt b/services/permission/java/com/android/server/permission/access/appop/AppOpService.kt
index af85eba..5b91ad9 100644
--- a/services/permission/java/com/android/server/permission/access/appop/AppOpService.kt
+++ b/services/permission/java/com/android/server/permission/access/appop/AppOpService.kt
@@ -16,82 +16,70 @@
 
 package com.android.server.permission.access.appop
 
-import android.Manifest
-import android.annotation.UserIdInt
-import android.app.AppGlobals
 import android.app.AppOpsManager
-import android.content.pm.PackageManager
-import android.os.Binder
 import android.os.Handler
-import android.os.RemoteException
 import android.os.UserHandle
+import android.util.ArrayMap
+import android.util.ArraySet
 import android.util.SparseBooleanArray
 import android.util.SparseIntArray
 import com.android.internal.annotations.VisibleForTesting
-import com.android.internal.util.ArrayUtils
-import com.android.internal.util.function.pooled.PooledLambda
 import com.android.server.appop.AppOpsCheckingServiceInterface
-import com.android.server.appop.OnOpModeChangedListener
+import com.android.server.appop.AppOpsCheckingServiceInterface.AppOpsModeChangedListener
 import com.android.server.permission.access.AccessCheckingService
 import com.android.server.permission.access.AppOpUri
 import com.android.server.permission.access.PackageUri
 import com.android.server.permission.access.UidUri
-import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports
-import com.android.server.permission.access.util.hasBits
-import libcore.util.EmptyArray
-import java.io.PrintWriter
+import com.android.server.permission.access.collection.forEachIndexed
+import com.android.server.permission.access.collection.set
 
 class AppOpService(
     private val service: AccessCheckingService
 ) : AppOpsCheckingServiceInterface {
     private val packagePolicy = service.getSchemePolicy(PackageUri.SCHEME, AppOpUri.SCHEME)
         as PackageAppOpPolicy
-    private val uidPolicy = service.getSchemePolicy(UidUri.SCHEME, AppOpUri.SCHEME)
-        as UidAppOpPolicy
+    private val appIdPolicy = service.getSchemePolicy(UidUri.SCHEME, AppOpUri.SCHEME)
+        as AppIdAppOpPolicy
 
     private val context = service.context
     private lateinit var handler: Handler
-    private lateinit var lock: Any
-    private lateinit var switchedOps: IntMap<IntArray>
+
+    @Volatile
+    private var listeners = ArraySet<AppOpsModeChangedListener>()
+    private val listenersLock = Any()
 
     fun initialize() {
         // TODO(b/252883039): Wrong handler. Inject main thread handler here.
         handler = Handler(context.mainLooper)
-        // TODO(b/252883039): Wrong lock object. Inject AppOpsService here.
-        lock = Any()
 
-        switchedOps = IntMap()
-        for (switchedCode in 0 until AppOpsManager._NUM_OP) {
-            val switchCode = AppOpsManager.opToSwitch(switchedCode)
-            switchedOps.put(switchCode,
-                ArrayUtils.appendInt(switchedOps.get(switchCode), switchedCode))
-        }
+        appIdPolicy.addOnAppOpModeChangedListener(OnAppIdAppOpModeChangedListener())
+        packagePolicy.addOnAppOpModeChangedListener(OnPackageAppOpModeChangedListener())
     }
 
     @VisibleForTesting
     override fun writeState() {
-        // TODO Not yet implemented
+        // Not implemented because writes are handled automatically.
     }
 
     override fun readState() {
-        // TODO Not yet implemented
+        // Not implemented because reads are handled automatically.
     }
 
     @VisibleForTesting
     override fun shutdown() {
-        // TODO Not yet implemented
+        // Not implemented because writes are handled automatically.
     }
 
     override fun systemReady() {
-        // TODO Not yet implemented
+        // Not implemented because upgrades are handled automatically.
     }
 
     override fun getNonDefaultUidModes(uid: Int): SparseIntArray {
-        return opNameMapToOpIntMap(getUidModes(uid))
+        return opNameMapToOpSparseArray(getUidModes(uid))
     }
 
     override fun getNonDefaultPackageModes(packageName: String, userId: Int): SparseIntArray {
-        return opNameMapToOpIntMap(getPackageModes(packageName, userId))
+        return opNameMapToOpSparseArray(getPackageModes(packageName, userId))
     }
 
     override fun getUidMode(uid: Int, op: Int): Int {
@@ -99,16 +87,14 @@
         val userId = UserHandle.getUserId(uid)
         val opName = AppOpsManager.opToPublicName(op)
         return service.getState {
-            with(uidPolicy) { getAppOpMode(appId, userId, opName) }
+            with(appIdPolicy) { getAppOpMode(appId, userId, opName) }
         }
     }
 
-    private fun getUidModes(uid: Int): IndexedMap<String, Int>? {
+    private fun getUidModes(uid: Int): ArrayMap<String, Int>? {
         val appId = UserHandle.getAppId(uid)
         val userId = UserHandle.getUserId(uid)
-        return service.getState {
-            with(uidPolicy) { getAppOpModes(appId, userId) }
-        }
+        return service.getState { with(appIdPolicy) { getAppOpModes(appId, userId) } }?.map
     }
 
     override fun setUidMode(uid: Int, op: Int, mode: Int): Boolean {
@@ -117,7 +103,7 @@
         val opName = AppOpsManager.opToPublicName(op)
         var wasChanged = false
         service.mutateState {
-            wasChanged = with(uidPolicy) { setAppOpMode(appId, userId, opName, mode) }
+            wasChanged = with(appIdPolicy) { setAppOpMode(appId, userId, opName, mode) }
         }
         return wasChanged
     }
@@ -132,8 +118,8 @@
     private fun getPackageModes(
         packageName: String,
         userId: Int
-    ): IndexedMap<String, Int>? =
-        service.getState { with(packagePolicy) { getAppOpModes(packageName, userId) } }
+    ): ArrayMap<String, Int>? =
+        service.getState { with(packagePolicy) { getAppOpModes(packageName, userId) } }?.map
 
     override fun setPackageMode(packageName: String, op: Int, mode: Int, userId: Int) {
         val opName = AppOpsManager.opToPublicName(op)
@@ -146,7 +132,7 @@
         val appId = UserHandle.getAppId(uid)
         val userId = UserHandle.getUserId(uid)
         service.mutateState {
-            with(uidPolicy) { removeAppOpModes(appId, userId) }
+            with(appIdPolicy) { removeAppOpModes(appId, userId) }
         }
     }
 
@@ -158,15 +144,15 @@
         return wasChanged
     }
 
-    private fun opNameMapToOpIntMap(modes: IndexedMap<String, Int>?): SparseIntArray =
+    private fun opNameMapToOpSparseArray(modes: ArrayMap<String, Int>?): SparseIntArray =
         if (modes == null) {
             SparseIntArray()
         } else {
-            val opIntMap = SparseIntArray(modes.size)
+            val opSparseArray = SparseIntArray(modes.size)
             modes.forEachIndexed { _, opName, opMode ->
-                opIntMap.put(AppOpsManager.strOpToOp(opName), opMode)
+                opSparseArray.put(AppOpsManager.strOpToOp(opName), opMode)
             }
-            opIntMap
+            opSparseArray
         }
 
     override fun areUidModesDefault(uid: Int): Boolean {
@@ -184,308 +170,108 @@
         // and we have our own persistence.
     }
 
-    // code -> listeners
-    private val opModeWatchers = IntMap<IndexedSet<OnOpModeChangedListener>>()
-
-    // packageName -> listeners
-    private val packageModeWatchers = IndexedMap<String, IndexedSet<OnOpModeChangedListener>>()
-
-    override fun startWatchingOpModeChanged(changedListener: OnOpModeChangedListener, op: Int) {
-        synchronized(lock) {
-            opModeWatchers.getOrPut(op) { IndexedSet() } += changedListener
-        }
-    }
-
-    override fun startWatchingPackageModeChanged(
-        changedListener: OnOpModeChangedListener,
-        packageName: String
-    ) {
-        synchronized(lock) {
-            packageModeWatchers.getOrPut(packageName) { IndexedSet() } += changedListener
-        }
-    }
-
-    override fun removeListener(changedListener: OnOpModeChangedListener) {
-        synchronized(lock) {
-            opModeWatchers.removeAllIndexed { _, _, listeners ->
-                listeners -= changedListener
-                listeners.isEmpty()
-            }
-            packageModeWatchers.removeAllIndexed { _, _, listeners ->
-                listeners -= changedListener
-                listeners.isEmpty()
+    override fun getForegroundOps(uid: Int): SparseBooleanArray {
+        return SparseBooleanArray().apply {
+            getUidModes(uid)?.forEachIndexed { _, op, mode ->
+                if (mode == AppOpsManager.MODE_FOREGROUND) {
+                    this[AppOpsManager.strOpToOp(op)] = true
+                }
             }
         }
     }
 
-    override fun getOpModeChangedListeners(op: Int): IndexedSet<OnOpModeChangedListener> {
-        synchronized(lock) {
-            val listeners = opModeWatchers[op]
-            return if (listeners == null) {
-                IndexedSet()
-            } else {
-                IndexedSet(listeners)
+    override fun getForegroundOps(packageName: String, userId: Int): SparseBooleanArray {
+        return SparseBooleanArray().apply {
+            getPackageModes(packageName, userId)?.forEachIndexed { _, op, mode ->
+                if (mode == AppOpsManager.MODE_FOREGROUND) {
+                    this[AppOpsManager.strOpToOp(op)] = true
+                }
             }
         }
     }
 
-    override fun getPackageModeChangedListeners(
-        packageName: String
-    ): IndexedSet<OnOpModeChangedListener> {
-        synchronized(lock) {
-            val listeners = packageModeWatchers[packageName]
-            return if (listeners == null) {
-                IndexedSet()
-            } else {
-                IndexedSet(listeners)
-            }
+    override fun addAppOpsModeChangedListener(listener: AppOpsModeChangedListener): Boolean {
+        synchronized(listenersLock) {
+            val newListeners = ArraySet(listeners)
+            val result = newListeners.add(listener)
+            listeners = newListeners
+            return result
         }
     }
 
-    override fun notifyWatchersOfChange(op: Int, uid: Int) {
-        val listeners = getOpModeChangedListeners(op)
-        listeners.forEachIndexed { _, listener ->
-            notifyOpChanged(listener, op, uid, null)
+    override fun removeAppOpsModeChangedListener(listener: AppOpsModeChangedListener): Boolean {
+        synchronized(listenersLock) {
+            val newListeners = ArraySet(listeners)
+            val result = newListeners.remove(listener)
+            listeners = newListeners
+            return result
         }
     }
 
-    override fun notifyOpChanged(
-        changedListener: OnOpModeChangedListener,
-        op: Int,
-        uid: Int,
-        packageName: String?
-    ) {
-        if (uid != UID_ANY &&
-            changedListener.watchingUid >= 0 &&
-            changedListener.watchingUid != uid
+    inner class OnAppIdAppOpModeChangedListener : AppIdAppOpPolicy.OnAppOpModeChangedListener() {
+        // (uid, appOpCode) -> newMode
+        val pendingChanges = ArrayMap<Pair<Int, Int>, Int>()
+
+        override fun onAppOpModeChanged(
+            appId: Int,
+            userId: Int,
+            appOpName: String,
+            oldMode: Int,
+            newMode: Int
         ) {
-            return
+            val uid = UserHandle.getUid(userId, appId)
+            val appOpCode = AppOpsManager.strOpToOp(appOpName)
+            val key = Pair(uid, appOpCode)
+
+            pendingChanges[key] = newMode
         }
 
-        // See CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE
-        val switchedCodes = when (changedListener.watchedOpCode) {
-            ALL_OPS -> switchedOps.get(op)
-            AppOpsManager.OP_NONE -> intArrayOf(op)
-            else -> intArrayOf(changedListener.watchedOpCode)
-        }
+        override fun onStateMutated() {
+            val listenersLocal = listeners
+            pendingChanges.forEachIndexed { _, key, mode ->
+                listenersLocal.forEachIndexed { _, listener ->
+                    val uid = key.first
+                    val appOpCode = key.second
 
-        for (switchedCode in switchedCodes) {
-            // There are features watching for mode changes such as window manager
-            // and location manager which are in our process. The callbacks in these
-            // features may require permissions our remote caller does not have.
-            val identity = Binder.clearCallingIdentity()
-            try {
-                if (!shouldIgnoreCallback(switchedCode, changedListener)) {
-                    changedListener.onOpModeChanged(switchedCode, uid, packageName)
+                    listener.onUidModeChanged(uid, appOpCode, mode)
                 }
-            } catch (e: RemoteException) {
-                /* ignore */
-            } finally {
-                Binder.restoreCallingIdentity(identity)
             }
+
+            pendingChanges.clear()
         }
     }
 
-    private fun shouldIgnoreCallback(op: Int, listener: OnOpModeChangedListener): Boolean {
-        // If it's a restricted read op, ignore it if watcher doesn't have manage ops permission,
-        // as watcher should not use this to signal if the value is changed.
-        return AppOpsManager.opRestrictsRead(op) && context.checkPermission(
-            Manifest.permission.MANAGE_APPOPS,
-            listener.callingPid,
-            listener.callingUid
-        ) != PackageManager.PERMISSION_GRANTED
-    }
+    private inner class OnPackageAppOpModeChangedListener :
+        PackageAppOpPolicy.OnAppOpModeChangedListener() {
+        // (packageName, userId, appOpCode) -> newMode
+        val pendingChanges = ArrayMap<Triple<String, Int, Int>, Int>()
 
-    /**
-     * Construct a map from each listener (listening to the given op, uid) to all of its associated
-     * packageNames (by reverse-indexing opModeWatchers and packageModeWatchers), then invoke
-     * notifyOpChanged for each listener.
-     */
-    override fun notifyOpChangedForAllPkgsInUid(
-        op: Int,
-        uid: Int,
-        onlyForeground: Boolean,
-        callbackToIgnore: OnOpModeChangedListener?
-    ) {
-        val uidPackageNames = getPackagesForUid(uid)
-        val callbackSpecs = IndexedMap<OnOpModeChangedListener, IndexedSet<String>>()
-
-        fun associateListenerWithPackageNames(
-            listener: OnOpModeChangedListener,
-            packageNames: Array<String>
+        override fun onAppOpModeChanged(
+            packageName: String,
+            userId: Int,
+            appOpName: String,
+            oldMode: Int,
+            newMode: Int
         ) {
-            val listenerIsForeground =
-                listener.flags.hasBits(AppOpsManager.WATCH_FOREGROUND_CHANGES)
-            if (onlyForeground && !listenerIsForeground) {
-                return
-            }
-            val changedPackages = callbackSpecs.getOrPut(listener) { IndexedSet() }
-            changedPackages.addAll(packageNames)
+            val appOpCode = AppOpsManager.strOpToOp(appOpName)
+            val key = Triple(packageName, userId, appOpCode)
+
+            pendingChanges[key] = newMode
         }
 
-        synchronized(lock) {
-            // Collect all listeners from opModeWatchers and pckageModeWatchers
-            val listeners = opModeWatchers[op]
-            listeners?.forEachIndexed { _, listener ->
-                associateListenerWithPackageNames(listener, uidPackageNames)
-            }
-            uidPackageNames.forEachIndexed { _, uidPackageName ->
-                val packageListeners = packageModeWatchers[uidPackageName]
-                packageListeners?.forEachIndexed { _, listener ->
-                    associateListenerWithPackageNames(listener, arrayOf(uidPackageName))
+        override fun onStateMutated() {
+            val listenersLocal = listeners
+            pendingChanges.forEachIndexed { _, key, mode ->
+                listenersLocal.forEachIndexed { _, listener ->
+                    val packageName = key.first
+                    val userId = key.second
+                    val appOpCode = key.third
+
+                    listener.onPackageModeChanged(packageName, userId, appOpCode, mode)
                 }
             }
-            // Remove ignored listeners
-            if (callbackToIgnore != null) {
-                callbackSpecs.remove(callbackToIgnore)
-            }
+
+            pendingChanges.clear()
         }
-
-        // For each (listener, packageName) pair, invoke notifyOpChanged
-        callbackSpecs.forEachIndexed { _, listener, reportedPackageNames ->
-            reportedPackageNames.forEachIndexed { _, reportedPackageName ->
-                handler.sendMessage(
-                    PooledLambda.obtainMessage(
-                        AppOpService::notifyOpChanged, this, listener,
-                        op, uid, reportedPackageName
-                    )
-                )
-            }
-        }
-    }
-
-    private fun getPackagesForUid(uid: Int): Array<String> {
-        // Very early during boot the package manager is not yet or not yet fully started. At this
-        // time there are no packages yet.
-        return try {
-            AppGlobals.getPackageManager()?.getPackagesForUid(uid) ?: EmptyArray.STRING
-        } catch (e: RemoteException) {
-            EmptyArray.STRING
-        }
-    }
-
-    override fun evalForegroundUidOps(
-        uid: Int,
-        foregroundOps: SparseBooleanArray?
-    ): SparseBooleanArray? {
-        synchronized(lock) {
-            val uidModes = getUidModes(uid)
-            return evalForegroundOps(uidModes, foregroundOps)
-        }
-    }
-
-    override fun evalForegroundPackageOps(
-        packageName: String,
-        foregroundOps: SparseBooleanArray?,
-        @UserIdInt userId: Int
-    ): SparseBooleanArray? {
-        synchronized(lock) {
-            val ops = service.getState { getPackageModes(packageName, userId) }
-            return evalForegroundOps(ops, foregroundOps)
-        }
-    }
-
-    private fun evalForegroundOps(
-        ops: IndexedMap<String, Int>?,
-        foregroundOps: SparseBooleanArray?
-    ): SparseBooleanArray? {
-        var foregroundOps = foregroundOps
-        ops?.forEachIndexed { _, opName, opMode ->
-            if (opMode == AppOpsManager.MODE_FOREGROUND) {
-                if (foregroundOps == null) {
-                    foregroundOps = SparseBooleanArray()
-                }
-                evalForegroundWatchers(opName, foregroundOps!!)
-            }
-        }
-        return foregroundOps
-    }
-
-    private fun evalForegroundWatchers(opName: String, foregroundOps: SparseBooleanArray) {
-        val opCode = AppOpsManager.strOpToOp(opName)
-        val listeners = opModeWatchers[opCode]
-        val hasForegroundListeners = foregroundOps[opCode] || listeners?.anyIndexed { _, listener ->
-            listener.flags.hasBits(AppOpsManager.WATCH_FOREGROUND_CHANGES)
-        } ?: false
-        foregroundOps.put(opCode, hasForegroundListeners)
-    }
-
-    override fun dumpListeners(
-        dumpOp: Int,
-        dumpUid: Int,
-        dumpPackage: String?,
-        printWriter: PrintWriter
-    ): Boolean {
-        var needSep = false
-        if (opModeWatchers.size() > 0) {
-            var printedHeader = false
-            opModeWatchers.forEachIndexed { _, op, modeChangedListenerSet ->
-                if (dumpOp >= 0 && dumpOp != op) {
-                    return@forEachIndexed // continue
-                }
-                val opName = AppOpsManager.opToName(op)
-                var printedOpHeader = false
-                modeChangedListenerSet.forEachIndexed listenerLoop@ { listenerIndex, listener ->
-                    with(printWriter) {
-                        if (dumpPackage != null &&
-                            dumpUid != UserHandle.getAppId(listener.watchingUid)) {
-                            return@listenerLoop // continue
-                        }
-                        needSep = true
-                        if (!printedHeader) {
-                            println("  Op mode watchers:")
-                            printedHeader = true
-                        }
-                        if (!printedOpHeader) {
-                            print("    Op ")
-                            print(opName)
-                            println(":")
-                            printedOpHeader = true
-                        }
-                        print("      #")
-                        print(listenerIndex)
-                        print(opName)
-                        print(": ")
-                        println(listener.toString())
-                    }
-                }
-            }
-        }
-
-        if (packageModeWatchers.size > 0 && dumpOp < 0) {
-            var printedHeader = false
-            packageModeWatchers.forEachIndexed { _, packageName, listeners ->
-                with(printWriter) {
-                    if (dumpPackage != null && dumpPackage != packageName) {
-                        return@forEachIndexed // continue
-                    }
-                    needSep = true
-                    if (!printedHeader) {
-                        println("  Package mode watchers:")
-                        printedHeader = true
-                    }
-                    print("    Pkg ")
-                    print(packageName)
-                    println(":")
-                    listeners.forEachIndexed { listenerIndex, listener ->
-                        print("      #")
-                        print(listenerIndex)
-                        print(": ")
-                        println(listener.toString())
-                    }
-                }
-            }
-        }
-        return needSep
-    }
-
-    companion object {
-        private val LOG_TAG = AppOpService::class.java.simpleName
-
-        // Constant meaning that any UID should be matched when dispatching callbacks
-        private const val UID_ANY = -2
-
-        // If watchedOpCode==ALL_OPS, notify for ops affected by the switch-op
-        private const val ALL_OPS = -2
     }
 }
diff --git a/services/permission/java/com/android/server/permission/access/appop/BaseAppOpPersistence.kt b/services/permission/java/com/android/server/permission/access/appop/BaseAppOpPersistence.kt
index 5faf96f..53e5392 100644
--- a/services/permission/java/com/android/server/permission/access/appop/BaseAppOpPersistence.kt
+++ b/services/permission/java/com/android/server/permission/access/appop/BaseAppOpPersistence.kt
@@ -20,7 +20,9 @@
 import com.android.modules.utils.BinaryXmlPullParser
 import com.android.modules.utils.BinaryXmlSerializer
 import com.android.server.permission.access.AccessState
+import com.android.server.permission.access.MutableAccessState
 import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.immutable.* // ktlint-disable no-wildcard-imports
 import com.android.server.permission.access.util.attributeInt
 import com.android.server.permission.access.util.attributeInterned
 import com.android.server.permission.access.util.forEachTag
@@ -30,11 +32,11 @@
 import com.android.server.permission.access.util.tagName
 
 abstract class BaseAppOpPersistence {
-    abstract fun BinaryXmlPullParser.parseUserState(state: AccessState, userId: Int)
+    abstract fun BinaryXmlPullParser.parseUserState(state: MutableAccessState, userId: Int)
 
     abstract fun BinaryXmlSerializer.serializeUserState(state: AccessState, userId: Int)
 
-    protected fun BinaryXmlPullParser.parseAppOps(appOpModes: IndexedMap<String, Int>) {
+    protected fun BinaryXmlPullParser.parseAppOps(appOpModes: MutableIndexedMap<String, Int>) {
         forEachTag {
             when (tagName) {
                 TAG_APP_OP -> parseAppOp(appOpModes)
@@ -43,7 +45,7 @@
         }
     }
 
-    private fun BinaryXmlPullParser.parseAppOp(appOpModes: IndexedMap<String, Int>) {
+    private fun BinaryXmlPullParser.parseAppOp(appOpModes: MutableIndexedMap<String, Int>) {
         val name = getAttributeValueOrThrow(ATTR_NAME).intern()
         val mode = getAttributeIntOrThrow(ATTR_MODE)
         appOpModes[name] = mode
diff --git a/services/permission/java/com/android/server/permission/access/appop/BaseAppOpPolicy.kt b/services/permission/java/com/android/server/permission/access/appop/BaseAppOpPolicy.kt
index 9c8c0ce..c0a85f8 100644
--- a/services/permission/java/com/android/server/permission/access/appop/BaseAppOpPolicy.kt
+++ b/services/permission/java/com/android/server/permission/access/appop/BaseAppOpPolicy.kt
@@ -20,6 +20,7 @@
 import com.android.modules.utils.BinaryXmlSerializer
 import com.android.server.permission.access.AccessState
 import com.android.server.permission.access.AppOpUri
+import com.android.server.permission.access.MutableAccessState
 import com.android.server.permission.access.SchemePolicy
 
 abstract class BaseAppOpPolicy(
@@ -28,7 +29,7 @@
     override val objectScheme: String
         get() = AppOpUri.SCHEME
 
-    override fun BinaryXmlPullParser.parseUserState(state: AccessState, userId: Int) {
+    override fun BinaryXmlPullParser.parseUserState(state: MutableAccessState, userId: Int) {
         with(persistence) { this@parseUserState.parseUserState(state, userId) }
     }
 
diff --git a/services/permission/java/com/android/server/permission/access/appop/PackageAppOpMigration.kt b/services/permission/java/com/android/server/permission/access/appop/PackageAppOpMigration.kt
new file mode 100644
index 0000000..b41c411
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/appop/PackageAppOpMigration.kt
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.appop
+
+import android.util.Log
+import com.android.server.LocalServices
+import com.android.server.appop.AppOpMigrationHelper
+import com.android.server.permission.access.MutableAccessState
+import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.immutable.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.util.PackageVersionMigration
+
+class PackageAppOpMigration {
+    fun migrateUserState(state: MutableAccessState, userId: Int) {
+        val legacyAppOpsManager = LocalServices.getService(AppOpMigrationHelper::class.java)!!
+        if (!legacyAppOpsManager.hasLegacyAppOpState()) {
+            return
+        }
+
+        val legacyPackageAppOpModes = legacyAppOpsManager.getLegacyPackageAppOpModes(userId)
+        val version = PackageVersionMigration.getVersion(userId)
+
+        val userState = state.mutateUserState(userId)!!
+        val packageAppOpModes = userState.mutatePackageAppOpModes()
+        legacyPackageAppOpModes.forEach { (packageName, legacyAppOpModes) ->
+            if (packageName !in state.systemState.packageStates) {
+                Log.w(LOG_TAG, "Dropping unknown package $packageName when migrating app op state")
+                return@forEach
+            }
+
+            val appOpModes = MutableIndexedMap<String, Int>()
+            packageAppOpModes[packageName] = appOpModes
+            legacyAppOpModes.forEach { (appOpName, appOpMode) ->
+                appOpModes[appOpName] = appOpMode
+            }
+
+            userState.mutatePackageVersions()[packageName] = version
+        }
+    }
+
+    companion object {
+        private val LOG_TAG = PackageAppOpMigration::class.java.simpleName
+    }
+}
diff --git a/services/permission/java/com/android/server/permission/access/appop/PackageAppOpPersistence.kt b/services/permission/java/com/android/server/permission/access/appop/PackageAppOpPersistence.kt
index 6ef117a..b424b4e 100644
--- a/services/permission/java/com/android/server/permission/access/appop/PackageAppOpPersistence.kt
+++ b/services/permission/java/com/android/server/permission/access/appop/PackageAppOpPersistence.kt
@@ -20,8 +20,12 @@
 import com.android.modules.utils.BinaryXmlPullParser
 import com.android.modules.utils.BinaryXmlSerializer
 import com.android.server.permission.access.AccessState
-import com.android.server.permission.access.UserState
+import com.android.server.permission.access.MutableAccessState
+import com.android.server.permission.access.MutablePackageAppOpModes
+import com.android.server.permission.access.PackageAppOpModes
+import com.android.server.permission.access.WriteMode
 import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.immutable.* // ktlint-disable no-wildcard-imports
 import com.android.server.permission.access.util.attributeInterned
 import com.android.server.permission.access.util.forEachTag
 import com.android.server.permission.access.util.getAttributeValueOrThrow
@@ -29,44 +33,45 @@
 import com.android.server.permission.access.util.tagName
 
 class PackageAppOpPersistence : BaseAppOpPersistence() {
-    override fun BinaryXmlPullParser.parseUserState(state: AccessState, userId: Int) {
+    override fun BinaryXmlPullParser.parseUserState(state: MutableAccessState, userId: Int) {
         when (tagName) {
             TAG_PACKAGE_APP_OPS -> parsePackageAppOps(state, userId)
             else -> {}
         }
     }
 
-    private fun BinaryXmlPullParser.parsePackageAppOps(state: AccessState, userId: Int) {
-        val userState = state.userStates[userId]
+    private fun BinaryXmlPullParser.parsePackageAppOps(state: MutableAccessState, userId: Int) {
+        val userState = state.mutateUserState(userId, WriteMode.NONE)!!
+        val packageAppOpModes = userState.mutatePackageAppOpModes()
         forEachTag {
             when (tagName) {
-                TAG_PACKAGE -> parsePackage(userState)
+                TAG_PACKAGE -> parsePackage(packageAppOpModes)
                 else -> Log.w(LOG_TAG, "Ignoring unknown tag $name when parsing app-op state")
             }
         }
-        userState.packageAppOpModes.retainAllIndexed { _, packageName, _ ->
-            val hasPackage = packageName in state.systemState.packageStates
-            if (!hasPackage) {
+        packageAppOpModes.forEachReversedIndexed { packageNameIndex, packageName, _ ->
+            if (packageName !in state.systemState.packageStates) {
                 Log.w(LOG_TAG, "Dropping unknown package $packageName when parsing app-op state")
+                packageAppOpModes.removeAt(packageNameIndex)
+                userState.requestWriteMode(WriteMode.ASYNCHRONOUS)
             }
-            hasPackage
         }
     }
 
-    private fun BinaryXmlPullParser.parsePackage(userState: UserState) {
+    private fun BinaryXmlPullParser.parsePackage(packageAppOpModes: MutablePackageAppOpModes) {
         val packageName = getAttributeValueOrThrow(ATTR_NAME).intern()
-        val appOpModes = IndexedMap<String, Int>()
-        userState.packageAppOpModes[packageName] = appOpModes
+        val appOpModes = MutableIndexedMap<String, Int>()
+        packageAppOpModes[packageName] = appOpModes
         parseAppOps(appOpModes)
     }
 
     override fun BinaryXmlSerializer.serializeUserState(state: AccessState, userId: Int) {
-        serializePackageAppOps(state.userStates[userId])
+        serializePackageAppOps(state.userStates[userId]!!.packageAppOpModes)
     }
 
-    private fun BinaryXmlSerializer.serializePackageAppOps(userState: UserState) {
+    private fun BinaryXmlSerializer.serializePackageAppOps(packageAppOpModes: PackageAppOpModes) {
         tag(TAG_PACKAGE_APP_OPS) {
-            userState.packageAppOpModes.forEachIndexed { _, packageName, appOpModes ->
+            packageAppOpModes.forEachIndexed { _, packageName, appOpModes ->
                 serializePackage(packageName, appOpModes)
             }
         }
diff --git a/services/permission/java/com/android/server/permission/access/appop/PackageAppOpPolicy.kt b/services/permission/java/com/android/server/permission/access/appop/PackageAppOpPolicy.kt
index 7d3578d..bd0713c 100644
--- a/services/permission/java/com/android/server/permission/access/appop/PackageAppOpPolicy.kt
+++ b/services/permission/java/com/android/server/permission/access/appop/PackageAppOpPolicy.kt
@@ -20,13 +20,21 @@
 import com.android.server.permission.access.AccessUri
 import com.android.server.permission.access.AppOpUri
 import com.android.server.permission.access.GetStateScope
+import com.android.server.permission.access.MutableAccessState
 import com.android.server.permission.access.MutateStateScope
 import com.android.server.permission.access.PackageUri
 import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.immutable.* // ktlint-disable no-wildcard-imports
+import com.android.server.pm.pkg.PackageState
 
 class PackageAppOpPolicy : BaseAppOpPolicy(PackageAppOpPersistence()) {
+    private val migration = PackageAppOpMigration()
+
+    private val upgrade = PackageAppOpUpgrade(this)
+
     @Volatile
-    private var onAppOpModeChangedListeners = IndexedListSet<OnAppOpModeChangedListener>()
+    private var onAppOpModeChangedListeners: IndexedListSet<OnAppOpModeChangedListener> =
+        MutableIndexedListSet()
     private val onAppOpModeChangedListenersLock = Any()
 
     override val subjectScheme: String
@@ -53,27 +61,31 @@
     }
 
     override fun MutateStateScope.onPackageRemoved(packageName: String, appId: Int) {
-        newState.userStates.forEachIndexed { _, _, userState ->
-            userState.packageAppOpModes -= packageName
-            userState.requestWrite()
-            // Skip notifying the change listeners since the package no longer exists.
+        newState.userStates.forEachIndexed { userStateIndex, _, userState ->
+            val packageNameIndex = userState.packageAppOpModes.indexOfKey(packageName)
+            if (packageNameIndex >= 0) {
+                newState.mutateUserStateAt(userStateIndex).mutatePackageAppOpModes()
+                    .removeAt(packageNameIndex)
+                // Skip notifying the change listeners since the package no longer exists.
+            }
         }
     }
 
     fun GetStateScope.getAppOpModes(packageName: String, userId: Int): IndexedMap<String, Int>? =
-        state.userStates[userId].packageAppOpModes[packageName]
+        state.userStates[userId]!!.packageAppOpModes[packageName]
 
     fun MutateStateScope.removeAppOpModes(packageName: String, userId: Int): Boolean {
-        val userState = newState.userStates[userId]
-        val isChanged = userState.packageAppOpModes.remove(packageName) != null
-        if (isChanged) {
-            userState.requestWrite()
+        val packageNameIndex = newState.userStates[userId]!!.packageAppOpModes
+            .indexOfKey(packageName)
+        if (packageNameIndex < 0) {
+            return false
         }
-        return isChanged
+        newState.mutateUserState(userId)!!.mutatePackageAppOpModes().removeAt(packageNameIndex)
+        return true
     }
 
     fun GetStateScope.getAppOpMode(packageName: String, userId: Int, appOpName: String): Int =
-        state.userStates[userId].packageAppOpModes[packageName]
+        state.userStates[userId]!!.packageAppOpModes[packageName]
             .getWithDefault(appOpName, AppOpsManager.opToDefaultMode(appOpName))
 
     fun MutateStateScope.setAppOpMode(
@@ -82,23 +94,18 @@
         appOpName: String,
         mode: Int
     ): Boolean {
-        val userState = newState.userStates[userId]
-        val packageAppOpModes = userState.packageAppOpModes
-        var appOpModes = packageAppOpModes[packageName]
         val defaultMode = AppOpsManager.opToDefaultMode(appOpName)
-        val oldMode = appOpModes.getWithDefault(appOpName, defaultMode)
+        val oldMode = newState.userStates[userId]!!.packageAppOpModes[packageName]
+            .getWithDefault(appOpName, defaultMode)
         if (oldMode == mode) {
             return false
         }
-        if (appOpModes == null) {
-            appOpModes = IndexedMap()
-            packageAppOpModes[packageName] = appOpModes
-        }
+        val packageAppOpModes = newState.mutateUserState(userId)!!.mutatePackageAppOpModes()
+        val appOpModes = packageAppOpModes.mutateOrPut(packageName) { MutableIndexedMap() }
         appOpModes.putWithDefault(appOpName, mode, defaultMode)
         if (appOpModes.isEmpty()) {
             packageAppOpModes -= packageName
         }
-        userState.requestWrite()
         onAppOpModeChangedListeners.forEachIndexed { _, it ->
             it.onAppOpModeChanged(packageName, userId, appOpName, oldMode, mode)
         }
@@ -117,6 +124,18 @@
         }
     }
 
+    override fun migrateUserState(state: MutableAccessState, userId: Int) {
+        with(migration) { migrateUserState(state, userId) }
+    }
+
+    override fun MutateStateScope.upgradePackageState(
+        packageState: PackageState,
+        userId: Int,
+        version: Int,
+    ) {
+        with(upgrade) { upgradePackageState(packageState, userId, version) }
+    }
+
     /**
      * Listener for app op mode changes.
      */
diff --git a/services/permission/java/com/android/server/permission/access/appop/PackageAppOpUpgrade.kt b/services/permission/java/com/android/server/permission/access/appop/PackageAppOpUpgrade.kt
new file mode 100644
index 0000000..8e37093
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/appop/PackageAppOpUpgrade.kt
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.appop
+
+import android.app.AppOpsManager
+import com.android.server.permission.access.MutateStateScope
+import com.android.server.pm.pkg.PackageState
+
+class PackageAppOpUpgrade(private val policy: PackageAppOpPolicy) {
+    fun MutateStateScope.upgradePackageState(
+        packageState: PackageState,
+        userId: Int,
+        version: Int,
+    ) {
+        if (version <= 2) {
+            with(policy) {
+                val appOpMode = getAppOpMode(
+                    packageState.packageName, userId, AppOpsManager.OPSTR_RUN_IN_BACKGROUND
+                )
+                setAppOpMode(
+                    packageState.packageName, userId, AppOpsManager.OPSTR_RUN_ANY_IN_BACKGROUND,
+                    appOpMode
+                )
+            }
+        }
+    }
+}
diff --git a/services/permission/java/com/android/server/permission/access/appop/UidAppOpPersistence.kt b/services/permission/java/com/android/server/permission/access/appop/UidAppOpPersistence.kt
deleted file mode 100644
index 7a965d4..0000000
--- a/services/permission/java/com/android/server/permission/access/appop/UidAppOpPersistence.kt
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2022 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.server.permission.access.appop
-
-import android.util.Log
-import com.android.modules.utils.BinaryXmlPullParser
-import com.android.modules.utils.BinaryXmlSerializer
-import com.android.server.permission.access.AccessState
-import com.android.server.permission.access.UserState
-import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports
-import com.android.server.permission.access.util.attributeInt
-import com.android.server.permission.access.util.forEachTag
-import com.android.server.permission.access.util.getAttributeIntOrThrow
-import com.android.server.permission.access.util.tag
-import com.android.server.permission.access.util.tagName
-
-class UidAppOpPersistence : BaseAppOpPersistence() {
-    override fun BinaryXmlPullParser.parseUserState(state: AccessState, userId: Int) {
-        when (tagName) {
-            TAG_UID_APP_OPS -> parseUidAppOps(state, userId)
-            else -> {}
-        }
-    }
-
-    private fun BinaryXmlPullParser.parseUidAppOps(state: AccessState, userId: Int) {
-        val userState = state.userStates[userId]
-        forEachTag {
-            when (tagName) {
-                TAG_APP_ID -> parseAppId(userState)
-                else -> Log.w(LOG_TAG, "Ignoring unknown tag $name when parsing app-op state")
-            }
-        }
-        userState.uidAppOpModes.retainAllIndexed { _, appId, _ ->
-            val hasAppId = appId in state.systemState.appIds
-            if (!hasAppId) {
-                Log.w(LOG_TAG, "Dropping unknown app ID $appId when parsing app-op state")
-            }
-            hasAppId
-        }
-    }
-
-    private fun BinaryXmlPullParser.parseAppId(userState: UserState) {
-        val appId = getAttributeIntOrThrow(ATTR_ID)
-        val appOpModes = IndexedMap<String, Int>()
-        userState.uidAppOpModes[appId] = appOpModes
-        parseAppOps(appOpModes)
-    }
-
-    override fun BinaryXmlSerializer.serializeUserState(state: AccessState, userId: Int) {
-        serializeUidAppOps(state.userStates[userId])
-    }
-
-    private fun BinaryXmlSerializer.serializeUidAppOps(userState: UserState) {
-        tag(TAG_UID_APP_OPS) {
-            userState.uidAppOpModes.forEachIndexed { _, appId, appOpModes ->
-                serializeAppId(appId, appOpModes)
-            }
-        }
-    }
-
-    private fun BinaryXmlSerializer.serializeAppId(
-        appId: Int,
-        appOpModes: IndexedMap<String, Int>
-    ) {
-        tag(TAG_APP_ID) {
-            attributeInt(ATTR_ID, appId)
-            serializeAppOps(appOpModes)
-        }
-    }
-
-    companion object {
-        private val LOG_TAG = UidAppOpPersistence::class.java.simpleName
-
-        private const val TAG_APP_ID = "app-id"
-        private const val TAG_UID_APP_OPS = "uid-app-ops"
-
-        private const val ATTR_ID = "id"
-    }
-}
diff --git a/services/permission/java/com/android/server/permission/access/collection/ArrayMapExtensions.kt b/services/permission/java/com/android/server/permission/access/collection/ArrayMapExtensions.kt
new file mode 100644
index 0000000..686db42
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/collection/ArrayMapExtensions.kt
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.collection
+
+import android.util.ArrayMap
+
+inline fun <K, V> ArrayMap<K, V>.allIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (!predicate(index, key, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun <K, V> ArrayMap<K, V>.anyIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            return true
+        }
+    }
+    return false
+}
+
+inline fun <K, V> ArrayMap<K, V>.forEachIndexed(action: (Int, K, V) -> Unit) {
+    for (index in 0 until size) {
+        action(index, keyAt(index), valueAt(index))
+    }
+}
+
+inline fun <K, V> ArrayMap<K, V>.forEachReversedIndexed(action: (Int, K, V) -> Unit) {
+    for (index in lastIndex downTo 0) {
+        action(index, keyAt(index), valueAt(index))
+    }
+}
+
+inline fun <K, V> ArrayMap<K, V>.getOrPut(key: K, defaultValue: () -> V): V {
+    get(key)?.let { return it }
+    return defaultValue().also { put(key, it) }
+}
+
+inline val <K, V> ArrayMap<K, V>.lastIndex: Int
+    get() = size - 1
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun <K, V> ArrayMap<K, V>.minusAssign(key: K) {
+    remove(key)
+}
+
+inline fun <K, V> ArrayMap<K, V>.noneIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun <K, V> ArrayMap<K, V>.removeAllIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
+    var isChanged = false
+    forEachReversedIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            removeAt(index)
+            isChanged = true
+        }
+    }
+    return isChanged
+}
+
+inline fun <K, V> ArrayMap<K, V>.retainAllIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
+    var isChanged = false
+    forEachReversedIndexed { index, key, value ->
+        if (!predicate(index, key, value)) {
+            removeAt(index)
+            isChanged = true
+        }
+    }
+    return isChanged
+}
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun <K, V> ArrayMap<K, V>.set(key: K, value: V) {
+    put(key, value)
+}
diff --git a/services/permission/java/com/android/server/permission/access/collection/ArraySetExtensions.kt b/services/permission/java/com/android/server/permission/access/collection/ArraySetExtensions.kt
new file mode 100644
index 0000000..4710103
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/collection/ArraySetExtensions.kt
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2022 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.server.permission.access.collection
+
+import android.util.ArraySet
+
+fun <T> arraySetOf(vararg elements: T): ArraySet<T> = ArraySet(elements.asList())
+
+inline fun <T> ArraySet<T>.allIndexed(predicate: (Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, value ->
+        if (!predicate(index, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun <T> ArraySet<T>.anyIndexed(predicate: (Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, value ->
+        if (predicate(index, value)) {
+            return true
+        }
+    }
+    return false
+}
+
+inline fun <T> ArraySet<T>.forEachIndexed(action: (Int, T) -> Unit) {
+    for (index in 0 until size) {
+        action(index, valueAt(index))
+    }
+}
+
+inline fun <T> ArraySet<T>.forEachReversedIndexed(action: (Int, T) -> Unit) {
+    for (index in lastIndex downTo 0) {
+        action(index, valueAt(index))
+    }
+}
+
+inline val <T> ArraySet<T>.lastIndex: Int
+    get() = size - 1
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun <T> ArraySet<T>.minusAssign(value: T) {
+    remove(value)
+}
+
+inline fun <T> ArraySet<T>.noneIndexed(predicate: (Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, value ->
+        if (predicate(index, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun <T> ArraySet<T>.plusAssign(value: T) {
+    add(value)
+}
+
+inline fun <T> ArraySet<T>.removeAllIndexed(predicate: (Int, T) -> Boolean): Boolean {
+    var isChanged = false
+    forEachReversedIndexed { index, value ->
+        if (predicate(index, value)) {
+            removeAt(index)
+            isChanged = true
+        }
+    }
+    return isChanged
+}
+
+inline fun <T> ArraySet<T>.retainAllIndexed(predicate: (Int, T) -> Boolean): Boolean {
+    var isChanged = false
+    forEachReversedIndexed { index, value ->
+        if (!predicate(index, value)) {
+            removeAt(index)
+            isChanged = true
+        }
+    }
+    return isChanged
+}
diff --git a/services/permission/java/com/android/server/permission/access/collection/IndexedList.kt b/services/permission/java/com/android/server/permission/access/collection/IndexedList.kt
deleted file mode 100644
index f4ecceb..0000000
--- a/services/permission/java/com/android/server/permission/access/collection/IndexedList.kt
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2021 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.server.permission.access.collection
-
-typealias IndexedList<T> = ArrayList<T>
-
-inline fun <T> IndexedList<T>.allIndexed(predicate: (Int, T) -> Boolean): Boolean {
-    forEachIndexed { index, element ->
-        if (!predicate(index, element)) {
-            return false
-        }
-    }
-    return true
-}
-
-inline fun <T> IndexedList<T>.anyIndexed(predicate: (Int, T) -> Boolean): Boolean {
-    forEachIndexed { index, element ->
-        if (predicate(index, element)) {
-            return true
-        }
-    }
-    return false
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline fun <T> IndexedList<T>.copy(): IndexedList<T> = IndexedList(this)
-
-inline fun <T> IndexedList<T>.forEachIndexed(action: (Int, T) -> Unit) {
-    for (index in indices) {
-        action(index, this[index])
-    }
-}
-
-inline fun <T> IndexedList<T>.forEachReversedIndexed(action: (Int, T) -> Unit) {
-    for (index in lastIndex downTo 0) {
-        action(index, this[index])
-    }
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun <T> IndexedList<T>.minus(element: T): IndexedList<T> =
-    copy().apply { this -= element }
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun <T> IndexedList<T>.minusAssign(element: T) {
-    remove(element)
-}
-
-inline fun <T> IndexedList<T>.noneIndexed(predicate: (Int, T) -> Boolean): Boolean {
-    forEachIndexed { index, element ->
-        if (predicate(index, element)) {
-            return false
-        }
-    }
-    return true
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun <T> IndexedList<T>.plus(element: T): IndexedList<T> =
-    copy().apply { this += element }
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun <T> IndexedList<T>.plusAssign(element: T) {
-    add(element)
-}
-
-inline fun <T> IndexedList<T>.removeAllIndexed(predicate: (Int, T) -> Boolean): Boolean {
-    var isChanged = false
-    forEachReversedIndexed { index, element ->
-        if (predicate(index, element)) {
-            removeAt(index)
-            isChanged = true
-        }
-    }
-    return isChanged
-}
-
-inline fun <T> IndexedList<T>.retainAllIndexed(predicate: (Int, T) -> Boolean): Boolean {
-    var isChanged = false
-    forEachReversedIndexed { index, element ->
-        if (!predicate(index, element)) {
-            removeAt(index)
-            isChanged = true
-        }
-    }
-    return isChanged
-}
-
-inline fun <T, R> IndexedList<T>.mapNotNullIndexed(transform: (T) -> R?): IndexedList<R> =
-    IndexedList<R>().also { destination ->
-        forEachIndexed { _, element ->
-            transform(element)?.let { destination += it }
-        }
-    }
diff --git a/services/permission/java/com/android/server/permission/access/collection/IndexedListSet.kt b/services/permission/java/com/android/server/permission/access/collection/IndexedListSet.kt
deleted file mode 100644
index c40f7ee..0000000
--- a/services/permission/java/com/android/server/permission/access/collection/IndexedListSet.kt
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright (C) 2021 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.server.permission.access.collection
-
-class IndexedListSet<T> private constructor(
-    private val list: ArrayList<T>
-) : MutableSet<T> {
-    constructor() : this(ArrayList())
-
-    override val size: Int
-        get() = list.size
-
-    override fun contains(element: T): Boolean = list.contains(element)
-
-    override fun isEmpty(): Boolean = list.isEmpty()
-
-    override fun iterator(): MutableIterator<T> = list.iterator()
-
-    override fun containsAll(elements: Collection<T>): Boolean {
-        throw NotImplementedError()
-    }
-
-    fun elementAt(index: Int): T = list[index]
-
-    fun indexOf(element: T): Int = list.indexOf(element)
-
-    override fun add(element: T): Boolean =
-        if (list.contains(element)) {
-            false
-        } else {
-            list.add(element)
-            true
-        }
-
-    override fun remove(element: T): Boolean = list.remove(element)
-
-    override fun clear() {
-        list.clear()
-    }
-
-    override fun addAll(elements: Collection<T>): Boolean {
-        throw NotImplementedError()
-    }
-
-    override fun removeAll(elements: Collection<T>): Boolean {
-        throw NotImplementedError()
-    }
-
-    override fun retainAll(elements: Collection<T>): Boolean {
-        throw NotImplementedError()
-    }
-
-    fun removeAt(index: Int): T? = list.removeAt(index)
-
-    fun copy(): IndexedListSet<T> = IndexedListSet(ArrayList(list))
-}
-
-inline fun <T> IndexedListSet<T>.allIndexed(predicate: (Int, T) -> Boolean): Boolean {
-    forEachIndexed { index, element ->
-        if (!predicate(index, element)) {
-            return false
-        }
-    }
-    return true
-}
-
-inline fun <T> IndexedListSet<T>.anyIndexed(predicate: (Int, T) -> Boolean): Boolean {
-    forEachIndexed { index, element ->
-        if (predicate(index, element)) {
-            return true
-        }
-    }
-    return false
-}
-
-inline fun <T> IndexedListSet<T>.forEachIndexed(action: (Int, T) -> Unit) {
-    for (index in indices) {
-        action(index, elementAt(index))
-    }
-}
-
-inline fun <T> IndexedListSet<T>.forEachReversedIndexed(action: (Int, T) -> Unit) {
-    for (index in lastIndex downTo 0) {
-        action(index, elementAt(index))
-    }
-}
-
-inline val <T> IndexedListSet<T>.lastIndex: Int
-    get() = size - 1
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun <T> IndexedListSet<T>.minus(element: T): IndexedListSet<T> =
-    copy().apply { this -= element }
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun <T> IndexedListSet<T>.minusAssign(element: T) {
-    remove(element)
-}
-
-inline fun <T> IndexedListSet<T>.noneIndexed(predicate: (Int, T) -> Boolean): Boolean {
-    forEachIndexed { index, element ->
-        if (predicate(index, element)) {
-            return false
-        }
-    }
-    return true
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun <T> IndexedListSet<T>.plus(element: T): IndexedListSet<T> =
-    copy().apply { this += element }
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun <T> IndexedListSet<T>.plusAssign(element: T) {
-    add(element)
-}
-
-inline fun <T> IndexedListSet<T>.removeAllIndexed(predicate: (Int, T) -> Boolean): Boolean {
-    var isChanged = false
-    forEachReversedIndexed { index, element ->
-        if (predicate(index, element)) {
-            removeAt(index)
-            isChanged = true
-        }
-    }
-    return isChanged
-}
-
-inline fun <T> IndexedListSet<T>.retainAllIndexed(predicate: (Int, T) -> Boolean): Boolean {
-    var isChanged = false
-    forEachReversedIndexed { index, element ->
-        if (!predicate(index, element)) {
-            removeAt(index)
-            isChanged = true
-        }
-    }
-    return isChanged
-}
diff --git a/services/permission/java/com/android/server/permission/access/collection/IndexedMap.kt b/services/permission/java/com/android/server/permission/access/collection/IndexedMap.kt
deleted file mode 100644
index 998d206..0000000
--- a/services/permission/java/com/android/server/permission/access/collection/IndexedMap.kt
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright (C) 2021 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.server.permission.access.collection
-
-import android.util.ArrayMap
-
-typealias IndexedMap<K, V> = ArrayMap<K, V>
-
-inline fun <K, V> IndexedMap<K, V>.allIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
-    forEachIndexed { index, key, value ->
-        if (!predicate(index, key, value)) {
-            return false
-        }
-    }
-    return true
-}
-
-inline fun <K, V> IndexedMap<K, V>.anyIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
-    forEachIndexed { index, key, value ->
-        if (predicate(index, key, value)) {
-            return true
-        }
-    }
-    return false
-}
-
-inline fun <K, V> IndexedMap<K, V>.copy(copyValue: (V) -> V): IndexedMap<K, V> =
-    IndexedMap(this).apply {
-        forEachValueIndexed { index, value ->
-            setValueAt(index, copyValue(value))
-        }
-    }
-
-inline fun <K, V, R> IndexedMap<K, V>.firstNotNullOfOrNullIndexed(transform: (Int, K, V) -> R): R? {
-    forEachIndexed { index, key, value ->
-        transform(index, key, value)?.let { return it }
-    }
-    return null
-}
-
-inline fun <K, V> IndexedMap<K, V>.forEachIndexed(action: (Int, K, V) -> Unit) {
-    for (index in 0 until size) {
-        action(index, keyAt(index), valueAt(index))
-    }
-}
-
-inline fun <K, V> IndexedMap<K, V>.forEachKeyIndexed(action: (Int, K) -> Unit) {
-    for (index in 0 until size) {
-        action(index, keyAt(index))
-    }
-}
-
-inline fun <K, V> IndexedMap<K, V>.forEachReversedIndexed(action: (Int, K, V) -> Unit) {
-    for (index in lastIndex downTo 0) {
-        action(index, keyAt(index), valueAt(index))
-    }
-}
-
-inline fun <K, V> IndexedMap<K, V>.forEachValueIndexed(action: (Int, V) -> Unit) {
-    for (index in 0 until size) {
-        action(index, valueAt(index))
-    }
-}
-
-inline fun <K, V> IndexedMap<K, V>.getOrPut(key: K, defaultValue: () -> V): V {
-    get(key)?.let { return it }
-    return defaultValue().also { put(key, it) }
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline fun <K, V> IndexedMap<K, V>?.getWithDefault(key: K, defaultValue: V): V {
-    this ?: return defaultValue
-    val index = indexOfKey(key)
-    return if (index >= 0) valueAt(index) else defaultValue
-}
-
-inline val <K, V> IndexedMap<K, V>.lastIndex: Int
-    get() = size - 1
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun <K, V> IndexedMap<K, V>.minusAssign(key: K) {
-    remove(key)
-}
-
-inline fun <K, V> IndexedMap<K, V>.noneIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
-    forEachIndexed { index, key, value ->
-        if (predicate(index, key, value)) {
-            return false
-        }
-    }
-    return true
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline fun <K, V> IndexedMap<K, V>.putWithDefault(key: K, value: V, defaultValue: V): V {
-    val index = indexOfKey(key)
-    if (index >= 0) {
-        val oldValue = valueAt(index)
-        if (value != oldValue) {
-            if (value == defaultValue) {
-                removeAt(index)
-            } else {
-                setValueAt(index, value)
-            }
-        }
-        return oldValue
-    } else {
-        if (value != defaultValue) {
-            put(key, value)
-        }
-        return defaultValue
-    }
-}
-
-inline fun <K, V> IndexedMap<K, V>.removeAllIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
-    var isChanged = false
-    forEachReversedIndexed { index, key, value ->
-        if (predicate(index, key, value)) {
-            removeAt(index)
-            isChanged = true
-        }
-    }
-    return isChanged
-}
-
-inline fun <K, V> IndexedMap<K, V>.retainAllIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
-    var isChanged = false
-    forEachReversedIndexed { index, key, value ->
-        if (!predicate(index, key, value)) {
-            removeAt(index)
-            isChanged = true
-        }
-    }
-    return isChanged
-}
-
-inline fun <K, V, R> IndexedMap<K, V>.mapIndexed(transform: (Int, K, V) -> R): IndexedList<R> =
-    IndexedList<R>().also { destination ->
-        forEachIndexed { index, key, value ->
-            transform(index, key, value).let { destination += it }
-        }
-    }
-
-inline fun <K, V, R> IndexedMap<K, V>.mapNotNullIndexed(
-    transform: (Int, K, V) -> R?
-): IndexedList<R> =
-    IndexedList<R>().also { destination ->
-        forEachIndexed { index, key, value ->
-            transform(index, key, value)?.let { destination += it }
-        }
-    }
-
-inline fun <K, V, R> IndexedMap<K, V>.mapNotNullIndexedToSet(
-    transform: (Int, K, V) -> R?
-): IndexedSet<R> =
-    IndexedSet<R>().also { destination ->
-        forEachIndexed { index, key, value ->
-            transform(index, key, value)?.let { destination += it }
-        }
-    }
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun <K, V> IndexedMap<K, V>.set(key: K, value: V) {
-    put(key, value)
-}
diff --git a/services/permission/java/com/android/server/permission/access/collection/IndexedSet.kt b/services/permission/java/com/android/server/permission/access/collection/IndexedSet.kt
deleted file mode 100644
index 13fa31f..0000000
--- a/services/permission/java/com/android/server/permission/access/collection/IndexedSet.kt
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (C) 2021 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.server.permission.access.collection
-
-import android.util.ArraySet
-
-typealias IndexedSet<T> = ArraySet<T>
-
-inline fun <T> IndexedSet<T>.allIndexed(predicate: (Int, T) -> Boolean): Boolean {
-    forEachIndexed { index, element ->
-        if (!predicate(index, element)) {
-            return false
-        }
-    }
-    return true
-}
-
-inline fun <T> IndexedSet<T>.anyIndexed(predicate: (Int, T) -> Boolean): Boolean {
-    forEachIndexed { index, element ->
-        if (predicate(index, element)) {
-            return true
-        }
-    }
-    return false
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline fun <T> IndexedSet<T>.copy(): IndexedSet<T> = IndexedSet(this)
-
-@Suppress("NOTHING_TO_INLINE")
-inline fun <T> IndexedSet<T>.elementAt(index: Int): T = valueAt(index)
-
-inline fun <T> IndexedSet<T>.forEachIndexed(action: (Int, T) -> Unit) {
-    for (index in indices) {
-        action(index, elementAt(index))
-    }
-}
-
-inline fun <T> IndexedSet<T>.forEachReversedIndexed(action: (Int, T) -> Unit) {
-    for (index in lastIndex downTo 0) {
-        action(index, elementAt(index))
-    }
-}
-
-inline val <T> IndexedSet<T>.lastIndex: Int
-    get() = size - 1
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun <T> IndexedSet<T>.minus(element: T): IndexedSet<T> =
-    copy().apply { this -= element }
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun <T> IndexedSet<T>.minusAssign(element: T) {
-    remove(element)
-}
-
-inline fun <T> IndexedSet<T>.noneIndexed(predicate: (Int, T) -> Boolean): Boolean {
-    forEachIndexed { index, element ->
-        if (predicate(index, element)) {
-            return false
-        }
-    }
-    return true
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun <T> IndexedSet<T>.plus(element: T): IndexedSet<T> =
-    copy().apply { this += element }
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun <T> IndexedSet<T>.plusAssign(element: T) {
-    add(element)
-}
-
-inline fun <T> IndexedSet<T>.removeAllIndexed(predicate: (Int, T) -> Boolean): Boolean {
-    var isChanged = false
-    forEachReversedIndexed { index, element ->
-        if (predicate(index, element)) {
-            removeAt(index)
-            isChanged = true
-        }
-    }
-    return isChanged
-}
-
-inline fun <T> IndexedSet<T>.retainAllIndexed(predicate: (Int, T) -> Boolean): Boolean {
-    var isChanged = false
-    forEachReversedIndexed { index, element ->
-        if (!predicate(index, element)) {
-            removeAt(index)
-            isChanged = true
-        }
-    }
-    return isChanged
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline fun <T> indexedSetOf(vararg elements: T): IndexedSet<T> = IndexedSet(elements.asList())
diff --git a/services/permission/java/com/android/server/permission/access/collection/IntBooleanMap.kt b/services/permission/java/com/android/server/permission/access/collection/IntBooleanMap.kt
deleted file mode 100644
index 2f7b9bf..0000000
--- a/services/permission/java/com/android/server/permission/access/collection/IntBooleanMap.kt
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (C) 2022 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.server.permission.access.collection
-
-import android.util.SparseBooleanArray
-
-typealias IntBooleanMap = SparseBooleanArray
-
-inline fun IntBooleanMap.allIndexed(predicate: (Int, Int, Boolean) -> Boolean): Boolean {
-    forEachIndexed { index, key, value ->
-        if (!predicate(index, key, value)) {
-            return false
-        }
-    }
-    return true
-}
-
-inline fun IntBooleanMap.anyIndexed(predicate: (Int, Int, Boolean) -> Boolean): Boolean {
-    forEachIndexed { index, key, value ->
-        if (predicate(index, key, value)) {
-            return true
-        }
-    }
-    return false
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline fun IntBooleanMap.copy(): IntBooleanMap = clone()
-
-inline fun <R> IntBooleanMap.firstNotNullOfOrNullIndexed(transform: (Int, Int, Boolean) -> R): R? {
-    forEachIndexed { index, key, value ->
-        transform(index, key, value)?.let { return it }
-    }
-    return null
-}
-
-inline fun IntBooleanMap.forEachIndexed(action: (Int, Int, Boolean) -> Unit) {
-    for (index in 0 until size) {
-        action(index, keyAt(index), valueAt(index))
-    }
-}
-
-inline fun IntBooleanMap.forEachKeyIndexed(action: (Int, Int) -> Unit) {
-    for (index in 0 until size) {
-        action(index, keyAt(index))
-    }
-}
-
-inline fun IntBooleanMap.forEachReversedIndexed(action: (Int, Int, Boolean) -> Unit) {
-    for (index in lastIndex downTo 0) {
-        action(index, keyAt(index), valueAt(index))
-    }
-}
-
-inline fun IntBooleanMap.forEachValueIndexed(action: (Int, Boolean) -> Unit) {
-    for (index in 0 until size) {
-        action(index, valueAt(index))
-    }
-}
-
-inline fun IntBooleanMap.getOrPut(key: Int, defaultValue: () -> Boolean): Boolean {
-    val index = indexOfKey(key)
-    return if (index >= 0) {
-        valueAt(index)
-    } else {
-        defaultValue().also { put(key, it) }
-    }
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline fun IntBooleanMap?.getWithDefault(key: Int, defaultValue: Boolean): Boolean {
-    this ?: return defaultValue
-    return get(key, defaultValue)
-}
-
-inline val IntBooleanMap.lastIndex: Int
-    get() = size - 1
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun IntBooleanMap.minusAssign(key: Int) {
-    delete(key)
-}
-
-inline fun IntBooleanMap.noneIndexed(predicate: (Int, Int, Boolean) -> Boolean): Boolean {
-    forEachIndexed { index, key, value ->
-        if (predicate(index, key, value)) {
-            return false
-        }
-    }
-    return true
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline fun IntBooleanMap.putWithDefault(key: Int, value: Boolean, defaultValue: Boolean): Boolean {
-    val index = indexOfKey(key)
-    if (index >= 0) {
-        val oldValue = valueAt(index)
-        if (value != oldValue) {
-            if (value == defaultValue) {
-                removeAt(index)
-            } else {
-                setValueAt(index, value)
-            }
-        }
-        return oldValue
-    } else {
-        if (value != defaultValue) {
-            put(key, value)
-        }
-        return defaultValue
-    }
-}
-
-fun IntBooleanMap.remove(key: Int) {
-    delete(key)
-}
-
-fun IntBooleanMap.remove(key: Int, defaultValue: Boolean): Boolean {
-    val index = indexOfKey(key)
-    return if (index >= 0) {
-        val oldValue = valueAt(index)
-        removeAt(index)
-        oldValue
-    } else {
-        defaultValue
-    }
-}
-
-inline fun IntBooleanMap.removeAllIndexed(predicate: (Int, Int, Boolean) -> Boolean): Boolean {
-    var isChanged = false
-    forEachReversedIndexed { index, key, value ->
-        if (predicate(index, key, value)) {
-            removeAt(index)
-            isChanged = true
-        }
-    }
-    return isChanged
-}
-
-inline fun IntBooleanMap.retainAllIndexed(predicate: (Int, Int, Boolean) -> Boolean): Boolean {
-    var isChanged = false
-    forEachReversedIndexed { index, key, value ->
-        if (!predicate(index, key, value)) {
-            removeAt(index)
-            isChanged = true
-        }
-    }
-    return isChanged
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun IntBooleanMap.set(key: Int, value: Boolean) {
-    put(key, value)
-}
-
-inline val IntBooleanMap.size: Int
-    get() = size()
diff --git a/services/permission/java/com/android/server/permission/access/collection/IntLongMap.kt b/services/permission/java/com/android/server/permission/access/collection/IntLongMap.kt
deleted file mode 100644
index 692bbd6..0000000
--- a/services/permission/java/com/android/server/permission/access/collection/IntLongMap.kt
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (C) 2022 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.server.permission.access.collection
-
-import android.util.SparseLongArray
-
-typealias IntLongMap = SparseLongArray
-
-inline fun IntLongMap.allIndexed(predicate: (Int, Int, Long) -> Boolean): Boolean {
-    forEachIndexed { index, key, value ->
-        if (!predicate(index, key, value)) {
-            return false
-        }
-    }
-    return true
-}
-
-inline fun IntLongMap.anyIndexed(predicate: (Int, Int, Long) -> Boolean): Boolean {
-    forEachIndexed { index, key, value ->
-        if (predicate(index, key, value)) {
-            return true
-        }
-    }
-    return false
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline fun IntLongMap.copy(): IntLongMap = clone()
-
-inline fun <R> IntLongMap.firstNotNullOfOrNullIndexed(transform: (Int, Int, Long) -> R): R? {
-    forEachIndexed { index, key, value ->
-        transform(index, key, value)?.let { return it }
-    }
-    return null
-}
-
-inline fun IntLongMap.forEachIndexed(action: (Int, Int, Long) -> Unit) {
-    for (index in 0 until size) {
-        action(index, keyAt(index), valueAt(index))
-    }
-}
-
-inline fun IntLongMap.forEachKeyIndexed(action: (Int, Int) -> Unit) {
-    for (index in 0 until size) {
-        action(index, keyAt(index))
-    }
-}
-
-inline fun IntLongMap.forEachReversedIndexed(action: (Int, Int, Long) -> Unit) {
-    for (index in lastIndex downTo 0) {
-        action(index, keyAt(index), valueAt(index))
-    }
-}
-
-inline fun IntLongMap.forEachValueIndexed(action: (Int, Long) -> Unit) {
-    for (index in 0 until size) {
-        action(index, valueAt(index))
-    }
-}
-
-inline fun IntLongMap.getOrPut(key: Int, defaultValue: () -> Long): Long {
-    val index = indexOfKey(key)
-    return if (index >= 0) {
-        valueAt(index)
-    } else {
-        defaultValue().also { put(key, it) }
-    }
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline fun IntLongMap?.getWithDefault(key: Int, defaultValue: Long): Long {
-    this ?: return defaultValue
-    return get(key, defaultValue)
-}
-
-inline val IntLongMap.lastIndex: Int
-    get() = size - 1
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun IntLongMap.minusAssign(key: Int) {
-    delete(key)
-}
-
-inline fun IntLongMap.noneIndexed(predicate: (Int, Int, Long) -> Boolean): Boolean {
-    forEachIndexed { index, key, value ->
-        if (predicate(index, key, value)) {
-            return false
-        }
-    }
-    return true
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline fun IntLongMap.putWithDefault(key: Int, value: Long, defaultValue: Long): Long {
-    val index = indexOfKey(key)
-    if (index >= 0) {
-        val oldValue = valueAt(index)
-        if (value != oldValue) {
-            if (value == defaultValue) {
-                removeAt(index)
-            } else {
-                setValueAt(index, value)
-            }
-        }
-        return oldValue
-    } else {
-        if (value != defaultValue) {
-            put(key, value)
-        }
-        return defaultValue
-    }
-}
-
-fun IntLongMap.remove(key: Int) {
-    delete(key)
-}
-
-fun IntLongMap.remove(key: Int, defaultValue: Long): Long {
-    val index = indexOfKey(key)
-    return if (index >= 0) {
-        val oldValue = valueAt(index)
-        removeAt(index)
-        oldValue
-    } else {
-        defaultValue
-    }
-}
-
-inline fun IntLongMap.removeAllIndexed(predicate: (Int, Int, Long) -> Boolean): Boolean {
-    var isChanged = false
-    forEachReversedIndexed { index, key, value ->
-        if (predicate(index, key, value)) {
-            removeAt(index)
-            isChanged = true
-        }
-    }
-    return isChanged
-}
-
-inline fun IntLongMap.retainAllIndexed(predicate: (Int, Int, Long) -> Boolean): Boolean {
-    var isChanged = false
-    forEachReversedIndexed { index, key, value ->
-        if (!predicate(index, key, value)) {
-            removeAt(index)
-            isChanged = true
-        }
-    }
-    return isChanged
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun IntLongMap.set(key: Int, value: Long) {
-    put(key, value)
-}
-
-inline val IntLongMap.size: Int
-    get() = size()
diff --git a/services/permission/java/com/android/server/permission/access/collection/IntMap.kt b/services/permission/java/com/android/server/permission/access/collection/IntMap.kt
deleted file mode 100644
index e905567..0000000
--- a/services/permission/java/com/android/server/permission/access/collection/IntMap.kt
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (C) 2021 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.server.permission.access.collection
-
-import android.util.SparseArray
-
-typealias IntMap<T> = SparseArray<T>
-
-inline fun <T> IntMap<T>.allIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
-    forEachIndexed { index, key, value ->
-        if (!predicate(index, key, value)) {
-            return false
-        }
-    }
-    return true
-}
-
-inline fun <T> IntMap<T>.anyIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
-    forEachIndexed { index, key, value ->
-        if (predicate(index, key, value)) {
-            return true
-        }
-    }
-    return false
-}
-
-inline fun <T> IntMap<T>.copy(copyValue: (T) -> T): IntMap<T> =
-    this.clone().apply {
-        forEachValueIndexed { index, value ->
-            setValueAt(index, copyValue(value))
-        }
-    }
-
-inline fun <T, R> IntMap<T>.firstNotNullOfOrNullIndexed(transform: (Int, Int, T) -> R): R? {
-    forEachIndexed { index, key, value ->
-        transform(index, key, value)?.let { return it }
-    }
-    return null
-}
-
-inline fun <T> IntMap<T>.forEachIndexed(action: (Int, Int, T) -> Unit) {
-    for (index in 0 until size) {
-        action(index, keyAt(index), valueAt(index))
-    }
-}
-
-inline fun <T> IntMap<T>.forEachKeyIndexed(action: (Int, Int) -> Unit) {
-    for (index in 0 until size) {
-        action(index, keyAt(index))
-    }
-}
-
-inline fun <T> IntMap<T>.forEachReversedIndexed(action: (Int, Int, T) -> Unit) {
-    for (index in lastIndex downTo 0) {
-        action(index, keyAt(index), valueAt(index))
-    }
-}
-
-inline fun <T> IntMap<T>.forEachValueIndexed(action: (Int, T) -> Unit) {
-    for (index in 0 until size) {
-        action(index, valueAt(index))
-    }
-}
-
-inline fun <T> IntMap<T>.getOrPut(key: Int, defaultValue: () -> T): T {
-    get(key)?.let { return it }
-    return defaultValue().also { put(key, it) }
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline fun <T> IntMap<T>?.getWithDefault(key: Int, defaultValue: T): T {
-    this ?: return defaultValue
-    val index = indexOfKey(key)
-    return if (index >= 0) valueAt(index) else defaultValue
-}
-
-inline val <T> IntMap<T>.lastIndex: Int
-    get() = size - 1
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun <T> IntMap<T>.minusAssign(key: Int) {
-    remove(key)
-}
-
-inline fun <T> IntMap<T>.noneIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
-    forEachIndexed { index, key, value ->
-        if (predicate(index, key, value)) {
-            return false
-        }
-    }
-    return true
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline fun <T> IntMap<T>.putWithDefault(key: Int, value: T, defaultValue: T): T {
-    val index = indexOfKey(key)
-    if (index >= 0) {
-        val oldValue = valueAt(index)
-        if (value != oldValue) {
-            if (value == defaultValue) {
-                removeAt(index)
-            } else {
-                setValueAt(index, value)
-            }
-        }
-        return oldValue
-    } else {
-        if (value != defaultValue) {
-            put(key, value)
-        }
-        return defaultValue
-    }
-}
-
-// SparseArray.removeReturnOld() is @hide, so a backup once we move to APIs.
-fun <T> IntMap<T>.removeReturnOld(key: Int): T? {
-    val index = indexOfKey(key)
-    return if (index >= 0) {
-        val oldValue = valueAt(index)
-        removeAt(index)
-        oldValue
-    } else {
-        null
-    }
-}
-
-inline fun <T> IntMap<T>.removeAllIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
-    var isChanged = false
-    forEachReversedIndexed { index, key, value ->
-        if (predicate(index, key, value)) {
-            removeAt(index)
-            isChanged = true
-        }
-    }
-    return isChanged
-}
-
-inline fun <T> IntMap<T>.retainAllIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
-    var isChanged = false
-    forEachReversedIndexed { index, key, value ->
-        if (!predicate(index, key, value)) {
-            removeAt(index)
-            isChanged = true
-        }
-    }
-    return isChanged
-}
-
-inline val <T> IntMap<T>.size: Int
-    get() = size()
diff --git a/services/permission/java/com/android/server/permission/access/collection/IntSet.kt b/services/permission/java/com/android/server/permission/access/collection/IntSet.kt
deleted file mode 100644
index 4717251..0000000
--- a/services/permission/java/com/android/server/permission/access/collection/IntSet.kt
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (C) 2021 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.server.permission.access.collection
-
-import android.util.SparseBooleanArray
-
-class IntSet private constructor(
-    private val array: SparseBooleanArray
-) {
-    constructor() : this(SparseBooleanArray())
-
-    val size: Int
-        get() = array.size()
-
-    operator fun contains(element: Int): Boolean = array[element]
-
-    fun elementAt(index: Int): Int = array.keyAt(index)
-
-    fun indexOf(element: Int): Int = array.indexOfKey(element)
-
-    fun add(element: Int) {
-        array.put(element, true)
-    }
-
-    fun remove(element: Int) {
-        array.delete(element)
-    }
-
-    fun clear() {
-        array.clear()
-    }
-
-    fun removeAt(index: Int) {
-        array.removeAt(index)
-    }
-
-    fun copy(): IntSet = IntSet(array.clone())
-}
-
-fun IntSet(values: IntArray): IntSet = IntSet().apply{ this += values }
-
-inline fun IntSet.allIndexed(predicate: (Int, Int) -> Boolean): Boolean {
-    forEachIndexed { index, element ->
-        if (!predicate(index, element)) {
-            return false
-        }
-    }
-    return true
-}
-
-inline fun IntSet.anyIndexed(predicate: (Int, Int) -> Boolean): Boolean {
-    forEachIndexed { index, element ->
-        if (predicate(index, element)) {
-            return true
-        }
-    }
-    return false
-}
-
-inline fun IntSet.forEachIndexed(action: (Int, Int) -> Unit) {
-    for (index in 0 until size) {
-        action(index, elementAt(index))
-    }
-}
-
-inline fun IntSet.forEachReversedIndexed(action: (Int, Int) -> Unit) {
-    for (index in lastIndex downTo 0) {
-        action(index, elementAt(index))
-    }
-}
-
-inline val IntSet.lastIndex: Int
-    get() = size - 1
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun IntSet.minus(element: Int): IntSet = copy().apply { this -= element }
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun IntSet.minusAssign(element: Int) {
-    remove(element)
-}
-
-inline fun IntSet.noneIndexed(predicate: (Int, Int) -> Boolean): Boolean {
-    forEachIndexed { index, element ->
-        if (predicate(index, element)) {
-            return false
-        }
-    }
-    return true
-}
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun IntSet.plus(element: Int): IntSet = copy().apply { this += element }
-
-@Suppress("NOTHING_TO_INLINE")
-inline operator fun IntSet.plusAssign(element: Int) {
-    add(element)
-}
-
-operator fun IntSet.plusAssign(set: IntSet) {
-    set.forEachIndexed { _, it -> this += it }
-}
-
-operator fun IntSet.plusAssign(array: IntArray) {
-    array.forEach { this += it }
-}
-
-inline fun IntSet.removeAllIndexed(predicate: (Int, Int) -> Boolean): Boolean {
-    var isChanged = false
-    forEachReversedIndexed { index, element ->
-        if (predicate(index, element)) {
-            removeAt(index)
-            isChanged = true
-        }
-    }
-    return isChanged
-}
-
-inline fun IntSet.retainAllIndexed(predicate: (Int, Int) -> Boolean): Boolean {
-    var isChanged = false
-    forEachReversedIndexed { index, element ->
-        if (!predicate(index, element)) {
-            removeAt(index)
-            isChanged = true
-        }
-    }
-    return isChanged
-}
diff --git a/services/permission/java/com/android/server/permission/access/collection/List.kt b/services/permission/java/com/android/server/permission/access/collection/ListExtensions.kt
similarity index 100%
rename from services/permission/java/com/android/server/permission/access/collection/List.kt
rename to services/permission/java/com/android/server/permission/access/collection/ListExtensions.kt
diff --git a/services/permission/java/com/android/server/permission/access/collection/SparseArrayExtensions.kt b/services/permission/java/com/android/server/permission/access/collection/SparseArrayExtensions.kt
new file mode 100644
index 0000000..8b7f3de
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/collection/SparseArrayExtensions.kt
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2022 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.server.permission.access.collection
+
+import android.util.SparseArray
+
+inline fun <T> SparseArray<T>.allIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (!predicate(index, key, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun <T> SparseArray<T>.anyIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            return true
+        }
+    }
+    return false
+}
+
+inline fun <T> SparseArray<T>.forEachIndexed(action: (Int, Int, T) -> Unit) {
+    for (index in 0 until size) {
+        action(index, keyAt(index), valueAt(index))
+    }
+}
+
+inline fun <T> SparseArray<T>.forEachReversedIndexed(action: (Int, Int, T) -> Unit) {
+    for (index in lastIndex downTo 0) {
+        action(index, keyAt(index), valueAt(index))
+    }
+}
+
+inline fun <T> SparseArray<T>.getOrPut(key: Int, defaultValue: () -> T): T {
+    val index = indexOfKey(key)
+    return if (index >= 0) {
+        valueAt(index)
+    } else {
+        defaultValue().also { put(key, it) }
+    }
+}
+
+inline val <T> SparseArray<T>.lastIndex: Int
+    get() = size - 1
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun <T> SparseArray<T>.minusAssign(key: Int) {
+    delete(key)
+}
+
+inline fun <T> SparseArray<T>.noneIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun <T> SparseArray<T>.removeAllIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
+    var isChanged = false
+    forEachReversedIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            removeAt(index)
+            isChanged = true
+        }
+    }
+    return isChanged
+}
+
+inline fun <T> SparseArray<T>.retainAllIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
+    var isChanged = false
+    forEachReversedIndexed { index, key, value ->
+        if (!predicate(index, key, value)) {
+            removeAt(index)
+            isChanged = true
+        }
+    }
+    return isChanged
+}
+
+inline val <T> SparseArray<T>.size: Int
+    get() = size()
diff --git a/services/permission/java/com/android/server/permission/access/collection/SparseBooleanArrayExtensions.kt b/services/permission/java/com/android/server/permission/access/collection/SparseBooleanArrayExtensions.kt
new file mode 100644
index 0000000..0a4c52b
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/collection/SparseBooleanArrayExtensions.kt
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2022 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.server.permission.access.collection
+
+import android.util.SparseBooleanArray
+
+inline fun SparseBooleanArray.allIndexed(predicate: (Int, Int, Boolean) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (!predicate(index, key, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun SparseBooleanArray.anyIndexed(predicate: (Int, Int, Boolean) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            return true
+        }
+    }
+    return false
+}
+
+inline fun SparseBooleanArray.forEachIndexed(action: (Int, Int, Boolean) -> Unit) {
+    for (index in 0 until size) {
+        action(index, keyAt(index), valueAt(index))
+    }
+}
+
+inline fun SparseBooleanArray.forEachReversedIndexed(action: (Int, Int, Boolean) -> Unit) {
+    for (index in lastIndex downTo 0) {
+        action(index, keyAt(index), valueAt(index))
+    }
+}
+
+inline fun SparseBooleanArray.getOrPut(key: Int, defaultValue: () -> Boolean): Boolean {
+    val index = indexOfKey(key)
+    return if (index >= 0) {
+        valueAt(index)
+    } else {
+        defaultValue().also { put(key, it) }
+    }
+}
+
+inline val SparseBooleanArray.lastIndex: Int
+    get() = size - 1
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun SparseBooleanArray.minusAssign(key: Int) {
+    delete(key)
+}
+
+inline fun SparseBooleanArray.noneIndexed(predicate: (Int, Int, Boolean) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+fun SparseBooleanArray.remove(key: Int) {
+    delete(key)
+}
+
+fun SparseBooleanArray.remove(key: Int, defaultValue: Boolean): Boolean {
+    val index = indexOfKey(key)
+    return if (index >= 0) {
+        val oldValue = valueAt(index)
+        removeAt(index)
+        oldValue
+    } else {
+        defaultValue
+    }
+}
+
+inline fun SparseBooleanArray.removeAllIndexed(predicate: (Int, Int, Boolean) -> Boolean): Boolean {
+    var isChanged = false
+    forEachReversedIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            removeAt(index)
+            isChanged = true
+        }
+    }
+    return isChanged
+}
+
+inline fun SparseBooleanArray.retainAllIndexed(predicate: (Int, Int, Boolean) -> Boolean): Boolean {
+    var isChanged = false
+    forEachReversedIndexed { index, key, value ->
+        if (!predicate(index, key, value)) {
+            removeAt(index)
+            isChanged = true
+        }
+    }
+    return isChanged
+}
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun SparseBooleanArray.set(key: Int, value: Boolean) {
+    put(key, value)
+}
+
+inline val SparseBooleanArray.size: Int
+    get() = size()
diff --git a/services/permission/java/com/android/server/permission/access/collection/SparseLongArrayExtensions.kt b/services/permission/java/com/android/server/permission/access/collection/SparseLongArrayExtensions.kt
new file mode 100644
index 0000000..1149c52
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/collection/SparseLongArrayExtensions.kt
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2022 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.server.permission.access.collection
+
+import android.util.SparseLongArray
+
+inline fun SparseLongArray.allIndexed(predicate: (Int, Int, Long) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (!predicate(index, key, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun SparseLongArray.anyIndexed(predicate: (Int, Int, Long) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            return true
+        }
+    }
+    return false
+}
+
+inline fun SparseLongArray.forEachIndexed(action: (Int, Int, Long) -> Unit) {
+    for (index in 0 until size) {
+        action(index, keyAt(index), valueAt(index))
+    }
+}
+
+inline fun SparseLongArray.forEachReversedIndexed(action: (Int, Int, Long) -> Unit) {
+    for (index in lastIndex downTo 0) {
+        action(index, keyAt(index), valueAt(index))
+    }
+}
+
+inline fun SparseLongArray.getOrPut(key: Int, defaultValue: () -> Long): Long {
+    val index = indexOfKey(key)
+    return if (index >= 0) {
+        valueAt(index)
+    } else {
+        defaultValue().also { put(key, it) }
+    }
+}
+
+inline val SparseLongArray.lastIndex: Int
+    get() = size - 1
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun SparseLongArray.minusAssign(key: Int) {
+    delete(key)
+}
+
+inline fun SparseLongArray.noneIndexed(predicate: (Int, Int, Long) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+fun SparseLongArray.remove(key: Int) {
+    delete(key)
+}
+
+fun SparseLongArray.remove(key: Int, defaultValue: Long): Long {
+    val index = indexOfKey(key)
+    return if (index >= 0) {
+        val oldValue = valueAt(index)
+        removeAt(index)
+        oldValue
+    } else {
+        defaultValue
+    }
+}
+
+inline fun SparseLongArray.removeAllIndexed(predicate: (Int, Int, Long) -> Boolean): Boolean {
+    var isChanged = false
+    forEachReversedIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            removeAt(index)
+            isChanged = true
+        }
+    }
+    return isChanged
+}
+
+inline fun SparseLongArray.retainAllIndexed(predicate: (Int, Int, Long) -> Boolean): Boolean {
+    var isChanged = false
+    forEachReversedIndexed { index, key, value ->
+        if (!predicate(index, key, value)) {
+            removeAt(index)
+            isChanged = true
+        }
+    }
+    return isChanged
+}
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun SparseLongArray.set(key: Int, value: Long) {
+    put(key, value)
+}
+
+inline val SparseLongArray.size: Int
+    get() = size()
diff --git a/services/permission/java/com/android/server/permission/access/immutable/Immutable.kt b/services/permission/java/com/android/server/permission/access/immutable/Immutable.kt
new file mode 100644
index 0000000..64e6d4d
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/Immutable.kt
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+interface Immutable<M> {
+    fun toMutable(): M
+}
diff --git a/services/permission/java/com/android/server/permission/access/immutable/Immutable.md b/services/permission/java/com/android/server/permission/access/immutable/Immutable.md
new file mode 100644
index 0000000..dcf30d2
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/Immutable.md
@@ -0,0 +1,214 @@
+# Immutable Data Structures
+
+## Introduction
+
+The classes inside this package implements a way to manipulate data in an immutable way, which
+allows achieving lock-free reads for performance-critical code paths, and organizing the
+implementation of complex state transitions in a readable and maintainable way.
+
+## Features
+
+This implementation provides the following features:
+
+- Immutability is implemented leveraging the Java/Kotlin type system.
+
+    Each data structure has both an immutable and a mutable variant, so that the type system will be
+    enforcing proper operations on the data during compilation and preventing any accidental
+    mutations.
+
+- Unmodified portion of the data is shared between mutations.
+
+    Making a full copy of the entire state for any modification is often an overkill and bad for
+    performance, so a path-copy approach is taken when mutating part of the data, which is also
+    enforced by the type system.
+
+- Consecutive modifications can be batched.
+
+    This implementation keeps track of the mutation status of each object and reuses objects that
+    are already copied to perform further mutations, so that temporary copies won't be unnecessarily
+    created.
+
+- No manual `freeze()` calls needed at the end of modifications.
+
+    Thanks to the type system enforced immutability, a mutated data structure can simply be upcasted
+    back to its immutable variant at the end of mutations, so that any future modification will
+    require a new call to `toMutable()` which ensures a new copy is created. This eliminates a whole
+    class of potential issues with a required manual `freeze()` call, which may either be forgotten
+    for (part of) the data and result in hard-to-catch bugs, or require correct boilerplate code
+    that properly propagates this information across the entire tree of objects.
+
+- Android-specific data structures are included.
+
+    Android has its own collection classes (e.g. `ArrayMap` and `SparseArray`) that are preferred
+    (for typical amount of data) for performance reasons, and this implementation provides
+    immutability for them via wrapper classes so that the same underlying implementation is used and
+    the same performance goals are achieved.
+
+- Android Runtime performance is considered.
+
+    Both the immutable and mutable variants are defined as classes and their member methods are
+    final (default in Kotlin), so that the method invocations will be `invoke-direct` and allow
+    better AOT compilation.
+
+    The data structure classes here also deliberately chose to not implement the standard
+    Java/Kotlin collection interfaces, so that we can enforce that a number of standard Java/Kotlin
+    utilities that may be bad for performance or generate interface calls (e.g. Java 8 streams,
+    methods taking non-inlined lambdas and kotlin-stdlib extensions taking interfaces) won't be
+    accidentally used. We will only add utility methods when necessary and with proper performance
+    considerations (e.g. indexed iteration, taking class instead of interface).
+
+## Implementation
+
+### Immutable and mutable classes
+
+In order to leverage the type system to enforce immutability, the core idea is to have both an
+immutable and a mutable class for any data structure, where the latter extends the former
+(important for `MutableReference` later).
+
+### How mutation works
+
+The primary difficulty in design comes when data structures are composed together in a tree-like
+fashion, via map or custom data structures. Specifically, the mutation and copy-on-write would
+first happen on the immediate data structure that is being mutated, which would produce a new
+instance that contains the mutation, however it is the parent data structure that also needs to know
+about this new instance and mutate itself to update its reference to the new child. This problem is
+also referred to as "path copying" in persistent data structures.
+
+This design difficulty is solved by the following convention in this implementation. Normally, the
+immutable class is good for any read-only access. But when any mutations are needed, it can be
+started by calling a `toMutable()` method on the root data structure, which would return a mutable
+class over a shallow copy of the existing data. In order to perform the actual mutation deeper in
+the tree, a chain of `mutateFoo()` calls will be needed to obtain mutable classes of child data
+structures, while these `mutateFoo()` calls are also only available on mutable classes. This way,
+proper chain of mutation is also enforced by the type system, and unmodified data is unchanged and
+reused.
+
+Here is an example of how this convention would work in the real-world. A read access would just
+work as if this implementation isn't involved:
+
+```kotlin
+val permission = state.systemState.permissions[permissionName]
+```
+
+Whereas the write access would remain similar, which is natural and easy-to-use with safety
+guaranteed by the type system:
+
+```kotlin
+val newState = state.toMutable()
+newState.mutateSystemState().mutatePermissions().put(permission.name, permission)
+state = newState
+```
+
+### The magic: `MutableReference`
+
+The magic of the implementation for this convention comes from the `MutableReference` class, and
+below is a simplified version of it.
+
+```kotlin
+class MutableReference<I : Immutable<M>, M : I>(
+    private var immutable: I,
+    private var mutable: M?
+) {
+    fun get(): I = immutable
+
+    fun mutate(): M {
+        mutable?.let { return it }
+        return immutable.toMutable().also {
+            immutable = it
+            mutable = it
+        }
+    }
+
+    fun toImmutable(): MutableReference<I, M> = MutableReference(immutable, null)
+}
+
+interface Immutable<M> {
+    fun toMutable(): M
+}
+```
+
+Reference to any mutable data structure should be wrapped by this `MutableReference`, which
+encapsulates the logic to mutate/copy a child data structure and update the reference to the new
+child instance. It also remembers the mutated child instance so that it can be reused during further
+mutations. These `MutableReference` objects should be kept private within a data structure, with the
+`get()` method exposed on the immutable interface of the data structure as `getFoo()`, and the
+`mutate()` method exposed on the mutable interface of the data structure as `mutateFoo()`. When the
+parent data structure is mutated/copied, a new `MutableReference` object should be obtained with
+`MutableReference.toImmutable()`, which creates a new reference with the state only being immutable
+and prevents modifications to an object accessed with an immutable interface.
+
+Here is how the usage of `MutableReference` would be like in an actual class:
+
+```kotlin
+private typealias PermissionsReference =
+    MutableReference<IndexedMap<String, Permission>, MutableIndexedMap<String, Permission>>
+
+sealed class SystemState(
+    protected val permissionsReference: PermissionsReference
+) {
+    val permissions: IndexedMap<String, Permission>
+        get() = permissionsReference.get()
+}
+
+class MutableSystemState(
+    permissionsReference: PermissionsReference
+) : SystemState(permissionsRef), Immutable<MutableSystemState> {
+    fun mutatePermissions(): MutableIndexedMap<String, Permission> = permissionsReference.mutate()
+
+    override fun toMutable(): MutableSystemState =
+        MutableSystemState(permissionsReference.toImmutable())
+}
+```
+
+For collection classes like `IndexedMap`, there are also classes like `IndexedReferenceMap` where
+the values are held by `MutableReference`s, and a `mutate(key: K): V` method would help obtain a
+mutable instance of map values.
+
+## Comparison with similar solutions
+
+### Persistent data structure
+
+[Persistent data structure](https://www.wikiwand.com/en/Persistent_data_structure) is a special type
+of data structure implementation that are designed to always preserve the previous version of itself
+when it's modified. Copy-on-write data structure is a common example of it.
+
+Theoretically, persistent data structure can help eliminate the need for locking even upon
+mutations. However, in reality a lot of mutation operations may be updating multiple places in the
+tree of states, and without locking the reader might see an inconsistent state that's right in the
+middle of a mutation operation and make a wrong decision. As a result, we will still need locking
+upon mutations.
+
+Persistent data structure is also much more complex than a plain mutable data structure, both in
+terms of complexity and in terms of performance, and vastly different from the Android-specific
+collection classes that are recommended. Whereas this implementation is just a lightweight wrapper
+around the Android-specific collection classes, which allows reusing them and following the
+guidance for platform code.
+
+### `Snappable` and `Watchable` in `PackageManagerService`
+
+`Snappable` and `Watchable` is an alternative solution for lock contention and immutability.
+Basically, all the mutable state classes will need to implement a way to snapshot themselves, and a
+cache is used for each level of snapshot to reuse copies; the classes will also need to correctly
+implement change notification, so that listeners can be registered to both invalidate snapshot cache
+upon change and detect illegal mutations at run time.
+
+Here are the pros and cons of this implementation, when compared with the snapshot solution:
+
+|                        | Snapshot                                                                                                                                                                      | Immutable                                                                                                                                       |
+|------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------|
+| Locking for reads      | Locked reads when no cached snapshot, lockless when cached                                                                                                                    | Always lockless reads                                                                                                                           |
+| Memory footprint       | Doubled memory usage for mutable data because a copy is kept in snapshot cache if ever read                                                                                   | Potentially more than necessary transient memory usage due to immutability instead of on-demand snapshot (may be mitigated for in-process code) |
+| Immutability for reads | Enforced during run time by `seal()` and `Watchable`                                                                                                                          | Enforced during compile time by type system                                                                                                     |
+| Integration complexity | A `SnapshotCache` field for every existing field, and a correctly implemented `snapshot()` method, keeps Java collection interfaces                                           | Two classes with straightforward accessors for `MutableReference` fields, less room for incorrect code, ditches Java collection interfaces      |
+| ART performance        | Non-final methods (may be made final), potential interface calls for Java collection interfaces, `Snappable` and `Watchable` interface and `instanceof` check for `Snappable` | Final methods, can't have interface call for Java/Kotlin collection interfaces, `Immutable` interface but no `instanceof` check                 |
+
+Unlike package state, permission state is far more frequently queried than mutated - mutations
+mostly happen upon first boot, or when user changes their permission decision which is rare in terms
+of the entire uptime of the system. So reads being always lockless is generally a more suitable
+design in terms of performance, and it also allows flexibility in code that have to obtain external
+state. This fact has a similar impact on the memory footprint, since most of the time the state will
+be unchanged and only read, and we should avoid having to keep another copy of it. Compile time
+enforcement of immutability for reads is safer than run time enforcement, and less room for
+incorrect integration is also an upside when both require some form of code and permission code is
+new. So all in all, the immutable data structure proposed in this document is more suitable for the
+new permission implementation.
diff --git a/services/permission/java/com/android/server/permission/access/immutable/IndexedList.kt b/services/permission/java/com/android/server/permission/access/immutable/IndexedList.kt
new file mode 100644
index 0000000..30b67c3
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/IndexedList.kt
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+sealed class IndexedList<T>(
+    internal val list: ArrayList<T>
+) : Immutable<MutableIndexedList<T>> {
+    val size: Int
+        get() = list.size
+
+    fun isEmpty(): Boolean = list.isEmpty()
+
+    operator fun contains(element: T): Boolean = list.contains(element)
+
+    @Suppress("ReplaceGetOrSet")
+    operator fun get(index: Int): T = list.get(index)
+
+    override fun toMutable(): MutableIndexedList<T> = MutableIndexedList(this)
+}
+
+class MutableIndexedList<T>(
+    list: ArrayList<T> = ArrayList()
+) : IndexedList<T>(list) {
+    constructor(indexedList: IndexedList<T>) : this(ArrayList(indexedList.list))
+
+    @Suppress("ReplaceGetOrSet")
+    operator fun set(index: Int, element: T): T = list.set(index, element)
+
+    fun add(element: T) {
+        list.add(element)
+    }
+
+    fun add(index: Int, element: T) {
+        list.add(index, element)
+    }
+
+    fun remove(element: T) {
+        list.remove(element)
+    }
+
+    fun clear() {
+        list.clear()
+    }
+
+    fun removeAt(index: Int): T = list.removeAt(index)
+}
diff --git a/services/permission/java/com/android/server/permission/access/immutable/IndexedListExtensions.kt b/services/permission/java/com/android/server/permission/access/immutable/IndexedListExtensions.kt
new file mode 100644
index 0000000..85326c3
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/IndexedListExtensions.kt
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+inline fun <T> IndexedList<T>.allIndexed(predicate: (Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, element ->
+        if (!predicate(index, element)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun <T> IndexedList<T>.anyIndexed(predicate: (Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, element ->
+        if (predicate(index, element)) {
+            return true
+        }
+    }
+    return false
+}
+
+inline fun <T> IndexedList<T>.forEachIndexed(action: (Int, T) -> Unit) {
+    for (index in 0 until size) {
+        action(index, this[index])
+    }
+}
+
+inline fun <T> IndexedList<T>.forEachReversedIndexed(action: (Int, T) -> Unit) {
+    for (index in lastIndex downTo 0) {
+        action(index, this[index])
+    }
+}
+
+inline val <T> IndexedList<T>.lastIndex: Int
+    get() = size - 1
+
+operator fun <T> IndexedList<T>.minus(element: T): MutableIndexedList<T> =
+    toMutable().apply { this -= element }
+
+inline fun <T> IndexedList<T>.noneIndexed(predicate: (Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, element ->
+        if (predicate(index, element)) {
+            return false
+        }
+    }
+    return true
+}
+
+operator fun <T> IndexedList<T>.plus(element: T): MutableIndexedList<T> =
+    toMutable().apply { this += element }
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun <T> MutableIndexedList<T>.minusAssign(element: T) {
+    remove(element)
+}
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun <T> MutableIndexedList<T>.plusAssign(element: T) {
+    add(element)
+}
diff --git a/services/permission/java/com/android/server/permission/access/immutable/IndexedListSet.kt b/services/permission/java/com/android/server/permission/access/immutable/IndexedListSet.kt
new file mode 100644
index 0000000..e744867
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/IndexedListSet.kt
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+sealed class IndexedListSet<T>(
+    internal val list: ArrayList<T>
+) : Immutable<MutableIndexedListSet<T>> {
+    val size: Int
+        get() = list.size
+
+    fun isEmpty(): Boolean = list.isEmpty()
+
+    operator fun contains(element: T): Boolean = list.contains(element)
+
+    fun indexOf(element: T): Int = list.indexOf(element)
+
+    @Suppress("ReplaceGetOrSet")
+    fun elementAt(index: Int): T = list.get(index)
+
+    override fun toMutable(): MutableIndexedListSet<T> = MutableIndexedListSet(this)
+}
+
+class MutableIndexedListSet<T>(
+    list: ArrayList<T> = ArrayList()
+) : IndexedListSet<T>(list) {
+    constructor(indexedListSet: IndexedListSet<T>) : this(ArrayList(indexedListSet.list))
+
+    fun add(element: T): Boolean =
+        if (list.contains(element)) {
+            false
+        } else {
+            list.add(element)
+            true
+        }
+
+    fun remove(element: T): Boolean = list.remove(element)
+
+    fun clear() {
+        list.clear()
+    }
+
+    fun removeAt(index: Int): T = list.removeAt(index)
+}
diff --git a/services/permission/java/com/android/server/permission/access/immutable/IndexedListSetExtensions.kt b/services/permission/java/com/android/server/permission/access/immutable/IndexedListSetExtensions.kt
new file mode 100644
index 0000000..950d9aa
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/IndexedListSetExtensions.kt
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+inline fun <T> IndexedListSet<T>.allIndexed(predicate: (Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, element ->
+        if (!predicate(index, element)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun <T> IndexedListSet<T>.anyIndexed(predicate: (Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, element ->
+        if (predicate(index, element)) {
+            return true
+        }
+    }
+    return false
+}
+
+inline fun <T> IndexedListSet<T>.forEachIndexed(action: (Int, T) -> Unit) {
+    for (index in 0 until size) {
+        action(index, elementAt(index))
+    }
+}
+
+inline fun <T> IndexedListSet<T>.forEachReversedIndexed(action: (Int, T) -> Unit) {
+    for (index in lastIndex downTo 0) {
+        action(index, elementAt(index))
+    }
+}
+
+inline val <T> IndexedListSet<T>.lastIndex: Int
+    get() = size - 1
+
+operator fun <T> IndexedListSet<T>.minus(element: T): MutableIndexedListSet<T> =
+    toMutable().apply { this -= element }
+
+inline fun <T> IndexedListSet<T>.noneIndexed(predicate: (Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, element ->
+        if (predicate(index, element)) {
+            return false
+        }
+    }
+    return true
+}
+
+operator fun <T> IndexedListSet<T>.plus(element: T): MutableIndexedListSet<T> =
+    toMutable().apply { this += element }
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun <T> MutableIndexedListSet<T>.minusAssign(element: T) {
+    remove(element)
+}
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun <T> MutableIndexedListSet<T>.plusAssign(element: T) {
+    add(element)
+}
diff --git a/services/permission/java/com/android/server/permission/access/immutable/IndexedMap.kt b/services/permission/java/com/android/server/permission/access/immutable/IndexedMap.kt
new file mode 100644
index 0000000..396a328
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/IndexedMap.kt
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+import android.util.ArrayMap
+
+sealed class IndexedMap<K, V>(
+    internal val map: ArrayMap<K, V>
+) : Immutable<MutableIndexedMap<K, V>> {
+    val size: Int
+        get() = map.size
+
+    fun isEmpty(): Boolean = map.isEmpty()
+
+    operator fun contains(key: K): Boolean = map.containsKey(key)
+
+    @Suppress("ReplaceGetOrSet")
+    operator fun get(key: K): V? = map.get(key)
+
+    fun indexOfKey(key: K): Int = map.indexOfKey(key)
+
+    fun keyAt(index: Int): K = map.keyAt(index)
+
+    fun valueAt(index: Int): V = map.valueAt(index)
+
+    override fun toMutable(): MutableIndexedMap<K, V> = MutableIndexedMap(this)
+}
+
+class MutableIndexedMap<K, V>(
+    map: ArrayMap<K, V> = ArrayMap()
+) : IndexedMap<K, V>(map) {
+    constructor(indexedMap: IndexedMap<K, V>) : this(ArrayMap(indexedMap.map))
+
+    fun put(key: K, value: V): V? = map.put(key, value)
+
+    fun remove(key: K): V? = map.remove(key)
+
+    fun clear() {
+        map.clear()
+    }
+
+    fun putAt(index: Int, value: V): V = map.setValueAt(index, value)
+
+    fun removeAt(index: Int): V = map.removeAt(index)
+}
diff --git a/services/permission/java/com/android/server/permission/access/immutable/IndexedMapExtensions.kt b/services/permission/java/com/android/server/permission/access/immutable/IndexedMapExtensions.kt
new file mode 100644
index 0000000..69f1779c
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/IndexedMapExtensions.kt
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+inline fun <K, V> IndexedMap<K, V>.allIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (!predicate(index, key, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun <K, V> IndexedMap<K, V>.anyIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            return true
+        }
+    }
+    return false
+}
+
+inline fun <K, V, R> IndexedMap<K, V>.firstNotNullOfOrNullIndexed(transform: (Int, K, V) -> R): R? {
+    forEachIndexed { index, key, value ->
+        transform(index, key, value)?.let { return it }
+    }
+    return null
+}
+
+inline fun <K, V> IndexedMap<K, V>.forEachIndexed(action: (Int, K, V) -> Unit) {
+    for (index in 0 until size) {
+        action(index, keyAt(index), valueAt(index))
+    }
+}
+
+inline fun <K, V> IndexedMap<K, V>.forEachReversedIndexed(action: (Int, K, V) -> Unit) {
+    for (index in lastIndex downTo 0) {
+        action(index, keyAt(index), valueAt(index))
+    }
+}
+
+fun <K, V> IndexedMap<K, V>?.getWithDefault(key: K, defaultValue: V): V {
+    this ?: return defaultValue
+    val index = indexOfKey(key)
+    return if (index >= 0) valueAt(index) else defaultValue
+}
+
+inline val <K, V> IndexedMap<K, V>.lastIndex: Int
+    get() = size - 1
+
+inline fun <K, V> IndexedMap<K, V>.noneIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun <K, V, R, C : MutableCollection<R>> IndexedMap<K, V>.mapIndexedTo(
+    destination: C,
+    transform: (Int, K, V) -> R,
+): C {
+    forEachIndexed { index, key, value ->
+        transform(index, key, value).let { destination += it }
+    }
+    return destination
+}
+
+inline fun <K, V, R, C : MutableCollection<R>> IndexedMap<K, V>.mapNotNullIndexedTo(
+    destination: C,
+    transform: (Int, K, V) -> R?
+): C {
+    forEachIndexed { index, key, value ->
+        transform(index, key, value)?.let { destination += it }
+    }
+    return destination
+}
+
+inline fun <K, V> MutableIndexedMap<K, V>.getOrPut(key: K, defaultValue: () -> V): V {
+    get(key)?.let { return it }
+    return defaultValue().also { put(key, it) }
+}
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun <K, V> MutableIndexedMap<K, V>.minusAssign(key: K) {
+    remove(key)
+}
+
+fun <K, V> MutableIndexedMap<K, V>.putWithDefault(key: K, value: V, defaultValue: V): V {
+    val index = indexOfKey(key)
+    if (index >= 0) {
+        val oldValue = valueAt(index)
+        if (value != oldValue) {
+            if (value == defaultValue) {
+                removeAt(index)
+            } else {
+                putAt(index, value)
+            }
+        }
+        return oldValue
+    } else {
+        if (value != defaultValue) {
+            put(key, value)
+        }
+        return defaultValue
+    }
+}
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun <K, V> MutableIndexedMap<K, V>.set(key: K, value: V) {
+    put(key, value)
+}
diff --git a/services/permission/java/com/android/server/permission/access/immutable/IndexedReferenceMap.kt b/services/permission/java/com/android/server/permission/access/immutable/IndexedReferenceMap.kt
new file mode 100644
index 0000000..3869b57
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/IndexedReferenceMap.kt
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+import android.util.ArrayMap
+
+sealed class IndexedReferenceMap<K, I : Immutable<M>, M : I>(
+    internal val map: ArrayMap<K, MutableReference<I, M>>
+) : Immutable<MutableIndexedReferenceMap<K, I, M>> {
+    val size: Int
+        get() = map.size
+
+    fun isEmpty(): Boolean = map.isEmpty()
+
+    operator fun contains(key: K): Boolean = map.containsKey(key)
+
+    @Suppress("ReplaceGetOrSet")
+    operator fun get(key: K): I? = map.get(key)?.get()
+
+    fun indexOfKey(key: K): Int = map.indexOfKey(key)
+
+    fun keyAt(index: Int): K = map.keyAt(index)
+
+    fun valueAt(index: Int): I = map.valueAt(index).get()
+
+    override fun toMutable(): MutableIndexedReferenceMap<K, I, M> = MutableIndexedReferenceMap(this)
+}
+
+class MutableIndexedReferenceMap<K, I : Immutable<M>, M : I>(
+    map: ArrayMap<K, MutableReference<I, M>> = ArrayMap()
+) : IndexedReferenceMap<K, I, M>(map) {
+    constructor(indexedReferenceMap: IndexedReferenceMap<K, I, M>) : this(
+        ArrayMap(indexedReferenceMap.map).apply {
+            for (i in 0 until size) {
+                setValueAt(i, valueAt(i).toImmutable())
+            }
+        }
+    )
+
+    @Suppress("ReplaceGetOrSet")
+    fun mutate(key: K): M? = map.get(key)?.mutate()
+
+    fun put(key: K, value: M): I? = map.put(key, MutableReference(value))?.get()
+
+    fun remove(key: K): I? = map.remove(key)?.get()
+
+    fun clear() {
+        map.clear()
+    }
+
+    fun mutateAt(index: Int): M = map.valueAt(index).mutate()
+
+    fun putAt(index: Int, value: M): I = map.setValueAt(index, MutableReference(value)).get()
+
+    fun removeAt(index: Int): I = map.removeAt(index).get()
+}
diff --git a/services/permission/java/com/android/server/permission/access/immutable/IndexedReferenceMapExtensions.kt b/services/permission/java/com/android/server/permission/access/immutable/IndexedReferenceMapExtensions.kt
new file mode 100644
index 0000000..22b4d52
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/IndexedReferenceMapExtensions.kt
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+inline fun <K, I : Immutable<M>, M : I> IndexedReferenceMap<K, I, M>.allIndexed(
+    predicate: (Int, K, I) -> Boolean
+): Boolean {
+    forEachIndexed { index, key, value ->
+        if (!predicate(index, key, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun <K, I : Immutable<M>, M : I> IndexedReferenceMap<K, I, M>.anyIndexed(
+    predicate: (Int, K, I) -> Boolean
+): Boolean {
+    forEachIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            return true
+        }
+    }
+    return false
+}
+
+inline fun <K, I : Immutable<M>, M : I> IndexedReferenceMap<K, I, M>.forEachIndexed(
+    action: (Int, K, I) -> Unit
+) {
+    for (index in 0 until size) {
+        action(index, keyAt(index), valueAt(index))
+    }
+}
+
+inline fun <K, I : Immutable<M>, M : I> IndexedReferenceMap<K, I, M>.forEachReversedIndexed(
+    action: (Int, K, I) -> Unit
+) {
+    for (index in lastIndex downTo 0) {
+        action(index, keyAt(index), valueAt(index))
+    }
+}
+
+inline val <K, I : Immutable<M>, M : I> IndexedReferenceMap<K, I, M>.lastIndex: Int
+    get() = size - 1
+
+inline fun <K, I : Immutable<M>, M : I> IndexedReferenceMap<K, I, M>.noneIndexed(
+    predicate: (Int, K, I) -> Boolean
+): Boolean {
+    forEachIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun <K, I : Immutable<M>, M : I> MutableIndexedReferenceMap<K, I, M>.mutateOrPut(
+    key: K,
+    defaultValue: () -> M
+): M {
+    mutate(key)?.let { return it }
+    return defaultValue().also { put(key, it) }
+}
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun <K, I : Immutable<M>, M : I> MutableIndexedReferenceMap<K, I, M>.minusAssign(
+    key: K
+) {
+    remove(key)
+}
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun <K, I : Immutable<M>, M : I> MutableIndexedReferenceMap<K, I, M>.set(
+    key: K,
+    value: M
+) {
+    put(key, value)
+}
diff --git a/services/permission/java/com/android/server/permission/access/immutable/IndexedSet.kt b/services/permission/java/com/android/server/permission/access/immutable/IndexedSet.kt
new file mode 100644
index 0000000..c7c0498
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/IndexedSet.kt
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+import android.util.ArraySet
+
+sealed class IndexedSet<T>(
+    internal val set: ArraySet<T>
+) : Immutable<MutableIndexedSet<T>> {
+    val size: Int
+        get() = set.size
+
+    fun isEmpty(): Boolean = set.isEmpty()
+
+    operator fun contains(element: T): Boolean = set.contains(element)
+
+    fun indexOf(element: T): Int = set.indexOf(element)
+
+    fun elementAt(index: Int): T = set.elementAt(index)
+
+    override fun toMutable(): MutableIndexedSet<T> = MutableIndexedSet(this)
+}
+
+class MutableIndexedSet<T>(
+    set: ArraySet<T> = ArraySet()
+) : IndexedSet<T>(set) {
+    constructor(indexedSet: IndexedSet<T>) : this(ArraySet(indexedSet.set))
+
+    fun add(element: T): Boolean = set.add(element)
+
+    fun remove(element: T): Boolean = set.remove(element)
+
+    fun clear() {
+        set.clear()
+    }
+
+    fun removeAt(index: Int): T = set.removeAt(index)
+}
diff --git a/services/permission/java/com/android/server/permission/access/immutable/IndexedSetExtensions.kt b/services/permission/java/com/android/server/permission/access/immutable/IndexedSetExtensions.kt
new file mode 100644
index 0000000..2cc1b2a
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/IndexedSetExtensions.kt
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+import android.util.ArraySet
+import com.android.server.permission.access.collection.forEachIndexed
+
+fun <T> indexedSetOf(vararg elements: T): IndexedSet<T> =
+    MutableIndexedSet(ArraySet(elements.asList()))
+
+inline fun <T> IndexedSet<T>.allIndexed(predicate: (Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, element ->
+        if (!predicate(index, element)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun <T> IndexedSet<T>.anyIndexed(predicate: (Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, element ->
+        if (predicate(index, element)) {
+            return true
+        }
+    }
+    return false
+}
+
+inline fun <T> IndexedSet<T>.forEachIndexed(action: (Int, T) -> Unit) {
+    for (index in 0 until size) {
+        action(index, elementAt(index))
+    }
+}
+
+inline fun <T> IndexedSet<T>.forEachReversedIndexed(action: (Int, T) -> Unit) {
+    for (index in lastIndex downTo 0) {
+        action(index, elementAt(index))
+    }
+}
+
+inline val <T> IndexedSet<T>.lastIndex: Int
+    get() = size - 1
+
+operator fun <T> IndexedSet<T>.minus(element: T): MutableIndexedSet<T> =
+    toMutable().apply { this -= element }
+
+inline fun <T> IndexedSet<T>.noneIndexed(predicate: (Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, element ->
+        if (predicate(index, element)) {
+            return false
+        }
+    }
+    return true
+}
+
+operator fun <T> IndexedSet<T>.plus(element: T): MutableIndexedSet<T> =
+    toMutable().apply { this += element }
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun <T> MutableIndexedSet<T>.minusAssign(element: T) {
+    remove(element)
+}
+
+@Suppress("NOTHING_TO_INLINE")
+inline operator fun <T> MutableIndexedSet<T>.plusAssign(element: T) {
+    add(element)
+}
+
+operator fun <T> MutableIndexedSet<T>.plusAssign(list: List<T>) {
+    list.forEachIndexed { _, it -> this += it }
+}
diff --git a/services/permission/java/com/android/server/permission/access/immutable/IntMap.kt b/services/permission/java/com/android/server/permission/access/immutable/IntMap.kt
new file mode 100644
index 0000000..a846050
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/IntMap.kt
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+import android.util.SparseArray
+
+sealed class IntMap<T>(
+    internal val array: SparseArray<T>
+) : Immutable<MutableIntMap<T>> {
+    val size: Int
+        get() = array.size()
+
+    fun isEmpty(): Boolean = array.size() == 0
+
+    operator fun contains(key: Int): Boolean = array.contains(key)
+
+    operator fun get(key: Int): T? = array.get(key)
+
+    fun indexOfKey(key: Int): Int = array.indexOfKey(key)
+
+    fun keyAt(index: Int): Int = array.keyAt(index)
+
+    fun valueAt(index: Int): T = array.valueAt(index)
+
+    override fun toMutable(): MutableIntMap<T> = MutableIntMap(this)
+}
+
+class MutableIntMap<T>(
+    array: SparseArray<T> = SparseArray()
+) : IntMap<T>(array) {
+    constructor(intMap: IntMap<T>) : this(intMap.array.clone())
+
+    fun put(key: Int, value: T): T? = array.putReturnOld(key, value)
+
+    fun remove(key: Int): T? = array.removeReturnOld(key)
+
+    fun clear() {
+        array.clear()
+    }
+
+    fun putAt(index: Int, value: T): T = array.setValueAtReturnOld(index, value)
+
+    fun removeAt(index: Int): T = array.removeAtReturnOld(index)
+}
+
+internal fun <T> SparseArray<T>.putReturnOld(key: Int, value: T): T? {
+    val index = indexOfKey(key)
+    return if (index >= 0) {
+        val oldValue = valueAt(index)
+        setValueAt(index, value)
+        oldValue
+    } else {
+        put(key, value)
+        null
+    }
+}
+
+// SparseArray.removeReturnOld() is @hide, so a backup once we move to APIs.
+@Suppress("EXTENSION_SHADOWED_BY_MEMBER")
+internal fun <T> SparseArray<T>.removeReturnOld(key: Int): T? {
+    val index = indexOfKey(key)
+    return if (index >= 0) {
+        val oldValue = valueAt(index)
+        removeAt(index)
+        oldValue
+    } else {
+        null
+    }
+}
+
+internal fun <T> SparseArray<T>.setValueAtReturnOld(index: Int, value: T): T {
+    val oldValue = valueAt(index)
+    setValueAt(index, value)
+    return oldValue
+}
+
+internal fun <T> SparseArray<T>.removeAtReturnOld(index: Int): T {
+    val oldValue = valueAt(index)
+    removeAt(index)
+    return oldValue
+}
diff --git a/services/permission/java/com/android/server/permission/access/immutable/IntMapExtensions.kt b/services/permission/java/com/android/server/permission/access/immutable/IntMapExtensions.kt
new file mode 100644
index 0000000..ed7f0af
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/IntMapExtensions.kt
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+inline fun <T> IntMap<T>.allIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (!predicate(index, key, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun <T> IntMap<T>.anyIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            return true
+        }
+    }
+    return false
+}
+
+inline fun <T, R> IntMap<T>.firstNotNullOfOrNullIndexed(transform: (Int, Int, T) -> R): R? {
+    forEachIndexed { index, key, value ->
+        transform(index, key, value)?.let { return it }
+    }
+    return null
+}
+
+inline fun <T> IntMap<T>.forEachIndexed(action: (Int, Int, T) -> Unit) {
+    for (index in 0 until size) {
+        action(index, keyAt(index), valueAt(index))
+    }
+}
+
+inline fun <T> IntMap<T>.forEachReversedIndexed(action: (Int, Int, T) -> Unit) {
+    for (index in lastIndex downTo 0) {
+        action(index, keyAt(index), valueAt(index))
+    }
+}
+
+fun <T> IntMap<T>?.getWithDefault(key: Int, defaultValue: T): T {
+    this ?: return defaultValue
+    val index = indexOfKey(key)
+    return if (index >= 0) valueAt(index) else defaultValue
+}
+
+inline val <T> IntMap<T>.lastIndex: Int
+    get() = size - 1
+
+inline fun <T> IntMap<T>.noneIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
+    forEachIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun <T> MutableIntMap<T>.getOrPut(key: Int, defaultValue: () -> T): T {
+    get(key)?.let { return it }
+    return defaultValue().also { put(key, it) }
+}
+
+operator fun <T> MutableIntMap<T>.minusAssign(key: Int) {
+    array.remove(key)
+}
+
+fun <T> MutableIntMap<T>.putWithDefault(key: Int, value: T, defaultValue: T): T {
+    val index = indexOfKey(key)
+    if (index >= 0) {
+        val oldValue = valueAt(index)
+        if (value != oldValue) {
+            if (value == defaultValue) {
+                removeAt(index)
+            } else {
+                putAt(index, value)
+            }
+        }
+        return oldValue
+    } else {
+        if (value != defaultValue) {
+            put(key, value)
+        }
+        return defaultValue
+    }
+}
+
+operator fun <T> MutableIntMap<T>.set(key: Int, value: T) {
+    array.put(key, value)
+}
diff --git a/services/permission/java/com/android/server/permission/access/immutable/IntReferenceMap.kt b/services/permission/java/com/android/server/permission/access/immutable/IntReferenceMap.kt
new file mode 100644
index 0000000..519a36f
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/IntReferenceMap.kt
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+import android.util.SparseArray
+
+sealed class IntReferenceMap<I : Immutable<M>, M : I>(
+    internal val array: SparseArray<MutableReference<I, M>>
+) : Immutable<MutableIntReferenceMap<I, M>> {
+    val size: Int
+        get() = array.size()
+
+    fun isEmpty(): Boolean = array.size() == 0
+
+    operator fun contains(key: Int): Boolean = array.contains(key)
+
+    @Suppress("ReplaceGetOrSet")
+    operator fun get(key: Int): I? = array.get(key)?.get()
+
+    fun indexOfKey(key: Int): Int = array.indexOfKey(key)
+
+    fun keyAt(index: Int): Int = array.keyAt(index)
+
+    fun valueAt(index: Int): I = array.valueAt(index).get()
+
+    override fun toMutable(): MutableIntReferenceMap<I, M> = MutableIntReferenceMap(this)
+}
+
+class MutableIntReferenceMap<I : Immutable<M>, M : I>(
+    array: SparseArray<MutableReference<I, M>> = SparseArray()
+) : IntReferenceMap<I, M>(array) {
+    constructor(intReferenceMap: IntReferenceMap<I, M>) : this(
+        intReferenceMap.array.clone().apply {
+            for (i in 0 until size()) {
+                setValueAt(i, valueAt(i).toImmutable())
+            }
+        }
+    )
+
+    @Suppress("ReplaceGetOrSet")
+    fun mutate(key: Int): M? = array.get(key)?.mutate()
+
+    fun put(key: Int, value: M): I? = array.putReturnOld(key, MutableReference(value))?.get()
+
+    fun remove(key: Int): I? = array.removeReturnOld(key)?.get()
+
+    fun clear() {
+        array.clear()
+    }
+
+    fun mutateAt(index: Int): M = array.valueAt(index).mutate()
+
+    fun putAt(index: Int, value: M): I =
+        array.setValueAtReturnOld(index, MutableReference(value)).get()
+
+    fun removeAt(index: Int): I = array.removeAtReturnOld(index).get()
+}
diff --git a/services/permission/java/com/android/server/permission/access/immutable/IntReferenceMapExtensions.kt b/services/permission/java/com/android/server/permission/access/immutable/IntReferenceMapExtensions.kt
new file mode 100644
index 0000000..b4de5d1
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/IntReferenceMapExtensions.kt
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+inline fun <I : Immutable<M>, M : I> IntReferenceMap<I, M>.allIndexed(
+    predicate: (Int, Int, I) -> Boolean
+): Boolean {
+    forEachIndexed { index, key, value ->
+        if (!predicate(index, key, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun <I : Immutable<M>, M : I> IntReferenceMap<I, M>.anyIndexed(
+    predicate: (Int, Int, I) -> Boolean
+): Boolean {
+    forEachIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            return true
+        }
+    }
+    return false
+}
+
+inline fun <I : Immutable<M>, M : I> IntReferenceMap<I, M>.forEachIndexed(
+    action: (Int, Int, I) -> Unit
+) {
+    for (index in 0 until size) {
+        action(index, keyAt(index), valueAt(index))
+    }
+}
+
+inline fun <I : Immutable<M>, M : I> IntReferenceMap<I, M>.forEachReversedIndexed(
+    action: (Int, Int, I) -> Unit
+) {
+    for (index in lastIndex downTo 0) {
+        action(index, keyAt(index), valueAt(index))
+    }
+}
+
+inline val <I : Immutable<M>, M : I> IntReferenceMap<I, M>.lastIndex: Int
+    get() = size - 1
+
+inline fun <I : Immutable<M>, M : I> IntReferenceMap<I, M>.noneIndexed(
+    predicate: (Int, Int, I) -> Boolean
+): Boolean {
+    forEachIndexed { index, key, value ->
+        if (predicate(index, key, value)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun <I : Immutable<M>, M : I> MutableIntReferenceMap<I, M>.mutateOrPut(
+    key: Int,
+    defaultValue: () -> M
+): M {
+    mutate(key)?.let { return it }
+    return defaultValue().also { put(key, it) }
+}
+
+operator fun <I : Immutable<M>, M : I> MutableIntReferenceMap<I, M>.minusAssign(key: Int) {
+    array.remove(key)
+}
+
+operator fun <I : Immutable<M>, M : I> MutableIntReferenceMap<I, M>.set(key: Int, value: M) {
+    array.put(key, MutableReference(value))
+}
diff --git a/services/permission/java/com/android/server/permission/access/immutable/IntSet.kt b/services/permission/java/com/android/server/permission/access/immutable/IntSet.kt
new file mode 100644
index 0000000..1fd247b
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/IntSet.kt
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+import android.util.SparseBooleanArray
+
+sealed class IntSet(
+    internal val array: SparseBooleanArray
+) : Immutable<MutableIntSet> {
+    val size: Int
+        get() = array.size()
+
+    fun isEmpty(): Boolean = array.size() == 0
+
+    operator fun contains(element: Int): Boolean = array.contains(element)
+
+    fun indexOf(element: Int): Int = array.indexOfKey(element)
+
+    fun elementAt(index: Int): Int = array.keyAt(index)
+
+    override fun toMutable(): MutableIntSet = MutableIntSet(this)
+}
+
+class MutableIntSet(
+    array: SparseBooleanArray = SparseBooleanArray()
+) : IntSet(array) {
+    constructor(intSet: IntSet) : this(intSet.array.clone())
+
+    fun add(element: Int): Boolean =
+        if (array.contains(element)) {
+            false
+        } else {
+            array.put(element, true)
+            true
+        }
+
+    fun remove(element: Int): Boolean {
+        val index = array.indexOfKey(element)
+        return if (index >= 0) {
+            array.removeAt(index)
+            true
+        } else {
+            false
+        }
+    }
+
+    fun clear() {
+        array.clear()
+    }
+
+    fun removeAt(index: Int) {
+        array.removeAt(index)
+    }
+}
+
+// Unlike SparseArray, SparseBooleanArray is missing this method.
+private fun SparseBooleanArray.contains(key: Int): Boolean = indexOfKey(key) >= 0
diff --git a/services/permission/java/com/android/server/permission/access/immutable/IntSetExtensions.kt b/services/permission/java/com/android/server/permission/access/immutable/IntSetExtensions.kt
new file mode 100644
index 0000000..163ebbf
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/IntSetExtensions.kt
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+inline fun IntSet.allIndexed(predicate: (Int, Int) -> Boolean): Boolean {
+    forEachIndexed { index, element ->
+        if (!predicate(index, element)) {
+            return false
+        }
+    }
+    return true
+}
+
+inline fun IntSet.anyIndexed(predicate: (Int, Int) -> Boolean): Boolean {
+    forEachIndexed { index, element ->
+        if (predicate(index, element)) {
+            return true
+        }
+    }
+    return false
+}
+
+inline fun IntSet.forEachIndexed(action: (Int, Int) -> Unit) {
+    for (index in 0 until size) {
+        action(index, elementAt(index))
+    }
+}
+
+inline fun IntSet.forEachReversedIndexed(action: (Int, Int) -> Unit) {
+    for (index in lastIndex downTo 0) {
+        action(index, elementAt(index))
+    }
+}
+
+inline val IntSet.lastIndex: Int
+    get() = size - 1
+
+operator fun IntSet.minus(element: Int): MutableIntSet = toMutable().apply { this -= element }
+
+operator fun IntSet.minusAssign(element: Int) {
+    array.delete(element)
+}
+
+inline fun IntSet.noneIndexed(predicate: (Int, Int) -> Boolean): Boolean {
+    forEachIndexed { index, element ->
+        if (predicate(index, element)) {
+            return false
+        }
+    }
+    return true
+}
+
+operator fun IntSet.plus(element: Int): MutableIntSet = toMutable().apply { this += element }
+
+fun MutableIntSet(values: IntArray): MutableIntSet = MutableIntSet().apply{ this += values }
+
+operator fun MutableIntSet.plusAssign(element: Int) {
+    array.put(element, true)
+}
+
+operator fun MutableIntSet.plusAssign(set: IntSet) {
+    set.forEachIndexed { _, it -> this += it }
+}
+
+operator fun MutableIntSet.plusAssign(array: IntArray) {
+    array.forEach { this += it }
+}
diff --git a/services/permission/java/com/android/server/permission/access/immutable/MutableReference.kt b/services/permission/java/com/android/server/permission/access/immutable/MutableReference.kt
new file mode 100644
index 0000000..e39a3bb
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/immutable/MutableReference.kt
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.immutable
+
+class MutableReference<I : Immutable<M>, M : I> private constructor(
+    private var immutable: I,
+    private var mutable: M?
+) {
+    constructor(mutable: M) : this(mutable, mutable)
+
+    fun get(): I = immutable
+
+    fun mutate(): M {
+        mutable?.let { return it }
+        return immutable.toMutable().also {
+            immutable = it
+            mutable = it
+        }
+    }
+
+    fun toImmutable(): MutableReference<I, M> = MutableReference(immutable, null)
+
+    override fun equals(other: Any?): Boolean {
+        if (this === other) {
+            return true
+        }
+        if (javaClass != other?.javaClass) {
+            return false
+        }
+        other as MutableReference<*, *>
+        return immutable == other.immutable
+    }
+
+    override fun hashCode(): Int = immutable.hashCode()
+}
diff --git a/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionMigration.kt b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionMigration.kt
new file mode 100644
index 0000000..25f0d7e
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionMigration.kt
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.permission
+
+import android.util.Log
+import com.android.server.LocalServices
+import com.android.server.permission.access.MutableAccessState
+import com.android.server.permission.access.immutable.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.util.PackageVersionMigration
+import com.android.server.pm.permission.PermissionMigrationHelper
+
+/**
+ * This class migrate legacy permissions to unified permission subsystem
+ */
+class AppIdPermissionMigration {
+    internal fun migrateSystemState(state: MutableAccessState) {
+        val legacyPermissionsManager =
+            LocalServices.getService(PermissionMigrationHelper::class.java)!!
+        if (!legacyPermissionsManager.hasLegacyPermission()) {
+            return
+        }
+
+        migratePermissions(state.mutateSystemState().mutatePermissions(),
+            legacyPermissionsManager.legacyPermissions)
+        migratePermissions(state.mutateSystemState().mutatePermissionTrees(),
+            legacyPermissionsManager.legacyPermissionTrees, true)
+    }
+
+    private fun migratePermissions(
+        permissions: MutableIndexedMap<String, Permission>,
+        legacyPermissions: Map<String, PermissionMigrationHelper.LegacyPermission>,
+        isPermissionTree: Boolean = false
+    ) {
+        legacyPermissions.forEach { (_, legacyPermission) ->
+            val permission = Permission(
+                legacyPermission.permissionInfo, false, legacyPermission.type, 0
+            )
+            permissions[permission.name] = permission
+            if (DEBUG_MIGRATION) {
+                Log.v(LOG_TAG, "Migrated permission: ${permission.name}, type: " +
+                    "${permission.type}, appId: ${permission.appId}, protectionLevel: " +
+                    "${permission.protectionLevel}, tree: $isPermissionTree"
+                )
+            }
+        }
+    }
+
+    internal fun migrateUserState(state: MutableAccessState, userId: Int) {
+        val permissionMigrationHelper =
+            LocalServices.getService(PermissionMigrationHelper::class.java)!!
+        if (!permissionMigrationHelper.hasLegacyPermissionState(userId)) {
+            return
+        }
+
+        val legacyAppIdPermissionStates =
+            permissionMigrationHelper.getLegacyPermissionStates(userId)
+        val version = PackageVersionMigration.getVersion(userId)
+
+        val userState = state.mutateUserState(userId)!!
+        val appIdPermissionFlags = userState.mutateAppIdPermissionFlags()
+        legacyAppIdPermissionStates.forEach { (appId, legacyPermissionStates) ->
+            val packageNames = state.systemState.appIdPackageNames[appId]
+            if (packageNames == null) {
+                Log.w(LOG_TAG, "Dropping unknown app ID $appId when migrating permission state")
+                return@forEach
+            }
+
+            val permissionFlags = MutableIndexedMap<String, Int>()
+            appIdPermissionFlags[appId] = permissionFlags
+            legacyPermissionStates.forEach forEachPermission@ {
+                (permissionName, legacyPermissionState) ->
+                val permission = state.systemState.permissions[permissionName]
+                if (permission == null) {
+                    Log.w(
+                        LOG_TAG, "Dropping unknown permission $permissionName for app ID $appId" +
+                            " when migrating permission state"
+                    )
+                    return@forEachPermission
+                }
+                permissionFlags[permissionName] = migratePermissionFlags(
+                    permission, legacyPermissionState, appId, userId
+                )
+            }
+
+            val packageVersions = userState.mutatePackageVersions()
+            packageNames.forEachIndexed { _, packageName ->
+                packageVersions[packageName] = version
+            }
+        }
+    }
+
+    private fun migratePermissionFlags(
+        permission: Permission,
+        legacyPermissionState: PermissionMigrationHelper.LegacyPermissionState,
+        appId: Int,
+        userId: Int
+    ): Int {
+        var flags = when {
+            permission.isNormal -> if (legacyPermissionState.isGranted) {
+                PermissionFlags.INSTALL_GRANTED
+            } else {
+                PermissionFlags.INSTALL_REVOKED
+            }
+            permission.isSignature || permission.isInternal ->
+                if (legacyPermissionState.isGranted) {
+                    if (permission.isDevelopment || permission.isRole) {
+                        PermissionFlags.PROTECTION_GRANTED or PermissionFlags.RUNTIME_GRANTED
+                    } else {
+                        PermissionFlags.PROTECTION_GRANTED
+                    }
+                } else {
+                    0
+                }
+            permission.isRuntime ->
+                if (legacyPermissionState.isGranted) PermissionFlags.RUNTIME_GRANTED else 0
+            else -> 0
+        }
+        flags = PermissionFlags.updateFlags(
+            permission, flags, legacyPermissionState.flags, legacyPermissionState.flags
+        )
+        if (DEBUG_MIGRATION) {
+            val oldFlagString = PermissionFlags.apiFlagsToString(legacyPermissionState.flags)
+            val newFlagString = PermissionFlags.toString(flags)
+            val oldGrantState = legacyPermissionState.isGranted
+            val newGrantState = PermissionFlags.isPermissionGranted(flags)
+            val flagsMismatch = legacyPermissionState.flags != PermissionFlags.toApiFlags(flags)
+            Log.v(
+                LOG_TAG, "Migrated appId: $appId, permission: " +
+                    "${permission.name}, user: $userId, oldGrantState: $oldGrantState" +
+                    ", oldFlags: $oldFlagString, newFlags: $newFlagString, grantMismatch: " +
+                    "${oldGrantState != newGrantState}, flagsMismatch: $flagsMismatch"
+            )
+        }
+        return flags
+    }
+
+    companion object {
+        private val LOG_TAG = AppIdPermissionMigration::class.java.simpleName
+
+        private const val DEBUG_MIGRATION = false
+    }
+}
diff --git a/services/permission/java/com/android/server/permission/access/permission/UidPermissionPersistence.kt b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPersistence.kt
similarity index 73%
rename from services/permission/java/com/android/server/permission/access/permission/UidPermissionPersistence.kt
rename to services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPersistence.kt
index 35cdbce..0f94b0f 100644
--- a/services/permission/java/com/android/server/permission/access/permission/UidPermissionPersistence.kt
+++ b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPersistence.kt
@@ -21,8 +21,12 @@
 import com.android.modules.utils.BinaryXmlPullParser
 import com.android.modules.utils.BinaryXmlSerializer
 import com.android.server.permission.access.AccessState
-import com.android.server.permission.access.UserState
+import com.android.server.permission.access.AppIdPermissionFlags
+import com.android.server.permission.access.MutableAccessState
+import com.android.server.permission.access.MutableAppIdPermissionFlags
+import com.android.server.permission.access.WriteMode
 import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.immutable.* // ktlint-disable no-wildcard-imports
 import com.android.server.permission.access.util.attribute
 import com.android.server.permission.access.util.attributeInt
 import com.android.server.permission.access.util.attributeIntHex
@@ -37,17 +41,19 @@
 import com.android.server.permission.access.util.tag
 import com.android.server.permission.access.util.tagName
 
-class UidPermissionPersistence {
-    fun BinaryXmlPullParser.parseSystemState(state: AccessState) {
-        val systemState = state.systemState
+class AppIdPermissionPersistence {
+    fun BinaryXmlPullParser.parseSystemState(state: MutableAccessState) {
+        val systemState = state.mutateSystemState(WriteMode.NONE)
         when (tagName) {
-            TAG_PERMISSION_TREES -> parsePermissions(systemState.permissionTrees)
-            TAG_PERMISSIONS -> parsePermissions(systemState.permissions)
+            TAG_PERMISSION_TREES -> parsePermissions(systemState.mutatePermissionTrees())
+            TAG_PERMISSIONS -> parsePermissions(systemState.mutatePermissions())
             else -> {}
         }
     }
 
-    private fun BinaryXmlPullParser.parsePermissions(permissions: IndexedMap<String, Permission>) {
+    private fun BinaryXmlPullParser.parsePermissions(
+        permissions: MutableIndexedMap<String, Permission>
+    ) {
         forEachTag {
             when (val tagName = tagName) {
                 TAG_PERMISSION -> parsePermission(permissions)
@@ -56,7 +62,9 @@
         }
     }
 
-    private fun BinaryXmlPullParser.parsePermission(permissions: IndexedMap<String, Permission>) {
+    private fun BinaryXmlPullParser.parsePermission(
+        permissions: MutableIndexedMap<String, Permission>
+    ) {
         val name = getAttributeValueOrThrow(ATTR_NAME).intern()
         @Suppress("DEPRECATION")
         val permissionInfo = PermissionInfo().apply {
@@ -97,7 +105,7 @@
         permissions: IndexedMap<String, Permission>
     ) {
         tag(tagName) {
-            permissions.forEachValueIndexed { _, it -> serializePermission(it) }
+            permissions.forEachIndexed { _, _, it -> serializePermission(it) }
         }
     }
 
@@ -124,40 +132,35 @@
         }
     }
 
-    fun BinaryXmlPullParser.parseUserState(state: AccessState, userId: Int) {
+    fun BinaryXmlPullParser.parseUserState(state: MutableAccessState, userId: Int) {
         when (tagName) {
-            TAG_PERMISSIONS -> parsePermissionFlags(state, userId)
+            TAG_APP_ID_PERMISSIONS -> parseAppIdPermissions(state, userId)
             else -> {}
         }
     }
 
-    private fun BinaryXmlPullParser.parsePermissionFlags(state: AccessState, userId: Int) {
-        val userState = state.userStates[userId]
+    private fun BinaryXmlPullParser.parseAppIdPermissions(state: MutableAccessState, userId: Int) {
+        val userState = state.mutateUserState(userId, WriteMode.NONE)!!
+        val appIdPermissionFlags = userState.mutateAppIdPermissionFlags()
         forEachTag {
             when (tagName) {
-                TAG_APP_ID -> parseAppId(userState)
+                TAG_APP_ID -> parseAppId(appIdPermissionFlags)
                 else -> Log.w(LOG_TAG, "Ignoring unknown tag $name when parsing permission state")
             }
         }
-        userState.uidPermissionFlags.retainAllIndexed { _, appId, _ ->
-            val hasAppId = appId in state.systemState.appIds
-            if (!hasAppId) {
+        appIdPermissionFlags.forEachReversedIndexed { appIdIndex, appId, _ ->
+            if (appId !in state.systemState.appIdPackageNames) {
                 Log.w(LOG_TAG, "Dropping unknown app ID $appId when parsing permission state")
+                appIdPermissionFlags.removeAt(appIdIndex)
+                userState.requestWriteMode(WriteMode.ASYNCHRONOUS)
             }
-            hasAppId
         }
     }
 
-    private fun BinaryXmlPullParser.parseAppId(userState: UserState) {
+    private fun BinaryXmlPullParser.parseAppId(appIdPermissionFlags: MutableAppIdPermissionFlags) {
         val appId = getAttributeIntOrThrow(ATTR_ID)
-        val permissionFlags = IndexedMap<String, Int>()
-        userState.uidPermissionFlags[appId] = permissionFlags
-        parseAppIdPermissions(permissionFlags)
-    }
-
-    private fun BinaryXmlPullParser.parseAppIdPermissions(
-        permissionFlags: IndexedMap<String, Int>
-    ) {
+        val permissionFlags = MutableIndexedMap<String, Int>()
+        appIdPermissionFlags[appId] = permissionFlags
         forEachTag {
             when (tagName) {
                 TAG_PERMISSION -> parseAppIdPermission(permissionFlags)
@@ -166,19 +169,23 @@
         }
     }
 
-    private fun BinaryXmlPullParser.parseAppIdPermission(permissionFlags: IndexedMap<String, Int>) {
+    private fun BinaryXmlPullParser.parseAppIdPermission(
+        permissionFlags: MutableIndexedMap<String, Int>
+    ) {
         val name = getAttributeValueOrThrow(ATTR_NAME).intern()
         val flags = getAttributeIntOrThrow(ATTR_FLAGS)
         permissionFlags[name] = flags
     }
 
     fun BinaryXmlSerializer.serializeUserState(state: AccessState, userId: Int) {
-        serializePermissionFlags(state.userStates[userId])
+        serializeAppIdPermissions(state.userStates[userId]!!.appIdPermissionFlags)
     }
 
-    private fun BinaryXmlSerializer.serializePermissionFlags(userState: UserState) {
-        tag(TAG_PERMISSIONS) {
-            userState.uidPermissionFlags.forEachIndexed { _, appId, permissionFlags ->
+    private fun BinaryXmlSerializer.serializeAppIdPermissions(
+        appIdPermissionFlags: AppIdPermissionFlags
+    ) {
+        tag(TAG_APP_ID_PERMISSIONS) {
+            appIdPermissionFlags.forEachIndexed { _, appId, permissionFlags ->
                 serializeAppId(appId, permissionFlags)
             }
         }
@@ -190,15 +197,9 @@
     ) {
         tag(TAG_APP_ID) {
             attributeInt(ATTR_ID, appId)
-            serializeAppIdPermissions(permissionFlags)
-        }
-    }
-
-    private fun BinaryXmlSerializer.serializeAppIdPermissions(
-        permissionFlags: IndexedMap<String, Int>
-    ) {
-        permissionFlags.forEachIndexed { _, name, flags ->
-            serializeAppIdPermission(name, flags)
+            permissionFlags.forEachIndexed { _, name, flags ->
+                serializeAppIdPermission(name, flags)
+            }
         }
     }
 
@@ -210,9 +211,10 @@
     }
 
     companion object {
-        private val LOG_TAG = UidPermissionPersistence::class.java.simpleName
+        private val LOG_TAG = AppIdPermissionPersistence::class.java.simpleName
 
         private const val TAG_APP_ID = "app-id"
+        private const val TAG_APP_ID_PERMISSIONS = "app-id-permissions"
         private const val TAG_PERMISSION = "permission"
         private const val TAG_PERMISSIONS = "permissions"
         private const val TAG_PERMISSION_TREES = "permission-trees"
diff --git a/services/permission/java/com/android/server/permission/access/permission/UidPermissionPolicy.kt b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt
similarity index 86%
rename from services/permission/java/com/android/server/permission/access/permission/UidPermissionPolicy.kt
rename to services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt
index 5a7b37a..57f09eb 100644
--- a/services/permission/java/com/android/server/permission/access/permission/UidPermissionPolicy.kt
+++ b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt
@@ -30,11 +30,14 @@
 import com.android.server.permission.access.AccessState
 import com.android.server.permission.access.AccessUri
 import com.android.server.permission.access.GetStateScope
+import com.android.server.permission.access.MutableAccessState
 import com.android.server.permission.access.MutateStateScope
 import com.android.server.permission.access.PermissionUri
 import com.android.server.permission.access.SchemePolicy
 import com.android.server.permission.access.UidUri
+import com.android.server.permission.access.WriteMode
 import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.immutable.* // ktlint-disable no-wildcard-imports
 import com.android.server.permission.access.util.andInv
 import com.android.server.permission.access.util.hasAnyBit
 import com.android.server.permission.access.util.hasBits
@@ -45,15 +48,19 @@
 import com.android.server.pm.pkg.AndroidPackage
 import com.android.server.pm.pkg.PackageState
 
-class UidPermissionPolicy : SchemePolicy() {
-    private val persistence = UidPermissionPersistence()
+class AppIdPermissionPolicy : SchemePolicy() {
+    private val persistence = AppIdPermissionPersistence()
+
+    private val migration = AppIdPermissionMigration()
+
+    private val upgrade = AppIdPermissionUpgrade(this)
 
     @Volatile
-    private var onPermissionFlagsChangedListeners =
-        IndexedListSet<OnPermissionFlagsChangedListener>()
+    private var onPermissionFlagsChangedListeners:
+        IndexedListSet<OnPermissionFlagsChangedListener> = MutableIndexedListSet()
     private val onPermissionFlagsChangedListenersLock = Any()
 
-    private val privilegedPermissionAllowlistViolations = IndexedSet<String>()
+    private val privilegedPermissionAllowlistViolations = MutableIndexedSet<String>()
 
     override val subjectScheme: String
         get() = UidUri.SCHEME
@@ -83,8 +90,7 @@
 
     override fun MutateStateScope.onInitialized() {
         newState.systemState.configPermissions.forEach { (permissionName, permissionEntry) ->
-            val permissions = newState.systemState.permissions
-            val oldPermission = permissions[permissionName]
+            val oldPermission = newState.systemState.permissions[permissionName]
             val newPermission = if (oldPermission != null) {
                 if (permissionEntry.gids != null) {
                     oldPermission.copy(
@@ -109,7 +115,7 @@
                     Permission(permissionInfo, false, Permission.TYPE_CONFIG, 0)
                 }
             }
-            permissions[permissionName] = newPermission
+            newState.mutateSystemState().mutatePermissions()[permissionName] = newPermission
         }
     }
 
@@ -117,16 +123,17 @@
         newState.systemState.packageStates.forEach { (_, packageState) ->
             evaluateAllPermissionStatesForPackageAndUser(packageState, userId, null)
         }
-        newState.systemState.appIds.forEachKeyIndexed { _, appId ->
+        newState.systemState.appIdPackageNames.forEachIndexed { _, appId, _ ->
             inheritImplicitPermissionStates(appId, userId)
         }
     }
 
     override fun MutateStateScope.onAppIdRemoved(appId: Int) {
-        newState.userStates.forEachValueIndexed { _, userState ->
-            userState.uidPermissionFlags -= appId
-            userState.requestWrite()
-            // Skip notifying the change listeners since the app ID no longer exists.
+        newState.userStates.forEachIndexed { userStateIndex, _, userState ->
+            if (appId in userState.appIdPermissionFlags) {
+                newState.mutateUserStateAt(userStateIndex).mutateAppIdPermissionFlags() -= appId
+                // Skip notifying the change listeners since the app ID no longer exists.
+            }
         }
     }
 
@@ -134,7 +141,7 @@
         volumeUuid: String?,
         isSystemUpdated: Boolean
     ) {
-        val changedPermissionNames = IndexedSet<String>()
+        val changedPermissionNames = MutableIndexedSet<String>()
         newState.systemState.packageStates.forEach { (_, packageState) ->
             val androidPackage = packageState.androidPackage
             if (androidPackage == null || androidPackage.volumeUuid != volumeUuid) {
@@ -171,11 +178,10 @@
     }
 
     override fun MutateStateScope.onPackageAdded(packageState: PackageState) {
-        val changedPermissionNames = IndexedSet<String>()
+        val changedPermissionNames = MutableIndexedSet<String>()
         adoptPermissions(packageState, changedPermissionNames)
         addPermissionGroups(packageState)
         addPermissions(packageState, changedPermissionNames)
-        // TODO: revokeSystemAlertWindowIfUpgradedPast23()
         trimPermissions(packageState.packageName, changedPermissionNames)
         trimPermissionStates(packageState.appId)
         revokePermissionsOnPackageUpdate(packageState.appId)
@@ -189,14 +195,13 @@
     }
 
     override fun MutateStateScope.onPackageRemoved(packageName: String, appId: Int) {
-        // TODO: STOPSHIP: Remove this check or at least turn into logging.
         check(packageName !in newState.systemState.disabledSystemPackageStates) {
             "Package $packageName reported as removed before disabled system package is enabled"
         }
 
-        val changedPermissionNames = IndexedSet<String>()
+        val changedPermissionNames = MutableIndexedSet<String>()
         trimPermissions(packageName, changedPermissionNames)
-        if (appId in newState.systemState.appIds) {
+        if (appId in newState.systemState.appIdPackageNames) {
             trimPermissionStates(appId)
         }
         changedPermissionNames.forEachIndexed { _, permissionName ->
@@ -209,16 +214,15 @@
         appId: Int,
         userId: Int
     ) {
-        resetRuntimePermissions(packageName, appId, userId)
+        resetRuntimePermissions(packageName, userId)
     }
 
-    fun MutateStateScope.resetRuntimePermissions(
-        packageName: String,
-        appId: Int,
-        userId: Int
-    ) {
-        val androidPackage = newState.systemState.packageStates[packageName]?.androidPackage
-            ?: return
+    fun MutateStateScope.resetRuntimePermissions(packageName: String, userId: Int) {
+        // It's okay to skip resetting permissions for packages that are removed,
+        // because their states will be trimmed in onPackageRemoved()/onAppIdRemoved()
+        val packageState = newState.systemState.packageStates[packageName] ?: return
+        val androidPackage = packageState.androidPackage ?: return
+        val appId = packageState.appId
         androidPackage.requestedPermissions.forEachIndexed { _, permissionName ->
             val permission = newState.systemState.permissions[permissionName]
                 ?: return@forEachIndexed
@@ -253,7 +257,7 @@
 
     private fun MutateStateScope.adoptPermissions(
         packageState: PackageState,
-        changedPermissionNames: IndexedSet<String>
+        changedPermissionNames: MutableIndexedSet<String>
     ) {
         val `package` = packageState.androidPackage!!
         `package`.adoptPermissions.forEachIndexed { _, originalPackageName ->
@@ -261,9 +265,7 @@
             if (!canAdoptPermissions(packageName, originalPackageName)) {
                 return@forEachIndexed
             }
-            val systemState = newState.systemState
-            val permissions = systemState.permissions
-            permissions.forEachIndexed permissions@ {
+            newState.systemState.permissions.forEachIndexed permissions@ {
                 permissionIndex, permissionName, oldPermission ->
                 if (oldPermission.packageName != originalPackageName) {
                     return@permissions
@@ -280,8 +282,8 @@
                 val newPermission = oldPermission.copy(
                     permissionInfo = newPermissionInfo, isReconciled = false, appId = 0
                 )
-                permissions.setValueAt(permissionIndex, newPermission)
-                systemState.requestWrite()
+                newState.mutateSystemState().mutatePermissions()
+                    .putAt(permissionIndex, newPermission)
                 changedPermissionNames += permissionName
             }
         }
@@ -326,7 +328,7 @@
             val newPermissionGroup = PackageInfoUtils.generatePermissionGroupInfo(
                 parsedPermissionGroup, PackageManager.GET_META_DATA.toLong()
             )!!
-            // TODO: Clear permission state on group take-over?
+            // TODO: STOPSHIP: Clear permission state on group take-over?
             val permissionGroupName = newPermissionGroup.name
             val oldPermissionGroup = newState.systemState.permissionGroups[permissionGroupName]
             if (oldPermissionGroup != null &&
@@ -359,33 +361,24 @@
                         " declared in another package $oldPackageName"
                 )
             }
-            newState.systemState.permissionGroups[permissionGroupName] = newPermissionGroup
+            newState.mutateSystemState().mutatePermissionGroups()[permissionGroupName] =
+                newPermissionGroup
         }
     }
 
     private fun MutateStateScope.addPermissions(
         packageState: PackageState,
-        changedPermissionNames: IndexedSet<String>
+        changedPermissionNames: MutableIndexedSet<String>
     ) {
         packageState.androidPackage!!.permissions.forEachIndexed { _, parsedPermission ->
-            // TODO:
-            // parsedPermission.flags = parsedPermission.flags andInv PermissionInfo.FLAG_INSTALLED
-            // TODO: This seems actually unused.
-            // if (packageState.androidPackage.targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1) {
-            //    parsedPermission.setParsedPermissionGroup(
-            //        newState.systemState.permissionGroup[parsedPermission.group]
-            //    )
-            // }
             val newPermissionInfo = PackageInfoUtils.generatePermissionInfo(
                 parsedPermission, PackageManager.GET_META_DATA.toLong()
             )!!
-            // TODO: newPermissionInfo.flags |= PermissionInfo.FLAG_INSTALLED
-            val systemState = newState.systemState
             val permissionName = newPermissionInfo.name
             val oldPermission = if (parsedPermission.isTree) {
-                systemState.permissionTrees[permissionName]
+                newState.systemState.permissionTrees[permissionName]
             } else {
-                systemState.permissions[permissionName]
+                newState.systemState.permissions[permissionName]
             }
             // Different from the old implementation, which may add an (incomplete) signature
             // permission inside another package's permission tree, we now consistently ignore such
@@ -418,15 +411,15 @@
                         permissionInfo = newPermissionInfo, isReconciled = true,
                         appId = packageState.appId
                     )
-                } else if (systemState.packageStates[oldPackageName]?.isSystem != true) {
+                } else if (newState.systemState.packageStates[oldPackageName]?.isSystem != true) {
                     Log.w(
                         LOG_TAG, "Overriding permission $permissionName with new declaration in" +
                             " system package $newPackageName: originally declared in another" +
                             " package $oldPackageName"
                     )
                     // Remove permission state on owner change.
-                    systemState.userIds.forEachIndexed { _, userId ->
-                        systemState.appIds.forEachKeyIndexed { _, appId ->
+                    newState.systemState.userIds.forEachIndexed { _, userId ->
+                        newState.systemState.appIdPackageNames.forEachIndexed { _, appId, _ ->
                             setPermissionFlags(appId, userId, permissionName, 0)
                         }
                     }
@@ -446,7 +439,7 @@
                     return@forEachIndexed
                 }
             } else {
-                if (oldPermission != null) {
+                if (oldPermission != null && oldPermission.isReconciled) {
                     val isPermissionGroupChanged = newPermissionInfo.isRuntime &&
                         newPermissionInfo.group != null &&
                         newPermissionInfo.group != oldPermission.groupName
@@ -455,8 +448,8 @@
                             (newPermissionInfo.isInternal && !oldPermission.isInternal)
                     )
                     if (isPermissionGroupChanged || isPermissionTypeChanged) {
-                        systemState.userIds.forEachIndexed { _, userId ->
-                            systemState.appIds.forEachKeyIndexed { _, appId ->
+                        newState.systemState.userIds.forEachIndexed { _, userId ->
+                            newState.systemState.appIdPackageNames.forEachIndexed { _, appId, _ ->
                                 if (isPermissionGroupChanged) {
                                     // We might auto-grant permissions if any permission of
                                     // the group is already granted. Hence if the group of
@@ -499,32 +492,30 @@
             }
 
             if (parsedPermission.isTree) {
-                systemState.permissionTrees[permissionName] = newPermission
+                newState.mutateSystemState().mutatePermissionTrees()[permissionName] = newPermission
             } else {
-                systemState.permissions[permissionName] = newPermission
+                newState.mutateSystemState().mutatePermissions()[permissionName] = newPermission
             }
-            systemState.requestWrite()
             changedPermissionNames += permissionName
         }
     }
 
     private fun MutateStateScope.trimPermissions(
         packageName: String,
-        changedPermissionNames: IndexedSet<String>
+        changedPermissionNames: MutableIndexedSet<String>
     ) {
-        val systemState = newState.systemState
-        val packageState = systemState.packageStates[packageName]
+        val packageState = newState.systemState.packageStates[packageName]
         val androidPackage = packageState?.androidPackage
         if (packageState != null && androidPackage == null) {
             return
         }
-        val disabledSystemPackage = systemState.disabledSystemPackageStates[packageName]
+        val disabledSystemPackage = newState.systemState.disabledSystemPackageStates[packageName]
             ?.androidPackage
         // Unlike in the previous implementation, we now also retain permission trees defined by
         // disabled system packages for consistency with permissions.
-        val isPermissionTreeRemoved = systemState.permissionTrees.removeAllIndexed {
-            _, permissionTreeName, permissionTree ->
-            permissionTree.packageName == packageName && (
+        newState.systemState.permissionTrees.forEachReversedIndexed {
+            permissionTreeIndex, permissionTreeName, permissionTree ->
+            if (permissionTree.packageName == packageName && (
                 packageState == null || androidPackage!!.permissions.noneIndexed { _, it ->
                     it.isTree && it.name == permissionTreeName
                 }
@@ -532,15 +523,16 @@
                 disabledSystemPackage?.permissions?.anyIndexed { _, it ->
                     it.isTree && it.name == permissionTreeName
                 } != true
-            )
-        }
-        if (isPermissionTreeRemoved) {
-            systemState.requestWrite()
+            )) {
+                newState.mutateSystemState().mutatePermissionTrees().removeAt(permissionTreeIndex)
+            }
         }
 
-        systemState.permissions.removeAllIndexed { permissionIndex, permissionName, permission ->
+        newState.systemState.permissions.forEachReversedIndexed {
+            permissionIndex, permissionName, permission ->
             val updatedPermission = updatePermissionIfDynamic(permission)
-            newState.systemState.permissions.setValueAt(permissionIndex, updatedPermission)
+            newState.mutateSystemState().mutatePermissions()
+                .putAt(permissionIndex, updatedPermission)
             if (updatedPermission.packageName == packageName && (
                 packageState == null || androidPackage!!.permissions.noneIndexed { _, it ->
                     !it.isTree && it.name == permissionName
@@ -555,16 +547,13 @@
                 // shouldn't be notified when the updated system package is removed but the disabled
                 // system package isn't re-enabled yet, so we don't need to maintain that brittle
                 // special case either.
-                systemState.userIds.forEachIndexed { _, userId ->
-                    systemState.appIds.forEachKeyIndexed { _, appId ->
+                newState.systemState.userIds.forEachIndexed { _, userId ->
+                    newState.systemState.appIdPackageNames.forEachIndexed { _, appId, _ ->
                         setPermissionFlags(appId, userId, permissionName, 0)
                     }
                 }
+                newState.mutateSystemState().mutatePermissions().removeAt(permissionIndex)
                 changedPermissionNames += permissionName
-                systemState.requestWrite()
-                true
-            } else {
-                false
             }
         }
     }
@@ -583,7 +572,7 @@
     }
 
     private fun MutateStateScope.trimPermissionStates(appId: Int) {
-        val requestedPermissions = IndexedSet<String>()
+        val requestedPermissions = MutableIndexedSet<String>()
         forEachPackageInAppId(appId) {
             // Note that we still trim the permission states requested by disabled system packages.
             // Because in the previous implementation:
@@ -595,7 +584,7 @@
             requestedPermissions += it.androidPackage!!.requestedPermissions
         }
         newState.userStates.forEachIndexed { _, userId, userState ->
-            userState.uidPermissionFlags[appId]?.forEachReversedIndexed { _, permissionName, _ ->
+            userState.appIdPermissionFlags[appId]?.forEachReversedIndexed { _, permissionName, _ ->
                 if (permissionName !in requestedPermissions) {
                     setPermissionFlags(appId, userId, permissionName, 0)
                 }
@@ -607,7 +596,7 @@
         // If the app is updated, and has scoped storage permissions, then it is possible that the
         // app updated in an attempt to get unscoped storage. If so, revoke all storage permissions.
         newState.userStates.forEachIndexed { _, userId, userState ->
-            userState.uidPermissionFlags[appId]?.forEachReversedIndexed {
+            userState.appIdPermissionFlags[appId]?.forEachReversedIndexed {
                 _, permissionName, oldFlags ->
                 if (permissionName !in STORAGE_AND_MEDIA_PERMISSIONS || oldFlags == 0) {
                     return@forEachReversedIndexed
@@ -628,6 +617,8 @@
                     !oldIsRequestLegacyExternalStorage && newIsRequestLegacyExternalStorage
                 if ((isNewlyRequestingLegacyExternalStorage || isTargetSdkVersionDowngraded) &&
                     oldFlags.hasBits(PermissionFlags.RUNTIME_GRANTED)) {
+                    Log.v(LOG_TAG, "Revoking storage permission: $permissionName for appId: " +
+                            " $appId and user: $userId")
                     val newFlags = oldFlags andInv (
                         PermissionFlags.RUNTIME_GRANTED or USER_SETTABLE_MASK
                     )
@@ -643,7 +634,7 @@
     ) {
         val systemState = newState.systemState
         systemState.userIds.forEachIndexed { _, userId ->
-            systemState.appIds.forEachKeyIndexed { _, appId ->
+            systemState.appIdPackageNames.forEachIndexed { _, appId, _ ->
                 val isPermissionRequested =
                     anyRequestingPackageInAppId(appId, permissionName) { true }
                 if (isPermissionRequested) {
@@ -682,7 +673,7 @@
         permissionName: String,
         installedPackageState: PackageState?
     ) {
-        val packageNames = newState.systemState.appIds[appId]
+        val packageNames = newState.systemState.appIdPackageNames[appId]!!
         val hasMissingPackage = packageNames.anyIndexed { _, packageName ->
             newState.systemState.packageStates[packageName]!!.androidPackage == null
         }
@@ -766,6 +757,7 @@
             setPermissionFlags(appId, userId, permissionName, newFlags)
         } else if (permission.isRuntime) {
             var newFlags = oldFlags and PermissionFlags.MASK_RUNTIME
+            val wasRevoked = newFlags != 0 && !PermissionFlags.isPermissionGranted(newFlags)
             if (getAppIdTargetSdkVersion(appId, permissionName) < Build.VERSION_CODES.M) {
                 if (permission.isRuntimeOnly) {
                     // Different from the old implementation, which simply skips a runtime-only
@@ -775,6 +767,9 @@
                     newFlags = newFlags and PermissionFlags.MASK_EXEMPT
                 } else {
                     newFlags = newFlags or PermissionFlags.LEGACY_GRANTED
+                    if (wasRevoked) {
+                        newFlags = newFlags or PermissionFlags.APP_OP_REVOKED
+                    }
                     // Explicitly check against the old state to determine if this permission is
                     // new.
                     val isNewPermission =
@@ -794,10 +789,11 @@
                 }
                 val sourcePermissions = newState.systemState
                     .implicitToSourcePermissions[permissionName]
-                val isAnySourcePermissionNonRuntime = sourcePermissions?.any {
-                    val sourcePermission = newState.systemState.permissions[it]
+                val isAnySourcePermissionNonRuntime = sourcePermissions?.anyIndexed {
+                    _, sourcePermissionName ->
+                    val sourcePermission = newState.systemState.permissions[sourcePermissionName]
                     checkNotNull(sourcePermission) {
-                        "Unknown source permission $it in split permissions"
+                        "Unknown source permission $sourcePermissionName in split permissions"
                     }
                     !sourcePermission.isRuntime
                 } ?: false
@@ -805,16 +801,23 @@
                     (isImplicitPermission && isAnySourcePermissionNonRuntime)
                 if (shouldGrantByImplicit) {
                     newFlags = newFlags or PermissionFlags.IMPLICIT_GRANTED
+                    if (wasRevoked) {
+                        newFlags = newFlags or PermissionFlags.APP_OP_REVOKED
+                    }
                 } else {
                     newFlags = newFlags andInv PermissionFlags.IMPLICIT_GRANTED
-                }
-                if ((wasGrantedByLegacy || wasGrantedByImplicit) && !shouldGrantByImplicit) {
-                    // The permission was granted from a compatibility grant or an implicit grant,
-                    // however this flag might still be set if the user denied this permission in
-                    // the settings. Hence upon app upgrade and when this permission is no longer
-                    // LEGACY_GRANTED or IMPLICIT_GRANTED and we revoke the permission, we want to
-                    // remove this flag so that the app can request the permission again.
-                    newFlags = newFlags andInv PermissionFlags.APP_OP_REVOKED
+                    if ((wasGrantedByLegacy || wasGrantedByImplicit) &&
+                        newFlags.hasBits(PermissionFlags.APP_OP_REVOKED)) {
+                        // The permission was granted from a compatibility grant or an implicit
+                        // grant, however this flag might still be set if the user denied this
+                        // permission in the settings. Hence upon app upgrade and when this
+                        // permission is no longer LEGACY_GRANTED or IMPLICIT_GRANTED and we revoke
+                        // the permission, we want to remove this flag so that the app can request
+                        // the permission again.
+                        newFlags = newFlags andInv (
+                            PermissionFlags.RUNTIME_GRANTED or PermissionFlags.APP_OP_REVOKED
+                        )
+                    }
                 }
                 val hasImplicitFlag = newFlags.hasBits(PermissionFlags.IMPLICIT)
                 if (!isImplicitPermission && hasImplicitFlag) {
@@ -842,15 +845,29 @@
                 }
             }
 
-            val isExempt = newFlags.hasAnyBit(PermissionFlags.MASK_EXEMPT)
-            val isHardRestricted = permission.isHardRestricted && !isExempt
-            newFlags = if (isHardRestricted) {
+            val wasExempt = newFlags.hasAnyBit(PermissionFlags.MASK_EXEMPT)
+            val wasRestricted = newFlags.hasAnyBit(PermissionFlags.MASK_RESTRICTED)
+            val isExempt = if (permission.isHardOrSoftRestricted && !wasExempt && !wasRestricted) {
+                // All restricted permissions start as exempt. If there's an installer for the
+                // package, we will drop this UPGRADE_EXEMPT flag when we receive the
+                // onPackageInstalled() callback and set up the INSTALLER_EXEMPT flags.
+                // UPGRADE_EXEMPT is chosen instead of other flags because it is the same flag that
+                // was assigned to pre-installed apps in RuntimePermissionsUpgradeController, and to
+                // apps with missing permission state.
+                // This way we make sure both pre-installed apps, and apps updated/installed after
+                // a rollback snapshot is taken, can get the allowlist for permissions that won't be
+                // allowlisted otherwise.
+                newFlags = newFlags or PermissionFlags.UPGRADE_EXEMPT
+                true
+            } else {
+                wasExempt
+            }
+            newFlags = if (permission.isHardRestricted && !isExempt) {
                 newFlags or PermissionFlags.RESTRICTION_REVOKED
             } else {
                 newFlags andInv PermissionFlags.RESTRICTION_REVOKED
             }
-            val isSoftRestricted = permission.isSoftRestricted && !isExempt
-            newFlags = if (isSoftRestricted) {
+            newFlags = if (permission.isSoftRestricted && !isExempt) {
                 newFlags or PermissionFlags.SOFT_RESTRICTED
             } else {
                 newFlags andInv PermissionFlags.SOFT_RESTRICTED
@@ -864,7 +881,7 @@
     }
 
     private fun MutateStateScope.inheritImplicitPermissionStates(appId: Int, userId: Int) {
-        val implicitPermissions = IndexedSet<String>()
+        val implicitPermissions = MutableIndexedSet<String>()
         forEachPackageInAppId(appId) {
             implicitPermissions += it.androidPackage!!.implicitPermissions
         }
@@ -1056,7 +1073,7 @@
         state: AccessState = newState,
         predicate: (PackageState) -> Boolean
     ): Boolean {
-        val packageNames = state.systemState.appIds[appId]
+        val packageNames = state.systemState.appIdPackageNames[appId]!!
         return packageNames.anyIndexed { _, packageName ->
             val packageState = state.systemState.packageStates[packageName]!!
             val androidPackage = packageState.androidPackage
@@ -1070,7 +1087,7 @@
         state: AccessState = newState,
         action: (PackageState) -> Unit
     ) {
-        val packageNames = state.systemState.appIds[appId]!!
+        val packageNames = state.systemState.appIdPackageNames[appId]!!
         packageNames.forEachIndexed { _, packageName ->
             val packageState = state.systemState.packageStates[packageName]!!
             if (packageState.androidPackage != null) {
@@ -1085,7 +1102,7 @@
         state: AccessState = newState,
         action: (PackageState) -> Unit
     ) {
-        val packageNames = state.systemState.appIds[appId]
+        val packageNames = state.systemState.appIdPackageNames[appId]!!
         packageNames.forEachIndexed { _, packageName ->
             val packageState = state.systemState.packageStates[packageName]!!
             val androidPackage = packageState.androidPackage
@@ -1126,15 +1143,15 @@
             return true
         }
         if (permission.isInstaller && (
-            packageName in knownPackages[KnownPackages.PACKAGE_INSTALLER] ||
-                packageName in knownPackages[KnownPackages.PACKAGE_PERMISSION_CONTROLLER]
+            packageName in knownPackages[KnownPackages.PACKAGE_INSTALLER]!! ||
+                packageName in knownPackages[KnownPackages.PACKAGE_PERMISSION_CONTROLLER]!!
         )) {
             // If this permission is to be granted to the system installer and
             // this app is an installer or permission controller, then it gets the permission.
             return true
         }
         if (permission.isVerifier &&
-            packageName in knownPackages[KnownPackages.PACKAGE_VERIFIER]) {
+            packageName in knownPackages[KnownPackages.PACKAGE_VERIFIER]!!) {
             // If this permission is to be granted to the system verifier and
             // this app is a verifier, then it gets the permission.
             return true
@@ -1150,39 +1167,39 @@
             return true
         }
         if (permission.isSetup &&
-            packageName in knownPackages[KnownPackages.PACKAGE_SETUP_WIZARD]) {
+            packageName in knownPackages[KnownPackages.PACKAGE_SETUP_WIZARD]!!) {
             // If this permission is to be granted to the system setup wizard and
             // this app is a setup wizard, then it gets the permission.
             return true
         }
         if (permission.isSystemTextClassifier &&
-            packageName in knownPackages[KnownPackages.PACKAGE_SYSTEM_TEXT_CLASSIFIER]) {
+            packageName in knownPackages[KnownPackages.PACKAGE_SYSTEM_TEXT_CLASSIFIER]!!) {
             // Special permissions for the system default text classifier.
             return true
         }
         if (permission.isConfigurator &&
-            packageName in knownPackages[KnownPackages.PACKAGE_CONFIGURATOR]) {
+            packageName in knownPackages[KnownPackages.PACKAGE_CONFIGURATOR]!!) {
             // Special permissions for the device configurator.
             return true
         }
         if (permission.isIncidentReportApprover &&
-            packageName in knownPackages[KnownPackages.PACKAGE_INCIDENT_REPORT_APPROVER]) {
+            packageName in knownPackages[KnownPackages.PACKAGE_INCIDENT_REPORT_APPROVER]!!) {
             // If this permission is to be granted to the incident report approver and
             // this app is the incident report approver, then it gets the permission.
             return true
         }
         if (permission.isAppPredictor &&
-            packageName in knownPackages[KnownPackages.PACKAGE_APP_PREDICTOR]) {
+            packageName in knownPackages[KnownPackages.PACKAGE_APP_PREDICTOR]!!) {
             // Special permissions for the system app predictor.
             return true
         }
         if (permission.isCompanion &&
-            packageName in knownPackages[KnownPackages.PACKAGE_COMPANION]) {
+            packageName in knownPackages[KnownPackages.PACKAGE_COMPANION]!!) {
             // Special permissions for the system companion device manager.
             return true
         }
         if (permission.isRetailDemo &&
-            packageName in knownPackages[KnownPackages.PACKAGE_RETAIL_DEMO] &&
+            packageName in knownPackages[KnownPackages.PACKAGE_RETAIL_DEMO]!! &&
             isDeviceOrProfileOwnerUid(packageState.appId)) {
             // Special permission granted only to the OEM specified retail demo app.
             // Note that the original code was passing app ID as UID, so this behavior is kept
@@ -1190,7 +1207,7 @@
             return true
         }
         if (permission.isRecents &&
-            packageName in knownPackages[KnownPackages.PACKAGE_RECENTS]) {
+            packageName in knownPackages[KnownPackages.PACKAGE_RECENTS]!!) {
             // Special permission for the recents app.
             return true
         }
@@ -1254,7 +1271,7 @@
         }
     }
 
-    override fun BinaryXmlPullParser.parseSystemState(state: AccessState) {
+    override fun BinaryXmlPullParser.parseSystemState(state: MutableAccessState) {
         with(persistence) { this@parseSystemState.parseSystemState(state) }
     }
 
@@ -1262,7 +1279,7 @@
         with(persistence) { this@serializeSystemState.serializeSystemState(state) }
     }
 
-    override fun BinaryXmlPullParser.parseUserState(state: AccessState, userId: Int) {
+    override fun BinaryXmlPullParser.parseUserState(state: MutableAccessState, userId: Int) {
         with(persistence) { this@parseUserState.parseUserState(state, userId) }
     }
 
@@ -1286,8 +1303,7 @@
         }
 
     fun MutateStateScope.addPermissionTree(permission: Permission) {
-        newState.systemState.permissionTrees[permission.name] = permission
-        newState.systemState.requestWrite()
+        newState.mutateSystemState().mutatePermissionTrees()[permission.name] = permission
     }
 
     /**
@@ -1302,18 +1318,20 @@
     fun GetStateScope.getPermissions(): IndexedMap<String, Permission> =
         state.systemState.permissions
 
-    fun MutateStateScope.addPermission(permission: Permission, sync: Boolean = false) {
-        newState.systemState.permissions[permission.name] = permission
-        newState.systemState.requestWrite(sync)
+    fun MutateStateScope.addPermission(
+        permission: Permission,
+        isSynchronousWrite: Boolean = false
+    ) {
+        val writeMode = if (isSynchronousWrite) WriteMode.SYNCHRONOUS else WriteMode.ASYNCHRONOUS
+        newState.mutateSystemState(writeMode).mutatePermissions()[permission.name] = permission
     }
 
     fun MutateStateScope.removePermission(permission: Permission) {
-        newState.systemState.permissions -= permission.name
-        newState.systemState.requestWrite()
+        newState.mutateSystemState().mutatePermissions() -= permission.name
     }
 
     fun GetStateScope.getUidPermissionFlags(appId: Int, userId: Int): IndexedMap<String, Int>? =
-        state.userStates[userId]?.uidPermissionFlags?.get(appId)
+        state.userStates[userId]?.appIdPermissionFlags?.get(appId)
 
     fun GetStateScope.getPermissionFlags(
         appId: Int,
@@ -1333,7 +1351,7 @@
         userId: Int,
         permissionName: String
     ): Int =
-        state.userStates[userId]?.uidPermissionFlags?.get(appId).getWithDefault(permissionName, 0)
+        state.userStates[userId]?.appIdPermissionFlags?.get(appId).getWithDefault(permissionName, 0)
 
     fun MutateStateScope.setPermissionFlags(
         appId: Int,
@@ -1350,23 +1368,18 @@
         flagMask: Int,
         flagValues: Int
     ): Boolean {
-        val userState = newState.userStates[userId]
-        val uidPermissionFlags = userState.uidPermissionFlags
-        var permissionFlags = uidPermissionFlags[appId]
-        val oldFlags = permissionFlags.getWithDefault(permissionName, 0)
+        val oldFlags = newState.userStates[userId]!!.appIdPermissionFlags[appId]
+            .getWithDefault(permissionName, 0)
         val newFlags = (oldFlags andInv flagMask) or (flagValues and flagMask)
         if (oldFlags == newFlags) {
             return false
         }
-        if (permissionFlags == null) {
-            permissionFlags = IndexedMap()
-            uidPermissionFlags[appId] = permissionFlags
-        }
+        val appIdPermissionFlags = newState.mutateUserState(userId)!!.mutateAppIdPermissionFlags()
+        val permissionFlags = appIdPermissionFlags.mutateOrPut(appId) { MutableIndexedMap() }
         permissionFlags.putWithDefault(permissionName, newFlags, 0)
         if (permissionFlags.isEmpty()) {
-            uidPermissionFlags -= appId
+            appIdPermissionFlags -= appId
         }
-        userState.requestWrite()
         onPermissionFlagsChangedListeners.forEachIndexed { _, it ->
             it.onPermissionFlagsChanged(appId, userId, permissionName, oldFlags, newFlags)
         }
@@ -1385,8 +1398,24 @@
         }
     }
 
+    override fun migrateSystemState(state: MutableAccessState) {
+        migration.migrateSystemState(state)
+    }
+
+    override fun migrateUserState(state: MutableAccessState, userId: Int) {
+        migration.migrateUserState(state, userId)
+    }
+
+    override fun MutateStateScope.upgradePackageState(
+        packageState: PackageState,
+        userId: Int,
+        version: Int
+    ) {
+        with(upgrade) { upgradePackageState(packageState, userId, version) }
+    }
+
     companion object {
-        private val LOG_TAG = UidPermissionPolicy::class.java.simpleName
+        private val LOG_TAG = AppIdPermissionPolicy::class.java.simpleName
 
         private const val PLATFORM_PACKAGE_NAME = "android"
 
diff --git a/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionUpgrade.kt b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionUpgrade.kt
new file mode 100644
index 0000000..8ed8747
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionUpgrade.kt
@@ -0,0 +1,224 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.permission
+
+import android.Manifest
+import android.os.Build
+import android.util.Log
+import com.android.server.permission.access.MutateStateScope
+import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.immutable.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.util.andInv
+import com.android.server.permission.access.util.hasAnyBit
+import com.android.server.permission.access.util.hasBits
+import com.android.server.pm.pkg.PackageState
+
+class AppIdPermissionUpgrade(private val policy: AppIdPermissionPolicy) {
+    /**
+     * Upgrade the package permissions, if needed.
+     *
+     * @param version package version
+     *
+     * @see [com.android.server.permission.access.util.PackageVersionMigration.getVersion]
+     */
+    fun MutateStateScope.upgradePackageState(
+        packageState: PackageState,
+        userId: Int,
+        version: Int
+    ) {
+        val packageName = packageState.packageName
+        if (version <= 3) {
+            Log.v(
+                LOG_TAG, "Allowlisting and upgrading background location permission for " +
+                    "package: $packageName, version: $version, user:$userId"
+            )
+            allowlistRestrictedPermissions(packageState, userId)
+            upgradeBackgroundLocationPermission(packageState, userId)
+        }
+        if (version <= 10) {
+            Log.v(
+                LOG_TAG, "Upgrading access media location permission for package: $packageName" +
+                    ", version: $version, user: $userId"
+            )
+            upgradeAccessMediaLocationPermission(packageState, userId)
+        }
+        // Enable isAtLeastT check, when moving subsystem to mainline.
+        if (version <= 12 /*&& SdkLevel.isAtLeastT()*/) {
+            Log.v(
+                LOG_TAG, "Upgrading scoped permissions for package: $packageName" +
+                    ", version: $version, user: $userId"
+            )
+            upgradeAuralVisualMediaPermissions(packageState, userId)
+        }
+        // Add a new upgrade step: if (packageVersion <= LATEST_VERSION) { .... }
+        // Also increase LATEST_VERSION
+    }
+
+    private fun MutateStateScope.allowlistRestrictedPermissions(
+        packageState: PackageState,
+        userId: Int
+    ) {
+        packageState.androidPackage!!.requestedPermissions.forEach { permissionName ->
+            if (permissionName in LEGACY_RESTRICTED_PERMISSIONS) {
+                with(policy) {
+                    updatePermissionFlags(
+                        packageState.appId, userId, permissionName,
+                        PermissionFlags.UPGRADE_EXEMPT, PermissionFlags.UPGRADE_EXEMPT
+                    )
+                }
+            }
+        }
+    }
+
+    private fun MutateStateScope.upgradeBackgroundLocationPermission(
+        packageState: PackageState,
+        userId: Int
+    ) {
+        if (Manifest.permission.ACCESS_BACKGROUND_LOCATION in
+            packageState.androidPackage!!.requestedPermissions) {
+            val appId = packageState.appId
+            val accessFineLocationFlags = with(policy) {
+                getPermissionFlags(appId, userId, Manifest.permission.ACCESS_FINE_LOCATION)
+            }
+            val accessCoarseLocationFlags = with(policy) {
+                getPermissionFlags(appId, userId, Manifest.permission.ACCESS_COARSE_LOCATION)
+            }
+            val isForegroundLocationGranted =
+                PermissionFlags.isAppOpGranted(accessFineLocationFlags) ||
+                    PermissionFlags.isAppOpGranted(accessCoarseLocationFlags)
+            if (isForegroundLocationGranted) {
+                grantRuntimePermission(
+                    packageState, userId, Manifest.permission.ACCESS_BACKGROUND_LOCATION
+                )
+            }
+        }
+    }
+
+    private fun MutateStateScope.upgradeAccessMediaLocationPermission(
+        packageState: PackageState,
+        userId: Int
+    ) {
+        if (Manifest.permission.ACCESS_MEDIA_LOCATION in
+            packageState.androidPackage!!.requestedPermissions) {
+            val flags = with(policy) {
+                getPermissionFlags(
+                    packageState.appId, userId, Manifest.permission.READ_EXTERNAL_STORAGE
+                )
+            }
+            if (PermissionFlags.isAppOpGranted(flags)) {
+                grantRuntimePermission(
+                    packageState, userId, Manifest.permission.ACCESS_MEDIA_LOCATION
+                )
+            }
+        }
+    }
+
+    private fun MutateStateScope.upgradeAuralVisualMediaPermissions(
+        packageState: PackageState,
+        userId: Int
+    ) {
+        val androidPackage = packageState.androidPackage!!
+        if (androidPackage.targetSdkVersion < Build.VERSION_CODES.TIRAMISU) {
+            return
+        }
+        val requestedPermissionNames = androidPackage.requestedPermissions
+        val isStorageUserGranted = STORAGE_PERMISSIONS.anyIndexed { _, permissionName ->
+            if (permissionName !in requestedPermissionNames) {
+                return@anyIndexed false
+            }
+            val flags = with(policy) {
+                getPermissionFlags(packageState.appId, userId, permissionName)
+            }
+            PermissionFlags.isAppOpGranted(flags) && flags.hasBits(PermissionFlags.USER_SET)
+        }
+        if (isStorageUserGranted) {
+            AURAL_VISUAL_MEDIA_PERMISSIONS.forEachIndexed { _, permissionName ->
+                if (permissionName in requestedPermissionNames) {
+                    grantRuntimePermission(packageState, userId, permissionName)
+                }
+            }
+        }
+    }
+
+    private fun MutateStateScope.grantRuntimePermission(
+        packageState: PackageState,
+        userId: Int,
+        permissionName: String
+    ) {
+        Log.v(
+            LOG_TAG, "Granting runtime permission for package: ${packageState.packageName}, " +
+                "permission: $permissionName, userId: $userId"
+        )
+        val permission = newState.systemState.permissions[permissionName]!!
+        if (packageState.getUserStateOrDefault(userId).isInstantApp && !permission.isInstant) {
+            return
+        }
+
+        val appId = packageState.appId
+        var flags = with(policy) { getPermissionFlags(appId, userId, permissionName) }
+        if (flags.hasAnyBit(MASK_ANY_FIXED)) {
+            Log.v(
+                LOG_TAG,
+                "Not allowed to grant $permissionName to package ${packageState.packageName}"
+            )
+            return
+        }
+
+        flags = flags or PermissionFlags.RUNTIME_GRANTED
+        flags = flags andInv (
+            PermissionFlags.APP_OP_REVOKED or
+            PermissionFlags.IMPLICIT or
+            PermissionFlags.LEGACY_GRANTED or
+            PermissionFlags.HIBERNATION or
+            PermissionFlags.ONE_TIME
+        )
+        with(policy) { setPermissionFlags(appId, userId, permissionName, flags) }
+    }
+
+    companion object {
+        private val LOG_TAG = AppIdPermissionUpgrade::class.java.simpleName
+
+        private const val MASK_ANY_FIXED =
+            PermissionFlags.USER_SET or PermissionFlags.USER_FIXED or
+            PermissionFlags.POLICY_FIXED or PermissionFlags.SYSTEM_FIXED
+
+        private val LEGACY_RESTRICTED_PERMISSIONS = indexedSetOf(
+            Manifest.permission.ACCESS_BACKGROUND_LOCATION,
+            Manifest.permission.READ_EXTERNAL_STORAGE,
+            Manifest.permission.WRITE_EXTERNAL_STORAGE,
+            Manifest.permission.SEND_SMS,
+            Manifest.permission.RECEIVE_SMS,
+            Manifest.permission.RECEIVE_WAP_PUSH,
+            Manifest.permission.RECEIVE_MMS,
+            Manifest.permission.READ_CELL_BROADCASTS,
+            Manifest.permission.READ_CALL_LOG,
+            Manifest.permission.WRITE_CALL_LOG,
+            Manifest.permission.PROCESS_OUTGOING_CALLS
+        )
+
+        private val STORAGE_PERMISSIONS = indexedSetOf(
+            Manifest.permission.READ_EXTERNAL_STORAGE,
+            Manifest.permission.WRITE_EXTERNAL_STORAGE
+        )
+        private val AURAL_VISUAL_MEDIA_PERMISSIONS = indexedSetOf(
+            Manifest.permission.READ_MEDIA_AUDIO,
+            Manifest.permission.READ_MEDIA_IMAGES,
+            Manifest.permission.READ_MEDIA_VIDEO,
+            Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED
+        )
+    }
+}
diff --git a/services/permission/java/com/android/server/permission/access/permission/Permission.kt b/services/permission/java/com/android/server/permission/access/permission/Permission.kt
index 714480c..39b4eaf 100644
--- a/services/permission/java/com/android/server/permission/access/permission/Permission.kt
+++ b/services/permission/java/com/android/server/permission/access/permission/Permission.kt
@@ -140,9 +140,7 @@
         get() = permissionInfo.flags.hasBits(PermissionInfo.FLAG_SOFT_RESTRICTED)
 
     inline val isHardOrSoftRestricted: Boolean
-        get() = permissionInfo.flags.hasBits(
-            PermissionInfo.FLAG_HARD_RESTRICTED or PermissionInfo.FLAG_SOFT_RESTRICTED
-        )
+        get() = isHardRestricted || isSoftRestricted
 
     inline val isImmutablyRestricted: Boolean
         get() = permissionInfo.flags.hasBits(PermissionInfo.FLAG_IMMUTABLY_RESTRICTED)
diff --git a/services/permission/java/com/android/server/permission/access/permission/PermissionFlags.kt b/services/permission/java/com/android/server/permission/access/permission/PermissionFlags.kt
index 48658ff..550d148 100644
--- a/services/permission/java/com/android/server/permission/access/permission/PermissionFlags.kt
+++ b/services/permission/java/com/android/server/permission/access/permission/PermissionFlags.kt
@@ -22,6 +22,7 @@
 import android.os.Build
 import android.permission.PermissionManager
 import com.android.server.permission.access.util.andInv
+import com.android.server.permission.access.util.flagsToString
 import com.android.server.permission.access.util.hasAnyBit
 import com.android.server.permission.access.util.hasBits
 
@@ -137,7 +138,7 @@
      * For example, this flag may be set in
      * [com.android.server.pm.permission.DefaultPermissionGrantPolicy].
      *
-     * @see PackageManager.FLAG_PERMISSION_SYSTEM_FIXED
+     * @see PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT
      */
     const val PREGRANT = 1 shl 9
 
@@ -317,6 +318,11 @@
      */
     const val MASK_EXEMPT = INSTALLER_EXEMPT or SYSTEM_EXEMPT or UPGRADE_EXEMPT
 
+    /**
+     * Mask for all permission flags about permission restriction.
+     */
+    const val MASK_RESTRICTED = RESTRICTION_REVOKED or SOFT_RESTRICTED
+
     fun isPermissionGranted(flags: Int): Boolean {
         if (flags.hasBits(INSTALL_GRANTED)) {
             return true
@@ -477,4 +483,38 @@
         }
         return flags
     }
+
+    fun flagToString(flag: Int): String =
+        when (flag) {
+            INSTALL_GRANTED -> "INSTALL_GRANTED"
+            INSTALL_REVOKED -> "INSTALL_REVOKED"
+            PROTECTION_GRANTED -> "PROTECTION_GRANTED"
+            ROLE -> "ROLE"
+            RUNTIME_GRANTED -> "RUNTIME_GRANTED"
+            USER_SET -> "USER_SET"
+            USER_FIXED -> "USER_FIXED"
+            POLICY_FIXED -> "POLICY_FIXED"
+            SYSTEM_FIXED -> "SYSTEM_FIXED"
+            PREGRANT -> "PREGRANT"
+            LEGACY_GRANTED -> "LEGACY_GRANTED"
+            IMPLICIT_GRANTED -> "IMPLICIT_GRANTED"
+            IMPLICIT -> "IMPLICIT"
+            USER_SENSITIVE_WHEN_GRANTED -> "USER_SENSITIVE_WHEN_GRANTED"
+            USER_SENSITIVE_WHEN_REVOKED -> "USER_SENSITIVE_WHEN_REVOKED"
+            INSTALLER_EXEMPT -> "INSTALLER_EXEMPT"
+            SYSTEM_EXEMPT -> "SYSTEM_EXEMPT"
+            UPGRADE_EXEMPT -> "UPGRADE_EXEMPT"
+            RESTRICTION_REVOKED -> "RESTRICTION_REVOKED"
+            SOFT_RESTRICTED -> "SOFT_RESTRICTED"
+            APP_OP_REVOKED -> "APP_OP_REVOKED"
+            ONE_TIME -> "ONE_TIME"
+            HIBERNATION -> "HIBERNATION"
+            USER_SELECTED -> "USER_SELECTED"
+            else -> "0x${flag.toUInt().toString(16).uppercase()}"
+        }
+
+    fun toString(flags: Int): String = flags.flagsToString { flagToString(it) }
+
+    fun apiFlagsToString(apiFlags: Int): String =
+        apiFlags.flagsToString { PackageManager.permissionFlagToString(it) }
 }
diff --git a/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt b/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt
index de7dc3b..f3bb2b9 100644
--- a/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt
+++ b/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt
@@ -45,9 +45,12 @@
 import android.permission.PermissionControllerManager
 import android.permission.PermissionManager
 import android.provider.Settings
+import android.util.ArrayMap
+import android.util.ArraySet
 import android.util.DebugUtils
 import android.util.IntArray as GrowingIntArray
 import android.util.Log
+import android.util.SparseBooleanArray
 import com.android.internal.compat.IPlatformCompat
 import com.android.internal.logging.MetricsLogger
 import com.android.internal.logging.nano.MetricsProto
@@ -65,8 +68,9 @@
 import com.android.server.permission.access.MutateStateScope
 import com.android.server.permission.access.PermissionUri
 import com.android.server.permission.access.UidUri
-import com.android.server.permission.access.appop.UidAppOpPolicy
+import com.android.server.permission.access.appop.AppIdAppOpPolicy
 import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports
+import com.android.server.permission.access.immutable.* // ktlint-disable no-wildcard-imports
 import com.android.server.permission.access.util.andInv
 import com.android.server.permission.access.util.hasAnyBit
 import com.android.server.permission.access.util.hasBits
@@ -101,7 +105,7 @@
     private val service: AccessCheckingService
 ) : PermissionManagerServiceInterface {
     private val policy =
-        service.getSchemePolicy(UidUri.SCHEME, PermissionUri.SCHEME) as UidPermissionPolicy
+        service.getSchemePolicy(UidUri.SCHEME, PermissionUri.SCHEME) as AppIdPermissionPolicy
 
     private val context = service.context
     private lateinit var metricsLogger: MetricsLogger
@@ -117,7 +121,7 @@
     private lateinit var onPermissionsChangeListeners: OnPermissionsChangeListeners
     private lateinit var onPermissionFlagsChangedListener: OnPermissionFlagsChangedListener
 
-    private val mountedStorageVolumes = IndexedSet<String?>()
+    private val mountedStorageVolumes = ArraySet<String?>()
 
     private lateinit var permissionControllerManager: PermissionControllerManager
 
@@ -128,7 +132,7 @@
      * This array (`userId -> noDelayedBackupLeft`) is `true` for all the users where
      * there is **no more** delayed backup left.
      */
-    private val isDelayedPermissionBackupFinished = IntBooleanMap()
+    private val isDelayedPermissionBackupFinished = SparseBooleanArray()
 
     fun initialize() {
         metricsLogger = MetricsLogger()
@@ -142,6 +146,12 @@
         userManagerInternal = LocalServices.getService(UserManagerInternal::class.java)
         userManagerService = UserManagerService.getInstance()
 
+        // The package info cache is the cache for package and permission information.
+        // Disable the package info and package permission caches locally but leave the
+        // checkPermission cache active.
+        PackageManager.invalidatePackageInfoCache()
+        PermissionManager.disablePackageNamePermissionCache()
+
         handlerThread = ServiceThread(LOG_TAG, Process.THREAD_PRIORITY_BACKGROUND, true)
             .apply { start() }
         handler = Handler(handlerThread.looper)
@@ -161,7 +171,7 @@
                 with(policy) { getPermissionGroups() }
             }
 
-            return permissionGroups.mapNotNullIndexed { _, _, permissionGroup ->
+            return permissionGroups.mapNotNullIndexedTo(ArrayList()) { _, _, permissionGroup ->
                 if (snapshot.isPackageVisibleToUid(permissionGroup.packageName, callingUid)) {
                     permissionGroup.generatePermissionGroupInfo(flags)
                 } else {
@@ -272,8 +282,7 @@
                 return null
             }
 
-            val permissions: IndexedMap<String, Permission>
-            service.getState {
+            val permissions = service.getState {
                 if (permissionGroupName != null) {
                     val permissionGroup =
                         with(policy) { getPermissionGroups()[permissionGroupName] } ?: return null
@@ -283,10 +292,10 @@
                     }
                 }
 
-                permissions = with(policy) { getPermissions() }
+                with(policy) { getPermissions() }
             }
 
-            return permissions.mapNotNullIndexed { _, _, permission ->
+            return permissions.mapNotNullIndexedTo(ArrayList()) { _, _, permission ->
                 if (permission.groupName == permissionGroupName &&
                     snapshot.isPackageVisibleToUid(permission.packageName, callingUid)
                 ) {
@@ -311,15 +320,15 @@
     private inline fun getPermissionsWithProtectionOrProtectionFlags(
         predicate: (Permission) -> Boolean
     ): List<PermissionInfo> {
-        service.getState {
-            with(policy) {
-                return getPermissions().mapNotNullIndexed { _, _, permission ->
-                    if (predicate(permission)) {
-                        permission.generatePermissionInfo(0)
-                    } else {
-                        null
-                    }
-                }
+        val permissions = service.getState {
+            with(policy) { getPermissions() }
+        }
+
+        return permissions.mapNotNullIndexedTo(ArrayList()) { _, _, permission ->
+            if (predicate(permission)) {
+                permission.generatePermissionInfo(0)
+            } else {
+                null
             }
         }
     }
@@ -337,7 +346,8 @@
         val permissions = service.getState {
             with(policy) { getPermissions() }
         }
-        return permissions.mapNotNullIndexedToSet { _, _, permission ->
+
+        return permissions.mapNotNullIndexedTo(ArraySet()) { _, _, permission ->
             if (permission.packageName == packageName) {
                 permission.name
             } else {
@@ -434,7 +444,7 @@
     private fun GetStateScope.calculatePermissionTreeFootprint(permissionTree: Permission): Int {
         var size = 0
         with(policy) {
-            getPermissions().forEachValueIndexed { _, permission ->
+            getPermissions().forEachIndexed { _, _, permission ->
                 if (permissionTree.appId == permission.appId) {
                     size += permission.footprint
                 }
@@ -583,7 +593,7 @@
             val permissionFlags = with(policy) { getUidPermissionFlags(packageState.appId, userId) }
                 ?: return emptySet()
 
-            return permissionFlags.mapNotNullIndexedToSet { _, permissionName, _ ->
+            return permissionFlags.mapNotNullIndexedTo(ArraySet()) { _, permissionName, _ ->
                 if (isPermissionGranted(packageState, userId, permissionName)) {
                     permissionName
                 } else {
@@ -740,7 +750,7 @@
     private fun setRequestedPermissionStates(
         packageState: PackageState,
         userId: Int,
-        permissionStates: IndexedMap<String, Int>
+        permissionStates: ArrayMap<String, Int>
     ) {
         service.mutateState {
             permissionStates.forEachIndexed { _, permissionName, permissionState ->
@@ -930,7 +940,8 @@
         permissionName: String,
         isGranted: Boolean
     ) {
-        val appOpPolicy = service.getSchemePolicy(UidUri.SCHEME, AppOpUri.SCHEME) as UidAppOpPolicy
+        val appOpPolicy = service.getSchemePolicy(UidUri.SCHEME, AppOpUri.SCHEME) as
+            AppIdAppOpPolicy
         val appOpName = AppOpsManager.permissionToOp(permissionName)
         val mode = if (isGranted) AppOpsManager.MODE_ALLOWED else AppOpsManager.MODE_ERRORED
         with(appOpPolicy) { setAppOpMode(packageState.appId, userId, appOpName, mode) }
@@ -1291,7 +1302,7 @@
         packageName: String,
         allowlistedFlags: Int,
         userId: Int
-    ): IndexedList<String>? {
+    ): ArrayList<String>? {
         requireNotNull(packageName) { "packageName cannot be null" }
         Preconditions.checkFlagsArgument(allowlistedFlags, PERMISSION_ALLOWLIST_MASK)
         Preconditions.checkArgumentNonnegative(userId, "userId cannot be null")
@@ -1349,7 +1360,7 @@
         appId: Int,
         allowlistedFlags: Int,
         userId: Int
-    ): IndexedList<String>? {
+    ): ArrayList<String>? {
         val permissionFlags = service.getState {
             with(policy) { getUidPermissionFlags(appId, userId) }
         } ?: return null
@@ -1365,7 +1376,7 @@
             queryFlags = queryFlags or PermissionFlags.INSTALLER_EXEMPT
         }
 
-        return permissionFlags.mapNotNullIndexed { _, permissionName, flags ->
+        return permissionFlags.mapNotNullIndexedTo(ArrayList()) { _, permissionName, flags ->
             if (flags.hasAnyBit(queryFlags)) permissionName else null
         }
     }
@@ -1383,7 +1394,7 @@
 
         val permissionNames = getAllowlistedRestrictedPermissions(
             packageName, allowlistedFlags, userId
-        ) ?: IndexedList(1)
+        ) ?: ArrayList(1)
 
         if (permissionName !in permissionNames) {
             permissionNames += permissionName
@@ -1403,7 +1414,7 @@
         val newPermissionNames = getAllowlistedRestrictedPermissionsUnchecked(appId,
             PackageManager.FLAG_PERMISSION_WHITELIST_INSTALLER, userId
         )?.let {
-            IndexedSet(permissionNames).apply { this += it }.toList()
+            ArraySet(permissionNames).apply { this += it }.toList()
         } ?: permissionNames
 
         setAllowlistedRestrictedPermissionsUnchecked(androidPackage, appId, newPermissionNames,
@@ -1569,27 +1580,31 @@
                         return@forEachIndexed
                     }
 
-                    val wasAllowlisted = oldFlags.hasAnyBit(PermissionFlags.MASK_EXEMPT)
-                    val isAllowlisted = newFlags.hasAnyBit(PermissionFlags.MASK_EXEMPT)
+                    val isExempt = newFlags.hasAnyBit(PermissionFlags.MASK_EXEMPT)
 
                     // If the permission is policy fixed as granted but it is no longer
                     // on any of the allowlists we need to clear the policy fixed flag
                     // as allowlisting trumps policy i.e. policy cannot grant a non
                     // grantable permission.
                     if (oldFlags.hasBits(PermissionFlags.POLICY_FIXED)) {
-                        if (!isAllowlisted && wasGranted) {
+                        if (!isExempt && wasGranted) {
                             mask = mask or PermissionFlags.POLICY_FIXED
                             newFlags = newFlags andInv PermissionFlags.POLICY_FIXED
                         }
                     }
 
-                    // If we are allowlisting an app that does not support runtime permissions
-                    // we need to make sure it goes through the permission review UI at launch.
-                    if (androidPackage.targetSdkVersion < Build.VERSION_CODES.M &&
-                        !wasAllowlisted && isAllowlisted) {
-                        mask = mask or PermissionFlags.IMPLICIT
-                        newFlags = newFlags or PermissionFlags.IMPLICIT
+                    newFlags = if (permission.isHardRestricted && !isExempt) {
+                        newFlags or PermissionFlags.RESTRICTION_REVOKED
+                    } else {
+                        newFlags andInv PermissionFlags.RESTRICTION_REVOKED
                     }
+                    newFlags = if (permission.isSoftRestricted && !isExempt) {
+                        newFlags or PermissionFlags.SOFT_RESTRICTED
+                    } else {
+                        newFlags andInv PermissionFlags.SOFT_RESTRICTED
+                    }
+                    mask = mask or PermissionFlags.RESTRICTION_REVOKED or
+                        PermissionFlags.SOFT_RESTRICTED
 
                     updatePermissionFlags(
                         appId, userId, requestedPermission, mask, newFlags
@@ -1600,11 +1615,23 @@
     }
 
     override fun resetRuntimePermissions(androidPackage: AndroidPackage, userId: Int) {
-        // TODO("Not yet implemented")
+        service.mutateState {
+            with(policy) {
+                resetRuntimePermissions(androidPackage.packageName, userId)
+            }
+        }
     }
 
     override fun resetRuntimePermissionsForUser(userId: Int) {
-        // TODO("Not yet implemented")
+        packageManagerLocal.withUnfilteredSnapshot().use { snapshot ->
+            service.mutateState {
+                snapshot.packageStates.forEach { (_, packageState) ->
+                    with(policy) {
+                        resetRuntimePermissions(packageState.packageName, userId)
+                    }
+                }
+            }
+        }
     }
 
     override fun addOnPermissionsChangeListener(listener: IOnPermissionsChangeListener) {
@@ -1637,7 +1664,7 @@
 
     override fun getAppOpPermissionPackages(permissionName: String): Array<String> {
         requireNotNull(permissionName) { "permissionName cannot be null" }
-        val packageNames = IndexedSet<String>()
+        val packageNames = ArraySet<String>()
 
         val permission = service.getState {
             with(policy) { getPermissions()[permissionName] }
@@ -1659,7 +1686,7 @@
     }
 
     override fun getAllAppOpPermissionPackages(): Map<String, Set<String>> {
-        val appOpPermissionPackageNames = IndexedMap<String, IndexedSet<String>>()
+        val appOpPermissionPackageNames = ArrayMap<String, ArraySet<String>>()
         val permissions = service.getState { with(policy) { getPermissions() } }
         packageManagerLocal.withUnfilteredSnapshot().use { snapshot ->
             snapshot.packageStates.forEach packageStates@{ (_, packageState) ->
@@ -1668,7 +1695,7 @@
                     val permission = permissions[permissionName] ?: return@requestedPermissions
                     if (permission.isAppOp) {
                         val packageNames = appOpPermissionPackageNames
-                            .getOrPut(permissionName) { IndexedSet() }
+                            .getOrPut(permissionName) { ArraySet() }
                         packageNames += androidPackage.packageName
                     }
                 }
@@ -1751,7 +1778,7 @@
     override fun getLegacyPermissions(): List<LegacyPermission> =
         service.getState {
             with(policy) { getPermissions() }
-        }.mapIndexed { _, _, permission ->
+        }.mapIndexedTo(ArrayList()) { _, _, permission ->
             LegacyPermission(
                 permission.permissionInfo, permission.type, permission.appId, permission.gids
             )
@@ -1774,7 +1801,7 @@
     private fun toLegacyPermissions(
         permissions: IndexedMap<String, Permission>
     ): List<LegacyPermission> =
-        permissions.mapIndexed { _, _, permission ->
+        permissions.mapIndexedTo(ArrayList()) { _, _, permission ->
             // We don't need to provide UID and GIDs, which are only retrieved when dumping.
             LegacyPermission(
                 permission.permissionInfo, permission.type, 0, EmptyArray.INT
@@ -1856,6 +1883,18 @@
         params: PermissionManagerServiceInternal.PackageInstalledParams,
         userId: Int
     ) {
+        if (params === PermissionManagerServiceInternal.PackageInstalledParams.DEFAULT) {
+            // TODO: We should actually stop calling onPackageInstalled() when we are passing
+            //  PackageInstalledParams.DEFAULT in InstallPackageHelper, because there's actually no
+            //  installer in those  cases of system app installs, and the default params won't
+            //  allowlist any permissions which means the original UPGRADE_EXEMPT will be dropped
+            //  without any INSTALLER_EXEMPT added. However, we can't do that right now because the
+            //  old permission subsystem still depends on this method being called to set up the
+            //  permission state for the first time (which we are doing in onPackageAdded() or
+            //  onStorageVolumeMounted() now).
+            return
+        }
+
         synchronized(mountedStorageVolumes) {
             if (androidPackage.volumeUuid !in mountedStorageVolumes) {
                 // Wait for the storage volume to be mounted and batch the state mutation there.
@@ -1881,6 +1920,14 @@
                 packageManagerInternal.getPackageStateInternal(androidPackage.packageName)!!
             addAllowlistedRestrictedPermissionsUnchecked(androidPackage, packageState.appId,
                 params.allowlistedRestrictedPermissions, userId)
+            if (!packageState.isSystem()) {
+                // Drop UPGRADE_EXEMPT for all permissions requested by this package since there's
+                // an installer and the installer has made a decision.
+                setAllowlistedRestrictedPermissionsUnchecked(
+                    androidPackage, packageState.appId, emptyList(),
+                    PackageManager.FLAG_PERMISSION_WHITELIST_UPGRADE, userId
+                )
+            }
             setRequestedPermissionStates(packageState, userId, params.permissionStates)
         }
     }
@@ -2090,16 +2137,16 @@
      * Callback invoked when interesting actions have been taken on a permission.
      */
     private inner class OnPermissionFlagsChangedListener :
-        UidPermissionPolicy.OnPermissionFlagsChangedListener() {
+        AppIdPermissionPolicy.OnPermissionFlagsChangedListener() {
         private var isPermissionFlagsChanged = false
 
-        private val runtimePermissionChangedUids = IntSet()
+        private val runtimePermissionChangedUids = MutableIntSet()
         // Mapping from UID to whether only notifications permissions are revoked.
-        private val runtimePermissionRevokedUids = IntBooleanMap()
-        private val gidsChangedUids = IntSet()
+        private val runtimePermissionRevokedUids = SparseBooleanArray()
+        private val gidsChangedUids = MutableIntSet()
 
         private var isKillRuntimePermissionRevokedUidsSkipped = false
-        private val killRuntimePermissionRevokedUidsReasons = IndexedSet<String>()
+        private val killRuntimePermissionRevokedUidsReasons = ArraySet<String>()
 
         fun MutateStateScope.skipKillRuntimePermissionRevokedUids() {
             isKillRuntimePermissionRevokedUidsSkipped = true
@@ -2134,7 +2181,7 @@
                 if (wasPermissionGranted && !isPermissionGranted) {
                     runtimePermissionRevokedUids[uid] =
                         permissionName in NOTIFICATIONS_PERMISSIONS &&
-                            runtimePermissionRevokedUids.getWithDefault(uid, true)
+                            runtimePermissionRevokedUids.get(uid, true)
                 }
             }
 
@@ -2257,14 +2304,14 @@
         @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.Q)
         private val BACKGROUND_RATIONALE_CHANGE_ID = 147316723L
 
-        private val FULLER_PERMISSIONS = IndexedMap<String, String>().apply {
+        private val FULLER_PERMISSIONS = ArrayMap<String, String>().apply {
             this[Manifest.permission.ACCESS_COARSE_LOCATION] =
                 Manifest.permission.ACCESS_FINE_LOCATION
             this[Manifest.permission.INTERACT_ACROSS_USERS] =
                 Manifest.permission.INTERACT_ACROSS_USERS_FULL
         }
 
-        private val NOTIFICATIONS_PERMISSIONS = indexedSetOf(
+        private val NOTIFICATIONS_PERMISSIONS = arraySetOf(
             Manifest.permission.POST_NOTIFICATIONS
         )
 
diff --git a/services/permission/java/com/android/server/permission/access/util/AtomicFileExtensions.kt b/services/permission/java/com/android/server/permission/access/util/AtomicFileExtensions.kt
index 984dfb5..2c29332 100644
--- a/services/permission/java/com/android/server/permission/access/util/AtomicFileExtensions.kt
+++ b/services/permission/java/com/android/server/permission/access/util/AtomicFileExtensions.kt
@@ -16,17 +16,54 @@
 
 package com.android.server.permission.access.util
 
+import android.os.FileUtils
 import android.util.AtomicFile
+import android.util.Log
+import java.io.File
 import java.io.FileInputStream
+import java.io.FileNotFoundException
 import java.io.FileOutputStream
 import java.io.IOException
 
 /**
- * Read from an [AtomicFile] and close everything safely when done.
+ * Read from an [AtomicFile], fallback to reserve file to read the data.
+ */
+@Throws(Exception::class)
+inline fun AtomicFile.readWithReserveCopy(block: (FileInputStream) -> Unit) {
+    try {
+        openRead().use(block)
+    } catch (e: FileNotFoundException) {
+        throw e
+    } catch (e: Exception) {
+        Log.wtf("AccessPersistence", "Failed to read $this", e)
+        val reserveFile = File(baseFile.parentFile, baseFile.name + ".reservecopy")
+        try {
+            AtomicFile(reserveFile).openRead().use(block)
+        } catch (e2: Exception) {
+            Log.e("AccessPersistence", "Failed to read $reserveFile", e2)
+            throw e
+        }
+    }
+}
+
+/**
+ * Write to actual file and reserve file.
  */
 @Throws(IOException::class)
-inline fun AtomicFile.read(block: (FileInputStream) -> Unit) {
-    openRead().use(block)
+inline fun AtomicFile.writeWithReserveCopy(block: (FileOutputStream) -> Unit) {
+    val reserveFile = File(baseFile.parentFile, baseFile.name + ".reservecopy")
+    reserveFile.delete()
+    writeInlined(block)
+    try {
+        FileInputStream(baseFile).use { inputStream ->
+            FileOutputStream(reserveFile).use { outputStream ->
+                FileUtils.copy(inputStream, outputStream)
+                outputStream.fd.sync()
+            }
+        }
+    } catch (e: Exception) {
+        Log.e("AccessPersistence", "Failed to write $reserveFile", e)
+    }
 }
 
 /**
diff --git a/services/permission/java/com/android/server/permission/access/util/IntExtensions.kt b/services/permission/java/com/android/server/permission/access/util/IntExtensions.kt
index e71d7a1..bc3328c 100644
--- a/services/permission/java/com/android/server/permission/access/util/IntExtensions.kt
+++ b/services/permission/java/com/android/server/permission/access/util/IntExtensions.kt
@@ -21,3 +21,19 @@
 fun Int.hasBits(bits: Int): Boolean = this and bits == bits
 
 infix fun Int.andInv(other: Int): Int = this and other.inv()
+
+inline fun Int.flagsToString(flagToString: (Int) -> String): String {
+    var flags = this
+    return buildString {
+        append("[")
+        while (flags != 0) {
+            val flag = 1 shl flags.countTrailingZeroBits()
+            flags = flags andInv flag
+            append(flagToString(flag))
+            if (flags != 0) {
+                append('|')
+            }
+        }
+        append("]")
+    }
+}
diff --git a/services/permission/java/com/android/server/permission/access/util/PackageVersionMigration.kt b/services/permission/java/com/android/server/permission/access/util/PackageVersionMigration.kt
new file mode 100644
index 0000000..fa6b6b1
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/util/PackageVersionMigration.kt
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2023 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.server.permission.access.util
+
+import com.android.server.LocalServices
+import com.android.server.appop.AppOpMigrationHelper
+import com.android.server.pm.permission.PermissionMigrationHelper
+
+object PackageVersionMigration {
+    /**
+     * Maps existing permission and app-op version to a unified version during OTA upgrade. The
+     * new unified version is used in determining the upgrade steps for a package (for both
+     * permission and app-ops).
+     *
+     * @return unified permission/app-op version
+     * @throws IllegalStateException if the method is called when there is nothing to migrate i.e.
+     * permission and app-op file does not exist.
+     */
+    internal fun getVersion(userId: Int): Int {
+        val permissionMigrationHelper =
+            LocalServices.getService(PermissionMigrationHelper::class.java)
+        val permissionVersion = permissionMigrationHelper.getLegacyPermissionStateVersion(userId)
+
+        val appOpMigrationHelper = LocalServices.getService(AppOpMigrationHelper::class.java)
+        val appOpVersion = appOpMigrationHelper.legacyAppOpVersion
+
+        return when {
+            // Both files don't exist.
+            permissionVersion == -1 && appOpVersion == -1 ->
+                error("getVersion() called when there are no legacy files")
+            // merging combination of versions based on released android version
+            // permissions version 1-8 were released in Q, 9 in S and 10 in T
+            // app ops version 1 was released in P, 3 in U.
+            permissionVersion >= 10 && appOpVersion >= 3 -> 14
+            permissionVersion >= 10 && appOpVersion >= 1 -> 13
+            permissionVersion >= 9 && appOpVersion >= 1 -> 12
+            permissionVersion >= 8 && appOpVersion >= 1 -> 11
+            permissionVersion >= 7 && appOpVersion >= 1 -> 10
+            permissionVersion >= 6 && appOpVersion >= 1 -> 9
+            permissionVersion >= 5 && appOpVersion >= 1 -> 8
+            permissionVersion >= 4 && appOpVersion >= 1 -> 7
+            permissionVersion >= 3 && appOpVersion >= 1 -> 6
+            permissionVersion >= 2 && appOpVersion >= 1 -> 5
+            permissionVersion >= 1 && appOpVersion >= 1 -> 4
+            // Permission file exist w/o version, app op file has version as 1.
+            permissionVersion >= 0 && appOpVersion >= 1 -> 3
+            // Both file exist but w/o any version.
+            permissionVersion >= 0 && appOpVersion >= 0 -> 2
+            // Permission file doesn't exit, app op file exist w/o version.
+            permissionVersion >= -1 && appOpVersion >= 0 -> 1
+            // Re-run all upgrades to be safe.
+            else -> 0
+        }
+    }
+}
diff --git a/services/robotests/backup/Android.bp b/services/robotests/backup/Android.bp
index 506e156..e04dd68 100644
--- a/services/robotests/backup/Android.bp
+++ b/services/robotests/backup/Android.bp
@@ -36,6 +36,7 @@
         "services.backup",
         "services.core",
         "services.net",
+        "service-permission.stubs.system_server",
     ],
 
     libs: ["android.net.ipsec.ike.stubs.system"],
diff --git a/services/robotests/backup/src/com/android/server/backup/FullBackupJobTest.java b/services/robotests/backup/src/com/android/server/backup/FullBackupJobTest.java
index c8797e2..cd53cf4 100644
--- a/services/robotests/backup/src/com/android/server/backup/FullBackupJobTest.java
+++ b/services/robotests/backup/src/com/android/server/backup/FullBackupJobTest.java
@@ -16,13 +16,18 @@
 
 package com.android.server.backup;
 
+import static com.android.server.backup.FullBackupJob.getJobIdForUserId;
+
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.Mockito.when;
+import static org.robolectric.Shadows.shadowOf;
 
 import android.annotation.UserIdInt;
+import android.app.job.JobInfo;
 import android.app.job.JobScheduler;
 import android.content.Context;
+import android.content.pm.PackageManager;
 import android.os.Handler;
 import android.os.UserHandle;
 import android.platform.test.annotations.Presubmit;
@@ -87,6 +92,25 @@
     }
 
     @Test
+    public void testSchedule_notWatch_requiresDeviceIdle() {
+        shadowOf(mContext.getPackageManager())
+                .setSystemFeature(PackageManager.FEATURE_WATCH, false);
+        FullBackupJob.schedule(mUserOneId, mContext, 0, mUserBackupManagerService);
+
+        JobInfo pendingJob = mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserOneId));
+        assertThat(pendingJob.isRequireDeviceIdle()).isTrue();
+    }
+
+    @Test
+    public void testSchedule_isWatch_doesNotRequireDeviceIdle() {
+        shadowOf(mContext.getPackageManager()).setSystemFeature(PackageManager.FEATURE_WATCH, true);
+        FullBackupJob.schedule(mUserOneId, mContext, 0, mUserBackupManagerService);
+
+        JobInfo pendingJob = mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserOneId));
+        assertThat(pendingJob.isRequireDeviceIdle()).isFalse();
+    }
+
+    @Test
     public void testCancel_afterCancelling_jobDoesntExist() {
         FullBackupJob.schedule(mUserOneId, mContext, 0, mUserBackupManagerService);
         FullBackupJob.schedule(mUserTwoId, mContext, 0, mUserBackupManagerService);
@@ -130,9 +154,4 @@
         assertThat(mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserOneId))).isNull();
         assertThat(mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserTwoId))).isNotNull();
     }
-
-    private static int getJobIdForUserId(int userId) {
-        return JobIdManager.getJobIdForUserId(FullBackupJob.MIN_JOB_ID, FullBackupJob.MAX_JOB_ID,
-                userId);
-    }
 }
diff --git a/services/tests/InputMethodSystemServerTests/Android.bp b/services/tests/InputMethodSystemServerTests/Android.bp
index 07ddda3..36446f6 100644
--- a/services/tests/InputMethodSystemServerTests/Android.bp
+++ b/services/tests/InputMethodSystemServerTests/Android.bp
@@ -41,6 +41,7 @@
         "mockito-target-extended-minus-junit4",
         "platform-test-annotations",
         "services.core",
+        "service-permission.stubs.system_server",
         "servicestests-core-utils",
         "servicestests-utils-mockito-extended",
         "truth-prebuilt",
@@ -88,6 +89,7 @@
         "mockito-target-extended-minus-junit4",
         "platform-test-annotations",
         "services.core",
+        "service-permission.stubs.system_server",
         "servicestests-core-utils",
         "servicestests-utils-mockito-extended",
         "truth-prebuilt",
diff --git a/services/tests/PackageManagerComponentOverrideTests/Android.bp b/services/tests/PackageManagerComponentOverrideTests/Android.bp
index 19fdf60..bc36970 100644
--- a/services/tests/PackageManagerComponentOverrideTests/Android.bp
+++ b/services/tests/PackageManagerComponentOverrideTests/Android.bp
@@ -29,12 +29,13 @@
 android_test {
     name: "PackageManagerComponentOverrideTests",
     srcs: [
-        "src/**/*.kt"
+        "src/**/*.kt",
     ],
     static_libs: [
         "androidx.test.runner",
         "mockito-target-extended-minus-junit4",
         "services.core",
+        "service-permission.stubs.system_server",
         "servicestests-utils-mockito-extended",
         "testng", // TODO: remove once Android migrates to JUnit 4.12, which provides assertThrows
         "truth-prebuilt",
diff --git a/services/tests/PackageManagerServiceTests/server/Android.bp b/services/tests/PackageManagerServiceTests/server/Android.bp
index 1146271..92e4560 100644
--- a/services/tests/PackageManagerServiceTests/server/Android.bp
+++ b/services/tests/PackageManagerServiceTests/server/Android.bp
@@ -43,7 +43,6 @@
         "ShortcutManagerTestUtils",
         "truth-prebuilt",
         "testables",
-        "ub-uiautomator",
         "platformprotosnano",
         "framework-protos",
         "hamcrest-library",
diff --git a/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/AppsFilterImplTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/AppsFilterImplTest.java
index 7909ba4..d5cd6ef9 100644
--- a/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/AppsFilterImplTest.java
+++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/AppsFilterImplTest.java
@@ -224,7 +224,6 @@
 
         MockitoAnnotations.initMocks(this);
         when(mSnapshot.getPackageStates()).thenAnswer(x -> mExisting);
-        when(mSnapshot.getAllSharedUsers()).thenReturn(mSharedUserSettings);
         when(mSnapshot.getUserInfos()).thenReturn(USER_INFO_LIST);
         when(mSnapshot.getSharedUser(anyInt())).thenAnswer(invocation -> {
             final int sharedUserAppId = invocation.getArgument(0);
diff --git a/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java
index a5adf3f..5c717f6 100644
--- a/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java
@@ -326,16 +326,6 @@
         }
 
         @Override
-        void setKernelTimeZoneOffset(int utcOffsetMillis) {
-            // Do nothing.
-        }
-
-        @Override
-        void syncKernelTimeZoneOffset() {
-            // Do nothing.
-        }
-
-        @Override
         int getCallingUid() {
             return mTestCallingUid;
         }
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/AsyncProcessStartTest.java b/services/tests/mockingservicestests/src/com/android/server/am/AsyncProcessStartTest.java
index 7c5d96e..70ee4f4 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/AsyncProcessStartTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/AsyncProcessStartTest.java
@@ -200,7 +200,7 @@
             return null;
         }).when(thread).bindApplication(
                 any(), any(),
-                any(), any(),
+                any(), any(), anyBoolean(),
                 any(), any(),
                 any(), any(),
                 any(),
@@ -260,7 +260,7 @@
                 /* expectedStartSeq */ 0, /* procAttached */ false);
 
         app.getThread().bindApplication(PACKAGE, appInfo,
-                null, null,
+                null, null, false,
                 null,
                 null,
                 null, null,
diff --git a/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsLegacyRestrictionsTest.java b/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsLegacyRestrictionsTest.java
index 021d01c..1973428 100644
--- a/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsLegacyRestrictionsTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsLegacyRestrictionsTest.java
@@ -57,7 +57,7 @@
     Handler mHandler;
 
     @Mock
-    AppOpsCheckingServiceInterface mLegacyAppOpsService;
+    AppOpsRestrictions.AppOpsRestrictionRemovedListener mRestrictionRemovedListener;
 
     AppOpsRestrictions mAppOpsRestrictions;
 
@@ -75,7 +75,8 @@
             r.run();
             return true;
         });
-        mAppOpsRestrictions = new AppOpsRestrictionsImpl(mContext, mHandler, mLegacyAppOpsService);
+        mAppOpsRestrictions = new AppOpsRestrictionsImpl(mContext, mHandler,
+                mRestrictionRemovedListener);
     }
 
     @After
@@ -271,7 +272,7 @@
     public void testNotify() {
         mAppOpsRestrictions.setUserRestriction(mClientToken, mUserId1, mOpCode1, true, null);
         mAppOpsRestrictions.clearUserRestrictions(mClientToken);
-        Mockito.verify(mLegacyAppOpsService, Mockito.times(1))
-                .notifyWatchersOfChange(mOpCode1, UID_ANY);
+        Mockito.verify(mRestrictionRemovedListener, Mockito.times(1))
+                .onAppOpsRestrictionRemoved(mOpCode1);
     }
 }
diff --git a/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsServiceTest.java
index 44ec26e..24bc57e 100644
--- a/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsServiceTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsServiceTest.java
@@ -23,6 +23,7 @@
 import static android.app.AppOpsManager.OP_READ_SMS;
 import static android.app.AppOpsManager.OP_WIFI_SCAN;
 import static android.app.AppOpsManager.OP_WRITE_SMS;
+import static android.os.UserHandle.getAppId;
 import static android.os.UserHandle.getUserId;
 
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
@@ -39,6 +40,7 @@
 import static org.junit.Assert.assertNotNull;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.ArgumentMatchers.nullable;
@@ -108,6 +110,7 @@
         mAppOpsService = new AppOpsService(mRecentAccessesFile, mStorageFile, mHandler,
                 spy(sContext));
         mAppOpsService.mHistoricalRegistry.systemReady(sContext.getContentResolver());
+        mAppOpsService.prepareInternalCallbacks();
 
         // Always approve all permission checks
         doNothing().when(mAppOpsService.mContext).enforcePermission(anyString(), anyInt(),
@@ -161,6 +164,8 @@
         when(mockPackageManagerInternal.getPackageStateInternal(sMyPackageName))
                 .thenReturn(mockMyPSInternal);
         when(mockPackageManagerInternal.getPackage(sMyPackageName)).thenReturn(mockMyPkg);
+        when(mockPackageManagerInternal.getPackageUid(eq(sMyPackageName), anyLong(),
+                eq(getUserId(mMyUid)))).thenReturn(mMyUid);
         doReturn(mockPackageManagerInternal).when(
                 () -> LocalServices.getService(PackageManagerInternal.class));
 
@@ -184,6 +189,16 @@
         // Mock behavior to use specific Settings.Global.APPOP_HISTORY_PARAMETERS
         doReturn(null).when(() -> Settings.Global.getString(any(ContentResolver.class),
                 eq(Settings.Global.APPOP_HISTORY_PARAMETERS)));
+
+        prepareInstallInvocation(mockPackageManagerInternal);
+    }
+
+    private void prepareInstallInvocation(PackageManagerInternal mockPackageManagerInternal) {
+        when(mockPackageManagerInternal.getPackageList(any())).thenAnswer(invocation -> {
+            PackageManagerInternal.PackageListObserver observer = invocation.getArgument(0);
+            observer.onPackageAdded(sMyPackageName, getAppId(mMyUid));
+            return null;
+        });
     }
 
     @Test
diff --git a/services/tests/mockingservicestests/src/com/android/server/backup/UserBackupManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/backup/UserBackupManagerServiceTest.java
index 3480af6..bed1e97 100644
--- a/services/tests/mockingservicestests/src/com/android/server/backup/UserBackupManagerServiceTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/backup/UserBackupManagerServiceTest.java
@@ -16,35 +16,45 @@
 
 package com.android.server.backup;
 
-import static com.google.common.truth.Truth.assertThat;
-
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
 
+import static com.google.common.truth.Truth.assertThat;
+
 import static org.junit.Assert.fail;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.argThat;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.when;
 
+import android.annotation.UserIdInt;
 import android.app.backup.BackupAgent;
 import android.app.backup.BackupAnnotations.BackupDestination;
 import android.app.backup.BackupRestoreEventLogger.DataTypeResult;
 import android.app.backup.IBackupManagerMonitor;
 import android.app.backup.IBackupObserver;
+import android.app.job.JobInfo;
+import android.app.job.JobScheduler;
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
+import android.os.Handler;
 import android.platform.test.annotations.Presubmit;
+import android.provider.Settings;
+import android.testing.TestableContext;
 import android.util.FeatureFlagUtils;
+import android.util.KeyValueListParser;
 
+import androidx.test.core.app.ApplicationProvider;
 import androidx.test.filters.FlakyTest;
 import androidx.test.runner.AndroidJUnit4;
 
+import com.android.server.backup.internal.BackupHandler;
 import com.android.server.backup.internal.LifecycleOperationStorage;
 import com.android.server.backup.internal.OnTaskFinishedListener;
 import com.android.server.backup.params.BackupParams;
@@ -74,9 +84,9 @@
     private static final String TEST_PACKAGE = "package1";
     private static final String[] TEST_PACKAGES = new String[] { TEST_PACKAGE };
     private static final String TEST_TRANSPORT = "transport";
-    private static final int WORKER_THREAD_TIMEOUT_MILLISECONDS = 1;
+    private static final int WORKER_THREAD_TIMEOUT_MILLISECONDS = 100;
+    @UserIdInt private static final int USER_ID = 0;
 
-    @Mock Context mContext;
     @Mock IBackupManagerMonitor mBackupManagerMonitor;
     @Mock IBackupObserver mBackupObserver;
     @Mock PackageManager mPackageManager;
@@ -85,7 +95,10 @@
     @Mock BackupTransportClient mBackupTransport;
     @Mock BackupEligibilityRules mBackupEligibilityRules;
     @Mock LifecycleOperationStorage mOperationStorage;
+    @Mock JobScheduler mJobScheduler;
+    @Mock BackupHandler mBackupHandler;
 
+    private TestableContext mContext;
     private MockitoSession mSession;
     private TestBackupService mService;
 
@@ -100,10 +113,16 @@
                 .startMocking();
         MockitoAnnotations.initMocks(this);
 
+        mContext = new TestableContext(ApplicationProvider.getApplicationContext());
+        mContext.addMockSystemService(JobScheduler.class, mJobScheduler);
+        mContext.getTestablePermissions().setPermission(android.Manifest.permission.BACKUP,
+                PackageManager.PERMISSION_GRANTED);
+
         mService = new TestBackupService(mContext, mPackageManager, mOperationStorage,
-                mTransportManager);
+                mTransportManager, mBackupHandler);
         mService.setEnabled(true);
         mService.setSetupComplete(true);
+        mService.enqueueFullBackup("com.test.backup.app", /* lastBackedUp= */ 0);
     }
 
     @After
@@ -114,6 +133,38 @@
     }
 
     @Test
+    public void testSetFrameworkSchedulingEnabled_enablesAndSchedulesBackups() throws Exception {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.BACKUP_SCHEDULING_ENABLED, 0);
+
+        mService.setFrameworkSchedulingEnabled(true);
+
+        assertThat(mService.isFrameworkSchedulingEnabled()).isTrue();
+        verify(mJobScheduler).schedule(
+                matchesJobWithId(KeyValueBackupJob.getJobIdForUserId(
+                        USER_ID)));
+        verify(mJobScheduler).schedule(
+                matchesJobWithId(FullBackupJob.getJobIdForUserId(
+                        USER_ID)));
+    }
+
+    private static JobInfo matchesJobWithId(int id) {
+        return argThat((jobInfo) -> jobInfo.getId() == id);
+    }
+
+    @Test
+    public void testSetFrameworkSchedulingEnabled_disablesAndCancelBackups() throws Exception {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.BACKUP_SCHEDULING_ENABLED, 1);
+
+        mService.setFrameworkSchedulingEnabled(false);
+
+        assertThat(mService.isFrameworkSchedulingEnabled()).isFalse();
+        verify(mJobScheduler).cancel(FullBackupJob.getJobIdForUserId(USER_ID));
+        verify(mJobScheduler).cancel(KeyValueBackupJob.getJobIdForUserId(USER_ID));
+    }
+
+    @Test
     public void initializeBackupEnableState_doesntWriteStateToDisk() {
         mService.initializeBackupEnableState();
 
@@ -263,8 +314,20 @@
         private volatile Thread mWorkerThread = null;
 
         TestBackupService(Context context, PackageManager packageManager,
-                LifecycleOperationStorage operationStorage, TransportManager transportManager) {
-            super(context, packageManager, operationStorage, transportManager);
+                LifecycleOperationStorage operationStorage, TransportManager transportManager,
+                BackupHandler backupHandler) {
+            super(context, packageManager, operationStorage, transportManager, backupHandler,
+                    createConstants(context));
+        }
+
+        private static BackupManagerConstants createConstants(Context context) {
+            BackupManagerConstants constants = new BackupManagerConstants(
+                    Handler.getMain(),
+                    context.getContentResolver());
+            // This will trigger constants default values to be set thus preventing invalid values
+            // being used in tests.
+            constants.update(new KeyValueListParser(','));
+            return constants;
         }
 
         @Override
diff --git a/services/tests/mockingservicestests/src/com/android/server/location/altitude/AltitudeConverterTest.java b/services/tests/mockingservicestests/src/com/android/server/location/altitude/AltitudeConverterTest.java
index 0d9aeb5..8d9a6c5 100644
--- a/services/tests/mockingservicestests/src/com/android/server/location/altitude/AltitudeConverterTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/location/altitude/AltitudeConverterTest.java
@@ -49,10 +49,10 @@
 
     @Test
     public void testAddMslAltitudeToLocation_expectedBehavior() throws IOException {
-        // Interpolates between bffffc, 955554, and 000004.
+        // Interpolates in boundary region (bffffc).
         Location location = new Location("");
-        location.setLatitude(-35.246789);
-        location.setLongitude(-44.962683);
+        location.setLatitude(-35.334815);
+        location.setLongitude(-45);
         location.setAltitude(-1);
         location.setVerticalAccuracyMeters(1);
         // Requires data to be loaded from raw assets.
@@ -61,43 +61,27 @@
         assertThat(location.hasMslAltitudeAccuracy()).isFalse();
         // Loads data from raw assets.
         mAltitudeConverter.addMslAltitudeToLocation(mContext, location);
-        assertThat(location.getMslAltitudeMeters()).isWithin(2).of(5.1076);
+        assertThat(location.getMslAltitudeMeters()).isWithin(2).of(5.0622);
         assertThat(location.getMslAltitudeAccuracyMeters()).isGreaterThan(1f);
         assertThat(location.getMslAltitudeAccuracyMeters()).isLessThan(1.1f);
 
-        // Again interpolates between bffffc, 955554, and 000004.
+        // Again interpolates at same location to assert no loading from raw assets. Also checks
+        // behavior w.r.t. invalid vertical accuracy.
         location = new Location("");
-        location.setLatitude(-35.246789);
-        location.setLongitude(-44.962683);
-        location.setAltitude(-1);
-        location.setVerticalAccuracyMeters(1);
-        // Requires no data to be loaded from raw assets.
-        assertThat(mAltitudeConverter.addMslAltitudeToLocation(location)).isTrue();
-        assertThat(location.getMslAltitudeMeters()).isWithin(2).of(5.1076);
-        assertThat(location.getMslAltitudeAccuracyMeters()).isGreaterThan(1f);
-        assertThat(location.getMslAltitudeAccuracyMeters()).isLessThan(1.1f);
-        // Results in same outcome.
-        mAltitudeConverter.addMslAltitudeToLocation(mContext, location);
-        assertThat(location.getMslAltitudeMeters()).isWithin(2).of(5.1076);
-        assertThat(location.getMslAltitudeAccuracyMeters()).isGreaterThan(1f);
-        assertThat(location.getMslAltitudeAccuracyMeters()).isLessThan(1.1f);
-
-        // Interpolate between 955554, 000004, 00000c, and 95554c - no vertical accuracy.
-        location = new Location("");
-        location.setLatitude(-35.176383);
-        location.setLongitude(-44.962683);
+        location.setLatitude(-35.334815);
+        location.setLongitude(-45);
         location.setAltitude(-1);
         location.setVerticalAccuracyMeters(-1); // Invalid vertical accuracy
         // Requires no data to be loaded from raw assets.
         assertThat(mAltitudeConverter.addMslAltitudeToLocation(location)).isTrue();
-        assertThat(location.getMslAltitudeMeters()).isWithin(2).of(5.1919);
+        assertThat(location.getMslAltitudeMeters()).isWithin(2).of(5.0622);
         assertThat(location.hasMslAltitudeAccuracy()).isFalse();
         // Results in same outcome.
         mAltitudeConverter.addMslAltitudeToLocation(mContext, location);
-        assertThat(location.getMslAltitudeMeters()).isWithin(2).of(5.1919);
+        assertThat(location.getMslAltitudeMeters()).isWithin(2).of(5.0622);
         assertThat(location.hasMslAltitudeAccuracy()).isFalse();
 
-        // Interpolates somewhere else more interesting, i.e., Hawaii.
+        // Interpolates out of boundary region, e.g., Hawaii.
         location = new Location("");
         location.setLatitude(19.545519);
         location.setLongitude(-155.998774);
@@ -112,6 +96,29 @@
         assertThat(location.getMslAltitudeMeters()).isWithin(2).of(-19.2359);
         assertThat(location.getMslAltitudeAccuracyMeters()).isGreaterThan(1f);
         assertThat(location.getMslAltitudeAccuracyMeters()).isLessThan(1.1f);
+
+        // The following round out test coverage for boundary regions.
+
+        location = new Location("");
+        location.setLatitude(-35.229154);
+        location.setLongitude(44.925335);
+        location.setAltitude(-1);
+        mAltitudeConverter.addMslAltitudeToLocation(mContext, location);
+        assertThat(location.getMslAltitudeMeters()).isWithin(2).of(-34.1913);
+
+        location = new Location("");
+        location.setLatitude(-35.334815);
+        location.setLongitude(45);
+        location.setAltitude(-1);
+        mAltitudeConverter.addMslAltitudeToLocation(mContext, location);
+        assertThat(location.getMslAltitudeMeters()).isWithin(2).of(-34.2258);
+
+        location = new Location("");
+        location.setLatitude(35.229154);
+        location.setLongitude(-44.925335);
+        location.setAltitude(-1);
+        mAltitudeConverter.addMslAltitudeToLocation(mContext, location);
+        assertThat(location.getMslAltitudeMeters()).isWithin(2).of(-11.0691);
     }
 
     @Test
@@ -122,15 +129,15 @@
 
         location.setLatitude(Double.NaN);
         assertThrows(IllegalArgumentException.class,
-                () -> mAltitudeConverter.addMslAltitudeToLocation(location));
+                () -> mAltitudeConverter.addMslAltitudeToLocation(mContext, location));
 
         location.setLatitude(91);
         assertThrows(IllegalArgumentException.class,
-                () -> mAltitudeConverter.addMslAltitudeToLocation(location));
+                () -> mAltitudeConverter.addMslAltitudeToLocation(mContext, location));
 
         location.setLatitude(-91);
         assertThrows(IllegalArgumentException.class,
-                () -> mAltitudeConverter.addMslAltitudeToLocation(location));
+                () -> mAltitudeConverter.addMslAltitudeToLocation(mContext, location));
     }
 
     @Test
@@ -141,15 +148,15 @@
 
         location.setLongitude(Double.NaN);
         assertThrows(IllegalArgumentException.class,
-                () -> mAltitudeConverter.addMslAltitudeToLocation(location));
+                () -> mAltitudeConverter.addMslAltitudeToLocation(mContext, location));
 
         location.setLongitude(181);
         assertThrows(IllegalArgumentException.class,
-                () -> mAltitudeConverter.addMslAltitudeToLocation(location));
+                () -> mAltitudeConverter.addMslAltitudeToLocation(mContext, location));
 
         location.setLongitude(-181);
         assertThrows(IllegalArgumentException.class,
-                () -> mAltitudeConverter.addMslAltitudeToLocation(location));
+                () -> mAltitudeConverter.addMslAltitudeToLocation(mContext, location));
     }
 
     @Test
@@ -159,14 +166,14 @@
         location.setLongitude(-44.962683);
 
         assertThrows(IllegalArgumentException.class,
-                () -> mAltitudeConverter.addMslAltitudeToLocation(location));
+                () -> mAltitudeConverter.addMslAltitudeToLocation(mContext, location));
 
         location.setAltitude(Double.NaN);
         assertThrows(IllegalArgumentException.class,
-                () -> mAltitudeConverter.addMslAltitudeToLocation(location));
+                () -> mAltitudeConverter.addMslAltitudeToLocation(mContext, location));
 
         location.setAltitude(Double.POSITIVE_INFINITY);
         assertThrows(IllegalArgumentException.class,
-                () -> mAltitudeConverter.addMslAltitudeToLocation(location));
+                () -> mAltitudeConverter.addMslAltitudeToLocation(mContext, location));
     }
 }
diff --git a/services/tests/mockingservicestests/src/com/android/server/location/injector/FakeEmergencyHelper.java b/services/tests/mockingservicestests/src/com/android/server/location/injector/FakeEmergencyHelper.java
index 2cf57da..7ee411b 100644
--- a/services/tests/mockingservicestests/src/com/android/server/location/injector/FakeEmergencyHelper.java
+++ b/services/tests/mockingservicestests/src/com/android/server/location/injector/FakeEmergencyHelper.java
@@ -27,6 +27,7 @@
 
     public void setInEmergency(boolean inEmergency) {
         mInEmergency = inEmergency;
+        dispatchEmergencyStateChanged();
     }
 
     @Override
diff --git a/services/tests/mockingservicestests/src/com/android/server/location/provider/LocationProviderManagerTest.java b/services/tests/mockingservicestests/src/com/android/server/location/provider/LocationProviderManagerTest.java
index 7dc1935..293003d 100644
--- a/services/tests/mockingservicestests/src/com/android/server/location/provider/LocationProviderManagerTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/location/provider/LocationProviderManagerTest.java
@@ -80,8 +80,12 @@
 import android.os.RemoteException;
 import android.os.WorkSource;
 import android.platform.test.annotations.Presubmit;
+import android.provider.DeviceConfig;
+import android.provider.Settings;
 import android.util.Log;
 
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.filters.MediumTest;
 import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
@@ -174,6 +178,8 @@
         doReturn(mResources).when(mContext).getResources();
         doReturn(mPackageManager).when(mContext).getPackageManager();
         doReturn(mPowerManager).when(mContext).getSystemService(PowerManager.class);
+        doReturn(ApplicationProvider.getApplicationContext()).when(
+                mContext).getApplicationContext();
         doReturn(mWakeLock).when(mPowerManager).newWakeLock(anyInt(), anyString());
         doReturn(PackageManager.PERMISSION_DENIED)
                 .when(mContext)
@@ -210,6 +216,8 @@
 
     @After
     public void tearDown() throws Exception {
+        DeviceConfig.resetToDefaults(Settings.RESET_MODE_PACKAGE_DEFAULTS,
+                DeviceConfig.NAMESPACE_LOCATION);
         LocalServices.removeServiceForTest(LocationManagerInternal.class);
 
         // some test failures may leave the fg thread stuck, interrupt until we get out of it
@@ -1339,6 +1347,144 @@
         assertThat(mManager.isVisibleToCaller()).isFalse();
     }
 
+    @MediumTest
+    @Test
+    public void testEnableMsl_expectedBehavior() throws Exception {
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_LOCATION,
+                "enable_location_provider_manager_msl", Boolean.toString(true), false);
+
+        // Create a random location and set provider location to cache necessary MSL assets.
+        Location loc = createLocation(NAME, mRandom);
+        loc.setAltitude(mRandom.nextDouble());
+        loc.setVerticalAccuracyMeters(mRandom.nextFloat());
+        mProvider.setProviderLocation(LocationResult.wrap(loc));
+        Thread.sleep(1000);
+
+        // Register listener and reset provider location to capture.
+        ILocationListener listener = createMockLocationListener();
+        LocationRequest request = new LocationRequest.Builder(0).setWorkSource(WORK_SOURCE).build();
+        mPassive.registerLocationRequest(request, IDENTITY, PERMISSION_FINE, listener);
+        mProvider.setProviderLocation(LocationResult.wrap(loc));
+        ArgumentCaptor<List<Location>> captor = ArgumentCaptor.forClass(List.class);
+        verify(listener).onLocationChanged(captor.capture(), nullable(IRemoteCallback.class));
+
+        // Assert that MSL fields are populated.
+        Location actual = captor.getValue().get(0);
+        assertThat(actual.hasMslAltitude()).isTrue();
+        assertThat(actual.hasMslAltitudeAccuracy()).isTrue();
+    }
+
+    @MediumTest
+    @Test
+    public void testEnableMsl_noVerticalAccuracy() throws Exception {
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_LOCATION,
+                "enable_location_provider_manager_msl", Boolean.toString(true), false);
+
+        // Create a random location and set provider location to cache necessary MSL assets.
+        Location loc = createLocation(NAME, mRandom);
+        loc.setAltitude(mRandom.nextDouble());
+        loc.setVerticalAccuracyMeters(mRandom.nextFloat());
+        mProvider.setProviderLocation(LocationResult.wrap(loc));
+        Thread.sleep(1000);
+
+        // Register listener and reset provider location with no vertical accuracy to capture.
+        ILocationListener listener = createMockLocationListener();
+        LocationRequest request = new LocationRequest.Builder(0).setWorkSource(WORK_SOURCE).build();
+        mPassive.registerLocationRequest(request, IDENTITY, PERMISSION_FINE, listener);
+        loc.removeVerticalAccuracy();
+        mProvider.setProviderLocation(LocationResult.wrap(loc));
+        ArgumentCaptor<List<Location>> captor = ArgumentCaptor.forClass(List.class);
+        verify(listener).onLocationChanged(captor.capture(), nullable(IRemoteCallback.class));
+
+        // Assert that only the MSL accuracy field is populated.
+        Location actual = captor.getValue().get(0);
+        assertThat(actual.hasMslAltitude()).isTrue();
+        assertThat(actual.hasMslAltitudeAccuracy()).isFalse();
+    }
+
+    @MediumTest
+    @Test
+    public void testEnableMsl_noAltitude() throws Exception {
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_LOCATION,
+                "enable_location_provider_manager_msl", Boolean.toString(true), false);
+
+        // Create a random location and set provider location to cache necessary MSL assets.
+        Location loc = createLocation(NAME, mRandom);
+        loc.setAltitude(mRandom.nextDouble());
+        loc.setVerticalAccuracyMeters(mRandom.nextFloat());
+        mProvider.setProviderLocation(LocationResult.wrap(loc));
+        Thread.sleep(1000);
+
+        // Register listener and reset provider location with no altitude to capture.
+        ILocationListener listener = createMockLocationListener();
+        LocationRequest request = new LocationRequest.Builder(0).setWorkSource(WORK_SOURCE).build();
+        mPassive.registerLocationRequest(request, IDENTITY, PERMISSION_FINE, listener);
+        loc.removeAltitude();
+        mProvider.setProviderLocation(LocationResult.wrap(loc));
+        ArgumentCaptor<List<Location>> captor = ArgumentCaptor.forClass(List.class);
+        verify(listener).onLocationChanged(captor.capture(), nullable(IRemoteCallback.class));
+
+        // Assert that no MSL fields are populated.
+        Location actual = captor.getValue().get(0);
+        assertThat(actual.hasMslAltitude()).isFalse();
+        assertThat(actual.hasMslAltitudeAccuracy()).isFalse();
+    }
+
+    @MediumTest
+    @Test
+    public void testEnableMsl_invalidAltitude() throws Exception {
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_LOCATION,
+                "enable_location_provider_manager_msl", Boolean.toString(true), false);
+
+        // Create a random location and set provider location to cache necessary MSL assets.
+        Location loc = createLocation(NAME, mRandom);
+        loc.setAltitude(mRandom.nextDouble());
+        loc.setVerticalAccuracyMeters(mRandom.nextFloat());
+        mProvider.setProviderLocation(LocationResult.wrap(loc));
+        Thread.sleep(1000);
+
+        // Register listener and reset provider location with invalid altitude to capture.
+        ILocationListener listener = createMockLocationListener();
+        LocationRequest request = new LocationRequest.Builder(0).setWorkSource(WORK_SOURCE).build();
+        mPassive.registerLocationRequest(request, IDENTITY, PERMISSION_FINE, listener);
+        loc.setAltitude(Double.POSITIVE_INFINITY);
+        mProvider.setProviderLocation(LocationResult.wrap(loc));
+        ArgumentCaptor<List<Location>> captor = ArgumentCaptor.forClass(List.class);
+        verify(listener).onLocationChanged(captor.capture(), nullable(IRemoteCallback.class));
+
+        // Assert that no MSL fields are populated.
+        Location actual = captor.getValue().get(0);
+        assertThat(actual.hasMslAltitude()).isFalse();
+        assertThat(actual.hasMslAltitudeAccuracy()).isFalse();
+    }
+
+    @MediumTest
+    @Test
+    public void testDisableMsl_expectedBehavior() throws Exception {
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_LOCATION,
+                "enable_location_provider_manager_msl", Boolean.toString(false), false);
+
+        // Create a random location and set provider location to cache necessary MSL assets.
+        Location loc = createLocation(NAME, mRandom);
+        loc.setAltitude(mRandom.nextDouble());
+        loc.setVerticalAccuracyMeters(mRandom.nextFloat());
+        mProvider.setProviderLocation(LocationResult.wrap(loc));
+        Thread.sleep(1000);
+
+        // Register listener and reset provider location to capture.
+        ILocationListener listener = createMockLocationListener();
+        LocationRequest request = new LocationRequest.Builder(0).setWorkSource(WORK_SOURCE).build();
+        mPassive.registerLocationRequest(request, IDENTITY, PERMISSION_FINE, listener);
+        mProvider.setProviderLocation(LocationResult.wrap(loc));
+        ArgumentCaptor<List<Location>> captor = ArgumentCaptor.forClass(List.class);
+        verify(listener).onLocationChanged(captor.capture(), nullable(IRemoteCallback.class));
+
+        // Assert that no MSL fields are populated.
+        Location actual = captor.getValue().get(0);
+        assertThat(actual.hasMslAltitude()).isFalse();
+        assertThat(actual.hasMslAltitudeAccuracy()).isFalse();
+    }
+
     private ILocationListener createMockLocationListener() {
         return spy(new ILocationListener.Stub() {
             @Override
diff --git a/services/tests/servicestests/Android.bp b/services/tests/servicestests/Android.bp
index cfeaf0b..e2c38ba 100644
--- a/services/tests/servicestests/Android.bp
+++ b/services/tests/servicestests/Android.bp
@@ -36,6 +36,7 @@
         "services.net",
         "services.people",
         "services.usage",
+        "service-permission.stubs.system_server",
         "guava",
         "guava-android-testlib",
         "androidx.test.core",
@@ -50,7 +51,7 @@
         "ShortcutManagerTestUtils",
         "truth-prebuilt",
         "testables",
-        "ub-uiautomator",
+        "androidx.test.uiautomator_uiautomator",
         "platformprotosnano",
         "framework-protos",
         "hamcrest-library",
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/TEST_MAPPING b/services/tests/servicestests/src/com/android/server/accessibility/TEST_MAPPING
new file mode 100644
index 0000000..1c67399
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/accessibility/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "imports": [
+    {
+      "path": "frameworks/base/services/accessibility/TEST_MAPPING"
+    }
+  ]
+}
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationManagerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationManagerTest.java
index b0fd649..c98de7c 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationManagerTest.java
@@ -66,6 +66,7 @@
 import com.android.server.statusbar.StatusBarManagerInternal;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.Mockito;
@@ -307,6 +308,7 @@
                 MagnificationScaleProvider.MAX_SCALE);
     }
 
+    @Ignore("b/278816260: We could refer to b/182561174#comment4 for solution.")
     @Test
     public void logTrackingTypingFocus_processScroll_logDuration() {
         WindowMagnificationManager spyWindowMagnificationManager = spy(mWindowMagnificationManager);
diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java b/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java
index 327a80e..99eb047 100644
--- a/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java
@@ -52,7 +52,6 @@
 import android.provider.DeviceConfig;
 import android.provider.Settings;
 import android.server.wm.settings.SettingsSession;
-import android.support.test.uiautomator.UiDevice;
 import android.test.suitebuilder.annotation.LargeTest;
 import android.text.TextUtils;
 import android.util.KeyValueListParser;
@@ -61,6 +60,7 @@
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.FlakyTest;
+import androidx.test.uiautomator.UiDevice;
 
 import org.junit.Before;
 import org.junit.Ignore;
diff --git a/services/tests/servicestests/src/com/android/server/appop/AppOpsNotedWatcherTest.java b/services/tests/servicestests/src/com/android/server/appop/AppOpsNotedWatcherTest.java
index 47fdcb6..b5229d8 100644
--- a/services/tests/servicestests/src/com/android/server/appop/AppOpsNotedWatcherTest.java
+++ b/services/tests/servicestests/src/com/android/server/appop/AppOpsNotedWatcherTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.server.appops;
+package com.android.server.appop;
 
 import static org.mockito.Mockito.eq;
 import static org.mockito.Mockito.inOrder;
diff --git a/services/tests/servicestests/src/com/android/server/attention/AttentionManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/attention/AttentionManagerServiceTest.java
index 897b91e..3475c8f 100644
--- a/services/tests/servicestests/src/com/android/server/attention/AttentionManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/attention/AttentionManagerServiceTest.java
@@ -71,6 +71,7 @@
 @SmallTest
 public class AttentionManagerServiceTest {
     private static final double PROXIMITY_SUCCESS_STATE = 1.0;
+
     private AttentionManagerService mSpyAttentionManager;
     private final int mTimeout = 1000;
     private final Object mLock = new Object();
@@ -125,8 +126,19 @@
     }
 
     @Test
+    public void testRegisterProximityUpdates_returnFalseWhenProximityDisabled() {
+        mSpyAttentionManager.mIsServiceEnabled = true;
+        mSpyAttentionManager.mIsProximityEnabled = false;
+
+        assertThat(mSpyAttentionManager.onStartProximityUpdates(
+                mMockProximityUpdateCallbackInternal))
+                .isFalse();
+    }
+
+    @Test
     public void testRegisterProximityUpdates_returnFalseWhenServiceUnavailable() {
         mSpyAttentionManager.mIsServiceEnabled = true;
+        mSpyAttentionManager.mIsProximityEnabled = true;
         doReturn(false).when(mSpyAttentionManager).isServiceAvailable();
 
         assertThat(mSpyAttentionManager.onStartProximityUpdates(
@@ -138,6 +150,7 @@
     public void testRegisterProximityUpdates_returnFalseWhenPowerManagerNotInteract()
             throws RemoteException {
         mSpyAttentionManager.mIsServiceEnabled = true;
+        mSpyAttentionManager.mIsProximityEnabled = true;
         doReturn(true).when(mSpyAttentionManager).isServiceAvailable();
         doReturn(false).when(mMockIPowerManager).isInteractive();
 
@@ -149,6 +162,7 @@
     @Test
     public void testRegisterProximityUpdates_callOnSuccess() throws RemoteException {
         mSpyAttentionManager.mIsServiceEnabled = true;
+        mSpyAttentionManager.mIsProximityEnabled = true;
         doReturn(true).when(mSpyAttentionManager).isServiceAvailable();
         doReturn(true).when(mMockIPowerManager).isInteractive();
 
@@ -162,6 +176,7 @@
     @Test
     public void testRegisterProximityUpdates_callOnSuccessTwiceInARow() throws RemoteException {
         mSpyAttentionManager.mIsServiceEnabled = true;
+        mSpyAttentionManager.mIsProximityEnabled = true;
         doReturn(true).when(mSpyAttentionManager).isServiceAvailable();
         doReturn(true).when(mMockIPowerManager).isInteractive();
 
@@ -188,6 +203,7 @@
     public void testUnregisterProximityUpdates_noCrashWhenCallbackMismatched()
             throws RemoteException {
         mSpyAttentionManager.mIsServiceEnabled = true;
+        mSpyAttentionManager.mIsProximityEnabled = true;
         doReturn(true).when(mSpyAttentionManager).isServiceAvailable();
         doReturn(true).when(mMockIPowerManager).isInteractive();
         mSpyAttentionManager.onStartProximityUpdates(mMockProximityUpdateCallbackInternal);
@@ -209,6 +225,7 @@
     public void testUnregisterProximityUpdates_cancelRegistrationWhenMatched()
             throws RemoteException {
         mSpyAttentionManager.mIsServiceEnabled = true;
+        mSpyAttentionManager.mIsProximityEnabled = true;
         doReturn(true).when(mSpyAttentionManager).isServiceAvailable();
         doReturn(true).when(mMockIPowerManager).isInteractive();
         mSpyAttentionManager.onStartProximityUpdates(mMockProximityUpdateCallbackInternal);
@@ -221,6 +238,7 @@
     public void testUnregisterProximityUpdates_noCrashWhenTwiceInARow() throws RemoteException {
         // Attention Service registers proximity updates.
         mSpyAttentionManager.mIsServiceEnabled = true;
+        mSpyAttentionManager.mIsProximityEnabled = true;
         doReturn(true).when(mSpyAttentionManager).isServiceAvailable();
         doReturn(true).when(mMockIPowerManager).isInteractive();
         mSpyAttentionManager.onStartProximityUpdates(mMockProximityUpdateCallbackInternal);
@@ -248,6 +266,7 @@
     @Test
     public void testCheckAttention_returnFalseWhenPowerManagerNotInteract() throws RemoteException {
         mSpyAttentionManager.mIsServiceEnabled = true;
+        mSpyAttentionManager.mIsProximityEnabled = true;
         doReturn(false).when(mMockIPowerManager).isInteractive();
         AttentionCallbackInternal callback = Mockito.mock(AttentionCallbackInternal.class);
         assertThat(mSpyAttentionManager.checkAttention(mTimeout, callback)).isFalse();
@@ -256,6 +275,7 @@
     @Test
     public void testCheckAttention_callOnSuccess() throws RemoteException {
         mSpyAttentionManager.mIsServiceEnabled = true;
+        mSpyAttentionManager.mIsProximityEnabled = true;
         doReturn(true).when(mSpyAttentionManager).isServiceAvailable();
         doReturn(true).when(mMockIPowerManager).isInteractive();
         mSpyAttentionManager.mCurrentAttentionCheck = null;
diff --git a/services/tests/servicestests/src/com/android/server/net/NetworkManagementServiceTest.java b/services/tests/servicestests/src/com/android/server/net/NetworkManagementServiceTest.java
index d9cd77d..af144cf 100644
--- a/services/tests/servicestests/src/com/android/server/net/NetworkManagementServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/net/NetworkManagementServiceTest.java
@@ -37,7 +37,6 @@
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 
 import android.annotation.NonNull;
-import android.content.AttributionSource;
 import android.content.Context;
 import android.net.ConnectivityManager;
 import android.net.INetd;
@@ -50,7 +49,7 @@
 import android.os.PermissionEnforcer;
 import android.os.Process;
 import android.os.RemoteException;
-import android.permission.PermissionCheckerManager;
+import android.os.test.FakePermissionEnforcer;
 import android.platform.test.annotations.Presubmit;
 import android.test.suitebuilder.annotation.SmallTest;
 import android.util.ArrayMap;
@@ -90,7 +89,6 @@
     private ArgumentCaptor<INetdUnsolicitedEventListener> mUnsolListenerCaptor;
 
     private final MockDependencies mDeps = new MockDependencies();
-    private final MockPermissionEnforcer mPermissionEnforcer = new MockPermissionEnforcer();
 
     private final class MockDependencies extends NetworkManagementService.Dependencies {
         @Override
@@ -118,24 +116,6 @@
         }
     }
 
-    private static final class MockPermissionEnforcer extends PermissionEnforcer {
-        @Override
-        protected int checkPermission(@NonNull String permission,
-                @NonNull AttributionSource source) {
-            String[] granted = new String [] {
-                android.Manifest.permission.NETWORK_SETTINGS,
-                android.Manifest.permission.OBSERVE_NETWORK_POLICY,
-                android.Manifest.permission.SHUTDOWN
-            };
-            for (String p : granted) {
-                if (p.equals(permission)) {
-                    return PermissionCheckerManager.PERMISSION_GRANTED;
-                }
-            }
-            return PermissionCheckerManager.PERMISSION_HARD_DENIED;
-        }
-    }
-
     @Before
     public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
@@ -145,12 +125,15 @@
                 eq(ConnectivityManager.class));
         doReturn(mCm).when(mContext).getSystemService(eq(Context.CONNECTIVITY_SERVICE));
         // The AIDL stub will use PermissionEnforcer to check permission from the caller.
-        // Mock the service. See MockPermissionEnforcer above.
+        // Mock the service and grant the expected permissions.
+        FakePermissionEnforcer permissionEnforcer = new FakePermissionEnforcer();
+        permissionEnforcer.grant(android.Manifest.permission.NETWORK_SETTINGS);
+        permissionEnforcer.grant(android.Manifest.permission.OBSERVE_NETWORK_POLICY);
+        permissionEnforcer.grant(android.Manifest.permission.SHUTDOWN);
         doReturn(Context.PERMISSION_ENFORCER_SERVICE).when(mContext).getSystemServiceName(
                 eq(PermissionEnforcer.class));
-        doReturn(mPermissionEnforcer).when(mContext).getSystemService(
+        doReturn(permissionEnforcer).when(mContext).getSystemService(
                 eq(Context.PERMISSION_ENFORCER_SERVICE));
-
         // Start the service and wait until it connects to our socket.
         mNMService = NetworkManagementService.create(mContext, mDeps);
     }
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java
index 4af0323..4e1196f 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java
@@ -31,11 +31,11 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.platform.test.annotations.Postsubmit;
-import android.support.test.uiautomator.UiDevice;
 import android.util.AtomicFile;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.runner.AndroidJUnit4;
+import androidx.test.uiautomator.UiDevice;
 
 import com.android.server.LocalServices;
 
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserSystemPackageInstallerTest.java b/services/tests/servicestests/src/com/android/server/pm/UserSystemPackageInstallerTest.java
index cca924e..07d4065e 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserSystemPackageInstallerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserSystemPackageInstallerTest.java
@@ -44,7 +44,6 @@
 import android.os.SystemProperties;
 import android.os.UserManager;
 import android.platform.test.annotations.Postsubmit;
-import android.support.test.uiautomator.UiDevice;
 import android.util.ArrayMap;
 import android.util.ArraySet;
 import android.util.Log;
@@ -52,6 +51,7 @@
 import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.MediumTest;
 import androidx.test.runner.AndroidJUnit4;
+import androidx.test.uiautomator.UiDevice;
 
 import com.android.server.LocalServices;
 import com.android.server.SystemConfig;
diff --git a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java
index 21a11bc..219e1f3 100644
--- a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java
@@ -78,6 +78,7 @@
 import android.service.dreams.DreamManagerInternal;
 import android.sysprop.PowerProperties;
 import android.test.mock.MockContentResolver;
+import android.util.IntArray;
 import android.view.Display;
 import android.view.DisplayInfo;
 
@@ -2350,6 +2351,31 @@
         verify(mLowPowerStandbyControllerMock).setActiveDuringMaintenance(false);
     }
 
+    @Test
+    public void testPowerGroupInitialization_multipleDisplayGroups() {
+        IntArray displayGroupIds = IntArray.wrap(new int[]{1, 2, 3});
+        when(mDisplayManagerInternalMock.getDisplayGroupIds()).thenReturn(displayGroupIds);
+
+        createService();
+        startSystem();
+
+        // Power group for DEFAULT_DISPLAY_GROUP is added by default.
+        assertThat(mService.getPowerGroupSize()).isEqualTo(4);
+    }
+
+    @Test
+    public void testPowerGroupInitialization_multipleDisplayGroupsWithDefaultGroup() {
+        IntArray displayGroupIds = IntArray.wrap(new int[]{Display.DEFAULT_DISPLAY_GROUP, 1, 2, 3});
+        when(mDisplayManagerInternalMock.getDisplayGroupIds()).thenReturn(displayGroupIds);
+
+        createService();
+        startSystem();
+
+        // Power group for DEFAULT_DISPLAY_GROUP is added once even if getDisplayGroupIds() return
+        // an array including DEFAULT_DESIPLAY_GROUP.
+        assertThat(mService.getPowerGroupSize()).isEqualTo(4);
+    }
+
     private WakeLock acquireWakeLock(String tag, int flags) {
         IBinder token = new Binder();
         String packageName = "pkg.name";
diff --git a/services/tests/servicestests/src/com/android/server/power/ShutdownCheckPointsTest.java b/services/tests/servicestests/src/com/android/server/power/ShutdownCheckPointsTest.java
index 2bde51b..fe6cc28 100644
--- a/services/tests/servicestests/src/com/android/server/power/ShutdownCheckPointsTest.java
+++ b/services/tests/servicestests/src/com/android/server/power/ShutdownCheckPointsTest.java
@@ -112,7 +112,7 @@
         mTestInjector.setCurrentTime(1000);
         // Matching pid in getRunningAppProcesses
         mInstance.recordCheckPointInternal(1, "reason1");
-        // Mising pid in getRunningAppProcesses
+        // Missing pid in getRunningAppProcesses
         mInstance.recordCheckPointInternal(2, "reason2");
 
         assertEquals(
diff --git a/services/tests/servicestests/src/com/android/server/power/stats/BatteryStatsUserLifecycleTests.java b/services/tests/servicestests/src/com/android/server/power/stats/BatteryStatsUserLifecycleTests.java
index b27ba88..face849 100644
--- a/services/tests/servicestests/src/com/android/server/power/stats/BatteryStatsUserLifecycleTests.java
+++ b/services/tests/servicestests/src/com/android/server/power/stats/BatteryStatsUserLifecycleTests.java
@@ -28,12 +28,12 @@
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.os.UserManager;
-import android.support.test.uiautomator.UiDevice;
 import android.util.ArraySet;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.LargeTest;
 import androidx.test.runner.AndroidJUnit4;
+import androidx.test.uiautomator.UiDevice;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/services/tests/servicestests/src/com/android/server/power/stats/BstatsCpuTimesValidationTest.java b/services/tests/servicestests/src/com/android/server/power/stats/BstatsCpuTimesValidationTest.java
index 25a5b29..ccace40 100644
--- a/services/tests/servicestests/src/com/android/server/power/stats/BstatsCpuTimesValidationTest.java
+++ b/services/tests/servicestests/src/com/android/server/power/stats/BstatsCpuTimesValidationTest.java
@@ -47,7 +47,6 @@
 import android.os.Process;
 import android.os.SystemClock;
 import android.provider.Settings;
-import android.support.test.uiautomator.UiDevice;
 import android.util.ArrayMap;
 import android.util.DebugUtils;
 import android.util.KeyValueListParser;
@@ -56,6 +55,7 @@
 import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.LargeTest;
 import androidx.test.runner.AndroidJUnit4;
+import androidx.test.uiautomator.UiDevice;
 
 import com.android.frameworks.coretests.aidl.ICmdCallback;
 import com.android.frameworks.coretests.aidl.ICmdReceiver;
diff --git a/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java b/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java
index aad373f..aca96ad 100644
--- a/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java
+++ b/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java
@@ -445,14 +445,14 @@
                         + "    <library \n"
                         + "        name=\"foo\"\n"
                         + "        file=\"" + mFooJar + "\"\n"
-                        + "        on-bootclasspath-before=\"A\"\n"
+                        + "        on-bootclasspath-before=\"Q\"\n"
                         + "        on-bootclasspath-since=\"W\"\n"
                         + "     />\n\n"
                         + " </permissions>";
         parseSharedLibraries(contents);
         assertFooIsOnlySharedLibrary();
         SystemConfig.SharedLibraryEntry entry = mSysConfig.getSharedLibraries().get("foo");
-        assertThat(entry.onBootclasspathBefore).isEqualTo("A");
+        assertThat(entry.onBootclasspathBefore).isEqualTo("Q");
         assertThat(entry.onBootclasspathSince).isEqualTo("W");
     }
 
diff --git a/services/tests/servicestests/src/com/android/server/timezonedetector/location/LocationTimeZoneProviderControllerTest.java b/services/tests/servicestests/src/com/android/server/timezonedetector/location/LocationTimeZoneProviderControllerTest.java
index aeb8ec8..7ff015d 100644
--- a/services/tests/servicestests/src/com/android/server/timezonedetector/location/LocationTimeZoneProviderControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/timezonedetector/location/LocationTimeZoneProviderControllerTest.java
@@ -88,18 +88,21 @@
     private static final long ARBITRARY_TIME_MILLIS = 12345L;
 
     private static final TimeZoneProviderEvent USER1_SUCCESS_LOCATION_TIME_ZONE_EVENT1 =
-            createSuggestionEvent(asList("Europe/London"));
+            createSuggestionEvent(ARBITRARY_TIME_MILLIS, asList("Europe/London"));
     private static final TimeZoneProviderEvent USER1_SUCCESS_LOCATION_TIME_ZONE_EVENT2 =
-            createSuggestionEvent(asList("Europe/Paris"));
+            createSuggestionEvent(ARBITRARY_TIME_MILLIS + 1, asList("Europe/Paris"));
     private static final TimeZoneProviderStatus UNCERTAIN_PROVIDER_STATUS =
             new TimeZoneProviderStatus.Builder()
                     .setLocationDetectionDependencyStatus(DEPENDENCY_STATUS_TEMPORARILY_UNAVAILABLE)
                     .setConnectivityDependencyStatus(DEPENDENCY_STATUS_OK)
                     .setTimeZoneResolutionOperationStatus(OPERATION_STATUS_UNKNOWN)
                     .build();
-    private static final TimeZoneProviderEvent USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT =
+    private static final TimeZoneProviderEvent USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT1 =
             TimeZoneProviderEvent.createUncertainEvent(
                     ARBITRARY_TIME_MILLIS, UNCERTAIN_PROVIDER_STATUS);
+    private static final TimeZoneProviderEvent USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT2 =
+            TimeZoneProviderEvent.createUncertainEvent(
+                    ARBITRARY_TIME_MILLIS + 1, UNCERTAIN_PROVIDER_STATUS);
     private static final TimeZoneProviderEvent USER1_PERM_FAILURE_LOCATION_TIME_ZONE_EVENT =
             TimeZoneProviderEvent.createPermanentFailureEvent(ARBITRARY_TIME_MILLIS, "Test");
 
@@ -328,7 +331,7 @@
 
         // Finally, the uncertainty timeout should cause the controller to make an uncertain
         // suggestion.
-        mTestThreadingDomain.executeNext();
+        mTestThreadingDomain.executeAll();
 
         assertControllerState(controller, STATE_UNCERTAIN);
         mTestPrimaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
@@ -649,7 +652,7 @@
         // cause a suggestion to be made straight away, but the uncertainty timeout should be
         // started and the secondary should be started.
         mTestPrimaryLocationTimeZoneProvider.simulateTimeZoneProviderEvent(
-                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT);
+                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT1);
 
         assertControllerState(controller, STATE_CERTAIN);
         mTestPrimaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
@@ -680,7 +683,7 @@
         // cause a suggestion to be made straight away, but the uncertainty timeout should be
         // started. Both providers are now started, with no initialization timeout set.
         mTestSecondaryLocationTimeZoneProvider.simulateTimeZoneProviderEvent(
-                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT);
+                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT1);
 
         assertControllerState(controller, STATE_CERTAIN);
         mTestPrimaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
@@ -693,7 +696,7 @@
 
         // Simulate time passing. This means the uncertainty timeout should fire and the uncertain
         // suggestion should be made.
-        mTestThreadingDomain.executeNext();
+        mTestThreadingDomain.executeAll();
 
         assertControllerState(controller, STATE_UNCERTAIN);
         mTestPrimaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
@@ -702,7 +705,7 @@
                 PROVIDER_STATE_STARTED_UNCERTAIN, USER1_CONFIG_GEO_DETECTION_ENABLED);
         mTestMetricsLogger.assertStateChangesAndCommit(STATE_UNCERTAIN);
         mTestCallback.assertEventWithUncertainSuggestionReportedAndCommit(
-                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT);
+                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT1);
         assertFalse(controller.isUncertaintyTimeoutSet());
     }
 
@@ -744,7 +747,7 @@
         // Uncertainty should not cause a suggestion to be made straight away, but the uncertainty
         // timeout should be started and the secondary should be started.
         mTestPrimaryLocationTimeZoneProvider.simulateTimeZoneProviderEvent(
-                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT);
+                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT1);
 
         assertControllerState(controller, STATE_CERTAIN);
         mTestPrimaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
@@ -772,6 +775,147 @@
     }
 
     @Test
+    public void enabled_uncertaintyDuringUncertaintyTimeoutTriggersNoSuggestion() {
+        LocationTimeZoneProviderController controller = new LocationTimeZoneProviderController(
+                mTestThreadingDomain, mTestMetricsLogger, mTestPrimaryLocationTimeZoneProvider,
+                mTestSecondaryLocationTimeZoneProvider, false /* recordStateChanges */);
+        TestEnvironment testEnvironment = new TestEnvironment(
+                mTestThreadingDomain, controller, USER1_CONFIG_GEO_DETECTION_ENABLED);
+
+        // Initialize and check initial state.
+        controller.initialize(testEnvironment, mTestCallback);
+
+        assertControllerState(controller, STATE_INITIALIZING);
+        mTestPrimaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
+                PROVIDER_STATE_STARTED_INITIALIZING, USER1_CONFIG_GEO_DETECTION_ENABLED);
+        mTestSecondaryLocationTimeZoneProvider.assertIsStoppedAndCommit();
+        mTestMetricsLogger.assertStateChangesAndCommit(
+                STATE_PROVIDERS_INITIALIZING, STATE_STOPPED, STATE_INITIALIZING);
+        mTestCallback.assertEventWithNoSuggestionReportedAndCommit(
+                DETECTION_ALGORITHM_STATUS_RUNNING);
+        assertFalse(controller.isUncertaintyTimeoutSet());
+
+        // Simulate a location event being received from the primary provider. This should cause a
+        // suggestion to be made.
+        mTestPrimaryLocationTimeZoneProvider.simulateTimeZoneProviderEvent(
+                USER1_SUCCESS_LOCATION_TIME_ZONE_EVENT1);
+
+        assertControllerState(controller, STATE_CERTAIN);
+        mTestPrimaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
+                PROVIDER_STATE_STARTED_CERTAIN, USER1_CONFIG_GEO_DETECTION_ENABLED);
+        mTestSecondaryLocationTimeZoneProvider.assertIsStoppedAndCommit();
+        mTestMetricsLogger.assertStateChangesAndCommit(STATE_CERTAIN);
+        mTestCallback.assertEventWithCertainSuggestionReportedAndCommit(
+                USER1_SUCCESS_LOCATION_TIME_ZONE_EVENT1);
+        assertFalse(controller.isUncertaintyTimeoutSet());
+
+        // Uncertainty should not cause a suggestion to be made straight away, but the uncertainty
+        // timeout should be started and the secondary should be started.
+        mTestPrimaryLocationTimeZoneProvider.simulateTimeZoneProviderEvent(
+                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT1);
+
+        assertControllerState(controller, STATE_CERTAIN);
+        mTestPrimaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
+                PROVIDER_STATE_STARTED_UNCERTAIN, USER1_CONFIG_GEO_DETECTION_ENABLED);
+        mTestSecondaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
+                PROVIDER_STATE_STARTED_INITIALIZING, USER1_CONFIG_GEO_DETECTION_ENABLED);
+        mTestMetricsLogger.assertStateChangesAndCommit();
+        mTestCallback.assertNoEventReported();
+        assertUncertaintyTimeoutSet(testEnvironment, controller);
+
+        // Another uncertain suggestion from the primary during the uncertainty timeout should have
+        // no effect.
+        mTestPrimaryLocationTimeZoneProvider.simulateTimeZoneProviderEvent(
+                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT1);
+        assertControllerState(controller, STATE_CERTAIN);
+        mTestPrimaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
+                PROVIDER_STATE_STARTED_UNCERTAIN, USER1_CONFIG_GEO_DETECTION_ENABLED);
+        mTestSecondaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
+                PROVIDER_STATE_STARTED_INITIALIZING, USER1_CONFIG_GEO_DETECTION_ENABLED);
+        mTestMetricsLogger.assertStateChangesAndCommit();
+        mTestCallback.assertNoEventReported();
+        assertUncertaintyTimeoutSet(testEnvironment, controller);
+    }
+
+    @Test
+    public void enabled_uncertaintyAfterUncertaintyTimeoutTriggersImmediateSuggestion() {
+        LocationTimeZoneProviderController controller = new LocationTimeZoneProviderController(
+                mTestThreadingDomain, mTestMetricsLogger, mTestPrimaryLocationTimeZoneProvider,
+                mTestSecondaryLocationTimeZoneProvider, false /* recordStateChanges */);
+        TestEnvironment testEnvironment = new TestEnvironment(
+                mTestThreadingDomain, controller, USER1_CONFIG_GEO_DETECTION_ENABLED);
+
+        // Initialize and check initial state.
+        controller.initialize(testEnvironment, mTestCallback);
+
+        assertControllerState(controller, STATE_INITIALIZING);
+        mTestPrimaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
+                PROVIDER_STATE_STARTED_INITIALIZING, USER1_CONFIG_GEO_DETECTION_ENABLED);
+        mTestSecondaryLocationTimeZoneProvider.assertIsStoppedAndCommit();
+        mTestMetricsLogger.assertStateChangesAndCommit(
+                STATE_PROVIDERS_INITIALIZING, STATE_STOPPED, STATE_INITIALIZING);
+        mTestCallback.assertEventWithNoSuggestionReportedAndCommit(
+                DETECTION_ALGORITHM_STATUS_RUNNING);
+        assertFalse(controller.isUncertaintyTimeoutSet());
+
+        // Simulate a location event being received from the primary provider. This should cause a
+        // suggestion to be made.
+        mTestPrimaryLocationTimeZoneProvider.simulateTimeZoneProviderEvent(
+                USER1_SUCCESS_LOCATION_TIME_ZONE_EVENT1);
+
+        assertControllerState(controller, STATE_CERTAIN);
+        mTestPrimaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
+                PROVIDER_STATE_STARTED_CERTAIN, USER1_CONFIG_GEO_DETECTION_ENABLED);
+        mTestSecondaryLocationTimeZoneProvider.assertIsStoppedAndCommit();
+        mTestMetricsLogger.assertStateChangesAndCommit(STATE_CERTAIN);
+        mTestCallback.assertEventWithCertainSuggestionReportedAndCommit(
+                USER1_SUCCESS_LOCATION_TIME_ZONE_EVENT1);
+        assertFalse(controller.isUncertaintyTimeoutSet());
+
+        // Uncertainty should not cause a suggestion to be made straight away, but the uncertainty
+        // timeout should be started and the secondary should be started.
+        mTestPrimaryLocationTimeZoneProvider.simulateTimeZoneProviderEvent(
+                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT1);
+
+        assertControllerState(controller, STATE_CERTAIN);
+        mTestPrimaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
+                PROVIDER_STATE_STARTED_UNCERTAIN, USER1_CONFIG_GEO_DETECTION_ENABLED);
+        mTestSecondaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
+                PROVIDER_STATE_STARTED_INITIALIZING, USER1_CONFIG_GEO_DETECTION_ENABLED);
+        mTestMetricsLogger.assertStateChangesAndCommit();
+        mTestCallback.assertNoEventReported();
+        assertUncertaintyTimeoutSet(testEnvironment, controller);
+
+        // Simulate time passing. This means the uncertainty timeout should fire and the uncertain
+        // suggestion should be made.
+        mTestThreadingDomain.executeAll();
+
+        assertControllerState(controller, STATE_UNCERTAIN);
+        mTestPrimaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
+                PROVIDER_STATE_STARTED_UNCERTAIN, USER1_CONFIG_GEO_DETECTION_ENABLED);
+        mTestSecondaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
+                PROVIDER_STATE_STARTED_UNCERTAIN, USER1_CONFIG_GEO_DETECTION_ENABLED);
+        mTestMetricsLogger.assertStateChangesAndCommit(STATE_UNCERTAIN);
+        mTestCallback.assertEventWithUncertainSuggestionReportedAndCommit(
+                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT1);
+        assertFalse(controller.isUncertaintyTimeoutSet());
+
+        // Another uncertain suggestion from the primary should cause an immediate suggestion.
+        mTestPrimaryLocationTimeZoneProvider.simulateTimeZoneProviderEvent(
+                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT2);
+
+        assertControllerState(controller, STATE_UNCERTAIN);
+        mTestPrimaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
+                PROVIDER_STATE_STARTED_UNCERTAIN, USER1_CONFIG_GEO_DETECTION_ENABLED);
+        mTestSecondaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
+                PROVIDER_STATE_STARTED_UNCERTAIN, USER1_CONFIG_GEO_DETECTION_ENABLED);
+        mTestMetricsLogger.assertStateChangesAndCommit();
+        mTestCallback.assertEventWithUncertainSuggestionReportedAndCommit(
+                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT2);
+        assertFalse(controller.isUncertaintyTimeoutSet());
+    }
+
+    @Test
     public void configChanges_enableAndDisableWithNoPreviousSuggestion() {
         LocationTimeZoneProviderController controller = new LocationTimeZoneProviderController(
                 mTestThreadingDomain, mTestMetricsLogger, mTestPrimaryLocationTimeZoneProvider,
@@ -965,7 +1109,7 @@
 
         // Simulate uncertainty from the secondary.
         mTestSecondaryLocationTimeZoneProvider.simulateTimeZoneProviderEvent(
-                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT);
+                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT1);
 
         assertControllerState(controller, STATE_INITIALIZING);
         mTestPrimaryLocationTimeZoneProvider.assertIsPermFailedAndCommit();
@@ -991,7 +1135,7 @@
 
         // Simulate uncertainty from the secondary.
         mTestSecondaryLocationTimeZoneProvider.simulateTimeZoneProviderEvent(
-                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT);
+                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT1);
 
         assertControllerState(controller, STATE_CERTAIN);
         mTestPrimaryLocationTimeZoneProvider.assertIsPermFailedAndCommit();
@@ -1085,7 +1229,7 @@
         // give this test the opportunity to simulate its failure. Then it will be possible to
         // demonstrate controller behavior with only the primary working.
         mTestPrimaryLocationTimeZoneProvider.simulateTimeZoneProviderEvent(
-                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT);
+                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT1);
 
         assertControllerState(controller, STATE_INITIALIZING);
         mTestPrimaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
@@ -1124,7 +1268,7 @@
 
         // Simulate uncertainty from the primary. The secondary cannot be started.
         mTestPrimaryLocationTimeZoneProvider.simulateTimeZoneProviderEvent(
-                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT);
+                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT1);
 
         assertControllerState(controller, STATE_CERTAIN);
         mTestPrimaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
@@ -1160,7 +1304,7 @@
         // give this test the opportunity to simulate its failure. Then it will be possible to
         // demonstrate controller behavior with only the primary working.
         mTestPrimaryLocationTimeZoneProvider.simulateTimeZoneProviderEvent(
-                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT);
+                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT1);
 
         assertControllerState(controller, STATE_INITIALIZING);
         mTestPrimaryLocationTimeZoneProvider.assertStateEnumAndConfigAndCommit(
@@ -1282,7 +1426,7 @@
 
         // Simulate an uncertain event from the primary. This will start the secondary.
         mTestPrimaryLocationTimeZoneProvider.simulateTimeZoneProviderEvent(
-                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT);
+                USER1_UNCERTAIN_LOCATION_TIME_ZONE_EVENT1);
 
         {
             LocationTimeZoneManagerServiceState state = controller.getStateForTests();
@@ -1471,18 +1615,19 @@
                 controller.getUncertaintyTimeoutDelayMillis());
     }
 
-    private static TimeZoneProviderEvent createSuggestionEvent(@NonNull List<String> timeZoneIds) {
+    private static TimeZoneProviderEvent createSuggestionEvent(
+            long elapsedRealtimeMillis, @NonNull List<String> timeZoneIds) {
         TimeZoneProviderStatus providerStatus = new TimeZoneProviderStatus.Builder()
                 .setLocationDetectionDependencyStatus(DEPENDENCY_STATUS_NOT_APPLICABLE)
                 .setConnectivityDependencyStatus(DEPENDENCY_STATUS_NOT_APPLICABLE)
                 .setTimeZoneResolutionOperationStatus(OPERATION_STATUS_OK)
                 .build();
         TimeZoneProviderSuggestion suggestion = new TimeZoneProviderSuggestion.Builder()
-                .setElapsedRealtimeMillis(ARBITRARY_TIME_MILLIS)
+                .setElapsedRealtimeMillis(elapsedRealtimeMillis)
                 .setTimeZoneIds(timeZoneIds)
                 .build();
         return TimeZoneProviderEvent.createSuggestionEvent(
-                ARBITRARY_TIME_MILLIS, suggestion, providerStatus);
+                elapsedRealtimeMillis, suggestion, providerStatus);
     }
 
     private static void assertControllerState(LocationTimeZoneProviderController controller,
diff --git a/services/tests/servicestests/src/com/android/server/timezonedetector/location/TestThreadingDomain.java b/services/tests/servicestests/src/com/android/server/timezonedetector/location/TestThreadingDomain.java
index e08fea0..a3fb5e6 100644
--- a/services/tests/servicestests/src/com/android/server/timezonedetector/location/TestThreadingDomain.java
+++ b/services/tests/servicestests/src/com/android/server/timezonedetector/location/TestThreadingDomain.java
@@ -142,4 +142,10 @@
         mCurrentTimeMillis = queued.executionTimeMillis;
         queued.runnable.run();
     }
+
+    void executeAll() {
+        while (!mQueue.isEmpty()) {
+            executeNext();
+        }
+    }
 }
diff --git a/services/tests/servicestests/src/com/android/server/vibrator/VibrationSettingsTest.java b/services/tests/servicestests/src/com/android/server/vibrator/VibrationSettingsTest.java
index 2efd9fc..38c7862 100644
--- a/services/tests/servicestests/src/com/android/server/vibrator/VibrationSettingsTest.java
+++ b/services/tests/servicestests/src/com/android/server/vibrator/VibrationSettingsTest.java
@@ -49,6 +49,7 @@
 import android.app.ActivityManager;
 import android.content.ComponentName;
 import android.content.ContentResolver;
+import android.content.Context;
 import android.content.ContextWrapper;
 import android.content.Intent;
 import android.content.pm.PackageManagerInternal;
@@ -121,18 +122,14 @@
     @Rule public FakeSettingsProviderRule mSettingsProviderRule = FakeSettingsProvider.rule();
 
     @Mock private VibrationSettings.OnVibratorSettingsChanged mListenerMock;
-    @Mock
-    private PowerManagerInternal mPowerManagerInternalMock;
-    @Mock
-    private VirtualDeviceManagerInternal mVirtualDeviceManagerInternalMock;
-    @Mock
-    private PackageManagerInternal mPackageManagerInternalMock;
-    @Mock
-    private VibrationConfig mVibrationConfigMock;
+    @Mock private PowerManagerInternal mPowerManagerInternalMock;
+    @Mock private VirtualDeviceManagerInternal mVirtualDeviceManagerInternalMock;
+    @Mock private PackageManagerInternal mPackageManagerInternalMock;
+    @Mock private AudioManager mAudioManagerMock;
+    @Mock private VibrationConfig mVibrationConfigMock;
 
     private TestLooper mTestLooper;
     private ContextWrapper mContextSpy;
-    private AudioManager mAudioManager;
     private VibrationSettings mVibrationSettings;
     private PowerManagerInternal.LowPowerModeListener mRegisteredPowerModeListener;
     private VirtualDeviceManagerInternal.VirtualDisplayListener mRegisteredVirtualDisplayListener;
@@ -146,6 +143,7 @@
 
         ContentResolver contentResolver = mSettingsProviderRule.mockContentResolver(mContextSpy);
         when(mContextSpy.getContentResolver()).thenReturn(contentResolver);
+        when(mContextSpy.getSystemService(eq(Context.AUDIO_SERVICE))).thenReturn(mAudioManagerMock);
         doAnswer(invocation -> {
             mRegisteredPowerModeListener = invocation.getArgument(0);
             return null;
@@ -165,7 +163,6 @@
         addServicesForTest();
 
         setDefaultIntensity(VIBRATION_INTENSITY_MEDIUM);
-        mAudioManager = mContextSpy.getSystemService(AudioManager.class);
         mVibrationSettings = new VibrationSettings(mContextSpy,
                 new Handler(mTestLooper.getLooper()), mVibrationConfigMock);
 
@@ -211,9 +208,34 @@
     }
 
     @Test
+    public void addListener_switchUserTriggerListener() {
+        mVibrationSettings.addListener(mListenerMock);
+
+        // Testing the broadcast flow manually.
+        mVibrationSettings.mSettingChangeReceiver.onReceive(mContextSpy,
+                new Intent(Intent.ACTION_USER_SWITCHED));
+
+        verify(mListenerMock).onChange();
+    }
+
+    @Test
+    public void addListener_ringerModeChangeTriggerListener() {
+        mVibrationSettings.addListener(mListenerMock);
+
+        // Testing the broadcast flow manually.
+        mVibrationSettings.mSettingChangeReceiver.onReceive(mContextSpy,
+                new Intent(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION));
+        mVibrationSettings.mSettingChangeReceiver.onReceive(mContextSpy,
+                new Intent(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION));
+
+        verify(mListenerMock, times(2)).onChange();
+    }
+
+    @Test
     public void addListener_settingsChangeTriggerListener() {
         mVibrationSettings.addListener(mListenerMock);
 
+        // Testing the broadcast flow manually.
         mVibrationSettings.mSettingObserver.onChange(false);
         mVibrationSettings.mSettingObserver.onChange(false);
 
@@ -224,6 +246,7 @@
     public void addListener_lowPowerModeChangeTriggerListener() {
         mVibrationSettings.addListener(mListenerMock);
 
+        // Testing the broadcast flow manually.
         mRegisteredPowerModeListener.onLowPowerModeChanged(LOW_POWER_STATE);
         mRegisteredPowerModeListener.onLowPowerModeChanged(NORMAL_POWER_STATE);
         mRegisteredPowerModeListener.onLowPowerModeChanged(NORMAL_POWER_STATE); // No change.
@@ -235,13 +258,20 @@
     public void removeListener_noMoreCallbacksToListener() {
         mVibrationSettings.addListener(mListenerMock);
 
-        setUserSetting(Settings.System.RING_VIBRATION_INTENSITY, 0);
+        mVibrationSettings.mSettingObserver.onChange(false);
         verify(mListenerMock).onChange();
 
         mVibrationSettings.removeListener(mListenerMock);
 
+        // Trigger multiple observers manually.
+        mVibrationSettings.mSettingObserver.onChange(false);
+        mRegisteredPowerModeListener.onLowPowerModeChanged(LOW_POWER_STATE);
+        mVibrationSettings.mSettingChangeReceiver.onReceive(mContextSpy,
+                new Intent(Intent.ACTION_USER_SWITCHED));
+        mVibrationSettings.mSettingChangeReceiver.onReceive(mContextSpy,
+                new Intent(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION));
+
         verifyNoMoreInteractions(mListenerMock);
-        setUserSetting(Settings.System.VIBRATE_INPUT_DEVICES, 1);
     }
 
     @Test
@@ -482,7 +512,7 @@
         assertVibrationNotIgnoredForUsage(USAGE_RINGTONE);
 
         // Testing the broadcast flow manually.
-        mAudioManager.setRingerModeInternal(AudioManager.RINGER_MODE_SILENT);
+        when(mAudioManagerMock.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_SILENT);
         mVibrationSettings.mSettingChangeReceiver.onReceive(mContextSpy,
                 new Intent(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION));
 
@@ -803,7 +833,6 @@
                 mVibrationSettings.shouldIgnoreVibration(callerInfo));
     }
 
-
     private String errorMessageForUsage(int usage) {
         return "Error for usage " + VibrationAttributes.usageToString(usage);
     }
@@ -832,8 +861,8 @@
     }
 
     private void setRingerMode(int ringerMode) {
-        mAudioManager.setRingerModeInternal(ringerMode);
-        assertEquals(ringerMode, mAudioManager.getRingerModeInternal());
+        when(mAudioManagerMock.getRingerModeInternal()).thenReturn(ringerMode);
+        // Mock AudioManager broadcast of internal ringer mode change.
         mVibrationSettings.mSettingChangeReceiver.onReceive(mContextSpy,
                 new Intent(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION));
     }
diff --git a/services/tests/servicestests/src/com/android/server/vibrator/VibratorManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/vibrator/VibratorManagerServiceTest.java
index f158ce1..c805fc5 100644
--- a/services/tests/servicestests/src/com/android/server/vibrator/VibratorManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/vibrator/VibratorManagerServiceTest.java
@@ -171,6 +171,8 @@
     private VibratorFrameworkStatsLogger mVibratorFrameworkStatsLoggerMock;
     @Mock
     private VirtualDeviceManagerInternal mVirtualDeviceManagerInternalMock;
+    @Mock
+    private AudioManager mAudioManagerMock;
 
     private final Map<Integer, FakeVibratorControllerProvider> mVibratorProviders = new HashMap<>();
 
@@ -204,6 +206,7 @@
         when(mContextSpy.getSystemService(eq(Context.INPUT_SERVICE)))
                 .thenReturn(mInputManager);
         when(mContextSpy.getSystemService(Context.APP_OPS_SERVICE)).thenReturn(mAppOpsManagerMock);
+        when(mContextSpy.getSystemService(eq(Context.AUDIO_SERVICE))).thenReturn(mAudioManagerMock);
         when(mIInputManagerMock.getInputDeviceIds()).thenReturn(new int[0]);
         when(mPackageManagerInternalMock.getSystemUiServiceComponent())
                 .thenReturn(new ComponentName("", ""));
@@ -234,7 +237,7 @@
                 Vibrator.VIBRATION_INTENSITY_MEDIUM);
         setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY,
                 Vibrator.VIBRATION_INTENSITY_MEDIUM);
-
+        setRingerMode(AudioManager.RINGER_MODE_NORMAL);
         addLocalServiceMock(PackageManagerInternal.class, mPackageManagerInternalMock);
         addLocalServiceMock(PowerManagerInternal.class, mPowerManagerInternalMock);
         addLocalServiceMock(VirtualDeviceManagerInternal.class, mVirtualDeviceManagerInternalMock);
@@ -503,12 +506,10 @@
             service.registerVibratorStateListener(i, listeners[i]);
         }
 
-        vibrate(service, CombinedVibration.startParallel()
+        vibrateAndWaitUntilFinished(service, CombinedVibration.startParallel()
                 .addVibrator(0, VibrationEffect.createOneShot(40, 100))
                 .addVibrator(1, VibrationEffect.get(VibrationEffect.EFFECT_CLICK))
                 .combine(), ALARM_ATTRS);
-        // Wait until service knows vibrator is on.
-        assertTrue(waitUntil(s -> s.isVibrating(0), service, TEST_TIMEOUT_MILLIS));
 
         verify(listeners[0]).onVibrating(eq(true));
         verify(listeners[1]).onVibrating(eq(true));
@@ -1696,7 +1697,7 @@
         VibratorManagerService service = createSystemReadyService();
 
         VibrationEffect repeatingEffect = VibrationEffect.createWaveform(
-                new long[]{10, 10_000}, new int[]{255, 0}, 1);
+                new long[]{100, 200, 300}, new int[]{128, 255, 255}, 1);
         vibrate(service, repeatingEffect, ALARM_ATTRS);
 
         // VibrationThread will start this vibration async, so wait until vibration is triggered.
@@ -2225,9 +2226,7 @@
     }
 
     private void setRingerMode(int ringerMode) {
-        AudioManager audioManager = mContextSpy.getSystemService(AudioManager.class);
-        audioManager.setRingerModeInternal(ringerMode);
-        assertEquals(ringerMode, audioManager.getRingerModeInternal());
+        when(mAudioManagerMock.getRingerModeInternal()).thenReturn(ringerMode);
     }
 
     private void setUserSetting(String settingName, int value) {
diff --git a/services/tests/servicestests/test-apps/SuspendTestApp/Android.bp b/services/tests/servicestests/test-apps/SuspendTestApp/Android.bp
index 5e77498..60cb529 100644
--- a/services/tests/servicestests/test-apps/SuspendTestApp/Android.bp
+++ b/services/tests/servicestests/test-apps/SuspendTestApp/Android.bp
@@ -28,7 +28,7 @@
 
     static_libs: [
         "androidx.test.runner",
-        "ub-uiautomator",
+        "androidx.test.uiautomator_uiautomator",
     ],
 
     srcs: [
diff --git a/services/tests/uiservicestests/Android.bp b/services/tests/uiservicestests/Android.bp
index 94f2d2e..4b65895 100644
--- a/services/tests/uiservicestests/Android.bp
+++ b/services/tests/uiservicestests/Android.bp
@@ -26,6 +26,7 @@
         "services.devicepolicy",
         "services.net",
         "services.usage",
+        "service-permission.stubs.system_server",
         "guava",
         "androidx.test.rules",
         "hamcrest-library",
diff --git a/services/tests/wmtests/Android.bp b/services/tests/wmtests/Android.bp
index e5371975..6509591 100644
--- a/services/tests/wmtests/Android.bp
+++ b/services/tests/wmtests/Android.bp
@@ -49,6 +49,7 @@
     static_libs: [
         "frameworks-base-testutils",
         "services.core",
+        "service-permission.stubs.system_server",
         "androidx.test.runner",
         "androidx.test.rules",
         "mockito-target-extended-minus-junit4",
@@ -57,7 +58,6 @@
         "testng",
         "truth-prebuilt",
         "testables",
-        "ub-uiautomator",
         "hamcrest-library",
         "platform-compat-test-rules",
         "CtsSurfaceValidatorLib",
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 0033e3e..47f32fe 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
@@ -851,7 +851,7 @@
                     }
 
                     @Override
-                    public void onAnimationCancelled(boolean isKeyguardOccluded) {
+                    public void onAnimationCancelled() {
                     }
                 }, 0, 0));
         activity.updateOptionsLocked(opts);
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java
index 6d13124..169968c 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java
@@ -87,7 +87,7 @@
         }
 
         @Override
-        public void onAnimationCancelled(boolean isKeyguardOccluded) {
+        public void onAnimationCancelled() {
         }
 
         @Override
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppTransitionControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/AppTransitionControllerTest.java
index 0ae579b..a11079b 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppTransitionControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppTransitionControllerTest.java
@@ -735,7 +735,7 @@
         }
 
         @Override
-        public void onAnimationCancelled(boolean isKeyguardOccluded) throws RemoteException {
+        public void onAnimationCancelled() throws RemoteException {
             mFinishedCallback = null;
         }
 
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java
index 59cc4f5..ba8c94d 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java
@@ -549,7 +549,7 @@
         }
 
         @Override
-        public void onAnimationCancelled(boolean isKeyguardOccluded) {
+        public void onAnimationCancelled() {
             mCancelled = true;
         }
 
diff --git a/services/tests/wmtests/src/com/android/server/wm/RemoteAnimationControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/RemoteAnimationControllerTest.java
index eb26415..11d9629 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RemoteAnimationControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RemoteAnimationControllerTest.java
@@ -211,7 +211,7 @@
         mController.goodToGo(TRANSIT_OLD_ACTIVITY_OPEN);
 
         adapter.onAnimationCancelled(mMockLeash);
-        verify(mMockRunner).onAnimationCancelled(anyBoolean());
+        verify(mMockRunner).onAnimationCancelled();
     }
 
     @Test
@@ -227,7 +227,7 @@
         mClock.fastForward(10500);
         mHandler.timeAdvance();
 
-        verify(mMockRunner).onAnimationCancelled(anyBoolean());
+        verify(mMockRunner).onAnimationCancelled();
         verify(mFinishedCallback).onAnimationFinished(eq(ANIMATION_TYPE_APP_TRANSITION),
                 eq(adapter));
     }
@@ -248,12 +248,12 @@
             mClock.fastForward(10500);
             mHandler.timeAdvance();
 
-            verify(mMockRunner, never()).onAnimationCancelled(anyBoolean());
+            verify(mMockRunner, never()).onAnimationCancelled();
 
             mClock.fastForward(52500);
             mHandler.timeAdvance();
 
-            verify(mMockRunner).onAnimationCancelled(anyBoolean());
+            verify(mMockRunner).onAnimationCancelled();
             verify(mFinishedCallback).onAnimationFinished(eq(ANIMATION_TYPE_APP_TRANSITION),
                     eq(adapter));
         } finally {
@@ -265,7 +265,7 @@
     public void testZeroAnimations() throws Exception {
         mController.goodToGo(TRANSIT_OLD_NONE);
         verify(mMockRunner, never()).onAnimationStart(anyInt(), any(), any(), any(), any());
-        verify(mMockRunner).onAnimationCancelled(anyBoolean());
+        verify(mMockRunner).onAnimationCancelled();
     }
 
     @Test
@@ -275,7 +275,7 @@
                 new Point(50, 100), null, new Rect(50, 100, 150, 150), null, false);
         mController.goodToGo(TRANSIT_OLD_ACTIVITY_OPEN);
         verify(mMockRunner, never()).onAnimationStart(anyInt(), any(), any(), any(), any());
-        verify(mMockRunner).onAnimationCancelled(anyBoolean());
+        verify(mMockRunner).onAnimationCancelled();
     }
 
     @Test
@@ -317,7 +317,7 @@
         win.mActivityRecord.removeImmediately();
         mController.goodToGo(TRANSIT_OLD_ACTIVITY_OPEN);
         verify(mMockRunner, never()).onAnimationStart(anyInt(), any(), any(), any(), any());
-        verify(mMockRunner).onAnimationCancelled(anyBoolean());
+        verify(mMockRunner).onAnimationCancelled();
         verify(mFinishedCallback).onAnimationFinished(eq(ANIMATION_TYPE_APP_TRANSITION),
                 eq(adapter));
     }
@@ -575,7 +575,7 @@
 
             // Cancel the wallpaper window animator and ensure the runner is not canceled
             wallpaperWindowToken.cancelAnimation();
-            verify(mMockRunner, never()).onAnimationCancelled(anyBoolean());
+            verify(mMockRunner, never()).onAnimationCancelled();
         } finally {
             mDisplayContent.mOpeningApps.clear();
         }
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java
index a1ddd57..ad606cb 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java
@@ -1112,7 +1112,7 @@
                     }
 
                     @Override
-                    public void onAnimationCancelled(boolean isKeyguardOccluded) {
+                    public void onAnimationCancelled() {
                     }
                 }, 0, 0, false);
         adapter.setCallingPidUid(123, 456);
diff --git a/services/texttospeech/java/com/android/server/texttospeech/TextToSpeechManagerService.java b/services/texttospeech/java/com/android/server/texttospeech/TextToSpeechManagerService.java
index 9015563..2411498 100644
--- a/services/texttospeech/java/com/android/server/texttospeech/TextToSpeechManagerService.java
+++ b/services/texttospeech/java/com/android/server/texttospeech/TextToSpeechManagerService.java
@@ -63,6 +63,12 @@
         public void createSession(String engine,
                 ITextToSpeechSessionCallback sessionCallback) {
             synchronized (mLock) {
+                if (engine == null) {
+                    runSessionCallbackMethod(
+                            () -> sessionCallback.onError("Engine cannot be null"));
+                    return;
+                }
+
                 TextToSpeechManagerPerUserService perUserService = getServiceForUserLocked(
                         UserHandle.getCallingUserId());
                 if (perUserService != null) {
diff --git a/services/usb/java/com/android/server/usb/UsbService.java b/services/usb/java/com/android/server/usb/UsbService.java
index cad1f6f..5d2f27d 100644
--- a/services/usb/java/com/android/server/usb/UsbService.java
+++ b/services/usb/java/com/android/server/usb/UsbService.java
@@ -347,10 +347,11 @@
         return null;
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.ACCESS_MTP)
     /* Returns a dup of the control file descriptor for the given function. */
     @Override
     public ParcelFileDescriptor getControlFd(long function) {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.ACCESS_MTP, null);
+        getControlFd_enforcePermission();
         return mDeviceManager.getControlFd(function);
     }
 
@@ -507,10 +508,11 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USB)
     @Override
     public boolean hasDevicePermissionWithIdentity(UsbDevice device, String packageName,
             int pid, int uid) {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+        hasDevicePermissionWithIdentity_enforcePermission();
 
         final int userId = UserHandle.getUserId(uid);
         return getPermissionsForUser(userId).hasPermission(device, packageName, pid, uid);
@@ -530,9 +532,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USB)
     @Override
     public boolean hasAccessoryPermissionWithIdentity(UsbAccessory accessory, int pid, int uid) {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+        hasAccessoryPermissionWithIdentity_enforcePermission();
 
         final int userId = UserHandle.getUserId(uid);
         return getPermissionsForUser(userId).hasPermission(accessory, pid, uid);
@@ -567,9 +570,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USB)
     @Override
     public void grantDevicePermission(UsbDevice device, int uid) {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+        grantDevicePermission_enforcePermission();
         final int userId = UserHandle.getUserId(uid);
 
         final long token = Binder.clearCallingIdentity();
@@ -580,9 +584,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USB)
     @Override
     public void grantAccessoryPermission(UsbAccessory accessory, int uid) {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+        grantAccessoryPermission_enforcePermission();
         final int userId = UserHandle.getUserId(uid);
 
         final long token = Binder.clearCallingIdentity();
@@ -625,9 +630,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USB)
     @Override
     public void setCurrentFunctions(long functions, int operationId) {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+        setCurrentFunctions_enforcePermission();
         Preconditions.checkArgument(UsbManager.areSettableFunctions(functions));
         Preconditions.checkState(mDeviceManager != null);
         mDeviceManager.setCurrentFunctions(functions, operationId);
@@ -643,32 +649,36 @@
         return (getCurrentFunctions() & UsbManager.usbFunctionsFromString(function)) != 0;
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USB)
     @Override
     public long getCurrentFunctions() {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+        getCurrentFunctions_enforcePermission();
         Preconditions.checkState(mDeviceManager != null);
         return mDeviceManager.getCurrentFunctions();
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USB)
     @Override
     public void setScreenUnlockedFunctions(long functions) {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+        setScreenUnlockedFunctions_enforcePermission();
         Preconditions.checkArgument(UsbManager.areSettableFunctions(functions));
         Preconditions.checkState(mDeviceManager != null);
 
         mDeviceManager.setScreenUnlockedFunctions(functions);
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USB)
     @Override
     public long getScreenUnlockedFunctions() {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+        getScreenUnlockedFunctions_enforcePermission();
         Preconditions.checkState(mDeviceManager != null);
         return mDeviceManager.getScreenUnlockedFunctions();
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USB)
     @Override
     public int getCurrentUsbSpeed() {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+        getCurrentUsbSpeed_enforcePermission();
         Preconditions.checkNotNull(mDeviceManager, "DeviceManager must not be null");
 
         final long ident = Binder.clearCallingIdentity();
@@ -679,9 +689,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USB)
     @Override
     public int getGadgetHalVersion() {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+        getGadgetHalVersion_enforcePermission();
         Preconditions.checkNotNull(mDeviceManager, "DeviceManager must not be null");
 
         final long ident = Binder.clearCallingIdentity();
@@ -692,9 +703,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USB)
     @Override
     public void resetUsbGadget() {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+        resetUsbGadget_enforcePermission();
         Preconditions.checkNotNull(mDeviceManager, "DeviceManager must not be null");
 
         final long ident = Binder.clearCallingIdentity();
@@ -731,9 +743,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USB)
     @Override
     public List<ParcelableUsbPort> getPorts() {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+        getPorts_enforcePermission();
 
         final long ident = Binder.clearCallingIdentity();
         try {
@@ -822,9 +835,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USB)
     @Override
     public int getUsbHalVersion() {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+        getUsbHalVersion_enforcePermission();
 
         final long ident = Binder.clearCallingIdentity();
         try {
@@ -891,9 +905,10 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USB)
     @Override
     public void setUsbDeviceConnectionHandler(ComponentName usbDeviceConnectionHandler) {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+        setUsbDeviceConnectionHandler_enforcePermission();
         synchronized (mLock) {
             if (mCurrentUserId == UserHandle.getCallingUserId()) {
                 if (mHostManager != null) {
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/DetectorSession.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/DetectorSession.java
index cd29dac..4cbebb3 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/DetectorSession.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/DetectorSession.java
@@ -233,7 +233,8 @@
 
         if (ENABLE_PROXIMITY_RESULT) {
             mAttentionManagerInternal = LocalServices.getService(AttentionManagerInternal.class);
-            if (mAttentionManagerInternal != null) {
+            if (mAttentionManagerInternal != null
+                    && mAttentionManagerInternal.isProximitySupported()) {
                 mAttentionManagerInternal.onStartProximityUpdates(mProximityCallbackInternal);
             }
         }
diff --git a/startop/view_compiler/Android.bp b/startop/view_compiler/Android.bp
index 9023921..e172090 100644
--- a/startop/view_compiler/Android.bp
+++ b/startop/view_compiler/Android.bp
@@ -40,7 +40,7 @@
         "libziparchive",
         "libz",
     ],
-    cppflags: ["-std=c++17"],
+    cpp_std: "gnu++2b",
     target: {
         android: {
             shared_libs: [
@@ -80,7 +80,7 @@
         "libgflags",
         "libviewcompiler",
     ],
-    host_supported: true
+    host_supported: true,
 }
 
 cc_test_host {
diff --git a/startop/view_compiler/apk_layout_compiler.cc b/startop/view_compiler/apk_layout_compiler.cc
index 1d3b6481..5f5652c 100644
--- a/startop/view_compiler/apk_layout_compiler.cc
+++ b/startop/view_compiler/apk_layout_compiler.cc
@@ -80,10 +80,10 @@
 }
 
 namespace {
-void CompileApkAssetsLayouts(const std::unique_ptr<android::ApkAssets>& assets,
-                             CompilationTarget target, std::ostream& target_out) {
+void CompileApkAssetsLayouts(const android::ApkAssetsPtr& assets, CompilationTarget target,
+                             std::ostream& target_out) {
   android::AssetManager2 resources;
-  resources.SetApkAssets({assets.get()});
+  resources.SetApkAssets({assets});
 
   std::string package_name;
 
diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java
index c152a41..1da4ea9 100644
--- a/telecomm/java/android/telecom/Call.java
+++ b/telecomm/java/android/telecom/Call.java
@@ -24,6 +24,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.pm.ServiceInfo;
 import android.net.Uri;
+import android.os.BadParcelableException;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
@@ -2951,21 +2952,27 @@
 
         for(String key : bundle.keySet()) {
             if (key != null) {
-                final Object value = bundle.get(key);
-                final Object newValue = newBundle.get(key);
                 if (!newBundle.containsKey(key)) {
                     return false;
                 }
-                if (value instanceof Bundle && newValue instanceof Bundle) {
-                    if (!areBundlesEqual((Bundle) value, (Bundle) newValue)) {
+                // In case new call extra contains non-framework class objects, return false to
+                // force update the call extra
+                try {
+                    final Object value = bundle.get(key);
+                    final Object newValue = newBundle.get(key);
+                    if (value instanceof Bundle && newValue instanceof Bundle) {
+                        if (!areBundlesEqual((Bundle) value, (Bundle) newValue)) {
+                            return false;
+                        }
+                    }
+                    if (value instanceof byte[] && newValue instanceof byte[]) {
+                        if (!Arrays.equals((byte[]) value, (byte[]) newValue)) {
+                            return false;
+                        }
+                    } else if (!Objects.equals(value, newValue)) {
                         return false;
                     }
-                }
-                if (value instanceof byte[] && newValue instanceof byte[]) {
-                    if (!Arrays.equals((byte[]) value, (byte[]) newValue)) {
-                        return false;
-                    }
-                } else if (!Objects.equals(value, newValue)) {
+                } catch (BadParcelableException e) {
                     return false;
                 }
             }
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index c4a501d..d772bf8 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -10650,12 +10650,20 @@
      * no reason to power it off. When any of the voters want to power it off, it will be turned
      * off. In case of emergency, the radio will be turned on even if there are some reasons for
      * powering it off, and these radio off votes will be cleared.
-     * Multiple apps can vote for the same reason and the last vote will take effect. Each app is
-     * responsible for its vote. A powering-off vote of a reason will be maintained until it is
-     * cleared by calling {@link clearRadioPowerOffForReason} for that reason, or an emergency call
-     * is made, or the device is rebooted. When an app comes backup from a crash, it needs to make
-     * sure if its vote is as expected. An app can use the API {@link getRadioPowerOffReasons} to
-     * check its vote.
+     * <p>
+     * Each API call is for one reason. However, an app can call the API multiple times for multiple
+     * reasons. Multiple apps can vote for the same reason but the vote of one app does not affect
+     * the vote of another app.
+     * <p>
+     * Each app is responsible for its vote. A powering-off vote for a reason of an app will be
+     * maintained until it is cleared by calling {@link #clearRadioPowerOffForReason(int)} for that
+     * reason by the app, or an emergency call is made, or the device is rebooted. When an app
+     * comes backup from a crash, it needs to make sure if its vote is as expected. An app can use
+     * the API {@link #getRadioPowerOffReasons()} to check its votes. Votes won't be removed when
+     * an app crashes.
+     * <p>
+     * User setting for power state is persistent across device reboots. This applies to all users,
+     * callers must be careful to update the off reasons when the current user changes.
      *
      * @param reason The reason for powering off radio.
      * @throws SecurityException if the caller does not have MODIFY_PHONE_STATE permission.
@@ -10712,10 +10720,10 @@
     }
 
     /**
-     * Get reasons for powering off radio, as requested by {@link requestRadioPowerOffForReason}.
-     * If the reason set is empty, the radio is on in all cases.
+     * Get reasons for powering off radio of the calling app, as requested by
+     * {@link #requestRadioPowerOffForReason(int)}.
      *
-     * @return Set of reasons for powering off radio.
+     * @return Set of reasons for powering off radio of the calling app.
      * @throws SecurityException if the caller does not have READ_PRIVILEGED_PHONE_STATE permission.
      * @throws IllegalStateException if the Telephony service is not currently available.
      *
@@ -15140,6 +15148,14 @@
     @TestApi
     public static final int HAL_SERVICE_IMS = 7;
 
+    /**
+     * HAL service type that supports the HAL APIs implementation of IRadioSatellite
+     * {@link RadioSatelliteProxy}
+     * @hide
+     */
+    @TestApi
+    public static final int HAL_SERVICE_SATELLITE = 8;
+
     /** @hide */
     @Retention(RetentionPolicy.SOURCE)
     @IntDef(prefix = {"HAL_SERVICE_"},
@@ -15152,6 +15168,7 @@
                     HAL_SERVICE_SIM,
                     HAL_SERVICE_VOICE,
                     HAL_SERVICE_IMS,
+                    HAL_SERVICE_SATELLITE
             })
     public @interface HalService {}
 
diff --git a/telephony/java/android/telephony/satellite/stub/SatelliteImplBase.java b/telephony/java/android/telephony/satellite/stub/SatelliteImplBase.java
index d606f87..17d026c 100644
--- a/telephony/java/android/telephony/satellite/stub/SatelliteImplBase.java
+++ b/telephony/java/android/telephony/satellite/stub/SatelliteImplBase.java
@@ -421,7 +421,7 @@
      *
      * @param token The token to be used as a unique identifier for provisioning with satellite
      *              gateway.
-     * @param provisionData Data from the provisioning app that can be used by provisioning 
+     * @param provisionData Data from the provisioning app that can be used by provisioning
      *                      server
      * @param errorCallback The callback to receive the error code result of the operation.
      *
diff --git a/telephony/java/com/android/internal/telephony/RILConstants.java b/telephony/java/com/android/internal/telephony/RILConstants.java
index 8ed60c1..45daab3 100644
--- a/telephony/java/com/android/internal/telephony/RILConstants.java
+++ b/telephony/java/com/android/internal/telephony/RILConstants.java
@@ -571,6 +571,22 @@
     int RIL_REQUEST_UPDATE_IMS_CALL_STATUS = 240;
     int RIL_REQUEST_SET_N1_MODE_ENABLED = 241;
     int RIL_REQUEST_IS_N1_MODE_ENABLED = 242;
+    int RIL_REQUEST_SET_LOCATION_PRIVACY_SETTING = 243;
+    int RIL_REQUEST_GET_LOCATION_PRIVACY_SETTING = 244;
+    int RIL_REQUEST_GET_SATELLITE_CAPABILITIES = 245;
+    int RIL_REQUEST_SET_SATELLITE_POWER = 246;
+    int RIL_REQUEST_GET_SATELLITE_POWER = 247;
+    int RIL_REQUEST_PROVISION_SATELLITE_SERVICE = 248;
+    int RIL_REQUEST_ADD_ALLOWED_SATELLITE_CONTACTS = 249;
+    int RIL_REQUEST_REMOVE_ALLOWED_SATELLITE_CONTACTS = 250;
+    int RIL_REQUEST_SEND_SATELLITE_MESSAGES = 251;
+    int RIL_REQUEST_GET_PENDING_SATELLITE_MESSAGES = 252;
+    int RIL_REQUEST_GET_SATELLITE_MODE = 253;
+    int RIL_REQUEST_SET_SATELLITE_INDICATION_FILTER = 254;
+    int RIL_REQUEST_START_SENDING_SATELLITE_POINTING_INFO = 255;
+    int RIL_REQUEST_STOP_SENDING_SATELLITE_POINTING_INFO = 256;
+    int RIL_REQUEST_GET_MAX_CHARACTERS_PER_SATELLITE_TEXT_MESSAGE = 257;
+    int RIL_REQUEST_GET_TIME_FOR_NEXT_SATELLITE_VISIBILITY = 258;
 
     /* Responses begin */
     int RIL_RESPONSE_ACKNOWLEDGEMENT = 800;
@@ -632,6 +648,13 @@
     int RIL_UNSOL_RESPONSE_SIM_PHONEBOOK_CHANGED = 1053;
     int RIL_UNSOL_RESPONSE_SIM_PHONEBOOK_RECORDS_RECEIVED = 1054;
     int RIL_UNSOL_SLICING_CONFIG_CHANGED = 1055;
+    int RIL_UNSOL_PENDING_SATELLITE_MESSAGE_COUNT = 1056;
+    int RIL_UNSOL_NEW_SATELLITE_MESSAGES = 1057;
+    int RIL_UNSOL_SATELLITE_MESSAGES_TRANSFER_COMPLETE = 1058;
+    int RIL_UNSOL_SATELLITE_POINTING_INFO_CHANGED = 1059;
+    int RIL_UNSOL_SATELLITE_MODE_CHANGED = 1060;
+    int RIL_UNSOL_SATELLITE_RADIO_TECHNOLOGY_CHANGED = 1061;
+    int RIL_UNSOL_SATELLITE_PROVISION_STATE_CHANGED = 1062;
 
     /* The following unsols are not defined in RIL.h */
     int RIL_UNSOL_HAL_NON_RIL_BASE = 1100;
diff --git a/tests/ApkVerityTest/src/com/android/apkverity/ApkVerityTest.java b/tests/ApkVerityTest/src/com/android/apkverity/ApkVerityTest.java
index 591ffeb..482f633 100644
--- a/tests/ApkVerityTest/src/com/android/apkverity/ApkVerityTest.java
+++ b/tests/ApkVerityTest/src/com/android/apkverity/ApkVerityTest.java
@@ -408,8 +408,7 @@
         damageFileAgainstBlockDevice(apkPath, offsetFirstByte);
 
         // Expect actual read from disk to fail but only at damaged page.
-        BlockDeviceWriter.dropCaches(mDevice);
-        assertFalse(BlockDeviceWriter.canReadByte(mDevice, apkPath, offsetFirstByte));
+        expectReadFromBlockDeviceToFail(apkPath, offsetFirstByte);
         if (apkSize > offsetFirstByte + FSVERITY_PAGE_SIZE) {
             long lastByteOfTheSamePage =
                     offsetFirstByte % FSVERITY_PAGE_SIZE + FSVERITY_PAGE_SIZE - 1;
@@ -437,8 +436,7 @@
         damageFileAgainstBlockDevice(apkPath, offsetOfLastByte);
 
         // Expect actual read from disk to fail but only at damaged page.
-        BlockDeviceWriter.dropCaches(mDevice);
-        assertFalse(BlockDeviceWriter.canReadByte(mDevice, apkPath, offsetOfLastByte));
+        expectReadFromBlockDeviceToFail(apkPath, offsetOfLastByte);
         if (offsetOfLastByte - FSVERITY_PAGE_SIZE > 0) {
             long firstByteOfTheSamePage = offsetOfLastByte - offsetOfLastByte % FSVERITY_PAGE_SIZE;
             assertFalse(BlockDeviceWriter.canReadByte(mDevice, apkPath, firstByteOfTheSamePage));
@@ -456,29 +454,34 @@
             String path = appDir + "/" + basename;
             damageFileAgainstBlockDevice(path, kTargetOffset);
 
-            // Retry is sometimes needed to pass the test. Package manager may have FD leaks
-            // (see b/122744005 as example) that prevents the file in question to be evicted
-            // from filesystem cache. Forcing GC workarounds the problem.
-            int retry = 5;
-            for (; retry > 0; retry--) {
-                BlockDeviceWriter.dropCaches(mDevice);
-                if (!BlockDeviceWriter.canReadByte(mDevice, path, kTargetOffset)) {
-                    break;
-                }
-                try {
-                    String openFiles = expectRemoteCommandToSucceed("lsof " + apkPath);
-                    CLog.d("lsof: " + openFiles);
-                    Thread.sleep(1000);
-                    forceGCOnOpenFilesProcess(getOpenFilesPIDs(openFiles));
-                } catch (InterruptedException e) {
-                    Thread.currentThread().interrupt();
-                    return;
-                }
-            }
-            assertTrue("Read from " + path + " should fail", retry > 0);
+            expectReadFromBlockDeviceToFail(path, kTargetOffset);
         }
     }
 
+    private void expectReadFromBlockDeviceToFail(String readPath, long offset)
+            throws DeviceNotAvailableException {
+        // Retry is sometimes needed to pass the test. Package manager may have FD leaks
+        // (see b/122744005 as example) that prevents the file in question to be evicted
+        // from filesystem cache. Forcing GC workarounds the problem.
+        int retry = 5;
+        for (; retry > 0; retry--) {
+            BlockDeviceWriter.dropCaches(mDevice);
+            if (!BlockDeviceWriter.canReadByte(mDevice, readPath, offset)) {
+                break;
+            }
+            try {
+                String openFiles = expectRemoteCommandToSucceed("lsof " + readPath);
+                CLog.d("lsof: " + openFiles);
+                Thread.sleep(1000);
+                forceGCOnOpenFilesProcess(getOpenFilesPIDs(openFiles));
+            } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
+                return;
+            }
+        }
+        assertTrue("Read from " + readPath + " should fail", retry > 0);
+    }
+
     /**
      * This is a helper method that parses the lsof output to get PIDs of process holding FD.
      * Here is an example output of lsof. This method extracts the second columns(PID).
diff --git a/tests/EnforcePermission/aidl/android/tests/enforcepermission/IProtected.aidl b/tests/EnforcePermission/aidl/android/tests/enforcepermission/IProtected.aidl
index 18e3aec..6e59b04 100644
--- a/tests/EnforcePermission/aidl/android/tests/enforcepermission/IProtected.aidl
+++ b/tests/EnforcePermission/aidl/android/tests/enforcepermission/IProtected.aidl
@@ -31,4 +31,31 @@
 
     @EnforcePermission("INTERNET")
     void ProtectedByInternetAndReadSyncSettingsImplicitly();
+
+    @EnforcePermission("TURN_SCREEN_ON")
+    void ProtectedByTurnScreenOn();
+
+    @EnforcePermission("READ_CONTACTS")
+    void ProtectedByReadContacts();
+
+    @EnforcePermission("READ_CALENDAR")
+    void ProtectedByReadCalendar();
+
+    @EnforcePermission(allOf={"INTERNET", "VIBRATE"})
+    void ProtectedByInternetAndVibrate();
+
+    @EnforcePermission(allOf={"INTERNET", "READ_SYNC_SETTINGS"})
+    void ProtectedByInternetAndReadSyncSettings();
+
+    @EnforcePermission(anyOf={"ACCESS_WIFI_STATE", "VIBRATE"})
+    void ProtectedByAccessWifiStateOrVibrate();
+
+    @EnforcePermission(anyOf={"INTERNET", "VIBRATE"})
+    void ProtectedByInternetOrVibrate();
+
+    @RequiresNoPermission
+    void NotProtected();
+
+    @PermissionManuallyEnforced
+    void ManuallyProtected();
 }
diff --git a/tests/EnforcePermission/perf-app/Android.bp b/tests/EnforcePermission/perf-app/Android.bp
new file mode 100644
index 0000000..b494bb7
--- /dev/null
+++ b/tests/EnforcePermission/perf-app/Android.bp
@@ -0,0 +1,45 @@
+// Copyright (C) 2023 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 {
+    default_applicable_licenses: ["frameworks_base_license"],
+}
+
+android_test {
+    name: "EnforcePermissionPerfTests",
+    srcs: [
+        "src/**/*.java",
+        ":frameworks-enforce-permission-test-aidl",
+    ],
+    static_libs: [
+        "EnforcePermissionTestLib",
+        "androidx.benchmark_benchmark-common",
+        "androidx.benchmark_benchmark-junit4",
+        "apct-perftests-utils",
+        "collector-device-lib",
+        "androidx.test.rules",
+    ],
+    libs: [
+        "android.test.base",
+        "android.test.runner",
+    ],
+    data: [
+        ":EnforcePermissionTestHelper",
+        ":perfetto_artifacts",
+        "perfetto.textproto",
+    ],
+    platform_apis: true,
+    certificate: "platform",
+    test_suites: ["device-tests"],
+}
diff --git a/tests/EnforcePermission/perf-app/AndroidManifest.xml b/tests/EnforcePermission/perf-app/AndroidManifest.xml
new file mode 100644
index 0000000..900270d
--- /dev/null
+++ b/tests/EnforcePermission/perf-app/AndroidManifest.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2023 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.
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+  package="android.tests.enforcepermission.tests">
+
+    <uses-permission android:name="android.permission.INTERNET" />
+
+    <!-- Required by perfetto -->
+    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
+    <queries>
+        <package android:name="android.tests.enforcepermission.service" />
+    </queries>
+
+    <application>
+      <uses-library android:name="android.test.runner" />
+      <profileable android:shell="true" />
+      <!-- Instance of the Service within the app. This is to test performance for same-process calls. -->
+      <service android:name=".TestService" />
+    </application>
+    <instrumentation android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner"
+                     android:targetPackage="android.tests.enforcepermission.tests"/>
+</manifest>
diff --git a/tests/EnforcePermission/perf-app/AndroidTest.xml b/tests/EnforcePermission/perf-app/AndroidTest.xml
new file mode 100644
index 0000000..3bc1d2d
--- /dev/null
+++ b/tests/EnforcePermission/perf-app/AndroidTest.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2023 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.
+-->
+<configuration description="Runs EnforcePermission Perf Tests">
+
+    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
+    <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
+        <option name="push-file" key="perfetto.textproto" value="/data/misc/perfetto-traces/trace_config.textproto" />
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup">
+      <option name="test-file-name" value="EnforcePermissionTestHelper.apk"/>
+      <option name="test-file-name" value="EnforcePermissionPerfTests.apk"/>
+      <option name="cleanup-apks" value="true" />
+    </target_preparer>
+
+    <option name="isolated-storage" value="false" />
+
+    <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
+        <option name="pull-pattern-keys" value="perfetto_file_path" />
+        <option name="collect-on-run-ended-only" value="false" />
+    </metrics_collector>
+
+    <option name="test-tag" value="EnforcePermissionTests"/>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest">
+        <option name="package" value="android.tests.enforcepermission.tests"/>
+        <option name="device-listeners" value="android.device.collectors.PerfettoListener" />
+        <!-- PerfettoListener related arguments -->
+        <option name="instrumentation-arg" key="perfetto_config_text_proto" value="true" />
+        <option name="instrumentation-arg" key="perfetto_config_file" value="trace_config.textproto" />
+    </test>
+</configuration>
diff --git a/tests/EnforcePermission/perf-app/perfetto.textproto b/tests/EnforcePermission/perf-app/perfetto.textproto
new file mode 100644
index 0000000..8a3eea4
--- /dev/null
+++ b/tests/EnforcePermission/perf-app/perfetto.textproto
@@ -0,0 +1,154 @@
+# Copyright (C) 2023 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.
+
+# Based on trace_config_detailed.textproto
+# proto-message: TraceConfig
+
+# Enable periodic flushing of the trace buffer into the output file.
+write_into_file: true
+
+# Writes the userspace buffer into the file every 1s.
+file_write_period_ms: 1000
+
+# See b/126487238 - we need to guarantee ordering of events.
+flush_period_ms: 10000
+
+# The trace buffers needs to be big enough to hold |file_write_period_ms| of
+# trace data. The trace buffer sizing depends on the number of trace categories
+# enabled and the device activity.
+
+# RSS events
+buffers {
+  size_kb: 32768
+  fill_policy: RING_BUFFER
+}
+
+# procfs polling
+buffers {
+  size_kb: 8192
+  fill_policy: RING_BUFFER
+}
+
+# perf memory
+buffers {
+  size_kb: 65536
+  fill_policy: RING_BUFFER
+}
+
+data_sources {
+  config {
+    name: "linux.ftrace"
+    target_buffer: 0
+    ftrace_config {
+      throttle_rss_stat: true
+      # These parameters affect only the kernel trace buffer size and how
+      # frequently it gets moved into the userspace buffer defined above.
+      buffer_size_kb: 16384
+      drain_period_ms: 250
+
+      # Store certain high-volume "sched" ftrace events in a denser format
+      # (falling back to the default format if not supported by the tracer).
+      compact_sched {
+        enabled: true
+      }
+
+      # Enables symbol name resolution against /proc/kallsyms
+      symbolize_ksyms: true
+      # Parse kallsyms before acknowledging that the ftrace data source has been started. In
+      # combination with "perfetto --background-wait" as the consumer, it lets us defer the
+      # test we're tracing until after the cpu has quieted down from the cpu-bound kallsyms parsing.
+      initialize_ksyms_synchronously_for_testing: true
+      # Avoid re-parsing kallsyms on every test run, as it takes 200-500ms per run. See b/239951079
+      ksyms_mem_policy: KSYMS_RETAIN
+
+      # We need to do process tracking to ensure kernel ftrace events targeted at short-lived
+      # threads are associated correctly
+      ftrace_events: "task/task_newtask"
+      ftrace_events: "task/task_rename"
+      ftrace_events: "sched/sched_process_exit"
+      ftrace_events: "sched/sched_process_free"
+
+      # Memory events
+      ftrace_events: "rss_stat"
+      ftrace_events: "ion_heap_shrink"
+      ftrace_events: "ion_heap_grow"
+      ftrace_events: "ion/ion_stat"
+      ftrace_events: "dmabuf_heap/dma_heap_stat"
+      ftrace_events: "oom_score_adj_update"
+      ftrace_events: "gpu_mem/gpu_mem_total"
+      ftrace_events: "fastrpc/fastrpc_dma_stat"
+
+      # Power events
+      ftrace_events: "power/suspend_resume"
+      ftrace_events: "power/cpu_frequency"
+      ftrace_events: "power/cpu_idle"
+      ftrace_events: "power/gpu_frequency"
+
+      # Old (kernel) LMK
+      ftrace_events: "lowmemorykiller/lowmemory_kill"
+
+      atrace_apps: "*"
+
+      atrace_categories: "am"
+      atrace_categories: "aidl"
+      atrace_categories: "bionic"
+      atrace_categories: "camera"
+      atrace_categories: "wm"
+      atrace_categories: "dalvik"
+      atrace_categories: "sched"
+      atrace_categories: "freq"
+      atrace_categories: "gfx"
+      atrace_categories: "view"
+      atrace_categories: "webview"
+      atrace_categories: "input"
+      atrace_categories: "hal"
+      atrace_categories: "binder_driver"
+      atrace_categories: "sync"
+      atrace_categories: "workq"
+      atrace_categories: "res"
+      atrace_categories: "power"
+
+    }
+  }
+}
+
+data_sources {
+  config {
+    name: "linux.process_stats"
+    target_buffer: 1
+    process_stats_config {
+      proc_stats_poll_ms: 10000
+    }
+  }
+}
+
+data_sources {
+  config {
+    name: "linux.perf"
+    target_buffer: 2
+    perf_event_config {
+      timebase {
+        frequency: 80
+      }
+      callstack_sampling {
+        scope {
+          target_cmdline: "android.tests.enforcepermission.tests"
+          target_cmdline: "android.tests.enforcepermission.service"
+          target_cmdline: "system_server"
+        }
+        kernel_frames: true
+      }
+    }
+  }
+}
diff --git a/tests/EnforcePermission/perf-app/src/android/tests/enforcepermission/tests/ServicePerfTest.java b/tests/EnforcePermission/perf-app/src/android/tests/enforcepermission/tests/ServicePerfTest.java
new file mode 100644
index 0000000..7cbf567
--- /dev/null
+++ b/tests/EnforcePermission/perf-app/src/android/tests/enforcepermission/tests/ServicePerfTest.java
@@ -0,0 +1,169 @@
+/**
+ * Copyright (C) 2023 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.tests.enforcepermission.tests;
+
+import static org.junit.Assert.assertTrue;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+import android.perftests.utils.BenchmarkState;
+import android.perftests.utils.PerfStatusReporter;
+import android.tests.enforcepermission.IProtected;
+import android.util.Log;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.After;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+/** Performance tests for EnforcePermission annotation.
+ *
+ * Permission check results are cached on the service side as it relies on
+ * PermissionManager. It means that only the first request will trigger a
+ * lookup to system_server. Subsequent requests will use the cached result. As
+ * this timing is similar to a permission check for a service hosted in
+ * system_server, we keep this cache active for the tests. The BenchmarkState
+ * used by PerfStatusReporter includes a warm-up stage. It means that the extra
+ * time taken by the first request will not be reflected in the outcome of the
+ * test.
+ */
+@RunWith(AndroidJUnit4.class)
+public class ServicePerfTest {
+
+    private static final String TAG = "EnforcePermission.PerfTests";
+    private static final String SERVICE_PACKAGE = "android.tests.enforcepermission.service";
+    private static final String LOCAL_SERVICE_PACKAGE = "android.tests.enforcepermission.tests";
+    private static final int SERVICE_TIMEOUT_SEC = 5;
+
+    @Rule public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter();
+
+    private Context mContext;
+    private volatile ServiceConnection mServiceConnection;
+
+    private void bindService(Intent intent) throws Exception {
+        mContext = InstrumentationRegistry.getTargetContext();
+        mServiceConnection = new ServiceConnection();
+        assertTrue(mContext.bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE));
+    }
+
+    public void bindRemoteService() throws Exception {
+        Log.d(TAG, "bindRemoteService");
+        Intent intent = new Intent();
+        intent.setClassName(SERVICE_PACKAGE, SERVICE_PACKAGE + ".TestService");
+        bindService(intent);
+    }
+
+    public void bindLocalService() throws Exception {
+        Log.d(TAG, "bindLocalService");
+        Intent intent = new Intent();
+        intent.setClassName(LOCAL_SERVICE_PACKAGE, SERVICE_PACKAGE + ".TestService");
+        bindService(intent);
+    }
+
+    @After
+    public void unbindTestService() throws Exception {
+        mContext.unbindService(mServiceConnection);
+    }
+
+    private static final class ServiceConnection implements android.content.ServiceConnection {
+        private volatile CompletableFuture<IProtected> mFuture = new CompletableFuture<>();
+
+        @Override
+        public void onServiceConnected(ComponentName className, IBinder service) {
+            mFuture.complete(IProtected.Stub.asInterface(service));
+        }
+
+        @Override
+        public void onServiceDisconnected(ComponentName className) {
+            mFuture = new CompletableFuture<>();
+        }
+
+        public IProtected get() {
+            try {
+                return mFuture.get(SERVICE_TIMEOUT_SEC, TimeUnit.SECONDS);
+            } catch (ExecutionException | InterruptedException | TimeoutException e) {
+                throw new RuntimeException("Unable to reach TestService: " + e.toString());
+            }
+        }
+    }
+
+    @Test
+    public void testAnnotatedPermission() throws Exception {
+        bindRemoteService();
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        while (state.keepRunning()) {
+            mServiceConnection.get().ProtectedByInternet();
+        }
+    }
+
+    @Test
+    public void testNoPermission() throws Exception {
+        bindRemoteService();
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        while (state.keepRunning()) {
+            mServiceConnection.get().NotProtected();
+        }
+    }
+
+    @Test
+    public void testManuallyProtected() throws Exception {
+        bindRemoteService();
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        while (state.keepRunning()) {
+            mServiceConnection.get().ManuallyProtected();
+        }
+    }
+
+    @Test
+    public void testAnnotatedPermissionLocal()
+            throws Exception {
+        bindLocalService();
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        while (state.keepRunning()) {
+            mServiceConnection.get().ProtectedByInternet();
+        }
+    }
+
+    @Test
+    public void testNoPermissionLocal() throws Exception {
+        bindLocalService();
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        while (state.keepRunning()) {
+            mServiceConnection.get().NotProtected();
+        }
+    }
+
+    @Test
+    public void testManuallyProtectedLocal() throws Exception {
+        bindLocalService();
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        while (state.keepRunning()) {
+            mServiceConnection.get().ManuallyProtected();
+        }
+    }
+}
diff --git a/tests/EnforcePermission/service-app/Android.bp b/tests/EnforcePermission/service-app/Android.bp
index a4ac1d7..7878215 100644
--- a/tests/EnforcePermission/service-app/Android.bp
+++ b/tests/EnforcePermission/service-app/Android.bp
@@ -21,6 +21,14 @@
     default_applicable_licenses: ["frameworks_base_license"],
 }
 
+android_library {
+    name: "EnforcePermissionTestLib",
+    srcs: [
+        "src/**/*.java",
+        ":frameworks-enforce-permission-test-aidl",
+    ],
+}
+
 android_test_helper_app {
     name: "EnforcePermissionTestHelper",
     srcs: [
diff --git a/tests/EnforcePermission/service-app/AndroidManifest.xml b/tests/EnforcePermission/service-app/AndroidManifest.xml
index ddafe15..eba1230 100644
--- a/tests/EnforcePermission/service-app/AndroidManifest.xml
+++ b/tests/EnforcePermission/service-app/AndroidManifest.xml
@@ -15,6 +15,9 @@
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="android.tests.enforcepermission.service">
+
+    <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
+
     <application>
         <service
           android:name=".TestService"
diff --git a/tests/EnforcePermission/service-app/src/android/tests/enforcepermission/service/NestedTestService.java b/tests/EnforcePermission/service-app/src/android/tests/enforcepermission/service/NestedTestService.java
index 7879a12..0f083c9 100644
--- a/tests/EnforcePermission/service-app/src/android/tests/enforcepermission/service/NestedTestService.java
+++ b/tests/EnforcePermission/service-app/src/android/tests/enforcepermission/service/NestedTestService.java
@@ -18,13 +18,21 @@
 
 import android.annotation.EnforcePermission;
 import android.app.Service;
+import android.content.Context;
 import android.content.Intent;
 import android.os.IBinder;
+import android.os.PermissionEnforcer;
 import android.tests.enforcepermission.INested;
 import android.util.Log;
 
 public class NestedTestService extends Service {
     private static final String TAG = "EnforcePermission.NestedTestService";
+    private INested.Stub mBinder;
+
+    @Override
+    public void onCreate() {
+        mBinder = new Stub(this);
+    }
 
     @Override
     public IBinder onBind(Intent intent) {
@@ -32,7 +40,12 @@
         return mBinder;
     }
 
-    private final INested.Stub mBinder = new INested.Stub() {
+    private static class Stub extends INested.Stub {
+
+        Stub(Context context) {
+            super(PermissionEnforcer.fromContext(context));
+        }
+
         @Override
         @EnforcePermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
         public void ProtectedByAccessNetworkState() {
@@ -44,5 +57,5 @@
         public void ProtectedByReadSyncSettings() {
             ProtectedByReadSyncSettings_enforcePermission();
         }
-    };
+    }
 }
diff --git a/tests/EnforcePermission/service-app/src/android/tests/enforcepermission/service/TestService.java b/tests/EnforcePermission/service-app/src/android/tests/enforcepermission/service/TestService.java
index e9b897d..8b809cf 100644
--- a/tests/EnforcePermission/service-app/src/android/tests/enforcepermission/service/TestService.java
+++ b/tests/EnforcePermission/service-app/src/android/tests/enforcepermission/service/TestService.java
@@ -17,11 +17,13 @@
 package android.tests.enforcepermission.service;
 
 import android.annotation.EnforcePermission;
+import android.annotation.RequiresNoPermission;
 import android.app.Service;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.os.IBinder;
+import android.os.PermissionEnforcer;
 import android.os.RemoteException;
 import android.tests.enforcepermission.INested;
 import android.tests.enforcepermission.IProtected;
@@ -36,9 +38,11 @@
 
     private static final String TAG = "EnforcePermission.TestService";
     private volatile ServiceConnection mNestedServiceConnection;
+    private IProtected.Stub mBinder;
 
     @Override
     public void onCreate() {
+        mBinder = new Stub(this);
         mNestedServiceConnection = new ServiceConnection();
         Intent intent = new Intent(this, NestedTestService.class);
         boolean bound = bindService(intent, mNestedServiceConnection, Context.BIND_AUTO_CREATE);
@@ -78,7 +82,12 @@
         return mBinder;
     }
 
-    private final IProtected.Stub mBinder = new IProtected.Stub() {
+    private class Stub extends IProtected.Stub {
+
+        Stub(Context context) {
+            super(PermissionEnforcer.fromContext(context));
+        }
+
         @Override
         @EnforcePermission(android.Manifest.permission.INTERNET)
         public void ProtectedByInternet() {
@@ -105,7 +114,6 @@
             ProtectedByInternetAndAccessNetworkStateImplicitly_enforcePermission();
 
             mNestedServiceConnection.get().ProtectedByAccessNetworkState();
-
         }
 
         @Override
@@ -115,5 +123,65 @@
 
             mNestedServiceConnection.get().ProtectedByReadSyncSettings();
         }
-    };
+
+        @Override
+        @EnforcePermission(android.Manifest.permission.TURN_SCREEN_ON)
+        public void ProtectedByTurnScreenOn() {
+            ProtectedByTurnScreenOn_enforcePermission();
+        }
+
+        @Override
+        @EnforcePermission(android.Manifest.permission.READ_CONTACTS)
+        public void ProtectedByReadContacts() {
+            ProtectedByReadContacts_enforcePermission();
+        }
+
+        @Override
+        @EnforcePermission(android.Manifest.permission.READ_CALENDAR)
+        public void ProtectedByReadCalendar() {
+            ProtectedByReadCalendar_enforcePermission();
+        }
+
+        @Override
+        @EnforcePermission(allOf = {
+                android.Manifest.permission.INTERNET,
+                android.Manifest.permission.VIBRATE})
+        public void ProtectedByInternetAndVibrate() {
+            ProtectedByInternetAndVibrate_enforcePermission();
+        }
+
+        @Override
+        @EnforcePermission(allOf = {
+                android.Manifest.permission.INTERNET,
+                android.Manifest.permission.READ_SYNC_SETTINGS})
+        public void ProtectedByInternetAndReadSyncSettings() {
+            ProtectedByInternetAndReadSyncSettings_enforcePermission();
+        }
+
+        @Override
+        @EnforcePermission(anyOf = {
+                  android.Manifest.permission.ACCESS_WIFI_STATE,
+                  android.Manifest.permission.VIBRATE})
+        public void ProtectedByAccessWifiStateOrVibrate() {
+            ProtectedByAccessWifiStateOrVibrate_enforcePermission();
+        }
+
+        @Override
+        @EnforcePermission(anyOf = {
+                android.Manifest.permission.INTERNET,
+                android.Manifest.permission.VIBRATE})
+        public void ProtectedByInternetOrVibrate() {
+            ProtectedByInternetOrVibrate_enforcePermission();
+        }
+
+        @Override
+        @RequiresNoPermission
+        public void NotProtected() {
+        }
+
+        @Override
+        public void ManuallyProtected() {
+            enforceCallingOrSelfPermission(android.Manifest.permission.INTERNET, "access denied");
+        }
+    }
 }
diff --git a/tests/EnforcePermission/test-app/AndroidManifest.xml b/tests/EnforcePermission/test-app/AndroidManifest.xml
index 4a0c6a8..8bd05d7 100644
--- a/tests/EnforcePermission/test-app/AndroidManifest.xml
+++ b/tests/EnforcePermission/test-app/AndroidManifest.xml
@@ -16,9 +16,20 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="android.tests.enforcepermission.tests">
 
-    <!-- Expected for the tests (not actually used) -->
+    <!-- Expected permissions for the tests (not actually used). These
+         are granted automatically at runtime by Tradefed (see
+         GrantPermissionPreparer). -->
+    <!-- normal -->
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
+    <!-- normal|appops -->
+    <uses-permission android:name="android.permission.TURN_SCREEN_ON" />
+    <!-- dangerous -->
+    <uses-permission android:name="android.permission.READ_CONTACTS" />
+
+    <!-- Used by the tests to activate/deactivate AppOps -->
+    <uses-permission android:name="android.permission.MANAGE_APP_OPS_MODES" />
+    <uses-permission android:name="android.permission.MANAGE_APPOPS" />
 
     <queries>
         <package android:name="android.tests.enforcepermission.service" />
diff --git a/tests/EnforcePermission/test-app/src/android/tests/enforcepermission/tests/ServiceTest.java b/tests/EnforcePermission/test-app/src/android/tests/enforcepermission/tests/ServiceTest.java
index d2a4a03..e09097c 100644
--- a/tests/EnforcePermission/test-app/src/android/tests/enforcepermission/tests/ServiceTest.java
+++ b/tests/EnforcePermission/test-app/src/android/tests/enforcepermission/tests/ServiceTest.java
@@ -21,11 +21,13 @@
 import static org.junit.Assert.assertThrows;
 import static org.junit.Assert.assertTrue;
 
+import android.app.AppOpsManager;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.ServiceConnection;
 import android.os.IBinder;
+import android.os.Process;
 import android.os.RemoteException;
 import android.tests.enforcepermission.IProtected;
 import android.util.Log;
@@ -126,4 +128,61 @@
             throws RemoteException {
         mServiceConnection.get().ProtectedByInternetAndReadSyncSettingsImplicitly();
     }
+
+    @Test
+    public void testAppOpPermissionGranted_succeeds() throws RemoteException {
+        AppOpsManager appOpsManager = mContext.getSystemService(AppOpsManager.class);
+        appOpsManager.setUidMode(AppOpsManager.OP_TURN_SCREEN_ON,
+                Process.myUid(), AppOpsManager.MODE_ALLOWED);
+
+        mServiceConnection.get().ProtectedByTurnScreenOn();
+    }
+
+    @Test
+    public void testAppOpPermissionDenied_fails() throws RemoteException {
+        AppOpsManager appOpsManager = mContext.getSystemService(AppOpsManager.class);
+        appOpsManager.setUidMode(AppOpsManager.OP_TURN_SCREEN_ON,
+                Process.myUid(), AppOpsManager.MODE_ERRORED);
+
+        final Exception ex = assertThrows(SecurityException.class,
+                () -> mServiceConnection.get().ProtectedByTurnScreenOn());
+        assertThat(ex.getMessage(), containsString("TURN_SCREEN_ON"));
+    }
+
+    @Test
+    public void testRuntimePermissionGranted_succeeds() throws RemoteException {
+        mServiceConnection.get().ProtectedByReadContacts();
+    }
+
+    @Test
+    public void testRuntimePermissionDenied_fails() throws RemoteException {
+        final Exception ex = assertThrows(SecurityException.class,
+                () -> mServiceConnection.get().ProtectedByReadCalendar());
+        assertThat(ex.getMessage(), containsString("READ_CALENDAR"));
+    }
+
+    @Test
+    public void testAllOfPermissionGranted_succeeds() throws RemoteException {
+        mServiceConnection.get().ProtectedByInternetAndReadSyncSettings();
+    }
+
+    @Test
+    public void testAllOfPermissionDenied_fails() throws RemoteException {
+        final Exception ex = assertThrows(SecurityException.class,
+                () -> mServiceConnection.get().ProtectedByInternetAndVibrate());
+        assertThat(ex.getMessage(), containsString("VIBRATE"));
+    }
+
+    @Test
+    public void testAnyOfPermissionGranted_succeeds() throws RemoteException {
+        mServiceConnection.get().ProtectedByInternetOrVibrate();
+    }
+
+    @Test
+    public void testAnyOfPermissionDenied_fails() throws RemoteException {
+        final Exception ex = assertThrows(SecurityException.class,
+                () -> mServiceConnection.get().ProtectedByAccessWifiStateOrVibrate());
+        assertThat(ex.getMessage(), containsString("VIBRATE"));
+        assertThat(ex.getMessage(), containsString("ACCESS_WIFI_STATE"));
+    }
 }
diff --git a/tests/Input/src/com/android/test/input/AnrTest.kt b/tests/Input/src/com/android/test/input/AnrTest.kt
index d185ee6..44da69c 100644
--- a/tests/Input/src/com/android/test/input/AnrTest.kt
+++ b/tests/Input/src/com/android/test/input/AnrTest.kt
@@ -152,8 +152,7 @@
     private fun triggerAnr() {
         startUnresponsiveActivity()
         val uiDevice: UiDevice = UiDevice.getInstance(instrumentation)
-        val obj: UiObject2? = uiDevice.wait(Until.findObject(
-                By.text("Unresponsive gesture monitor")), 10000)
+        val obj: UiObject2? = uiDevice.wait(Until.findObject(By.pkg(PACKAGE_NAME)), 10000)
 
         if (obj == null) {
             fail("Could not find unresponsive activity")
diff --git a/tests/Internal/src/com/android/internal/os/TimeoutRecordTest.java b/tests/Internal/src/com/android/internal/os/TimeoutRecordTest.java
index 7419ee1..00085f8 100644
--- a/tests/Internal/src/com/android/internal/os/TimeoutRecordTest.java
+++ b/tests/Internal/src/com/android/internal/os/TimeoutRecordTest.java
@@ -104,11 +104,11 @@
 
     @Test
     public void forServiceExec_returnsCorrectTimeoutRecord() {
-        TimeoutRecord record = TimeoutRecord.forServiceExec("Test ANR reason");
+        TimeoutRecord record = TimeoutRecord.forServiceExec("com.app.MyService", 1000L);
 
         assertNotNull(record);
         assertEquals(record.mKind, TimeoutRecord.TimeoutKind.SERVICE_EXEC);
-        assertEquals(record.mReason, "Test ANR reason");
+        assertEquals(record.mReason, "executing service com.app.MyService, waited 1000ms");
         assertTrue(record.mEndTakenBeforeLocks);
     }
 
diff --git a/tests/SurfaceViewBufferTests/src/com/android/test/InverseDisplayTransformTests.kt b/tests/SurfaceViewBufferTests/src/com/android/test/InverseDisplayTransformTests.kt
index e722ba5..1de965e 100644
--- a/tests/SurfaceViewBufferTests/src/com/android/test/InverseDisplayTransformTests.kt
+++ b/tests/SurfaceViewBufferTests/src/com/android/test/InverseDisplayTransformTests.kt
@@ -76,4 +76,4 @@
         }
         LayersTraceSubject(trace).layer("SurfaceView", 3).hasBufferSize(rotatedBufferSize)
     }
-}
+}
\ No newline at end of file
diff --git a/tests/SurfaceViewBufferTests/src/com/android/test/SharedBufferModeTests.kt b/tests/SurfaceViewBufferTests/src/com/android/test/SharedBufferModeTests.kt
index be3ed71..4c5224a 100644
--- a/tests/SurfaceViewBufferTests/src/com/android/test/SharedBufferModeTests.kt
+++ b/tests/SurfaceViewBufferTests/src/com/android/test/SharedBufferModeTests.kt
@@ -87,4 +87,4 @@
             checkPixels(svBounds, Color.BLUE)
         }
     }
-}
+}
\ No newline at end of file
diff --git a/tests/SurfaceViewBufferTests/src/com/android/test/SurfaceTracingTestBase.kt b/tests/SurfaceViewBufferTests/src/com/android/test/SurfaceTracingTestBase.kt
index cf4cb8c..a38019d 100644
--- a/tests/SurfaceViewBufferTests/src/com/android/test/SurfaceTracingTestBase.kt
+++ b/tests/SurfaceViewBufferTests/src/com/android/test/SurfaceTracingTestBase.kt
@@ -116,4 +116,4 @@
         private const val TRACE_FLAGS =
                 (1 shl 0) or (1 shl 5) or (1 shl 6) // TRACE_CRITICAL | TRACE_BUFFERS | TRACE_SYNC
     }
-}
+}
\ No newline at end of file
diff --git a/tests/SurfaceViewBufferTests/src/com/android/test/SurfaceViewBufferTestBase.kt b/tests/SurfaceViewBufferTests/src/com/android/test/SurfaceViewBufferTestBase.kt
index bba9678..1770e32 100644
--- a/tests/SurfaceViewBufferTests/src/com/android/test/SurfaceViewBufferTestBase.kt
+++ b/tests/SurfaceViewBufferTests/src/com/android/test/SurfaceViewBufferTestBase.kt
@@ -100,4 +100,4 @@
             INVERSE_DISPLAY(0x08)
         }
     }
-}
+}
\ No newline at end of file
diff --git a/tests/componentalias/Android.bp b/tests/componentalias/Android.bp
index 7af76e1..01d34e4 100644
--- a/tests/componentalias/Android.bp
+++ b/tests/componentalias/Android.bp
@@ -26,7 +26,6 @@
         "compatibility-device-util-axt",
         "mockito-target-extended-minus-junit4",
         "truth-prebuilt",
-        "ub-uiautomator",
     ],
     libs: ["android.test.base"],
     srcs: [
diff --git a/tests/utils/testutils/java/com/android/server/accessibility/TEST_MAPPING b/tests/utils/testutils/java/com/android/server/accessibility/TEST_MAPPING
new file mode 100644
index 0000000..1c67399
--- /dev/null
+++ b/tests/utils/testutils/java/com/android/server/accessibility/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "imports": [
+    {
+      "path": "frameworks/base/services/accessibility/TEST_MAPPING"
+    }
+  ]
+}
diff --git a/tools/aapt2/SdkConstants.cpp b/tools/aapt2/SdkConstants.cpp
index a7c5479..a766bd4 100644
--- a/tools/aapt2/SdkConstants.cpp
+++ b/tools/aapt2/SdkConstants.cpp
@@ -26,8 +26,8 @@
 namespace aapt {
 
 static ApiVersion sDevelopmentSdkLevel = 10000;
-static const auto sDevelopmentSdkCodeNames =
-    std::unordered_set<StringPiece>({"Q", "R", "S", "Sv2", "Tiramisu", "UpsideDownCake"});
+static const auto sDevelopmentSdkCodeNames = std::unordered_set<StringPiece>(
+    {"Q", "R", "S", "Sv2", "Tiramisu", "UpsideDownCake", "VanillaIceCream"});
 
 static const std::vector<std::pair<uint16_t, ApiVersion>> sAttrIdMap = {
     {0x021c, 1},
diff --git a/tools/aapt2/cmd/Link_test.cpp b/tools/aapt2/cmd/Link_test.cpp
index 28fcc1a..7096f5c 100644
--- a/tools/aapt2/cmd/Link_test.cpp
+++ b/tools/aapt2/cmd/Link_test.cpp
@@ -441,8 +441,8 @@
       R"(<resources>
           <public type="attr" name="finalized_res" id="0x01010001"/>
 
-          <!-- S staged attributes (support staged resources in the same type id) -->
-          <staging-public-group type="attr" first-id="0x01010050">
+          <!-- S staged attributes (Not support staged resources in the same type id) -->
+          <staging-public-group type="attr" first-id="0x01fc0050">
             <public name="staged_s_res" />
           </staging-public-group>
 
@@ -480,8 +480,8 @@
           <public type="attr" name="staged_s2_res" id="0x01010003"/>
           <public type="string" name="staged_s_string" id="0x01020000"/>
 
-          <!-- S staged attributes (support staged resources in the same type id) -->
-          <staging-public-group-final type="attr" first-id="0x01010050">
+          <!-- S staged attributes (Not support staged resources in the same type id) -->
+          <staging-public-group-final type="attr" first-id="0x01fc0050">
             <public name="staged_s_res" />
           </staging-public-group-final>
 
@@ -551,7 +551,7 @@
   EXPECT_THAT(android_r_contents, HasSubstr("public static final int finalized_res=0x01010001;"));
   EXPECT_THAT(
       android_r_contents,
-      HasSubstr("public static final int staged_s_res; static { staged_s_res=0x01010050; }"));
+      HasSubstr("public static final int staged_s_res; static { staged_s_res=0x01fc0050; }"));
   EXPECT_THAT(
       android_r_contents,
       HasSubstr("public static final int staged_s_string; static { staged_s_string=0x01fd0080; }"));
@@ -575,7 +575,7 @@
   android::AssetManager2 am;
   auto android_asset = android::ApkAssets::Load(android_apk);
   ASSERT_THAT(android_asset, NotNull());
-  ASSERT_TRUE(am.SetApkAssets({android_asset.get()}));
+  ASSERT_TRUE(am.SetApkAssets({android_asset}));
 
   auto result = am.GetResourceId("android:attr/finalized_res");
   ASSERT_TRUE(result.has_value());
@@ -583,7 +583,7 @@
 
   result = am.GetResourceId("android:attr/staged_s_res");
   ASSERT_TRUE(result.has_value());
-  EXPECT_THAT(*result, Eq(0x01010050));
+  EXPECT_THAT(*result, Eq(0x01fc0050));
 
   result = am.GetResourceId("android:string/staged_s_string");
   ASSERT_TRUE(result.has_value());
@@ -631,7 +631,7 @@
   auto app_against_non_final = android::ApkAssets::Load(app_apk);
   ASSERT_THAT(android_asset, NotNull());
   ASSERT_THAT(app_against_non_final, NotNull());
-  ASSERT_TRUE(am.SetApkAssets({android_asset.get(), app_against_non_final.get()}));
+  ASSERT_TRUE(am.SetApkAssets({android_asset, app_against_non_final}));
 
   auto result = am.GetResourceId("android:attr/finalized_res");
   ASSERT_TRUE(result.has_value());
@@ -667,7 +667,7 @@
 
   auto app_against_final = android::ApkAssets::Load(app_apk_respin);
   ASSERT_THAT(app_against_final, NotNull());
-  ASSERT_TRUE(am.SetApkAssets({android_asset.get(), app_against_final.get()}));
+  ASSERT_TRUE(am.SetApkAssets({android_asset, app_against_final}));
 
   {
     auto style = am.GetBag(0x7f020000);
diff --git a/tools/aapt2/compile/IdAssigner.cpp b/tools/aapt2/compile/IdAssigner.cpp
index b3f98a9..5421abd 100644
--- a/tools/aapt2/compile/IdAssigner.cpp
+++ b/tools/aapt2/compile/IdAssigner.cpp
@@ -37,6 +37,7 @@
 
 template <typename Id, typename Key>
 struct NextIdFinder {
+  std::map<Id, Key> pre_assigned_ids_;
   explicit NextIdFinder(Id start_id = 0u) : next_id_(start_id){};
 
   // Attempts to reserve an identifier for the specified key.
@@ -55,7 +56,6 @@
   Id next_id_;
   bool next_id_called_ = false;
   bool exhausted_ = false;
-  std::map<Id, Key> pre_assigned_ids_;
   typename std::map<Id, Key>::iterator next_preassigned_id_;
 };
 
@@ -158,7 +158,7 @@
   }
 
   if (assigned_id_map_) {
-    // Reserve all the IDs mentioned in the stable ID map. That way we won't assig IDs that were
+    // Reserve all the IDs mentioned in the stable ID map. That way we won't assign IDs that were
     // listed in the map if they don't exist in the table.
     for (const auto& stable_id_entry : *assigned_id_map_) {
       const ResourceName& pre_assigned_name = stable_id_entry.first;
@@ -191,6 +191,11 @@
 }
 
 namespace {
+static const std::string_view staged_type_overlap_error =
+    "Staged public resource type IDs have conflict with non staged public resources type "
+    "IDs, please restart staged resource type ID assignment at 0xff in public-staging.xml "
+    "and also delete all the overlapping groups in public-final.xml";
+
 template <typename Id, typename Key>
 Result<Id> NextIdFinder<Id, Key>::ReserveId(Key key, Id id) {
   CHECK(!next_id_called_) << "ReserveId cannot be called after NextId";
@@ -282,8 +287,20 @@
     // another type.
     auto assign_result = type_id_finder_.ReserveId(key, id.type_id());
     if (!assign_result.has_value()) {
-      diag->Error(android::DiagMessage() << "can't assign ID " << id << " to resource " << name
-                                         << " because type " << assign_result.error());
+      auto pre_assigned_type = type_id_finder_.pre_assigned_ids_[id.type_id()].type;
+      bool pre_assigned_type_staged =
+          non_staged_type_ids_.find(pre_assigned_type) == non_staged_type_ids_.end();
+      auto hex_type_id = fmt::format("{:#04x}", (int)id.type_id());
+      bool current_type_staged = visibility.staged_api;
+      diag->Error(android::DiagMessage()
+                  << "can't assign type ID " << hex_type_id << " to "
+                  << (current_type_staged ? "staged type " : "non staged type ") << name.type.type
+                  << " because this type ID have been assigned to "
+                  << (pre_assigned_type_staged ? "staged type " : "non staged type ")
+                  << pre_assigned_type);
+      if (pre_assigned_type_staged || current_type_staged) {
+        diag->Error(android::DiagMessage() << staged_type_overlap_error);
+      }
       return false;
     }
     type = types_.emplace(key, TypeGroup(package_id_, id.type_id())).first;
@@ -298,6 +315,20 @@
                   << " because type already has ID " << std::hex << (int)id.type_id());
       return false;
     }
+  } else {
+    // Ensure that staged public resources cannot have the same type name and type id with
+    // non staged public resources.
+    auto non_staged_type = non_staged_type_ids_.find(name.type.type);
+    if (non_staged_type != non_staged_type_ids_.end() && non_staged_type->second == id.type_id()) {
+      diag->Error(
+          android::DiagMessage()
+          << "can`t assign type ID " << fmt::format("{:#04x}", (int)id.type_id())
+          << " to staged type " << name.type.type << " because type ID "
+          << fmt::format("{:#04x}", (int)id.type_id())
+          << " already has been assigned to a non staged resource type with the same type name");
+      diag->Error(android::DiagMessage() << staged_type_overlap_error);
+      return false;
+    }
   }
 
   auto assign_result = type->second.ReserveId(name, id);
diff --git a/tools/aapt2/compile/IdAssigner_test.cpp b/tools/aapt2/compile/IdAssigner_test.cpp
index 8911dad..ce45b7c 100644
--- a/tools/aapt2/compile/IdAssigner_test.cpp
+++ b/tools/aapt2/compile/IdAssigner_test.cpp
@@ -117,14 +117,28 @@
 }
 
 TEST_F(IdAssignerTests, FailWhenTypeHasTwoNonStagedIdsRegardlessOfStagedId) {
-  auto table = test::ResourceTableBuilder()
-                   .AddSimple("android:attr/foo", ResourceId(0x01050000))
-                   .AddSimple("android:attr/bar", ResourceId(0x01ff0006))
-                   .Add(NewResourceBuilder("android:attr/staged_baz")
-                            .SetId(0x01ff0000)
-                            .SetVisibility({.staged_api = true})
-                            .Build())
-                   .Build();
+  auto table =
+      test::ResourceTableBuilder()
+          .AddSimple("android:attr/foo", ResourceId(0x01050000))
+          .AddSimple("android:attr/bar", ResourceId(0x01ff0006))
+          .Add(NewResourceBuilder("android:attr/staged_baz")
+                   .SetId(0x01ff0000)
+                   .SetVisibility({.staged_api = true, .level = Visibility::Level::kPublic})
+                   .Build())
+          .Build();
+  IdAssigner assigner;
+  ASSERT_FALSE(assigner.Consume(context.get(), table.get()));
+}
+
+TEST_F(IdAssignerTests, FailWhenTypeHaveBothStagedAndNonStagedIds) {
+  auto table =
+      test::ResourceTableBuilder()
+          .AddSimple("android:attr/foo", ResourceId(0x01010000))
+          .Add(NewResourceBuilder("android:bool/staged_baz")
+                   .SetId(0x01010001)
+                   .SetVisibility({.staged_api = true, .level = Visibility::Level::kPublic})
+                   .Build())
+          .Build();
   IdAssigner assigner;
   ASSERT_FALSE(assigner.Consume(context.get(), table.get()));
 }
diff --git a/tools/aapt2/optimize/Obfuscator_test.cpp b/tools/aapt2/optimize/Obfuscator_test.cpp
index 940cf10..b3a915c 100644
--- a/tools/aapt2/optimize/Obfuscator_test.cpp
+++ b/tools/aapt2/optimize/Obfuscator_test.cpp
@@ -300,10 +300,11 @@
   ASSERT_TRUE(obfuscator.Consume(test::ContextBuilder().Build().get(),
                                  getProtocolBufferTableUnderTest().get()));
 
-  obfuscator.WriteObfuscationMap("obfuscated_map.pb");
+  const auto map_path = testing::TempDir() + "/obfuscated_map.pb";
+  ASSERT_TRUE(obfuscator.WriteObfuscationMap(map_path));
 
   std::string pbOut;
-  android::base::ReadFileToString("obfuscated_map.pb", &pbOut, false /* follow_symlinks */);
+  ASSERT_TRUE(android::base::ReadFileToString(map_path, &pbOut, false /* follow_symlinks */));
   EXPECT_THAT(pbOut, HasSubstr("drawable/xmlfile.xml"));
   EXPECT_THAT(pbOut, HasSubstr("drawable/pngfile.png"));
   EXPECT_THAT(pbOut, HasSubstr("mycolor"));
@@ -328,10 +329,11 @@
   ASSERT_TRUE(obfuscator.Consume(test::ContextBuilder().Build().get(),
                                  getProtocolBufferTableUnderTest().get()));
 
-  obfuscator.WriteObfuscationMap("obfuscated_map.pb");
+  const auto map_path = testing::TempDir() + "/obfuscated_map.pb";
+  ASSERT_TRUE(obfuscator.WriteObfuscationMap(map_path));
 
   std::string pbOut;
-  android::base::ReadFileToString("obfuscated_map.pb", &pbOut, false /* follow_symlinks */);
+  ASSERT_TRUE(android::base::ReadFileToString(map_path, &pbOut, false /* follow_symlinks */));
   ASSERT_THAT(pbOut, Eq(""));
 }
 
diff --git a/tools/aapt2/process/SymbolTable.cpp b/tools/aapt2/process/SymbolTable.cpp
index bca62da..b75458a 100644
--- a/tools/aapt2/process/SymbolTable.cpp
+++ b/tools/aapt2/process/SymbolTable.cpp
@@ -220,15 +220,9 @@
 
 bool AssetManagerSymbolSource::AddAssetPath(StringPiece path) {
   TRACE_CALL();
-  if (std::unique_ptr<const ApkAssets> apk = ApkAssets::Load(path.data())) {
+  if (auto apk = ApkAssets::Load(path.data())) {
     apk_assets_.push_back(std::move(apk));
-
-    std::vector<const ApkAssets*> apk_assets;
-    for (const std::unique_ptr<const ApkAssets>& apk_asset : apk_assets_) {
-      apk_assets.push_back(apk_asset.get());
-    }
-
-    asset_manager_.SetApkAssets(apk_assets);
+    asset_manager_.SetApkAssets(apk_assets_);
     return true;
   }
   return false;
@@ -251,7 +245,7 @@
     return true;
   }
 
-  for (const std::unique_ptr<const ApkAssets>& assets : apk_assets_) {
+  for (auto&& assets : apk_assets_) {
     for (const std::unique_ptr<const android::LoadedPackage>& loaded_package
          : assets->GetLoadedArsc()->GetPackages()) {
       if (package_name == loaded_package->GetPackageName() && loaded_package->IsDynamic()) {
diff --git a/tools/aapt2/process/SymbolTable.h b/tools/aapt2/process/SymbolTable.h
index b09ff70..36eb0ba 100644
--- a/tools/aapt2/process/SymbolTable.h
+++ b/tools/aapt2/process/SymbolTable.h
@@ -207,8 +207,8 @@
   }
 
  private:
+  std::vector<android::AssetManager2::ApkAssetsPtr> apk_assets_;
   android::AssetManager2 asset_manager_;
-  std::vector<std::unique_ptr<const android::ApkAssets>> apk_assets_;
 
   DISALLOW_COPY_AND_ASSIGN(AssetManagerSymbolSource);
 };
diff --git a/wifi/java/src/android/net/wifi/sharedconnectivity/app/NetworkProviderInfo.java b/wifi/java/src/android/net/wifi/sharedconnectivity/app/NetworkProviderInfo.java
index c6e675a..6387919 100644
--- a/wifi/java/src/android/net/wifi/sharedconnectivity/app/NetworkProviderInfo.java
+++ b/wifi/java/src/android/net/wifi/sharedconnectivity/app/NetworkProviderInfo.java
@@ -84,17 +84,12 @@
     public @interface DeviceType {
     }
 
-    /**
-     * Key in extras bundle indicating that the device battery is charging.
-     * @hide
-     */
-    public static final String EXTRA_KEY_IS_BATTERY_CHARGING = "is_battery_charging";
-
     @DeviceType
     private final int mDeviceType;
     private final String mDeviceName;
     private final String mModelName;
     private final int mBatteryPercentage;
+    private final boolean mIsBatteryCharging;
     private final int mConnectionStrength;
     private final Bundle mExtras;
 
@@ -106,6 +101,7 @@
         private String mDeviceName;
         private String mModelName;
         private int mBatteryPercentage;
+        private boolean mIsBatteryCharging;
         private int mConnectionStrength;
         private Bundle mExtras = Bundle.EMPTY;
 
@@ -167,6 +163,18 @@
         }
 
         /**
+         * Sets if the battery of the remote device is charging.
+         *
+         * @param isBatteryCharging True if battery is charging.
+         * @return Returns the Builder object.
+         */
+        @NonNull
+        public Builder setBatteryCharging(boolean isBatteryCharging) {
+            mIsBatteryCharging = isBatteryCharging;
+            return this;
+        }
+
+        /**
          * Sets the displayed connection strength of the remote device to the internet.
          *
          * @param connectionStrength Connection strength in range 0 to 4.
@@ -197,7 +205,7 @@
         @NonNull
         public NetworkProviderInfo build() {
             return new NetworkProviderInfo(mDeviceType, mDeviceName, mModelName, mBatteryPercentage,
-                    mConnectionStrength, mExtras);
+                    mIsBatteryCharging, mConnectionStrength, mExtras);
         }
     }
 
@@ -217,13 +225,14 @@
     }
 
     private NetworkProviderInfo(@DeviceType int deviceType, @NonNull String deviceName,
-            @NonNull String modelName, int batteryPercentage, int connectionStrength,
-            @NonNull Bundle extras) {
+            @NonNull String modelName, int batteryPercentage, boolean isBatteryCharging,
+            int connectionStrength, @NonNull Bundle extras) {
         validate(deviceType, deviceName, modelName, batteryPercentage, connectionStrength);
         mDeviceType = deviceType;
         mDeviceName = deviceName;
         mModelName = modelName;
         mBatteryPercentage = batteryPercentage;
+        mIsBatteryCharging = isBatteryCharging;
         mConnectionStrength = connectionStrength;
         mExtras = extras;
     }
@@ -269,6 +278,15 @@
     }
 
     /**
+     * Gets the charging state of the battery on the remote device.
+     *
+     * @return Returns true if the battery of the remote device is charging.
+     */
+    public boolean isBatteryCharging() {
+        return mIsBatteryCharging;
+    }
+
+    /**
      * Gets the displayed connection strength of the remote device to the internet.
      *
      * @return Returns the connection strength in range 0 to 4.
@@ -296,13 +314,14 @@
                 && Objects.equals(mDeviceName, other.mDeviceName)
                 && Objects.equals(mModelName, other.mModelName)
                 && mBatteryPercentage == other.mBatteryPercentage
+                && mIsBatteryCharging == other.mIsBatteryCharging
                 && mConnectionStrength == other.mConnectionStrength;
     }
 
     @Override
     public int hashCode() {
         return Objects.hash(mDeviceType, mDeviceName, mModelName, mBatteryPercentage,
-                mConnectionStrength);
+                mIsBatteryCharging, mConnectionStrength);
     }
 
     @Override
@@ -311,6 +330,7 @@
         dest.writeString(mDeviceName);
         dest.writeString(mModelName);
         dest.writeInt(mBatteryPercentage);
+        dest.writeBoolean(mIsBatteryCharging);
         dest.writeInt(mConnectionStrength);
         dest.writeBundle(mExtras);
     }
@@ -328,7 +348,7 @@
     @NonNull
     public static NetworkProviderInfo readFromParcel(@NonNull Parcel in) {
         return new NetworkProviderInfo(in.readInt(), in.readString(), in.readString(), in.readInt(),
-                in.readInt(), in.readBundle());
+                in.readBoolean(), in.readInt(), in.readBundle());
     }
 
     @NonNull
@@ -351,6 +371,7 @@
                 .append(", deviceName=").append(mDeviceName)
                 .append(", modelName=").append(mModelName)
                 .append(", batteryPercentage=").append(mBatteryPercentage)
+                .append(", isBatteryCharging=").append(mIsBatteryCharging)
                 .append(", connectionStrength=").append(mConnectionStrength)
                 .append(", extras=").append(mExtras.toString())
                 .append("]").toString();